历史上的今天
返回首页

历史上的今天

今天是:2025年06月19日(星期四)

正在发生

2018年06月19日 | 使用51单片机驱动舵机程序分析

2018-06-19 来源:eefocus

舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外 壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向, 再驱动无核心马达转动,透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同,需要注意。

舵机的转动位置是靠控制PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms,占空比0.5~2.5ms 的正脉冲宽度和舵机的转角-90°~90°(即0~180度)相对应。注意,由于舵机牌子不同,其控制器解析出的脉冲宽度也不同,所以对于同一信号,不同牌子的舵机旋转的角度也不同。其原理是:它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号, 控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。

   0.5ms------------0度;

   1.0ms------------45度;

   1.5ms------------90度;

   2.0ms-----------135度;

   2.5ms-----------180度;

 

采用11.0592MHZ的51单片机驱动舵机转动程序如下:

//上电自动转动  

  

#include  

  

unsigned char count;      //0.5ms次数标识  

  

sbit pwm =P1^0 ;          //PWM信号输出  

  

sbit jia =P2^4;           //角度增加按键检测IO口  

  

sbit jian =P2^5;           //角度减少按键检测IO口  

  

unsigned char jd;         //角度标识  

  

   

  

sbit pwm1 =P0^0 ;          //PWM信号输出给示波器,检测PWM波用  

  

void delay(unsigned char i)//延时  

  

{  

  

  unsigned char j,k;  

  

  for(j=i;j>0;j--)  

  

    for(k=125;k>0;k--);  

  

}  

  

void Time0_Init()          //定时器0初始化  

  

{  

  

//定时器0装初值 用示波器检测后,11.0592MHZ晶振 定时0.5ms进入中断 装初值如下  

  

TH0  = (65536-445)/256;  

  

TL0  = (65536-445)%256;  

  

   

TMOD = 0x01;    //定时器0工作在方式1     

  

IE = 0x82;  //IE=0x82=1000 0010 等价于 EA=1 开总中断  ET0=1 开定时器0中断  

  

  TR0=1;          //开定时器0  

  

}  

  

void Time0_Int() interrupt 1 //中断程序  

  

