基于嵌入式arm步进电机的驱动设计本科论文Word下载.docx
《基于嵌入式arm步进电机的驱动设计本科论文Word下载.docx》由会员分享,可在线阅读,更多相关《基于嵌入式arm步进电机的驱动设计本科论文Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
LED数码管显示;
细分步;
L293驱动
Abstract
AsARM'
swidelyusedinvariousfields,manywithARMasthecontrolofthegamescoringdevicetimingsystemshouldalsoshippedproduce,thedesignintroducesakindofARMLPC2132programmingcontrolL293dotsonthedisplayofthebasketballgametimethanscoringsystem.Thesystemcancontrolpanel7abovethebuttonsfeatureset,thesystemhassetthescheduletime,scheduletimetobesuspended,thescoreadditionandsubtraction,theextratimeandotherfunctions.Thisdesignhaslowprice,stableperformance,easytooperateandmodifyflexible.AsthesystemisL293largedotmatrixdisplayasthedisplaymodulecanbedirectlyappliedtoalltypesofschoolsandsmallgroupsastimebasketballscoringrace.
MasterchipARMLPC2132,usingthesimplebuttonoperation,LEDdisplay,easytoinstall.Basketballcountersolveinstallationproblems,savingthewire,suitableforuseofsportsfacilitiesofallsizescancompletelyreplacethetraditionalmethodofusingclockstotime,littlechangeofcoursealsobeusedforotherballgames,sportsequipmenttoagoodintelligentbasisforthedevelopmentofmodules.
Keywords:
ARMLPC2132;
LEDdotmatrixdisplay;
timepoints;
L293driver
目录
引言1
1系统硬件介绍1
1.1硬件主控芯片概述及功能介绍1
1.1.1主控芯片LPC21321
1.1.2LPC2132特性2
1.1.3LPC2132功能结构2
1.2硬件电路3
1.2.1LED数码管3
1.2.2驱动芯片L2935
2系统软件设计6
2.1步进电机的驱动原理6
2.2细分电路的设计7
2.3按键程序部分8
2.3.1按键的延时处理8
2.3.2按键的中断处理9
3硬件制作与调试9
3.1系统PCB板的设计9
3.2系统硬件调试10
3.3软件及联机调试10
3.4主控程序调试10
4实训心得体会11
谢辞13
参考文献14
附录15
引言
随着人类工业的发展和进步,以及自动化的生产线的要求越来越高,应用在工业控制领域的电机驱动就显得非常重要了。
尤其是步进电机的驱动,在很多领域应用的很广。
在很多需要精确控制的开环电路中都用到步进电机来控制机器的精确运动。
这就要求有一个功能强大的步进电机驱动系统。
传统的步进电机系统功能单一,电路也很复杂,并且都没有速度显示的功能。
能够应用的范围不广,一般都是在一些很大的工厂里面的那些比较昂贵的机器设备中才有。
这就限制了步进电机的应用领域,阻碍了步进电机的发展。
本次实训研究的步进电机控制系统,结构简单,电路简单易懂,功能强大,成本低廉,并且有速度显示,能够应用到很多领域中。
1系统硬件介绍
1.1硬件主控芯片概述及功能介绍
ARMLPC2132是基于一个支持实时仿真和嵌入式跟踪的32/16位ARM7TDMI-STMCPU的微控制器,并带有64kB的嵌入的高速Flash存储器。
128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
1.1.1主控芯片LPC2132
ARM7TDMI-S是一个通用的32位微处理器,它可提供高性能和低功耗。
ARM结构是基于精简指令集计算机(RISC)原理而设计的。
指令集和相关的译码机制比复杂指令集计算机要简单得多。
这样使用一个小的、廉价的处理器核就可实现很高的指令吞吐量和实时的中断响应。
LPC2132微控制器是基于一个支持实时仿真和嵌入式跟踪的16/32位ARM7TDMI-SCPU,并带有64kB嵌入的高速Flash存储器。
对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。
较小的封装和很低的功耗使LPC2132特别适用于访问控制和POS机等小型应用中;
由于内置了宽范围的串行通信接口和8/16/32kB的片内SRAM,它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像,为这些应用提供大规模的缓冲区和强大的处理功能。
多个32位定时器、1个或2个10位8路的ADC、10位DAC、PWM通道、47个GPIO以及多达9个边沿或电平触发的外部中断使它们特别适用于工业控制应用以及医疗系统。
1.1.2LPC2132特性
16/32位ARM7TDMI-S核,超小LQFP64封装。
16kB的片内静态RAM和64kB的片内Flash程序存储器。
128位宽度接口
加速器可实现高达60MHz工作频率。
通过片内boot装载程序实现在系统编程/在应用编程(ISP/IAP)。
单个Flash扇区或整片擦除时间为400ms。
256字节行编程时间为1ms。
EmbeddedICERT和嵌入式跟踪接口通过片内RealMonitor软件对代码进行实时调试和高速跟踪。
1个8路10位的A/D转换器,共提供16路模拟输入,每个通道的转换时间低至2.44us。
1个10位的D/A转换器,可产生不同的模拟输出。
2个32位定时器/外部事件计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。
低功耗实时时钟具有独立的电源和特定的32kHz时钟输入。
多个串行接口,包括2个16C550工业标准UART、2个高速I2C总线(400kbit/s)、SPI和具有缓冲作用和数据长度可变功能的SSP。
向量中断控制器。
可配置优先级和向量地址。
小型的LQFP64封装上包含多达47个通用I/O口(可承受5V电压)。
多达9个边沿或电平触发的外部中断管脚。
通过片内PLL(100us的设置时间)可实现最大为60MHz的CPU操作频率。
片内集成振荡器与外部晶体的操作频率范围为1~30MHz,与外部振荡器的操作频率范围高达50MHz。
低功耗模式:
空闲和掉电。
可通过个别使能/禁止外部功能和外围时钟分频来优化功耗。
通过外部中断或BOD将处理器从掉电模式中唤醒。
单电源,具有上电复位(POR)和掉电检测(BOD)电路:
CPU操作电压范围:
3.0V~3.6V(3.3V±
10﹪),I/O口可承受5V的电压。
1.1.3LPC2132功能结构
ARMLPC2132主要由系统功能、向量中断控制器、内部SRAM控制器、内部FLASH控制器、定时器0和定时器1、外部中断、A/D和D/A转换器、PWM、I2C串行接口、UART0/UART1、实时时钟、看门狗定时器等功能模块,并且具有IO口复用功能,在IO口是使用和分配上带来了很大的便利。
结构框图如图1.1所示:
图1.1LPC2132结构框图
1.2硬件电路
1.2.1LED数码管
在ME500B、ME300B开发系统中,均采用了8位数码管动态扫描显示(见图1.2)。
它将所有数码管的8个段线相应地并接在一起,并接到LPC2132的P0口,由P0口控制字段输出。
而各位数码管的共阳极由LPC2132的P2口控制Q20-Q27来实现8位数码管的位输出控制。
这样,对于一组数码管动态扫描显示需要由两组信号来控制:
一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;
另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。
即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。
同时,段线上输出相应位要显示字符的字型码。
这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
图1.2数码管动态扫描显示
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。
数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。
若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。
所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。
数码管是由7个条形的LED和右下方一个圆形的LED组成,这样一共有8个段线,恰好适用于8位的并行系统。
数码管有共阴极和共阳极两种,共阴极数码管的公共阴极接地,当各段阳极上的电平为“1”时,该段点亮,电平为“0”时,该段熄灭;
1.2.2驱动芯片L293
L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。
这种双极型脉冲调宽方式具有很多优点,如电流连续;
电机可四角限运行;
电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:
低速平稳性好等。
L293D通过内部逻辑生成使能信号。
H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。
另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。
每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。
选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。
选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转。
如图1.3为L293的管脚分配图。
图1.3L293管脚分配图
芯片的控制管脚,和输出输入关系如表1.1所示。
表1.1L293输入输出关系
2系统软件设计
本系统的主要硬件是步进电机的驱动电路,以及数码管动态扫描的驱动电路。
步进电机的驱动电路就用L293集成驱动电路就可以了,但是如果通过软件来进行步进电机的驱动,以及如果实现动态数码管扫描的编程就是本系统的软件要研究的内容了。
2.1步进电机的驱动原理
步进电机的运行要有一电子装置进行驱动,这种装置就是步进电机驱动器,它是把控制系统发出的脉冲信号,加以放大以驱动步进电机。
步进电机的转速与脉冲信号的频率成正比,控制步进脉冲信号的频率,可以对电机精确调速;
控制步进脉冲的个数,可以对电机精确定位。
典型的步进电机驱动控制系统主要由三部分组成:
(1)、步进控制器,由单片机实现。
(2)、驱动器,把单片机输出的脉冲加以放大,以驱动步进电机。
(3)、步进电机。
典型的步进电机驱动控制电路图如图2.1所示:
图2.1典型的步进电机驱动控制电路图
图中单片机的I/O口一位控制一相绕组,根据所选定的步进及控制方式可写出相应的控制方式的数学模型,如三相单三拍、三相双三拍、三相六拍。
现以三相六拍为例,如表2.1所示:
表2.1步进电机步序控制表
以上为步进电机正转时的控制顺序及数学模型。
因此,步进驱动控制器实际上就是按上述的控制方式所规定的顺序送脉冲序列,即可实现驱动步进电机三相六拍方式的转动。
输入顺序脉冲序列的速率就是步进电机的速率。
这种典型的步进电机驱动控制方法及其电路,只能实现步进电机步距角为原来固定步距角的一半。
当要求实现步距角细分时,该方法就不能达到要求了,所以在这里就要引入步进电机细分技术方案的探讨。
2.2细分电路的设计
针对上述两种现有的细分技术状况,本论文的目的在于:
(1)、从理论和实践的角度,建立一种新的步进电动机高精度细分方法和数学模型,以消除现有技术方案中不可克服的滞后角△θ值所引起的问题,使细分技术提高到更高的水平。
(2)、在新原理方法指导下设计相应的硬件控制电路。
(3)、设计细分控制函数修正的电路及其相应的计算机自动控制程序。
本电路的构思及技术解决方案叙述如下:
为了实现高精度的定位,对步进电机步距进行高分辨细分的关键,也是本系统的难点所在。
从以上的分析可知,步进电动机的细分驱动电路都是通过电流合成矢量的旋转来实现的。
一般的细分方法只改变某一相的电流,该方法的缺陷是电流合成矢量的幅值是不断变化的,使步进电机的传距亦随之变化,从而引起滞后角的变化,最终就影响可细分数的增加,即限制了分辨率的提高。
采用现有技术细分方法时的电流矢量旋转示意图(图2.2):
图2.2电流矢量旋转示意图
为了能够从根本上解决这个问题,消除现有技术中由于滞后角的变化引起的△θ值大于微步距角而导致不可继续细分的问题,只有使电流合成矢量ih形成新的距角特性曲线,为达到这一点,必须满足一下两个条件:
(1)、电流合成矢量旋转时每次变化的角度要均匀;
(2)、电流合成矢量的大小或幅值要保持不变。
基于这个条件,即可建立“电流矢量恒幅均匀旋转”细分驱动方法。
同时改变两相电流的大小,使电流合成矢量恒幅均匀旋转。
这种方式可称为步进电机的模拟运行,它是一种基于交流同步电机概念的特殊细分技术,实质是对运行于交流同步电机状态的步进电机所受的交流模拟信号在一个周期内细分,即每个细分点对应于一个交流值。
当细分数相当大时,例如本系统中将一个四分之一周期分成4096个点,电机绕组的电流信号就逼近模拟连续信号。
这种细分技术可以极大地提高步进电机的分辨率和运行稳定性。
2.3按键程序部分
2.3.1按键的延时处理
对于一个由单片机为核心构成的系统而言。
输入通道是相当重要的。
可以看到几乎每一样基于单片机的产品都有人机交互的部分。
如各种仪器设备上的各种按钮和开关,以及我们手机上的键盘,MP3上的按键等等。
最常见的输入部分,莫非就是按键了。
作为一个按键从没有按下到按下以及释放是一个完整的过程,也就是说,当我们按下一个按键时,总希望某个命令只执行一次,而在按键按下的过程中,不要有干扰进来,因为,在按下的过程中,一旦有干扰过来,可能造成误触发过程,这并不是我们所想要的。
因此在按键按下的时候,要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下,我们可以采用电容来滤除掉这些干扰信号,但实际上,会增加硬件成本及硬件电路的体积,这是我们不希望,总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰信号,一般情况下,一个按键按下的时候,总是在按下的时刻存在着一定的干扰信号,按下之后就基本上进入了稳定的状态。
具体的一个按键从按下到释放的全过程的信号图。
图2-3延时按键子程序
2.3.2按键的中断处理
中断是指单片机在运行别的代码时,系统可以通过中断方式打断连续的运行,先运行中断服务函数,开中断就是指系统可以在连续运行是中断,去运行中断服务函数,关中断就是指关闭系统中断,不允许系统打断连续的运行。
当按键切换进入某个显示状态时,该程序进入循环状态,才用中断,可以让系统在实行某个显示状态时,退出显示其他的状态。
3硬件制作与调试
3.1系统PCB板的设计
PCB即印刷电路板,是电子电路的承载体。
在现代电子产品中,几乎都要使用PCB。
PCB板的设计是电路设计的最后一个环节,也是对原理电路的再设计。
因此PCB板的设计是理论设计到实际应用一个十分重要的内容。
印制电路板(PCB)是电子产品中电路元件和器件的支撑件.它提供电路元件和器件之间的电气连接。
PCB设计的好坏对抗干扰能力影响很大.因此,在进行PCB设计时.必须遵守印制电路板设计原则和抗干扰措施的一般原则,并应符合抗干扰设计的要求。
本次设计采用Altium公司PROTEL系列设计完成SCH到PCB的设计,并且手工完成电路焊接以及整机的装配。
3.2系统硬件调试
本系统的硬件调试分为以下阶段进行调试:
(1)逻辑错误调试
样机硬件的逻辑错误是由于设计错误和加工过程中的工艺性错误所造成的。
这类错误包括:
错线、开路、短路等几种,其中短路是最常见的故障。
(2)器件调试
元器件失效的原因有两个方面:
一是器件本身已损坏或性能不符合要求;
二是由于组装错误造成的元器件失效,如电解电容、二极管的极性错误,集成块安装方向错误等。
(3)可靠性调试
引起系统不可靠的因素很多,如金属化孔、接插件接触不良会造成系统时好时坏;
内部和外部的干扰、电源纹波系数过大、器件负载过大等造成逻辑电平不稳定;
另外,走线和布局的不合理等也会引起系统可靠性差。
3.3软件及联机调试
Keil4是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
Keil4件是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。
Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,
3.4主控程序调试
应用Keil进行软件仿真开发的主要步骤为:
编写源程序并保存—建立工程并添加源文件—设置工程—编译/汇编、连接,产生目标文件—程序调试。
成功编译/汇编、连接后,选择菜单Debug-Start/StopDebugSession(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。
Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-StepOver)、全速执行等多种运行方式进行程序调试。
如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-InlineAssambly…),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。
对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/RemoveBreakpoint或Debug-Breakpoints…等)。
在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。
4实训心得体会
通过这次为期两周的ARM实训,我感觉收获蛮多,对ARM的了解、C语言编程和protel绘制电路图等各个方面的能力有了进一步的提高,把课本上的知识应用到实践,整个过程受益匪浅。
在硬件系统的设计时,使用ARM的P0口来进行LED数码管信号端,P1口来完成行扫描,单片机和点阵屏共同使用同一5V电源,在ARM开发板上进行调试时,LED数码管无法进行显示,LED数码管上没有任何一个点被点亮,但是在LED数码管的各个端口都有相应的高低电平,P0口也采用了经验值为2K的上拉电阻,参数和开发板上使用的元器件的参数完全一样,但是还是无法点亮LED数码管,两个系统端口进行电流测量比较,发现制作的电路板上的电流太小,于是直接更换成1K的上拉电阻,LED数码管便可以驱动点亮。
在以前的学习中,都是使用89S52单片机进行控制操作,由于单片机使用的是大部分IO口没有复用功能,所以IO口赋值也是比较方便的,而ARM的IO口有3重复用功能,ARM对IO操作有三个寄存器,即DIR,SET,CLR。
先设置IO的方向即对DIR操作,再如果设置高电平即对SET操作,如果设置低电平对CLR操作。
在刚刚开始的调试的时候,先进行简单的IO口赋值实验,使用简单的语句来进行LED灯点亮和按键识别等练习,在熟悉IO口的三个寄存器使用方法后才开始下步调试。
在步进电机驱动系统中,是需要很多个调节功能的,为了方便节约材料,选择了8个按键来作为系统的输入,暂停/开始按键的两种不同情况下,其他按键的赋值也不同,当系统为暂停状态时,其他5个按键的功能为调节正反转、速度的微调节和粗调节;
当系统为开始状态时,这样的设计既节约了按键数目,又方便合理。
通过对点阵屏芯片的研究以及互联网查找资料的时候,也找到部分同样是使用LPC2312芯片和L293芯片来驱动步进电机仿真图,通过阅读