从PX4自动驾驶仪的PWM块开始
此示例向您展示如何使用PX4 PWM输出
块在Pixhawk系列控制器的PWM引脚上产生信号,并验证PWM值。
简介
无人机工具箱支持包PX4自动驾驶仪使您能够在Pixhawk系列控制器的PWM输出上产生PWM信号,这些控制器连接到ESC,从而驱动电机。
在本例中,您将学习如何创建和运行Simulink模型以在PWM输出上生成信号。
先决条件
如果您是Simulink的新手,请观看Simulink快速入门视频。
执行初始化设置和配置任务使用“硬件设置”屏幕安装支持包。
所需的硬件
要运行这个例子,你需要以下硬件:
Pixhawk系列飞行控制器
Micro USB - b型电缆
Micro-SD卡(已使用期间初始硬件设置)
安全开关(如果Pixhawk系列飞行控制器需要)
阴极射线示波器(CRO)
模型
您将使用Simulink在PWM输出上创建PWM信号。出于验证目的,您可以将Pixhawk系列硬件的PWM输出引脚连接到CRO以查看脉冲宽度。
您将创建下面的示例模型(px4demo_PWM)用于产生PWM信号:
open_system (“px4demo_PWM”);
任务1 -配置PWM的Simulink模型
1.在MATLAB工具条中,选择HOME > New > Simulink Model,打开Simulink开始页。点击空白模型推出一个新的Simulink模型。
2.在模型窗口中,选择“查看>库浏览器”以打开Simulink库浏览器。单击PX4自动驾驶仪的无人机工具箱支持包选项卡(您也可以键入px4lib在MATLAB命令提示符)。
3.拖放一个PX4 PWM输出块到模型。双击该块以打开块掩码并更改块属性。
4.要为主PWM通道生成PWM信号,请选择/dev/pwm_output0作为PWM器件。AUX通道请选择/dev/pwm_output1.
5.选择要生成PWM信号的通道。一个Pixhawk系列控制器最多可以有8个PWM通道用于主/AUX。
请注意: Pixhawk硬件上不需要全部8个PWM通道。例如,Pixracer只有6个主PWM通道,而Pixhawk 1有6个AUX通道。确保您在PX4 PWM Output块掩码上选择的通道存在于Pixhawk板上。
6.点击应用然后好吧关闭块掩码。
7.在Library Browser中的Simulink > Sources选项卡中,拖放三个常数块放入模型中。
8.将第一个Constant块的输出端口连接到手臂PX4 PWM输出块的输入。
9.双击这个Constant块(它是手臂输入的PWM块),设置常量块的值为1,并将输出数据类型设置为布尔.
10.将第二个Constant块的输出端口连接到设置故障保险输入的PWM块。
11.双击此Constant块(连接到设置故障保险input),将Constant块的值设置为0,并将输出数据类型设置为布尔.
12.将第三个Constant块的输出端口连接到PWM块的选定PWM通道输入(例如Ch1, Ch2等)。
请注意:要选择所需的PWM通道作为输入,双击PX4 PWM Output块。在块掩码中,请确保您选择的所有通道都属于同一个通道组。如果需要连接不同组中的PWM通道,请选择所有所需组中的所有通道。在整个Simulink模型中,每个通道类别(Main或AUX)只允许一个PX4 PWM输出块。
提示:要识别Pixhawk系列飞行控制器板中的信道组,请使用主机上的QGroundControl应用程序。详细信息请参见PX4 PWM输出(请参阅子主题:参数> PWM通道)。
13.双击此Constant块(连接到PWM通道输入),将Constant块的值设置为1400,并将输出数据类型设置为uint16.
任务2 -使用uORB块读取PWM块
在这个任务中,您将配置task 1中创建的模型,以使用uORB主题读取写入的PWM值actuator_outputs
.
请注意:将PWM值发布到uORB主题actuator_outputs
只适用于主要频道。此外,Pixhawk系列飞行控制器必须有一个px4io处理器来读取actuator_outputs
主题值(例如,Pixracer没有px4io处理器,并且不读取actuator_outputs
值)。
1.从库浏览器中的无人机工具箱支持包PX4自动驾驶仪选项卡,拖放一个PX4 uORB读取块到模型。双击该块。
2.点击选择旁边是订阅主题
字段,并选择actuator_outputs.msg
从弹出窗口。点击好吧关闭块掩码。
3.从库浏览器中的Simulink >信号路由选项卡中,拖放一个总线选择器块到模型。
4.连接味精的输出PX4 uORB读取
块到总线选择器块的输入端口。
5.单击Modeling > Update Model以确保传播总线信息。你可能得到一个错误,在总线选择器块“untitled/Bus Selector”中无法在输入总线信号中找到所选信号“signal1”.此错误是预期的,并将在下一步中解决。
6.双击总线选择器块。选择???signal1
而且???signal2
在右侧列表中,单击删除.在左侧列表中选择输出信号,单击选择> >.点击好吧.
7.在“库浏览器”中的“Simulink > sink”选项卡中,拖放一个显示块到模型。将总线选择器块的输出连接到显示块。
你完成的Simulink模型应该是这样的:
任务3 -配置PWM频率和PWM限制
在这个任务中,您将配置并运行您的模型。
1.使用micro-USB电缆将Pixhawk系列控制器连接到主机。
2.打开“配置参数”对话框,将“目标硬件”设置为在“硬件设置”界面中选择的Pixhawk系列控制器。
3.在目标硬件资源节中,输入Pixhawk系列控制器所连接的主机的串口,在用于上传固件的串口字段。点击应用.
4.在脉宽调制频率窗格中,设置主PWM通道的PWM信号频率为400hz。
注意:PWM信号频率设置限制为50- 400hz。
5.中,还可以为主脉宽调制通道和辅助脉宽调制通道设置解除武装和故障安全值主要脉宽调制或辅助PWM窗格。
6.点击应用然后好吧关闭“配置参数”对话框。
任务4 -连接Pixhawk系列控制器并生成PWM
1.将您想为其生成PWM信号的Pixhawk系列控制器的PWM通道连接到CRO(这些是您在任务1中选择的通道)。
2.如果您的Pixhawk系列控制器有安全开关,请将安全开关连接到电路板上。
3.在硬件在“Simulink”工具条的页签中,单击监视和调优开始信号监测和参数调优。
等待代码生成完成。每当出现指示您重新连接飞行控制器到串口的对话框时,请确保单击好吧在对话框内5秒重新连接飞行控制器后。
4.信号监控开始后,您可能会观察到PWM波形尚未出现在CRO中。
5.按下安全开关并保持3秒以上。3秒后松开。
请注意:将PWM值发布到uORB主题actuator_outputs
只适用于主要频道。此外,Pixhawk系列飞行控制器必须有一个px4io处理器来读取actuator_outputs
主题值(例如,Pixracer没有px4io处理器,并且不读取actuator_outputs
值)。
现在,您应该能够在CRO上看到频率400hz的PWM波形,ON时间值为1400us(如在Constant块中输入的那样)。
写入PWM块的ON-time值被发布到actuators_output主题,并且也出现在模型的Display块中。
6.双击连接到PWM块的通道输入的Constant块。将值更改为1600,然后单击OK。在CRO上,您应该看到一个On时间值为1600us的波形。
写入PWM块的ON-time值被发布到actuators_output主题,并且也出现在模型的Display块中。
7.通过改变恒定块连接到的值来解除PWM信号手臂输入PWM块为0。PWM波形的脉冲宽度将改变为模型配置参数中设置的解除武装值。您可以通过将值设置为1来再次武装PWM。
8.您可以通过设置“固定块连接到”的值来设置故障保护模式设置故障保险输入1.PWM波形的脉冲宽度将改变为模型配置参数中设置的故障安全值。可以将该值设置为,取消故障保护模式0.如果强制终止故障安全模式选项,则故障保护模式变为永久一次设置故障保险是集。