无刷直流电动机检测系统设计探究

无刷直流电动机检测系统设计探究

近年来,随着我国经济的发展,工业领域电气设备的数量和种类不断增多。电动机作为生产过程中最重要的动力来源之一,已经深入到各行各业的应用之中,并在国民经济的发展中发挥着越来越重要的作用。由于无刷直流电动机相比有刷直流电动机有更好的速度、更快速的响应和更长的使用寿命,因此在各个领域中取得了广泛的应用,例如家电领域、汽车领域等。目前,大多数的无刷直流电动机检测系统只是对单一的电动机运行参数进行检测,很少有一种对无刷直流电动机进行多参数检测的系统。然而在无刷直流电动机的使用过程中,需要实时监测其状态参数,以更好地进行控制。因此本文基于STM32芯片,设计了一种多参数无刷直流电动机检测系统。该系统能够对无刷直流电动机的电流、转子位置、转速、温度等进行实时测量并显示,具有很好的实用价值。

一、系统总体方案设计

本系统所采用的主控芯片为意法半导体公司生产的STM32F103VCT6微型控制器,该控制器具有功耗低、可靠性高以及性能强等特点。STM32F103VCT6微型控制器作为STM32中的一种增强型单片机,具有3个12位A/D转换器,并且支持USART、SPI、CAN等接口,输入通道也多达21个,因此可完全满足系统设计的需求。本设计主要包括电流检测电路、位置检测电路、转速检测电路、温度检测电路、显示电路、电源电路、电路等部分,系统总体方案设计如图1所示。在总体方案设计中,对于电流检测电路,由于霍尔电流传感器具有检测误差小、测量速度快、且具有电路简单等优点,因此利用霍尔电流传感器来对无刷直流电动机的母线电流进行检测。对于位置检测电路,本文所研究的是有位置传感器的无刷直流电动机,也就是说该电动机上安装有三个霍尔位置传感器,并且这三个霍尔传感器的相位差为120度,因此将霍尔传感器输出的信号通过光耦电路输入给STM32,进而实现位置的检测。对于转速检测电路,通过在无刷直流电动机的输出轴上安装光电编码器,并将光电编码器的输出信号进行光电隔离输入到STM32中,实现速度的测量。对于温度检测电路,采用负温度系数的热敏电阻对无刷直流电动机的轴承盖、轴头等部位的温度进行检测,热敏电阻将检测到的温度信号经过处理电路转换为电压信号,进而输入到STM32的ADC管脚中,实现温度的测量。

二、系统硬件设计

2.1电流检测电路。在电流检测电路中,本设计利用霍尔电流传感器ACS712来检测无刷直流电动机中的电流。ACS712是+5V供电,可以测量20A的交流或者直流电流,灵敏度为100mv/A,输出电压为0.5V~4.5V。首先,ACS712将无刷直流电动机中的电流信号转变为电压信号。由于ACS712的输出信号电压最大值为4.5V,而STM32中的模数转换接口的输入电压为+3.3V,因此需要利用一个运算放大器,对ACS712输出的电压信号进行缩小,以满足STM32的要求,如图2所示。在图2中,采用运算放大器LMV324,并将运放比例设定为0.5,使得ACS712的输出电压满足STM32模数接口PA3的要求。此外,在ACS712的P5和P6引脚之间接一个电容,可以消除输出信号的噪声。

2.2位置检测电路。本设计采用霍尔位置传感器连接光耦TLP5214,将无刷直流电动机的位置信号传送给STM32进行处理,如图3所示。在图3中,霍尔传感器通过P3、P4和P5将三路高速脉冲信号HAL1、HAL2和HAL3进行输出。为了消除噪声的干扰,增强霍尔信号的强度,将霍尔传感器的管脚P3、P4和P5各接一个上拉电阻R6、R7和R8,此处R6、R7和R8取400Ω。同时,为了防止电动机产生的反向电流对PCB板上其他元器件造成损坏,在电源VCC处接一个二极管D1。由于光耦TLP5214的输出信号电流过大,因此在光耦输出端P16、P14和P12与STM32的ADC口PB0、PC4和PC5相接时,需要在各路的ADC输入通道前接一个限流电阻R9、R10和R11,防止电流过大而对STM32造成损坏。

