我的两轮自平衡小车全套资料

2019-07-20 23:05发布

一、前言

  好多年前,看到电视新闻上介绍segway,很是惊叹。然后大概是2、3年前吧,看到网上有人做出了2轮自平衡小车,然后我也很想自己也做一个来玩。无奈于自己的水平有限,对硬件一窍不通,动手能力有限,故也没有做成。(那时候的加速度传感器还是每个ic一个维度的,不像现在的MPU6050一个ic就集成了6个输出量,对电路设计和手工焊接能力要求都挺高的)。
  去年的时候吧,网上发现出现了很多加速传感器的集成模块,cortex-m3风头正盛,自己工作也算比较稳定清闲,感觉时机成熟了,便开始了两轮自平衡小车的制作,到去年底大概成型。程序采用的是互补滤波与PID控制,感觉程序还是有一定的问题与改进空间,想着以后慢慢优化。无奈半成品状态后一直无心继续改进,期间还出现了硬盘出现故障,差点所有成果毁灭的事故;想想虽然作品不是很完美,还是上传到论坛保管的好,也跟大家共享交流一下。同时感谢在制作过程中论坛版主、网友对我的帮助。bow~!

成品效果图:



视频1:这个视频拍摄的时候还没加编码器与红外遥控,只能通过铁尺子调整小车的重心位置,使得小车能够大致保存平衡。

http://www.tudou.com/programs/view/PIocSyNuq7g

视频2:最终效果。程序还没调好,还没拍啊

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
50条回答
doc_he
1楼-- · 2019-07-21 00:43
回复【楼主位】ofourme:
---------------------------------
有个问题想请教:
// 通过小车移动速度与移动距离,调整小车平衡所需的pwm输出
pwm_balance += (speed*6+distance*0.1);
 其中,6和0.1是如何得到的

先谢过。。。
sml008
2楼-- · 2019-07-21 03:20
 精彩回答 2  元偷偷看……
ofourme
3楼-- · 2019-07-21 04:57

二、硬件选择与方案设计

  胶枪、电转、电表等耐用品工具的价格不计算在内,下列原件总共花了我大概450元吧。无意给淘宝商家做广告,所以请大家自动略过图片中的商家logo。

1. 控制板采用原子的STM32 MINI开发板,不带屏的话138元吧。遥控使用板上的红外接收器,当然理论上也可以使用板上的rf无线模块接口。



2. 方位传感器采用iic接口的9轴模块,花了我88大洋。包括加速度、角速度、气压、地磁传感器,主要是考虑到以后别的用途,如果采用6轴模块的话,应该可以降到50元以内吧。
  自平衡小车需要使用到1个角速度分量和2个加速度分量,通过融合滤波得到较为准确的小车倾斜角度值。查看网上几年前的小车,都是使用3个独立ic搭建的,而且还是使用模拟量输入;查找网上资料,现在都是集成ic,接口主要有spi和iic,而且还有中断输入。我买的这个模块只有iic接口,而且没有中断输出,iic接口,故只能采用周期性查询方式;加速度传感器采用的是ADXL345,角速度传感器采用L3G4200D,这两个ic的手册资料是比较齐全的,便于学习。



3. 采用9v减速电机与铝合金支架、轮胎,指导价格98元。卖家给的资料有限,电机的参数不明,减速比都是自己测的。
  经过实测,电机的减速比大概为150。感觉小车的力矩还是比较大的,但是反应速度不够快;采用减速比100的电机或是大轮胎,应该能够改善小车的动力性能。电机有两个电源输入端口,通过改变电压的正负极,可以改变电机的转动方向;通过改变驱动电压的大小,可以改变电机的转速。




4. 电机驱动模块采用全隔离的L298N驱动板,抗干扰,30元。如果不是光耦隔离的话会便宜很多。卖家给的实物和照片不太一样,有一条pwm控制线5v有效,3.3v无效,说明商家卖出之前没完整的做过测试。我自己并了个电阻搞定了,也便没有跟卖家纠缠了。
  模块有4个逻辑控制输入端口,接控制器的4个io口,控制2个电机的转向与停止;2个pwm输入,接控制器的pwm输出,控制2个电机的转速;1个逻辑电源输入接口,从stm32控制板上取电。驱动部分,2个电源输入端口,接聚合物锂电池,考虑到5v稳压模块从电池取电,减速电机又是9v的,建议采用9v以上的电池(我采用的是12v);4个驱动输出接2个减速电机的4个输入口。



