最近做了个九轴的传感器,利用之前博文的卡尔曼算法得出了传感器的三轴的姿态角。想利用这个传感器来做自平衡智能车和四轴飞行器,这篇博文主要讲诉两轮自平衡车的制作,由于两轮自平衡车的详细内容之前讲过了,这里就主要讲控制算法,涉及两轮平衡车的角度平衡控制以及速度控制。
个人原创,版权所有,转载请注明出处,并保留原文链接:
https://www.embbnux.com/2015/06/16/avr_self_balancing_car_controller/
一、 新的两轮平衡智能车
这里先展示一下我的新车,变成大轮的了,哈哈:
二、平衡控制算法
在用到平衡控制算法之前需要你能获得平衡车的姿态角,可以用加速度计和陀螺仪进行传感器融合得到,这里我用我的九轴传感器利用卡尔曼算法来得到三轴姿态角。
平衡控制框图:
其中平衡角为人工设定,可以实验测得车子的平衡角,比如0度,通过pid运算控制电机的运动,进而控制整车的角度。
三 速度控制算法
刚才的平衡控制只能控制车子不倒,还不能控制车子的速度,所以现象是车子会前后运动,但是不倒。这里也可以发现车子的速度其实是由车子的倾角决定的,车子角度向前倾,车子就往前跑,来保证不倒。所以我们控制速度只要控制车子的角度就可以了。为了做反馈控制,这里还需要知道车子的速度,所以需要个编码器或者码盘来测车子的速度,这里我直接用一个512线的码盘来得到电机的速度。
所以结合刚才的角度控制,现在的控制框图如下:
设定速度为认为输入,比如设定速度0,则小车子在平衡角的位置静止,输入-5则车子往后走。
所以设定好平衡角和输入速度0则小车子就能稳定的站住了。
这里我只用了pid控制,其实还有很多的控制算法,比如模糊控制等,欢迎探讨。比较重要的是两个控制环的pid参数要调好,不然还是不稳定的。先调试平衡控制的pid,调好再调速度控制的pid.