主要内容

PWM块入门PX4 AutoPilots

此示例显示了如何使用PX4 PWM输出块在Pixhawk Series控制器的PWM引脚上产生信号,并验证PWM值。

介绍

用于PX4 autopi金宝applot的UAV工具箱支持包使您能够在连接到ESC的Pixhawk系列控制器的PWM输出上产生PWM信号,从而驱动电机。

在本例中,您将学习如何创建和运行Simulink模型来生成PWM输出信号。金宝app

先决条件

所需的硬件

要运行此示例,您将需要以下硬件:

  • Pixhawk系列飞行控制器

  • Micro USB b型线

  • Micro-SD卡(已经在此期间使用最初的硬件设置

  • 安全开关(如果是PixHawk系列飞行控制器所必需的)

  • 阴极射线示波器(CRO)

模型

您将使用Simulink在金宝appPWM输出上创建PWM信号。出于验证目的,您可以将PIXHAWK系列硬件的PWM输出引脚连接到CRO以查看脉冲宽度。

您将创建以下内容示例模型用于生成PWM信号:

open_system (“px4demo_PWM”);

任务1 -配置PWM的Simulink模型金宝app

1。从MATLAB ToolStrip,选择首页>新建> Simulink模型以打开Simulin金宝appk Start页面。点击空白模型启动新的Simulink模型。金宝app

2。从模型窗口中选择“查看>库浏览器”,打开Simulink库浏览器。金宝app单击“PX4 autopilot UAV工具金宝app箱支持包”选项卡(您也可以键入px4lib.在matlab命令提示符下)。

3.拖拉PX4 PWM输出块到模型。双击块以打开块掩码并更改块属性。

4.用于为主PWM通道产生PWM信号,请选择/dev/pwm_output0作为PWM器件。对于AUX通道,选择/dev/pwm_output1

5。选择您想要产生PWM信号的通道。Pixhawk系列控制器最多可以有8个主/AUX PWM通道。

笔记:没有必要将所有8个PWM通道都呈现在Pixhawk硬件上。例如,Pixracer只有6个主PWM通道,而Pixhawk 1有6个AUX通道。确保在PX4 PWM Output块掩码上选择的通道在Pixhawk板上存在。

6。点击申请然后好吧关闭块掩码。

7。在Library 金宝appBrowser中的Simulink > Sources选项卡中,拖放三个常数块进入模型。

8。将第一个Constant块的输出端口连接到手臂输入的PX4 PWM输出块。

9.双击此Constant块(它是手臂输入PWM块),将常量块的值设置为1,并将输出数据类型设置为布尔

10.将第二个常量块的输出端口连接到设置故障保险输入PWM块。。

11.双击此常量块(连接到设置故障保险输入),将Constant块的值设置为0.,并将输出数据类型设置为布尔

12.将第三个Constant块的输出端口连接到PWM块的所选输入PWM通道(例如Ch1、Ch2等)。

笔记:要选择所需的PWM通道作为输入,双击PX4 PWM Output模块。在块掩码中,确保选择了属于同一频道组的所有频道。如果需要连接不同组的PWM通道,请选择所有所需组中的所有通道。在整个Simulink模型中,每个通道类别(主或AUX)只允许一个PX4 PWM输出块。金宝app

小费:要在Pixhawk系列飞行控制器板中识别频道组,请使用主机上的QGroundControl应用程序。有关详细信息,请参见PX4 PWM输出(请参阅子主题:参数> PWM通道)。

13。双击此常量块(连接到PWM通道输入),将常量块的值设置为1400,并将输出数据类型设置为uint16

任务2 - 使用UORM块读取PWM块

在此任务中,您将使用uorm主题配置任务1中创建的模型来读取写入的PWM值ACTUATOR_OUTPUTS.

笔记: PWM值发布到uORB主题ACTUATOR_OUTPUTS.仅限主频道。此外,Pixhawk系列飞行控制器必须有一个px4io处理器读取ACTUATOR_OUTPUTS.主题值(例如,PIXRACER没有px4io处理程序,而不读取ACTUATOR_OUTPUTS.价值观)。

1。从库浏览器的“无人机工具箱支持包的PX4自金宝app动驾驶”选项卡,拖拽一个px4 uorm阅读块到模型。双击块。

2。点击选择旁边的订阅主题字段,选择actuator_outputs.msg从弹出窗口。点击好吧关闭块掩码。

3.从库浏览器中的Si金宝appmulink >信号路由选项卡中,拖拽一个总线选择器块到模型。

4.连接味精的输出px4 uorm阅读块到总线选择器块的输入端口。

5。单击建模>更新模型以确保广交信息传播。你可能会出错,在总线选择器块“未命名/总线选择器”中选择的信号“signal1”在输入总线信号中找不到.这个错误是预期的,将在下一步解决。

6。双击总线选择器块。选择???信号1???signal2.在右侧的列表中,然后单击删除.选择左侧列表中的输出信号,然后单击选择> >.点击好吧

7。从“库浏览器”中的金宝app“Simulink”>“下沉”选项卡,拖放A展示块到模型。将总线选择器块的输出连接到显示块。

您完成的Simulink模型应金宝app该如下所示:

任务3 -配置PWM频率和PWM限制

在这个任务中,您将配置并运行您的模型。

1。使用Micro-USB电缆将PIXHAWK系列控制器连接到主机。

2。打开配置参数对话框,并将目标硬件设置为您在硬件安装屏幕期间选择的PIXHAWK系列控制器。

3.目标硬件资源段中,输入Pixhawk Series控制器所连接的主机串口,在串口用于固件上传场地。点击申请

4.脉宽调制频率窗格,将PWM信号的频率设置为主PWM通道的400 Hz。

笔记:PWM信号频率设置限制为50- 400hz。

5。您还可以设置主PWM和AUX PWM通道的解除和故障安全值,在主要脉宽调制辅助PWM窗格。

6。点击申请然后好吧关闭“配置参数”对话框。

任务4 - 连接PIXHawk系列控制器并生成PWM

1。连接PIXHawk系列控制器的PWM通道,您要为其生成PWM信号,以便CRO(这些是您在任务1中选择的通道)。

2。如果您的Pixhawk系列控制器有安全开关,请将安全开关连接到板上。

3.硬件选项卡,单击金宝app监控和曲调开始信号监控和参数调整。

等待代码生成完成。每当出现指示您将飞行控制器重新连接到串行端口的对话框时,请确保单击好吧在对话框中5秒重新连接飞行控制器后。

4.信号监控启动后,您可能会观察到PWM波形尚未出现在CRO中。

5。按下安全开关并保持3秒以上。3秒后释放。

笔记: PWM值发布到uORB主题ACTUATOR_OUTPUTS.仅限主频道。此外,Pixhawk系列飞行控制器必须有一个px4io处理器读取ACTUATOR_OUTPUTS.主题值(例如,PIXRACER没有px4io处理程序,而不读取ACTUATOR_OUTPUTS.价值观)。

现在,您应该能够在CRO上看到频率400 Hz的PWM波形,在1400US上(如恒定块中输入),在CRO上。

写入PWM块的ON-time值被发布到actuators_output主题,并且也出现在模型的Display块中。

6。双击连接到PWM块的通道输入的常量块。将值更改为1600,然后单击“确定”。在CRO上,您应该看到具有1600us的时间值的波形。

写入PWM块的ON-time值被发布到actuators_output主题,并且也出现在模型的Display块中。

7。通过更改恒定块连接的值来撤消PWM信号手臂输入的PWM块为0。PWM波形的脉冲宽度将改变为模型配置参数中设置的解除武装的值。您可以通过设置值为1再次武装PWM。

8。您可以通过设置Constant block connect to的值来设置故障安全模式设置故障保险输入为1.PWM波形的脉冲宽度将改变为模型配置参数中设置的故障安全值。可以将该值设置为,以删除故障安全模式0..如果是强制终止故障安全模式在PWM块掩码中选择选项,故障安全模式成为永久性设置故障保险是集。