2009 (2)
2010 (1)
2014 (58)
2015 (74)
2016 (71)
2017 (67)
2018 (37)
2020 (57)
2021 (47)
2022 (69)
2023 (45)
原理:http://tieba.baidu.com/p/3653812543
http://makezine.com/projects/arduroller-self-balancing-robot/ http://www.51hei.com/bbs/dpj-49869-1.html bluetooth http://www.51hei.com/bbs/dpj-32234-1.html
http://forum.eepw.com.cn/thread/269607/1 http://forum.eepw.com.cn/thread/273140/1 http://www.51hei.com/bbs/dpj-48038-1.html books http://www.51hei.com/bbs/dpj-49814-1.html
选择方案,主控STM32,传感器Mpu6050,采用四元数互补滤波进行姿态解算(求角度),国产直流减速电机,电机驱动用TB6612FNG,体积比L298N小效率高。电池用3S航模电池或3x18650.
控制方式通过串级PID进行控制,预计先加上角度环和角速度环。PID调试的时候,用Nrf2401无线收发来进行实时参数整定,同时也作为遥控功能。预计有时间就加上蓝牙,可能可以用手机app控制,还有一个体感遥控,这个看情况是否加上,嘿嘿。基本思路跟做四轴飞行器也差不多,准备开搞~
加速度传感:http://playground.arduino.cc/Main/MPU-6050
http://diyhacking.com/arduino-mpu-6050-imu-sensor-tutorial/ http://playground.arduino.cc/Code/PIDLibrary
电机:https://item.taobao.com/item.htm?spm=a230r.1.14.21.BtXTI1&id=41433521806
程序思路如下:STM32通过读取传感器数据,做滤波和姿态计算,然后通过串级PID进行控制;同时接收遥控指令,做出前后左右以及旋转的动作。下面开始分步介绍:
1)MPU6050采用I2C总线驱动,楼主使用模拟I2C,速度很快,100多个us就能读完传感器数据,然后进行滤波+姿态解算,得到小车的角度信息。
数据处理和PID控制就是自平衡小车的核心了。我们对加速度计做低通滤波,对陀螺仪做滑动滤波,过滤大部分由震动引起的数据噪声。 然后用四元数来计算姿态,最后转换成角度(欧拉角),就能用于控制了。初次接触MPU6050的网友可能对数据解算比较陌生,建议看一下下面这个精品贴: 【讨论帖】姿态解算相关知识储备
关于MPU6050的驱动:: stm32f103运行mpu6050源码
为什么选择6050呢,因为它内部集成了一个硬件算法,能够直接输出表示姿态的四元数,我们只需要把这个四元数用公式转化成角度(欧拉角),就能用于控制了,是不是很方便呢!前期调过姿态解算,后期再慢慢研究姿态解算的问题。 公式如下:
view plaincopy to clipboardprint?
实际上我们用到一个角度即可
关于MPU6050的DMP功能,请看:传感器驱动实验(DMP测试,串口回传欧拉角及四元数,附视频,工程文件)(欧拉角万向锁视频)
2)串级PID相关介绍:串级PID----代码+调参
3)Nrf2401通讯实验:NRF无线通讯实验(附视频,工程文件)
4)电机控制,TB6612是双驱动,也就是可以驱动两个电机 。
7、调试流程
程序对应了一个MWC开源飞控的上位机,简单实用,主要调试工作通过上位机即可,下面开始讲解:
1,把遥控器的串口1链接到电脑上,小车和遥控器通过2401进行半双工无线数据。传输打开上位机,即MultiWiiConf文件夹下的MultiWiiConf.exe。下载地址:MultiWiiConf.rar
要想运行MultiWiiConf.exe,得先安装JAVA虚拟机。Multiwii 的GUI程序需要JAVA虚拟机的支持,需下载安装:http://java.com/zh_CN/download/manual.jsp?locale=zh_CN
(如果你的电脑是win7 64位的系统,安装了JAVA虚拟机后GUI仍然运行不了,那你就需要到C:Program FilesJavajre7bin找到并复制javaw.exe,然后粘贴到C:WindowsSysWOW64这个文件夹下面,再重新运 行GUI即可)成功运行则出现如下界面,会显示出PID参数,遥控数据,姿态,传感器数据等等,同时可以通过上位机进行PID参数设置。
2,加速度计和陀螺仪(MPU6050)由于安放的位置,是有零偏的,带着这个零偏去做姿态解算,就会造成解算误差,因此要去除这个零偏。通过上位机可以处理零偏问题。
A、校准加速度计
具体操作:将小车贴墙放置,这样一来就保证了小车是竖直向上的。遥控器连接电脑,运行GUI,点击CALIB_ACC,你会发现ACC的pitch、roll、Z三轴输出值会变成0,0,512左右的值,则表明校准完成。
B、校准陀螺
具体操作:在校准了加速度计基础上,点击CALIB_MAG,GYRO的pitch、roll、Z三轴输出值会变成0,0,0左右的值,则表明校准完成。
C、调整PID参数
具体操作:将鼠标定位在待调整的PID参数上,按住鼠标左键左右移动鼠标即可调整该数值,很为奇特。
ROLL对应的PID参数是外环参数,PITCH对应的PID参数是内环参数。慢慢调参数即可。调参方法详见:串级PID----代码+调参
9、个人总结
首先,此次自平衡小车制作,耗时较短,还有N多功能没加上。近期有很多事,考虑四月份后加上新功能,敬请期待。参数多试几次就出来了,效果还可以,有时间再调调。
有以下几点收获也体会,跟大家分享下:
1,楼主用的是11.1V航模电池,放电倍数20C。经过稳压后给电机驱动和STM32+MPU6050供电。不清楚是否较差的电池会对传感器数据造成影响。反正这个航模电池没问题。
2,角速度要滤波,实际调试的时候,看到上位机的角速度震动很大,这样子就给控制造成了很大震荡,经过滤波后,控制效果较好。
3,有一个上位机真心方便,点几下上位机,参数就设置好了,功能强大,还能分析传感器数据。
4,小车的电池要固定好,不能晃动,最好在中心,这样调试比较方便容易。
5,小车十个很有意思的项目,有坛友回复说在小车上装个摄像头,这想法很棒,后期装一个试试,看看不同视角能拍到啥有意思的~