基于STC单片机的信号检测与电机驱动模块设计
2017-12-12冉涌
[摘 要]智能电子产品开发过程中,常常需要信号检测和电机驱动电路,为了提高开发效率,降低成本,选用STC单片机作为核心控制器,将该电路设计为通用的模块,具备常用信号检测和直流电机、步进电机驱动能力,介绍了该模块电路的系统构成、硬件电路及软件设计中的注意事项。
[关键词]信号检测;步进电机;AD采样
中图分类号:TP368.1 文献标识码:B
在工业控制、智能电子产品开发中,常常需要信号检测和电机驱动电路,每次开发新的产品都重新设计相应电路,是一件费事耗力的工作。鉴于常用的输入信号有开关量的数字信号、一定范围内的模拟信号;输出部分,多采用电机作为执行机构,其中,又以直流电机和步进电机最为常用[1]。因此,将这类高频度使用的电路模块化,势必大大提高新产品开发效率,降低开发成本。同时兼顾通用性和价格因素,设计一款价格低廉,兼容多种信号检测,可驱动直流电机、步进电机的模块电路,有较大的社会需求和广阔的市场前景。
一、模块结构设计
信号检测与电机驱动模块需要具备信号检测与电机驱动能力,同时,为了满足各类用户的需求,要能提供电压范围较宽的多路电源接口,为方便用户设置,需要有多个按键作为功能调整键。采用更高集成度的MCU简化输入接口电路,可大大减小电路复杂度,减小电路尺寸,节约成本,电路结构如图1所示。串行通信接口,既方便用户下载更新程序,又可用于与系统与其它模块、上位机等通信。
图1 模块结构框图
二、硬件电路设计
综合考虑系统的控制功能和对输入信号的采集能力,兼顾成本,选择STC12C2052AD单片机作为主控芯片。该单片机拥有1K字节的EEPROM,4路PWM/PCA/CCU单元,可作为DA使用,有2个定时器;具备8通道的高速A/D采样能力[2],该AD为电压输入型,8位精度,速度可达100KHz,用于电池电压检测、温度检测、频谱检测等场景。在通信方面,具有SPI通信接口和全双工的串口[3]。
电机驱动部分采用L293DD驱动器,其内部集成双极型H-桥电路,可以同时驱动两路直流电机或者驱动2相、4相步进电机。每个通道都配备了一个使能输入端。L293DD逻辑电路具有独立的供电输入,工作电压范围4.5V-36V,最大电流达1.2A。外部电路连接时,直接将EN1和EN2接高电平,使能有效。通过分别控制IN1-IN4的高低电平状态来驱动电机的运行状态。为方便用户调试,在输出位置外接4个LED灯,作为状态指示。
电源部分,留出多路接口,允许电压范围4.5V-36V,以利于直接驱动电机动作。同时,为了保证核心控制电路有稳定的电源,采用sop封裝的7805芯片做三端稳压电路,提供5V工作电压。
输入接口部分,引出单片机的P3,P1.4-P1.7作为通用输入输出控制口,引出P1.0-P1.3作为4路AD采样通道,并配备电压端子VCC和接地端子GND,方便常用的传感器连接。另外,外部引出单片机的TX,RX引脚,并采用11.0592MHz晶振,方便程序下载和串口通信。设置4个独立按键,方便用户做个性化功能设置和参数调整。
三、模块软件开发
最常用的直流电机驱动,要求有三种工作状态:停止、正转、反转。其控制逻辑比较简单。本文以OUT1,OUT2接入1路直流电机为例。当IN1=0,IN2=0时,OUT1=0;OUT2=0,电机停止运行;当IN1=0,IN2=1时,OUT1=0;OUT2=1,形成电势差,电机正转。同理,逻辑反向后,电机反转。
2相4线式步进电机也是比较常用的一类执行机构,其控制线有A1、A2、B1、B2共四根,A1、A2构成A相,B1、B2构成B相。控制时可以采用4拍或者8拍的工作方式。以4拍为例,其时序逻辑为A相正向导通-'B相正向导通-'A相反向导通-'B相反向导通。在程序控制时,需要通过定时器0定时,大约2ms换相。其电平控制逻辑如表1所示。
表1 四线的电平逻辑
输入的传感检测设备,主要有开关量的数字信号输入和模拟量输入两类。当为开关量时,传感器信号检测类似于按键检测,采用条件判断语句直接解决;当为模拟信号时,则需要连接到AD转换接口P1。软件设计方面,首先,设置P1M0、P1M1寄存器,将对应端口置为开漏模式或高阻模式。然后,配置特殊功能寄存器ADC_CONTR。该寄存器的8位结构如表2所示。
表2控制寄存器结构
其中,CHS2、CHS1、CHS0三位的组合,用于选择当前转化通道;SPEED1、SPEED0两位,用于用户选择转换速度;ADC_POWER位是电源控制位,在启动AD转换前一定要先开启该位,将其置为1,AD转换结束,为了降低功耗,可以选择关闭该位;ADC_START是转换启动控制位,设为"1"时,开始转换,结束后为0;ADC_FlAG是转换结束标记,当完成一次转换后,该位自动置1。需要注意的是,该位必须手动清0。最后,转换的结果以二进制形式存放在8位寄存器ADC_DATA中,直接读出,对应的实际电压值Vin由公式(1)求得。
其中Vcc是STC单片机的实际工作电压。在工作电压有波动的情况下,为了提高精度,可以外接稳定性较高的电源作为参考电压。
四、总结
综合考虑性能和成本因素,选用STC单片机与L293DD驱动器搭配的方案,设计了一套模块化单元电路系统,介绍了该系统硬件电路设计的要点以及软件设计中电机驱动程序和AD转换程序的写法。在智能电子产品开发过程中,直接使用该电路模块,可大大提高产品开发效率。
参考文献
[1] 贺益康,许大中. 电机控制[M]. 浙江: 浙江大学出版社, 2014: 1-3.
[2] 杨峰, 胡彬, 罗青青. STC单片机AD转换及EEPROM使用[J]. 数字技术与应用, 2011(9):169-171.
[3] 姚永平.STC12C5620AD系列单片机器件手册[M].深圳:宏晶科技,2007.
作者简介:
冉涌(1981.06-),男,汉族,重庆人,硕士,讲师,主要研究方向:无线传感器网络、高速信号与实时信息号处理。endprint