AVR单片机控制舵机

发布者:阳关三迭最新更新时间:2012-08-02 来源: 21ic 关键字:AVR单片机  控制舵机  信号调制 手机看文章 扫描二维码
随时随地手机看文章

什么是舵机:

舵机如下所示:

  点击浏览下一页

有三根线,一般依次是地,电源(5V左右),信号(信号的幅值>=3.3V),不清楚各个脚打开舵机一测量就知道了。

2.其工作原理是:

控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。

3.舵机的控制:

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:

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

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

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

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

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

重要说明:

1:上面部分还是成线形关系的,Y=90X-45(X单位是ms,Y单位是度数:)

2:上面所说的0度 45度等是指度 45度位置(什么意思呢:我说明一下就知道了,就拿45度位置来说,若舵机停在0度位置,下载45度位置程序后则舵机停在45度,即顺时针走了45度,若当时舵机在135度位置,则反转90度到45度位置。所以舵机不存在正转反转问题。这点非常重要。

3:若想转动到45度位置,要一直产生1.0ms的高电平(即PA0=1;Delay(1ms);PA0=0;Delay(20ms);要不停的产生这个高低电平,产生PWM脉冲

请看下形象描述吧:

 点击浏览下一页

下面是我在ATMEGA32上的测试程序,开发软件:ICC AVR[page]

#include 


typedef struct BYTE_BIT
{
      unsigned BIT0:1;
      unsigned BIT1:1;
      unsigned BIT2:1;
      unsigned BIT3:1;
      unsigned BIT4:1;
      unsigned BIT5:1;
      unsigned BIT6:1;
     unsigned BIT7:1;
}BYTEBIT;
#define SET_BIT8_FORMAT(Addr)     (*((volatile BYTEBIT *)&Addr)) 
# define PORTB_BIT     SET_BIT8_FORMAT(PORTB)

# define _PB0        PORTB_BIT.BIT0
# define _PB1        PORTB_BIT.BIT1
# define _PB2        PORTB_BIT.BIT2
# define _PB3        PORTB_BIT.BIT3
# define _PB4        PORTB_BIT.BIT4
# define _PB5        PORTB_BIT.BIT5
# define _PB6        PORTB_BIT.BIT6
# define _PB7        PORTB_BIT.BIT7


/*delay(1)延时时间为300US
delay(80)延时时间为20mS
delay(4)延时时间为1mS
delay(8)延时时间为2mS
delay(6)延时时间为1.55mS
delay(2)延时时间为0.55MS
delay(10)延时时间为2.5mS
*/

void Delay(int j)
{     

    int i;
     for(;j>0;j--)
    { 
          for(i=0;i<35;i++);

    }
}




void main(void) 

{
     int i,j;
     DDRB=0XFF;
     while(1)
    {
           //2.0ms   135度位置
          _PB7=1;

           Delay(8);
         _PB7=0;

         Delay(74);

         /*
         //1.0ms   45度位置
        _PB7=1;

        Delay(4);
        _PB7=0;

        Delay(78);
   
         //1.5ms   90度位置
       _PB7=1;

         Delay(6);
         _PB7=0;

         Delay(78);



        // 2.5ms   180度位置
        _PB7=1;

        Delay(10);
       _PB7=0;

         Delay(72);

       //0.5ms         0度位置

     _PB7=1;

       Delay(2);
        _PB7=0;

        Delay(78);

        */
     }

}
关键字:AVR单片机  控制舵机  信号调制 引用地址:AVR单片机控制舵机

上一篇:AVR单片机密码锁程序
下一篇:基于AVR的4*4矩阵键盘扫描与LED显示程序

推荐阅读最新更新时间:2024-03-16 13:04

基于AVR单片机的PT2262软件解码程序分享
很多PT2262软件解码程序,都是用定时器测量脉冲宽度。占用系统太多资源。我自己编写的程序不用定时器,不用中断,代码最少。但耗CPU,发射端为PT2262 3.3M 的电阻 接收端为 M8 内部1M RC振荡。解码成功后输出D口显示。编译软件为 ICCAVR。 以下是avr单片机源码: #include iom8v.h #include macros.h void delay_ms(void) //毫秒延时 { unsigned int i; for (i=0;i 140;i++) { } } void delay_nms(unsigned int n)
[单片机]
基于<font color='red'>AVR单片机</font>的PT2262软件解码程序分享
AVR单片机RC触摸
RC电容触摸感应按键 1:RC感应原理 RC采样原理就是通过测量感应极电容的微小变化,来感知人体对电容式感应器(按键、轮键或者滑条)的感应。电极电容(C)通过一个固定的电阻(R)周期性地充放电。 iframe id="iframe_0.8223286713473499" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://cache.ourdev.cn/bbs_upload782111/files_16/ourdev_458296.png?_=3186888%22%20style=%22border:none;max-width:1333px
[单片机]
<font color='red'>AVR单片机</font>RC触摸
avr单片机proteus仿真第四课:控制继电器
继电器(Relay),作用是用弱电控制强电。比如,我们用avr单片控制一个220V电压的灯泡,这就必须用到继电器。 本课用avr单片机来控制继电器的吸合与断开。 Proteus仿真实验器件: 1 atmega128一块 2 button,按键一个 3 relay,通用继电器一个,并把继电器的Component Value设置为5V 4 pnp三极管一个 5 LAMP,灯泡一个改为220V 6 resistor 1k 7 DIODE 二极管一个 这个程序实际上很简单,主要要学习继电器的用法,注意的是,继电器必须接一个二极管。 仿真程序如下: #include avr/io.h #include util/delay.h #def
[单片机]
<font color='red'>avr单片机</font>proteus仿真第四课:<font color='red'>控制</font>继电器
AVR单片机(ATMEGA16)定时器程序
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #pragma interrupt_handler timer1:9 uchar i,temp; void delay(uint x) { uint y,z; for(y=x;y 0;y--) for(z=1111;z 0;z--); } void main(void) { i=0; temp=0x01; TCCR1B=0x04; //T/C1时钟源,256分频 TCNT1H=0x85;
[单片机]
<font color='red'>AVR单片机</font>(ATMEGA16)定时器程序
MSP430f5529之PWM控制舵机程序
#include msp430.h //函数库 int sum=0; //全局变量 int main(void) { volatile unsigned int i; //局部变量 //设置timerA相关参数 WDTCTL = WDTPW+WDTHOLD; // 关闭看门狗 P1DIR |= BIT2; // 将P1.2设置为输出端口,验证状态 P2DIR |= BIT0; //P2.0输出PWM波 TA0CCTL1 = OUTMOD_7;
[单片机]
基于AVR单片机射频卡多协议读写器的设计
  引言   射频识别(RFID)是利用无线方式对电子数据载体(电子标签)进行识别的一种新兴技术。与接触式IC卡和条形码识别等系统比较,它有着巨大的优势。利用射频识别技术,能有效实现对数量大、分布区域广的信息进行智能化管理,达到高效快捷运作的目的,特别是在第二代身份证、物流、交通航运、自动收费、超市、门禁系统管理、服务领域等方面有着广泛的应用前景。随着我国国民经济的快速发展,国内RFID行业也正经历着深刻的变革。   RFID系统一般是由读写器、射频卡、应用软件来组成。其中读写器的设计是至关重要的,它决定了系统的稳定性和准确性。   除了要求其能支持一系列协议、标准和收发器外,对读写器可能还有其它功能性方面的要求,如高性能、
[单片机]
于十天学会AVR单片机的教程头文件
最近开始学习AVR单片机,由于之前买的51开发板是兼容AVR单片机的,所以就没有必要开发板了。于是从网上找了一个教程《十天学会AVR单片机》,也是郭天祥公司的人讲的,觉得还可以。因为没有买开发板,所以没有AVR_PQ1A.h这个头文件,这头文件定义了寄存器等,非常好用,所以有必要下下来解读。 /* 文件:AVR_PQ1A.H 功能:定义一些AVR_PQ1A开发板上应用程序用到的常量 // #include iom16v.h //包含型号头文件 #include macros.h //包含 位 操作头文件 /数据类型宏定义/ #define uchar unsigned char #define uint unsigned
[单片机]
采用AVR单片机制被动式红外线报警器实验
本实验将制做一个简单的被动式红外线防盗报警器。该报警器由红外线发射、接收、蜂鸣器和LED指示灯组成。正常情况下,绿色的LED常烁,表示监控区域正常。一旦监控区域有人闯入,绿色LED熄灭,红色的LED快速闪烁,同时蜂鸣器立即报警。 实验器材 需要准备的器材:Atmega8、红色LED一只、绿色LED一只、万能实验板一块、5V电源、电阻、TTL0038或者其他类似38KHZ的红外接收头、5V长鸣型蜂鸣器。 线路图: 实验电路图及工作原理 该电路工作原理非常简单,Atmega8的PD0端口输出经过调制的38KHZ的方波信号,然后经Q2驱动红外线发射管LED0发出红外线信号。TL0038是集红外线信号接收放大为一体的接收器。其中心接
[单片机]
采用<font color='red'>AVR单片机</font>制被动式红外线报警器实验
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved