“艾尔赛Arduino麦克纳姆轮智能小车”的版本间的差异
(未显示同一用户的2个中间版本) | |||
第48行: | 第48行: | ||
[[Image:LC-Smartcar-PCB-MW-PS2_.png]];<br> | [[Image:LC-Smartcar-PCB-MW-PS2_.png]];<br> | ||
[[Image:LC-Smartcar-PCB-MW-PS2 1.png]];<br> | [[Image:LC-Smartcar-PCB-MW-PS2 1.png]];<br> | ||
+ | |||
1,PCB底盘;<br> | 1,PCB底盘;<br> | ||
2,Arduino UNO R3主控MCU;<br> | 2,Arduino UNO R3主控MCU;<br> | ||
第66行: | 第67行: | ||
[[Image:LC-PS2-1.png]];<br> | [[Image:LC-PS2-1.png]];<br> | ||
[[Image:-LC-PCB-PS2-2.png]];<br> | [[Image:-LC-PCB-PS2-2.png]];<br> | ||
+ | |||
+ | |||
2、焊接电机<br> | 2、焊接电机<br> | ||
2.1、准备好4个电机与8根公对母的排线;<br> | 2.1、准备好4个电机与8根公对母的排线;<br> | ||
[[Image:LC-PCB-PS2-3.png]]<br> | [[Image:LC-PCB-PS2-3.png]]<br> | ||
+ | |||
2.2、将排线母头剪掉,然后给四个电机铜片上锡,再把排线焊到电机引线端上。<br> | 2.2、将排线母头剪掉,然后给四个电机铜片上锡,再把排线焊到电机引线端上。<br> | ||
[[Image:LC-PCB-PS2-4.png]]<br> | [[Image:LC-PCB-PS2-4.png]]<br> | ||
[[Image:LC-PCB-PS2-5.png]]<br> | [[Image:LC-PCB-PS2-5.png]]<br> | ||
+ | |||
+ | |||
3、安装电机:把四个电机用M3*30螺丝和电机夹片固定到底盘上,其中电机引线端朝向内。(若出现电机松动的情况,可以尝试在电机和PCB间塞点硬纸皮,4个电机与PCB底盘间的间隙最好保持一致,不然到时车子可能会跑偏)<br> | 3、安装电机:把四个电机用M3*30螺丝和电机夹片固定到底盘上,其中电机引线端朝向内。(若出现电机松动的情况,可以尝试在电机和PCB间塞点硬纸皮,4个电机与PCB底盘间的间隙最好保持一致,不然到时车子可能会跑偏)<br> | ||
[[Image:LC-PCB-PS2-6.png]]<br> | [[Image:LC-PCB-PS2-6.png]]<br> | ||
[[Image:LC-PCB-PS2-7.png]]<br> | [[Image:LC-PCB-PS2-7.png]]<br> | ||
[[Image:LC-PCB-PS2-8.png]]<br> | [[Image:LC-PCB-PS2-8.png]]<br> | ||
+ | |||
+ | |||
4、安装轮胎<br> | 4、安装轮胎<br> | ||
4.1、拿出4个轮胎(2个L轮+2个R轮)和4个紧固螺丝(如果有)<br> | 4.1、拿出4个轮胎(2个L轮+2个R轮)和4个紧固螺丝(如果有)<br> | ||
[[Image:LC-PCB-PS2-9.png]]<br> | [[Image:LC-PCB-PS2-9.png]]<br> | ||
[[Image:LC-PCB-PS2-10.png]]<br> | [[Image:LC-PCB-PS2-10.png]]<br> | ||
+ | |||
+ | |||
4.2、将轮胎插到电机并拧好固定螺丝,注意L和R轮的安装位置不能搞错,如下:<br> | 4.2、将轮胎插到电机并拧好固定螺丝,注意L和R轮的安装位置不能搞错,如下:<br> | ||
[[Image:LC-PCB-PS2-11.png]]<br> | [[Image:LC-PCB-PS2-11.png]]<br> | ||
[[Image:LC-PCB-PS2-12.png]]<br> | [[Image:LC-PCB-PS2-12.png]]<br> | ||
[[Image:LC-PCB-PS2-13.png]]<br> | [[Image:LC-PCB-PS2-13.png]]<br> | ||
+ | |||
+ | |||
5、安装18650电池盒<br> | 5、安装18650电池盒<br> | ||
[[Image:LC-PCB-PS2-14.png]]<br> | [[Image:LC-PCB-PS2-14.png]]<br> | ||
[[Image:LC-PCB-PS2-15.png]]<br> | [[Image:LC-PCB-PS2-15.png]]<br> | ||
+ | |||
+ | |||
6、使用M3*30+6铜柱固定L298N电机驱动模块,并将电池盒的红黑电源线分别接到L298N模块的VCC和GND。<br> | 6、使用M3*30+6铜柱固定L298N电机驱动模块,并将电池盒的红黑电源线分别接到L298N模块的VCC和GND。<br> | ||
[[Image:LC-PCB-PS2-16.png]]<br> | [[Image:LC-PCB-PS2-16.png]]<br> | ||
[[Image:LC-PCB-PS2-17.png]]<br> | [[Image:LC-PCB-PS2-17.png]]<br> | ||
+ | |||
+ | |||
7、将电机驱动线接到L298N驱动模块:<br> | 7、将电机驱动线接到L298N驱动模块:<br> | ||
左一电机两根线接OUT1、OUT2<br> | 左一电机两根线接OUT1、OUT2<br> | ||
第97行: | 第113行: | ||
右二电机两根线接OUT7、OUT8<br> | 右二电机两根线接OUT7、OUT8<br> | ||
备注:测试时如果某个电机转向反了,可以交换该电机的驱动线。<br> | 备注:测试时如果某个电机转向反了,可以交换该电机的驱动线。<br> | ||
+ | |||
+ | |||
[[Image:LC-PCB-PS2-18.png]]<br> | [[Image:LC-PCB-PS2-18.png]]<br> | ||
[[Image:LC-PCB-PS2-19.png]]<br> | [[Image:LC-PCB-PS2-19.png]]<br> | ||
+ | |||
+ | |||
其中轮子的位置定义如下(注:这里的L和R仅指轮子的位置,不是上面说的麦克纳姆轮的种类)<br> | 其中轮子的位置定义如下(注:这里的L和R仅指轮子的位置,不是上面说的麦克纳姆轮的种类)<br> | ||
[[Image:LC-PCB-PS2-20.png]] | [[Image:LC-PCB-PS2-20.png]] | ||
+ | |||
+ | |||
8、使用M3*20+6铜柱固定Arduino UNO开发板<br> | 8、使用M3*20+6铜柱固定Arduino UNO开发板<br> | ||
[[Image:LC-PCB-PS2-21.png]]<br> | [[Image:LC-PCB-PS2-21.png]]<br> | ||
[[Image:LC-PCB-PS2-22.png]]<br> | [[Image:LC-PCB-PS2-22.png]]<br> | ||
+ | |||
+ | |||
9,安装超声波模块<br> | 9,安装超声波模块<br> | ||
[[Image:LC-PCB-PS2-23.png]]<br> | [[Image:LC-PCB-PS2-23.png]]<br> | ||
9.1、使用M2*10螺丝固定SG90舵机(注意舵机方向,以超声波模块装上去后能左右分别转动约90度为准)<br> | 9.1、使用M2*10螺丝固定SG90舵机(注意舵机方向,以超声波模块装上去后能左右分别转动约90度为准)<br> | ||
[[Image:LC-PCB-PS2-24.png]]<br> | [[Image:LC-PCB-PS2-24.png]]<br> | ||
+ | |||
+ | |||
9.2、使用细铁丝/螺丝将HC-SR04超声波模块固定到超声波支架上。<br> | 9.2、使用细铁丝/螺丝将HC-SR04超声波模块固定到超声波支架上。<br> | ||
[[Image:LC-PCB-PS2-25.png]]<br> | [[Image:LC-PCB-PS2-25.png]]<br> | ||
+ | |||
+ | |||
9.3、使用M2*6自攻螺丝将支架固定到舵机桨叶上,并将桨叶上面的2个螺丝剪短一点,太长会碰到SG90舵机的壳体影响转动。<br> | 9.3、使用M2*6自攻螺丝将支架固定到舵机桨叶上,并将桨叶上面的2个螺丝剪短一点,太长会碰到SG90舵机的壳体影响转动。<br> | ||
[[Image:LC-PCB-PS2-26.png]]<br> | [[Image:LC-PCB-PS2-26.png]]<br> | ||
+ | |||
+ | |||
9.4,再将舵机桨叶固定在SG90舵机上面,另外建议将HC-SR04的引脚掰直方便接线。<br> | 9.4,再将舵机桨叶固定在SG90舵机上面,另外建议将HC-SR04的引脚掰直方便接线。<br> | ||
[[Image:LC-PCB-PS2-27.png]]<br> | [[Image:LC-PCB-PS2-27.png]]<br> | ||
+ | |||
+ | |||
10、使用M3*9+6铜柱安装红外避障模块。<br> | 10、使用M3*9+6铜柱安装红外避障模块。<br> | ||
[[Image:LC-PCB-PS2-28.png]]<br> | [[Image:LC-PCB-PS2-28.png]]<br> | ||
[[Image:LC-PCB-PS2-29.png]]<br> | [[Image:LC-PCB-PS2-29.png]]<br> | ||
+ | |||
+ | |||
11、使用M3*20+6铜柱安装红外循迹避障。<br> | 11、使用M3*20+6铜柱安装红外循迹避障。<br> | ||
[[Image:LC-PCB-PS2-30.png]]<br> | [[Image:LC-PCB-PS2-30.png]]<br> | ||
[[Image:LC-PCB-PS2-31.png]]<br> | [[Image:LC-PCB-PS2-31.png]]<br> | ||
+ | |||
+ | |||
12,组装完成的效果图。<br> | 12,组装完成的效果图。<br> | ||
[[Image:LC-PCB-PS2-32.png]]<br> | [[Image:LC-PCB-PS2-32.png]]<br> | ||
[[Image:LC-PCB-PS2-33.png]]<br> | [[Image:LC-PCB-PS2-33.png]]<br> | ||
+ | |||
== 模块介绍 == | == 模块介绍 == | ||
1、Arduino UNO开发板。<br> | 1、Arduino UNO开发板。<br> | ||
[[Image:LC-PCB-PS2-34.png]]<br> | [[Image:LC-PCB-PS2-34.png]]<br> | ||
+ | |||
性能参数<br> | 性能参数<br> | ||
[[Image:LC-PCB-PS2-35.png]]<br> | [[Image:LC-PCB-PS2-35.png]]<br> | ||
+ | |||
Arduino UNO 插槽端口列表<br> | Arduino UNO 插槽端口列表<br> | ||
第163行: | 第202行: | ||
|} | |} | ||
'''注''':更多关于Arduino UNO的细节可参考资料里的入门指导文档。<br> | '''注''':更多关于Arduino UNO的细节可参考资料里的入门指导文档。<br> | ||
+ | |||
2、L298N 4路电机驱动板<br> | 2、L298N 4路电机驱动板<br> | ||
2.1、引脚及参数介绍:<br> | 2.1、引脚及参数介绍:<br> | ||
[[Image:LC-PCB-PS2-36.png]]<br> | [[Image:LC-PCB-PS2-36.png]]<br> | ||
+ | |||
性能参数<br> | 性能参数<br> | ||
第186行: | 第227行: | ||
连接舵机:板载有三路舵机接口,每一路分别包含S、5V、GND三个引脚,如本实验超声波下的舵机插到第一路,则SG90舵机的黄红棕三根线分别对应S1、5V、GND插进去,控制舵机的PWM信号从旁边的A1脚输入,剩下不用的舵机接口可以用来给外部5V设备供电。<br> | 连接舵机:板载有三路舵机接口,每一路分别包含S、5V、GND三个引脚,如本实验超声波下的舵机插到第一路,则SG90舵机的黄红棕三根线分别对应S1、5V、GND插进去,控制舵机的PWM信号从旁边的A1脚输入,剩下不用的舵机接口可以用来给外部5V设备供电。<br> | ||
+ | |||
使用时VCC、GND接18650电池;IN1-IN8接Arduino输出的高低电平来控制电机的正反转和停止;EN1-EN4为使能/调速引脚,使用单片机输出占空比可变的PWM即可调节转速,如果不需要调速,则可用跳线帽分别连接至L298N模块上的5V(此时为全速运行)。 | 使用时VCC、GND接18650电池;IN1-IN8接Arduino输出的高低电平来控制电机的正反转和停止;EN1-EN4为使能/调速引脚,使用单片机输出占空比可变的PWM即可调节转速,如果不需要调速,则可用跳线帽分别连接至L298N模块上的5V(此时为全速运行)。 | ||
以下是控制直流电机时IN1-IN8的控制逻辑:<br> | 以下是控制直流电机时IN1-IN8的控制逻辑:<br> | ||
+ | [[Image:LC-PCB-PS2-39.png]]<br> | ||
+ | '''注''':若程序和IN1-IN8的接线正确而某电机转向却是反的,比如电机M1:则交换OUT1和OUT2这2根线就可以。<br> | ||
+ | |||
+ | |||
+ | 3、HC-SR04超声波测距模块<br> | ||
+ | 3.1、引脚及参数介绍:<br> | ||
+ | [[Image:LC-PCB-PS2-37.png]]<br> | ||
+ | |||
+ | |||
+ | 性能参数<br> | ||
{| class="wikitable" style="width:800px;" | {| class="wikitable" style="width:800px;" | ||
|- | |- | ||
− | | | + | | 供电电压 || DC5V || 静态电流 || 小于2mA |
+ | |- | ||
+ | | 电平输出 || 高5V || 电平输出 || 低0V | ||
|- | |- | ||
− | | | + | | 感应角度 || 不大于15度 || 探测距离 || 2cm-450cn |
− | + | |} | |
+ | |||
+ | |||
+ | 3.2,使用说明:<br> | ||
+ | (1)采用IO触发测距,给至少10us的高电平信号;<br> | ||
+ | (2)模块自动发送8个40khz的方波,自动检测是否有信号返回;<br> | ||
+ | (3)有信号返回,通过IO输出一高电平,高电平持续的时间就是,超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2。<br> | ||
+ | 超声波测距模块的Trig和Echo脚连接至Arduino的I/O口,利用digitalWrite(pin, value)向Trig脚发送持续时间大于10us的高电平触发信号,然后再使用pulseIn(pin, value)函数来读取Echo脚的高电平持续时间来算得被测距离。<br> | ||
+ | |||
+ | 4、红外避障模块<br> | ||
+ | 4.1,引脚及参数介绍:<br> | ||
+ | [[Image:LC-PCB-PS2-38.png]]<br> | ||
+ | {| class="wikitable" style="width:800px;" | ||
+ | |- | ||
+ | | 供电电压 || DC 3.3V-5V || 比较器|| LM393 | ||
+ | |- | ||
+ | | 检测距离 || 约2-15cm || 检测角度 || 35° | ||
+ | |- | ||
+ | | 输出信号 || 数字信号(0和1) || 安装孔 || 3mm安装孔 | ||
|} | |} | ||
+ | |||
+ | |||
+ | 4.2,使用说明:<br> | ||
+ | 当模块检测到前方障碍物信号时,电路板上红色指示灯点亮,同时OUT端口持续输出低电平信号,该模块检测距离约2~15cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离减少;逆时针调电位器,检测距离增加 | ||
+ | 红外避障模块的OUT端连接至Arduino的I/O口,通过digitalRead(pin)函数检测电平状态,从而判断是否遇到障碍,使小车做出相应的规避动作。<br> | ||
+ | |||
+ | |||
+ | 5、红外循迹模块<br> | ||
+ | 5.1、引脚及参数介绍:<br> | ||
+ | [[Image:LC-PCB-PS2-40.png]]<br> | ||
+ | |||
+ | |||
+ | 性能参数<br> | ||
+ | {| class="wikitable" style="width:800px;" | ||
+ | |- | ||
+ | | 供电电压 || DC 3.3V-5V || 比较器|| LM393 | ||
+ | |- | ||
+ | | 检测距离 || 1-25mm || 驱动能力 || 约15mA | ||
+ | |- | ||
+ | | 输出信号 || 数字信号(0和1) || 安装孔 || 3mm安装孔 | ||
+ | |} | ||
+ | |||
+ | |||
+ | 5.2、使用说明:<br> | ||
+ | TCRT5000 传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为低电平,指示二极管被点亮。<br> | ||
+ | |||
+ | 做红外循迹实验时,可以用黑色电工胶布在地面上铺条轨道出来(测试程序只支持测试圆形或者椭圆形一类往外凸的轨道,对于一会凸一会凹的轨道需改进程序)红外循迹模块的OUT端连接至Arduino的I/O口,通过digitalRead(pin)函数检测电平状态,正常情况下OUT输出低电平信号,遇黑线时由于黑色物体的吸光特性使得发出的红外线不能反射回来或者是强度不够,此时OUT端输出高电平,由此判断小车是否已经偏离跑道。<br> | ||
+ | |||
+ | |||
+ | 6、PS2遥控手柄<br> | ||
+ | 6.1、引脚及参数介绍:<br> | ||
+ | [[Image:LC-PCB-PS2-41.png]]<br> | ||
+ | |||
+ | |||
+ | PS2手柄接收器引脚定义:<br> | ||
+ | {| class="wikitable" style="width:800px;" | ||
+ | |- | ||
+ | | 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 | | ||
+ | |- | ||
+ | | DAT || CMD || NC || GND || GND || VDD || SEL || CLK || ACK | ||
+ | |} | ||
+ | |||
+ | |||
+ | 6.2、使用说明:<br> | ||
+ | PS2接收器共有9个引脚,只需用到其中的VCC、GND、SEL、CMD、CLK、DAT 6个引脚,可以直接和Arduino相连,也可以通过转接板连接,VCC、GND接5V、GND;SEL、CMD、CLK、DAT 分别接Arduino的10、11、12、13号脚,把手柄的开关拨至ON,手柄和连接成功后接收器上面的绿灯会由闪烁变为常亮,此时就可以通过手柄遥控小车了(约几分钟内无数据传输的话,手柄会进入休眠状态,此时按一下START键可重新建立连接)。<br> | ||
+ | |||
+ | == 基本测试 == | ||
+ | 资料里面提供的测试程序及里面的引脚定义供参考,客户可根据自己的实际需求和测试环境的不同去做相应的修改,比如根据地面摩擦力不同、电池电量的不一样去调整轮子的转速、转弯角度等等,以达到最佳的效果。<br> | ||
+ | 资料里面包含的几个程序分别用于测试不同的外围模块,下面以开机测试电机的程序举例说明,其他的都是大同小异,每个程序里面都有详细的接线和注意事项,这里不再赘述。<br> | ||
+ | |||
+ | 1、开机测试<br> | ||
+ | |||
+ | 1.1、接线方法:<br> | ||
+ | |||
+ | 电池盒的红黑线分别接L298模块的VCC和GND,Arduino 板的Vin、GND接L298N模块上的任一一个5V、GND,然后 | ||
+ | {| class="wikitable" style="width:800px;" | ||
+ | |- | ||
+ | | L298 || 电机 | ||
+ | |- | ||
+ | | OUT1,OUT2 || 左一 | ||
+ | |- | ||
+ | | OUT3,OUT4 || 右一 | ||
+ | |- | ||
+ | | OUT5,OUT6 || 左二 | ||
+ | |- | ||
+ | | OUT7,OUT8 || 右二 | ||
+ | |} | ||
+ | |||
+ | |||
+ | 驱动电机 | ||
+ | {| class="wikitable" style="width:800px;" | ||
+ | |- | ||
+ | | Arduino || L298 | | ||
+ | |- | ||
+ | | A0 || IN1 | ||
+ | |- | ||
+ | | A1 || IN12 | ||
+ | |- | ||
+ | | A2 || IN3 | ||
+ | |- | ||
+ | | A3 || IN4 | ||
+ | |- | ||
+ | | A4 || IN5 | ||
+ | |- | ||
+ | | A5 || IN6 | ||
+ | |- | ||
+ | | 0 || IN7 | ||
+ | |- | ||
+ | | 1 || IN18 | ||
+ | |} | ||
+ | |||
+ | |||
+ | 控制电机正反转、停止 | ||
+ | {| class="wikitable" style="width:800px;" | ||
+ | |- | ||
+ | | Arduino || L298 | | ||
+ | |- | ||
+ | | 3 || EN1 | ||
+ | |- | ||
+ | | 5 || EN12 | ||
+ | |- | ||
+ | | 6 || EN3 | ||
+ | |- | ||
+ | | 9 || EN4 | ||
+ | |} | ||
+ | |||
+ | |||
+ | L298使能端,控制电机转速,也可用跳线帽直接连接至5V时为全速运行。<br> | ||
+ | 如下图:<br> | ||
+ | [[Image:LC-PCB-PS2-42.png]]<br> | ||
+ | [[Image:LC-PCB-PS2-43.png]]<br> | ||
+ | [[Image:LC-PCB-PS2-44.png]]<br> | ||
+ | [[Image:LC-PCB-PS2-45.png]]<br> | ||
+ | |||
+ | 1.2,测试方法<br> | ||
+ | 下载“测试程序”文件夹里面的“Basic_Test”,打开L298模块上面的电源开关,观察四个轮胎是否都是向前转动(超声波模块一端为前方),若不是,则调换该电机在L298N模块OUT处的接线,比如左一电机不对,则交换OUT1和OUT2即可。其余例程的测试请参考各程序里面的说明。<br> |
2023年3月28日 (二) 11:41的最新版本
概述
艾尔赛Arduino麦克纳姆轮小车采用机械强度优于亚克力的PCB作为小车底盘,采用Arduino UNO作为主控MCU,搭配4路H桥L298N电机驱动模块以及麦克纳姆轮,可以实现常规的前进、后退、转弯以及普通轮胎实现不具备的水平方向平移功能。适用于电子爱好者、学生等群体编程实践,使编程充满趣味性!
特点
1、PCB底盘参数:
- 支持安装Arduino UNO R3开发板;
- 支持安装树莓派Raspberry 2B/3B/3B+/4等开发板;
- 支持安装DC3-6V TT直流减速电机,带电机夹片,组装简易牢靠;
- 带2节18650电池盒安装位;
- 带本店的L298N 4路电机驱动模块安装位;
- 支持安装SG90和摄像头云台;
- 支持安装各种传感器,如:红外避障、红外循迹、超声波避障模块等;;
- 底盘尺寸:263*150mm;
2、Arduino UNO参数:
- 微控制器:ATmega328;
- 工作电压:5V;
- 数字I/O引脚数量:14个(其中6个提供PWM输出);
- 模拟I/O引脚数量:6个;
- Flash Memory:32KB,其中0.5KB被启动加载器占用;
- SRAM:2KB;
- EEPROM:1KB;
- 时钟速度:16MHz。
3、L298N电机驱动板:
- 驱动IC:2颗双H桥L298N,可驱动4个直流电机实现正转、反转、刹车功能;
- 驱动电压VSS1和VSS2:5-30V(默认接5V);
- 板载大电流5V稳压芯片LM2596-5.0;
- 逻辑电压:5V;
- 供电电压:极限6-30V,推荐7-12V;
- 单桥最大驱动电流:2A;
- 4路H桥最大总输出功率:50W;
- 板载4路5V排针和1路USB 5V电源输出;
- 板载3路5V舵机接口;
4、轮胎参数:
- 2个L+2个R 麦克纳姆轮;
- 尺寸:内径:6.5mm, 外轮径:80mm, 厚度:37mm;
5、功能简介:
- 前进、后退、转弯、水平移动;
- 超声波避障、红外避障、红外循迹、PS2手柄遥控(选配);
- 也可自行增加更多传感器进行DIY;
介绍说明
1,PCB底盘;
2,Arduino UNO R3主控MCU;
3, 2节可充电18650电池(需另购);
4,L298N电机模块:可驱动4路电机正转、反转、停止;
5,麦克纳姆轮:包含2个R轮+2个L轮,可实现水平移动;
6,红外避障模块:检测到障碍物时指示灯点亮并输出低电平;
7,HC-SR04超声波测距模块:用于超声波避障;
8,红外循迹模块:小车巡线运动时当循迹模块压到黑线时指示灯点亮并输出低电平,使小车做出相应的姿态调整;
9,SG90舵机:用于支撑超声波模块;
10,DC3-6V直流减速TT马达。
11,另外还支持连接PS2手柄遥控控制,有需要的客户可以选购。
硬件连接
一、安装教程:
1、准备好一块小车的PCB底盘,将电机的8个电机夹片掰下。
;
;
2.2、将排线母头剪掉,然后给四个电机铜片上锡,再把排线焊到电机引线端上。
3、安装电机:把四个电机用M3*30螺丝和电机夹片固定到底盘上,其中电机引线端朝向内。(若出现电机松动的情况,可以尝试在电机和PCB间塞点硬纸皮,4个电机与PCB底盘间的间隙最好保持一致,不然到时车子可能会跑偏)
4、安装轮胎
4.1、拿出4个轮胎(2个L轮+2个R轮)和4个紧固螺丝(如果有)
4.2、将轮胎插到电机并拧好固定螺丝,注意L和R轮的安装位置不能搞错,如下:
6、使用M3*30+6铜柱固定L298N电机驱动模块,并将电池盒的红黑电源线分别接到L298N模块的VCC和GND。
7、将电机驱动线接到L298N驱动模块:
左一电机两根线接OUT1、OUT2
右一电机两根线接OUT3、OUT4
左二电机两根线接OUT5、OUT6
右二电机两根线接OUT7、OUT8
备注:测试时如果某个电机转向反了,可以交换该电机的驱动线。
其中轮子的位置定义如下(注:这里的L和R仅指轮子的位置,不是上面说的麦克纳姆轮的种类)
9,安装超声波模块
9.1、使用M2*10螺丝固定SG90舵机(注意舵机方向,以超声波模块装上去后能左右分别转动约90度为准)
9.2、使用细铁丝/螺丝将HC-SR04超声波模块固定到超声波支架上。
9.3、使用M2*6自攻螺丝将支架固定到舵机桨叶上,并将桨叶上面的2个螺丝剪短一点,太长会碰到SG90舵机的壳体影响转动。
9.4,再将舵机桨叶固定在SG90舵机上面,另外建议将HC-SR04的引脚掰直方便接线。
模块介绍
Arduino UNO 插槽端口列表
标识 | 描述 | 标识 | 描述 |
IOREF | 为控制器提供参考电压(非5V情况下) | AREF | 模拟输入接口的参考电压输入(默认为5V); |
RESET | 拉低时对Arduino复位 | GND | 接地线: |
3.3V | 3.3V电压输出 | 13 | 数字端口13,SPI接口的SCK引脚; |
5V | 5V电压输出 | 12 | 数字端口12,SPI接口的MISO引脚; |
GND | 接地线 | -11 | 数字端口11,PWM输出端口,SPI接口的MOSI引脚; |
GND | 接地线 | -10 | 数字端口10,PWM输出端口,SPI接口的SS引脚; |
Vin | 外部电压输入,替代USB/DC座 | -9 | 数字端口9,PWM输出端口; |
A0 | 第1个模拟输入接口 | 8 | 数字端口8; |
A1 | 第2个模拟输入接口 | 7 | 数字端口7; |
A2 | 第3个模拟输入接口 | -6 | 数字端口6,PWM输出端口; |
A3 | 第4个模拟输入接口 | -5 | 数字端口5,PWM输出端口; |
A4 | 第5个模拟输入接口,也可做TWI接口的SDA引脚 | 4 、 -3 | 数字端口4;数字端口3,PWM输出端口 |
A5 | 第6个模拟输入接口,也可做TWI接口的SCL引脚 | 2 、 TX -> 、 RX< - | 数字端口2;数字端口1,串口输出引脚;数字端口0,串口输入引脚; |
注:更多关于Arduino UNO的细节可参考资料里的入门指导文档。
性能参数
工作模式 | H桥驱动(4路) | 主控芯片 | 2颗双H桥L298N |
驱动电压VSS1和VSS2(默认接5V) | 5-30V | 电源芯片 | LM2596-5.0开关电源,优于LM7805; |
逻辑电压 | 5V | 逻辑电流 | 0-36mA: |
供电电压VCC(推荐值) | 7-12V | 供电电压VCC(极限值) | 6-30V; |
单桥最大驱动电流 | 2A | 最大总功耗 | 20W; |
2.2、使用说明:
L298N作为主驱动芯片,具有驱动能力强,发热量低,抗干扰能力强的特点,同时搭载的LM2596开关电源IC也使电源效率发挥到最高,更低的功耗,更强劲的动力!
连接舵机:板载有三路舵机接口,每一路分别包含S、5V、GND三个引脚,如本实验超声波下的舵机插到第一路,则SG90舵机的黄红棕三根线分别对应S1、5V、GND插进去,控制舵机的PWM信号从旁边的A1脚输入,剩下不用的舵机接口可以用来给外部5V设备供电。
使用时VCC、GND接18650电池;IN1-IN8接Arduino输出的高低电平来控制电机的正反转和停止;EN1-EN4为使能/调速引脚,使用单片机输出占空比可变的PWM即可调节转速,如果不需要调速,则可用跳线帽分别连接至L298N模块上的5V(此时为全速运行)。
以下是控制直流电机时IN1-IN8的控制逻辑:
注:若程序和IN1-IN8的接线正确而某电机转向却是反的,比如电机M1:则交换OUT1和OUT2这2根线就可以。
性能参数
供电电压 | DC5V | 静态电流 | 小于2mA |
电平输出 | 高5V | 电平输出 | 低0V |
感应角度 | 不大于15度 | 探测距离 | 2cm-450cn |
3.2,使用说明:
(1)采用IO触发测距,给至少10us的高电平信号;
(2)模块自动发送8个40khz的方波,自动检测是否有信号返回;
(3)有信号返回,通过IO输出一高电平,高电平持续的时间就是,超声波从发射到返回的时间.测试距离=(高电平时间*声速(340M/S))/2。
超声波测距模块的Trig和Echo脚连接至Arduino的I/O口,利用digitalWrite(pin, value)向Trig脚发送持续时间大于10us的高电平触发信号,然后再使用pulseIn(pin, value)函数来读取Echo脚的高电平持续时间来算得被测距离。
供电电压 | DC 3.3V-5V | 比较器 | LM393 |
检测距离 | 约2-15cm | 检测角度 | 35° |
输出信号 | 数字信号(0和1) | 安装孔 | 3mm安装孔 |
4.2,使用说明:
当模块检测到前方障碍物信号时,电路板上红色指示灯点亮,同时OUT端口持续输出低电平信号,该模块检测距离约2~15cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离减少;逆时针调电位器,检测距离增加
红外避障模块的OUT端连接至Arduino的I/O口,通过digitalRead(pin)函数检测电平状态,从而判断是否遇到障碍,使小车做出相应的规避动作。
性能参数
供电电压 | DC 3.3V-5V | 比较器 | LM393 |
检测距离 | 1-25mm | 驱动能力 | 约15mA |
输出信号 | 数字信号(0和1) | 安装孔 | 3mm安装孔 |
5.2、使用说明:
TCRT5000 传感器的红外发射二极管不断发射红外线,当发射出的红外线没有被反射回来或被反射回来但强度不够大时,光敏三极管一直处于关断状态,此时模块的输出端为高电平,指示二极管一直处于熄灭状态;被检测物体出现在检测范围内时,红外线被反射回来且强度足够大,光敏三极管饱和,此时模块的输出端为低电平,指示二极管被点亮。
做红外循迹实验时,可以用黑色电工胶布在地面上铺条轨道出来(测试程序只支持测试圆形或者椭圆形一类往外凸的轨道,对于一会凸一会凹的轨道需改进程序)红外循迹模块的OUT端连接至Arduino的I/O口,通过digitalRead(pin)函数检测电平状态,正常情况下OUT输出低电平信号,遇黑线时由于黑色物体的吸光特性使得发出的红外线不能反射回来或者是强度不够,此时OUT端输出高电平,由此判断小车是否已经偏离跑道。
PS2手柄接收器引脚定义:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
DAT | CMD | NC | GND | GND | VDD | SEL | CLK | ACK |
6.2、使用说明:
PS2接收器共有9个引脚,只需用到其中的VCC、GND、SEL、CMD、CLK、DAT 6个引脚,可以直接和Arduino相连,也可以通过转接板连接,VCC、GND接5V、GND;SEL、CMD、CLK、DAT 分别接Arduino的10、11、12、13号脚,把手柄的开关拨至ON,手柄和连接成功后接收器上面的绿灯会由闪烁变为常亮,此时就可以通过手柄遥控小车了(约几分钟内无数据传输的话,手柄会进入休眠状态,此时按一下START键可重新建立连接)。
基本测试
资料里面提供的测试程序及里面的引脚定义供参考,客户可根据自己的实际需求和测试环境的不同去做相应的修改,比如根据地面摩擦力不同、电池电量的不一样去调整轮子的转速、转弯角度等等,以达到最佳的效果。
资料里面包含的几个程序分别用于测试不同的外围模块,下面以开机测试电机的程序举例说明,其他的都是大同小异,每个程序里面都有详细的接线和注意事项,这里不再赘述。
1、开机测试
1.1、接线方法:
电池盒的红黑线分别接L298模块的VCC和GND,Arduino 板的Vin、GND接L298N模块上的任一一个5V、GND,然后
L298 | 电机 |
OUT1,OUT2 | 左一 |
OUT3,OUT4 | 右一 |
OUT5,OUT6 | 左二 |
OUT7,OUT8 | 右二 |
驱动电机
Arduino | |
A0 | IN1 |
A1 | IN12 |
A2 | IN3 |
A3 | IN4 |
A4 | IN5 |
A5 | IN6 |
0 | IN7 |
1 | IN18 |
控制电机正反转、停止
Arduino | |
3 | EN1 |
5 | EN12 |
6 | EN3 |
9 | EN4 |
L298使能端,控制电机转速,也可用跳线帽直接连接至5V时为全速运行。
如下图:
1.2,测试方法
下载“测试程序”文件夹里面的“Basic_Test”,打开L298模块上面的电源开关,观察四个轮胎是否都是向前转动(超声波模块一端为前方),若不是,则调换该电机在L298N模块OUT处的接线,比如左一电机不对,则交换OUT1和OUT2即可。其余例程的测试请参考各程序里面的说明。