极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: wujingyu

低成本、低档自平衡小车历程(超声自平衡小车)

  [复制链接]
 楼主| 发表于 2014-11-29 23:47:17 | 显示全部楼层
Super169 发表于 2014-11-29 16:14
可能是我的設計不太好, 電池都集中在一邊, 車子本身在水平狀態下極不穩定.
結果.....電池一邊急跌, 車 ...

小车的自然物理平衡点是无所谓的,你先把L298N的电源断开,用手调整你小车到平衡状态,观察一下6050的角度是多少,记录下这个角度并将这个角度作为你程序中的角度设定值。
“當車子向一方跌下時, 車輪的轉向是否應令車子向這個方向走?”,是的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-29 23:51:21 | 显示全部楼层
我测速模块烧了,今天修改了一下程序,用PWM的值取代测速码盘,效果也不错!
明天试另一方案:用6050模块的加速度积分取代测速信号检测,作为速度PID的输入,看看效果如何?如果成功,下次在用6050的方位角信息来控制小车的两轮均衡运转,或者控制小车的转向。
回复 支持 反对

使用道具 举报

发表于 2014-11-30 01:00:40 | 显示全部楼层
wujingyu 发表于 2014-11-29 23:47
小车的自然物理平衡点是无所谓的,你先把L298N的电源断开,用手调整你小车到平衡状态,观察一下6050的角度 ...

"用手调整你小车到平衡状态" - 这个也不容易.
也许因为车子的重量太偏前了, 全部电池都在车轴的前方, 而车尾只有L298 太轻了.
加上车尾比较长, 要把车子平衡, 车尾就要碰上地面了.

文字忽较难说明, 看图就明白了.  以下是我尝试在车头加上圆柱造成倾斜去找寻平衡点.
如果超过了平衡点, 车子应该会向车尾跌下去.



但我把圆柱不断放松, 相中车尾离地面少於 5mm 时 (约20 度), 车子依然是倾向车头, 没有向车尾倾倒.
如果再轻微把车头升高, 车尾就要碰到地面了....我想, 平衡点大约是车尾离地 1-3mm 左右地方.
但这个平衡点就没意义了, 车子要达到平衡前, 也会有轻微摆动, 肯定要碰上地面了.
而且在行走时, 总会有点摆动, 3mm 的摆动是少不免的, 当然亦会很容易让车尾碰到地面.

我再研究了你的程式, 你是直接把读取的角度作 PID 计算, 即 Input = 角度, Setpoint = setp0 预设 9 度.
即是说, 你的车子在静止时的平衡点在 9 度左右吧.  
但我地车子在 20 度左右还未可以平衡.
所以....现在只好先改良重量, 希望平衡点只在 10 度之内, 车尾跟地面有一定的距离.

就让我用你这个帖把我碰上的问题都记下, 看看是否可以一一解决. {:soso_e129:}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-30 01:14:10 | 显示全部楼层
wujingyu 发表于 2014-11-29 23:51
我测速模块烧了,今天修改了一下程序,用PWM的值取代测速码盘,效果也不错!
明天试另一方案:用6050模块的 ...

我之前也考虑过, 完全无视 PID 的平衡方法.
例如自己分断设定速度, 比如 先从角度正负决定方向, 再按角度大小决定速度.
+/- 3 度时完全停止,
+/- 3 ~ 5 度时 PWM=70 // 偏差不大, 慢慢修正
+/- 5 ~ 10 度时 PWM = 100 // 较大偏差, 加速修正
+/- 10 ~ 20 度时 PWM = 200 // 偏差再大了, 要加把劲
角度再大时, PWM = 255 // 全速修正

当然, 以上 PWM 值可以用其他方式设定, 例如 angle * 10, max 255 就是最简单 (因为一般 angle 应该要保持在 20 度之内吧)
但由於没有计算惯性的影响, 可能要来回多次才出现平衡.  不过, 就可以把程式简化得多.

楼主认为可行吗?

当我可以成功平衡後, 就会尝试不同的变化了.
而且, 我现在连测速也没用上, 还是先尝试造出最基本的平衡吧.{:soso_e117:}
回复 支持 反对

使用道具 举报

发表于 2014-11-30 09:09:51 | 显示全部楼层
大大,我想请教一个问题,我也做了一个小车,能站起来,稍微碰一下也不会倒,可是我按上面的步骤调到速度环的时候,也就是贴上所说的“使得小车能够来回走动”,这一步怎么也调不到那个效果,该怎么办啊??是不是硬件有问题啊,
回复 支持 反对

使用道具 举报

