arduino平衡小车—(五)PID算法-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4787|回复: 0

arduino平衡小车—(五)PID算法

[复制链接]
发表于 2017-11-8 13:33 | 显示全部楼层 |阅读模式
五、PID算法


控制相关的软件函数包括:
1.   AngleControl:小车倾角计算函数。根据采集到的陀螺仪和重力加速度传感器的数值计算小车角度和角速度。如果这部分的算法由外部一个运放实现,那么采集得到的直接是小车的角度和角速度,这部分算法可以省略。该函数是每5毫秒调用一次。

2.   SpeedControl:小车速度控制函数。根据小车采集到的电机转速和速度设定值,计算电机的控制量。该函数是50毫秒调用一次。

3.  chaoshengbo:超声波函数。将超声波距离获取频率平均分配到2步5毫秒的控制周期中。

4.   MotorOutput:电机输出量汇集函数。根据前面的直立控制、速度控制和方向控制所得到的控制量进行叠加,分别得到左右两个电极的输出电压控制量。对叠加后的输出量进行饱和处理。函数调用周期5毫秒。在此请大家注意速度控制量叠加的极性是负。

5.  SetMotorVoltage:PWM输出函数:根据两个电机的输出量,计算出PWM控制寄存器的数值,设置四个PWM控制寄存器的数值。函数调用周期1毫秒。
以上9个函数都是在1毫秒中断服务中进行被相互调用的。下图显示了这些函数之间的调用与参数传递关系。在个函数附近也表明了调用的周期。



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-1 00:52 , Processed in 0.123777 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表