请高手看看下面的程序是否能产生pwm方波,为什么不能控制舵机转动,希望高手能解答详细,谢谢
#include<stc12c5a60s2.h>#defineuintunsignedintsbitTC0=P0^0;voiddelay_1500us();voiddel...
#include<stc12c5a60s2.h>
#define uint unsigned int
sbit TC0=P0^0;
void delay_1500us();
void delay_15ms();
void main()
{
TC0=1;
delay_1500us();
TC0=0;
delay_15ms();
}
void delay_1500us()
{
uint i;
for(i=0;i<467;i++);
}
void delay_15ms()
{
uint j;
for(j=0;j<5481;j++);
} 展开
#define uint unsigned int
sbit TC0=P0^0;
void delay_1500us();
void delay_15ms();
void main()
{
TC0=1;
delay_1500us();
TC0=0;
delay_15ms();
}
void delay_1500us()
{
uint i;
for(i=0;i<467;i++);
}
void delay_15ms()
{
uint j;
for(j=0;j<5481;j++);
} 展开
展开全部
我囧了,你是不是对舵机的理解错了,舵机的转动不是通过稳定的pwm而是通过占空比变化的pwm来控制的,稳定的pwn波形它就不动了。舵机的位置严格来说和占空比无关,而是通过正频宽(就是一个周期内高电平持续的时间)来控制的,不同的正频宽对应舵机不同的位置,在datasheet上有。这和直流电机还有步进电机什么的不同,所以舵机主要用来进行定位而不是拖动负载。
更多追问追答
追问
你好,为什么下面的程序可以让舵机精准地让舵机转到某一位置:
#include
#define uchar unsigned char
sbit TC0=P0^0;
uchar i;
void main()
{
TC0=1;
TMOD=0x01;
TH0=0xfc;
TL0=0x66;
ET0=1;
TR0=1;
EA=1;
i=0;
while(1);
}
void timer0() interrupt 1
{
TH0=0xfc;
TL0=0x66;
i++;
if(i==3)
{
TC0=0;
}
if(i==15)
{
TC0=1;
i=0;
};
}
中断时间0.5ms
追答
我说过舵机是通过正频宽来控制角度的,这个程序已经精确的设定了正频宽(1.5ms),就精确的对应舵机的一个转角,虽然pwm的周期有点短。这个程序运行的话舵机肯定也是静止的,就算转动也只有运行开始的一瞬间转到对应的角度。
艾普斯
2024-07-18 广告
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产...
点击进入详情页
本回答由艾普斯提供
展开全部
不能产生方波,必须要while(1)循环才行
更多追问追答
追问
我检验过,没有while(1)程序自己也循环运行,而且加了也不能控制舵机
追答
你要看看你的电机的控制方式,不是只要PWM就可以驱动的啊
另外你可以用示波器看看你输出的波形是不是标准的1/10占空比方波
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
taobao去看看 目前猜测,是要通过PWM进行控制 请高手帮助设计一下 谢谢问题补充:电压源和电流源都做,请完全是依靠编制程序来无形攻击对方,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询