时间:2024-07-28
,2
(华东理工大学信息科学与工程学院1,上海 200237;化工过程先进控制与优化技术教育部重点实验室2,上海 200237)
随着社会的快速发展,人们的经济收入显著提高,汽车正在快速地进入普通家庭的生活。以前,汽车微型电机仅仅作为雨刮器、电机油泵、自动天线、挡风玻璃洗涤器等部件的驱动源,数量相对较少。如今,人们对舒适度与自动操控性的不断追求,汽车电子得到了迅速发展,尤其是车用微型电机。现在轿车内安装有许多微型电机,例如电动座椅坐垫的位置移动、靠背和头枕角度的变化、后视镜的摆动、照明大灯的洗涤、玻璃窗的开启关闭、电动车门锁的操纵、水箱冷却风扇的转动等。这些汽车电机的大量需求,催生了部分企业对汽车电机的生产。
对于电机中的步进电机,如何快速且有效地检测微型步进电机的性能特质,成为企业必须考虑的问题。电机的性能指标中,主要包括驱动器的设计、电机电流的检测、步进电机的驱动电压范围以及步进电机的频率等。本文将根据步进电机性能指标的检测要求,进行检测系统的硬件电路设计、软件代码开发,以实现对步进电机的控制与检测功能。
为了实现步进电机的良好控制以及性能检测,同时,为了便于整个系统后续的修改与改进,将整个系统分成电源转换模块、主控制器模块、步进电机驱动模块、电机电流检测模块以及上位机接口模块等几部分。各个模块之间相互独立,可以方便地进行替换以及修改。
① 系统电源转换模块利用金升阳电源模块完成AC 220 V转DC 24 V的电压转换,利用专用电源芯片完成DC 24 V转DC 5 V、DC 3.3 V的电压转换,并通过可调电位器完成步进电机驱动电压的产生。
② 主控制器模块利用STM32芯片完成步进电机的正反转控制、稳定状态步数、频率等相关的设置。
③ 驱动器模块通过反相器74HC04D与L298N建立步进电机驱动器,完成步进电机的正常驱动。
④ 电流检测模块通过电流电压检测芯片MAX4172完成电流采集以及相关检测。
⑤ 上位机界面利用C#语言完成人机交互界面软件代码,实时显示当前步进电机的性能情况。
系统整体框架如图1所示。
图1 系统整体框架图
为方便实际使用,电源转换模块采用AC 220 V作为输入电压,并利用MORNSUN的专用电源转换芯片HL25-10B24将AC 220 V电源转换成DC 24 V。该芯片具有稳压输出、低纹波、低噪声等特点。芯片内部具有大量的保护电路(输出短路、过流、过温等保护),可以防止因不当操作而损坏芯片。芯片产生的DC 24 V利用LM2596-5芯片转换成DC 5 V电源,再利用LM1117-3.3芯片转换产生DC 3.3 V电源。所产生的DC 5 V电源和DC 3.3 V电源为后续检测芯片、控制器等供电。同时,利用LM2596-ADJ可调电源转换芯片,通过R2、R3和R4的阻值关系,调节R2的阻值;利用LM2596-ADJ内部参考电压Uref(1.23 V),输出不同的电压值UCC_M,用作步进电机的驱动电压等。
UCC_M=Uref(R4+R2)/R3
(1)
式中:R3=1.5 kΩ;R4=5.1 kΩ;可变电位器R2的量程范围为0~20 kΩ。
当R2取最小值0 kΩ时,UCC_M输出4.18 V;当R2取最大值15 kΩ时,UCC_M输出20.58 V。因此,UCC_M的取值范围为4.18~20.58 V,比较符合汽车电机的电压使用范围8~16 V。
电源电压转换电路如图2所示。
图2 电源电压转换电路
系统选择ST公司的Cortex-M3系列的微处理器STM32F103C8T6作为主控制器[1]。STM32F103xx具有高性能的ARM Cortex-M3 32位RISC内核,工作频率达到72 MHz;内置高速存储器(高达128 kB的闪存和20 kB的SRAM),具有丰富的增强I/O端口和联接到2条APB总线的外设。其包含2个12位的ADC、3个通用16位定时器和1个PWM定时器,同时具有标准和先进的通信接口,如I2C、SPI、USART、USB和CAN总线等。
STM32F103xx这些丰富的接口,使其具有广泛的应用场合:①电机驱动和应用控制;②医疗和手持设备;③PC外设和GPS平台;④工业应用(可编程控制器、变频器、打印机和扫描仪);⑤警报系统、视频对讲和暖气通风空调系统等。
本文利用其在电机驱动和应用控制方面的优势来控制步进电机;利用MAX3232转换芯片与RS-232接口,编写上位机软件代码与PC机进行串口通信;利用Cortex-M3内部集成的ADC进行电压检测;通过TIM2定时器产生定时中断;通过DMA直接内存存储特性提高CPU的工作效率等功能实现步进电机控制与检测。具体主控制器与串口通信电路如图3所示。
图3 主控制器与串口通信电路
步进电机驱动器主要用于步进电机的驱动。步进电机选择的好坏,将在很大程度上决定步进电机的运行情况。该步进电机驱动器模块采用L298N[2-6]驱动芯片。L298N驱动芯片属于H桥集成电路,具有输出大电流、大功率等特点;采用DIP封装以及加散热片的形式提高芯片的散热效果,防止芯片发热而影响芯片性能。
同时,利用IN4007二极管进行反接,实现电路保护,防止步进电机因堵转等原因产生高脉冲冲击电压而损坏驱动器[7-11]。此外,在L298N的信号输入端增加反相器74HC04,以进一步提高电机的驱动能力。步进电机驱动器电路设计如图4所示。
图4 步进电机驱动器电路设计
需要检测的步进电机是两相六线,即该步进电机主要有A+/A-相、B+/B-相和两个驱动电源,共6根线组成。为了加快步进电机的检测效率,4个步进电机同时检测。根据参考,步进电机的最大相电流不超过260 mA,则4个步进电机的最大相电流和不超过1 040 mA,而驱动器L298N的输出电流为2 A,最大可达到4 A。因此,考虑部分损耗,1个驱动器L298N完全能驱动4个步进电机[12-13]。
步进电机的控制是将A+A-B+B-(Pin1、Pin3、Pin4、Pin6)的高低电位,每隔一定的时间,按照一定的顺序进行循环往复操作。如A+A-B+B-(Pin1、Pin3、Pin4、Pin6)的电位按照1001→1010→0110→0101的顺序进行,再回到1001进行重复操作,并假定这种情况是正转;那么反转的情况刚好与正转相反,即0101→0110→1010→1001,再回到0101进行重复操作。步进电机电平控制时序如图5所示。
图5 步进电机电平控制时序
无论是正转还是反转,每相相电流并非一直存在。为了查看当前测试电机的相电流情况,可以考虑直接接示波器测量电流。这种方式可以方便地观察波形的情况(毛刺、峰值等),但这种方式比较适合前期试验使用,在实际大批量测试时,这种方式就显得不太合适。因此,利用电流电压转换芯片MAX4172,将测到的电流转换成电压并发送给Cortex-M3,在有电流产生时,利用其内部的ADC进行A/D采集,并进行一定的数据转换,将数据发送给上位机显示。以U1为例,在A+的电位为低时,产生相电流ILOAD,通过采样电阻RSENSE(R2),将电流转换为电压;通过跨导增益Gm(10 mA/V),利用输出采样电阻ROUT(R5)输出检测电压UOUT(MI1),并传输给控制器STM32F103。转换公式如下:
UOUT=ROUT×Gm×ILOAD×RSENSE
(2)
在电流电压转换公式中,可以通过改变ROUT的值来改变输出电压值。采样电阻RSENSE尽可能选择小阻值,以减少电流的下降,并通过并联较大阻值的R1对其进行部分修正。
系统软件设计流程包括系统启动、初始化程序、模式选择、模式配置、电机正反转控制和上位机显示等。系统软件设计流程如图6所示。
图6 系统软件设计流程
初始化过程主要完成I/O端口、USART串口、RCC时钟、ADC和DMA的初始化配置,以及Systick定时器配置、filter平均滤波算法、延迟函数设置与中断初始化配置等。引入DMA配置的目的在于利用DMA的直接存储功能,节省向CPU请求的时间,提高工作效率。加入filter()的目的在于利用其平均值滤波算法避免单次误操作或检测,避免检测数值严重偏大。
模式选择有两种模式,简要说明如下。
模式一,属于常规模式,主要完成步进电机正转启动、稳定转动、停止转动,循环N次;步进电机反转启动,稳定转动,停止转动,循环N次。最后整个过程循环N次。
模式二,属于一般模式,主要完成步进电机的随意正反转、停止转动,并循环N次操作。
步进电机操作包括正转反转时的电机启动、稳定、停止的函数设置。部分函数设置如下。
void Motor_Conseqent_Start(u16 Start_Freq, u16 Steady_Freq);
void Motor_Conseqent_Steady(u16 Steady_Freq, u32 Steady_times);
void Motor_Conseqent_Stop(u16 Steady_Freq, u16 Stop_Freq);
void Motor_Reverse_Start(u16 Start_Freq, u16 Steady_Freq);
void Motor_Reverse_Steady(u16 Steady_Freq, u32 Steady_times);
void Motor_Reverse_Stop(u16 Steady_Freq, u16 Stop_Freq);
利用这些函数,可以快速地完成模式一、模式二的设置,实现步进电机的不同控制。
上位机部分完成步进电机的配置,包括启动频率、稳定频率、停止频率、循环次数等。同时,通过串口调试软件,完成步进电机在各个状态下步进电机的电压值、电流值等显示。
为了分析整个系统的性能与可靠性,对模式一、模式二分别进行了试验测试。在模式一中,对步进电机在不同的驱动电压下进行测试,主要在8 V、10 V、12 V、14 V、16 V的电压下进行稳定性测试。选取的数据主要是步进电机在稳定状态下的30组电流值(仅在有电流通过时)。对这30组测试数据进行Matlab图形显示,不同电压下步进电机的相电流大小如图7所示。
图7 不同电压下步进电机的相电流大小
由图7可以看出,在各个驱动电压下,电机所检测的相电流基本保持不变,说明此步进电机的驱动器具有良好的稳定性。
但在实际情况下,步进电机必定不会长时间正转或反转后再改变运转方向,而是一种随机的方式。因此,采用模式二的方式,即步进电机的运转方式是随时可变的。模式二中步进电机工作情况如图8所示。
图8 模式二下步进电机工作情况
图8中,梯形图上升沿表示步进电机进行正转,下降沿表示步进电机进行反转,维持定值不变表示步进电机停止运转。
由图8可以看出,步进电机的运转方式是随机变化的。通过在模式二下对步进电机进行的性能测试表明,该电机具有良好的性能。
步进电机的控制与检测系统可广泛运用于功率较小的步进电机批量测试,尤其适合专门生产小电机的厂家使用。在使用较大驱动功率的步进电机时,可以通过减少驱动步进电机的个数来控制步进电机。在驱动四相步进电机时,仅需修改少量程序代码,即可完美驱动电机运动。同时,可以利用电流检测模块进行一定的修改,以检测电路中需要测试的电流。在电源模块的设计中,直流2 V、5 V、3.3 V模块和可调电压模块均是比较常用的模块,可以直接运用到其他电路设计中,方便以后的开发使用。
测试表明,步进电机驱动器模块具有良好的性能,工作稳定、可靠,性能较一般的传统驱动器有一定的改进。
[1] 喻金钱,喻斌.STM32F系列ARM Cortex-M3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008:22-50.
[2] 杜家熙,陈艳锋,李国厚.基于单片机的步进电机控制器设计[J].煤矿机械,2007(2):88-91.
[3] 张鸿斌.基于DSP的步进电机控制系统的设计[J].四川兵工学报,2013(7):88-91.
[4] 王慧华.基于C8051F单片机的步进电机控制驱动器设计[J].硅谷,2012(19):65.
[5] 王维正,臧玉萍.基于L297与L298N的步进电机控制系统设计[J].硅谷,2008(13):29,99.
[6] 向海键.基于L297/298的步进电机工作模式的单片机接口[J].微计算机信息,2007,26:302-303,179.
[7] 宰文娇,汪华章.步进电机驱动控制系统的设计和实现[J].煤矿机械,2013(7):157-159.
[8] 勾占锋.一种微型步进电机的驱动设计[J].科技创新与应用2012,24:8-9.
[9] 陈炳衡,郭云龙,胡清.基于ARM单片机的步进电机细分驱动设计[J].黑龙江科技信息,2011,36:31.
[10]王党利,宁生科,马宝吉.基于TB6560的步进电机驱动电路设计[J].单片机与嵌入式系统应用,2010(1):41-43.
[11]黄法,孔秀华.基于PIC16F873单片机的步进电机控制系统[J].现代电子技术,2009(12):175-178.
[12]魏玉辉,吴友宇.基于单片机及VC++的步进电机控制系统设计[EB/OL].[2013-03-25].Http//www.paper.edu.cn.
[13]陈文革,尹芳.步进电机在制袋式包装机械运动控制中的应用[J].包装工程,2005(1):36-38.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!