新闻  |   论坛  |   博客  |   在线研讨会
步进电机式温度表的设计 最近很忙,所以贴出我以前做得课程设计资料
hudaliang1 | 2012-01-09 16:53:07    阅读:3382   发布文章

步进电机式温度表的设计 本方案设计出的步进电机式温度表其温度传感电路、显示系统均与方案一相同,唯一不同的便是单片机控制步进电机系统的设计,下面对此系统做重点介绍。 图2-6 单片机控制步进电机系统 图2-6便是本方案中的单片机控制步进电机系统原理框图,从图可见,本系统采用同频PWM驱动器来驱动步进电机运转,PWM控制技术是利用半导体开关器件的导通与关断把直流电压变成电压脉冲列,并通过控制电压脉冲宽度或周期以达到变压目的,或者控制电压脉冲宽度和脉冲列的周期以达到变压变频目的的一种控制技术。为了实现高频运行,PWM驱动电路工作于斩波控制状态。斩波驱动可使绕组电流仅在给定值的极小范围内变化,电流波形近似于矩形波,使电机高频输出力矩增大。 单片机的输出接口与驱动器的CP相连,采用定时器/计数器T0编制程序产生高频方波脉冲作为电机高频运行时驱动器的时钟斩波信号;编制程序产生低频方波脉冲,作为电机低频运行时驱动器的控制信号,突破了以往用硬件产生方波脉冲的方法,充分利用了单片机软件资源。 本方案用软件设置各键功能,每个键代表电机的某种状态,通过不同的键实现电机各种运行状态的控制。 本设计方案的最大特点是同频PWM驱动器的使用,使得电源效率提高,但由于采用斩波驱动,控制精度不高。 3.1温度传感模块设计 3.1.1 芯片的选取及在本设计中的应用 传统的车载步进电机式温度表系统中,对温度信号的感应、转换一般采用温度传感器和A/D转换器相结合的方法,这种方法所设计出的温度传感电路精度不高,无法满足现代工业的需要。随着科学技术的发展,出现了大量集成芯片,这些芯片的使用,使得硬件电路变的相对简单,且易编程,逐渐代替了传统所使用的温度传感电路。本设计考虑到现代工业的需求,选用新型传感芯片DS18B20用于温度的感应、转换,构成温度传感模块。以下便对本次所设计的温度传感模块做详细介绍。 在介绍温度传感模块之前,先对此模块的核心:DS18B20做一些介绍。 DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,本设计中的温度测量范围为0~120℃。可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生。 DS18B20内部结构如图3-1所示,主要由4部分组成:64位ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。 其中,DS18B20中的温度传感器完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。 图3-1 DS18B20的内部结构 高低温报警触发器TH和TL、配置寄存器均由一个字节的EEPROM组成,使用一个存储器功能命令可对TH、TL或配置寄存器写入。其中配置寄存器的格式如下: 0、 R1 、R0、MSBLSB,R1、R0决定温度转换的精度位数:R1R0=“00”,9位精度,最大转换时间为93.75ms;R1R0=“01”,10位精度,最大转换时间为187.5ms;R1R0=“10”,11位精度,最大转换时间为375ms;R1R0=“11”,12位精度,最大转换时间为750ms;未编程时默认为12位精度。 高速暂存器是一个9字节的存储器。开始两个字节包含被测温度的数字量信息;第3、4、5字节分别是TH、TL、配置寄存器的临时拷贝,每一次上电复位时被刷新;第6、7、8字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。 3.1.2电路设计 DS18B20与微处理器的接口设计有两种:寄生电源工作方式和外接电源工作方式,在本设计中,采用外接电源工作方式,其连接图如下图所示。 图3-2 DS18B20与单片机接口电路 在本设计中,DS18B20作为温度传感模块的核心,实时感应、转换温度,供给单片机控制模块数字量,选用单片机的P3.0口用于同DS18B20进行数据传输。P3.0口为单片机的串行数据接收口,从DS18B20输出的数字信号通过此引脚进入单片机,进而通过两次输入值的差值大小控制步进电机正转、反转。 3.3 步进电机驱动模块设计 3.3.1 步进电机的选型及在本设计中的应用 步进电机是微特电机的一种,它是将电脉冲信号转换成相应的角位移或直线位移的变换器。它可以用脉冲信号直接进行开环定位控制,而无需位置或速度传感器,并且控制线路简单,使用方便、可靠。在自动控制系统中或者汽车电子控制系统中,常常需要有将数字信号转换为角位移或线位移的电磁装置,步进电动机的工作特点恰好符合此要求,可以说它是和现代数字控制技术结合的最好的一类电机,很容易和其它数字器件进行接口。因此广泛应用于汽车电子、数控机床、机器人等领域。 本设计中选用VID29系列仪表马达。VID29仪表马达是一种精密的微型步进马达,内置减速比180/1的齿轮系,可将数字信号直接准确的转为模拟的指示输出。VID29仪表马达需要两路逻辑脉冲信号驱动,可以工作于5V~10V的脉冲下,输出轴的步距角最小可以达到1/12°,最大角速度600°/S。 VID29系列仪表马达是两相步进马达经三级齿轮减速转动输出的,工作原理如下图所示: 图3-5 VID29马达工作原理图 特点: 工作电压范围:5V~10V 低功耗:低于20mA,5V,2×100mW 工作环境温度:-40℃~105℃ 高精度:步距角最小可达到1/12°。 长寿命:特殊耐磨材料和齿形设计 图3-6 分步驱动模式脉冲序列 用标准的5V逻辑电路电压,可以以分步驱动模式直接驱动马达,电流需求小于 20mA。 在分步模式下,每个脉冲可以驱动马达转子转动 60°(即输出轴转动 1/3 度)。马达转动的方向取决于施加在马达左右线圈上的周期性脉冲序列的相位差。如上图所示,左线圈电压 相位超前于右线圈电压时(相位差为 π/3),VID_29系列的马达输出轴将顺时针旋转。 为了使马达运转更平稳,减小马达噪音,可以采用细分技术,用更精密更接近正弦波的脉冲波序列来驱动马达,使马达获得15°的微步步进。如下图所示: 图3-7 脉冲细分时序图 电气特性: 工作环境温度最大值105℃,最小值-40℃。 线圈电阻最大值300,最小值260,典型值280。 消耗电流最大值20。 启动频率最小值160,最大驱动频率600。 机械特性: 全步模式下步距1°,分布模式下步距1/3°,微步模式下步距1/12°。 转角范围0~315°。 在本设计中,考虑到驱动芯片的选取、设计要求的需要以及成本的高低,我们采用分步模式驱动仪表马达。 3.3.2步进电机驱动芯片的选型及在本设计中的应用 在本次步进电机式温度表系统的设计中,由于步进电机工作电流过大,单片机输出脉冲难以驱动,因而使用一驱动芯片,利用其放大电流驱动步进电机工作。目前市场上经常使用到的芯片有VID-6606、ULN2003等,下面便对这些芯片做一些简单的介绍,然后通过对比选取一种适合本设计要求的驱动芯片。 1.驱动芯片ULN2003 ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003 的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和 CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。 ULN2003 工作电压高,工作电流大,灌电流可达 500mA,并且能够在关态时承受 50V 的电压,输出还可以在高负载电流并行运行。 图3-8 ULN2003方框图 表3-1 ULN2003极限值参数 ULN2003与单片机的连接如图3-9所示。 图3-9 ULN2003与单片机连接图 2.VID-6606 VID-6606 是一款专为驱动微型步进马达而设计的CMOS集成电路,每个驱动芯片可同时驱动四路马达。 在驱动芯片的频率控制端输入脉冲序列,可以控制步进马达的输出轴以微步转动,每个微步马达输出轴转动1/12°,最大角速度可达600°/s。 表3-2 VID-6606的电气参数 图3-10 VID-6606与单片机连接图 VID-6606与单片机连接如图3-10所示。 该产品适用于相位差为60°的两相永磁仪表步进马达,该型驱动芯片的特点是: (1)以微步驱动 (2)简单易用,每个马达只需速度和方向两个控制端 (3)所有输入脚都有干扰过滤器 (4)宽工作电压 (5)低电磁干扰辐射 以上是对实际中经常使用的两种驱动芯片的简单介绍。从上面可以看出VID-6606驱动芯片采用微步驱动,驱动步进电机指针一步走1/12°,而ULN2003采用分步驱动,驱动指针一步走1/3°。从上面的介绍中我们可以看到,本设计使用的步进马达采用分步驱动模式,因而选取ULN2003作为本设计的步进电机驱动芯片。下面对此次设计的步进电机驱动模块做详细介绍。 3.3.3 步进电机驱动电路设计 电路图如图3-11所示。由单片机的P1口通过限流电阻将步进电机驱动脉冲送入驱动芯片ULN2003,利用芯片的放大作用将驱动电流放大到步进电机工作电流范围内,通过OUT1、OUT2、OUT3三个管脚输出,驱动步进电机运转。 图3-11 单片机控制步进电机电路 统软件设计 4.1 系统总体框图 图4-1系统软件流程图 系统软件设计采用模块化设计方法。整个系统由温度传感模块,转换结果处理模块,步进电机正反转模块和显示模块四部分组成。系统软件流程图如图4-1所示。 上电或复位后,系统将进入初始化,系统开始运行。在执行过程中,根据程序的运转分别调用各个功能模块完成步进电机的正反转和显示温度。下面根据各功能模块的工作原理及设计要求进行软件设计,编写程序。 温度传感系统软件设计 在本设计中,温度传感电路以温度传感芯片DS18B20为核心,由于DS18B20本身具有A/D转换功能,所以软件设计只需将DS18B20进行软件设计即可。 软件设计框图如图所示,具体的程序见附录E。 图4-2温度传感系统软件设计框图 4.3 数据转换模块设计 在本设计中,步进电机转角最大为315°,步进电机每步走1/3°,则步进电机指针最多可走315/(1/3)=945步。在设计中,温度显示范围为0~120℃,则步进电机每走一步温度变化120℃/945。 在本设计中,温度传感芯片DS18B20转换输出的温度信号为16位,则单片机每跳动一位,步进电机指针走945/4096步,即指针转动(945/4096)×(1/3)°. 图4-3为数据处理程序流程图。 图4-3 数据处理程序流程图 本设计中,利用单片机再次采样值与上次采样值的差值是否大于0来判断步进电机是正转还是反转,然后利用差值与单片机每跳动一位步进电机指针所走步数相乘,得出步进电机指针所走步数N。 (1)判断步进电机正反转程序 在本程序的设计中,由于采样值均为16位,因而减法需考虑进位,当差值>0时,步进电机正转,此时给R5赋0;当差值<0时,步进电机反转,此时给R5赋1,详细程序见附录E。 (2)求步进电机步数N的程序 求解公式为:N=差值×(945/4096),本设计中,由于差值为16位数,而945 、4096均为16位数,所以可以直接进行相乘、相除运算。 89C51的乘法指令只能完成两个8位数相乘,因此16位无符号数相乘必须将他们分为4个8位数相乘来实现,具体乘法示意图如图4-4所示,图中ab为16位被乘数(a为高8位,b为低8位),同理,cd为16位乘数。 a b × c d bdH bdL +) adH adL R2 R3 @R0 +) bcH bcL R1 R2 @R0+1 +) acH acL @R0+3 @R0+2 图4-4 边乘边加16位乘法法则示意图 差值结果: 低8位→40H 高8位→41H 十进制数945转换成十六进制数为03B1H,4096转换成十六进制数为1000H。在本设计中,由于差值可能为负数,还需求补码。具体程序见附录E。 以上程序实现了16位的差值与十进制数945的相乘,接下来是实现上面得到的32位数除以4096,这个商就是我们要的步进电机的转动步数N,余数这里我们舍去。除法执行前后的寄存器分配如图4-5所示。 被 除 数 R5 R4 R3 R2 除 数 R7 R6 除法执行前 余 数 商 数 R5 R4 R3 R2 除 数 R7 R6 (b) 除法执行后 图4-5 除法执行前后的寄存器分配 实现上面乘法结果的32位数除以16位数(十进制数4096)的除法程序流程图如图4-6所示。详细程序见附录E。 图4-6 除法程序流程图 从以上程序可知:R3R2存放了步进电机所转的步数,R3存放高8位数,R2存放低8位。 4.4步进电机的单片机控制程序模块设计 图4-7 单片机控制步进电机程序流程图 如图4-7所示为单片机控制步进电机程序流程图,R5为0时,步进电机正转,R5为1时,步进电机反转,相关程序见附录E。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客