2.3转速检测电路。在转速检测电路中,利用正交编码器来测量无刷直流电动机的转速。正交编码器一般有5根线连接,分别是A、B、Z、GND和VCC,也就是说当电动机转子旋转一圈时,引脚A和B会输出相应的脉冲。Z作为零点信号,代表当编码器旋转到零点位置时,引脚Z会发出相应的信号。为了将正交编码器输出的脉冲信号送到STM32的定时器中,需要利用光电编码器6N136对脉冲信号进行光电隔离。由于脉冲输出属于集电极开路门,因此在A、B、Z输出端各接一个22KΩ的上拉电阻R13、R16和R19。为了防止Z信号输出受到干扰,在U6的VO引脚上接一个10pF的电容。通过以上的方法,将正交编码器的输出脉冲信号A、B、Z分别发送到STM32中定时器引脚PA0、PA1和PA8中。

2.4温度检测电路。在温度检测电路中,采用热敏电阻对无刷直流电动机进行温度测量。该热敏电阻具有随着检测温度的升高而阻值降低的特点,测量电路如图5所示。本设计只给出了一路温度检测电路,若要对多点进行温度测量,则可以通过拓展图5中给出的电路进行多路温度采集。在本电路中,首先采用电阻值为3KΩ的电阻对热敏电阻进行分压。由于输出信号较为微弱,因此使用运算放大器LM321对输出信号进行放大。为了抑制对运算放大器输出信号的干扰,在运算放大器的输出端接两个电容C9和C10。对输出信号进行滤波后,送入STM32的ADC引脚PB1。

2.5显示电路。本系统采用LCD12864作为电流、转子位置、电动机转速和温度的显示界面。在LCD12864接线中,将电源正VDD和电源地VSS分别接3.3V电源和地。同时,在VDD和VSS之间接一个电容C11。VO作为对比度调整接口,通过C12接地。控制管脚RS、R/W和E分别接STM32的PC1、PC2和PC3。DB0-DB7位三态数据线,连接至STM32的PG0-PG7上。此外,由于LCD12864采用并口传输方式,因此将PSB固定置为高电平。引脚A和K分别是背光源正和背光源负,因此一端接5V电源,一端接地。

2.6电源电路。本设计电源电路只考虑STM32、霍尔传感器以及LCD12864的供电,因此需要的电压有直流5V和3.3V。本系统以直流24V作为系统的输入电源,为整个系统提供稳定的电压,如图7所示。首先,需要将24V直流转换为5V直流进行输出,因此本设计采用LM2956进行电压转换。在LM2956电路中,为了防止24V输入端的瞬态电压过大而造成电路损坏,采用C14和C15作为电路输入电容。此外,为了在LM2956每次通断时产生瞬态电流,因此在输出端采用C16和C17作为输出电容。在LM1117电路中,采用C18和C19作为输入电容,防止断电后出现电压倒置。在LM1117的输出端上,为了抑制自激振荡,使用C20和C21作为输出电容,保证输出电压的稳定。因此,利用以上方法,可以得到所需的直流5V和3.3V电压。

2.7电路。STM32电路的设计主要包括晶振电路设计和复位电路设计。STM32晶振有高速外部晶振和低速外部晶振两种,其中高速外部晶振为STM32的外设提供时钟,如图8(a)所示,低速外部晶振作为STM32定时器、休眠和看门狗的时钟模块,如图8(b)所示。高速外部晶振和低速外部晶振的频率分别为8MHz和32.768kHz。图8(c)所示为STM32的复位电路,该电路使用3.3V电压,其中RESET接STM32的NRST引脚。当S1断开时,RESET引脚接高电平,STM32处于正常工作状态;当S1按下后,C26开始放电,此时RESET变为低电平,使得STM32复位;当S1松开后,C26重新充电,RESET又变为高电平,STM32正常工作。

三、系统软件设计

本系统主要利用C语言,在keiluVision5平台上进行程序编写。在无刷直流电动机转动时,所设计的系统能够实时采集电动机的状态参数,包括电流数据、转子位置数据、转速数据以及温度数据等。系统上电后,首先对各个检测模块进行初始化,即对STM32的I/O口、定时器以及寄存器进行初始化。然后对各个传感器、显示模块等外设进行初始化,并检测各个模块是否正常工作。若检测正常,则蜂鸣器响一声,进入各个模块的检测环节;若检测异常,则蜂鸣器响两声,重新进行初始化并显示错误代码error。在系统检测过程中,将接收到的各个数据进行处理,并在LCD12864上进行显示。在一次程序执行完之后,等待下一次数据采集。

四、结语

本文设计了一种基于STM32单片机的直流无刷电动机检测系统。介绍了系统的总体设计方案、系统硬件电路设计和系统软件设计。本系统具有电流检测、转子位置检测、转速检测和温度检测等功能,可实时显示各种数据的检测结果,为无刷直流电动机的使用提供关键的参数数据。

作者:周琦 张宇翔 李丹雯 单位:航空工业陕西飞机工业(集团)有限公司制造工程部特设室