科普一下平衡车,平衡车制作教程

  • A+
所属分类:生活百科

基于Arduino(单片机)+MPU6050(陀螺仪)+ TB6612FNG(电机控制)平衡车

网络上虽然有很多教程,非专业人士很难通过支离破碎的教程独立完成一个平衡小车的制作。特制作此教程简单科普一下平衡车

材料及成本:

1.    Arduino                                                25元

2.    MPU6050                                                10元

3.    TB6612FNG                                                8元

4.    带轮子电机2个                                          10元

5.    固定3MM横梁2个                                          3元

6.    洞洞板4                                                  5元

7.    电池盒                                                  1元

8.    18650电池3 节                                          24元

9.    5V稳压电源                                              3元

10.    电源插头,铜柱16个,杜邦线若干,开关,单排排母若干,单排排针若干,m3螺丝螺母若干                                                                                                              7元

合计:96元(不包括邮费)

我用的ArduinoUNO R3很早以前买的才17元 虽然理论贵的与便宜的没有区别,但在实际应用中稍微贵点的电源稳压输出稍微好一点 。

MPU6050,TB6612FNG种类很多,请自选,基本差不多。

带轮子电机2个,在选择电机上耽误很长时间,理论山应该选择扭矩大的直流电机,为节约成本选择次点击很便宜,我7元搞定。

此电机有缺陷,在平衡车静止时有1度左右的偏差,导致平衡车稳定性差。横梁没花钱从废光驱上拆下来的,也可以使用做车模的3mm钢轴。

洞洞板尽量要平整的,同时要考虑电池盒的大小,18650电池我从废笔记本电池拆解的,笔记本电池报废后,

仍然可以用于手电遥控车,只是笔记本使用时供电不足。杜邦线尽量质量好些,否则会出现莫名奇妙错误。

其他随意

工具:
电烙铁,焊锡,电钻,m3钻头,电脑,胶枪,螺丝刀,双面胶,数据线

基本概念:
1.    PID
PID控制有专业书籍讲解,本人仅讲述自己通俗理解,欢迎指正。

科普一下平衡车,平衡车制作教程

上图就是PID算法原理图。

P=比例,I=积分,D=微分

简单都说从设定点输入——经过PID计算——输出——返回设置点在计算,如此循环下去,直至有跳出或终止命令。

用人话说就是我设定需要20度温度,温度计显示10度,差值10度经过PID计算输出个值,这个值用来控制加热功率大小,

然后继续测量温度与标准值的差别,再经过PID计算,输出个值控制加热功率大小,不断重复重复,直到温度计与设定值一致,输出数值停止加热。

P的作用用来控制精度,比如设定值为20度,温度计为19.99度,只有0.01差值,P可以设置为100,先当于100*0.01=1,

把误差值扩大100倍,也可以1000*0.01=10,把误差值扩大1000倍。(P过高,系统容易超调,可以根据误差大小随时设定P值)

I有两种积分,位置积分和增量积分,我的平衡车仅使用增量积分。增量积分主要作用时消除静态误差。

当P值可以基本稳定平衡车时,你会发现,小车会有抖动,I就时消除这部分静态误差的。增量积分误差仅与当前、前一次和前前次误差误差相关。

D是误差变化率,它预测下次误差多少,容易引起震荡反正我没用。

输出值=P*误差值+I*近三次误差+D*预测误差值

PID参数值在矛盾中寻求平衡值。

2.    卡尔曼滤波

理解不深,借用网络答案。

通俗的来说,卡尔曼滤波就是平均的一种更优算法(我们知道求平均是一种比较简单的滤波)。

例如,对于x_{k} 和x_{k-1} 2个时刻的状态,我们可以用其平均来进行初步滤波,即

{x_{k}}  = 0.5*x_{k} + 0.5*x_{k-1} 这其中0.5是一种很简单的权值,平等的考虑了x_{k} 和x_{k-1} 2个状态的值。

但卡尔曼滤波的权值是根据系统状态和噪音计算出的最优权值K:

{x_{k}}  = K*x_{k} + \tilde{x_{k-1}} 所以用其滤波,在线性系统中是最优的。

3.    电机反馈

这个我没做,仅有个码盘,后期可以通过码盘测量小车速度。仅应友人做直立平衡即可。测速很简单如有需要后期可以加入。

调试过程:

调试过程很简单,只需要确定P值。需要注意的是,直流电机在不同电压输出功率不同,建议电机与电源之间加入稳压模块,

否则会因为电池工作电压下降造成P值的变化。

电机控制是0-255之间的数值,程序中有串口输出,需要连接电脑查看输出参数及平衡车反馈,

