阀门市场的快速增长,对阀门控制技术提出了更高的要求。通常情况下,阀门用手动调节,然而在某些比较恶劣环境条件下,手动调节就显得不太合适。在某些应用场合,对阀门的控制不仅仅是简单的开关控制,还涉及到开度控制以及流量等各种关系控制。这就需要我们设计一种智能型的自动阀门控制系统。鉴于步进电机具有控制简便、定位准确等特点,因此非常适合于单片机控制。近年来,利用步进电机对阀门控制的技术已经应用到各个领域。为此,我们设计了一种利用XC866单片机控制步进电机,来调控阀门开关角度的装置。
步进电机工作特性
步进电机一般分为永磁式(PM)、反应式(VR)和混合式(HB)三种类型。目前,二相混合式步进电机的应用最为广泛。本设计采用的正是二相四线步进电机,步距角为1.8°,不细分。步进电动机基本原理与普通的永磁同步电动机是相通的,它是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角,而步进电机的驱动电路是根据单片机产生的控制信号进行工作。二相步进电机的内部结构如图1所示。
图1 二相步进电机的内部结构
由图1可知,该步进电动机有A和B两相绕组,由于感应子式步进电动机的特殊性。当在A、B两相绕组中通以对称的正旋交流电时,将产生圆形旋转磁场,而如果按照
的顺序依次对绕组通以确定幅值的直流电,将产生4步一循环的步进旋转定子磁场,步进角度为90°。为了充分利用电动机容量.增大输出力距,二相步进电动机整步运行通常采用的通电顺序。此时步进电机正转,当通电顺序反转时,步进电机反转。
设计方案
这里,利用英飞凌XC866单片机和外围芯片组成的控制系统代替脉冲发生器和脉冲分配器,用软件的方法控制单片机产生脉冲。设计一个阀门控制电压采样电路,用一个0~2.5V的电压控制阀门的开关程度,0V时阀门关闭,2.5V时阀门完全打开。单片机通过定时器产生中断对电压进行采样,经A/D转换后与前一次的数值做差。若差值超过允许的波动范围,则单片机会根据差值的正、负号确定电机的转向,通过计算得出相应的脉冲数;再发送脉冲,驱动步进电机的相应转动,增大或减小阀门的开度。若电压的差值在允许的波动范围内,则单片机不发送脉冲,阀门静止不动。
1 主控芯片XC866简介
XC866单片机是英飞凌公司推出的8位微控制器XC800系列的第一款产品,它具有处理能力强、运行速度快、安全性能突出、片上资源丰富、工程开发方便快捷等优点,性价比非常突出。它的输入/输出口(I/O 口)可由3.3V 或5.0V 供电;内核需2.5V 供电。主要特性包括:用来产生脉宽调制信号、带有电机控制专用模式的捕获/比较单元(CCU6);具有如自动扫描和结果累加(用于抗混迭滤波或结果平均)等特性。
XC866内部集成了高性能的8051内核以及功能强大的外设,对于熟悉51单片机的用户,可以在较短的时间内熟悉其性能,并利用其丰富的外设实现各种相对复杂的应用。
2 硬件设计重点
①: 步进电机驱动电路
在本设计中,我们选用了三洋公司(SANYO)电机驱动芯片LB1836M(见图2)。
图2 步进电机驱动电路
LB1836M是低饱和双通道双向电机低电压驱动器件,引脚INl、IN2、IN3和IN4是步进脉冲的输入端。
OUT1、OUT2、OUT3、OUT4为步进脉冲的输出端,分别与步进电机电机对B、A、/B、/A相连接。LBl836M输入端的四个步进脉冲可由单片机的P3.1、P3.0、P3.3、P3.2四路PWM通道产生。四个I/O口输出的相位关系为P3.0与P3.2反相,P3.1与P3.3反相,P3.0与P3.1相差π/2。
② 阀门控制电压采样电路
由于本设计中采用了一个0~2.5V的电压信号调控阀门的打开程度,单片机利用定时器中断对电压进行采样,然后传送到ADC模块再进行控制。电压采样电路如图3所示。
图3 电压采样电路
电压信号由Input端输入经过电阻分压,然后通过一个电压跟随器,这时1点电压与3点电压相同;然后,将信号传送到XC866的P2.4端口,再送到ADC模块进行电压采集。VAREF引脚为XC866的ADC参考电压介入口,VAGND为ADC接地。参考电压为2.5V,用LM4040的稳压二极管将电压稳定在2.5V,电容的设计是用来减少干扰。
③ 软件设计
本设计中步进电机的控制脉冲信号,是由软件编程控制XC866产生的,用C语言编写。软件的主要流程是:系统启动后,首先进行单片机和外围器件的初始化,I/O口进行置位,设置定时器。定时器产生中断,对目标电压值进行采样,与当前位置的电压分别经过A/D转换(参考电压为2.5V),再进行比较,求出二者的差及符号。当差值在允许的误差范围内,步进电机不动;当差值超出允许误差范围时,从XC866的四个I/O口输出所需数量的脉冲信号,控制电机转动。为防止在A/D转换中出现的误差及步进电机本身的误差的存在,造成电机振荡。因此,在程序设计时,规定一定的误差范围。