请高手看看下面的程序是否能产生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++);
}
展开
 我来答
stoneshilin
2011-08-25 · TA获得超过105个赞
知道答主
回答量:96
采纳率:0%
帮助的人:76.1万
展开全部
我囧了,你是不是对舵机的理解错了,舵机的转动不是通过稳定的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的周期有点短。这个程序运行的话舵机肯定也是静止的,就算转动也只有运行开始的一瞬间转到对应的角度。
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机串口通信的原理是利用单片机的串口通信模块,通过把数据转化为一位一位的用时序方式传送数据,实现单片机与外部设备之间的数据通信。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
张洪珠
2011-08-24 · TA获得超过817个赞
知道小有建树答主
回答量:269
采纳率:0%
帮助的人:191万
展开全部
不能产生方波,必须要while(1)循环才行
更多追问追答
追问
我检验过,没有while(1)程序自己也循环运行,而且加了也不能控制舵机
追答
你要看看你的电机的控制方式,不是只要PWM就可以驱动的啊
另外你可以用示波器看看你输出的波形是不是标准的1/10占空比方波
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dimi4317
2011-08-24 · TA获得超过619个赞
知道答主
回答量:306
采纳率:0%
帮助的人:177万
展开全部
taobao去看看 目前猜测,是要通过PWM进行控制 请高手帮助设计一下 谢谢问题补充:电压源和电流源都做,请完全是依靠编制程序来无形攻击对方,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式