5. 电池采用12v 3000mah的聚合物锂电池,65大洋,不包括充电器的价格。恒定放电电流可达4A,瞬间可达40A。不知道用9v的电池可不可以,当时怕电压太小,所以就没有买。据说普通的电池不能用在小车上,因为电机的瞬间电流很大,普通电池无法提供。



6. 逻辑电路5V供电模块,采用LM2596降压模块从12v锂电池取电,6元。
  该模块的输出电压可调,我调整到了5v输出。



7. 测速码盘,1个18元。
  为了省钱省地方,我只用了1个,有了这个就可以得到电机的速度反馈,再通过控制调整小车的速度、位置。小车的动力部分其实不一定要使用减速电机,而可以使用步进电机,这样就可以省掉编码器,而且控制性能更加良好。但这样带来的是需要采用专门的步进电机控制板,还有成本的攀升。不差钱的同志可以考虑采用步进电机方案。



8. 铜柱、洞洞板、连接线等若干。


ofourme
4楼-- · 2019-07-21 07:45

三、 STM32F103RBT6 资源的使用:

(一)控制小车需要的端口如下:

1、2个pwm输出,用于控制2个电机的转速,我们用pwm1和pwm2表示。在此使用定时器0的两个pwm输出端口PA0和PA1。
2、4个数字gpio输出,用于控制2个电机的正方转与停止,我们用motor1-1、motor1-2、motor2-1和motor2-2表示。
3、1个数字gpio输入,用于接收红外遥控器发出的信号,我们用ir表示。
4、2个iic模拟gpio端口,用于控制获取9轴模块的数据,我们用iic-scl和iic-sda表示。
5、2个编码器信号输入接口。每个编码器需要2个接口,我只使用了1个编码器,故需要2个端口。使用了定时器4的编码器模式,故需连接到定时器4的t4ch1和t4ch2端口。

  以上端口共11个。为了减少和板上资源的冲突,使板上的SD卡、FLASH和EEPROM等可以同时使用,11个端口经过尽心挑选,比如ir使用跳线连接到了PC1,使用与FLASH、SD卡同一个模拟iic端口等。当然,也牺牲了一些板上的功能,如:触摸屏、WK_UP按键等。如果要使用2个编码器的话,可以考虑另外使用定时器1的t1ch1和t1ch2端口或者是t1ch1n和t1ch2n。通过一定的编程技巧,理论上可以使液晶屏能够显示图像,同时不影响2个编码器的使用。

(二)板上资源的使用:

  开发板所使用的芯片采用64管脚封装,51个可用IO。51个IO包括:PA 0-15、PB 0-15、PC 0-15、PD 0-2。板上io的使用情况与小车io对应情况如下(加*标志的表示楼主“尽量”不去占用的io端口,避免与板上资源冲突):


PA0 -WK_UP/温度传感器  ---------------------- pwm1
PA1 -红外传感器/JF24_FIFO*  ------------------ pwm2
PA2 -FLASH_CS/U2TX*
PA3 -SD_CS/U2RX*
PA4 -SPI1_NSS/NRF_CE/JF24_RST
PA5 -SPI1_SCK
PA6 -SPI1_MISO
PA7 -SPI1_MOSI
PA8-LED0*  ------------t1ch1
PA9-串口1RX* ----------t1ch2
PA10-串口1TX*
PA11-USB_D- -------------------
PA12-USB_D+ --------------------
PA13-KEY0/JTAG/SWDIO/SP2*
PA14-JTAG-----------------------
PA15-KEY1/JTAG/PS2*

PB0~15-液晶数据端口
PB6   ------------t4ch1
PB7   ------------t4ch2
PB13  ------------t1ch1n
PB14  ------------t2ch2n

PC0 -T_SCK ---------- motor2-1
PC1 -T_PEN ---------- ir
PC2 -T_MISO --------- motor1-2
PC3 -T_MOSI --------- motor1-1
PC4 -NRF_CS  JF24_CS
PC5 -NRF_IRQ JF24_BKT
PC6 -LCD_RD*
PC7 -LCD_WR*
PC8 -LCD_RS*
PC9 -LCD_CS*
PC10-LCD_BL*
PC11-IIC_SDA ------------------------------- iic-sda
PC12-IIC_SCL -------------------------------- iic-scl
PC13-T_CS/侵入检测/RTC输出* ----------- motor2-2
PC14-RTC晶振*
PC15-RTC晶振*

PD0 -系统晶振*
PD1 -系统晶振*
PD2 -LED1*

可以输入模拟量的io:PA0-7,PB0-1,PC0-5

ofourme
5楼-- · 2019-07-21 09:06
 精彩回答 2  元偷偷看……
ofourme
6楼-- · 2019-07-21 10:22

~~~~~~~~~~~~

一周热门 更多>