发表于 2014-11-30 15:07:39 | 显示全部楼层
改變電池位置, 並改為用兩組 2x18650 電箱, 平衡點如相中的狀態, 大約是 5 度左右, 有較大的空間作平衡.



結果是有了改善, 但修正平衡時車子波動非常大, 最後會因為向某方向的速度太大而傾倒, 之後就向這個方向衝去.
看來要想辨法修改作出平衡時的輸出, 避免因為修正時的動力太大, 變成向令一個方向大幅傾倒, 最後擺角擴大至倒下.

請問如果要減少波動, 應該如何修改?  

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-30 16:10:40 | 显示全部楼层
正想加入一些安全防衝設定時, 再三認真看看樓主的程式, 原來本身有自停的設定.
樓主本身預設 30度傾斜就即停, 只是因為我的車身比較長, 在 25度角已碰上地面了, 結果就不會停下來.
改成 20度角, 就可以防止亂衝了, 但還是達不到平衡.  
不斷來回擺動, 而且幅度不斷增大, 結果就是一邊碰地而停止.
要達至平衡, 就要每次擺動幅度減少....請問我現在的情況, 應該如果修正?

- 剛嘗試把最大車速由 255 降至 180, 避免急速轉動, 但還是不行.
- 樓主起步是 50, 或者下一步嘗試改改.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 16:39:43 | 显示全部楼层
Super169 发表于 2014-11-30 01:14
我之前也考虑过, 完全无视 PID 的平衡方法.
例如自己分断设定速度, 比如 先从角度正负决定方向, 再按角度 ...

我用香蕉电机做这个平衡小车的目的就是以后利用这个平台探索其他方式的控制算法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 16:42:44 | 显示全部楼层
车影随心 发表于 2014-11-30 09:09
大大,我想请教一个问题,我也做了一个小车,能站起来,稍微碰一下也不会倒,可是我按上面的步骤调到速度环 ...

你速度环的输入是什么?先后调整的是哪些参数?如果没发现来回走动,看看横向推一下小车,小车能否往回走呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 16:48:58 | 显示全部楼层
Super169 发表于 2014-11-30 15:07
改變電池位置, 並改為用兩組 2x18650 電箱, 平衡點如相中的狀態, 大約是 5 度左右, 有較大的空間作平衡.

...

第一步逐步增大Kp,等小车出现一定的摆动,然后再增加kd,摆动就会减小。如果你是按照这个做的,还出现向某个方向快速运动,最后跌倒,这可能是另一个原因,可见我稍后发的MPU6050-DMP输出稳定过程测试帖子。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 16:49:50 | 显示全部楼层
Super169 发表于 2014-11-30 16:10
正想加入一些安全防衝設定時, 再三認真看看樓主的程式, 原來本身有自停的設定.
樓主本身預設 30度傾斜就即 ...

这个保护角度值,根据你小车的左右倾角极限值自己调整设定
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 16:58:49 | 显示全部楼层
MPU6050-DMP输出稳定性测试
在以往调节平衡小车的过程中,发现小车的平衡角不断改变(不是物理的改变,而是测量结果的改变),造成的结果,就是小车往一边跑,如果不及时修正角度设定值,小车就自己倒下了。
上两张测试结果图


从测试结果来看,倾斜角大约需要20多秒才能稳定下来,方位角虽然在20秒左右稳定下来了,但输出始终在小幅漂移。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 17:31:05 | 显示全部楼层
本帖最后由 wujingyu 于 2014-11-30 18:10 编辑

新款的小车,做了块PCB底板,换了一个带六路光耦隔离的L298N模块,上两张图片

PCB底板上安装有:Arduino ProMini模块、MPU6050模块、蓝牙模块、低压差5V稳压、电池及充电线插座。

整机取消了测速码盘,下面安装了一组电池共底板上各部分供电,最上面的一组电池共L298N模块供电。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-30 17:47:36 | 显示全部楼层
wujingyu 发表于 2014-11-30 16:48
第一步逐步增大Kp,等小车出现一定的摆动,然后再增加kd,摆动就会减小。如果你是按照这个做的,还出现向 ...


感謝大大的熱心幫忙, 本想放一片條給大大主看, 以便說明, 但 youku 還在轉碼中....

或許我先試試改變 Kp, Kd 的值, 看看情況.
請問 "等小车出现一定的摆动" ... 是指平衡後的擺動嗎?  我的車子還未可以平衡, 已經不斷在擺動.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-30 18:13:25 | 显示全部楼层
摆动是在平衡之前,也就是开始你的小车用手扶着,松开就倒,但你逐渐增大Kp后,再松开手,就会发现它来回摆动了,这时就已经初步成功站立了,然后再逐渐增大Kd……
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 14:44 , Processed in 0.049701 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表