这道题总的来说是比较简单的,在这里只做到控制帆板到指定位置。
怎么样通过对风扇转速的控制,来调节风力大小,来改变帆板转角。也就是说给你一个角度值,你用风扇吹到那个角度值。控制风力大小,这个就需要控制PWM的大小了。如果我们知道吹到哪个角度值,所需要的PWM是多大,不就可以了吗?
结果非常尴尬,60度的PWM试不出来,这个是因为装置的结构决定,导致它在这个角度非常不稳定,不好试出来这个PWM。
这个时候应该怎么办?这个就需要PID调节了,这个相当于,PID帮我们试出来这个PWM应该是多大。
我们需要了解什么是PID
这里我推荐一个视频,外国的视频,目前我看过最好的,非常清晰,B站上的。
我们知道什么是PID了,他的公式是什么呢。
下面推荐看一下这个CSDN的一个博主讲的,非常不错,了解公式是怎么来的。
我们现在把他的公式变成代码
Kp、Ki、Kd都是PID的系数。
红色相当于第一部分的比例,现在的误差
黄色相当于第二部分的积分,误差的累积。
蓝色相当于第三部分的微分,现在的误差减去上一个误差。
绿色相当于我们的公式了,就是把他们加起来。
非常好理解,这个是绝对式PID,我们现在看一下,另一种—增量式PID
Kp、Ki、Kd都是PID的系数。
红色相当于第一部分的比例,现在的误差减去上一个误差。
黄色相当于第二部分的积分,现在的误差。误差的累积。
蓝色相当于第三部分的微分,现在的误差减去两倍上一个误差,加上上个别的误差。
绿色相当于我们的公式了,就是把他们加起来。
我们从公式上看,增量式PID只需要现在的误差,上次的,上上次的,没有像绝对式那样误差的积分,个人觉得增量是比较合适的,发现绝对式不太好调参数,我觉得都可以试一下吧。
现在看一下我们的PID执行函数
红色是我们的当前值和目标值。
黄色是PID系数。
蓝色是要执行的PID算法。
绿色就把计算的PID值输出。
这样子的话,我们接下来需要做的是采集当前角度值和做好PWM的输出。
怎么采集角度值呢?
使用角度传感器啊