PWM波控制舵机 为什么舵机不转动
#include<hidef.h>/*commondefinesandmacros*/#include"derivative.h"/*derivative-specifi...
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
float i;
void PWM_init() {
PWME=0x00; //禁止PWM输出
PWMCTL=0x00; //通道独立不级联,Wait,Freeze模式下继续
PWMPOL_PPOL0=1;
PWMCAE=0x00; //左对齐输出方式
PWMCLK=0xff; //使用ClockSA时钟
PWMPRCLK=0x33; //ClockA时钟为总线时钟8分频,=2MHz/8=250khz
PWMSCLA=50; //ClockSA=ClockA/(2*PWMSCLA)=250KHz/(2*50)=2.5khz
PWMPER0=200;
PWMDTY0=3.75;
}
void main(void) {
/* put your own code here */
DisableInterrupts;
PWM_init();
PWME=0x01; //使能通道0的PWM输出
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
} 展开
#include "derivative.h" /* derivative-specific definitions */
float i;
void PWM_init() {
PWME=0x00; //禁止PWM输出
PWMCTL=0x00; //通道独立不级联,Wait,Freeze模式下继续
PWMPOL_PPOL0=1;
PWMCAE=0x00; //左对齐输出方式
PWMCLK=0xff; //使用ClockSA时钟
PWMPRCLK=0x33; //ClockA时钟为总线时钟8分频,=2MHz/8=250khz
PWMSCLA=50; //ClockSA=ClockA/(2*PWMSCLA)=250KHz/(2*50)=2.5khz
PWMPER0=200;
PWMDTY0=3.75;
}
void main(void) {
/* put your own code here */
DisableInterrupts;
PWM_init();
PWME=0x01; //使能通道0的PWM输出
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
} 展开
展开全部
舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
舵机的原理和控制 如下:
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
舵机的原理和控制 如下:
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
0.5ms--------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
追问
我输出的脉冲也是20ms周期 高电平在0.5~2.5ms之间为什么舵机没反应?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询