AVR单片机对舵机的精确控制资料下载.pdf
- 文档编号:16086522
- 上传时间:2022-11-19
- 格式:PDF
- 页数:3
- 大小:810.41KB
AVR单片机对舵机的精确控制资料下载.pdf
《AVR单片机对舵机的精确控制资料下载.pdf》由会员分享,可在线阅读,更多相关《AVR单片机对舵机的精确控制资料下载.pdf(3页珍藏版)》请在冰豆网上搜索。
二、舵机简介舵机英文叫Servo,也称伺服电机。
其特点是结构紧凑、易于安装调试、控制简单、大扭力、成本较低等。
舵机的主要性能取决于最大力矩和工作速度(一般是以秒/60度为单位),适用于那些需要角度不断变化并保持的控制系统。
舵机通常采用脉宽调制信号(PWM)控制,既给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。
其控制信号的周期是20ms的脉宽调制(PWM)信号,如图1所示其中脉冲宽度从0.52.5ms,相对应舵盘的位置为0180角,呈线性变化。
作者/赵田AVR单片机对舵机的精确控制图1舵机输出转角与输入信号脉冲宽度的关系三、硬件连接Atmega16最小系统见图2所示,在此我们采用Atmega16的PA0(ADC0)口作为控制器的输入端连接电位器中间一脚,电位器两边引脚分别接电源VCC和GND。
旋转电位器便可输出连续变化的电压,此时通过Atmega16内部10位精度的AD实时采样,将输入的模拟量进行转化,进而调节PWM的输出占空比。
舵机共有三根输入线,分别是电源线VCC、地线GND和控制信号线(见图3)。
在这里我们采用Atmega16的16位定时器/计数器实现PWM信号的精确输出。
输入正脉冲宽度(周期为20ms)0.5ms-90-45459001.0ms1.5ms2.0ms2.5ms伺服电机输出臂位置单片机制作MCU252011.05四、AD采样程序分析在这里采用Atmega16片内2.56V的基准电压,0通道输入连续转换模式。
在默认条件下,逐次逼近电路需要一个从50kHz到200kHz的输入时钟以获得最大精度,ADC模块包括一个预分频器,它可以由任何超过100kHz的CPU时钟来产生可接受的ADC时钟,在此我们选用8M晶振64分频。
ADC通过逐次逼近的方法将输入的模拟电压转换成一个10位的数字量,存放于ADC数据寄存器ADCH及ADCL中,我们只要读取这个数字量并转换成所需整型即可,具体过程由以下程序完成。
图2Atmega16最小系统图3舵机及AD输入12345678910123456789101234567891012345678910123456784039383736353433222324252627282913579246810108642975313231301415161718192021913X2R21KX13k3k3kR3R4R512D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7PB0(T0)PB1(T1)PB2(AIN0)PB3(AIN1)PB4(SS)PB5(MOS1)PB6(MIS0)PB7(SCK)PD0(RXD)PD1(TXD)PD2(INT0)PD3(INT1)PD4(0C1B)PD5(0C1A)PD6(ICP)PD7(TOSC2)RESTX1X2RXDTXDINT0INT1PD4PD5PD6PD7PA0(ADC0)PA1(ADC1)PA2(ADC2)PA3(ADC3)PA4(ADC4)PA5(ADC5)PA6(ADC6)PA7(ADC7)APC0APC1LEDLKSECLKBITLK18820BEEPCSLSBSCLSDATCKTMSTD0TD1PC6PC7PC0(SCL)PC1(SDA)PC2(TCK)PC3(TMS)PC4(TD0)PC5(TDI)PC6(T0SC1)PC7(T0SC2)VCCVCCVCCVCCVCCAREFGNDAVCCVCCU1J1J3J4PAPCJ2PHPDVCCVCCVCCD5D6D7RESETTD1TMSTD0TCKVCCVCCVCCVCCR8RESETRESET22PF22PF8MH2Y110kC1C2C3RESETX1X2JP1JP2RESETRXDTXDINT0INT1PD4PD5PD6PD7J2PD5VCCDJADC0123VCCR110k单片机制作MCU26voidADC_init(void)/AD初始化子函数ADCSRA=0xE4;
/ADC使能;
ADC开始转换;
连续转换;
64分频ADCSRA|=(1ADEN)|(1ADSC)|(1ADATE)|(1ADPS2)|(1ADPS1);
可采用ADC中断ADMUX=0xC0;
/内部2.56V参考电压;
输入通道为PD0;
输出结果右对齐uintADC_convert(void)/模数转换子函数uinttemp1,temp2;
temp1=(uint)ADCL;
temp2=(uint)ADCH;
/取得模数转换值temp2=(temp28)+temp1;
return(temp2);
uintConv(uinti)/数据转换子函数longx;
uinty;
x=(5000*(long)i)/1024;
/将变量i转换成需要现实的形式1024份=2的10次方(低8位高两位)y=(uint)x;
/x强制转换成整型returny;
五、舵机控制程序分析在此部分我们使用相位与频率修正PWM模式(简称相频修正PWM模式)可以产生高精度的、相位与频率都准确的PWM波形。
我们通过AD采样得出的1500连续变化的整数来控制输出周期为20ms,脉宽为0.52.5ms的脉冲,进而控制舵机由-9090角的连续变化。
voidPwm_init(void)DDRA|=(110)adc_val=ADC_convert();
dis_val=Conv(adc_val);
AD_val=dis_val/10;
cnt=0;
delay(1000);
Pwm_vary();
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AVR 单片机 舵机 精确 控制
![提示](https://static.bdocx.com/images/bang_tan.gif)