本帖最后由 Ketose 于 2016-4-5 19:17 编辑
这个小车是两年前做的,刚好趁这个机会参加“春蕾杯”活动,这个小车原本是打算用51来做主控。可是51的计算能力有点弱,在计算使用卡尔滤波的时候会影响小车的平衡。那时候刚好手头有个新塘的开发板:M058S,于使用开始学习使用新塘的单片机。
这个平衡小车的成本也就几十块钱,相比市面上那些成熟的平衡小车方案要便宜的多。首先电机选用上使用TT电机,两个电机加起来也就是几块钱的事情,再一个就是支撑小车的铜柱,也是十元内搞定。主控M058S开发板是免费的,再加上一个电机的驱动芯片TB6612FNG和一个6轴重力加速度和角速度传感器MPU6050,不到100块钱开始了DIY之旅。先看下小车是样子
M058S开发板:
电机驱动板:
小车底部的电池:
再说下M058S这款芯片:内核使用Cortex™-M0 32位微处理器,工作频率可达 50 MHz。比起51芯片计算能力那简直是一个天上一个地上了。 32 KB应用程序Flash,内嵌4 KB SRAM虽然看起来有点小,但是对于平衡小车来说已经足够了。最多4通道PWM输出或互补式PWM输出这个对于两轮的平衡小车最键,也是满足要求。2组I²C(可达 400 kHz)用于读取MPU6050的数据。一组SPI(可达36 MHz)可以用于2.4G的无线遥控NRF24L01P的驱动。突然觉得用M058S做平衡小车的主控真是物美价廉。还有对于从51转过来学习ARM的同学,M051系统也最合适不过,它一是具有51一样的编程风格,又有ARM内核的高性能,爽爆了。
再看下当时用M058S加TT电机的第一板的小车视频:
只使用角度,没有加速度,因为编码器没办法添加上去,所以小车站力的时候用手一推就会倾倒,还有一个重要的原因就是TT电机力量太小了,而且干扰又强。所以做小车困难重重。。。
TT电机如果要做好,就要给小车减重,后来决定还是给小车换个动力,于是上淘宝上花重金买了个小车的底盘,瞬间小车看起来高大上了话多。
这个是带编码器的电机。加上速度环之后,小车稳定了许多,手是推不到了。哈哈看视频吧。
总得来说使用新塘M058S编程的时候是函数库和寄存器混用。看看例子,就明白怎么回事了。相对来比较简单。相比飞思卡尔(现在已经是NXP了)要简单多了,但飞思卡尔毕竟做子很多年芯片,它的芯片功能更强大更灵活些,不过用在这里就是浪费。
说了那么多也没用,还是把源码发出来好些。代码写的比较烂,仅供大家参考
BlanceCarM058S.rar
(1.58 MB)
|