近期受疫情影响,STM32芯片一路涨价,本着低成本的原则(穷学生狗头)现在想做一个ROS平台控制的小车只能选择其他低成本的开发板了。比较之下最终选择Arduino mega开发板,最后实现的效果还是不错的。
这里放一个B站的视频链接:
https://www.bilibili.com/video/BV1QM4y157La/
觉得有用的小伙伴可以给我一个赞么?你们的支持是我更新的动力。
下面对所用到的硬件一一介绍。
Arduino mega的开发板我就不多介绍了,平时大家应该多多少少都接触过。非常好用的一块板子,使用Arduino的IDE去开发,相比于Arudino uno,mega多了很多引脚,比如串口多了3个,PWM,AD输入等口都有增加。
值得一说的是,Arduino mega开发板的时钟只有16MHz,相比于STM32F1系列的要低很多,STM32一般都是72Mhz以上的。这个16MHz的时钟频率一般来说都是够用的,我也是采集加入高精度的编码器采集电机转动脉冲时,发现这时候判断脉冲的正负程序会卡死,当降低电机转速时候,才能正常工作,我判断应该是晶振时钟比较慢的问题,之前使用STM32不会出现这样的问题。至于怎么样处理电机速度的问题,后续会说到。
使用Arduino uno也可以实现相同的功能,但是后续可能会小车上加一些其他的功能,所以我就使用了mega开发板。问题不大。
电机是个坑。因为我们后续要在ROS里发布里程计的数据,对电机的要求需要能够测速。
我采用的差速的方式,需要两个电机。
我前后用过三款电机,第一种是普通的TT电机,对这种电机测速一般都是采用光栅码盘。我用arduino去测试,发现误差很大,相同占空比的情况下,一个数据是1800,另一个是1400,我果断放弃了这种电机。
第二种我使用的减速电机,他的减速比是1:4.4,然后转一圈的脉冲只有11个,精度非常差,而且扭矩非常小,后续调PID,空载和放在地上转动完全不一样,我用键盘控制,按下停止键了,电机还会往前移动一段,里程计和控制作用不太,这种电机最终效果误差很大。
第三种也是最后一种,我换了一款减速比较大的点,扭矩比较大,最后的控制效果不错,具体电机的型号我用的GA25-371,减速比74.8,一圈有360个脉冲。建议大家使用减速比大一些的电机,但也不能太大, 可以参考我这个电机型号。要使用六线的电机,六线种分别为两根电机电源,四根是编码器的线。
我采用的L298N,玩过智能小车的同学都应该接触过,就不多说啦,直接上图。
电池直接采用12V供电就行,我采用的锂电池
这个电池里面应该是3节18650,价格也不贵,充电也很方便。
陀螺仪是ROS小车种比较重要的一环,因为和里程计数据直接挂钩,好的陀螺仪数据可以保证里程计数据的精准。我这里采用的MPU6050,这是一款市面上非常常见的陀螺仪模块,Arduino也有很好的库去支持它。具体怎样使用MPU6050后续会详细的说明。
因为我现在手上没有树莓派和激光雷达,所以暂时无法对小车进行SLAM和Navigation导航,所以我就使用了一个数传模块用来传输速度信息和接收数据,如果你手上有树莓派,可以不适用数传模块,直接将arudino通过串口连接到树莓派上。
主体的硬件都介绍完了,至于轮子,平台什么的大家可以自己想办法,自己动手DIY吧。
谢谢观看,谢谢!!!
有问题我们可以一起讨论。