摘 要: 本文以Allegro公司推出的A3967SLB型串口控制器为步进电机细分驱动系统的硬件核心,实现了步进电机的8细分驱动。论述了上位机与基于单片机的步进电机控制系统之间的串行通信设计,给出了单片机串行通信的硬件接口电路。
关键词:A3967SLB;步进电机;细分驱动;串行通信
步进电机精度高,惯性小,在不失步的情况下没有步距误差积累,特别适用于数字控制的定位系统。传统的细分驱动电路由细分环行分配器、放大器和合成器等部分组成。这种电路应用复杂,灵活性差。本文利用a3967slb作为步进电机微控芯片,简化了步进电机的控制实现。由于单片机资源没有pc丰富,人机界面也没有pc友好,因此,本文采用了主从式结构,即pc用于管理,单片机用于执行。
由a3967slb构成步进电机的驱动部分
a3967slb是美国allegro公司生产的pwm恒流控制微步距驱动二相步进电机专用驱动器。它的工作电压可达30v,驱动电流达750ma,一个a3967slb即可驱动一台二相步进电机,可实现8细分驱动。芯片内部的pwm电流控制电路可通过加在pfd的电压设置为慢、快、混合三种电流衰减模式,如果pfd端的电压高于0.6vdd,则选择慢衰减方式。若低于0.21vdd,则选择快衰减模式。处于两者之间为混合衰减模式。另外,a3967slb还能提供完善的保护措施,包括抑制瞬态电压,过热保护、防止电流直通、欠电压自锁等功能。
a3967slb和微处理器之间不需要附加其他的接口电路,该芯片采用easy stepper接口,将8条控制线减少了2条(步长和方向),只要简单地输入控制步进电机的脉冲,其内嵌的转换器就可以实现对步进电机的控制。a3967slb还需要一些电阻、电容来调整其工作参数,整个驱动电路非常简单。
如图1所示,ms1和ms2是步进电机细分分辨率选择的逻辑输入口;dir是电机运转方向的选择口;reset用于重置芯片初始值,屏蔽所有外部输出;step为脉冲输入端口;out1a、out1b、out2a、out2b为h桥的两对输出端口;enable为使能端;sleep为睡眠模式;sense1、sense2为h桥的电流检测电阻;ref为参考电压;gnd为逻辑地和电源地;rc1、rc2为h桥固定截止时间模拟输入。最大限流imax是由取样电阻rs和取样比较器的输入参考电压vref决定的:
imax=vref/8rs
at89c52具有8kb flash,256b内部ram,32个i/o口线,3个16位定时/记数器,一个6向量两级中断系统,一个全双工串行通信接口,同时片内还有振荡器和时钟电路。使用很方便。在这个系统中,单片机主要用来产生控制脉冲并与上位机进行串行通信。
通信电路
在最简单的rs-232直接传送通信系统中,只要发送和接受双方同时准备好,仅用信号发送端(txd)、信号接收端(rxd)和信号地(gnd)3根信号线就可以进行通信;若以应答方式进行数据通信,可使用请求发送(rts)、清除发送(cts)或数据终端准备(dtr)、数据装置准备(dsr)4个信号进行硬件握手。在at89c52单片机系统中,分别从p3.0和p3.1引出串口线rxd和txd,通过专用的电平转换芯片转换成rs-232接口标准的电平,这样,二者之间就可以通过rs-232接口进行数字信号的传送。单片机可以通过直接传送或应答握手的方式与主机进行数据通信,但由于握手方式占用其它端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式。通信电路如图2所示。
软件设计
软件部分的设计主要包括下位机按mcu的接收程序、脉冲控制程序以及上位机的串口发送程序。上位机与下位机之间进行数据通信。上位机的程序主要通过windows可视化编程vc++实现。
下位机程序主要负责接受pc发来的数据,按照要求产生控制脉冲,具体流程为:首先对要使用的串口进行初始化,然后p2输出口清零,接着进入住程序的死循环,等待中断触发。接收一个字节的数据,ri=1,接着将ri清零。当单片机接收完数据后,标志位置1。将缓存中的数据存入控制的变量中,以便控制时使用(具体操作时先法数据帧再发启动帧)。软件控制流程如图3所示。
结语
结合以上介绍的基于a3967slb的步进电机控制系统,在vc++环境下,利用mscomm控件实现了pc与单片机之间的串行通信。实验结果表明,用这种方式实现上位机对基于a3967slb的步进电机的控制系统进行精确的驱动可行有效。
本系统中,利用pc的丰富软硬件资源和强大的系统功能,可进行一些数据处理、显示等工作;而从控制器at89c52则用于实时控制。另外,该系统为开放式结构,便于系统升级。
上一篇:基于ATmage8的打铃器设计
下一篇:AVR单片机GCC编程