如何在arduino中用pid控制电机转速

如何在arduino中用pid控制电机转速,第1张

这是APM2.5飞控系统中提取出的库文件,具有完整的PID(比例,积分微分)运算功能。

解压后,将文件带目录一起放到Arduino\libraries\子目录中去,重新启动Arduino,在示例中能找到这个库的示例。打开后,你需要自己再研究研究。

毕竟PID控制技术是经典的自动控制理论,如果你不具备这方面的基础知识,想拿来就用好,还是要费点脑筋的。好在这里有这个库,你应该可以节省不少精力。

可是在上迅碰面的程序中,当PID不规则的调用时就会出现两个问题:

1.有时候定时调用,有时候又停止调用,将得不坦昌并到PID的持续稳定特性。

2.需要额外对积分和微分进行数学计算,因为他们都是和时间息息相关的。

解决方法:保证PID在一个固定的的时间间隔内被调用,让迹我通过每个周期内事先设置好的采样时间调用compute函数,PID再决定是计算还是立即返回数值。一旦我们知道PID在固定时间间隔内被调用,积分和微分的计算就能被简化。

于是我们的程序就变成了

如果编译和上传分离到不同的机器上执行,可以使用下面方式。

依赖

安装arduino环境

sudo apt-get install arduino

编译

在Arduino IDE环境下,写好源码程序(以.ino结尾姿州兆的文件)。然后

Arduino ->Preferences ->”Show verbose output during”选择”compilation”。点击编译,在下方的输出迹哪框最后一行显示如下内容

/usr/share/arduino/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/build355782919138539048.tmp/Blink.cpp.elf /tmp/build355782919138539048.tmp/Blink.cpp.hex

可以得迹租知, 源码(.ino)编译后生成的二进制文件为/tmp/build355782919138539048.tmp/Blink.cpp.hex

上传

把上一步编译生成的二进制文件上传到arduino控制板上。

/usr/share/arduino/hardware/tools/avrdude -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build355782919138539048.tmp/Blink.cpp.hex:i


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

原文地址:https://54852.com/yw/12351626.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存