前言:在IT行业摸爬滚打了好几年,好不容易从学生熬成了社会人士,通过自己的不断努力又从社会人士熬成了学生。这几年的修行,同道博友给了我很多的帮助,很早之前就有写博客的想法,想借自己绵薄之力来回馈一下默默奋斗的你,但是一直拖着,最近闲暇无事,才真正提笔,愿能够对你有用。

上周末去苏州玩儿,同行小伙伴的侄女骑着一辆小米平衡车,运用自如好拉风的感觉。此时我的职业病又犯了,思考了一下原理,觉得不是很难,就是一个陀螺仪姿态加几个PID的事情(专业毒已病入膏肓)。平衡车的制作冲动从这一刻迸发,回家之后事不宜迟直接着手去做,这都要归功于闲暇的暑期。

通过网上查资料发现,两轮平衡车的资料并不多,大多都是飞思卡尔比赛的直立小车资料,但是两者有一定的联系,由于飞思卡尔资助的原因,限制了器件的选型等,而我们业余的选择是广泛的。我选择了当前主流的STM32F103为主控,成熟的MPU6050陀螺仪加速度计,车架让一位同事帮忙组装,很快平衡车成型,心情有点激动,忍不住要上一张图。

细心的同事帮我加了配重,非常感谢我的热心朋友。(PS:珍惜身边的朋友,他们都是缔造你生命意义的人!)哈哈,这个小车看上去还是有模有样。加配重的原因是让车架的平很轴接近电机轴,也就是车架在水平时,车前后的质量分布基本一致。说的有点抽象,换句话说就是找车架的平衡位置或者平衡角度。

好了,废话说了一大堆,接下来进入正题。

首先从控制板说起,借用以前公司的一个控制板,主要用到的模块有降压模块,PWM与编码器接口,IIC接口,SPI接口TFT屏幕。由于主控板没有集成MPU6050,用了一个外部的小模块,使用IIC接口。电池使用14.8V锂电池,电机驱动是TI的LMD18200,与L298比较相似,但性能更彪悍一些。电机是带正交编码器的减速电机。基本硬件就是这些了,其实这种配置已经算得上豪华配置了,但是都是借用的没有花钱(硬件烧钱,入坑谨慎)。

其实吾理小子(本人)是做硬件的,在这里的硬件都是比较基本的,而且市面上很容易买到,就不多啰嗦了。

下面开始说控制思路,我觉得开始做之前一定要考虑清楚控制思路,否则就是盲目上路,事倍功半。平衡车实际会涉及到三个PID环,分别是直立环(角度环)、速度环、转向环。其实一般都叫直立环,但是我更愿意把这个理解为角度环,因为这样理解的话更容易和反馈量结合起来。

逐个介绍每个环的作用:

直立环,也就是角度环,通过陀螺仪得到车架的姿态角度,通过当前角度与目标角度比对的差值进行一定的计算控制轮子,以保证车架维持在目标角度附近。总结一句话来说就是直立环保证车架站起来并且稳住;

速度环,速度环是直立环的辅助调节,直立环能够保证车架直立,但是不能保证车直立的速度为零,速度环就可以保证车架保持直立的同时控制此时的速度;

转向环,控制车架的方向。与直立环用到的反馈量不一样。

综合起来的效果就是保证车架直立的同时车的行走速度与方向可控。这就是三个环的综合效果,其中直立环是核心,其它两个是辅助。

其实平衡车的PID调试过程中,还是和传统的位置式与增量式PID有一定的区别,而且区别是致命的,不容小觑!那么具体区别在哪里呢,继续看下文。

在讲解具体的编程之前,首先说一下我们的老大哥——陀螺仪MPU6050。为什么说他是老大哥,因为整个姿态的调节反馈量都来自于他。我不想夸它是第一款集成的6轴陀螺仪与加速度计,也不想夸集成了DMP库,更不想夸它价格便宜简单易用……我想说说陀螺仪与加速度计的测量的物理量。说到这里,可能有人会嘲笑小编好傻,陀螺仪不就是测姿态角的吗还用说!但是,小编刚开始用陀螺仪的时候也是这么认为的,而且把别人的代码拿过来移植到自己的工程中能正常跑,就很骄傲,实际上没有那么简单,你不相信的话,有一天你也会回头来重新认识一次老大哥,相信吾理小子

MPU6050集成了陀螺仪与加速度计,陀螺仪测量的是世界坐标系中各轴的角速度,加速度计测量是世界坐标系中各轴的加速度,这个加速度是加速度的总和包括重力加速度。那么角度是怎么测量的呢?角度是通过对角速度的积分得到的。

明白了这些的话,接下来对陀螺仪的使用会更加如鱼得水。

