“Microduino 自平衡小车/zh”的版本间的差异
(→视频) |
(→文档) |
||
(未显示2个用户的6个中间版本) | |||
第15行: | 第15行: | ||
|模块||数量||功能 | |模块||数量||功能 | ||
|- | |- | ||
− | |Microduino-Core||1||核心板 | + | |[[Microduino-Core/zh]]||1||核心板 |
|- | |- | ||
− | |Microduino- | + | |[[Microduino-USBTTL/zh]] ||1||下载程序 |
|- | |- | ||
− | |Microduino- | + | |[[Microduino-10DOF/zh]] ||1||获取角度 |
|} | |} | ||
第44行: | 第44行: | ||
|- | |- | ||
|橡皮筋||若干||固定Microduino,L298N | |橡皮筋||若干||固定Microduino,L298N | ||
− | + | |- | |
|} | |} | ||
− | |||
==文档== | ==文档== | ||
− | L298N说明: | + | L298N说明:[[File:l298n.pdf]] |
− | 测试程序: | + | 测试程序:[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino%20Car MicroduinoCar] |
− | + | Kalman滤波函数库:[https://github.com/TKJElectronics/KalmanFilter KalmanFilter] | |
==调试== | ==调试== | ||
第88行: | 第87行: | ||
**Microduino-FT232R | **Microduino-FT232R | ||
**Microduino-10dof | **Microduino-10dof | ||
+ | |||
堆叠在一起,在这里要注意10dof的x轴的方向,因为这个例子是以x轴作为基准获取角度来控制小车平衡的,如果方向不正确,自平衡车会无法平衡的。 | 堆叠在一起,在这里要注意10dof的x轴的方向,因为这个例子是以x轴作为基准获取角度来控制小车平衡的,如果方向不正确,自平衡车会无法平衡的。 | ||
第112行: | 第112行: | ||
其实PID就是这个烧锅炉的例子,在代码中就有这个故事的影子: | 其实PID就是这个烧锅炉的例子,在代码中就有这个故事的影子: | ||
− | |||
**规定的26度就是setpoint | **规定的26度就是setpoint | ||
**当前的温度就是CurrentAngle | **当前的温度就是CurrentAngle | ||
第135行: | 第134行: | ||
下载Kalman滤波函数到你的IDE的libraries中,重启你的IDE,下载测试代码到Microduino中。 | 下载Kalman滤波函数到你的IDE的libraries中,重启你的IDE,下载测试代码到Microduino中。 | ||
− | |||
*步骤六:观察电机旋转方向,用手倾斜小车,看看电机旋转方向是不是与倾斜方向相同,有可能是相反的,所以你需要调整电机的正负极,或者修改Motors()函数里的电机转动方向。 | *步骤六:观察电机旋转方向,用手倾斜小车,看看电机旋转方向是不是与倾斜方向相同,有可能是相反的,所以你需要调整电机的正负极,或者修改Motors()函数里的电机转动方向。 |
2014年10月29日 (三) 06:36的最新版本
概述
材料清单
文档L298N说明:文件:L298n.pdf 测试程序:MicroduinoCar Kalman滤波函数库:KalmanFilter 调试
组装好后看起来像这样:
L298N电机驱动板的引脚功能图如下: 按着图中的指示把线连后看起来像这样:
首先先把L298N固定在横梁上,用两个橡皮筋,看起来像这样 在本例中,我们采用9V干电池来给L298N和Microduino供电,因为此电池使用和购买很方便:
堆叠在一起,在这里要注意10dof的x轴的方向,因为这个例子是以x轴作为基准获取角度来控制小车平衡的,如果方向不正确,自平衡车会无法平衡的。 用来确定x轴的方向你可以在代码里获取角度的位置进行串口输出,在串口中观察x轴的角度变化,确定方向后,平移到小车的横梁上,并用橡皮筋固定好。 固定好后看起来像这样: 好了,以上是硬件部分,下面是软件部分了。
平衡车之所以可以自己掌握平衡,首先使用了10dof里的加速度和陀螺仪测出的数据通过kalman滤波算法算出一个实时的角度。 平衡的角度是180度,如果测出的角度偏离的180通过PID进行调整输出相应的PWM值给电机,从而保持小车平衡。 PID原理有点像锅炉房里烧锅炉,首先定下来锅炉的恒定温度,比如26摄氏度,锅炉房里的墙上有一个温度计,实时测得锅炉的当时温度。 锅炉房里通常有个老大爷时不时(每十分钟看一次)的看着墙上的温度计,如果温度高了就给锅炉降温,低了就给锅炉升温。 如果让一个没有经验的年轻小伙子来管理锅炉的温度,可以想象温度表的值会上下浮动的,有经验的老大爷会把这个浮动降到最低。 其实PID就是这个烧锅炉的例子,在代码中就有这个故事的影子:
在测试程序中看找找这些影子,体会一下PID控制吧。
Pid()//PID算法 Dof()//通过Kalman滤波计算当前角度 Motors()//控制电机转速 stop()//当角度达到180度时,电机停止
下载Kalman滤波函数到你的IDE的libraries中,重启你的IDE,下载测试代码到Microduino中。
网上广泛流传的PID参数调整的口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线振荡频率快,先把微分降下来 动差大来波动慢。微分时间应加长 理想曲线两个波,前高后低4比1 一看二调多分析,调节质量不会低。 结果平衡车已经有了自己掌握平衡的趋势了,看的出来它很努力的保持平衡,像孩子学走路一样。 注意问题
视频http://v.youku.com/v_show/id_XNzA2NzgxMjM2.html http://v.youku.com/v_show/id_XNzA2Nzg3Nzgw.html http://v.youku.com/v_show/id_XNzA2Nzk0MDI0.html http://v.youku.com/v_show/id_XNzA2Nzk4ODQ4.html
|