找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3563|回复: 1
打印 上一主题 下一主题
收起左侧

求助:关于用51单片机控制SG90舵机的问题,舵机转的非常慢

[复制链接]
跳转到指定楼层
楼主
ID:162831 发表于 2017-1-23 22:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我写了一个简单的程序,让舵机转到一个指定角度停下来,可以转,但是舵机转的非常非常慢.我想知道这是为什么,如果可以的话,求一个SG90舵机的51控制程序
我写的程序如下:
  #include<reg52.h>
#define unchar unsigned char
unsigned char count;      //0.5ms次数标识
unsigned char jd;  
sbit pwm1 = P2^1;



void delay(unsigned int t)
{
        int i = 0;
        while(t--)
        for(i=0;i<120;i++);

}
void Time0_Init()          //定时器初始化
{
TMOD = 0x01;           //定时器0工作在方式1   
TH0  =  (65535-500)/256;
TL0  =  (65535-500)%256;    //12MZ晶振,0.5ms
EA=1;            //总中断打开
ET0=1;           //定时器中断打开
TR0=1;           //定时器开关打开
}

void Time0_Int() interrupt 1
{
TH0  = (65535-500)/256;             //重新赋值
TL0  = (65535-500)%256;   
    if(count< jd)              //判断0.5ms次数是否小于角度标识
     {
          pwm1=1;                  //确实小于,PWM输出高电平
          }
    else
          {
          pwm1=0;                 //大于则输出低电平
          }
    count++;//(count+1);          //0.5ms次数加1
        if(count>=40)
        count=0;
    //count=count%40;     //次数始终保持为40 即保持周期为20ms       
}
   unsigned char count;      //0.5ms次数标识

void keyscan()              //按键扫描
{
       
}

void main()
{
jd=1;       
count=0;
Time0_Init();
while(1)
{
        keyscan();
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:153041 发表于 2017-1-24 14:28 | 只看该作者
小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果需要更快速的反应,就需要更高的转速了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表