智障车玩累了调无人机的第一天——PWM给了电机不转
硬件环境
主控:无名创新盘古开发板
电调:好盈乐天 A20 A电调
无刷电机:不详
问题
PWM频率初始化为50,200HZ都试过,发现给出pwm之后电机不转动。经过各种尝试后无果,对比发现烧录无名创新的示例代码系统之后,只要进入了无人机悬停模式即mode=-8之后再进入其他模式就会正常起来(PWM赋值写到主函数的,由于模式-8需要遥控器配合,但是我捡来的垃圾没有遥控器,所以停留在模式-8会导致pwm一直是0,所以需要切入其他模式,或者自己设置的空模式)。
解决方案
由于没有系统搞过无人机,不知道原来这一款电调启动是要设置最低油门行程的。
所以我的方法有一些问题,需要先给出最小油门值,再缓慢(延时)加到比最小值高大概150的PWM值就可以直接启动了。
示例代码如下:
#define THR_MAX_OUTPU 2000//油门输出最大值
#define THR_MIN_OUTPU 1000//油门输出最小值
#define THR_IDEL_OUTPU 1150//油门怠速,取接近起转油门值即可1150
int flag_ii=1;
int main(void)
{
System_Init(); //系统时钟初始化
EEPROM_Init(); //EEPROM初始化
trackless_params_init();//硬件配置初始化
PWM1_Init(); //PWM1初始化M1P0、M1P1、M1P2、M1P3
while(1)
{
if(flag_ii)
{
steer_servo_pwm_m1p0(THR_MIN_OUTPU);
steer_servo_pwm_m1p1(THR_MIN_OUTPU);
steer_servo_pwm_m1p2(THR_MIN_OUTPU);
steer_servo_pwm_m1p3(THR_MIN_OUTPU);
delay(25);
for(int i=THR_MIN_OUTPU;i<THR_IDEL_OUTPU;i++)
{
steer_servo_pwm_m1p0(i);
steer_servo_pwm_m1p1(i);
steer_servo_pwm_m1p2(i);
steer_servo_pwm_m1p3(i);
delay(25);
}
flag_ii=0;
}
steer_servo_pwm_m1p0(1500);
steer_servo_pwm_m1p1(1500);
steer_servo_pwm_m1p2(1500);
steer_servo_pwm_m1p3(1500);
}
}