基于单片机的交流电机保护器设计与实现.docx
- 文档编号:25269172
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:31
- 大小:232.24KB
基于单片机的交流电机保护器设计与实现.docx
《基于单片机的交流电机保护器设计与实现.docx》由会员分享,可在线阅读,更多相关《基于单片机的交流电机保护器设计与实现.docx(31页珍藏版)》请在冰豆网上搜索。
基于单片机的交流电机保护器设计与实现
1方案设计
1.1设计任务要求
本设计的硬件系统以STCl2C5A60S2单片机为核心,并配以外围电路构成。
考虑到电动机智能保护器的应用环境及可靠性要求,在具体的电路设计和芯片选型方面充分考虑了该保护器的实际需要及抗干扰性能[1]。
1.2硬件方案设计
硬件设计是根本,以整个系统的硬件而言,设计不仅直接影响到系统本身的硬件特性的质量,同时也为软件系统的设计和实现有很大的影响,所以设计时要考虑不仅在硬件电路装置系统的功能要求,同时也考虑到使系统更加简单的软件实现方便的设计。
对于电机对保护本设计要做出如下几点:
⑴短路保护,该功能需要单片机检测三路相线上是否有某一路或者三路电流都过大,则证明有一路信号被短路。
⑵堵转保护,当电机堵转时,回路中三个相线的电流为,总电压除以电动机线圈的内阻,此时三相线上的电流都很大。
⑶过热保护,电动机在转动时,如果出现某个地方由于摩擦或者内部导磁率下降,就会导致电动机过热,所以需要对电动机的机身进行温度检测。
⑷负序电流,电源电压不对称、断相、逆相等故障均会引起负序电流,这将会在绕组上产生大量热量,使电动机严重发热,产生不对称故障。
⑸零序电流保护,当三相电的三相电流不平衡时,出现零序电流,需要检测该信号,并加以保护。
⑹过压、低压保护,由于电动机为电磁动力器件,如果电压过高,转速就会增加,会损坏电动机,过低会使转速过低,电动机发热量升高,所以需要对输入电动机的电压进行检测。
根据设计要求的分析,此次设计中我们将STC12C5A60S2作为此次设计的主控芯片,采用LCD5110作为我们的现实模块。
按键采用行列扫描式按键。
温度传感器型号为DS18B20。
报警器是蜂鸣器。
电流检测需要三套检测传感器设备。
1.3软件的方案设计
对于编译软件则使用KeilC51软件。
KeilC51软件为目前相当流行的51系列单片机开发软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程。
Keil是目前最好的51单片机开发应用软件[2]。
1.4主要设计的实现原理
⑴三相线的电流检测,该部分可以用来分别判断短路、堵转检测。
⑵零负序检测,需要用到专用的传感器来检测。
⑶电压检测,可以用来作为低电压与过电压保护。
⑷温度检测,用来检测电动机是否过热做保护。
其系统设计框图如图1.1所示。
图1.1硬件部分框图
2硬件的设计
2.1单片机的简介
单片机是把一个计算机系统集成到一块芯片上,它是采用大规模集成电路技术把中央处理器CPU、随机存储器RAM、只读存储器ROM、各种I/O口和中断系统、定时器等功能集成到一个芯片上构成的一个简小而完善的微型计算计系统。
单片机已成为电子设计中使用最多最广泛的元件,它的体积小、低电压、低功耗、可靠性高、处理功能强、控制功能强、环境适应能力强、使用方便等优点,主要在仪器仪表、家用电器和玩具、智能测量设备、航空航天等领域被广泛应用[3]。
2.2STC12C5A60S2单片机的介绍
本设计的硬件系统以STCl2C5A60S2单片机为核心,并配以外围电路构成。
在众多MC51系列的单片机中,国内的STC公司的1T系列增强型单片机,更具有竞争力,因为它不但和传统的8051指令、管脚都完全兼容,而且片内具有的大容量程序存储器是FLASH工艺的。
2.2.1主要特性
40个引脚,内部60K字节的Flash片内程序存储器,E2R的4K字节,数据可以存储1024个字节的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)端口,5个中断优先级,两个层中断嵌套,3个16位可编程定时计数器,两个全双工串行通信口,看门狗电路,片内时钟振荡器,速度是传统的51单片机微控制器8到12倍。
2.2.2引脚功能
各引脚功能简单介绍如下:
⑴VCC:
供电电压。
⑵GND:
接地。
⑶P0口:
P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。
⑷P1口:
P1口是一个内部上拉电阻来提供的8位双向I/O口,P1口输出缓冲器接收4TTL门电流。
⑸P2口:
P2口是一个内部上拉电阻的8位双向I/O口。
⑹P3口:
P3口是8引脚内部上拉电阻的双向I/O端口,接收输出电流4TTL门电流。
P3端口也有特殊功能:
①P3.0RXD(串行输入)。
②P3.1TXD(串行输出)。
③P3.2INT0(外部中断0)。
④P3.3INT1(外部中断1)。
⑤P3.4T0(记时器0外部输入)。
⑥P3.5T1(记时器1外部输入)。
⑦P3.6WR(外部数据存储器写选通)。
⑧P3.7RD(外部数据存储器读选通)。
同时P3口同时为闪烁编程和编程校验接收一些控制信号。
⑺RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高平时间。
⑻ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
⑼PSEN:
外部程序存储器的选通信号。
⑽EA/VPP:
当EA保持低电平时,访问外部ROM;当时加密方式为1时,EA将内部锁定复位;结束时EA为高电平,访问内部ROM。
在FLASH编程时,此引脚也可以用来申请12V编程电源(VPP)。
⑾XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
⑿XTAL2:
来自反向振荡器的输出。
2.2.3中断系统介绍
中断是指当计算机正常运行程序时,系统中出现了紧急事件需要处理,当前的程序被暂时中止,而去处理紧急事件,待处理结束后,CPU自动返回原来运行的程序。
⑴中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。
具体如下:
①EX0:
外部0INT中断允许位。
②ET0:
定时/计数器T0中断允许位。
③EX1:
外部1INT中断允许位。
④ET1:
定时/计数器T1中断允许位。
⑤ES:
串行口中断允许位。
⑥EA:
CPU中断允许位。
⑵中断优先级控制
STC89C52单片机有两个中断优先级,每个中断源的中断优先级都是由中断优先级寄存器IP中的相应的状态来规定的。
具体如下:
①PX0:
外部中断0INT优先级设定位。
②PT0:
定时/计数器T0中断优先级设定位。
③PX1:
外部中断1INT中断优先级设定位。
④PT1:
定时/计数器。
⑤T1:
中断优先级设定位。
⑥PS:
串行口中断优先级设定位。
2.2.4 定时/计数功能介绍
单片机内部有两个16位可编程的定时器/计数器,简称为T0和T1,它们都可以当定时器和计数器使用。
定时器/计数器是由16位加法计数器、工作方式寄存器TMOD和控制寄存器TCON所组成[4]。
⑴工作方式寄存器TMOD
工作方式寄存器TMOD是用来设置定时/计数器的工作方式。
定时/计数器一共有4种工作方式,由M1M2进行设置[5]。
⑵控制寄存器TCON
①TF1:
定时/计数器T1溢出中断请求标志位。
②TR1:
定时/计数器T1运行控制位。
③TF0:
定时/计数器T0溢出中断请求标志位。
④TR0:
定时/计数器T0运行控制位。
2.3显示电路的介绍
显示部分对于器件的选型尤为重要,本设计由于需要时刻的显示报警的信息,所以使用N5110显示器作为本设计的液晶显示器部分,该显示器为点阵屏,带背光,能够显示汉字与字符,这样就更能便于使用者观察实时的显示报警的状态,能够及时对不安全事件进行防范与报警处理[6]。
⑴LPH7366是NOKIA公司生产的,用于移动电话的液晶显示模块与其它类型的产品相比,该模块具有以下特点:
①84x48点阵LCD,会显示4行中文。
②采用串行接口,用于与主机处理器通信,显著减少接口信号线的数目,只有9条线,包括电源和地,包括信号线。
支持多种串行通信协议,传输的速率最高至4Mbps,显示数据会全速显示,不需要等待。
③LCD控制器/驱动器芯片已绑定到液晶芯片,体积很小。
④采用低电压供电,200μA的正常工作电流或更少的显示,并具有掉电模式。
⑤LPH7366这些功能非常适合于电池供电的随身通信设备和检测设备。
⑵Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示,取代LCD1602。
N5110显示器接口为RST、CE、DC、DIN、CLK、VCC、BL、GND。
其中通信引脚可以直接与单片机相连接,该显示器可以兼容3.3~5V之间的电压,具有宽电压的使用优点,其各个引脚的功能介绍如下:
①GND:
电源地,为背光与液晶及控制芯片使用的共用电源与信号地。
②BL:
屏幕背光板使用的电压,此处可以使用单片机控制一个三极管的导通与截止来控制背光的开启与关闭,此处可以接入3.3~5V之间的直流电压。
③VCC:
电源正极,此处可以接入3.3~5V之间的直流电压,供整个模块的电源使用。
④CLK:
时钟引脚,通信中使用该引脚作为时钟线,做SPI通信的时钟。
⑤DIN:
数据引脚,配合时钟的沿边做相应的数据输入。
⑥DC:
数据和命令切换引脚,为1发送数据,为0发送命令,这样就简化了程序员编程的复杂度。
⑦CE:
控制片选端,低电平有效,只有单片机输出低电平时,液晶模块才能正常工作。
⑧RST:
该引脚用来控制给显示器复位使用,当一个不超过100ms的下降沿产生,该显示器进行复位[7]。
N5110显示器接口电路图。
如图2.1所示。
图2.1显示器接口电路图
2.4按键部分设计的介绍
常用的键盘一般分为两种:
行列式按键键盘与独立式按键键盘。
⑴行列式键盘接口
行列式键盘用于按键数目较多的场合,它由行线和列线组成,按键位于行、列的交叉点上,如图2.2所示,1个3×3的行、列结构可以构成1个具有9个按键的键盘。
同理1个4×4的行、列结构可以构成1个16个按键的键盘等等[7]。
很明显,在按键数目较多的场合,行列式键盘与独立式键盘相比,要节省很多的I/O口线[8]。
如图2.2所示。
图2.22×4键盘
⑵行列式键盘工作原理
按键设置在行、列线交点上,行、列分别连接到按键开关的两端。
行线通过上拉电阻接到+5V上。
无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。
列线的电平如果为低,则行线电平为低;列线的电平如果为高,则行线电平亦为高,下面以图中3号键被按下为例,来说明此键是如何用扫描法被识别出来的。
当3号键被按下时,与3号键相两的行线电平将由与此键相连的列线电平决定,而行线电平在无按键按下时处于高电平状态。
如果让所有的列线处于低电平,很明显,按键所在的行电平将被接成低电平,根据此行电平的变化,便能判定此行一定有按键被按下。
但还不能确定是键3被按下,以为如果键3不被按下,而同一行的键2、1或0之一被按下,均回产生同样的效果。
所以,行线处于低电平只能得出某行有按键被按下的结论。
为判定到底是哪一列的按键被按下,可采用扫描法来识别。
即在同一时间只允许第一列线为低电平,所有剩余的列线为高。
当第一列为低时,其余为高,键3被按下,所以第一列仍然处于高电平;而当第二列是低电平;其余部分为高电平,我们发现在第一列仍处于高电平;直到第四列为低时,其它为高时,所以第一行的电平将由高电平转换到第4列所处的低电平,据此可以判断第1行第4列的交叉点处的按键,即3号键被按下。
2.5电流检测额度介绍
电流互感器的输出经过一个电阻将其变为电压信号,然后经过运放进行11倍放大后,输出给单片机的ADC检测口,由于三相交流电压由三路电压输入,所以需要对每一根线的电流都需要做检测,经过这个电路就将交流信号变为,变为直流信号给单片机处理[8]。
图中互感器的比例为1:
1000;也就是说1A电流输出端的电流为1mA,这样次级端的电压信号为20mV,经过11倍放大后为220mV,单片机检测最大输入电压为4V,所以可以检测的电流最大为20A,对应输出的电压为4.4V。
电流检测电路图如图2.3所示。
图2.3电流测量电路图
2.6零序负序电流检测电路图
零序负序电流保护,相同点是三相线上有不同电流或者相序不同的电流产生,这样被认为不正常序电流,所以设计中只要检测三根线在互感的磁场上有没有电流即可,所以我们将一个电流互感器套在三根线上,检测输出端的电压即可,其检测电路图如图2.4所示,该运放的放大倍数为100倍,然后经过由R112与C110组成的滤波电路,将返回的50Hz的交变的信号经过滤波信号变为直流信号,这样单片机端只要检测输出端CHECK_L输出信号的高低电平即可。
如图2.4所示。
图2.4零序负序电流检测电路图
2.7温度检测电路图
本部分主要介绍了数字温度传感器DS18B20的内部结构、工作原理以及其外部驱动电路的设计。
DS18B20是DALLAS公司的最新单总线数字温度传感器,支持单总线接口,测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
现场温度直接以单总线数字方式传输,大大提高了系统的抗干扰性。
DS18B20适合用于恶劣环境的现场温度测量,与前一代产品不同,DS18B20传感器支持3V~5.5V的电压范围,使系统设计更灵活、方便。
而且DS18B20传感器比前一代产品更便宜,体积更小。
其温度检测电路图如图2.5,图中所示DQ为单片机接数字温度传感器的接口,使用一线总线接口,DQ接到单片机的P1.5引脚,其中RW1为上拉电阻,因为温度传感器总线通信的时候高电平电流至少要为1mA以上,否则不能正常通信,所以需要加入上拉电阻4.7K,该电阻不能大于5K。
如图2.5所示。
图2.5温度传感器接口电路图
3软件部分设计
软件部分设计主要讲解软件设计思路与程序,画出程序流程图,针对程序流程图对软件的各个函数做详细的讲解,本章从设计思路入手,先讲解本设计的思路,然后讲解软件编程的方式,最后针对各个模块程序做详细讲解。
本设计为基于单片机的交流电机保护器设计,设计中软件部分需要完成的工作主要有如下几部分:
⑴显示驱动函数,编写单片机驱动LCD5110的程序,能够让显示器上正确显示信息。
⑵按键驱动函数,编写单片机按键驱动程序,能够扫描哪个按键被按下,并针对按键进行相应的动作。
⑶ADC检测函数,使用单片机自带的ADC检测功能将外部输入的电压模拟信号转换为数字信号并且处理显示。
⑷比较报警函数,比较输入的电压值与电流值还有开关量是否超出设置值,如果产生报警则开始报警。
⑸温度转换函数,用来转换温度数据,使用的传感器为DS18B20,编写一线总线的通信函数。
3.1主程序设计流程图流程
单片机上电复位后,程序自动进入main()函数,该函数先蜂鸣器蜂鸣50mS,作为开机提示音,然后初始化使用的液晶屏LCD5110,初始化函数主要完成对5110液晶屏的内部驱动芯片的配置,主要配置对比度与显示模式,配置完成后将液晶屏清屏,然后初始化单片机内部自带的ADC功能,将P1.0~P1.3配置为模拟输入通道,用来检测电流与电压信号,然后将进入while函数,该语句中不断的循环功能函数,主要有按键处理函数、ADC转换函数、报警处理函数、显示刷新函数等。
其主函数流程如图3.1所示。
图3.1总程序流程图
3.2按键程序设计
按键程序流程图如图3.2所示。
图3.2按键程序流程图
该程序主要完成对按键的判断与执行操作,单片机的P2口接入按键程序,使用的按键程序为独立按键,6个按键,这样将占用6个I/O,分别为P2.0~P2.5,将每一个I/O口接一个10K的上拉电阻,当有I/O口的值为低电平时则证明该I/O口有按键被按下,所以程序只要判断哪个I/O口为低电平,就能判断出哪个按键被按下,首先将按键的I/O口赋值为1,如果有按键按下,然后延时50ms,然后再次将按键的I/O口置1,再次判断是否有按键按下,如果有按键,则证明确实有按键动作,则将此时的按键值进行组合,然后进行查询程序,将按键键值码储存后开始查询,这样就会将对应的按键值判断出来,然后判断如果在设置值界面,则进入按键值处理程序,该程序将会对程序中对于需要修改的值进行加减处理,然后进入判断按键是否松开,然后程序结束并返回。
按键1:
进入设计界面。
按键2:
退出设置界面。
按键3:
设置值加10。
按键4:
设置值加1。
按键5:
设置值减10。
按键6:
设置值减1。
3.3电流检测函数流程图
电流检测函数如图3.3所示。
图3.3电流检测函数流程图
电流检测函数用来检测外部输入的电压信号,然后通过模数转换转换为数字信号,经过计算处理后,将电流值计算出来并显示,其处理流程图如图3.3所示,进入程序时清除上次读取数据的寄存器,然后选择转换通道并且开启转换,然后等待转化完成,转换完成后,停止转换然后读取转换模数寄存器的数值,然后对其进行处理,由于单片机的ADC转换精度为10位,即为数字的1024,对应5V,输入电压范围为0~5V对应0~10A电流值,则转换关系式为转换数字值AD*10/112,然后将该值储存到变量中。
3.4电压检测函数流程图
电压检测函数用来检测给电动机供电的电压信号,通过电压互感器转换过来,其比例为1:
100,也就是实际电压为500,则输出端的电压为5V,其处理流程图如图3.4所示,进入程序时清除上次读取数据的寄存器,然后选择转换通道并且开启转换,然后等待转化完成,转换完成后,停止转换然后读取转换模数寄存器的数值,然后对其进行处理,由于单片机的ADC转换精度为10位,即为数字的1024,对应5V,输入电压范围为0~5V对应0~500V电流值,则转换关系式为转换数字值*10/22,然后将该值储存到变量中。
如图3.4所示。
图3.4电压检测函数流程图
3.5温度提取子程序
温度提取子程序完成对温度值的提取,本设计中使用的温度传感器为DS18B20,该传感器采用一线总线的计数的器件,可以对温度通过一跟总线进行传输,使用简单方便,其体积大小与三极管相同,在程序的设计中使用温度提取分步骤的方式,其提取温度时的控制流程图如图3.5所示。
图3.5温度提取子程序
3.6判断执行流程图
判断报警流程图如图3.6所示。
图3.6电流检测函数流程图
参考文献
[1]周立功等编著.单片机实验与实践[M].北京:
北京航空航天大学出版社,2003:
10-12.
[2]何立民编著.MCS—51系列单片机应用系统设计—系统配置与接口技术[M].北京:
北京航空航天大学出版社,1996:
81-84.
[3]王幸之,钟爱琴,王雷,王闪.AT89系列单片机原理与接口技术[M].北京航空航天大学出版社2004,5:
123-139.
[4]杨振江.流行单片机实用子程序及应用实例[M].西安:
西安电子科技大学出版社,2002,7:
58-64.
[5]林凌,李刚,丁茹,李小霞.新型单片机接口器件与技术[M].西安:
西安电子科技大学出版社,2005:
189-202.
[6]刘华东.单片机原理与应用[M].电子工业出版社,2003,8:
42-53.
[7]刘守义,杨宏丽,王静霞.单片机应用技术[M].西安电子科技大学出版社,2002,8:
102-107.
[8]魏刚.电动机智能保护器的设计[D].合肥工业大学,2005,5:
23-30.
附录A系统原理图
附录B程序代码
#include"delay.h"
voidDeal_KeyAction(void);
voidDisPlay_Deal(void);
voidAlarm_Deal(void);
voidDeal_KeyAction(void);
voidAlarm_Judge(void);
ucharMenu_n=0;
ucharxdataTemp_Buffer[6][14];
ucharAlarm_Flage=0;
ucharTemp_n=0;
uintAdc_ComValue[5]=0;
uintSet_Value[4]={100,500,300,50};
voidmain(void)
{
//--开机提示音
beep(50);
//--LCD初始化
LCD_init();
LCD_clear();
//--ADC初始化p1.0~p1.3为ADC输入口
Init_adc(0x0f);
P1M0|=0x20;
P1M1&=0xdf;
//--初始化DS18B20
Init_Ds18b20(10);
memcpy(Temp_Buffer[0],"Tempere:
12.0C",14);
while
(1)
{
//--按键处理函数
Deal_KeyAction();
//--ADC转换
if(Count_Adc())
{
//--温度读取函数
Read_Temperature();
}
if(Temp_n>=20)Temp_n=0;
//--报警判断函数
Alarm_Judge();
//--报警处理函数
Alarm_Deal();
//--显示刷新函数
DisPlay_Deal();
}
}
voidDisPlay_Deal(void)
{
if(Menu_n==1)
{
//memcpy(Temp_Buffer[0],"Tempere:
12.0C",14);
memcpy(Temp_Buffer[1],"A_Curre:
10.0A",14);
memcpy(Temp_Buffer[2],"B_Curre:
10.0A",14);
memcpy(Temp_Buffer[3],"C_Curre:
10.0A",14);
memcpy(Temp_Buffer[4],"Voltage:
500V",14);
memcpy(Temp_Buffer[5],"Ala:
",14);
//Temp_Buffer[0][9]=Adc_ComValue[4]/100%10+48;
//Temp_Buffer[0][10]=Adc_ComValue[4]/10%10+48;
//Temp_Buffer[0][12]=Adc_ComValue[4]%10+48;
Temp_Buffer[1][9]=Adc_ComValue[0]/100%10+48;
Temp_Buffer[1][10]=Adc_ComValue[0]/10%10+48;
Temp_Buffer[1][12]=Adc_ComValue[0]%10+48;
Temp_Buffer[2][9]=Adc_ComValue[1]/100%10+48;
Temp_Buffer[2][10]=Adc_ComValue[1]/10%10+48;
Temp_Buffer[2][12]=Adc_ComValue[1]%10+48;
Temp_Buffer[3][9]=Adc_ComValue[2]/100%10+48;
Temp_Buffer[3][10]=Adc_ComValue[2]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 交流 电机 保护 设计 实现