来决定P值大小(每辆车重心和精度不一样需要耐心调节)。我设定平衡车偏移10度,就停止调控,

也就是说0-10度的便宜,对应0-255的数值比例。

基本都可以调平衡,只是不是太稳定,调平稳简单的说就是没10毫秒测一下X角度,控制一下电机转动,

如果没变化就是电机输出力度小,把p调高,如果X轴一下由负变正那就是P值太大,在某一区间调整即可。

P值调整后就可以同理调I值。

D值我没调。

因为我平衡车有1度左右的框量,很不精确,所以当X轴基本能维持平衡时,就放弃调整,基本可以满足在某一秒可以保持平衡。

最佳方案小车在不加电时,能稳定的直立。这样就可以保持长时间甚至一直直立。

我所用的这个库有专业的自动调节库,我没有使用请自行搜索。

代码模块化:
为方便调节pid值,主循环已加入可以调节pid值的函数。主循环就一个判断偏移角度是否大于10度没做函数化。

可选择改进:
关于轮胎双面胶,因为电机+轮胎才3.5元,轮胎是塑料的软胎,车体也不是很重(重了电机又带不动),

就相当于塑料可乐瓶在瓷砖上打滑,基本没有摩擦力,只能上双面胶,据说硬的实心橡胶轮胎效果很好,可自己买的轱辘怎样也得用上。

关于重心问题,以前看过一篇文章(可惜找不到了),并不是重心低就容易平衡,重心相对的上移,可以加长控制力矩。

做个不恰当的比喻口红你很难让它直立于手指上,但你把口红重量的木棍或没有口红重的筷子直立于指尖相对容易,因为控制力矩长了。(请指正)

直流电机换步进电机电机问题,步进电机很多优点,扭矩大,精准,就一个缺点贵。不适合我那个在校小同学,我主要是告诉他原理。

我倒是用步进电机做了个激光雕刻机。主要科普,懂了原理,换伺服电机效果会更好。

关于最小系统,arduino是开源硬件,只需要芯片+晶振+电容就可以做最小系统(以后可以做)。

我推荐先用现成开发板,第一很便宜20元左右,第二有串口芯片,可以方便与电脑通信,

第三UNO板子仅仅有电源稳压和焊接好的引脚+Arduino最小系统,网上还有电路图,

对于新手这板子足以(我雕刻机也是这个板子做的,可以重复利用)。单独arduino芯片有的没有引导,对于新手越简单越好。

推荐课程:
仅推荐入门课程,专业的太高深。

某工坊网站有arduino精华控制实例,都很简单,代码注释全面,学会里面40个实例,基本算是半只脚踏入单片机大门。

想精进请系统学习单片机专业课程。

还有个建议,就拿PID算法来说,其实运放+电容+电阻就可以实现,就是说硬件也可以完美的实现这个算法,

就是制作成本高,改动麻烦,一般人很难有条件。所以我觉得会单片机编程仅能算程序员,还有种高大上的职业,电气工程师。

TB6612FNG(因为去广告只能显示部分图片)

科普一下平衡车,平衡车制作教程

5V稳压

科普一下平衡车,平衡车制作教程

MPU6050

科普一下平衡车,平衡车制作教程

科普一下平衡车,平衡车制作教程

硬件组装:

科普一下平衡车,平衡车制作教程

科普一下平衡车,平衡车制作教程

科普一下平衡车,平衡车制作教程

科普一下平衡车,平衡车制作教程

科普一下平衡车,平衡车制作教程

科普一下平衡车,平衡车制作教程

软件:
请搜索arduino上传数据方法。(附源代码)

总结:
1.    本电机轱辘摩擦力不够一定一定将轱辘粘贴双面胶然后测试,本人因此耽误了1个星期,始终不能保持平衡,

做了大量跟踪最终搞明白是摩擦力不足。

2.    PID算法很简单,基本就是测定现在状态,和你给出的平衡值比较,然后按公式计算出应当输出的值,

输出给电机,然后重复重复再重复。PID分位置积分和增量积分,平衡车一般使用增量积分。请自行搜索区别,还是很大的。

3.    每一个小车因制作水平不同,重心及平衡点不一样,请慢慢调试。基本都可以站立,本人制作大概用了2星期,包括买零件,调试,很简单。

4.    MPU6050输出使用卡尔曼滤波,对比二阶滤波相差不太大。简单的说MPU6050输出很不稳定有噪声干扰,

滤波就是让MPU6050输出看起来像是线性输出,输出结果波动尽量小。

5.    所用的库都可以搜索。

6.    平衡车相对简单,国内有比赛,不过成本费用太高大概1000元左右。后期可以加入摄像头或红外寻迹,也可以尝试diy4轴无人机。

图片引用自网络