首先,我们想向您介绍本案的工作原理。通常,在这种情况下,在理想条件下有8个阶段。车轮1和车轮4是配备有马达的驱动轮,而其他车轮是驱动轮。提升装置分别安装在车轮2和车轮4上。
阶段1
汽车前进了。
第2阶段
超声波传感器检测到前方的障碍物。
然后,该车上的提升装置将提升车轮1和车轮3,直到超声波传感器无法检测到障碍物。
注意:这里的“障碍物”指的是“楼梯”。
STAGE3
车轮1和车轮4驱动汽车继续前进。
第四阶段
如图所示,车轮2上的线跟随器检测到障碍物(楼梯),因此提升装置1将车轮2提升到下一个更高的楼梯。
第五阶段
车轮1和车轮4驱动汽车继续前进
第6阶段
当车轮4上的限位开关检测到楼梯时,驱动轮(车轮1和车轮4)将自动停止。然后,提升装置2将向上提升轮4。
第7阶段
在车轮1的驱动下,汽车继续前进
这就像我们再次回到第一阶段……
第8阶段
第8阶段,与第2阶段相同。机器人汽车继续向前移动,直到超声波传感器检测到障碍物……
通常,在这种情况下,工作原理从阶段1循环到阶段8。
从机械结构的角度来看,这种情况的独特之处在于提升装置的设计,当上下提升时需要既可靠又快速。因此,在这种情况下,我们使用齿轮和齿条来构建提升装置。如下面的描述所示,我们使用梁0808来构建滑动轨道,并且使用与梁0824连接的带连接器来构建简单的滑块。
学到更多
第2步:
接下来是每个步骤中使用的部件和构建方法。提升装置1
零件清单:
4 x Beam0824-032
2 x Beam0824-160
8 x螺丝M4x22
8 x坚果M4
使用以下部件连接结构。
第3步:
零件清单:
4 x皮带连接器
16 x螺丝M4x8
只需拧紧螺钉,我们就可以轻松地构建滑块。
抓住两个可以直接穿过滑块的Beam0808-312。
第4步:
现在让我们进入下一步:构建机架。
为了确保这款智能自动爬楼车适应不同高度的楼梯,滑轨和机架应足够长。滑轨长312mm,因此机架不应短
我们需要做的就是连接4个部分来构建机架。我们在这里使用Beam0808-312的原因是为了防止在提升过程中齿条部分的连接弯曲。如果齿条部分的连接处弯曲,齿轮和齿条之间将存在啮合问题。因此,我们应该将机架固定在Beam0808-312上,如下图所示:
第5步:
连接导轨和机架
零件清单:
1 x Beam0824-144
3 x螺丝M4x22
2 x坚果M4
第6步:
零件清单:
2 x Beam0824-176
6 x螺丝M4 x 22
6 x坚果M4
第7步:
安装轮2(啮合轮)
零件清单:
2 x轮胎64 * 16mm
2 x Timing Pulley 90T
2 x螺纹轴4x39mm
4个法兰轴承
2个螺丝M4
2 x无头固定螺钉M3x5
4 x Plastic Spacer4x7x2
将两个轮胎固定在Beam0824的两端
完成所有步骤后,我们完成了装配轮2和提升装置1的装配。
第8步:
让我们来看看下一步 - 装配轮4和提升装置2。
提升装置2的结构与提升装置1相同,以及用于组装的部件。
唯一的区别是你需要修复Beam 0824-032,如图所示。
组装导轨和机架与构建起重设备的步骤相同1.使用Beam0824-080代替Beam0824-144连接上端。
第9步:
要连接下端,我们使用以下部分:
1 x Beam0824-128
6 x螺丝M4x22
6 x坚果M4
第10步:
在Beam0824上安装支架L1
零件清单:
2 x螺丝M4x14
2 x坚果M4
第11步:
在完成建筑物升降装置2后,我们可以开始构建轮子4(驱动轮)
零件清单:
1个直流电机-25
1 x Timing Pulley 90T
1个直流电机-25支架
1 x轴连接器
1个无头固定螺钉M3x5
2 x螺丝M4x14
第12步:
安装轮胎
2 x螺丝M4x14
2 x坚果
在支架L1上安装上述结构
到现在为止,我们完成了这辆车的一半。
第13步:
下一步是建立汽车和车轮1和车轮3的主要结构。
首先构建车轮1(驱动轮)。
2 x轮胎64 * 16mm
2 x Timing Pulley 90T
2 x轴连接器
8 x螺丝M4x14
4 x坚果M4
4 x螺丝M3x5
4 x无头固定螺钉M3x5
2 x DC电机-25mm
2个直流电机-25支架
2 x Beam0824-064
第14步:
组装防撞杆
零件清单:
1 x Beam0824-160
2 x支架L1
4 x螺丝M4x14
4 x坚果M4
第15步:
组装汽车的主要结构
零件清单:
2 x Beam0824-192
1个防碰撞杆
2 x轮胎64 * 16mm
6 x螺丝M4x30
6 x坚果M4
第16步:
装配轮3(从动轮)
零件清单:
2 x轮胎64 * 16mm
2 x Timing Pulley 90T
2 x Beam0808-088
4个法兰轴承
2 x螺纹轴
4 x Plastic Spacer4x7x2
2 x坚果
2 x无头固定螺钉M3x5
第17步:
零件清单:
4 x螺丝M4x22
4 x坚果M4
将车轮3固定在车载支架上
第18步:
将提升装置2安装在车载支架上
零件清单:
8 x螺丝M4x14
第19步:
使用6螺丝M4x14安装固定装置1
楼梯的宽度是
限制和轮胎太大,所以我们不得不错开所有轮胎的位置。在车轮4中,我们只使用了电机和轮胎。
第20步:
安装起重装置电机
零件清单:
2 x直流电机-37
2 x Gear 18T
2 x无头固定螺钉M3 x 5
4 x螺丝M4 x 8
注意:在安装DC Motor-37之前,请先安装电机支架。
调整齿轮和齿条之间的距离,然后将电机单独固定在提升装置1和2上的Beam0824的螺纹槽中
一步一步,我们完成了这辆车的整体机械结构。
第21步:
让我们继续下一步安装传感器
1个限位开关
在提升装置2侧安装限位开关
2个限位开关
将这两个限位开关分别安装在提升装置1和2的梁上。
注意:限位开关用于限制提升高度。
第22步:
安装线跟随传感器
零件清单:
2 x螺丝M4 x 22
2 x塑料垫片4 * 7 * 10
4 x Plastic Spacer4x7x2
1 x Me线跟随器
第23步:
安装陀螺仪
第24步:
安装超声波传感器
众所周知,超声波传感器无法检测到距离为0-30mm的障碍物。所以在这种情况下,我们在车内安装了超声波传感器,让前面的防撞杆撞到了楼梯。通过这种方式,超声波恰好能够探测到障碍物 - 楼梯。
第25步:
安装我猎户座
第26步:
安装适配器(用于限位开关)
第27步:
完成所有传感器的安装,现在让我们来看看汽车和传感器的整体结构
根据轮胎数量,这辆车可分为4部分。
轮1和轮4是驱动轮,而轮2和轮3是驱动轮
(轮4轮3轮2轮1)
在该车中,提升装置1和2控制车轮2和车轮4的位置
(起重装置1,起重装置2)
(车轮2的线跟随器,车轮1的超声波传感器)
(电机驱动模块4轮驱动电机3升降装置限位开关2轮限位开关4升降装置2)
(陀螺仪1轮驱动电机1升降装置1轮1驱动电机2轮限位开关)
为什么我们需要陀螺仪?这里的陀螺仪用于调节电动机的提升速度,从而平衡汽车本身(提升装置中使用的电动机是不能平衡汽车的直流电动机)。
第28步:
整车:
第29步:
布线图
第30步:
mw_shl_code = applescript,true #include“MeOrion.h”#include MeGyro gyro; MeDCMotor lifer1(PORT_1); //升降1 MeDCMotor lifer2(PORT_2); //升降2 MeDCMotor rw(M2); // 1号驱动轮MeDCMotor fw(M1); // 4号驱动轮MeLineFollower lineFinder1(PORT_7); //巡线MeLimitSwitch upWard1(PORT_3,SLOT2); // 1号升降限位开关MeLimitSwitch forWard2(PORT_4,SLOT1); // 4号轮子限位开关MeLimitSwitch upWard2(PORT_4,SLOT2); // 2号升降限位开关MeUltrasonicSensor ultraSensor(PORT_8); // 1号轮子超声波void setup()//初始化,前后升降装置回收{Serial.begin(9600); gyro.begin(); lifer1.run(-250); while(!upWard1.touched()); lifer1.stop(); lifer2.run(-250); while(!upWard2.touched()); lifer2.stop(); } void Step2(){float p = 15; float i = 0.01;浮角= 0; float targetAngle = 0; float integration = 0; float err = 0; while(NotStop()){gyro.update(); float angle = gyro.getAngleX(); err = angle - targetAngle;整合+ =错误; int speed1 = 200; int speed2 = 200; speed2 = speed1 + err * p; // + integration * i; lifer1.run(速度1); lifer2.run(SPEED2); //延迟(10); } lifer1.stop(); lifer2.stop(); } int startTiming = 0; unsigned long startTime = 0; int NotStop(){int16_t distance; distance = ultraSensor.distanceCm();延迟(10); if(0 == startTiming){if((distance <10)&&(distance> 1)){return 1; } else {startTiming = 1; startTime = millis();返回1; } else {unsigned long currentTime = millis(); if(currentTime - startTime <2500)//超声波检测不到楼梯后延时2.5秒{return 1; } else {return 0; void loop(){startTiming = 0; startTime = 0; //阶段1小车前进fw.run(60); rw.run(60); // 1号4号轮子推动小车前进int16_t distance; do {distance = ultraSensor.distanceCm();延迟(10); } //阶段2碰到楼梯主动轮停止整体车架上升while(!((distance <4)&&(distance> 1))); //如果碰到楼梯fw.stop(); rw.stop();第2步(); //阶段3 1号4号轮子推动小车前进fw.run(60); rw.run(60); //阶段4 2号轮子巡线传感器检测到楼梯主动轮停止升降装置1把2号轮子收回去while(!(lineFinder1.readSensors()!= S1_IN_S2_IN)); lifer1.run(-250); fw.stop(); rw.stop(); while(!upWard1.touched()); // 1号升降限位开关检测升降结束lifer1.stop();调整(); //阶段5 1号4号轮子推动小车前进fw.run(60); rw.run(60); //阶段6 4号轮子限位开关检测到4号轮子碰到楼梯主动轮停止2号升降装置回收4号轮子while(!forWard2.touched()); lifer2.run(-250); fw.stop(); rw.stop(); while(!upWard2.touched()); // 1号升降限位开关检测升降结束lifer2.stop(); //阶段7循环阶段1 //阶段8循环阶段2} void Adjust()//陀螺仪控制1,2号升降电机控制平衡{int p = 40; // float i = 0.05;浮角= 0; float targetAngle = 4; // float integration = 0; // float err = 0;做{gyro.update(); angle = gyro.getAngleX(); // err =(angle - targetAngle); // integration + = err; lifer2.run((angle - targetAngle)* p); // + i * integration); //延迟(10); } while(fabs(angle-targetAngle)> 1); lifer2.stop(); } / mw_shl_code
第31步:
第32步:
安装电机驱动器Makeblock