1、当小车不平衡时是这样的
为了让小车静止在中立位置我们给小车一个外力,使得它与合 力的方向相反,那么就可以让小车回复到平衡位置了。小车的动力来自与底部的 两个车轮,这个外力只能由车轮给出,小车作变速运动时,车体自然会受到一个力的作用。
2、我们给小车一个加速度
对小车进行受力分析𝐹 = 𝑚𝑔𝑠𝑖𝑛𝜃 − 𝑚𝑎𝑐𝑜𝑠𝜃,若𝜃很小,那么可以认为 𝑠𝑖𝑛𝜃 = 𝜃,𝑐𝑜𝑠𝜃 = 1,有𝐹 = 𝑚𝑔𝑠𝑖𝑛𝜃 − 𝑚𝑎𝑐𝑜𝑠𝜃 = 𝑚𝑔𝜃 − 𝑚𝑎,假设a=𝑘1𝜃,那么𝐹 =𝑚𝑔𝜃 − 𝑚𝑘1𝜃。当𝑘1 > 𝑔时,回复力 F 的方向就与倾斜方向相反了,此时小车会回复到平衡的位置。如果小车不能准
3、确地到达中立位并稳定下来,那么小车会一直做往复运动。直到找到合适的位置才会停下。所以为了减少平衡的时间,我们增加了额外的阻尼力(来减小K1带来的影响),增加的阻尼力大小与角速度(𝜃')成正比,方向相反,比例系数设为𝑘2
所以𝐹 = 𝑚𝑔𝜃 − 𝑚𝑘1𝜃 − 𝑚𝑘2𝜃' = 𝑚𝑔𝜃 − 𝑚(𝑘1𝜃 + 𝑘2𝜃'),𝜃'是角度的微分, 即角速度。所以要给小车的力为F1=𝑚(𝑘1𝜃 + 𝑘2𝜃'),ma=𝑚(𝑘1𝜃 + 𝑘2𝜃'),可得小车加速度控制算法:𝑎 = 𝑘1𝜃 + 𝑘2𝜃'。即给小车一个加速度 a,只要保证𝑘1 > 𝑔,𝑘2 > 0 就可以令小车保持在平衡位置。
4、如何控制小车的加速度呢?电机的转速是通过改变在其上的驱动电压大小来实现的(即PWM值)
5、𝑎 = 𝑘1𝜃 + 𝑘2𝜃',我们解释一下变量,a就是我们要求的值(PWM值),𝜃(角度差)=我们所期望的角度(这里为90度)-当前的角度值,𝜃'(角速度)我们可以从MPU6050中获得,𝑘1和𝑘2是我们要调节的参数。
6、我们通过获得的PWM值来调节转速
7、下面是代码部分:
