树莓派用逆向设计和回归算法估算PWM

树莓派用逆向设计和回归算法估算PWM,第1张


大家在使用直流电机时经常遇到一个问题,那就是无法准确的控制他的转速。当然很多高手义无反顾的用上了码盘啊,霍尔啊等测速装置再加上PID啊啥的来完成设计。这种设计方法固然没错,但是也有一些人手头没有那么多资源或者暂时没有完成这整个工作的能力。我就见过一位同学无奈之下采用查表的办法来判断在需求什么样的速度时给多少PWM。这里我教各位一个小窍门。

首先,将电机接上PWM,记录下在各PWM数值时,电机的转速。并列表记录,如下表:

树莓派用逆向设计和回归算法估算PWM,第2张

我随便填几个数,以便下一步演示。数据当然是越多越好,稍有误差也关系不大。随后我们将数据输入Microsoft Office EXCEL中。然后选中两行,点击菜单栏中的Insert ,然后选择Scatter,最后在d出菜单后悬着那个有点和曲线的图标,来生成曲线。

树莓派用逆向设计和回归算法估算PWM,第3张

从我随意输入的数据中,我们可以得到一个这样的曲线:

树莓派用逆向设计和回归算法估算PWM,第4张

点击曲线,然后在右键菜单中选择Add Trendline…,会d出下面这个对话框。一般我们选择Polynormial, 并在后面的Order框内选3以上的数(一般来说数字越高则对复杂曲线的拟合度越好,当然也有例外)。然后别忘了把最底部的两个小框点上钩。

树莓派用逆向设计和回归算法估算PWM,第5张

选完后点Close, 图上就多了一条线,还有两个公式。第一个公式就是那根新的线,第二个R^2叫coefficient of determinaTIon。就是表示第一条公式和你的数据的相差多少。数字越接近1,公式越接近你的测量结果。所以我们只要在程序中输入这条公式,你的程序就知道该在需要什么转速的时候给多少PWM了。

y = -7E-06×4 0.0019×3 – 0.1569×2 5.7408x 16.96 写进程序里就是:

int x = target_speed;//需要的速度int pwm = int(-0.000007 * power(x,4) 0.0019 * power(x, 3) - 0.1569 * power(x,2) 5.7408 * x 16.96);//根据EXCEL给的公式把速度换算成PWM。

备注1:此办法虽说能在一定程度上解决问题,但并不可靠,毕竟不是闭环控制。

备注2:在测试转速时,最好在电机带负载,电压恒定的情况下进行测试。不然测试数据会很不靠谱。数据也当然是越多越好。

备注3:此方法不但可以应用于电机,也可以用于各种连续系统,比如距离传感器就可以用这种办法来标定。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2596969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-09
下一篇 2022-08-09

发表评论

登录后才能评论

评论列表(0条)

保存