PX4飞控之PWM输出控制

本文探讨了PX4飞控系统中PWM输出控制的实现,重点关注Firmwaresrcmodulessystemlibpwm_limitpwm_limit.c文件中的状态机如何用于电调控制的不同阶段,包括初始化、状态切换及不同状态下的PWM输出值变化。
摘要由CSDN通过智能技术生成

PX4飞控之PWM输出控制

多旋翼电调如好盈XRotor,DJI通用电调等都支持PWM信号来传输控制信号。常用的400Hz电调信号对应周期2500us,一般使用高电平时间1000us~2000us为有效信号区间,即1000us为最低输出,2000us为最高输出,锁定(停转)信号一般取900us(或950us,太低电调会判断成无信号,太高容易误判成有输出而意外启动)。一般电调也都支持有效信区间设置,可以在典型值附近自定义。
为了保证安全,电调上电后需要先检测到锁定信号,即900us左右的高电平时间,上电后检测到锁定信号电调会长叫一声(这个声音通过电机发出来的,电动机跟扬声器原理上很像,接上声音信号放放音乐也是毫无压力的==),从锁定信号到最低输出信号(1000us)需要有加速过程(即分多次慢慢增加到1000us),加速完成后,进入开启模式,这时就可以在有效信号区间内直接输出给定值。如果电调上电后飞控直接输出有效信号或从锁定信号直接跳变到有效信号都会导致电调进入报警模式(急促“嘀嘀嘀”报警声),而且控制器的输出信号区间(如-1~1)也需要量化到电调的有效区间,因此需要有一个电调控制程序来启动电调和量化有效信号。分享下PX4的电调控制程序。

Firmware\src\modules\systemlib\pwm_limit\pwm_limit.c


  • pwm_limit中使用状态机来标志电调控制的不同阶段
enum {
    PWM_LIMIT_STATE_INIT = 0,  // 启动时初始化状态,等待一定时间后自动切换到锁定状态
    PWM_LIMIT_STATE_OFF,       // 锁定状态
    PWM_LIMIT_STATE_RAMP,      // 加速状态
    PWM_LIMIT_STATE_ON         // 开启状态,此时可以在有效区间内给任意控制信号
};
  • 初始化:将state切到初始化状态,重置解锁时间
void pwm_limit_init(pwm_limit_t *limit)
{
    // 初始化状态机,重置解锁时间
    limit->state = PWM_LIMIT_STATE_INIT;
    limit->time_armed = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值