AVR电动机智能启动器项目设计方案.doc_第1页
AVR电动机智能启动器项目设计方案.doc_第2页
AVR电动机智能启动器项目设计方案.doc_第3页
AVR电动机智能启动器项目设计方案.doc_第4页
AVR电动机智能启动器项目设计方案.doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AVR电动机智能启动器项目设计方案1.1 背景介绍随着科技的飞速发展和国民经济的稳步上升,电机设备得到了广泛的应用,数千台电动机同时运作的大企业已屡见不鲜,可以说我国已进入了高度工业化时期。而且人们的日常生活如交通、运输也已离不开电动机。然而由于我国自动化起步较晚,控制思想不如西方发达国家成熟和完善,在工农业生产中经常由于某些无法预知的因素,如三相电流严重不平衡、过电流、缺相、过载、堵转等使电动机发生故障,而电动机通常是企业内转动设备的主要动力,大量电动机的停运给企业造成很大经济损失及生产的混乱,特别是大型连续化生产要求非常高的危急企业,还可能引发其他设备及人身事故,损失更为严重。因此携带保护功能的电动机智能启动器成了众多电机用户的首选。它不仅具有普通保护功能而且还在经常被忽略的启动阶段对电动机进行监控保护。近几年来对智能启动器的研究已进入白热化,从热继电保护启动到电子智能启动,市面上的启动保护装置已层出不穷。但往往价格颇高,大型企业还是一如既往地选择国外进口产品,真正属于中低档用户的产品还是不多。就是在这样一个背景下,我们采用了目前广为流行的8位AVR芯片ATmega16作控制核心,实现控制功能的进一步完善和成本的降低。以前保护动作装置都以双金属片热继电器为主,它在保护电动机过载方面具有较好的效果,并且结构很简单,但在功能和动作特性上存在严重不足。近年来电动机启动保护装置开始向智能化、微机化、数字化方向发展,但目前对电动机启动阶段的保护比较单一,一般都采用启动定时限保护。该功能虽然可以基本满足启动时间较长电动机启动过程保护的需要,但对于启动时间较短或很大功率的电动机,采用该方法可能会引起电动机的损坏。因此我们选择了运用三个电磁继电器切换的方式来实现启动阶段与运行阶段的分别保护。有别于46单片机的AVR芯片具有独立的模拟I/O口和内部AD转换器。因此我们将它与功能强大的CH447L读写显示芯片配合,读写显示部分的处理单独由CH447L这个芯片来完成,毫无疑问减轻了AVR控制芯片的负担。不仅实现了控制的简单模块化而且节约了控制芯片的内部资源。1.2 毕业设计任务和要求本课题主要是启动器的智能控制,其中包括电源设计、控制系统设计、继电器电路设计以及相关软件的编写。要求熟悉AVR系统的开发流程,掌握电动机启动过程的保护要领,掌握工程开发的系统步骤与技巧。智能启动器的设计分为模拟信号的采集,信号的分析处理和键盘显示三部分。开始我们打算和其他同学一样采用软硬件分开的任务分工制,但在实施两周后,发现对于一个项目来说,把软硬件完全分开来设计是很不合理的,而且对个人知识的掌握也有局限性,所以我们打算软硬相结合,我在负责硬件的同时还涉及到基础软件模块驱动程序的设计。另外,该课题我们采用了两种采样方式。我负责直流采样的方案即在三相信号进入单片机之前,采用相关模拟电路先整流、滤波,将交流信号先转化为直流信号,再对直流信号进行处理,我认为这样做会比直接采用交流采样简单,不用考虑相位变化信息,相对而言对单片机的内部资源的占用也少得多,工作方面软硬件都涉及到了,具体内容包括电路原理图设计,电路板设计,软件功能(AD转换、数字滤波、采样、键盘、显示和部分保护方案)及调试等部分。这样软硬结合的分工,能够使我们得到全方位的学习和锻炼。1.3 论文结构和说明本篇论文共分五章:第一章介绍了本课题的背景,引出了智能启动器的研究与开发;第二章介绍了本次设计的总体方案;第三章重点介绍了本设计中硬件部分的模块化设计以及PCB板的绘制过程;第四章主要介绍了系统软件部分的程序设计方案,软件功能模块等,第五章则是对本次设计的总结及其今后的展望。第二章 总体方案本课题我主要采用模块化的设计方案,先对三相交流信号(电压、电流)进行整流和滤波,再由单片机的模拟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单片机ATmega16AVR 单片机是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.ATmega16的引脚如图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时钟脉冲可以接受的频率范围为50200kHz。时钟频率过高会降低转换精度。它有系统时钟信号和一个可设定分频比的分频器提供频率。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键键盘控制器,本设计选择42矩阵键盘扫描。内置按键状态输入的下拉电阻,内置去抖动电路。键盘中断,可以选择低电平有效输出或者低电平脉冲输出。提供按键释放标志位,可供查询按键按下与释放。支持按键唤醒,处于低功耗节电状态中的CH447L可以被部分按键唤醒。外部接口:同一芯片,可选高速的4线串行接口或者经济的2线串行接口。本设计采用了4线串行接口,它支持多个芯片级联,时钟速度从0到2MHz,DIN和DCLK信号线可以与其它接口电路共用,节约引脚。内置上电复位,可以为单片机提供高电平有效和低电平有效复位输出。3.3 硬件功能模块的设计3.3.1 三相模拟信号的预处理模块本模块主要处理的是将输入的原始信号进行硬件滤波和整流。其电路原理图如下:电压部分:电流部分图 3-3. 硬件整流和滤波电路电流要先进电流互感器,将电流量转化为相应的电压量,因为单片机内部是对电压量进行分析处理的。经过互感器后再经一个整流桥图中D4、D5、D6等,将交流电转化为有纹波的直流,然后经过模拟滤波电路(由电阻、二级管、电容等组成)处理,电路图如图3-3所示。电压部分和电流部分原理一样,不同之处在于电压部分是经过电压互感器(变压)后在进行整流、滤波处理。3.3.2 AVR单片机系统模块 图3-4 ATmega16系统模块(1)I/O 端口如图3-4所示在本设计中PA0PA3分别为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 光耦抗干扰电路当电机启动时,继电器K2闭合,电机进入降压启动过程;当电流平稳后,继电器K3闭合,K2断开,表示进入了全压运行阶段;当电机遇到危险时,继电器K1会根据保护延迟时间闭合,进行保护动作。另外为了避免K2、K3两个继电器同时合的情况,我们加入了一个逻辑互锁电路来避免这种情况的冲突,真正实现保护、启动和运行的分时控制。由于市面上恰好有相关功能的芯片,因此为了节约时间,我直接采用了74HC00这个芯片。其内部逻辑电路如图3-9所示:图3-9 互锁逻辑电路真值表如下:(1表示开、0表示合)PB1PB2KK2KK300110101101011113.3.4 读写显示功能模块读写显示功能模块是本设计硬件设计的重点,数码管驱动及键盘的控制采用芯片CH447L来提高运作效率,使设计模块化。它可通过4线或2线串行接口与单片机等交换数据,并且可以对单片机提供上电复位信号。CH447L与单片机以及数码管和键盘的硬件连接如图3-10所示。图3-10 CH447L与单片机及数码管和键盘的连接因为CH447L的4线串行接口是由硬件实现的,单片机可以频繁地通过串行接口进行高速操作,不降低CH447L的工作效率;而2线串行接口是由软件与硬件共同实现的,不适合不间断地频繁操作,所以我采用了4线接口。由图3-10可知单片机通过串行接口控制CH447L芯片,CH447L的数码管显示驱动与键盘扫描控制之间相互独立,单片机可以通过操作命令分别启用、关闭、设定这两个功能。(1)显示驱动CH447L对数码管和发光管采用动态扫描驱动,顺序为DIG0至DIG7,内部具有电流驱动级,可以直接驱动共阴极数码管。段驱动引脚SEG6SEG0分别对应数码管的段G段A,引脚SEG7对应数码管的小数点;字驱动引脚DIG7DIG0分别连接8个数码管的阴极。CH447L也可以连接88矩阵的发光二级管LED阵列或者64个独立发光管二极管或者64级光柱。CH447L支持扫描极限控制,并且只为有效数码管分配扫描时间,降低扫描极限可以提高数码管的显示亮度。CH447L内部的8个8位的数据寄存器用于保存8个字数据,分别对应于所驱动的8个数码管或者8组发光二极管。它不仅支持数据寄存器中的字数据左移、右移、左循环、右循环和各数码管的独立闪烁控制,而且还支持任意段位寻址,可以用于独立控制发光管LED,本设计正运用了该特性。默认情况下,CH447L工作于不译码方式,此时8个数据寄存器中字数据的位7位0分别对应8个数码管的小数点和段G段A,当数据位为1时,对应的数码管的段就会点亮;当数据位为0时,则对应的数码管的段就会熄灭。通过设定,CH447L还可以工作于BCD译码方式,该方式主要应用于数码管驱动,单片机只要给出二进制数BCD码,由CH447L将其译码后直接驱动数码管显示对应的字符。如图3-11所示CH447L驱动4个数码管和一组LED光二极管(共八个)。所有数码管的相同段引脚(段A段G以及小数点)并联后通过串接的限流电阻R连接CH447L的段驱动引脚SEG0SEG7,串接限流电阻的阻值越大段驱动电流越小,数码管的显示亮度越低,R的阻值一般在100至1K之间,为降低芯片本身的功耗应选择较大的阻值。各数码管的阴极分别由CH447L的DIG0DIG7引脚进行驱动并串接上二极管防止数码管反向漏电。图3-11 CH447L与数码管的连接(2) 键盘扫描CH447L具有64键的键盘扫描功能,我们可以在88矩阵中任意去掉不用的按键。我所设计的键盘采用了8*1的键盘方式,为了防止键被按下后在SEG信号线与DIG信号线之间形成短路而影响显示,要在CH447L的DIG0DIG7引脚与键盘矩阵之间串接限流电阻,其阻值可以从1K至10K。在键盘扫描期间,DIG7DIG0引脚按照DIG0至DIG7的顺序依次输出高电平,其余7个引脚输出低电平;SEG7SEG0引脚的输出被禁止,当没有键被按下时,SEG7SEG0都被下拉为低电平;当有键被按下时,例如连接DIG3与SEG4的键被按下,则当DIG3输出高电平时SEG4检测到高电平;为了防止因为按键抖动或者外界干扰而产生误码,CH447L实行两次扫描,只有当两次键盘扫描的结果相同时,按键才会被确认有效。如果CH447L检测到有效的按键,则记录下该按键代码,并通过4线串行接口中的DOUT引脚产生低电平有效的键盘中断,此时单片机可以通过串行接口读取按键代码;在没有检测到新的有效按键之前,CH447L不再产生任何键盘中断。CH447L不支持组合键,也就是说,同一时刻,不能有两个或者更多的键被按下;如果多个键同时按下,那么按键代码较小的按键优先。CH447L所提供的按键代码为7位,位2位0是列扫描码,位5位3是行扫描码,位6是状态码(键按下为1,键释放为0)。单片机可以在任何时候读取按键代码,但一般在CH447L检测到有效按键而产生键盘中断时读取按键代码,此时按键代码的位6总是1,另外,如果需要了解按键何时释放,单片机可以通过查询方式定期读取按键代码,直到按键代码的位6为0。图3-12 键盘芯片连接图(3)四线串行接口CH447L具有硬件实现的高速4线串行接口,包括4个信号线:串行数据输入线DIN、串行数据时钟线DCLK、串行数据加载线LOAD、串行数据输出线DOUT。其中,DIN、DCLK、LOAD是带上拉的输入信号线,默认是高电平。DOUT在未启用键盘扫描功能时作为串行数据输出线,在启用键盘扫描功能后作为键盘中断和数据输出线,默认是高电平。DIN用于提供串行数据,高电平表示位数据1,低电平表示位数据0,串行数据输入的顺序是低位在前,高位在后。DCLK用于提供串行时钟,CH447L在其上升沿从DIN输入数据,在其下降沿从DOUT输出数据。CH447L内部具有12位移位寄存器,在DCLK的上升沿,DIN上的位数据被移入移位寄存器的最高位寄存器,按此原理CH447L允许DCLK引脚的串行时钟频率高达10MHz,从而可以实现高速串行输入输出。LOAD用于加载串行数据,CH447L在其上升沿加载移位寄存器中的12位数据,作为操作命令分析并处理,无论移位寄存器中的12位数据是否有效,CH447L都会将其当作操作命令。CH447L只在LOAD的上升沿加载命令数据并处理,单片机不能将LOAD信号线用于其它用途,但是DIN和DCLK可以用于其它用途。当单片机I/O引脚资源紧张时,CH447L只需要独占使用LOAD信号线,DIN和DCLK信号线可以与其它接口电路共用。图3-13 接口框图在未启用键盘扫描功能时,DOUT用于输出串行数据,移位寄存器中的最低位数据总是在DCLK的下降沿出现在DOUT引脚。当启用键盘扫描功能后,DOUT用于键盘中断和数据输出,默认是高电平。当CH447L检测到有效按键时,DOUT输出低电平有效的键盘中断;单片机被中断后,发出读取按键代码命令,CH447L在LOAD的上升沿后从DOUT输出7位按键代码的最高位;单片机继续输出串行时钟,在DCLK的每个下降沿,CH447L依次从DOUT输出7位按键代码的剩余6位,顺序是高位在前,低位在后;7位按键代码输出完毕后,无论DCLK如何变化,CH447L都将DOUT恢复为默认的高电平。图3-14 脉冲波形图如图3-14所示单片机从CH447L获得按键代码的过程是: 输出一位数据,即向DIN输出读取按键代码命令的最低位数据B0,并向DCLK输出低电平脉冲; 以同样的方式,输出读取按键代码命令的位数据B1B11; 向LOAD输出低电平脉冲,其中包括一个上升沿使CH447L加载串行数据,CH447L分析出是读取按键代码命令,立即在DOUT输出按键代码的最高位数据K6; 读取一位数据,即从DOUT输入按键代码的最高位数据K6,并向DCLK输出低电平脉冲; 以同样的方式,输入按键代码的位数据K5K0。由于CH447L驱动数码管或者LED的电流较大,会在电源上产生较大的毛刺电压,如果电源线或者地线的布线不合理,会影响单片机或者CH447L的稳定性,应使用较粗的电源线和地线,在靠近CH447L在正负电源之间并联电源退耦电容。3.3.5 电源模块设计因单片机和CH447L均需5V电源驱动,而继电器需12V电源驱动,故电源模块主要是提供两路电源信号。为了提高电源抗干扰能力,在电源模块输入端利用电容和变流器来实现交流滤波,经过变流器的交流信号通过整流、滤波电路转化为直流信号,滤波信号一路经过变压器将一次侧220V信号转化为5V直流电源信号,同时将二次侧信号经光电耦合通过开关电源反馈到一次侧,从而进一步提高电源抗干扰能力;另外,滤波信号通过另一变压器,在二次侧得到12V直流电源信号,用于驱动继电器。系统设计之初,为了简化电路、节省成本曾采用自耦变压器将一次侧电压信号通过两次变压在二次侧获得12V和5V电源信号的方法,但在实际应用中发现容易造成两路电源信号的干扰,最终采用两个变压器分别提供两路电源信号的方法。3.3.6 接口的设计接口是单片机与外部连接的部件,如果没有相关接口就没办法和外部进行通信和数据信息的交互。在本设计中我采用了SPI,JTAG,JP等接口,其中SPI用来下载,JTAGE用来调试仿真,JP用来连接模拟信号和继电器。(1)同步串行下载口SPI图3-15 SPI接口ATmega16 SPI采用全双工,3线同步数据传输,有7种可编程的比特率和传输结束中断标志,可以从闲置模式唤醒,作为主机时具有倍速模式。系统包括两个移位寄存器和一个主机时钟发生器。配置为SPI主机时,SPI接口不自动控制SS引脚,对SPI数据寄存器写入数据时启动SPI时钟,将8比特的数据移入从机。传输结束后SPI时钟停止,传输结束标志SPIF置位。配置为从机时,只要SS为高,SPI接口将一直保持睡眠状态,此时可以通过软件更新SPI数据寄存器SPDR的内容。即使此时SCK引脚有输入时钟,SPDR的数据也不会移出,直至SS被拉低。一个字节完全移出之后,传输结束标志SPIF置位。SPI系统的发送方向只有一个缓冲器,在接收方向有两个。在发送时一定要等到移位过程全部结束后才能对SPI数据寄存器执行写操作。在接收数据时,需要在下一个字符移位过程结束之前通过访问SPI数据寄存器读取当前接收到的字符。否则会丢失数据。图3-16 SPI主机从机的互连(2)JTAG接口图3-17 JTAG接口如图3-17所示,JTAG接口有四个引脚分别为TMS(测试模式选择)、TCK(测试时钟)、TDI(测试数据输入)、TDO(测试数据输出)。在JTAGEN熔丝位没有被编程的情况下,四个TAP引脚为正常的端口引脚,TAP控制器处于复位状态。一旦JTAGEN被编程,且MCUCSR寄存器的JTD清零,TAP输入信号即被拉高,JTAG边界扫描和编程功能使能。此时TAP输出(TDO)处于悬空挂态,JTAG TAP 控制器不移位数据,因此必须连接一个上拉电阻或有上拉电阻的硬件。另外还有一些连接模拟信号的接口如JP4、JP5、JP56等。图3-18 其他接口 3.4 电路板的设计 图3-19 PCB板的设计流程图3.4.1 原理图的绘制首先创建出绘图界面,调出原理图中所要用到的器件,用绘图工具把所有的元件连接起来,由于原理图在一张Protel99SE图纸中不能够画出,可以在几张图纸中分功能模块画出总图的分图,最后再把这些分图在一张图纸中进行连接。把图中相应的器件上分别标上相应的数值,并把封装号分别填入到器件的编辑属性窗口中,最后对元件进行编号。图3-20 原理图图3-20为本次设计的原理图,绘图时分几个单元来完成,为将整个硬件原理图表示清楚,在此放入一张图中供分析,单元图放在附录中。在绘制原理图过程中出现一些问题,现做一小结:1ERC报告管脚没有接入信号: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,然后移动字符到边界内。3DRC报告网络被分成几个部分:表示这个网络没有连通,看报告文件,使用选择CONNECTEDCOPPER查找。设计过程中应保证零件封装无误,这也生成PCB板图的关键一步,不同的元件可共用同一零件封装,同种元件也可有不同的零件封装,在此对零件封装做一小结:C1-C4:,RB.1 C6-C9 :,0805 C10-C11:,RB.2 C12:100nF.0805 C13: 100u,RB.1D1-D2:2LED,LED2 D3-D10:,SLED.15 D11-D15:,SLED.15D16:,DIODEO.2 D17-D18:,DIODE0.3 D19:,SLED.15JP1:SPI,IDC10 JP2:JTAG,IDC10 JP3:COMM,TEL4JP4:,SIP5 JP5:,SIP15-4 JP6:,SIP15-6 JP7:,SIP4JP8,SIP3K1-K3:,SRSB-12 L1:10uH,AXIAL0.5 Q1-Q3:PNP,9014R1-R26:,0805 R27:1K,0805 R28:,0805R29:,AXIAL-0.8 RP1:46K,RES5S1-S8:,BUT S9:,DIP4 U1:ATMEGA16L,DIP40U2:4046.DIP16 U3:CH447,PDIP24U4-U6:,DIP43.5 本章小结 本章主要介绍了硬件部分的设计,在硬件电路设计中我们需要处理好控制系统,输入输出接口,继电器驱动,键盘显示以及抗干扰等一些设计。更深一步了解了AVR mega16单片机和CH447芯片的结构、工作原理以及它们之间的连接和控制方式等,学会了用protel99这个绘图软件绘制原理图、PCB板图,对整个过程有了清晰的了解,并自己动手焊元件,掌握了许多实际焊接工作中的小窍门。在这一部分的设计中真正让我体会到实践的乐趣。第四章 基于AVR电动机智能启动器的软件设计4.1 软件设计方案本课题的软件部分我采用了层次化、模块化的设计方案。全局分三层:第一层是基础功能模块层;第二层是中断层,它包括定时中断和外部中断;第三层是保护算法。层次化使结构清晰,三层采用调用关系,一层比一层高级。模块化使得程序在功能实现上简单明了。其中基础层涉及到继电器、键盘、显示、A/D、硬件数字滤波等功能模块。具体方案如下:(1)首先进行程序初始化,包括ATmega16设置、数码管设置、从EEPROM中读初始值:额定电流、启动时间和保护时间。然后进行A/D采样、滤波,每调用一次A/D转换子程序连续采样八次,一次采取50个数据。通过多次采样、排序、求平均值,采用平均值滤波,提高系统高干扰性能。(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 JTAGICE4.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;iai+1) temp=ai;ai=ai+1;ai+1=temp; 数字滤波部分程序的流程图如图4-2所示:(程序见附件)图4-2 数字滤波程序流程图 (2) A/D转换模块由于ATmega16内集成一个逐次比较型ADC,它与PORT C端口用一个8路的模拟开关连接。有两种工作方式分别为:查询方式和中断方式。在查询方式中,ADC按单次转换模式工作,每次转换均由置位ADC触发,ADC工作于中断方式时,ADC按自由模式工作,自第一次置位ADSC开始,ADC就连续不断地进行采样转换,数据更新。在本设计中,我选用了查询方式。图4-3 A/D转换流程图 (3) 显示模块 数码管的显示分动态显示和静态显示两种方式。静态显示程序简单,但占用I/O口多,动态显示虽占资源较多但接线较少。本设计采用了动态显示,运用CH447芯片进行读写显示。该模块分数码管显示和发光二极管显示,其电路原理和连接见3.3节所示。程序分LED显示和指示灯显示,前者包含百位、十位、个位、分位和小数点的显示。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论