关键词:单片机,步进电机驱动
一、前言
在进行热对流式加速度传感器温度特性研究中,需将传感器系统放置在一个可在纵向进行三百六十度旋转的旋转台上,并将旋转台放入恒温试验箱中,利用当旋转台旋转时传感器敏感面方向感受的重力加速度发生变化这一现象,检测传感器的灵敏度的变化。为使测量数据可靠,控制系统采用步进电动机作为驱动,通过控制转动的步数(角度),使转动台转过一个角度,待传感器的输出数据稳定以后即可记录有关数据。为实现这一功能,研制了用单片机控制的步进电机转台。
二、系统的总体设计
步进电动机工作,需要步进电机线圈的励磁信号,还需要功率放大器根据该信号产生驱动电流。专门为步进电机设计的环形分配器和功率驱动器可以实现这种功能。
通过键盘输入控制信息,包括电机的转向、转角等。单片机接收这些信息并产生相应的控制信号传送给电机控制器;同时单片机还要控制多位数码管显示键盘所输入的信息和实际转动的情况。
根据实际需要,人机交互通过4×4行列式键盘和一对4联LED数码管来实现;按键输入与LED显示器由控制芯片HD7279A来控制;单片机选用AT89C51 Flash单片机;由于测量范围并不要求倾斜角度变化的分度非常细密,选用成本较低的两相步进电动机42BYG121,其步进角为1.8度,通过半步驱动方式进行细分可获得0.9度的步进角;环形分配器和电机驱动器选用L297和L298N芯片,由L297将单片机给出的连续脉冲转换成步进电机所要求的相绕组脉冲序列;再由L298N对相脉冲信号进行放大,驱动步进电机转动。
最终系统总体方案如图1所示。
系统的工作过程如下:系统利用键盘输入数值,通过HD7279A芯片将输入的按键键值传送到单片机,单片机识别键值所代表的是数据还是功能键,或者传送数据经过HD7279A驱动LED数码管显示,或者根据输入数值确定步进电机的转角,输出一定的脉冲信号,并由L297转换成步进电动机各相的相脉冲,经过L298N放大驱动步进电动机,由步进电动机带动机械部分转动。
三、主要接口与编程实现
数据输入与显示接口芯片采用HD7279A,它是一个具有串行接口的,可同时驱动8位共阴式LED数码管的智能显示驱动芯片,该芯片同时还可连接多达64键的键盘矩阵,单片即可完成LED显示、键盘接口的全部功能。HD7279A内含译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式,此外还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
HD7279A的控制指令分为二大类:纯指令和带有数据的指令。纯指令包括测试、移位显示、复位等,共计六条,对应的控制码是从0xBF到0xA4;带数据的指令包括显示数据、消隐控制、读出键码等,指令格式是控制字+数据。
用C51编程,实现对HD7279A发送一个字节的指令或数据的例程如下:
void send_byte( unsigned char out_byte){
unsigned char i;
cs=0;
long_delay();
for (i=0;i<8;i++){
if (out_byte&0x80)
dat=1;
else
dat=0;
clk=1;
short_delay();
clk=0;
short_delay();
out_byte=out_byte*2;
}
dat=0;
}
发送带数据的指令可利用下面的例程来实现:
void write7279(unsigned char cmd, unsigned char dta){
send_byte (cmd);
send_byte (dta);
}
从HD7279A读出数据的例程如下:
unsigned char read7279(unsigned char command){
send_byte(command);
return(receive_byte());
}
定义有关的命令字如下:
#define CMD_RESET 0xa4
#define DECODE0 0x80
#define DECODE1 0xc8
#define CMD_READ 0x15
#define UNDECODE 0x90
#define BLINKCTL 0x88
……
要控制与HD7279A连接的LED,利用下面的程序行即可实现:
send_byte(CMD_RESET); //复位HD7279A
write7279(BLINKCTL,0xf8); //第1、2、3 位设置为闪烁显示
write7279(UNDECODE,0X08); //在第1位显示下划线
write7279(DECODE0,value); //按0方式解码显示数字
write7279(DECODE1,value); //按1方式解码显示数字
环形分配器L297的核心是脉冲分配器,它可以产生三种相序信号,对应于三种不同的工作方式:半步方式,一相激励方式,两相激励方式。它接收来自控制器的信号有: CW/ CCW 正/反转(17脚),HALF/ FULL 半步/基本步距(19脚),STEP 步进脉冲(18脚)。为了在现有硬件基础上达到最佳的使用效果,步进电机按半步方式运转,此时L297的工作时序如图2所示:
系统选用的功率放大器L298N,是一种H型双极性驱动器,D1~D4四个二极管组成桥式续流回路。使用上述H桥功放,每相绕组必须用一个H桥。L298N为双H桥高电压大电流功率集成电路,可用来驱动继电器、线圈、直流电动机和步进电动机等电感性负载。L297步进电机控制器与L298N双H桥驱动器组成典型的集成步进电机微控制器。其连接电路如图3所示。其中8个二极管D1~D8为与L298N芯片及步进电动机连接,组成H桥的续流电路。
四、系统控制的实现
为了方便控制与编程,按键的响应方式采用中断方式,在有按键按下时HD7279将发出一个低电平信号触发中断,在中断处理程序中完成对按键的响应,给出相应的显示和控制。程序框图如右图示。
按上述方案实现的步进电机转台控制器,能够方便地输入转动角度和转动方向,在转动的同时也能准确指示转过角度和方向,取得了良好的效果。