《基于89C51单片机的电动机转速控制器设计.docx》由会员分享,可在线阅读,更多相关《基于89C51单片机的电动机转速控制器设计.docx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 引言:在电气时代的今天,电动机一直在现代的生产和生活中扮演着十分重要的作用。据资料统计,如今有90%的动力源来自于电动机,我国生产的电能大约有60%用于电动机。电动机与人们的生活密切相关。步进电机作为机电一体化的关键产品之一,是一种将电脉冲信号转换成直线或角位移的控制电机,广泛应用于工业控制系统中。其转速和机械角位移分别与输入电机绕组中的脉冲平率和脉冲个数成正比。通过改变电脉冲频率,可大范围内进行调速【1】。同时,该电机还能快速起动、制动、反转和自锁。此外,步进电机易于实现计算机或其它数字元件接口,适用于数字控制系统。由于具有上述特点,步进电机日益广泛应用于数字控制系统中,如数控机床、绘图
2、机、自动记录仪表和数一模转换等装置。但步进电机的驱动信号经常还是用一些专用的模拟芯片控制器或者是信号发生器来产生,缺乏灵活性和可靠性。在一些智能化要求较高的场合,用模拟芯片以及信号发生器来控制步进电机有一定的局限性,可以采用AT89C51 单片机控制步进电机以改善其性能【2】。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在国民经济各个领域都有应用。2 步进电机的工作原理步进电机本身可以直接接受数字信号,不需要进行数字与模拟量的转换,具有高精度快速启停能力。如果选用三相六拍,步距1.5,即进一步,电机转动1.5,转动一周需要200步【3】。步进电机直接由数字信号控制,其控制程序可以分
3、为脉冲序列的生成、方向的控制、步进电机变速控制程序3部分。2.1 步进电机控制的基本原理步进电机的基本控制包括转向控制和速度控制2个方面。如图2.1.1,从结构上看,步进电机分为三相、四相、五相等类型,常用的则以三相为主。三相步进电机的工作方式有三相单三拍、三相双三拍和三相六拍3种,下面具体加以阐述。(1)换相顺序的控制步进电机通电换相这个过程称为脉冲分配。例如,三相步进电机在单三拍的工作方式下,其各相的通电顺序为A-B-C-A,通电控制脉冲必须按照这一顺序分别控制A、B、C相得通断。三相双三拍的通电顺序为AB-BC-CA-AB,三相六拍的通电顺序为A-AB-B-BC-C-CA-A【4】。(2
4、)步进电机的转向控制如果给定工作方式正序换相通电,步进电机正转。若步进电机励磁方式为三相六拍,即A-AB-B-BC-C-CA-A。如果按反序通电换相,即A-AC-C-CB-B-BA-A,则电机就反转。其它方式的情况类似。(3)步进电机的速度控制如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。2个脉冲的间隔越短,步进电机就转得越快。调整输送给步进电机的脉冲频率,就可以对步进电机进行调速。图2.1.1 三相步进电机工作原理图2.2 步进电机的起停控制步进电机由于其电气特性,运转时会有步进感,即振动感。为了使电机转动更平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分
5、的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的卷轴,使步进电机的转轴不能自由转动。2.3 步进电机的加减速控制在步进电机控制系统中,通过实验发现,如果信号变化太快,步进电机由于惯性跟不上电信号的变化,这时就会产生丢步和堵转现象。所以,步进电机在启动时,必须有加速过程,在停止时一定要有减速过程【5】。理想的加速曲线一般为指数曲线,步进电机整个减速过程的频率变化规律是整个加速过程频率变化规律的逆过程。选定的曲线比较符合步进电机加减速过程的运行规律,能充分利用步进电机的有效转矩,快速
6、响应性好,缩短加减速的时间,并可防止失步和过冲现象。在一个实际的控制系统中,要根据负载的情况来选择步进电机。步进电机能响应而不失步的最高步进频率称为“启动频率”,与此类似,“停止频率”是指系统控制信号突然管段,步进电机不冲过目标位置的最高步进频率。电机的启动频率、停止频率和输出转矩都要和负载的转动惯量相适应,有了这些数据,才能有效地对电机进行加减速控制。加速过程由突跳频率加加速曲线组成(减速过程反之)。突跳频率是指步进电机在静止状态时突然施加的脉冲启动频率f0。步进电机的最高启动频率一般为0.1kHz到4kHz,而最高运行频率可以达到N102kHz。以超过最高起动频率的频率直接起动,会产生堵转
7、和丢步的现象。较为理想的起动曲线应是按指数规律起动。但实际应用时对起动段的处理可采用按直线拟合的方法,即阶梯加速法。一般可按2种情况处理。(1) 已知突跳频率,则按突跳频率分段起动,分段数n=f/f0(2) 未知突跳频率,则按段拟合至给定的起动频率,每段频率的递增量f=f/8,即采用8段拟合。在运行控制过程中,将起始的速度分为n分,作为阶梯频率,采用阶梯加速法将速度连续升到所需要的速度,然后锁定,按预置的曲线运行,如图2.3.1所示 图2.3.1 步进电机运行过程中频率变化曲线在一般的应用中,经过大量实践和反复验证,频率如按直线上升或下降,控制效果就可以满足常规的应用要求。用单片机实现步进电机
8、的加减速控制,实际上就是控制发脉冲的频率。加速时,使脉冲频率增高,减速时则相反。如果使用定时中断来控制电机的速度,加减速控制就不断改变定时器的初值【6】。速度从v1-v2变化,如果是线性增加,则按给定的斜率加减速,如果是突变,则按阶梯加速法处理。2.4 步进电机的换向控制步进电机换向时,一定要在电机减速停止或降到突跳频率范围以内再换向,以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第1个脉冲之前发出【7】。对于脉冲的设计主要要求有一定的脉冲宽度、脉冲序列的均匀度及高低电平方式。在某一高速下的正、反向切换实质包含了减速换向加速3个过程。3 AT89C
9、51简介本控制系统采用ATMEL公司MCS-51系列单片机AT89C51作为微处理器。AT89C51内部有4K的可编程EPROM、21个特殊功能寄存器、2个16位的定时计数器以及一个全双工串行口,对外有4个端端口、32跳I/O线,它们都具有位寻址功能,使用非常方便【8】。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器【9】。89C51单片机是一种功能强大,灵活性高且价格合理的单片机,完全满足本系统设计
10、需要,它的外形及引脚排列如图所示3.1所示:图3.1 AT89C51外形及引脚3.1 主要特性:与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定1288位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路【10】 3.2 管脚说明: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/
11、地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内
12、部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下列所示:口管脚 备选功能P3.0 RXD(串行输入口)P
13、3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6【11】。因此它可用作
14、对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RE
15、SET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入和内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出【12】。3.3 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号需通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.4 芯片擦除:整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,
16、并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作【13】。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。3.5 串口通讯单片机的结构和特殊寄存器,这是你编写软件的关键。至于串口通信需要用到那些特殊功能寄存器呢,它们是SBUF,SCON等。SBUF 数据缓冲寄存器这是一个可以直接寻址的串行口专用
17、寄存器。包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址99H。CPU 在读SBUF 时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。SCON 串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器【14】。它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51
18、芯片串行口的工作状态。51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON 寄存器。4 步进电机驱动芯片步进电机的控制系统一般包含4部分:控制器、逻辑分配器、驱动电路及步进电机。其结构示意图如图4.1所示。其中,控制器和逻辑分配器可以独立分开,也可合二为一,由微处理器独自完成。图4.1 步进电机控制系统结构示意图对步进电机的驱动不能直接用直流或交流驱动,而必须使用专用的步进电机驱动电路。按照步进电机的启动电流流向,驱动电路分为单极性驱动电路和双极性驱动电路【15】。单极性驱动电路保证步进电机绕组电流沿一个方向流动,适用于反应式步进电机。双极性驱动电路通过控制使步进电机
19、绕组的电流可以正反方向流动,适用于永磁式和混合式步进电机。单极性和双极性绕组结构示意图如图4.2所示。 图4.2 单极性和双极性绕组结构步进电机驱动电路可采用集成化驱动器,比如单极性驱动芯片UCN5804A、ULC2003C、STK6822H等,双极性驱动芯片UC3770、SAAl027、L298、SAAl042、UC3717A等;也可以采用分立元件制作【16】。采用集成芯片设计的驱动器电路简单,且抗干扰能力强,然而功率可能受限制;采用分立元件设计的驱动电路可以构成大功率的驱动电路,但电路比较复杂。4.1 L298简介L298是SGSThomson公司的产品,属于双H桥高电压大电流驱动器【17
20、】。控制信号与TTL电路兼容,可以用来驱动感性负载,如继电器、线圈、直流电机、步进电机等。该芯片能实现两相步进电机双极性驱动或四相步进电机单极性驱动。L298的内部结构框图如图4.3所示,其Multiwattl5封装如图4.4所示,其散热片与第8脚(GND引脚)相连。L298的逻辑电路使用十5V电源,接受标准TTL逻辑信号。它的驱动部分含有两个高电压大电流全桥式驱动器,可承受的最大驱动电压达46V,相电流可达25A【18】。它具有两个使能输入端,在不受输入信号影响的情况下允许或禁止桥路工作,每个全桥的下部三极管的发射极接在一起并引出,以连接外部检测电阻,测量瞬时驱动电流【19】。它设置了一个附
21、加电源输入端,使逻辑部分电路在低电压下工作。图4.3 L298的内部结构框图图4.4 L298的Multiwatt15封装各引脚的功能如下:SENSE A桥路A电流取样电压输出,取样电阻接在该引脚和地之间。OUT1桥路A输出。OUT2桥路A输出。VS步进电机驱动电压输入引脚。该引脚须接一个100nF的无感电容到地。IN1桥路A输入,与TTL电平兼容。ENA桥路A使能输入,TTL电平,低电平时禁止桥路A工作。IN2桥路A输入,与TTL电平兼容。GND信号地与功率地引脚。VDD逻辑电路供电电压输入引脚。该引脚须接一个100nF的无感电容到地。IN3桥路B输入,与TTL电平兼容。ENB桥路B使能输入
22、,TTL电平,低电平时禁止桥路B工作。IN4桥路B输入,与TTL电平兼容。OUT3桥路B输出。OUT4桥路B输出。SENSE B桥路B电流取样电压输出,取样电阻接在该引脚和地之间【20】L298的输出可以直接与二相步进电机连接,采用H桥驱动方式;也可用于驱动单极性的四相步进电机。连接方式如表4.5所列。控制时序由逻辑分配器产生。 表4.5 L298与步进电机的连接L298输出端二相步进电机输入端四相步进电机输入端方法1方法2VSCOMOUT1AACOUT2ACAOUT3BBDOUT4BDBGNDCOM 4.2 L298N控制器原理图4.6是控制器原理图,由3个虚线框图组成。图4.6 控制器原理
23、图(1)虚线框图1控制电机正反转,U1A,U2A是比较器,VI来自炉体压强传感器的电压。当VIVRBF1时,U1A输出高电平,U2A输出高电平经反相器变为低电平,电机正转。同理VIVRBF1时,电机反转。电机正反转可控制抽气机抽出气体的流量,从而改变炉体压强。(2)虚线框图2中,U3A,U4A两个比较器组成双限比较器,当VBVIVA时输出低电平,当VIVA,VIVB时输出高电平。VA,VB是由炉体压强转感器转换电压的上下限,即反应炉体压强控制范围。根据工艺要求,我们可自行规定VA,VB的值,只要炉体压强在VA,VB所确定范围之间电机停转(注意VBVRBF1VA,如果不在这个范围内,系统不稳定)
24、。 (3)虚线框图3是一个长延时电路。U5A是一个比较器,Rs1是采样电阻,VRBF2是电机过流电压。Rs1上电压大于VREF2,电机过流,U5A输出低电平。由上面可知,框图1控制电机正反转,框图2控制炉体压强的纹波大小。当炉体压强太小或太大时,电动机转到两端固定位置停止,根据直流电机稳态运行方程21: UCeNRaIa其中:为电机每极磁通量;Ce为电动势常数; N为电机转数;Ia为电枢电流;Ra电枢回路电阻。电机转数N为0,电机的电流急剧增加,时间过长将导致电机烧坏。但电机起动时,电机中线圈中的电流也急剧变大,所以我们必须把这两种状态分开。长延时电路可把这两种状态区分出来。长延时电路工作原理
25、:当Rs1过流U5A产生一个负脉冲经过微分后,脉冲触发555的2脚,电路置位,3脚输出高电平,由于放电端7脚开路,C1,R5及U6A组成积分器开始积分,电容C1上的充电电压线性上升,延时运放积分常数为100R5C1。当C1上充电电压,即6脚电压超过23 VCC,555电路复位,输出低电平。电机启动时间一般小于08 s,C1充电时间一般为081 s。U5A输出电平与555的3脚输出电平经U7相或,如果U5A输出低电平大于C1充电时间,U7在C1充电后输出低电平由与门U8输入到L298N的6脚ENA端使电机停止。如果U5A的输出电平小于C1充电时间,6脚不动作电机的正常启动。长延时电路吸收电机启动
26、过流电压波形,从而使电机正常启动。4.3 L298特点(1)、可实现电机正反转并能调速。(2)、启动性能好,启动转矩大。(3)、工作电压可达到36V,4A。(4)、可同时驱动两台直流电机。(5)、适合应用于机器人设计及智能小车的设计中【21】。5 DS18B20温度传感器温度传感器的种类众多,在应用于高精度、高可靠性的场合时,DALLAS公司生产的DS18B20温度传感器当仁不让。它是世界上第一片支持 一线总线接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术【22】。全部传感元件及转换电路集成在形如一只三极管的集成电路内。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络
27、,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。5.1 DS18B20的主要特性(1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电。(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 (3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。(5)温范围55125,在-10+85时精度为0.5 (6)可编程的分辨率为91
28、2位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。(8)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 (9)负压特性:电源极性接反时,芯片不会因为发热而烧毁,但不能正常工作。5.2 DS18B20的外形和内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的外形及管脚排列如图5.2.1:
29、图5.2.1 DS18B20外形及引脚排列图DS18B20引脚定义: (1) DQ为数字信号输入/输出端; (2) GND为电源地; (3) VDD为外接供电电源输入端(在寄生电源接线方式时接地图5.2.2 DS18B20内部结构图5.3 DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
30、计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图5.3.1中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。图5.3.1 DS18B20测温原理框图高速暂存存储器由9个字节组成,其分配如表5.3.2所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0
31、和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。5.3.2 DS18B20暂存寄存器分布寄存器内容字节地址温度值低位 (LS Byte)0温度值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能
32、对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。表5.3.3 ROM指令表指 令约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合 ROM55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。搜索 ROM0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。跳
33、过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。表5.3.4 RAM指令表指 令约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器48H将RAM中第3 、4字节的内容复制到EEPROM中。重调 EEPROM0B8H将EEPROM中
34、内容恢复到RAM中的第3 、4字节。读供电方式0B4H读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。6 C语言在开发单片机产品中的优点将C向MCU(俗称单片机)8051上的移植始于80年代的中后期。客观上讲,C向8051 MCU移植的难点不少。如: 8051的非冯诺依慢结构(程序与数据存储器空间分立),再加上片上又多了位寻址存储空间;片上的数据和程序存储器空间过小和同时存在着向片外扩展它们的可能;片上集成外围设备的被寄存器化(即SFR),而并不采用惯用的I/O地址空间;8051芯片的派生门类特别多(达到了上百种之多),而C语言对于它们
35、的每一个硬件资源又无一例外地要能进行操作。这些都是过去以MPU为基础的C语言所没有的。经过Keil/Franklin、Archmeades、IAR、BSO/Tasking等公司艰若不懈的努力,终于于90年代开始而趋成熟,成为专业化的MCU高级语言了【23】。过去长期困扰人们的所谓“高级语言产生代码太长,运行速度太慢,因此不适合单片机使用”的致使缺点已被大幅度地克服。目前,8051上的C语言的代码长度,已经做到了汇编水平的1.21.5倍。4K字节以上的程度,C语言的优势更能得到发挥。至于执行速度的问题,只要有好的仿真器的帮助,找出关键代码,进一步用人工优化,就可很简单地达到十分美满的程度。如果谈
36、到开发速度、软件质量、结构严谨、程序坚固等方面的话,则C语言的完美绝非汇编语言编程所可比拟的。今天,确实已经到MCU开发人员拿起C语言利器的时候了。下面结合8051介绍单片机C语言的优越性:不懂得单片机的指令集,也能够编写完美的单片机程序;无须懂得单片机的具体硬件,也能够编出符合硬件实际的专业水平的程序;不同函数的数据实行覆盖,有效利用片上有限的RAM空间;程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏;C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;提供auto、static
37、、const等存储类型和专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址;提供small、compact、large等编译模式,以适应片上存储器的大小;中断服务程序的现场保护和恢复,中断向量表的填写,是直接与单片机相关的,都由C编译器代办;提供常用的标准函数库,以供用户直接使用;头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务
38、操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。综上所述,故此次设计用C语言进行编程。7 硬件部分设计7.1 硬件组成步进电机的控制系统主要由单片机AT89C51、电机驱动芯片L298、DS18B20温度传感器,串口方式的LCD1602液晶显示屏、电源和时钟电路等几个单元组成,其结构框图如图7.1.1所示。整个系统外围元件少,具有结构简单、成本低廉、可靠性高、使用方便、通用性强等特点。在实际应用中,也可采用大功率的管子来代替L298对步进电机进行驱动,成本比较低,缺点是管子的特性有一定差异,对驱动效果有一定的影响。图7.1.1 控制系统的结构框图7.2 输入、显示部分本系统是基于提
39、高智能化及灵活性而设计的,对于步进电机的转动频率、转动方向、转动步数、转动位置和停止等通过DS18B20温度传感器输入相应指令,由单片机输出步进电机控制信号来实现控制。用液晶显示当前温度,并在工作时显示当前转速。7.3 单片机电路本系统采用AT89C51单片机产生控制信号。单片机内部的RAM和ROM即可满足该项目的要求,在以后的实际运用中,如需扩展较多的外部RAM和ROM时,可加上数据缓冲器。步进电机控制信号通过AT89C51单片机的P1口的P1.0、P1.1、P1.2、P1.3四个口输出的具有时序的方波【24】,作为步进电机的控制信号。为了增加步进电机工作的灵活性,在启动步进电机工作之后,当
40、有键按下时,设置产生外部中断,达到灵活控制步进电机的目的。7.4 隔离、放大及步进电机部分由于步进电机的大功率、高电平会对单片机产生比较严重的干扰,不能直接把单片机产生的控制信号连在步进电机上,需要进行强弱电隔离。在实际运用中,对于强弱电隔离一般采用电子开关方法或光电隔离的方法。由于步进电机工作需要较大的功率,所以通常需要使用功率放大器来提供步进电机的工作电流,将电隔离器送来的弱电信号变为强电信号,可以采用集成功放,也可以采用分立元件。本设计采用成本低、电路简单且可靠性高的直流固态继电器( 产品型号:JGXEL:主要技术参数:工作电压12150VDC,额定电流15A,隔离电压1500V,绝缘电
41、压2000V,控制电压332V,开启电流5mA。通态压降1.3V,通态电流1mA,开关时间0.1ms,工作环境温度-3080)来同时实现隔离和放大的两大功能。通过上面的主要技术参数可以看出,直流固态继电器(DCSSR)完全可以满足该设计对于隔离和放大的需要。7.5 电源电路部分由于系统中包含弱电和强电两部分,需要提供两种电源电压,这里采用集成稳压器CW7805和输出电压可变的LM317来分别提供+5V和1.2537V电源,两电源不共地。其中一路给单片机供电,另一路给步进电机供电。8 软件设计在单片机控制步进电机系统中,相应的控制信号由单片机来产生,根据需要通过温度控制设定步进电机的工作方式(正
42、反转) 、加减速控制、恒速控制、正反转切换控制、起停控制。根据具体的工作情况计算出相应的脉冲频率,继而计算出定时器的初值,建立控制常数表。在具体控制中,主程序根据选定的工作方式不断地从控制常数表中取出速度参数送给定时器,即可实现相应的控制功能。对于步进电机,其速度值常以频率形式给定,如运行在20kHz下。在电机运行过程中,控制脉冲的频率f应随时间变化,以满足电机低速起停及高速运行的需要【25】。低速启动,频率由f0增大到fh。电机以设定频率fh高速运行。匀减速过程中,频率由fh减少至f0,直到停止。需要指出的是,有些设计方案采用软件延时的办法进行速度控制,其缺点是控制精度低。而且在实际应用中,
43、系统中除了步进电机外还有其他控制对象,在处理其他任务时就不能对步进电机进行有效地控制,无法满足步进电机的控制要求。8.1 流程图YYY进入停止状态转向变为正,0变10,10变20,20变30,30变40,40变5045temp75速度值变为50转向为反temp75?temp0?转向为反,转速值0变为10,10变为20,20变为30,30变我40,40变为50读温度值temp开始 逐渐加速反转NN速度变为50转向为正0temp10?NYNYY10temp45Y9 结论步进电动机是一种将脉冲信号变换成相应的角位移(或线位移)的电磁装置,是一种特殊的电动机。由于其精确性以及其良好的性能在实际当中得到
44、了广泛的应用。本文介绍了以51系列单片机AT89C51为控制核心所设计的步进电机控制系统,从系统的硬件电路以及软件的设计方面实现了对步进电机的控制。通过本次设计我学习到了许多书本上没有的知识,在自己查资料后,对系统进行整体设计后基本达到了要求,并以AT89C51单片机为控制核心,结合步进电机驱动器L298N和DS18B20温度传感器设计出步进电机转速调整控制系统。本文首先对步进电机的工作原理进行了概述,然后就AT89C51、L298及DS18B20温度传感器做了详细的说明,并在Proteus上设计出控制系统的硬件连接电路。在硬件设计的基础上设计了系统运行过程的程序流程图并用C程序设计出控制系统
45、的控制程序,然后在Proteus上进行仿真,实现了本次设计所需的各种功能。虽然这个设计是完成了,但在这次的设计中也遇到了很多的问题。比如步进电机的转速如何由温度控制让我很没头绪,但经过查阅资料以及老师和同学的帮助下,我还是最终克服了这一难题。通过对本次课题的设计,我学会了如何发现问题、独立思考问题,然后用自己的专业知识以及通过现代科技的各种手段来解决问题,在很大程度上提高了我的动手能力。并在一定程度上促进了我对专业知识的学习和巩固。在这期间,老师和同学们都给了我很大的帮助,再次,我要对他们致以最真挚的谢意。附件A 仿真运行图及原理图仿真运行图:原理图:附录B 程序清单#include#define uchar unsigned char#define uint unsigned int#define uint8 unsigned char#define uint16 unsigned intuint delaynum,flag,dingflag,dingnum;sbit lcdrs = P30;sbit lcdrw = P31;sbit lcden = P33;