在Arduino板上实现PID控制器
本周我的同事Pravallika回来继续她的运动控制故事!
在我以前的文章,我们看到了如何估计连续传递函数系统识别工具箱.我们估计以下传递函数为一个简单的直流电动机使用特遣部队:
针对此传递函数,我们设计了以下控制器pidtune:
我们现在将在Arduino Uno上实现控制器,看看直流电机如何使用这个控制器。为了在硬件上部署控制器,我们将使用Simulink的功能来生成可执行文件,并在选定的硬件上运行它。金宝app
将控制器部署到Arduino板
您可能注意到上面所示的控制器是连续形式的。要在目标上使用它,首先要做的是使用汇集功能:
然后我们抓取PID块从Simulink金宝app库中进行配置。
为了将PID控制器的输出保持在硬件的限制范围内,我们转到PID高级选项卡,并启用输出饱和以及防上浮保护。
为了在硬件上测试控制器,我们使用控件中的块创建了一个Simulink模型金宝appArduino支金宝app持包.
如您所见,我们从串行端口接收所需的电机位置,并将其与模拟输入的测量位置进行比较。位置误差通过PID块,产生电压发送到电机。我们还通过串口发送测量位置。
硬件响应
我们在目标机上运行模型,向它发送一些命令,并记录通过串口传输的数据。下面是它的样子:
它在跟踪参考信号方面做得很好。当我们将硬件的响应与模拟的响应进行比较时,我们观察到它们非常接近!系统标识工具箱模型非常好。
现在轮到你了
当一个系统难以建模时,你如何设计控制器?您是否尝试过Simulink中的“在目标硬件上运行”功能,以便在受支持的电路板上运行您的模型?金宝app金宝app请留下一个这里的评论.
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。