┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |
作者:未知 来源:网络
目 录
前言 1
第一章 概述 2
1.1 背景介绍 2
1.2 毕业设计任务和要求 3
1.3 论文结构和说明 3
第二章 总体方案 4
第三章 基于AVR电动机智能启动器的硬件设计 6
3.1 硬件设计方案 6
3.2 芯片选型及相关介绍 6
3.2.1 AVR单片机ATmega16 6
3.2.2 CH447L读写控制芯片 10
3.3 硬件功能模块的设计 12
3.3.1 三相模拟信号的预处理模块 12
3.3.2 AVR单片机系统模块 13
3.3.3 继电器驱动模块 16
3.3.4 读写显示功能模块 17
3.3.5 电源模块设计 23
3.3.6 接口的设计 23
3.4 电路板的设计 25
3.4.1 原理图的绘制 25
3.4.2 PCB板的生成 27
3.5 本章小结 28
第四章 基于AVR电动机智能启动器的软件设计 30
4.1 软件设计方案 30
4.2 软件开发语言、工具和环境介绍 30
4.3 程序设计 31
4.3.1 初始化和主程序 31
4.3.2 基础功能模块 33
4.3.3 中断 39
4.3.4 保护算法 39
第五章 总结与展望 44
6.1 毕业设计总结 44
6.2 工作展望 44
参考文献 46
致谢 47
附录材料 48
前言
随着国民经济的飞速发展,科学技术的日新月异,智能控制系统得到了广泛的应用。如:智能大厦、无人值守泵站、无人值守供热站、各种遥控调度系统、生产作业自动化等等。这正是国家实现科学技术现代化的重要标志,也是每一个技术人员肩负的重要责任。智能控制技术的应用,给我们提出了很多要求。如工作过程的安全性,执行机构的智能配套等,都越来越严格。作为重要驱动执行机构的电动机来说,它的控制方式受到广大技术人员的高度重视。既要为智能控制打下良好基础,又要降低电动机起动时的故障发生。所以,不得不在电动机的起动设备上做工作。
为此我选择了基于AVR单片机的电动机智能启动器的设计这一课题。基于AVR单片机的电动机智能启动器的设计采用了目前市面较为流行的ATmega16 八位微处理器进行启动的程序控制,解决了各种在启动和运行过程中的故障检测和实时保护动作,键盘和显示部分则采用了功能强大的CH447L读写显示芯片,最终实现电机降压启动的智能保护和功能完善的人机界面。
在经过仿真调试和参考大量国内外文献资料后,我结合自己的经验教训和心得体会编写了此文,文中详细阐述了其硬件和软件的基本原理,提出了设计思想,设计方法和实践途径。本文共分五章:第一章简述了多功能智能启动器的应用与发展;第二章概述了本课题的总体设计方案;第三章主要讲述了课题设计的硬件部分和电路板的制作,以及设计过程中遇到的问题及解决方案;第四章主要讨论了课题设计的软件部分,对各功能模块做了详细说明包括用AVR studio仿真时所遇到的问题和最终解决方案等;第五章对整个课题的设计做了总结及展望。
由于水平有限,论文中的错误和疏漏之处在所避免,敬请各位老师批评指正。
第一章 概述
第二章 总体方案
本课题我主要采用模块化的设计方案,先对三相交流信号(电压、电流)进行整流和滤波,再由单片机的模拟I/O口输入单片机,在单片机内部进行A/D转换、数字滤波、比较、保护判断等,最后将信息输出给继电器模块使其响应动作。总体主要分硬件设计和软件设计两部分。
硬件部分采用的高速的AVR ATmega16单片机进行全局控制;人机界面则运用了CH447L读写显示芯片专门用于控制数码管的驱动和键盘的扫描,真正实现了模块化控制;模拟电路部分用来对输入的电信号进行预处理(整流、滤波),实现交流到直流的转换,当然这时的直流还会有许多纹波,不是真正意义上的直流,所以还要经过软件部分的数字滤波才能消除部分纹波,减少误差。继电器的驱动电路模块用来实现继电器的开通和关断。而减压启动和保护部分分别用三个继电器的通断来实现。电源设计要求提供12V和+5V两个电压。它只需要硬件电路,没有软件方面的要求,通过简单的参数计算过程就可以画出相应原理图。
软件部分主要采用分层和功能模块化设计,第一层是基础层包括:继电器、键盘、显示、A/D以及硬件滤波等;第二层主要是中断,包括外部中断和定时中断,前者用于键盘功能模块,后者用于计时、启动和保护;第三层是保护算法用于实现各种保护功能(过流、过压、过载、堵转、断相、三相不平衡等)。
虽然软硬件分开设计,但是在一个项目的运行中,硬件和软件是始终分不开的,它们是相辅相成的。没有硬件,软件无法运行,没有软件,硬件则无法实现其功能。在本设计中,我软硬件结合,相互交叉进行,使得自己在软硬件方面都得到了很好的学习和提高。
另外本课题我采用了直流采样的信号处理方式,这也是本设计中我和同组同学的最大差异之处,相对交流采样而言,直流采样相对简单些,涉及计算少,占用系统资源少。但其也有相应的缺点,如无法对零序电流进行处理,无法计算功率等。每一个方案都有其优缺点,由于以前没有独立设计一个大项目的经验,我选择了相对简单的直流采样,但对我来说这也是第一次尝试,我希望自己能够尽力去做好。
第三章 基于AVR电动机智能启动器的硬件设计
3.1 硬件设计方案
基于AVR的智能启动器的硬件设计分电源模块、单片机系统模块、继电器驱动控制电路模块和读写显示芯片控制电路模块。三相模拟信号的预处理(包括整流,电平匹配)用自搭电路的形式完成。
因单片机和CH447L均需5V直流电源驱动,而继电器需12V直流电源驱动,故电源模块提供两路电源信号。
单片机系统电路模块包括AVR芯片与电源、外部晶振、下载接口ISP和仿真接口JTAG的连接;继电器驱动控制电路模块包括三个继电器动作的逻辑控制电路、信号放大驱动电路和抗干扰电路等;读写显示芯片(CH447L)控制电路模块包括LED显示、键盘以及CH447L芯片与各模块元件的连接。
3.2 芯片选型及相关介绍
本设计以单片机为应用核心,通过单片机控制各种外围芯片及电路。重点是单片机ATmega16及键盘显示芯片CH447L、继电器驱动电路、键盘电路和数码显示电路的应用。电信号经过模拟电路整流滤波处理后由AVR的模拟输入口输入单片机内部经过分析处理。如果存在危险,由继电器驱动电路来驱动一号继电器进行保护动作,同时将控制信号传入CH447L来驱动LED的故障显示;如果没有危险,继电器不动作。我们还可以通过键盘对显示和时间等进行设置,最终实现电动机启动的智能控制和实时保护。
3.2.1 AVR单片机ATmega16
AVR 单片机是ATMEL公司推出的精简指令集单片机系列,它内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算术逻辑单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC 微控制器最高至10倍的数据吞吐率。另外它的程序存储器是片内Flash,可以修改上千次,对新产品的开发以及升级都十分方便。我所选用的ATmega16是AVR众多子系列中的一种。
1. ATmega16的优点
相对于其他芯片,ATmega16中具有 16K字节的系统内可编程Flash(具有同时读写的能力),462字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。
另外片内ISP Flash 允许程序存储器通过ISP串行接口,或者通用编程器进行编程,也可以通过运行于AVR内核之中的引导程序进行编程。
正是基于ATmega16以上众多优点我选择了该芯片,而且它价格合理,功能强大,极其符合我们设计中低档智能启动器的设计理念。
2.引脚的配置
如图3-1所示,端口A(PA0-PA7)做为A/D转换器的模拟输入端,亦可作为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A也处于高阻状态。
端口B(PA0-PA7)、端口C(PA0-PA7)和端口D(PA0-PA7)与A口类似,不同之处在于它们的第二功能。
RESET——复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。
AVCC——端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC连接。
XTAL1——反向振荡放大器与片内时钟操作电路的输入端。
XTAL2——反向振荡放大器的输出端。
AREF ——A/D的模拟基准输入引脚。
VCC ——数字电路的电源。
GND ——地。
3.ATmega16的内部资源
(1)AVR CPU 内核
AVR CPU 的主要任务是保证程序的正确执行,它能够访问存储器、执行运算、控制外设以及处理中断。它包含了ALU- 算术逻辑单元、状态寄存器、通用寄存器(X、Y、Z)、堆栈指针、指针执行时序、复位与中断处理等。
(2)AVR ATmega16的存储器
AVR有两个主要的存储器空间:数据存储器空间和程序存储器空间。此外,ATmega16 还有EEPROM存储器用来保存数据。这三个存储器空间都为线性的平面结构。另外16K字节的在线编程Flash,用于存放程序指令代码。
(3)系统时钟
AVR ATmega16 的系统时钟有CPU时钟、I/O时钟、异步定时器时钟和ADC时钟。时钟源分为两种:外部时钟和内部时钟。该课题所选择的是外部时钟(外部晶体振荡器)。XTAL1与XTAL2分别为用作片内振荡器的反向放大器的输入和输出,如图3-2所示。熔丝位CKOPT用来选择放大器模式,当CKOPT被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,而且这种模式的频率范围比较宽。当保持CKOPT为未编程状态时,振荡器的输出信号幅度比较小。大大降低了功耗,但是频率范围比较窄,不能驱动其他时钟缓冲器。
图3-2 晶体振荡器连接图
晶振参数的设定:在本设计中我选用了7.3728Hz的晶振,因为该频率不仅可以提供标准触发信号而且可以降低功耗节约单片机内部资源及产生标准串行波特率。
(4)系统复位
ATmega16 有5个复位源:上电复位、外部复位、看门狗复位、掉电检测复位和JTAG AVR复位。本设计主要采用了上电复位(开关机时)和看门狗复位(单片机故障时)。
(5)I/O端口
每个端口都有三个I/O存储器地址:数据寄存器——PORTx、数据方向寄存器——DDRx和端口输入引脚——PINx。每个端口引脚都具有三个寄存器位:DDxn、PORTxn和PINxn分别位于相应的寄存器。
(6)计数器
本设计只需采用一个定时中断计数器即T1,并采用了快速PWM模式。T/C可以由内部同步时钟或外部异步时钟驱动,如果没有时钟源T/C就不工作。CPU只能间接访问TCNT1H寄存器,读取TCNT1L时,临时寄存器的内容更新为TCNT1H的数值;执行写操作时,TCNT1H被临时寄存器的内容所更新。计数器的计数序列取决于寄存器TCCR1A和TCCR1B中标志位WGM13:0的设置。
(7)AD转换器
内置AD转换器既是本单片机重要特点之一也是本设计的重点。它是一个10位的逐次逼近型ADC,与一个8通道的模拟多路复用器连接,能对来自端口A的8路单端输入电压进行采样。并且包含一个采样保持电路,以确保在转换过程中的电压恒定。
ADC由AVCC引脚单独提供电源。AVCC与VCC之间的偏差不能超过±0.3V。器件内含2.56V的基准电压和AVCC。
数模转换过程:在ADEN为1的情况下,再把ADC启动位ADSC写逻辑1,转换将在ADC时钟脉冲(ADC Clock)的下一个上升沿时启动。真正的采样保持操作在转换启动后的1.5个ADC时钟周期处开始。在转换过程中,ADSC位保持1;转换完成时,它将被硬件自动清0。
ADC开放后第一次A/D转换,将有一个使ADC初始化的转换作为先导。这次转换与通常转换差别就是要多12个ADC时钟周期。
ADC时钟脉冲可以接受的频率范围为50~200kHz。时钟频率过高会降低转换精度。它有系统时钟信号和一个可设定分频比的分频器提供频率。
ADC转换结束后(ADIF=1),转换结果被放入ADC结果寄存器(ADCL,ADCH)。单次转换的结果计算式如下:
式中,为被选中的引脚的输入电压,
为参考电压
3.2.2 CH447L读写控制芯片
本设计采用了功能强大的CH447L读写芯片,它用于数码管显示驱动和键盘扫描控制,并且内置时钟振荡电路,可以动态驱动8位数码管或者64位LED,具有BCD译码、闪烁、移位、段位寻址、光柱译码等功能;同时还可以进行64键的键盘扫描;CH447L通过可以级联的4线串行接口或者2线串行接口与单片机等交换数据;可以对单片机提供上电复位信号。它具有如下优点:
显示驱动:
内置电流驱动级,段电流不小于15mA,字电流不小于80mA。动态显示扫描控制,直接驱动8位数码管、64位发光管LED或者64级光柱。可选数码管的段与数据位相对应的译码方式或者BCD译码方式。BCD译码支持一个自定义的BCD码,用于显示一个特殊字符。数码管的数据左移、右移、左循环、右循环。各数码管的数字独立闪烁控制,可选快慢两种闪烁速度。任意段位寻址,独立控制各个LED或者各数码管的各个段的亮与灭。64级光柱译码,通过64个LED组成的光柱显示光柱值。扫描极限控制,支持1到8个数码管,只为有效数码管分配扫描时间。可以选择字驱动输出极性,便于外部扩展驱动电压和电流。
键盘控制:
芯片内置64键键盘控制器,本设计选择4×2矩阵键盘扫描。内置按键状态输入的下拉电阻,内置去抖动电路。键盘中断,可以选择低电平有效输出或者低电平脉冲输出。提供按键释放标志位,可供查询按键按下与释放。支持按键唤醒,处于低功耗节电状态中的CH447L可以被部分按键唤醒。
外部接口:
同一芯片,可选高速的4线串行接口或者经济的2线串行接口。本设计采用了4线串行接口,它支持多个芯片级联,时钟速度从0到2MHz,DIN和DCLK信号线可以与其它接口电路共用,节约引脚。内置上电复位,可以为单片机提供高电平有效和低电平有效复位输出。
3.3 硬件功能模块的设计
3.3.1 三相模拟信号的预处理模块
本模块主要处理的是将输入的原始信号进行硬件滤波和整流。
其电路原理图如下:
◆电压部分:
图3-4 ATmega16系统模块
(1)I/O 端口
如图3-4所示在本设计中PA0~PA3分别为IA、IB、IC、IABC的模拟输入口,其中IABC为零序电流。由于设计时考虑到芯片的模拟I/O口有限,在节省资源的情况下电压信号的输入我通过了一个多路选择开关再与PA4相连,这样可以节省两个端口,以备其他未考虑信号的输入。
图3-5 多路选择开关
除了通用数字I/O功能之外,大多数端口引脚都具有第二功能。下面对本设计用到的端口第二功能介绍如下:
端口B的第二功能
PB7 SCK (SPI总线的串行时钟)
PB6 MISO (SPI总线的主机输入/从机输出信号)
PB5 MOSI (SPI总线的主机输出/从机输入信号)
PB4 SS (SPI从机选择引脚)
PB3 AIN1 (模拟比较负输入);OC0 (T/C0输出比较匹配输出)
PB2 AIN0 (模拟比较正输入);INT2 (外部中断2输入)
PB1 T1 (T/C1外部计数器输入)
PB0 T0 (T/C0外部计数器输入);XCK (USART外部时钟输入/输出)
端口C的第二功能
PC7 TOSC2 (定时振荡器引脚2)
PC6 TOSC1 (定时振荡器引脚1)
PC5 TDI (JTAG测试数据输入)
PC4 TDO (JTAG测试数据输出)
PC3 TMS (JTAG测试模式选择)
PC2 TCK (JTAG测试时钟)
PC1 SDA (两线串行总线数据输入/输出)
PC0 SCL (两线串行总线时钟线)
端口D的第二功能
PD7 OC2 (T/C2输出比较匹配输出)
PD6 ICP1 (T/C1输入捕捉引脚)
PD5 OC1A (T/C1输出比较A匹配输出)
PD4 OC1B (T/C1输出比较B匹配输出)
PD3 INT1 (外部中断1的输入)
PD2 INT0 (外部中断0的输入)
PD1 TXD (USART输出引脚)
PD0 RXD (USART输入引脚
(2)片内基准电压
ATmega16具有片内能隙基准源,用于掉电检测,或者是作为模拟比较器或ADC的输入。AREF给单片机提供基准电压,它有两种情况加上电阻R27时为5V,去掉R27时可以是5V,也可以是2.56V,AVCC为模拟电压(5V)。
图3-6 电压
注:图3-6中的电感、电容用来滤波
3.3.3 继电器驱动模块
本设计采用了三个继电器(K1、K2、K3),它们都采用的是常开触点。其中K1用来保护动作,K2、K3用于启动,分别表示降压启动和启动完成后全压运行的两个状态。
图3-7 三继电器的驱动电路
如图3-7所示继电器的驱动电压为12V,采用三极管的目的是为了放大电流信号以驱动继电器。信号在进入三极管之前还必须由光耦消除干扰信号,相关电路如图3-8所示:
图3-8 光耦抗干扰电路
真值表如下:(1表示开、0表示合)
PB1 PB2 KK2 KK3
0 0 1 1
0 1 0 1
1 0 1 0
1 1 1 1
3.3.4 读写显示功能模块
读写显示功能模块是本设计硬件设计的重点,数码管驱动及键盘的控制采用芯片CH447L来提高运作效率,使设计模块化。它可通过4线或2线串行接口与单片机等交换数据,并且可以对单片机提供上电复位信号。CH447L与单片机以及数码管和键盘的硬件连接如图3-10所示。
图3-12 键盘芯片连接图
图3-13 接口框图
当启用键盘扫描功能后,DOUT用于键盘中断和数据输出,默认是高电平。当CH
图3-14 脉冲波形图
图3-15 SPI接口
图3-16 SPI主机—从机的互连
图3-17 JTAG接口
图3-18 其他接口
3.4 电路板的设计
图3-20为本次设计的原理图,绘图时分几个单元来完成,为将整个硬件原理图表示清楚,在此放入一张图中供分析,单元图放在附录中。
在绘制原理图过程中出现一些问题,现做一小结:
1.ERC报告管脚没有接入信号:
a.创建封装时给管脚定义了I/O属性;
b.创建元件或放置元件时修改了不一致的grid属性,管脚与线没有连上;
c.创建元件时pin方向反向,必须非pin name端连线。
2.元件跑到图纸界外:没有在元件库图表纸中心创建元件。
3.创建的工程文件网络表只能部分调入PCB:生成net list时没有选择为global。
4.当使用自己创建的多部分组成的元件时,千万不要使用annotate。
3.4.2 PCB板的生成
原理图绘制完后进行电器检查(ERC)。
生成网络表,就可以绘制PCB了。在电路板中把元件排列整齐,最后的工作就是布线了。在PCB设计中,布线是完成产品设计的重要步骤,可以说前面的准备工作都是为它而做的,在整个PCB中,以布线的设计过程限定最高,技巧最细、工作量最大。PCB布线有单面布线、双面布线及多层布线,我采用了双面布线。
布线的方式也有两种:自动布线及交互式布线,在自动布线之前,可以用交互式预先对要求比较严格的线进行布线,输入端与输出端的边线应避免相邻平行,以免产生反射干扰。必要时应加地线隔离,两相邻层的布线要互相垂直,平行容易产生寄生耦合。
在画图和生成PCB的过程中出现的错误及解决方法:
1.网络载入时报告NODE没有找到:
a.原理图中的元件使用了pcb库中没有的封装;
b.原理图中的元件使用了pcb库中名称不一致的封装;
c.原理图中的元件使用了pcb库中pin number不一致的封装。
2.打印时总是不能打印到一页纸上:
a.创建pcb库时没有在原点;
b.多次移动和旋转了元件,pcb板界外有隐藏的字符。选择显示所有隐藏的字符,缩小pcb,然后移动字符到边界内。
3.DRC报告网络被分成几个部分:
表示这个网络没有连通,看报告文件,使用选择CONNECTEDCOPPER查找。
设计过程中应保证零件封装无误,这也生成PCB板图的关键一步,不同的元件可共用同一零件封装,同种元件也可有不同的零件封装,在此对零件封装做一小结:
C1-C4:[,RB.1] C6-C9 :[,0805] C10-C11:[,RB.2]
C12:[100nF.0805] C13: [100u,RB.1]
D1-D2:[2LED,LED2] D3-D10:[,SLED.15] D11-D15:[,SLED.15]
D16:[,DIODEO.2] D17-D18:[,DIODE0.3] D19:[,SLED.15]
JP1:[SPI,IDC10] JP2:[JTAG,IDC10] JP3:[COMM,TEL4]
JP4:[,SIP5] JP5:[,SIP15-4] JP6:[,SIP15-6] JP7:[,SIP4]
JP8[,SIP3]
K1-K3:[,SRSB-12] L1:[10uH,AXIAL0.5] Q1-Q3:[PNP,9014]
R1-R26:[,0805] R27:[1K,0805] R28:[,0805]
R29:[,AXIAL-0.8] RP1:[46K,RES5]
S1-S8:[,BUT] S9:[,DIP4] U1:[ATMEGA16L,DIP40]
U2:[4046.DIP16] U3:[CH447,PDIP24]
U4-U6:[,DIP4]
3.5 本章小结
本章主要介绍了硬件部分的设计,在硬件电路设计中我们需要处理好控制系统,输入输出接口,继电器驱动,键盘显示以及抗干扰等一些设计。
更深一步了解了AVR mega16单片机和CH447芯片的结构、工作原理以及它们之间的连接和控制方式等,学会了用protel99这个绘图软件绘制原理图、PCB板图,对整个过程有了清晰的了解,并自己动手焊元件,掌握了许多实际焊接工作中的小窍门。在这一部分的设计中真正让我体会到实践的乐趣。
第四章 基于AVR电动机智能启动器的软件设计
4.1 软件设计方案(2)采样完成后判断电动机是否启动,若已启动开始数码管显示以及各种保护判断、处理。首先根据读取的A/D值计算对应的电流值,然后进行误差修正,一方面通过比较确定最大电流值和最小电流值,然后分别放入显示单元;另一方面通过误差修正值进行各种保护判断:若三相输入电流中任一相结果为零,则断相成立,立即启动保护;三相输入电流中最高相与最低相差值大于33%额定电流时,三相不平衡成立,立即启动保护;在正常运行状态下,电动机电流大于1.2倍额定电流时,过电流反时限保护动作。
4.2 软件开发语言、工具和环境介绍
AVR单片机的开发主要有两种语言:汇编语言和C语言。本设计我所选用的是C语言,随着单片机技术的发展,程序空间和数据空间都在增大,代码空间和程序效率不如以前重要了,汇编的优势不如以前,往往使得程序冗长,而C语言却在很多方面体现期优势
(1)开发迅速,无需记住大量的汇编指令。
(2)维护方便,支持不断改进,它的可读性和模块化使维护更加方便。
(3)便于合作开发,可以把系统分成几个任务,每个任务之间很少联系。
(4)方便移植,由于C语言是高级语言,与平台相关的代码不多,因此在不同平台间移植很容易。
我所采用的编译器是AVR-GCC,它不是一个集成开发环境,仅仅是一个C编译器,与其他编译器相比,AVR-GCC有一个很突出的优势——是完全自由软件。它的源代码都可以得到,并很容易编译,因此它适用于任何平台(特别是任何Linux的机器)。
AVR-GCC像其他GNU编译器一样,用UNIX风格的Make程序来构建(Build)工程。Make用Make file告诉它做什么,如何做。对于多数人这个还是有些难度的,不过现在可以使用AVR Studio直接建立AVR的GCC工程。
另外开发环境我选择了AVR Studio,它是由ATMEL公司开发的AVR单片机的集成开发环境,能运行于Windows操作系统并提供了源文件编辑器,用于软仿真的芯片仿真器,用于在线硬件仿真的接口。AVR Studio可以在ATMEL公司的官方网站上免费得到。
仿真器适配器我选用了AVR JTAGICE
4.3 程序设计
4.3.1 初始化和主程序
初始化:
单片机内部初始化
外围芯片初始化
EEPROM中的设定值读入单片机RAM
主程序:
三相电压、电流的A/D采样,数字滤波,保护算法分析
在电压,电流采样完成后分别运行保护算法,如果出现故障进入相应的故障处理程序。
主程序的流程图如图4-1所示:
图4-1 主程序流程图
4.3.2 基础功能模块
(1) 数字滤波模块
数字滤波功能块主要是将采样得到的信号进行滤波,滤除纹波和外界的部分干扰。我采用的方案是分六路信号(Ua Ub Uc Ia Ib Ic)进行采样,先分别采50个数据,并进行AD转换,将模拟量转换为数字量。在50个数据中去掉前后9个,得到六组32个数据,再对每组进行求和求平均,得到六个平均值(avg1Ua avg1Ub avg1Uc avg1Ia avg1Ib avg1Ic)。按此方式循环采样8次,再对这8组数据求和求平均,最终得到的一个六维数组,即最终与额定值进行比较的采样值。
该模块是进行直流采样的关键部分,也是最可能产生误差的地方。
其中涉及到排序和A/D转换。快速排序子程序我采用了C语言中比较经典的冒泡算法,分别对六组32个数据进行从小到大排序。
相关程序如下:
void sort(unsigned int a[],unsigned char n)
{
unsigned char i,j;
unsigned int temp;
for (j=0;j<=n;j++) {
for(i=0;i<=n-j-2;i++) {
if(a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;}
}
}
}
数字滤波部分程序的流程图如图4-2所示:(程序见附件)
(2) A/D转换模块
由于ATmega16内集成一个逐次比较型ADC,它与PORT C端口用一个8路的模拟开关连接。有两种工作方式分别为:查询方式和中断方式。在查询方式中,ADC按单次转换模式工作,每次转换均由置位ADC触发,ADC工作于中断方式时,ADC按自由模式工作,自第一次置位ADSC开始,ADC就连续不断地进行采样转换,数据更新。在本设计中,我选用了查询方式。
◆设置键功能
设置分三种情况:电压设置、电流设置和启动时间设置,可以用switch语句来实现。流程图如图4-5所示(程序见附件)
图4-7 键盘中断流程图
在本设计中定时中断用于实现启动时间和保护时间的定时。
4.3.4 保护算法
保护算法是本课题的难点,也是软件设计的最高层,前面所有的低层程序都是为它服务的。电机在启动器的控制下首先以低电压通电,当通电一段时间后,启动器在定子上加上电机额定电压。在此过程中启动器同时要对电机进行保护。由于不同用途的电机启动转矩不同,在实施减压启动会使电机转矩下降。如果启动过程中电机达不到启动转矩就会发生堵转。
电机保护在电机启动以后实施保护。包括:过电流,过电压,断相,三相不平衡,堵转保护。
◆断相
电动机发生断相时会引起电动机主电路中的电流有很大差别,而造成电动机烧毁或损伤,其特点是三相电流严重不平衡,甚至有某一相为0。
此时系统应迅速动作。
判断:
1, IA = 0 ?
2, IB = 0 ?
3, IC = 0 ?
若其中任意一项结果为真,则断相成立,立即进行保护动作。
◆三相不平衡
三相不平衡:三相输入电流中最高相与最低相差值大于33%额定电流时,系统立即保护动作。
判断:
PMAX–PMIN > I0/3 ( I0的33 % )
若结果为真,则三相不平衡成立,立即保护动作
◆过电流(过载、欠压、堵转等)
当电动机在负载变大,电源电压下降,频率太低,堵转等故障条件下都会出现过电流,其特点是三相电流平衡增加,并超过额定值,因此要进行过电流反时限保护,在正常运行状态下,电动机电流大于1.2倍额定电流时,不大于3min动作,1.5倍时不大于1min动作,7.2倍时不大于30s动作,其动作曲线见
图4-8所示。
图4-8
判断:
计算 PABC=PMAX/I0
1,判断是否启动电流
2, 若 PABC<1.2
则 TP9=0(不保护)
GOTO ENG
3, 若 1.2≤PABC<1.5
则 若TP9=0, 则
TP9=1,
T =( TIME(1)+TIME(2) )/2
否则 GOTO ENG
4,若 1.5≤PABC<2.0
则 若TP9=0, 则
TP9=1,
T=( TIME(2)+TIME(3) )/2
否则 GOTO ENG
5, 若 2.0≤PABC<3.0
则 若TP9=0, 则
TP9=1,
T=( TIME(4)+TIME(5) )/2
否则 GOTO ENG
6, 若 3.0≤PABC<4.0
则 若TP9=0, 则
TP9=1,
T=( TIME(5)+TIME(6) )/2
否则 GOTO ENG
8, 若 3.3≤PABC<6.0
则 若TP9=0,则
TP9=1,
T=( TIME(6)+TIME(7) )/2
否则 GOTO ENG
END
注:TIME(1)~TIME(7)查表所得
第五章 总结与展望
5.1 毕业设计总结
本次毕业设计的内容主要是基于AVR单片机智能启动器的设计,要求实现电动机的智能启动和启动过程的各种保护,包括控制系统设计、数码管显示设计、继电器电路设计和相关软件的编写。该启动器以直流采样为基础,以ATmega16单片机的应用为核心,选用CH447键盘读写显示控制芯片来实现键盘操作和数码管的动态显示,最终完成功能强大的人机界面。实现低成本多功能的经济型产品。
设计中遇到了许多问题,硬件电路的实现,软件部分程序设计,调试中各类意外结果的出现,让我不得不埋头于一大堆有关于单片机开发及实践的书,深入了解单片机的原理,加以应用,同时进一步地学习了C语言,并熟练使用Protel99 SE绘制电路板原理图与设计电路板,受益匪浅。也让我领悟到理论与实践相结合的重要性,通过不断的学习和实践,不断的对设计进行分析与改进,顺利完成了本次设计。
在此次系统的硬件、软件的设计改进中,许多还只是我们的初步尝试,必然存在不完善之处,我们将再进一步的不断完善和提高。
5.2 工作展望
本文设计的电动机综合保护器以低功耗8位RISC结构的ATmega16为核心,并以CH447L为显示和键盘驱动。实行减压启动和全压运行保护,具有可靠性高、精度高、响应快、功耗低等特点。还可进行保护参数的方便设定和显示功能。
本来采用直流采样后,误差会相对过大,没有交流采样精度高。随着科技的不断提高,检测元件地高度灵敏化。我认为我们更需加入抗干扰设计以免误差更大。
当系统工作时,继电器和交流接触器触点的动作对控制系统的5V电源有很大干扰。这里的干扰包括了导线的传导干扰和空间的辐射干扰。经测试,系统如果不加抗干扰措施,在继电器和交流接触器触点动作时,会使5V电源上产生正负30V的瞬时噪声。因而使得单片机由于电源波动过大而出现频繁死机现象。
要解决干扰现象,需在控制系统和负载两方面增加抗干扰措施。
控制系统方面,在电路板布线时将控制电路和负载电路分离,将控制继电器单独放置在一块独立的电路板上,并加上防护罩以减小继电器的辐射干扰。在控制系统的200V交流输入线路上,串接一个磁环以减小导线的传导干扰。
负载端是系统的干扰源,在负载方面,主要考虑减少交流接触器以及继电器触点动作时打火现象对控制电路的干扰。本系统负载端通过控制继电器控制交流接触器的线圈,由交流接触器控制电机。因此在控制继电器和交流接触器的触点上均并联上RC串联滤波电路(灭弧器)。灭弧器具体接线方法为:控制继电器的触点端即交流接触器的线圈两端并联单相灭弧器。在交流接触器的触点端接三相灭弧器。
另外在驱动部分,为保护光藕,应该在三极管和光藕之间加一电阻,以免三极管击穿后,电流过大,将光藕烧坏。
参考文献
┊ 网站导航 ┊ 管理登陆 ┊ 免责声明 ┊ 问题反馈 ┊ 友链说明┊本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正! 不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作! ![]() ![]() ![]() ![]() ![]() ![]() 本站学习交流群:138..158(高级群1-满)、77930286(高级群2)、61804809(群3) Copyright© MCUSY All Rights Reserved 本站网警备案号: WZ36040002485 ICP备案证书号:粤ICP备09034963号 |