PWM舵机基于单片机的调控.doc

PWM舵机基于单片机的调控.doc

ID:59121050

大小:303.50 KB

页数:4页

时间:2020-09-15

PWM舵机基于单片机的调控.doc_第1页
PWM舵机基于单片机的调控.doc_第2页
PWM舵机基于单片机的调控.doc_第3页
PWM舵机基于单片机的调控.doc_第4页
资源描述:

《PWM舵机基于单片机的调控.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、基本原理介绍演示机构采用的是舵机,每个需要一路PWM波和两路电源输入。电源输入标准为5V1-8A,采用带输入和输出保护的50w开关电源供电;PWM波为50Hz,正脉冲时间为0.5-2.5ms,对应-90°至90°(实际使用中为了保护机械,为0.7-2.3ms,舵机旋转范围为-70°至70°)。由于系统对于输出的频率有5Hz的限制,因此使用软件延迟来实现最多八路的的PWM波输出。PWM波由MCU通过软件延时产生,算法概述如下(流程图见附件):1.A路输出2.5ms脉冲(输出正脉冲,不足时间由低电平补至2.5ms),

2、此时其他五路无输出,相当于输出2.5ms低电平;2.B路输出2.5ms脉冲(同A路,不足时间由低电平补齐),此时包括A路的其他五路无输出,相当于输出2.5ms低电平;3.同理,输出C,D,E,F路4.此时,1-3步总时间为2.5*6=15ms,其中每路由一个小于2.5ms的正脉冲和低电平时间组成。由于输出周期为20ms,故应再输出20ms-15ms=5ms低电平时间,使得各路频率为50Hz。重复1-3步,得到输出波形如下图:(仅以4路为例,使用Proteus仿真示波器,图2.2.2)可以看到,此时各路输出均为50Hz

3、,正脉冲时间为0.5-2.5ms此算法在50Hz(20ms)频率的限制下,最多可输出8路PWM波形(8*2.5ms=20ms)二、 实际程序 程序如下:#include  #include  #define uchar unsigned char #define uint unsigned int sbit Out1=P2^0; sbit Out2=P2^1; sbit Out3=P2^2; sbit Out4=P2^3; sbit Out5=P2^4;    void PWM(u

4、int a, uint b,uint c, uint d,uint e) {          uchar A,B,C,D,E;      uint M=984;      A=250-a;      B=250-b;      C=250-c;      D=250-d;      E=250-e;     do { Out1 = 1; } while(a--);     do { Out1 = 0; } while(A--);     do { Out2 = 1; } while(b--);     do { O

5、ut2 = 0; } while(B--);     do { Out3 = 1; } while(c--);     do { Out3 = 0; } while(C--);     do { Out4 = 1; } while(d--);     do { Out4 = 0; } while(D--);     do { Out5 = 1; } while(e--);     do { Out5 = 0; } while(E--);      do{ }while(M--);       }  main() { 

6、 uchar a,b,c,d,e; uint m; a=170; b=149; c=d=e=149; SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1TMOD = 0x20;      //定时器工作方式2PCON = 0x80;    //TH1  = 0xFD; //baud*2  /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)   TH1 = 0xF3;        // //baud*2  /*  波特率4800、数据位8、停止

7、位1。效验位无 (12M) TL1 = 0xF3;          TR1  = 1;                            ES   = 1;        //开串口中断EA=1;        // 开总中断while(1) {       if(RI) { RI=0; m=SBUF-48; if(m==1)  {  if(a<=120) a=a+3;  else a=a+1;  }  if(m==2) { if(a>=180)a=a-3; else a=a-1; } if(m==3) b=b

8、+1; if(m==4) b=b-1; if(m==5) c=c+1; if(m==6) c=c-1; if(m==7) d=d+1; if(m==8) d=d-1; if(m==9) e=e+1; if(m==0) e=e-1; if(a<=69) a=69; if(a>=229) a=228; if(b<=69) b=69; if(b>=2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。