模块化迷你两轮平衡小车


很多人对平衡车的相关技术很有兴趣,但是在实际搭建平衡车或者购买套件时会发现其实成本很高,动辄需要300~400的价钱,而且搭建出来的东西块头很大,做好后的存放是个问题...


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


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


  先上个全家福:

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

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


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




其实东西不多,

一个核心板,

一个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算法产生的结果作为参数输入到这里就可以实现控制了。

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

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

做这个小车还是花了些时间,目的是希望给后来者多填坑,小车目前还有很多不足需要改进,由于选型问题,没有找到合适的码盘测速,所以目前这个小车还没有车轮的速度反馈,如果解决这个问题,小车的性能会更上一层楼。

 希望大家能给我多多提出意见,如果有什么疑惑,我也会尽可能帮助解决~


差点把资料的事情给忘记了,我的这个小车的所有相关资料都放在github上面,地址:

  https://github.com/bigbearishappy/BBear_balance_car

如果觉得还行的话给我点个星星,如果觉得做的不好的话也希望大家能够帮我一起改进~

谢谢~~

来源:http://www.geekfans.com/thread-80472-1-1.html (点击阅读原文直接进入)

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

简述80C51中断响应的过程。不同的中断源的中断入口地址是多少?单片机一旦响应中断请求,就由硬件完成以下功能:
(1) 根据响应的中断源的中断优先级,使相应的优先级状态触发器置1;
(2) 执行硬件中断服务子程序调用,并把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源;
(3) 清除相应的中断请求标志位(串行口中断请求标志RI和TI除外);
(4) 把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC,从而转入相应的中断服务程序。 (5)中断返回,程序返回断点处继续执行。 外部中断0(INT0) 0003H定时器T0中断 000BH外部中断1(INT1) 0013H定时器T1中断 001BH串行口中断 0023H

生成海报
点赞 0

thePro

我还没有学会写个人说明!

相关推荐