Simulin金宝appk上的Guy

金宝appSimulink &基于模型的设计

在Arduino板上实现PID控制器

本周我的同事Pravallika回来继续她的运动控制故事!

Pravallikota Vinnakota,客座博主

在我以前的文章,我们看到了如何估计连续传递函数系统识别工具箱.我们估计以下传递函数为一个简单的直流电动机使用特遣部队

从直流电机识别的传递函数

针对此传递函数,我们设计了以下控制器pidtune

由pidtune生成的控制器

我们现在将在Arduino Uno上实现控制器,看看直流电机如何使用这个控制器。为了在硬件上部署控制器,我们将使用Simulink的功能来生成可执行文件,并在选定的硬件上运行它。金宝app

将控制器部署到Arduino板

您可能注意到上面所示的控制器是连续形式的。要在目标上使用它,首先要做的是使用汇集功能:

对由pidtune生成的控制器进行离散化

然后我们抓取PID块从Simulink金宝app库中进行配置。

PID块组态

为了将PID控制器的输出保持在硬件的限制范围内,我们转到PID高级选项卡,并启用输出饱和以及防上浮保护。

高级PID块配置

为了在硬件上测试控制器,我们使用控件中的块创建了一个Simulink模型金宝appArduino支金宝app持包

如您所见,我们从串行端口接收所需的电机位置,并将其与模拟输入的测量位置进行比较。位置误差通过PID块,产生电压发送到电机。我们还通过串口发送测量位置。

Arduino板上使用的控制器模型

硬件响应

我们在目标机上运行模型,向它发送一些命令,并记录通过串口传输的数据。下面是它的样子:

从控制器记录的数据

它在跟踪参考信号方面做得很好。当我们将硬件的响应与模拟的响应进行比较时,我们观察到它们非常接近!系统标识工具箱模型非常好。

现在轮到你了

当一个系统难以建模时,你如何设计控制器?您是否尝试过Simulink中的“在目标硬件上运行”功能,以便在受支持的电路板上运行您的模型?金宝app金宝app请留下一个这里的评论

|

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。