基于AVR单片机的步进电机控制器设计Word文档下载推荐.docx
- 文档编号:20632312
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:30
- 大小:270.28KB
基于AVR单片机的步进电机控制器设计Word文档下载推荐.docx
《基于AVR单片机的步进电机控制器设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于AVR单片机的步进电机控制器设计Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
1.2我国步进电机发展………………………………………………………………………1
1.3步进电机应用的前景……………………………………………………………………1
第二章、步进电机控制系统………………………………………………………………………2
2.1步进电机控制系统………………………………………………………………………2
2.2控制单元…………………………………………………………………………………2
2.3驱动电路…………………………………………………………………………………2
2.4通信端口…………………………………………………………………………………3
2.5其它………………………………………………………………………………………3
第三章、Atmega16L单片机………………………………………………………………………4
3.1Atmega16L主要功能……………………………………………………………………4
3.2Atmega16L引脚功能……………………………………………………………………4
第四章、控制器电路图……………………………………………………………………………6
第五章、步进电动机原理与控制…………………………………………………………………8
5.1步进电动机的结构………………………………………………………………………8
5.2步进电动机的控制原理…………………………………………………………………8
5.3L297/L298………………………………………………………………………………8
5.3.1L297芯片简介……………………………………………………………………8
5.3.2L298芯片简介……………………………………………………………………9
5.3.3L297/298步进电机控制…………………………………………………………9
5.3.4控制机制…………………………………………………………………………10
第六章、实现……………………………………………………………………………………11
6.1main主程序流程图……………………………………………………………………11
6.2程序代码………………………………………………………………………………12
第七章、结构图…………………………………………………………………………………30
结论………………………………………………………………………………………………31
参考文献…………………………………………………………………………………………32
致谢………………………………………………………………………………………………33
附录………………………………………………………………………………………………34
第一章、引言
1.1步进电机发展史
步进电机又称电动机或阶跃电动机,国外一般称为Stepmotor或Steppingmotor等。
步进电机的机理是基于最基本的电磁铁作用,其原始模型起源于1830年至1860年间。
1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中。
这被认为是最初的步进电动。
此后,在电话自动交换机中广泛使用了步进电动机。
不久又在缺乏交流电源的船舶和飞机等独立系统中广泛使用。
20世纪60年代后期,随着永磁性材料的发展,各种实用性步进电动机应运而生,而半导体技术的发展则推进了步进电动机在众多领域的应用。
在近30年间,步进电动机迅速地发展并成熟起来。
从发展趋向来讲,步进电动机已经能与直流电动机、异步电动机,以及同步电动机并列,从而成为电动机的一种基本类型。
1.2我国步进电机发展
我国步进电动机的研究及制造起始于本世纪50年代后期。
从50年代后期到60年代后期,主要是高等院校和科研机构为研究一些装置而使用或开发少量产品。
这些产品以多段结构三相反应式步进电动机为主。
70年代初期,步进电动机的生产和研究有所突破。
除反映在驱动器设计方面的长足进步外,对反应式步进电动机本体的设计研究发展到一个较高水平。
70年代中期至80年代中期为成品发展阶段,新品种高性能电动机不断被开发。
自80年代中期以来,由于对步进电动机精确模型做了大量研究工作,各种混合式步进电动机及驱动器作为产品广泛利用。
1.3步进电机的应用前景
目前,随着电子技术、控制技术以及电动机本体的发展和变化,传统电机分类间的界面越来越模糊。
步进电机必然会成为机电一体化元件组件的必然趋势。
由于步进电机具有控制方便、体积小等特点,所以在数控系统、自动生产线、自动化仪表、绘图机和计算机外围设备中得到广泛应用。
微电子学的迅速发展和微型计算机的普及与应用,为步进电动机的应用开辟了广阔前景,使得以往用硬件电路构成的庞大复杂的控制器得以用软件实现,既降低了硬件成本又提高了控制的灵活性,可靠性及多功能性。
市场上有很多现成的步进电机控制机构,但价格都偏高。
应用SGS公司推出的L297和L298两芯片可方便的组成步进电机驱动器,并结合Atmega16L单片机可以构成很好的步进电机控制系统。
第二章、步进电机控制系统
2.1步进电动机控制系统
步进电动机本体、步进电动机驱动电路和控制单元构成步进电动机系统不可分割的三大部分。
系统框图见下图2-1:
图2-1步进电动机系统框图
2.2控制单元
控制单元、驱动电路为控制系统的核心部分。
控制单元是整个系统最核心的部分,是系统的指挥中心。
用于协调各部分的运行,主要负责接收通信端口或输入电路送来的信息,并对其进行识别,译码,并做出相应的动作,发出控制信号用以控制步进电动机。
控制单元实质上是具有处理能力的微处理器芯片。
控制单元可以由:
单片机、DSP、PLC等充当。
本文选用由ATEML公司生产的Atmega16l单片机。
2.3驱动电路
驱动电路是负责将控制单元送来的微电流信号进行放大用以驱动步进电动机运转,驱动电路实质上是功率放大器。
常见的驱动电路:
单电压型功放电路、高低压切换型功放电路、斩波恒流功放电路等再就是采用专用的集成芯片。
本文采用L297/L298芯片,由这两种芯片构成的驱动电路具有控制方便、精度高、并且不需要外围扩展。
2.4通信端口
通信端口是步进电机控制器与上位机(主要是指计算机)进行通信的接口,PC机串口采用的通信标准RS-232标准。
使用单片机的USART端口与计算机的串口(9芯)相连进行通信。
2.5其它
显示屏:
人机交互的窗口,使用JHD162A液晶屏。
输入电路:
用于输入控制信息,告诉控制器如何运转。
第三章、Atmega16L单片机
Atmega16L是由ATMEL公司生产的高性能、低功耗的8位AVR®
微处理器芯片,具有16KB系统内可编程Flash。
3.1Atmega16L主要功能
Atmega16L单片机的功能及特点简述如下:
1、16KB的系统内编程flash、512B的EEPROM、1KB的SRAM;
2、四通道的PWM;
3、两个可编程串行USART;
4、可工作于主机/从机模式的SPI;
5、具有独立片内振荡器的可编程看门狗定时器;
6、片内/片外中断源;
7、32个双向I/O端口,可单独控制;
8、TWI模块;
9、3个定时计数器等。
3.2Atmega16L引脚功能
Atmega16L双列直插式(PDIP)引脚如图3-1:
图3-1Atmega16L(PDIP)图
引脚功能简述如下:
A/VCC:
模拟/数字电源;
AREF:
A/D转换参考电压;
XTAL1/2:
晶振;
RESET:
复位;
AREF:
PA~PD:
双向I/O口;
TXD:
USART输出引脚;
RXD:
USART输入引脚;
OC1A:
PWM波形输出端;
注:
USART,是一个高度灵活的串行通讯设备,通用同步和异步串行接收器和转发器的英文缩写。
第四章、控制器电路图
原理图说明:
本原理图,用Protel99se绘制。
以总路线和网络标号连接,即相同的的网络标号具有电气连接。
Jrs----------RS-232串口;
Rp-----------Vref调节电阻;
LM2575-------稳压片;
JVCC---------电源接入口(俗称火牛头);
Jlcd---------JHD162A液晶屏接口;
JM-----------步进电机接线口;
JTAG---------仿真下载器连接口;
LED_B--------电源指示;
MAX-202------电平转换芯片;
L297/298-----构成相序产生电路和驱动电路;
放大图见附录。
第五章、步进电动机原理与控制
从广义上讲,步进电动机的类型分为机械式、电磁式和组合式三大类型。
5.1步进电动机的结构(图5-1)
图5-1HB型步进电动机结构示意图
5.2步进电动机的控制原理
步进电机是一种将电脉冲信号变为相应的直流位移的数字/模拟变换器。
每当电机绕组接收一个脉冲时,转子就转过一个相应的角度(步距)。
步进电机的角位移量和输入脉冲的个数严格成正比。
在时间上与输入脉冲同步,因而只要控制输入脉冲的数量、频率和电机绕组的相序,即可获得所需要的转速和转动方向。
5.3L297/L298
5.3.1L297芯片简介
L297芯片是一种硬件环分集成芯片,它可产生四相驱动信号,用于两相双极或四相单极步进电动机的控制。
它的心脏部分是一组译码器它能产生各种所需的相序,这一部分是由两种输入模式控制,方向控制(CW/CCW)和HALF/FULL,步进式时钟CLOCK将译码器从一阶梯推进至另一阶梯。
译码器有四个输出点连接到输出逻辑部分,提供抑制和斩波功能所需的相序。
L297能产生三种相序信号,对应于三种不同的工作方式:
即半步方式(HALFSTEP);
基本步距(FULLSTEP)一相激励方式;
基本步距两相激励方式。
L297另一个重要组成是由两个PWM斩波器来控制相绕组电流,实现恒流斩波控制以获得良好的矩频特性。
5.3.2L298芯片简介
L298芯片是一种高压、大电流双全桥式驱动器,其设计是为接受标准TTL逻辑电平信号和驱动电感负载的,例如继电器、圆筒形线圈、直流电机和步进电机,具有两抑制输入来使器件不受输入信号影响。
每桥的三级管的射极是连接在一起的,相应外接线端可用来连接外设传感电阻。
可安置另一输入电源,使逻辑能在低压下工作。
L298芯片是具有15个引出脚的多瓦数直插封闭的集成芯片。
5.3.3L297/298步进电机的控制
L297/298的连接如下图5-2:
图5-2L297/298连接图
这里我只使用:
半步工作方式和两相激励的基本步距工作方式。
两种工作方式见下表5-1:
工作方式
半步工作方式
两相激励基本步距
引脚状态
HALF/FULL=1,CONTROL=1
HALF/FULL=0,CONTROL=1
输出
波形
表5-1L297半步/两相激励基本步距工作方式
采用基本步距一相激励,存在一个缺点,在电流切换过程即通电状态改变过程中,有一瞬间可能所有的定子控制绕组都不通电,电磁转矩瞬间为零,这就使得电磁转距在电机运行中波动很大。
所以我不采用这种工作模式。
5.3.4控制机制
L297/298组成的完整系统,通过不同的连接可以驱动两相步进电动和驱动四相步进电机(可承受的最高电压为45V,每相电流可达2A)。
单片机(简称mcu)发出时钟信号、正反转信号、工作模式信号、复位信号、使能信号及控制信号。
CW/CCW控制电机的转向,取1和取0时转向相反。
CLOCK为步进脉冲信号输入端,在每一个脉冲的下降沿,电机产生一步步进。
HALF/FULL为半步或基本步距模式设置,为1时是半步模式,为0时是基本步距。
(具体组合方式见表5-1)CONTORL斩波控制,当为0时,控制INH1和INH2;
当为1时控制ABCD。
ENABLE使能输入,当为0时,INH1、INH2、A,B,C和D都为0。
RESET输入,当为0时,脉冲分配器回到初状态(HOME)。
L297通过控制L298双H集成电路,来驱动步进电机。
电路中,L297的15引脚上的两个电阻用来调节斩波器电路的参考电压。
该电压通过管脚13、14所反馈的电位的大小比较,来确定是否进行斩波控制,以达到控制电机绕组电流峰值、保护步进电机的目的。
综上所述:
步进电机的转速取决于CLOCK的脉冲频率,角位移取决于CLOCK的脉冲个数,转矩大小则取决于参考电压Vref的大小。
第六章、实现
6.1main主程序流程图
6.2程序代码
//***************************head.h************************************
#ifndef_HEAD_H
#define_HEAD_H
#include<
avr/io.h>
util/delay.h>
avr/interrupt.h>
avr/signal.h>
math.h>
#defineTOPOCR1A
#definePWMCONREG1TCCR1A
#definePWMCONREG2TCCR1B
#definePWM_IODDRD|=_BV(PD5)
#defineL297_DIRPORTD
#defineL297_OUTDDRD|=0xfc
#defineRESET0X40
#defineHF0X08
#defineCC0X10
#defineCONTROL0X80
#defineS_RESETL297_DIR|=RESET
#defineC_RESETL297_DIR&
=~RESET
#defineHALFL297_DIR|=HF
#defineFULLL297_DIR&
=~HF
#defineCWL297_DIR|=CC
#defineCCWL297_DIR&
=~CC
#defineS_CONTROLL297_DIR|=CONTROL
#defineC_CONTROLL297_DIR&
=~CONTROL
#defineADC_OUTDDRA//ADC模数转换寄存器宏
#defineADCWAYREGADMUX
#defineADCCONREGADCSRA
#defineADCIOSFRSFIOR
#defineADCDATLADCL
#defineADCDATHADCH
#defineADCDATADC
#defineAD_ENADEN
#defineAD_SCADSC
#defineMODE11//半步工作
#defineMODE22//基本步距
#defineHALFMODESTR"
HALFSTEPMODE?
"
//工作方式字符串宏
#defineNORMALSTR"
NORMALMODE?
#defineCORRECTSTR"
correct?
#defineMINUSTR"
minus?
#defineSTRWAY1"
1.on-offmode"
#defineSTRWAY2"
2.dot-placemode"
#defineCORRECT'
+'
#defineMINUS'
-'
#defineSEIsei()
#defineCLIcli()
#defineOPEN_CMP1ATIMSK|=_BV(OCIE1A)
#defineCLOSE_CMP1ATIMSK&
=~_BV(OCIE1A)
#defineSTEP500
#defineN50
#defineKEY_INDDRC&
=0X3C//KEY初始化宏定义
#defineKEY_PINPINC
#defineK1KEY_PIN&
0X01
#defineK2KEY_PIN&
0X02
#defineK3KEY_PIN&
0X40
#defineK4KEY_PIN&
0X80
#defineSET1"
1.Setfrequency!
#defineSET2"
2.Setmode!
#include"
whole_variable.c"
key.c"
JHD162A.c"
ADC.c"
pwm.c"
L297.c"
interrupt_def.c"
#endif
//***********************head.h(结束)**********************************
//***********************whole_variable.c******************************
unsignedlongn,counter,topfix,vn,n1,n2,fre=1000,ps;
unsignedcharmode=1,direction='
key_value,ch='
1'
key1_temp,key2_temp;
unsignedcharstr_mode[20]="
1.wave_mode?
str_mode1[20]="
str_mode2[20]="
;
unsignedcharstr_way[20]="
pulse[10]="
000000000"
cursor_i,pulse_i,ky,adc_str[5];
//*********************whole_variable.c(结束)**************************
//**************************key.c**************************************
head.h"
unsignedcharkey(void)
{
unsignedcharkey_value;
key_value=(KEY_PIN&
0XC3)^0xc3;
if(key_value)//是否有键按下,无返回'
0'
有进入{}
{
switch(key_value)
case0x01:
{while((KEY_PIN&
0XC3)^0xc3);
return'
;
}
case0x02:
2'
case0x40:
3'
case0x80:
4'
}
else
return(0);
//***********************key.c(结束)***********************************
//**************************JHD162A.c********************************
#defineLCD_DIRDDRB//方向寄存器
#defineLCD_DARPORTB//数据寄存器
#defineRS_HLCD_DAR|=0x04//RS----PB2
#defineRS_LLCD_DAR&
=0xfa
#defineE_HLCD_DAR|=0x08//E-----PB3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 AVR 单片机 步进 电机 控制器 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)