吾理小子移植正点原子的MPU6050程序,使用DMP库得到姿态角,数据还是比较好的。通过初始化PWM波,车子完全在吾理小子的控制之下了。至此,前期的准备工作已经全部就绪,接下来就是疯狂码代码、看现象、改数据、看现象如此反复,直到达到自己想要的结果。

吾理小子的第一篇博客也要画上一个句号了,天上一脚、地上一脚毫无逻辑的写了一上午,还请各位道友不喜勿喷,下一篇接着说具体编程,并且附上相关代码,各位小伙伴期待吧!

浅谈两轮平衡车的控制原理相关推荐

  1. 玩转OpenHarmony PID:教你打造两轮平衡车

    目录 简介 硬件配置资源 原理概括 PID算法介绍 两步搭建样例工程 关键算法讲解 直立环控制算法: 速度环控制算法: 转向环控制算法: 总结 相关链接 简介 此次为大家带来的是OpenAtom Op ...

  2. 中科深谷开源智能两轮平衡车

    中科深谷开源智能两轮平衡车 中科深谷开源智能平衡车,集多学科交叉融合为一,具备自平衡,行走控制,无线通讯和4G远程控制,视觉识别跟随等功能,接口丰富,扩展性强,可支持多台调度控制. 提示:以下是本篇文 ...

  3. 基于STC单片机的两轮平衡车设计

    给大家传福利了..后续继续共享基于Arduino/安卓Android/树莓派raspberry等平台的两轮车设计 这是我前年暑假做的一个小项目,今年拿出来整理了下当毕设了(当然毕设里添加了许多其他元素 ...

  4. stm32两轮平衡车资料

    [MCU实战经验]+基于stm32两轮平衡车制作:http://www.stmcu.org/module/forum/thread-582883-1-1.html 转载于:https://www.cn ...

  5. 直立两轮平衡车核心代码

    两轮平衡车相关算法 卡尔曼滤波函数 /************************************************************** 函数名称:float KalmanF ...

  6. stm32两轮平衡车项目资料 两轮平衡车原理图

    stm32两轮平衡车项目资料 两轮平衡车原理图+PCB+程序 现有:693651816272834lin昵称好难设置

  7. stm32两轮平衡车项目资料 两轮平衡车原理图+PCB+程序

    stm32两轮平衡车项目资料 两轮平衡车原理图+PCB+程序 YID:943651816272834lin昵称好难设置

  8. stm32两轮平衡车项目资料 ,两轮平衡车原理图+PCB+程序

    stm32两轮平衡车项目资料 ,两轮平衡车原理图+PCB+程序 15697661859tb

  9. K60平台下的两轮平衡车

    基于飞思卡尔K60的两轮平衡车 一.总体设计 二.电路设计篇 三.软件设计 四.实物测试 五.改进和展望 六.附录 一.总体设计 此系统用到的功能模块都是集成好的,这里只设计了一个底板来连接各个硬件模 ...

最新文章

  1. java 流 下载文件_java 流实现文件下载问题
  2. 三年深入探索,网易云信让在线医疗做到技术“在线”
  3. 微软亚研院:如何看待计算机视觉未来的走向?
  4. c语言多线编程程序,C语言之多线编程 来看看?
  5. Laravel生命周期
  6. 2020中国淘宝村研究报告
  7. oracle java vm,我可以使用Oracle Java 7 HotSpot VM安装DCEVM吗?
  8. 计算机视觉是否已经进入瓶颈期?
  9. 分享这几个在线语音转文字的方法,快快收藏好
  10. STM32入门教程第一讲
  11. 笔记:在本实验pix2pix比AAE差在哪
  12. 如何抢功,甩锅,立于不败之地???
  13. 高德地图API定位失败 浏览器定位 IP定位
  14. 怎么解c语言逆向编码,逆向还原C语言代码 练习1
  15. [安卓相机1]简单小Demo
  16. 数据结构PTA 进阶实验5-3.2 新浪微博热门话题
  17. 了解node.js模块化和npm包
  18. 机器学习必备算法之(一)逻辑回归(logistics regression)及Python实现
  19. windows xp下如何添加开机自启动的程序
  20. 穷游焦作周边之大沙河

热门文章

  1. 破解通达信接口是违法的吗?一分钟为你科普
  2. 希尔贝壳荣获 “悟道之巅——AI创新应用大赛”主赛道优胜奖
  3. 身份证正反面识别,身份证扫描识别,二代身份证 OCR 识别,OCR 极速识别身份证所有信息正反面均可。离线无需联网,极速秒扫。
  4. python编程大数据分析_大数据分析Python学习技巧
  5. 函数恒成立问题与参数的取值范围_高考中恒成立问题巧解方法
  6. 基于OpenCV训练口罩检测数据集并测试
  7. stm32f4外设学习篇(代码集合)
  8. SLAM技术学习笔记
  9. 【Echarts】全国大学信息可视化
  10. 【零基础Eviews实例】00了解多元线性回归模型常见检验