{  

  

//重装初值  

  

TH0  = (65536-445)/256;  

  

TL0  = (65536-445)%256;  

  

   

  

    if(count< jd)  

  

{  

  

 pwm=1;                  //确实小于,PWM输出高电平  

  

 pwm1=pwm;              //接示波器用的io口,观测PWM波形用        }   //判断0.5ms次数是否小于角度标识  

  

 //pwm=1;                  //确实小于,PWM输出高电平  

  

    else  

  

{  

  

 pwm=0;                  //确实小于,PWM输出高电平  

  

 pwm1=pwm;             //接示波器用的io口,观测PWM波形用 }  

  

    //  pwm=0;                  //大于则输出低电平  

  

    count=(count+1);          //0.5ms次数加1  

  

    count=count%40;     //次数始终保持为40 即保持周期为20ms  

  

}  

  

   

  

//此注销掉部分为通过按键控制舵机转动的程序,功能为通过jia按键控制正转,  

  

//通过jian按键控制反转  

  

/*void keyscan()              //按键扫描  

  

{  

  

   if(jia==0)               //角度增加按键是否按下  

  

  {  

  

    delay(10);              //按下延时,消抖  

  

    if(jia==0)              //确实按下  

  

     {  

  

      jd++;                 //角度标识加1  

  

      count=0;              //按键按下 则20ms周期从新开始  

  

      if(jd==6)  

  

        jd=5;               //已经是180度,则保持  

  

      while(jia==0);        //等待按键放开  

  

     }  

  

  }  

  

  if(jian==0)                //角度减小按键是否按下  

  

  {  

  

    delay(10);  

  

    if(jian==0)  

  

     {  

  

      jd--;                 //角度标识减1  

  

      count=0;  

  

      if(jd==0)  

  

        jd=1;               //已经是0度,则保持  

  

      while(jan==0);  

  

     }  

  

  }  

  

}*/  

  

   

void main()  

  

{  

  

//上电,舵机自动正反转      

  

//应注意每次步进是延时函数delay参数的设置,此处延时函数参数设置的并不理想      

  

while(1)  

  

{  

  

  for(jd=1;jd<6;jd++)  

  

{  

  

count=0;  

  

Time0_Init();  

  

delay(50000000);  

  

}  

  

delay(50000000);  

  

for(jd=6;jd>0;jd--)  

  

{  

  

count=0;  

  

Time0_Init();  

  

delay(50000000);  

  

}  

  

}  

  

}  


推荐阅读

史海拾趣

Ericsson Power Modules公司的发展小趣事

Ericsson Power Modules公司起源于上世纪七十年代,作为爱立信公司的一个重要部门而诞生。当时,随着通信技术的飞速发展,对高效、稳定的电源解决方案的需求日益增长。爱立信凭借其深厚的技术积累和市场洞察力,决定进军电源模块领域,以满足这一市场需求。Ericsson Power Modules应运而生,专注于设计和制造电路板安装电源解决方案。

Aeroflex Metelics / Hi-Rel Components公司的发展小趣事

随着产品质量的不断提升和技术的不断创新,Ericsson Power Modules开始积极拓展市场。公司不仅在欧洲市场取得了显著成绩,还逐步将业务拓展至亚洲、北美等地区。为了更好地服务全球客户,Ericsson Power Modules在瑞典斯德哥尔摩设立了总部,并在中国、美国等地建立了生产基地和研发中心。这种全球化布局使得Ericsson Power Modules能够更快速地响应市场需求,提供更高效、更便捷的服务。

Centellax Inc公司的发展小趣事

Centellax Inc公司自成立以来,一直致力于电子通信技术的研发与创新。在成立初期,公司凭借其独特的测试测量技术,在光通信行业中崭露头角。随着技术的不断迭代和市场的扩大,Centellax逐渐积累了大量的专利和知识产权,为公司的长期发展奠定了坚实的基础。

在技术创新方面,Centellax不断投入研发资源,推出了一系列高性能的测试测量设备。这些设备不仅满足了客户对高速器件深入分析的需求,还提升了公司在行业内的竞争力。同时,Centellax还积极与高校、研究机构等合作,共同推动电子通信技术的进步。

ept Connectors公司的发展小趣事

EPT Connectors公司一直注重产品品质的管理和提升。公司建立了严格的质量管理体系,从原材料采购到产品制造、检测等各个环节都进行严格把关。同时,EPT还积极引进先进的生产设备和技术,不断提升产品的质量和性能。这些努力使得EPT的产品在市场上赢得了良好的口碑和客户的信任。许多知名电子企业都选择EPT作为他们的连接器供应商,这也进一步推动了EPT的发展。

FTCAP Fischer & Tausche Capacitor Group公司的发展小趣事

随着国际市场的不断扩大,EPT Connectors公司开始实施全球扩张战略。公司先后在捷克共和国、美国和中国等地设立了生产基地和研发中心,以便更好地服务当地客户。同时,EPT还建立了一个遍布全球的分销网络,以确保产品能够及时、准确地送达客户手中。这些举措不仅提升了EPT的市场竞争力,也为其未来的发展奠定了坚实的基础。

Cooper Tools(Eaton)公司的发展小趣事

EPT Connectors公司一直注重产品品质的管理和提升。公司建立了严格的质量管理体系,从原材料采购到产品制造、检测等各个环节都进行严格把关。同时,EPT还积极引进先进的生产设备和技术,不断提升产品的质量和性能。这些努力使得EPT的产品在市场上赢得了良好的口碑和客户的信任。许多知名电子企业都选择EPT作为他们的连接器供应商,这也进一步推动了EPT的发展。

问答坊 | AI 解惑

电池技术面面观

电池技术面面观电池技术已经历了漫长的发展历程,但是其核心技术仍然是依赖于其根源。   任何便携式电子装置都必须依赖于电池而存在。最古老的便携式电子装置大约出现在2000多年以前,它们是使用铜、铁和醋来产生微弱的电压的。电池(组)、电池 ...…

查看全部问答>

请教:sc32410的DMA的nXDREQ0和nXDREQ1两个外部源的问题

各位:      我在关于DMA驱动的事情。在ARM外接一块FPGA进行DMA数据传输。想用nXDREQ0为DMA请求源。在datasheet上面写道DREQ与DACK与HCLK同步。我不大理解什么意思?nXDREQ0是在FPGA端发起的,请问nXDREQ0这个在FPGA应该怎么 ...…

查看全部问答>

evc下获取汉字内码后取字模

Hi,各位,请教一下: 1.在evc下是如何获取汉字的内码的?假设汉字为“房”,其内码为623F,在GB2312则为2331,如果知道GB2312下的内码怎样转换成Unicode下的内码? 2.在CE4.2下,系统的字库文件应该是simsum.ac3(如果我没错的话),那么如何根据 ...…

查看全部问答>

不知道有没有人能够提供一下PtReceivePacket中修改封包的方法??

比如现在有两台电脑,称为A和B,B机通过A机连接到网络,也就是说B机访问任何网页A机都可以查看到,但现在我希望B机在IE中输入www.163.com的时候,网页出现的是www.sina.com.cn的内容。 大体上应该是这样: B机输入163网址以后,会有一个GET请求 ...…

查看全部问答>

生成SOPC时遇到错误

用demo程序重新生成SOPC时遇到下面的错误提示: Error: Failed to refresh PTF fileInfo: Finished elaborating PTF file.Executing: C:/altera/91/quartus//sopc_builder/bin/sopc_builder --classic --generate D:/DE3_NET_340_GMII_NET0/DE3_SO ...…

查看全部问答>

关于PIC单片机的存储器问题?PIC单片机存储器分4体,(PIC16F877A)

PIC单片机存储器分4体,(PIC16F877A),为什么要分四体啊?PIC单片机存储器分成4页,为什么在不同页里有相同的寄存器呢?这样他们的地址就不一样了,那不是很麻烦吗?例如PORTB在Bank0里地址是06H,在Bank2里是106H?为什么会这样呢?…

查看全部问答>

【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第十七章 OLED显示实验

第十七章 OLED显示实验 前面几章的实例,均没涉及到液晶显示,这一章,我们将向大家介绍OLED的使用。在本章中,我们将使用战舰STM32开发板上的OLED模块接口(与摄像头共用的这个),来点亮OLED,并实现ASCII字符的显示。本章分为如下几个部分:17 ...…

查看全部问答>

有关shell的问题

本人通过ftp把VxWorks镜像下载到TigerSharc201主板上运行。在调试的过程中,本想 通过键盘输入命令行来查看任务的执行情况,但不知为何键盘无法输入,只好通过远程调试。在调试的时候碰到这样的问题,怎么解决?我的shell是那出问题了????求解 ...…

查看全部问答>

求助CD4000系列和74CH系列芯片的集成库

急求CD4000系列和74CH系列芯片的集成库,作为个新人,在Altium desinger09画图时,PCB导入时,全显示Unkonw pin.好像是引脚定义不对,但又不知道怎么改?各位看看能帮帮忙不?…

查看全部问答>

大年初二,3d打印组装进度。。

话说,这几天天天出去,好累,组装进度慢慢慢。 这几天把挤出机部分装了,有这么几个问题。 第一个是这个连接件,就是螺丝刀指的位置,这个有点厚,直接导致了他在铝合金框架上不能固定,于是使用了神器把中间那里磨平了一部分。 上神器, 哈哈 ...…

查看全部问答>