二相步进电机控制系统的设计.docx
《二相步进电机控制系统的设计.docx》由会员分享,可在线阅读,更多相关《二相步进电机控制系统的设计.docx(17页珍藏版)》请在冰豆网上搜索。
二相步进电机控制系统的设计
摘要
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。
研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。
本控制系统的设计,由硬件设计和软件设计两部分组成,完成二相步进电机的控制。
其中,硬件设计主要包括单片机系统、按键控制模块、步进电机驱动模块、数码显示模块等功能模块的设计,以及硬件电路在PROTUS上的仿真。
软件设计包括主程序以及各个模块的控制程序,最终实现对步进电机转动方向及转动模式(四拍,八拍)的控制,并且将步进电机的步进数动态显示在LED数码管上。
本系统具有智能性、实用性及可靠性的特点。
关键词:
二相步进电机单片机四拍八拍LED显示
Abstract
Withthedevelopmentofmicroelectronicsandcomputerart,step-by-stepelectricmotorneedamountsincreasewitheachpassingday,itisusedfortheproductsconsumingakindsuchasprinter,electricity-driventoybroadlyandnumericalcontrolmachinetool,electromechanicalproductssuchasindustryrobot,medicalapparatusandinstrumentsarehitby,thepersonappliestoeachnationaleconomyfieldItboth.Studystep-by-stepelectricmotornavar,havingimportancetoimprovingunderthecontrolofaccuracyandrespondingtospeed,theenergysavingandsoon.Controlsystematicdesignoriginally,themadeupofdesigningtwopartsfromthehardwaredesignandthesoftware,controllingaccomplishingtwo-phasestep-by-stepelectricmotor.Andamongthem,thehardwaredesignincludesthemonolithicmachinesystemmainly,buttonunderthecontrolofmodule,step-by-stepelectricmotordrivefunctionmoduledesignsuchasmodule,numericalcodedisplaymodule,hardwarecircuitemulationonPROTUS.Thesoftwaredesignsunderthecontrolofprocedureincludingthehostprocedureandeachmodules,realizescontrollingturningdirectiontostep-by-stepelectricmotorandturningthepattern(fourshoot,eightshoots)ultimately,step-by-stepelectricmotorstep-by-stepnumberdevelopmentisdemonstratedandonLEDnumericalcode.Systemhasintelligence,pragmatismandthereliabilitycharacteristic.
Keywords:
ElectricmotorMCUFourshootsEightshootsLEDdisplay
摘要.........................................................................I
1总体分析与解决方案.........................................................1
问题的提出与简述......................................................1
设计目的级系统功能....................................................1
2硬件电路设计模块..........................................................2
单片机系统原理........................................................2
二相步进电机工作原理分析..............................................5
2.3L298驱动电路设计.....................................................7
四位LED数码管显示设计...............................................7
总体硬件仿真设计.....................................................10
3软件设计模块..............................................................11
整体流程分析与设计...................................................11
步进电机四拍,八拍流程分析与设计......................................11
显示模块流程分析与设计...............................................14
4系统调试运行与仿真........................................................15
5小结与心得体会............................................................16
参考文献....................................................................17
附录........................................................................18
二相步进电机控制系统的设计
1总体分析与解决方案
问题的提出与简述
如今,电动机在工农业生产、人们日常生活中起着十分重要的作用。
步进电机是最常见的一种控制电机,在各领域中得到广泛应用。
步进电机作为执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统中。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
步进电机可以作为一种控制用的特种电机,其优点是结构简单、运行可靠、控制方便。
尤其是步距值不受电压、温度的变化的影响、误差不会长期积累的特点,给实际的应用带来了很大的方便。
它广泛用于消费类产品(打印机、照相机)、工业控制(数控机床、工业机器人)、医疗器械等机电产品中。
研究步进电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。
为此,本文设计了一个步进电机控制系统,可以实现对步进电机转动方式和转动方向的控制。
设计目的及系统功能
本设计的目的是以单片机为核心设计出一个二相步进电机控制系统。
本系统采用ATmega128作为控制单元,通过按键实现对二相步进电机转动方向及转动模式的控制,并且将步进电机的步进步数动态显示在LED数码管上。
通过本课题,查阅相关资料,由于本学期所学单片机课程型号为ATmega128,了解了ATmega128单片机控制的一些基本技术,掌握其控制系统的分析方法与实现方法,能对单片机外围电路设计进行系统学习与掌握;另一方面,通过设计步进电机控制系统的硬件电路,控制程序和相应的电路图,以此培养自己的自学和动手能力,从而为今后参加工作或进一步深造打下良好的基础。
设计的步进电机控制系统有以下功能:
1.二相步进电机采用双极性(H桥)控制
2.用K0-K1作为通电方式选择键,K0为四拍,K1为八拍
3.用K2作为启动/停止控制键
4.用K3作为方向控制
5.用4位LED数码管显示工作步数
6.用3个发光二极管显示状态:
正转时红灯亮,反转时黄灯亮,不转时绿灯亮
考虑到二相步进电机需采用双极性控制,故电机的驱动模块使用芯片L298实现,接线简洁,稳定性好。
选定好设计方案后,可以由分析得到系统的总体原理框图如下所示:
图1系统总体原理框图
2硬件电路设计模块
单片机系统原理
本次课题采用的单片机型号是ATmega128,ATmega128为基于AVRRISC结构的8位低功耗CMOS微处理器。
由于其先进的指令集以及单周期指令执行时,ATmega128的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
AVR内核具有丰富的指令集和32个通用工作寄存器。
所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。
这种结构大大提高了代码效率,并且具有比普通的复杂指令集微处理器高10倍的数据吞吐率。
ATmega128具有如下特点:
128K字节的系统内可编程Flash(具有在写的过程中还可以读的能力,即RWW)、4K字节的EEPROM,4K字节的SRAM、53个通用I/O口线、32个通用工作寄存器、实时时钟RTC、4个灵活的具有比较模式和PWM功能的定时器/计数器(T/C)、两个USART、面向字节的两线接口TWI、8通道10位ADC(具有可选的可编程增益)、具有片内振荡器的可编程看门狗定时器、SPI串行端口、与IEEE规范兼容的JTAG测试接口(此接口同时还可以用于片上调试),以及六种可以通过软件选择的省电模式。
ATmega128AVR有整套的开发工具,包括C编译器,宏汇编,程序调试器/仿真器和评估板。
芯片引脚图如下所示:
图2ATmega128的引脚图
本次课设所使用的单片机功能主要有单片机的I/O口以及定时器/计数器功能。
作为通用数字I/O使用时,所有AVRI/O端口都具有真正的读-修改-写功能。
这意味着用SBI或CBI指令改变某些管脚的方向(或者是端口电平、禁止/使能上拉电阻)时不会无意地改变其他管脚的方向(或者是端口电平、禁止/使能上拉电阻)。
输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。
所有的端口引脚都具有与电压无关的上拉电阻,并有保护二极管与VCC和地相连。
每个端口都有三个I/O存储器地址:
数据寄存器–PORTx、数据方向寄存器–DDRx和端口输入引脚–PINx。
数据寄存器和数据方向寄存器为读/写寄存器,而端口输入引脚为只读寄存器。
当寄存器SFIOR的上拉禁止位PUD置位时所有端口的全部引脚的上拉电阻都被禁止。
DDxn位于DDRx寄存器,PORTxn位于PORTx寄存器,PINxn位于PINx寄存器。
DDxn以来选择引脚的方向。
当DDxn为"1“时,Pxn配置为输出;否则为输入。
当引脚配置为输入时,若PORTxn为"1“,上拉电阻将使能。
如果需要关闭这个上拉电阻,可以将PORTxn清零,或者将这个引脚配置为输出。
复位时各引脚为三态,即使此时没有时钟在运行。
当引脚配置为输出时,若PORTxn为"1“,引脚输出高电平("1“),否则输出低电平(“0“)。
在(高阻态)三态({DDxn,PORTxn}=0b00)输出高电平({DDxn,PORTxn}=0b11)两种状态之间进行切换时,上拉电阻使能({DDxn,PORTxn}=0b01)或输出低电平({DDxn,PORTxn}=0b10)这两种模式必然会有一个发生。
通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。
如果使用情况不是这样子,可以通过置位SFIOR寄存器的PUD来禁止所有端口的上拉电阻。
在上拉输入和输出低电平之间切换也有同样的问题。
必须选择高阻态({DDxn,PORTxn}=0b00)或输出高电平({DDxn,PORTxn}=0b11)作为中间步骤。
其PROTUS仿真图如下所示:
图3ATmega128的仿真图
本次课设采用单片机的定时器/计数器功能的CTC模式,T/C(TCNT0)和输出比较寄存器(OCR0)为8位寄存器。
中断请求信号位于定时器中断标志寄存器TIFR。
与定时器相关的所有中断都可以通过定时器中断屏蔽寄存器TIMSK单独进行屏蔽。
在CTC模式(WGM01:
0=2)里OCR0寄存器用于调节计数器的分辨率。
当计数器的数值TCNT0等于OCR0时计数器清零。
OCR0定义了计数器的top值,亦即计数器的分辨率。
这个模式可以在极大程度上控制比较匹配输出的频率,也简化了外部事件计数的操作。
CTC模式的时序图如下所示。
计数器数值TCNT0一直增加直到TCNT0与OCR0匹配,然后TCNT0清零。
图4CTC模式的时序图
二相步进电机工作原理分析
步进电机一般分为永磁式(PM)、反应式(VR)和混合式(HB)3种类型。
目前,二相混合式步进电机的应用最为广泛。
图5为二相六线式步进电机的工作原示意图。
由图可知,它有2个绕组,且每个绕组都有一个中间抽头。
因此,二相步进电机也就有了6根引线。
当电机中的绕组通电后,其定子磁极产生磁场,将转子吸合到相应的磁极处。
若绕组在控制脉冲的作用下,通电方向使定子在顺时针方向轮流产生磁场,则电机可顺时针转动;通电方向使定子在逆时针方向轮流产生磁场,则电机可逆时针转动。
控制脉冲每作用一次,通电方向就变化一次,使电机转动一步,即一个步距角。
脉冲频率越高,电机转动也就越快。
本次课设所使用的二相步进电机需要采用双极性的接法。
双极性则是指步进电机线圈中电流的流动方向不是单向的,即绕组线圈中的电流有时沿某一方向流动,有时按相反方向流动。
步进电机的双极性驱动电路如图2-5所示它使用8个晶体管来驱动2组相位。
双极性驱动电路可以同时驱动四线式或六线式的二相步进电机。
对于二相六线式步进电机而言,2个绕组的中间抽头Vdd1和Vdd2都悬空。
根据步进电机的工作原理,当控制器给驱动器发出脉冲信号时,驱动器经过环形分配器和功率放大后,电机绕组通电的顺序为
其4个状态按顺序周而复始进行变化,电机转动;若通电时序就变为
时,电机就逆向转动。
步进电机运转时,当达林顿管Q1和Q4导通时,线圈中电流方向为A→
;当林顿管Q2和Q3导通时,线圈中电流方向为
→A。
可见,步进电机线圈中的电流方向在运转过程中是不断改变的。
图5二相步进电机原理图
图6双极性驱动电路
任务要求需要对二相步进电机进行四拍,八拍的控制。
其两者的区别在于通电时序的不一样,四拍的通电方式为:
,而八拍需要在此基础上进行细分,在中间插入,其通电方式为:
。
由对应的通电方式,在结合图6,便可以得到对应的单片机管脚,,,的电平变化情况,绘制出步进电机的四拍,八拍控制方式表格。
如下所示:
表1步进电机四拍控制通电方式
时序
单片机管脚位
通电的线圈
对应二进制数
转换16进制数
1
0
0
1
0
0010
02H
2
1
0
0
0
1000
08H
3
0
0
0
1
0001
01H
4
0
1
0
0
0100
04H
表2步进电机八拍控制通电方式
时序
单片机管脚位
通电的线圈
对应二进制数
转换16进制数
1
0
0
1
0
0010
02H
2
1
0
1
0
1010
0AH
3
1
0
0
0
1000
08H
4
1
0
0
1
1001
09H
5
0
0
0
1
0001
01H
6
0
1
0
1
0101
05H
7
0
1
0
0
0100
04H
8
0
1
1
0
0110
06H
由上述所得表格,便可以通过控制单片机I/O口输出高低电平变化来实现步进电机的四拍,八拍运转。
在编写程序时,设置好控制字,在I/O口做循环输出,便实现了单片机对步进电机的控制。
由于单片机单独代负载能力较差,步进电机与单片机之间需要接入步进电机的驱动电路。
2.3L298驱动电路设计
由课题任务要求可知,二相步进电机需采用双极性(H桥)控制,故考虑使用芯片L298来驱动步进电机。
L298N为双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。
在接入步进电机时,OUTl,OUT2,OUT3,OUT4接二相步进电机的
,二相步进电机的对应管脚以图6为准,input1~input4接单片机的I/O口,用来控制单片机的正反转以及四拍,八拍通电方式。
芯片的内部结构如下图所示:
图7L298内部结构图
由图6与图7比较可以看出,L298内部集成有2个H桥路,对应的输入接口为:
IN1位,IN2为,IN3为,IN4为。
对应的输出接口为:
OUT1接
,OUT2接
,OUT3接
,OUT4接
。
PROTUS仿真图为:
图8驱动电路PROTUS仿真图
四位LED数码管显示设计
任务要求需采用4位LED数码管显示工作步数,通过查阅相关资料,在仿真时采用型号7SEG-MPX4-CC共阴极数码管显示。
其PROTUS仿真图如下所示:
图9数码管显示仿真图
单片机的PD口接数码管输入管脚ABCDEFG以及DP(可以不用),PE口接4位数码管的片选端口1234,7段数码管对应的显示数值与输入信号的关系可以由下表得到。
表3七段数码管显示功能表
单片机管脚输入
显示
十六进制
PD0
PD1
PD2
PD3
PD4
PD5
PD6
A
B
C
D
E
F
G
1
1
1
1
1
1
0
O
3FH
0
1
1
0
0
0
0
1
06H
1
1
0
1
1
0
1
2
5BH
1
1
1
1
0
0
1
3
4FH
0
1
1
0
0
1
1
4
66H
1
0
1
1
0
1
1
5
6DH
0
0
1
1
1
1
1
6
7DH
1
1
1
0
0
0
0
7
07H
1
1
1
1
1
1
1
8
7FH
1
1
1
1
0
1
1
9
6FH
由上表可以得到显示数字与单片机管脚输入信号的对应关系。
只需要控制单片机的PD口输出信号即可显示数字,在程序设计中,定义7段显示数组为seven_seg[10]={0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f}即可使数码管显示数字。
总体硬件仿真设计
由前面各硬件部分的设计分析,以及控制系统的总体原理框图可以得到系统的硬件PROTUS仿真图为:
图10系统仿真原理图
通过硬件仿真图可以看到,以单片机ATmega128为核心的控制系统,由PA口与PB口进行开关按键的设置,具体为:
PB1接K2启动/停止开关,高电平为停止状态,低电平为启动状态;PA7接K3正/反转开关,高电平为正转,低电平为反转;PA0接K0四拍通电方式,按一次即可使电机进行四拍运转;PA2接K1八拍通电方式,按一次使电机进行八拍运转。
PE口与PD口外接4位LED数码管,显示步进步数,具体接线方式已在前面叙述,通过控制PE口的电平信号,达到片选的目的,进而实现4位数值的显示。
PF口作为输出口外接负载,具体由PF7接绿色发光二极管,使其在电机停转时亮;PF5接红色放光二极管,使其在电机正转时亮;PF4接黄色发光二极管,使其在电机发转时亮。
PF0-PF3外接驱动电路L298的4个输入端,具体为PF0接IN2,PF1接IN1,PF2接IN3,PF3接IN4;即对应图2-5的,L298再外接二相步进电机,这样即可通过控制单片机的PF口输出电平来实现二相步进电机的启动,停止,正反转以及四拍,八拍运转。
具体工作过程需通过对单片机编程来实现。
3软件设计模块
总体流程分析与设计
软件模块的分析需要根据硬件电路的设计来进行,基于上述硬件电路的分析设计,对整个程序流程需要有个整体的思考与判断。
由硬件电路的设计可以看出,程序需要实现以下几个功能:
通过开关按键实现电机的启用与停止,正转与反转,以及四拍,八拍的运行方式;由4位LED数码管实现步进步数的显示;3个发光二极管显示电机的状态。
程序设计的总体思想是单片机通过判断按键输入电平变化从而选择正反转以及四八拍的工作方式。
通过单片机的定时器/计数器2实现步数计数的功能;由定时器/计数器0实现单片机PF口输出正反转信号以及四拍,八拍控制字,同时发光二极管显示状态,主程序流程图如图3-1所示。
程序设计主要采用主程序调用子程序的模式来进行,定义子程序display()在主程序中循环实现单片机的持续运行。
在display()中,调用子程序saomiao()实现对按键的扫描以达到选定电机运行状态的目的,由if判断语句设计,先判断启动/停止按键接口PB1,接着判断正/反转按键接口PA7,设定变量flag(正转位0,反转为2),然后判断四八拍方式选择按键,此时开启定时器/计数器0和定时器/计数器2,以及确定循环变量tt(四拍为4,八拍为8),由于定时器/计数器的启动,使得单片机的PF口输出对应方式的控制字,让电机开始运转;计数功能启用,实现步进数的计数,最后通