数字舵机控制机械手程序

更新时间:2023-07-04 20:07:54 阅读: 评论:0

qq点赞怎么取消
zgq
数字舵机和模拟舵机的相同和不同:
舵机分为模拟舵机和数字舵机两大类:数字舵机区别于传统的模拟舵机,模拟舵机需要给它不停的发送PWM信号,才能让它保持在规定的位置或者让它按照某个速度转动,数字舵机则只需要发送一次PWM信号就能保持在规定的某个位置。而且模拟舵机对于脉冲宽度很窄的脉冲,它的动作会显得比较的迟钝,数字舵机因为它的脉冲的周期比较的短这样就会给马达足够的动力,但这样它的耗电量就会大大的增加。控制方法基本相同,给舵机的信号端输入一定脉宽的方波脉冲控制舵机的转角。接口电路:黄色的为信号线,红色的为电源线,黑色的为地线。
/********
基本思想:利用定时器0先进行0.5ms定时,再利用定时器1对舵机的转角进行另外2ms的控制,总共定时时间为20ms,数字舵机只需要向其发送一次20ms脉冲即可以对舵机的位置进行控制,利用参数化的控制方法,利用宏定义定义每个位置的舵机的转角,从而实现对机械手的位置控制
********/
#include<reg52.h>
uint position[6]={0}//定义位置
/******标志位参数******/
uchar count0=0;//初始化计数值
uchar count=0;//初始化计数值
/*******具体位置舵机位置参数根据情况给定*****/
#define INITRUDER1 29
#define INITRUDER2 18
#define INITRUDER3 18
#define INITRUDER4 18
#define INITRUDER5 18
#define INITRUDER6 18
#define PUTDOWNRUDER1 18
#define PUTDOWNRUDER2 18张学良夫人
#define PUTDOWNRUDER3 29
#define PUTDOWNRUDER4 10
#define PUTDOWNRUDER5 18
#define PUTDOWNRUDER6 18
#define GRASPRUDER1 18
#define GRASPRUDER2 18
#define GRASPRUDER3 29
#define GRASPRUDER4 10
#define GRASPRUDER5 18
#define GRASPRUDER6 18
#define PUTUPRUDER1 18
#define PUTUPRUDER2 18
#define PUTUPRUDER3 16
#define PUTUPRUDER4 10
#define PUTUPRUDER5 18
#define PUTUPRUDER6 18
#define ROTRUDER1 18
#define ROTRUDER2 18
#define ROTRUDER3 16
#define ROTRUDER4 10
#define ROTRUDER5 18
#define ROTRUDER6 18
#define PUTDOWN1RUDER1 18
#define PUTDOWN1RUDER2 18
#define PUTDOWN1RUDER3 29
#define PUTDOWN1RUDER4 10
#define PUTDOWN1RUDER5 18
#define PUTDOWN1RUDER6 18
#define DROPRUDER1 18
#define DROPRUDER2 18
#define DROPRUDER3 29
#define DROPRUDER4 10
#define DROPRUDER5 18
#define DROPRUDER6 18
#define PUTUP1RUDER1 18
#define PUTUP1RUDER2 18
#define PUTUP1RUDER3 16
#define PUTUP1RUDER4 10
#define PUTUP1RUDER5 18
#define PUTUP1RUDER6 18
#define RESETRUDER1 18
#define RESETRUDER2 18
#define RESETRUDER3 16
#define RESETRUDER4 10
#define RESETRUDER5 18
#define RESETRUDER6 18
/*******初始化定时器函数********/ 
  void initial()
  {
      P1=0x00;
    TMOD=0x22;//定时器0和1工作在方式2
      TL0=206;
论文页码怎么设置    TH0=206;//每次中断定时50us
    TL1=106;
    TH1=106;//每次中断定时100us凤凰甘油
      EA=1; //打开总中断
      ET0=1;//打开定时器1的中断   
  }
/****当计数器0工作满0.5ms时关闭定时器0计数打开计数器1计数进行舵机控制****/
喜欢用英语怎么写  void Move(uchar p0,uchar p1,uchar p2,uchar p3,uchar p4,uchar p5)
  {
        position[0]=p0;
        position[1]=p1;
        position[2]=p2;
        position[3]=p3;
        position[4]=p4;
        position[5]=p5;
        TR0=1;//定时器0开始计时
        TR1=0;//定时器1停止计时   
        for(i=1;i<6;i++)
        {
            position[i]+=position[i-1];
        }
信心十足
        if(count0==5)
        {大学生谈恋爱
            count0=0;
              TR0=0;//定时器0停止计时
            TR1=1;//定时器1开始计时
               
            P1=0x01;
            while(count<position[0]){};
            P1=0x02;
            while(count<position[1]){};
            P1=0x04;
            while(count<position[2]){};
            P1=0x08;
            while(count<position[3]){};
            P1=0x30;
            while(count<position[4]){};
            P1=0x40;
            while(count<position[5]){};
            P1=0x00;
            while(count<390){};
            count=0;
             
            TR0=1;//打开定时器0
            TR1=0;//关闭定时器1
        }
  }
/********定时器0中断*******/
void interr0() interrupt 1
{
    count0++;
}
/********定时器1中断*******/
void interr1() interrupt 2
{
    count++
}
  void main(void)
  {
      initial();//对定时器进行初始化
    while(1)
    {
        /************在while(1)死循环中反复执行舵机动作**********/
Move(INITRUDER1,INITRUDER2,INITRUDER3,INITRUDER4,INITRUDER5,INITRUDER6);
Move(PUTDOWNRUDER1,PUTDOWNRUDER2,PUTDOWNRUDER3,PUTDOWNRUDER4,PUTDOWNRUDER5,PUTDOWNRUDER6);
Move(GRASPRUDER1,GRASPRUDER2,GRASPRUDER3,GRASPRUDER4,GRASPRUDER5,GRASPRUDER6);
Move(PUTUPRUDER1,PUTUPRUDER2,PUTUPRUDER3,PUTUPRUDER4,PUTUPRUDER5,PUTUPRUDER6);
Move(ROTRUDER1,ROTRUDER2,ROTRUDER3,ROTRUDER4,ROTRUDER5,ROTRUDER6);
Move(PUTDOWN1RUDER1,PUTDOWN1RUDER2,PUTDOWN1RUDER3,PUTDOWN1RUDER4,PUTDOWN1RUDER5,PUTDOWN1RUDER6);
Move(DROPRUDER1,DROPRUDER2,DROPRUDER3,DROPRUDER4,DROPRUDER5,DROPRUDER6);
Move(PUTUP1RUDER1,PUTUP1RUDER2,PUTUP1RUDER3,PUTUP1RUDER4,PUTUP1RUDER5,PUTUP1RUDER6);
Move(RESETRUDER1,RESETRUDER2,RESETRUDER3,RESETRUDER4,RESETRUDER5,RESETRUDER6);
    }
经营管理模式  }

本文发布于:2023-07-04 20:07:54,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1067901.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:舵机   控制   位置
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图