查看“Microduino 自平衡小车/zh”的源代码
←
Microduino 自平衡小车/zh
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | ==概述== *项目名称:Microduino自平衡车 *目的:是两轮小车自动保持平衡 *难度:中高 *耗时:4小时 *制作者:Microduino Studio-ray ==材料清单== *Microduino设备 {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||1||核心板 |- |[[Microduino-USBTTL/zh]] ||1||下载程序 |- |[[Microduino-10DOF/zh]] ||1||获取角度 |} *其他设备 {|class="wikitable" |- |公母头杜邦线||6||连接电机和Microduino |- |跳线||若干||连接电路 |- |L298N电机驱动板||1||驱动电机 |- |9V干电池||1||给电机和Microduino供电 |- |9V干电池的电源线||1||连接电池和电机驱动板 |- |减速电机||2||驱动电机 |- |轮子||2||平衡车的轮子 |- |木板||1||用于固定轮子,做为横梁 |- |螺丝,螺母||若干||固定电机,轮子 |- |橡皮筋||若干||固定Microduino,L298N |- |} ==文档== L298N说明:[[File:l298n.pdf]] 测试程序:[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino%20Car MicroduinoCar] Kalman滤波函数库:[https://github.com/TKJElectronics/KalmanFilter KalmanFilter] ==调试== *步骤一:组装固定电机,轮子于横梁,然后找四根电线连接电机。 组装好后看起来像这样: [[File:selfBalanceCar1.jpg||600px|center|thumb]] [[File:selfBalanceCar2.jpg||600px|center|thumb]] *步骤二:连接L298N电机驱动板,Microduino,电机,电池。 L298N电机驱动板的引脚功能图如下: [[File:selfBalanceCarL298N.jpg||600px|center|thumb]] 按着图中的指示把线连后看起来像这样: [[File:selfBalanceCar3.jpg||600px|center|thumb]] *步骤三:把连接好的电路和设备固定到平衡车的横梁上 首先先把L298N固定在横梁上,用两个橡皮筋,看起来像这样 [[File:selfBalanceCar4.jpg||600px|center|thumb]] 在本例中,我们采用9V干电池来给L298N和Microduino供电,因为此电池使用和购买很方便: [[File:selfBalanceCar5.jpg||600px|center|thumb]] 接下来要固定Microduino了,一共有三个Microduino的模块,分别是: **Microduino-Core **Microduino-FT232R **Microduino-10dof 堆叠在一起,在这里要注意10dof的x轴的方向,因为这个例子是以x轴作为基准获取角度来控制小车平衡的,如果方向不正确,自平衡车会无法平衡的。 用来确定x轴的方向你可以在代码里获取角度的位置进行串口输出,在串口中观察x轴的角度变化,确定方向后,平移到小车的横梁上,并用橡皮筋固定好。 固定好后看起来像这样: [[File:selfBalanceCar6.jpg||600px|center|thumb]] [[File:selfBalanceCar7.jpg||600px|center|thumb]] [[File:selfBalanceCar8.jpg||600px|center|thumb]] 好了,以上是硬件部分,下面是软件部分了。 *步骤四:介绍一下平衡车的基本原理: 平衡车之所以可以自己掌握平衡,首先使用了10dof里的加速度和陀螺仪测出的数据通过kalman滤波算法算出一个实时的角度。 平衡的角度是180度,如果测出的角度偏离的180通过PID进行调整输出相应的PWM值给电机,从而保持小车平衡。 PID原理有点像锅炉房里烧锅炉,首先定下来锅炉的恒定温度,比如26摄氏度,锅炉房里的墙上有一个温度计,实时测得锅炉的当时温度。 锅炉房里通常有个老大爷时不时(每十分钟看一次)的看着墙上的温度计,如果温度高了就给锅炉降温,低了就给锅炉升温。 如果让一个没有经验的年轻小伙子来管理锅炉的温度,可以想象温度表的值会上下浮动的,有经验的老大爷会把这个浮动降到最低。 其实PID就是这个烧锅炉的例子,在代码中就有这个故事的影子: **规定的26度就是setpoint **当前的温度就是CurrentAngle **实际值与26度的偏差就是error **没有经验的小伙子有点像PID中的P **有经验的老大爷相当于PID了 **每十分钟看一次相当于PID计算的周期时间 在测试程序中看找找这些影子,体会一下PID控制吧。 *步骤五:代码中的函数说明: Pid()//PID算法 Dof()//通过Kalman滤波计算当前角度 Motors()//控制电机转速 stop()//当角度达到180度时,电机停止 *步骤六:下载代码: 下载Kalman滤波函数到你的IDE的libraries中,重启你的IDE,下载测试代码到Microduino中。 *步骤六:观察电机旋转方向,用手倾斜小车,看看电机旋转方向是不是与倾斜方向相同,有可能是相反的,所以你需要调整电机的正负极,或者修改Motors()函数里的电机转动方向。 *步骤七:好了,看看你的小车运作的怎么样吧,有可能还不稳定吧,那就要调整P, I, D 三个参数的值了,下面是一些调整PID参数值得经验了: 网上广泛流传的PID参数调整的口诀: 参数整定找最佳,从小到大顺序查 先是比例后积分,最后再把微分加 曲线振荡很频繁,比例度盘要放大 曲线漂浮绕大湾,比例度盘往小扳 曲线偏离回复慢,积分时间往下降 曲线波动周期长,积分时间再加长 曲线振荡频率快,先把微分降下来 动差大来波动慢。微分时间应加长 理想曲线两个波,前高后低4比1 一看二调多分析,调节质量不会低。 ==结果== 平衡车已经有了自己掌握平衡的趋势了,看的出来它很努力的保持平衡,像孩子学走路一样。 ==注意问题== *注意Microduino-10dof模块x轴的方向一定要摆放正确 *注意焊接电机的导线 *代码中I2C.ino不要删除 *在给Microduino考代码时最好把5v的跳线去掉,考好代码后再接上 ==视频== 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 |}
返回至
Microduino 自平衡小车/zh
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息