在无刷直流电动机控制系统中,通常用DSP对信号进行采集和处理。但由于DSP的价格昂贵,在一些实时性要求不高的场合,可以用MCS-51单片机来代替DSP控制无刷直流电动机的起停、正反转和调速。
本文设计并实现了一种基于双单片机通信的无刷直流电动机控制系统。该设计方案电路简单、可靠性强、价格便宜。系统主要包括单片机控制电路、逻辑保护电路、过流保护电路、驱动电路、测速电路、转子位置检测电路等。其原理如图1所示。
1 转子位置检测电路
控制无刷直流电动机时,必须要知道转子的位置。在本设计方案中,采用了三个光电式位置传感器。这种传感器利用光电效应,由跟随电动机转子一起旋转的遮光板和固定不动的光源及光电管等部件组成。遮光板开有180°电角度左右的缝隙。随着电机转子的旋转,光电管间歇接收从光源发出的光,不断导通和截止,从而产生一系列0、1信号。这些信号通过P0口传输给单片机后,单片机通过P1口送出相应的控制字,就能很好地控制电机的换相。其控制原理图和换向控制表如图2和表1所示。
表1 电机正转换相表
2 驱动电路
绝缘栅极双极型晶体管IGBT的栅极驱动电压一般为15V±10%,而关断负偏置电压为5~6V。因此选用TLP250驱动IGBT,电路如图3所示。TLP250内部是光电耦合的,实现将控制电路与主电路隔离。当3脚接收到一个低电平时,VGE输出近似为15V,可以驱动IGBT使其导通;相反,当3 脚接收到一个高电平时,VGE输出近似为-5V,使IGBT截止。六只TLP250随着输入电平变化,可以很好地控制IGBT的开断,从而实现换相。
3 保护电路
3.1 起动时的限流保护电路
电动机起动时,由于转速较低,故转子磁通切割定子绕组所产生的反电势很小,因而可能产生过大的电流I。通常要加过流保护电路。主回路中通过电动机的电流最终通过电阻Rf接地。因此,Uf=Rf·IM,其大小正比于电动机的电流IM,Uf通过10kΩ电阻与电压比较器LM324反相输入端相连。当Uf大于LM324正相输入端给定电压U0时,LM324输出低电平。使发光二极管导通,则三极管C端输出低电平。由于C端与三输入与非门74LS10相连,不论另外两输入如何,其输出必为高电平,因而从TLP250输出-5V,同时关断了Q2、Q4、Q6三只 IGBT,即切断子主电路。当Uf<u0时,lm324输出高电平,这时它不起任何作用,电机正常换相。< p="">
3.2 运行时的逻辑保护电路
为防止单片机系统受环境干扰或执行程序时出错,在单片机输出端加了一个逻辑保护电路,其电路如图5所示。假定起动电流不超过最大电流,则输入C不起任何作用,输出只受P10~P15控制。按照所设计的桥式电路,要求Q1与Q4、Q2与Q5、Q3与Q6不能同时导通,否则通过IGBT的电流过大,导致过流损坏。根据电路的逻辑关系,当P10P13、P11P14、P12P15出错,都输出低电平,或者P0口输出均为低电平(高电平),Q1Q4、Q2Q5、 Q3Q6没有同时导通,很好地保护了电路。
4 测速电路
如果要对直流无刷电动机的转速进行精确控制,首先要对它的转速进行精确测量。笔者利用转子位置传感器所产生的脉冲信号来反映电机的转速。将传感器输出端接到单片机的P15口,随着电机的转动,单片机不断的接收到高低电平。当单片机检测到一个下跳沿时开始启动定时器T1工作,直到接收到下一个相邻的下跳沿时为止。相继两个高电平之间的时间与电机的转速成正比,可以测量出电动机的转速。
5 双单片机控制电路
5.1 设计原理
在本设计方案中,用单片机来控制无刷直流电机的起动、换相、调速、正反转及停车。在设计中,由于程序在测量转速时,有一个等待延时时间,如果电动机转速较低,则传感器传输的两个高电平间隔较大,则必然影响到电机换向,使电机失步而停车。为避免这种情况,在设计时使用了两片89C52单片机,其中一块为主单片机,一块为从单片机。从单片机主要负责控制电动机的换相时机。当从单片机接收到转子位置检测电路的转子位置信息后,由其P1口向逻辑保护电路发出两路信号,逻辑保护电路将接收到的信号反相后传输给六只IGBT的栅极驱动电路,从而控制定子绕组的换相时机。主单片机负责测量转速,并将测到的实际转速与给定转速比较,将比较结果通过串行口TXD传送到从单片机。从单片机接收到信息后,在换相时机不变的前提下,改变定子国绕组电流通电时间,从而达到调整的目的。单片机接法如图6所示。
5.2 串行口双机通信
在串行通信中,接收、发送双方向波特率必须一致。因此,首先要设定通信波特率,根据需要设置合理的发送接收速率。主单片机程序在复位时,初始化串行传送控制寄存器SCON,设置SCON=0x40,此时采用串行传输模式一。令SMOD=1,TMOD=0x21,定时器T1设为方式二,初值设为0xff,则波特率为62.5kbit/s。主单片机采用定时发送数据方式,从单片机接收数据采用中断方式。首先要对串行口进行初始化,定义SCON使REN=1,且要开CPU及串行口中断,使EA=1,ES=1。接收到数据后,接上中断标志位RI为1,程序进入中断服务程序,先关中断,然后将SBUF接收到的数据取出,再使RI清零并开中断退出中断服务程序。具体思路是:主单片机将测量的转速与设定转速比较,如果过大,则通过串行口向从单片机发出数字0;如果过小,则向从单片机发出数字1;如果相等,则向从单片机发出数字2。从单片机通过中断读取信息,如果SBUF里数的为0,则增大换相延时时间,降低电机转速,直至接收到2为止;如果SBUF里的数为1,则减小换相延时时间,以增大电机转速,直至接收到2为止;如果SBUF里的数为2,则换相延时时间不变,电机保持在当前速度下运行。
5.3 串行通信软件设计
整个软件采用C51语言编写,全部模块化编程。主单片机程序模块主要包括测速程序、设定速度程序、速度显示程序,其主函数流程图如图7所示。从单片机程序模块主要包括正转、反转及停车程序、调整程序、串行中断服务程序,其主函数流程图及中断函数流程图如图8、图9所示。
本文设计并实现的无刷直流电动机控制系统,在实验室已调试成功。该电路软件仿真和硬件实现已通过验证,取得了很好的效果。实践证明本设计可行有效。