之前自己就走这条路做过一个平衡小车,为了填坑,我专门花了不少韶光进行选型,末了在经由三次PCB打样后终于有了一款非常小巧的平衡小车,这个平衡小车在实现了平衡的条件下做到了非常小的尺寸以及高度的模块化设计,其整体尺寸仅为8cm4cm4cm;其模块化设计做到了将传感器,电机驱动器,红外遥控吸收器,以及马达和电池都是可以拆卸的模块。

DIY模块化迷你两轮平衡小车

其次便是关于代码和资料方面,感谢很多网友的无私奉献,他们的资料给了我很大帮助,现在小车已经差不多完成,我也在这里分享给大家。

先上个百口福:

东西大小可以通过尺子看出来,掌握方面采取的红外遥控~

刚才提到了模块化的问题,在设计中,我尽可能的将能够安装的模块都采取模块化办法处理,这样就算往后不用小车了,它的很多模块都是可以放到别的地方连续利用的。

我专门把所有东西都拆开后照了张照片:

实在东西不多,

一个核心板,

一个mpu6050陀螺仪加速度计,

一个电机驱动,

两个无刷电机减速马达,

两个轮子,

一个红外遥控器,

一块锂电池,

一个红外吸收管

接下来给大家看看电路事理图:

由于是截图,有点模糊,如果须要源文件,我待会儿放在附件里面~

事理图没什么难的,最小系统+电机掌握+电机电源

绘制时细心加耐心就没什么问题,不然就会和我画初版时一样吧tx和rx给画反了...

PCB图:

各位大神瞥见我这缭乱的布线就不要吐槽了,毕竟不是电子专业出身,这些工具什么的都是自学的,如果哪位大神有关于PCB方面比较好的书本推举我学习学习我会非常乐意接管的,嘿嘿~

上面是关于硬件设计部分,接下来是软件了:

软件流程:

软件部分分为两个大部分:

1数据部分

数据部分环绕MPU6050传感器展开。
分为数据获取,滤波,数据处理

1.1数据获取

STM32通过I2C和MPU6050进行通讯,个中涉及到根本的I2C通信协议实现,在I2C根本上,涉及到MPU6050各种参数的设置,比如加速度的范围等。
不同的设置获取到的数据会不一样并且精度也不一样。

1.2滤波

在获取到原始数据后经由大略转化变为角度,但是这个数据是不准确的,因此须要滤波处理,由于小车比较大略,滤波就用的是互补滤波。
这样就能获取比较精确的数据的了。

1.3数据处理

在滤波前须要对获取的原始数据进行处理,这个须要一点点物理知识,还有一个便是角速率的积分操作,这个须要利用定时器来完成。

2掌握部分

掌握部分紧张分为PID算法,电机驱动

2.1PID算法

PID算法便是比例,积分,微分这三个变量相互浸染末了输出到掌握器上去。
刚开始时以为须要P就够了,末了创造效果不好,在加入了D之后,效果就很好了。

2.2电机驱动

电机驱动紧张设计的知识便是PWM波的掌握,STM32有干系的库操作,只须要按哀求设置好就OK了。
然后将PID算法产生的结果作为参数输入到这里就可以实现掌握了。

软件部分涉及的东西不多,就算是单片机新手,花功夫肯琢磨也不会用多久韶光。

七七八八说了那么多,没有视频说个毛线,在这里录了个小视频,让大家见笑了:

做这个小车还是花了些韶光,目的是希望给后来者多填坑,小车目前还有很多不敷须要改进,由于选型问题,没有找到得当的码盘测速,以是目前这个小车还没有车轮的速率反馈,如果办理这个问题,小车的性能会更上一层楼。

希望大家能给我多多提出见地,如果有什么迷惑,我也会尽可能帮助办理~

以上图文内容均是EEWORLD论坛网友:大熊现在很幸福 原创,在此感谢。

欢迎微博@EEWORLD

如果你也写过此类原创干货请关注微信公众年夜众号:EEWORLD(电子工程天下)回答“投稿”,也可将你的原创发至:bbs_service@eeworld.com.cn,一经入选,我们将帮你登上头条!

与更多行业内网友进行互换请上岸EEWORLD论坛。