使用单片机对带电调的电机初始化问题


#1

有哪位大佬知道用51单片机怎么对电调进行初始化,求大佬提供C语言的初始化程序,感谢!?电调工作频率为50Hz,工作范围为1-2ms,1.5ms为中位停转


#2

你好, 如果是50Hz的PWM信号,推进器上电后,给高电平持续时间为1.5ms的PWM信号,信号持续一段时间后即可过初始化。这时候再更改占空比即可对推进器的转速进行调节。51可以用定时器,在定时中断中翻转IO输出电平,输出频率固定占空比不同的PWM方波。


#3

您好,非常感谢您的回答,我这边编写了一个C语言程序,初始化完成后更改PWM信号为18ms后发现出现了一下正转,一下反转,不知道您这边知道是什么问题么?C语言程序如下:
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;
sbit run=P1^0;
u16 timer=0;
u16 cycle=200;//周期20ms
u16 low=18;//给定脉宽1.8ms(初始化时给定1.5ms)
void main()
{
run=1;
TMOD=0x01;
TH0=(65535-100)/256;//机器周期为1us,每次计时0.1ms
TL0=(65535-100)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
;
}
}
void timer_service(void) interrupt 1
{
TH0=(65535-100)/256;
TL0=(65535-100)%256;
timer++;
if(timer<=low)
{
run=0;
}
else
{
run=1;
if(timer==cycle)
{
timer=0;
}
}
}


#4


中断中是否是将PWM方波的低电平持续时间设置为了1.8ms 是否是这个地方出了问题?


#5

您好,感谢解答,找到原因了,PWM输出没问题,需要将单片机的供电负极和电机供电负极连接起来,因为电压不一样,所以加了个降压模块才正产运转,不过有一个坑爹的问题,就是每次都需要把单电机负极断开再重接电机才能转动,目前没搞懂原因:joy::joy:


#6

控制信号的GND和推进器的供电是需要共地的。 是单片机重新上电后电机才会转动吗? 单片机重新上电后等于是重新执行了一次过初始化的程序吧,不过初始化,推进器对控制信号是不响应的。