直流电机控制系统硬件设计_第1页
直流电机控制系统硬件设计_第2页
直流电机控制系统硬件设计_第3页
直流电机控制系统硬件设计_第4页
直流电机控制系统硬件设计_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

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

文档简介

摘要近年来,电机调速系统在工业自动化、生产过程控制、测控仪表等领域的应用越来越进一步和广泛。ATmega16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,从而可以减缓系统在功耗和解决速度之间的矛盾。重要由ATmega16为核心设计由LMD18200驱动芯片,采用232通讯协议的串行通信控制电路构成的直流电机PWM调速控制系统。系统重要完毕由上位机和ATmega16控制直流电机的起动,停止和加减速等功能。文章具体介绍了本调速控制系统的工作原理、PWM驱动接口电路和K1010光电耦合器,LMD18200驱动电路,串行通信控制电路相应的软件设计。软件通过ICCAVR编写,然后用AVRStudio进行仿真并将编译通过的程序代码下载到ATmega16之中对系统进行控制。关键词:ATmega16;直流电机;PWM;LMD18200AbstractInrecentyears,theSCMapplicationwhichusedinthefieldofindustrialautomation,productionprocessbecomesmoreandmoredeepenandextensive.ATmega16isamicrocontrollerbuilduponAVRRISCconfigurationwhichisalowconsumemicrocontrollerof8-bitCMOS.ThedataofATmega16haveahighdispatcherwhichcanreach1MIPS/MHzforadvancedinstructionvolumandtheinstructionofsingleclockcycle,soitcanrelaxedtheconflictbetweenconsumeanddisposespeed.ThisdesignshowusthataPWMspeedsystemofDC-motorusingATmega16isintroducedinthispaper.Thispaperelaboratesonthesystemprinciple,opticalEncoder,LMD18200drivingsystem,HighReliabilityPhotoCouplerK1010,theDC-motorPWMdigitalcontrolsystem,andsystemserialcommunicationagreementof232communication.Thesystemismainlycompletedthestart,stopandaccelerationanddecelerationnfunctionsbywhichthemasterPCandATmega16controltheDCmotor.Thearticledescribedindetailthespeedcontrolsystem'sworkingprinciple,thePWMdriveinterfacecircuitandK1010Optocoupler,LMD18200drivecircuit,therelativesoftwaredesignoftheserialcommunicationcontrolcircuit.ThesoftwareisprogrammedthroughICCAVR,thensimulatedbyAVRStudioandthecompiledcodeisdownloadedtoATmega16tocontrolthesystem.Keywords:ATmega16;DC-motor;PWM;LMD18200目录1绪论 11.1课题的背景及意义 11.2直流电机的发展 21.3本设计完毕的工作 22AVR单片机简介 32.1单片机系统概述 32.2ATmega16功能概述 32.3ATmega16单片机 52.3.1ATmega16单片机的特点及特性 52.3.2ATmega16单片机引脚配置及说明 82.3.3CPU 92.3.4存储器 102.3.5 I/O口介绍 122.3.6复位电路 172.3.7时钟电路 183直流电机控制系统硬件设计 213.1总体电路设计 213.2时钟电路 213.3系统复位电路 213.4串行通信接口电路设计 223.4.1重要特点 223.4.2内部结构 233.4.3Max232引脚图 233.4.4Max232电路设计 233.5驱动电路 243.5.1LMD18200芯片介绍 243.5.2各引脚的功能及原理 263.5.3驱动电路设计 273.6光电耦合电路 284软件设计 304.1初始化程序设计 304.1.1I/O初始化 304.1.2定期器初始化 304.1.3串口初始化 314.2主程序 324.3中断及转速控制子程序 344.4串行数据传输程序 364.5ICCAVR 374.5.1开发环境ICCAVR介绍 374.5.2开发及编译 374.6AVRStudio仿真 384.6.1仿真器的特点 384.6.2连接JTAGICE 394.6.3仿真环境 404.7ATmega16单片机控制直流电机程序代码 42结论 49致谢 50参考文献 51附录A英文原文 52附录B中文翻译 60附录C总体电路设计图671绪论1.1课题的背景及意义在电气时代的今天,电动机一直在现代化的生产和生活中起着十分重要的作用。无论是在工农业生产还是在平常生活中的家用电器,都大量地使用着各种各样的电动机。因此对电动机的控制变得越来越重要了。电动机的控制技术的发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术、微机应用技术的最新发展成就。正是这些技的进步使电动机控制技术在近二十数年内发生了翻天覆地的变化。在各类机电系统中,由于直流电机具有良好的起动、制动和调速性能,直流调速技术已广泛运用于工业、航天领域的各个方面。直流电机由于具有速度控制容易,启、制动性能良好,且在宽范围内平滑调速等特点而在冶金、机械制造、轻工等工业部门中得到广泛应用。随着生产和科技的发展,一方面对电机调速系统在控制精度、工作速度、快速启、制动及逆转性能以及在宽范围的调速等诸方面规定越来越高;另一方面,电机控制系统也经历了交磁放大器、磁放大器、可控离子变速器、可控硅和计算机控制的发展历程。特别是最近几年来,随着微电子技术和计算机技术的发展及单片机的广泛应用,使调速装置向集成化、小型化和智能化方向发展。目前,最常用的直流调速技术是脉宽调制(PWM)直流调速技术,它具有调速精度高、响应速度快、调速范围宽和耗损低等特点。国内中小功率直流电机的调速系统大量地采用脉冲宽度(PWM)调速技术,正在迅速地取代SCR直流调速系统。特别是单片机控制的智能化调速系统有也许直接安装在电机座上而做到与电机一体化,节省了专用控制机矩,从而使设备的可靠性、自动化限度大大提高.本文所介绍的单片机直流电机调速系统试图在机电一体化方面做些工作。AVR单片机是基于RISC指令架构的8位单片机。RISC通过优选使用频率最高的简朴指令,避免复杂指令,采用固定指令长度,减少指令格式和寻址方式等方法来缩短指令周期,提高解决起的运算速度。采用这种RISC结构,使得AVR系列的单片机具有1MIPS/MHZ的高速解决能力。AVR高端产品ATmega系列的部分单片机中还集成了在线调试单元,通过JTAG即可实现在线调试和程序下载功能。这使得AVR单片机成为一种能满足多种需求的高灵活性和低成本的高速微解决器。1.2直流电机的发展直流电机可以对旋转角度和转动速度进行高精度控制。直流电机作为控制执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统和精密机械等领域。例如,在仪器仪表,机床设备以及计算机的外围设备中(如打印机和绘图仪等),凡需要对转角进行精确控制的情况下,使用直流电机最为抱负。随着微电子和计算机技术的发展,直流电机的需求量与日俱增,在各个国民经济领域都有应用。直流电动机是最早出现的电动机,也是最早实现条素的电动机。由于它具有良好的线性调速特性,控制简朴,效率高及优异的动态特性,长期以来一直战局着调速控制领域的统治地位。近年来,随着交流变频电机及无刷电机的调速控制技术的不断成熟,直流电机正面临着巨大的挑战。在多数调速控制场合,直流电机仍是最佳选择。在本世纪初,由于资本主义列强争夺殖民地,造船工业发展不久,同时也使得直流电动机的技术得到了长足的进步。到了80年代后,由于便宜的微型计算机以多功能的姿态出现,直流电动机的控制方式更加灵活多样。本来的直流电机控制系统采用分立元件或者集成电路组成的控制回路,不仅调试安装复杂,要消耗大量元器件,并且一旦定型之后,要改变控制方案就一定要重新设计电路。计算机则通过软件来控制直流电机,更好地挖掘出电动机的潜力。因此,用计算机控制直流电机已经成为了一种必然的趋势,也符合数字化的时代趋势。现在比较常用的直流电机涉及反映式直流电机、永磁式直流电机、混合式直流电机和单相式直流电机等。其中反映式直流电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,运用磁导的变化产生转矩。现阶段,反映式直流电机获得最多的应用。1.3本设计完毕的工作本次毕业设计是单片机控制直流电机方面的应用。这个设计最终目的是设计出一个可以控制直流电机旋转的系统。本次设计重要实现了以下几个功能:设计两个稳压电源接口,可以接入适合单片机工作的5V电源和LMD18200使用的12V电源。设计一个外围驱动电路来驱动直流电机旋转。使用上位机串口控制直流电机转速。最后编写软件部分,将程序输入单片机并运营系统,使系统工作。2AVR单片机简介2.1单片机系统概述随着材料科学、工艺技术、计算机技术的发展与进步,电路系统向着集成度极高的方向发展。CPU的生产制造技术,也朝着综合性、技术性、实用性发展。如CPU的运算位数从4位、8位……到32位机的发展,运算速度从8MHz、32MHz……到1.6GHz。可以说是日新月异的发展着。其中单片机在控制系统中的应用是越来越普遍了。单片机控制系统是以单片机(CPU)为核心部件,扩展一些外部接口和设备,组成单片机工业控制机,重要用于工业过程控制。要进行单片机系统设计一方面必须具有一定的硬件基础知识;另一方面,需要具有一定的软件设计能力,可以根据系统的规定,灵活地设计出所需要的程序;第三,具有综合运用知识的能力。最后,还必须掌握生产过程的工艺性能及被测参数的测量方法,以及被控对象的动、静态特性,有时甚至规定给出被控对象的数学模型。2.2ATmega16功能概述AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。AVR的重要特性:高可靠性、功能强、高速度、低功耗和低价位,一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。初期单片机重要由于工艺及设计水平不高、功耗高和抗干扰性能差等因素,所以采用稳妥方案:即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。以后的CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。此间虽有某些精简指令集单片机(RISC)问世,但仍然沿袭对时钟分频的作法。AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。当然这种速度上的升跃,是以高可靠性为其后盾的。AVR单片机硬件结构采用8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文献)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,减少了成本。故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部RAM。AVR单片机的I/O线所有带可设立的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充足运用。AVR单片机片内具有多种独立的时钟分频器,分别供URAT、I2C、SPI使用。其中与8/16位定期器配合的具有多达10位的预分频器,可通过软件设定分频系数提供多种档次的定期时间。AVR单片机独有的“以定期器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接受缓冲、波特率自动调整定位(接受时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。面向字节的高速硬件串行接口TWI、SPI。TWI与I2C接口兼容,具有ACK信号硬件发送与辨认、地址辨认、总线仲裁等功能,能实现主/从机的收/发所有4种组合的多机通信。SPI支持主/从机等4种组合的多机通信。AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设立的启动后延时运营程序,增强了嵌入式系统的可靠性。AVR单片机具有多种省电休眠模式,且可宽电压运营(5-2.7V),抗干扰能力强,可减少一般8位机中的软件抗干扰设计工作量和硬件的使用量。AVR单片机技术体现了单片机集多种器件(涉及FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定期器/计数器等)和多种功能(增强可靠性的复位系统、减少功耗抗干扰的休眠模式、品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定期器/计数器、具替换功能的I/O端口……)于一身,充足体现了单片机技术的从“片自为战”向“片上系统SoC”过渡的发展方向。总结,与其它8-bitMCU相比,AVR8-bitMCU最大的特点是:•哈佛结构,具有1MIPS/MHz的高速运营解决能力;•超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051MCU采用单一ACC进行解决导致的瓶颈现象;•快速的存取寄存器组、单周期指令系统,大大优化了目的代码的大小、执行效率,部分型号FLASH非常大,特别合用于使用高级语言进行开发;•作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设立为三态高阻抗输入或带上拉电阻输入,具有10mA-20mA灌电流的能力;•片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简朴,系统更加稳定可靠;•大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,AnalogComparator,WDT等;•大部分AVR除了有ISP功能外,尚有IAP功能,方便升级或销毁应用程序。2.3ATmega16单片机ATmega16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和解决速度之间的矛盾。ATmega16AVR内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10倍的数据吞吐率。2.3.1ATmega16单片机的特点及特性1、特点16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定期器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定期器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。工作于空闲模式时CPU停止工作,而USART、两线接口、A/D转换器、SRAM、T/C、SPI端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定期器继续运营,允许用户保持一个时间基准,而其余功能模块处在休眠状态;ADC噪声克制模式时终止CPU和除了异步定期器与ADC以外所有I/O模块的工作,以减少ADC转换时的开关噪声;Standby模式下只有晶体或谐振振荡器运营,其余功能模块处在休眠状态,使得器件只消耗很少的电流,同时具有快速启动能力;扩展Standby模式下则允许振荡器和异步定期器继续工作。2、产品特性•高性能、低功耗的8位AVR微解决器

•先进的RISC结构

•131条指令

•大多数指令执行时间为单个时钟周期

•32个8位通用工作寄存器

•全静态工作

•工作于16MHz时性能高达16MIPS

•只需两个时钟周期的硬件乘法器

•非易失性程序和数据存储器

•16K字节的系统内可编程Flash,擦写寿命:10,000次

•具有独立锁定位的可选Boot代码区,通过片上Boot程序实现系统内编程,真正的时读写操作

•512字节的EEPROM,擦写寿命:100,000次

•1K字节的片内SRAM

•可以对锁定位进行编程以实现用户程序的加密

•JTAG接口(与IEEE1149.1标准兼容)

符合JTAG标准的边界扫描功能

支持扩展的片内调试功能

通过JTAG接口实现对Flash、EEPROM、熔丝位和锁定位的编程3、外设特点

•两个具有独立预分频器和比较器功能的8位定期器/计数器

•一个具有预分频器、比较功能和捕获功能的16位定期器/计数器

•具有独立振荡器的实时计数器RTC

•四通道PWM

•8路10位ADC,8个单端通道,2个具有可编程增益(1x,10x,或200x)的差分通道

•面向字节的两线接口

•两个可编程的串行USART

•可工作于主机/从机模式的SPI串行接口

•具有独立片内振荡器的可编程看门狗定期器

•片内模拟比较器

•特殊的解决器特点

•上电复位以及可编程的掉电检测

•片内通过标定的RC振荡器

•片内/片外中断源

•6种睡眠模式:空闲模式、ADC噪声克制模式、省电模式、掉电模式、Standby模式以及扩展的Standby模式

•I/O和封装

•32个可编程的I/O口

•40引脚PDIP封装,44引脚TQFP封装,与44引脚MLF封装

•工作电压:

ATmega16L:2.7-5.5V

ATmega16:4.5-5.5V

•速度等级

0-8MHzATmega16L

0-16MHzATmega16

•ATmega16L在1MHz,3V,25°C时的功耗

正常模式:1.1mA

空闲模式:0.35mA

掉电模式:<1μA2.3.2ATmega16单片机引脚配置及说明图2.1ATmega16引脚图•VCC:数字电路的电源•GND:地•端口A(PA7..PA0):端口A做为A/D转换器的模拟输入端。端口A为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸取大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟尚未起振,端口A处在高阻状态。•端口B(PB7..PB0):端口B为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸取大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟尚未起振,端口B处在高阻状态。•端口C(PC7..PC0):端口C为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸取大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟尚未起振,端口C处在高阻状态。假如JTAG接口使能,即使复位出现引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻被激活。•端口D(PD7..PD0):端口D为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸取大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟尚未起振,端口D处在高阻状态。•RESET:复位输入引脚。连续时间超过最小门限时间的低电平将引起系统复位。门限时间见P36Table15。连续时间小于门限间的脉冲不能保证可靠复位。•XTAL1:反向振荡放大器与片内时钟操作电路的输入端。•XTAL2:反向振荡放大器的输出端。•AVCC:是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与VCC连接。•AREFA/D:的模拟基准输入引脚。2.3.3CPUATMEGA16AVR内核的结构。CPU的重要任务是保证程序的对的执行。因此它必须可以访问存储器、执行运算、控制外设以及解决中断。为了获得最高的性能以及并行性,AVR采用了Harvard结构,具有独立的数据和程序总线。程序存储器里的指令通过一级流水线运营。CPU在执行一条指令的同时读取下一条指令(在本文称为预取)。这个概念实现了指令的单时钟周期运营。程序存储器是可以在线编程的FLASH。快速访问寄存器文献涉及32个8位通用工作寄存器,访问时间为一个时钟周期。从而实现了单时钟周期的ALU操作。在典型的ALU操作中,两个位于寄存器文献中的操作数同时被访问,然后执行运算,结果再被送回到寄存器文献。整个过程仅需一个时钟周期。

寄存器文献里有6个寄存器可以用作3个16位的间接寻址寄存器指针以寻址数据空间,实现高效的地址运算。其中一个指针还可以作为程序存储器查询表的地址指针。这些附加的功能寄存器即为16位的X、Y、Z寄存器。

ALU支持寄存器之间以及寄存器和常数之间的算术和逻辑运算。ALU也可以执行单寄存器操作。运算完毕之后状态寄存器的内容得到更新以反映操作结果。程序流程通过有/无条件的跳转指令和调用指令来控制,从而直接寻址整个地址空间。大多数指令长度为16位,亦即每个程序存储器地址都包含一条16位或32位的指令。

程序存储器空间分为两个区:引导程序区(Boot区)和应用程序区。这两个区都有专门的锁定位以实现读和读/写保护。用于写应用程序区的SPM指令必须位于引导程序区。

在中断和调用子程序时返回地址的程序计数器(PC)保存于堆栈之中。堆栈位于通用数据SRAM,因此其深度仅受限于SRAM的大小。在复位例程里用户一方面要初始化堆栈指针SP。这个指针位于I/O空间,可以进行读写访问。数据SRAM可以通过5种不同的寻址模式进行访问。

AVR存储器空间为线性的平面结构。

AVR有一个灵活的中断模块。控制寄存器位于I/O空间。状态寄存器里有全局中断使能位。每个中断在中断向量表里都有独立的中断向量。各个中断的优先级与其在中断向量表的位置有关,中断向量地址越低,优先级越高。

I/O存储器空间包含64个可以直接寻址的地址,作为CPU外设的控制寄存器、SPI,以及其他I/O功能。映射到数据空间即为寄存器文献之后的地址0x20-0x5F。2.3.4存储器ATmega16的存储器。AVR结构具有两个重要的存储器空间:数据存储器空间和程序存储器空间。此外,ATmega16尚有EEPROM存储器以保存数据。这三个存储器空间都为线性的平面结构。1、系统内可编程的Flash程序存储器ATmega16具有16K字节的在线编程Flash,用于存放程序指令代码。由于所有的AVR指令为16位或32位,故而Flash组织成8K16位的形式。用户程序的安全性要根据Flash程序存储器的两个区:引导(Boot)程序区和应用程序区,分开来考虑。Flash存储器至少可以擦写10,000次。ATmega16的程序计数器(PC)为13位,因此可以寻址8K字的程序存储器空间。2、SRAM数据存储器图2.2给出了ATmega16SRAM空间的组织结构。前1120个数据存储器涉及了寄存器文献、I/O存储器及内部数据SRAM。起始的96个地址为寄存器文献与64个I/O存储器,接着是1024字节的内部数据SRAM。数据存储器的寻址方式分为5种:直接寻址、带偏移量的间接寻址、间接寻址、带预减量的间接寻址和带后增量的间接寻址。寄存器文献中的寄存器R26到R31为间接寻址的指针寄存器。直接寻址范围可达整个数据区。

图2.2ATmega16SRAM空间的组织结构

带偏移量的间接寻址模式可以寻址到由寄存器Y和Z给定的基址附近的63个地址。在自动预减和后加的间接寻址模式中,寄存器X、Y和Z自动增长或减少。ATmega16的所有32个通用寄存器、64个I/O寄存器及1024个字节的内部数据SRAM可以通过所有上述的寻址模式进行访问。3、EEPROM数据存储器ATmega16包含512字节的EEPROM数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。EEPROM的寿命至少为100,000次擦除周期。EEPROM的访问由地址寄存器、数据寄存器和控制寄存器决定。I/O口介绍作为通用数字I/O使用时,所有AVRI/O端口都具有真正的读-修改-写功能。这意味着用SBI或CBI指令改变某些管脚的方向(或者是端口电平、严禁/使能上拉电阻)时不会无意地改变其他管脚的方向(或者是端口电平、严禁/使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸取大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。并有保护二极管与VCC和地相连,如图2.3所示。图2.3I/O引脚等效原理图1、I/O引脚等效原理图每个端口都有三个I/O存储器地址:数据寄存器–PORTx、数据方向寄存器–DDRx和端口输入引脚–PINx。数据寄存器和数据方向寄存器为读/写寄存器,而端口输入引脚为只读寄存器。但是需要特别注意的是,对PINx寄存器某一位写入逻辑“1”将导致数据寄存器相应位的数据发生“0”与“1”的交替变化。当寄存器MCUCR的上拉严禁位PUD置位时所有端口引脚的上拉电阻都被严禁。2、端口配置引脚通用数字I/O的端口引脚是与第二功能复用的。使能某些引脚的第二功能不会影响其他属于同一端口的引脚用于通用数字I/O目的。每个端口引脚都具有三个寄存器位:DDxn、PORTxn和PINxn,DDxn位于DDRx寄存器,PORTxn位于PORTx寄存器,PINxn位于PINx寄存器。DDxn用来选择引脚的方向。DDxn为“1”时,Pxn配置为输出,否则配置为输入。引脚配置为输入时,若PORTxn为“1”,上拉电阻将使能。假如需要关闭这个上拉电阻,可以将PORTxn清零,或者将这个引脚配置为输出。复位时各引脚为高阻态,即使此时并没有时钟在运营。当引脚配置为输出时,若PORTxn为“1”,引脚输出高电平“1”,否则输出低电平“0”。在(高阻态)三态({DDxn,PORTxn}=0b00)输出高电平({DDxn,PORTxn}=0b11)两种状态之间进行切换时,上拉电阻使能({DDxn,PORTxn}=0b01)或输出低电平({DDxn,PORTxn}=0b10)这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受的,由于高阻环境不在意是强高电平输出还是上拉输出。假如使用情况不是这样子,可以通过置位SFIOR寄存器的PUD来严禁所有端口的上拉电阻。在上拉输入和输出低电平之间切换也有同样的问题。用户必须选择高阻态({DDxn,PORTxn}=0b00)或输出高电平({DDxn,PORTxn}=0b10)作为中间环节。3、端口的第二功能(1)端口A的第二功能端口A作为ADC模拟输入的第二功能示于表2.1。假如端口A的部分引脚置为输出,当转换时不能切换,否则会影响转换结果。表2.1端口A的第二功能端口引脚第二功能PA7ADC7(ADC输入通道7)PA6ADC6(ADC输入通道6)PA5ADC5(ADC输入通道5)PA4ADC4(ADC输入通道4)PA3ADC3(ADC输入通道3)PA2ADC2(ADC输入通道2)PA1ADC1(ADC输入通道1)PA0ADC0(ADC输入通道0)(2)端口B的第二功能引脚配置如下:•SCK–端口B,Bit7SCK:SPI通道的主机时钟输出,从机时钟输入端口。工作于从机模式时,不管DDB7设立如何,这个引脚都将设立为输入。工作于主机模式时,这个引脚的数据方向由DDB7控制。设立为输入后,上拉电阻由PORTB7控制。•MISO–端口B,Bit6MISO:SPI通道的主机数据输入,从机数据输出端口。工作于主机模式时,不管DDB6设立如何,这个引脚都将设立为输入。工作于从机模式时,这个引脚的数据方向由DDB6控制。设立为输入后,上拉电阻由PORTB6控制。表2.2端口B的第二功能端口引脚第二功能PB7SCK(SPI总线的串行时钟)PB6MISO(SPI总线的主机输入/从机输出信号)PB5MOSI(SPI总线的主机输出/从机输入信号)PB4SS(SPI从机选择引脚)PB3AIN1(模拟比较负输入)OC0(T/C0输出比较匹配输出)PB2AIN0(模拟比较正输入)INT2(外部中断2输入)PB1T1(T/C1外部计数器输入)PB0T0(T/C0外部计数器输入)XCK(USART外部时钟输入/输出)•MOSI–端口B,Bit5MOSI:SPI通道的主机数据输出,从机数据输入端口。工作于从机模式时,不管DDB5设立如何,这个引脚都将设立为输入。当工作于主机模式时,这个引脚的数据方向由DDB5控制。设立为输入后,上拉电阻由PORTB5控制。•SS–端口B,Bit4SS:从机选择输入。工作于从机模式时,不管DDB4设立如何,这个引脚都将设立为输入。当此引脚为低时SPI被激活。工作于主机模式时,这个引脚的数据方向由DDB4控制。设立为输入后,上拉电阻由PORTB4控制。•AIN1/OC0–端口B,Bit3AIN1,模拟比较负输入。配置该引脚为输入时,切断内部上拉电阻,防止数字端口功能与模拟比较器功能相冲突。OC0,输出比较匹配输出:PB3引脚可作为T/C0比较匹配的外部输出。实现该功能时,PB3引脚必须配置为输出(设DDB3为1)。在PWM模式的定期功能中,OC0引脚作为输出。•AIN0/INT2–端口B,Bit2AIN0,模拟比较正输入。配置该引脚为输入时,切断内部上拉电阻,防止数字端口功能与模拟比较器功能相冲突。INT2,外部中断源2:PB2引脚作为MCU的外部中断源。•T1–端口B,Bit1T1,T/C1计数器源。•T0/XCK–端口B,Bit0T0,T/C0计数器源。XCK,USART外部时钟。数据方向寄存器(DDB0)控制时钟为输出(DDB0置位)还是输入(DDB0清零)。只有当USART工作在同步模式时,XCK引脚激活。(3)端口C的第二功能端口C的第二功能如表2.3。若JTAG接口使能,即使出现复位,引脚PC5(TDI)、PC3(TMS)与PC2(TCK)的上拉电阻将被激活。表2.3端口C的第二功能端口引脚第二功能PC7TOSC2(定期振荡器引脚2)PC6TOSC1(定期振荡器引脚1)PC5TDI(JTAG测试数据输入)PC4TDO(JTAG测试数据输出)PC3TMS(JTAG测试模式选择)PC2TCK(JTAG测试时钟)PC1SDA(两线串行总线数据输入/输出线)PC0SCL(两线串行总线时钟线)第二功能配置如下:•TOSC2–端口C,Bit7TOSC2,定期振荡器引脚2:当寄存器ASSR的AS2位置1,使能T/C2的异步时钟,引脚PC7与端口断开,成为振荡器放大器的反向输出。在这种模式下,晶体振荡器与该引脚相联,该引脚不能作为I/O引脚。•TOSC1–端口C,Bit6TOSC1,定期振荡器引脚1:当寄存器ASSR的AS2位置1,使能T/C2的异步时钟,引脚PC6与端口断开,成为振荡器放大器的反向输出。在这种模式下,晶体振荡器与该引脚相联,该引脚不能作为I/O引脚。•TDI–端口C,Bit5TDI,JTAG测试数据输入:串行输入数据移入指令寄存器或数据寄存器(扫描链)。当JTAG接口使能,该引脚不能作为I/O引脚。•TDO–端口C,Bit4TDO,JTAG测试数据输入:串行输入数据移入指令寄存器或数据寄存器(扫描链)。当JTAG接口使能,该引脚不能作为I/O引脚。TD0引脚在除TAP状态情况外为三态,进入移出数据状态。•TMS–端口C,Bit3TMS,JTAG测试模式选择:该引脚作为TAP控制器状态工具的定位。当JTAG接口使能,该引脚不能作为I/O引脚。•TCK–端口C,Bit2TCK,JTAG测试时钟:JTAG工作在同步模式下。当JTAG接口使能,该引脚不能作为I/O引脚。•SDA–端口C,Bit1SDA,两线串行接口数据:当寄存器TWCR的TWEN位置1使能两线串行接口,引脚PC1不与端口相联,且成为两线串行接口的串行数据I/O引脚。在该模式下,在引脚处使用窄带滤波器克制低于50ns的输入信号,且该引脚由斜率限制的开漏驱动器驱动。当该引脚使用两线串行接口,仍可由PORTC1位控制上拉。•SCL–端口C,Bit0SCL,两线串行接口时钟:当TWCR寄存器的TWEN位置1使能两线串行接口,引脚PC0未与端口连接,成为两线串行接口的串行时钟I/O引脚。在该模式下,在引脚处使用窄带滤波器克制低于50ns的输入信号,且该引脚由斜率限制的开漏驱动器驱动。当该引脚使用两线串行接口,仍可由PORTC0位控制上拉。(4)端口D的第二功能表2.4端口D的第二功能端口引脚第二功能PD7OC2(T/C2输出比较匹配输出)PD6ICP1(T/C1输入捕获引脚)PD5OC1A(T/C1输出比较A匹配输出)PD4OC1B(T/C1输出比较B匹配输出)PD3INT1(外部中断1的输入)PD2INT0(外部中断0的输入)PD1TXD(USART输出引脚)PD0RXD(USART输入引脚)第二功能配置如下:•OC2–端口D,Bit7OC2,T/C2输出比较匹配输出:PD7引脚作为T/C2输出比较外部输入。在该功能下引脚作为输出(DDD7置1)。在PWM模式的定期器功能中,OC2引脚作为输出。•ICP1–端口D,Bit6ICP1–输入捕获引脚:PD6作为T/C1的输入捕获引脚。•OC1A–端口D,Bit5OC1A,T/C2输出比较匹配A输出:PD5引脚作为T/C1输出比较A外部输入。在该功能下引脚作为输出(DDD5置1)。在PWM模式的定期器功能中,OC1A引脚作为输出。•OC1B–端口D,Bit4OC1B,T/C1输出比较匹配B输出:PD4引脚作为T/C1输出比较B外部输入。在该功能下引脚作为输出(DDD4置1)。在PWM模式的定期器功能中,OC1B引脚作为输出。•INT1–端口D,Bit3INT1,外部中断1。PD3引脚作为MCU的外部中断源。•INT0–端口D,Bit2INT0,外部中断0。PD2引脚作为MCU的外部中断源。•TXD–端口D,Bit1TXD是USART的数据发送引脚。当使能了USART的发送器后,这个引脚被强制设立为输出,此时DDD1不起作用。•RXD–端口D,Bit0RXD是USART的数据接受引脚。当使能了USART的接受器后,这个引脚被强制设立为输出,此时DDD0不起作用。但是PORTD0仍然控制上拉电阻2.3.6复位电路复位时所有的I/O寄存器都被设立为初始值,程序从复位向量处开始执行。复位向量处的指令必须是绝对跳转JMP指令,以使程序跳转到复位解决例程。假如程序永远不运用中断功能,中断向量可以由一般的程序代码所覆盖。这个解决方法同样合用于当复位向量位于应用程序区,中断向量位于Boot区—或者反过来—的时候。图2.4为复位逻辑的电路图。复位源有效时I/O端口立即复位为初始值。此时不规定任何时钟处在正常运营状态。所有的复位信号消失之后,芯片内部的一个延迟计数器被激活,将内部复位的时间延长。这种解决方式使得在MCU正常工作之前有一定的时间让电源达成稳定的电平。延迟计数器的溢出时间通过熔丝位SUT与CKSEL设定。图2.4复位逻辑的电路图ATmega16有5个复位源:(1)上电复位。电源电压低于上电复位门限VPOT时,MCU复位。(2)外部复位。引脚RESET上的低电平连续时间大于最小脉冲宽度时MCU复位。(3)看门狗复位。看门狗使能并且看门狗定期器溢出时复位发生。(4)掉电检测复位。掉电检测复位功能使能,且电源电压低于掉电检测复位门限VBOT时MCU即复位。(5)JTAGAVR复位。复位寄存器为1时MCU复位。2.3.7时钟电路AVR的重要时钟系统及其分布。这些时钟并不需要同时工作。为了减少功耗,可以通过使用不同的睡眠模式来严禁无需工作的模块的时钟。时钟系统如图2.5:1、时钟分布图2.5时钟分布(1)CPU时钟-CPU时钟与操作AVR内核的子系统相连,如通用寄存器文献、状态寄存器及保存堆栈指针的数据存储器。终止CPU时钟将使内核停止工作和计算。(2)I/O时钟-I/O时钟用于重要的I/O模块,如定期器/计数器、SPI和USART。I/O时钟还用于外部中断模块。要注意的是有些外部中断由异步逻辑检测,因此即使I/O时钟停止了这些中断仍然可以得到监控。此外,USI模块的起始条件检测在没有I/O的情况下也是异步实现的,使得这个功能在任何睡眠模式下都可以正常工作。(3)Flash时钟-FLASH时钟控制Flash接口的操作。此时钟通常与CPU时钟同时挂起或激活。(4)异步定期器时钟-ASY异步定期器时钟允许异步定期器/计数器与LCD控制器直接由外部32kHz时钟晶体驱动。使得此定期器/计数器即使在睡眠模式下仍然可认为系统提供一个实时时钟。(5)ADC时钟-ADC具有专门的时钟。这样可以在ADC工作的时候停止CPU和I/O时钟以减少数字电路产生的噪声,从而提高ADC转换精度。2、时钟源ATmega16芯片有如下几种通过Flash熔丝位进行选择的时钟源。时钟输入到AVR时钟发生器,再分派到相应的模块。本设计使用晶体振荡器:XTAL1与XTAL2分别为用作片内振荡器的反向放大器的输入和输出,如图2.6所示,这个振荡器可以使用石英晶体,也可以使用陶瓷谐振器。熔丝位CKOPT用来选择这两种放大器模式的其中之一。当CKOPT被编程时振荡器在输出引脚产生满幅度的振荡。这种模式适合于噪声环境,以及需要通过XTAL2驱动第二个时钟缓冲器的情况。并且这种模式的频率范围比较宽。当保持CKOPT为未编程状态时,振荡器的输出信号幅度比较小。表2.5时钟源选择器件时钟选择CKSEL3.0外部晶体/陶瓷振荡器1111-1010外部低频晶振1001外部RC振荡器1000-0101标定的内部RC振荡器0100-0001外部时钟0000其优点是大大减少了功耗,但是频率范围比较窄,并且不能驱动其他时钟缓冲器。晶体振荡器连接图图2.6晶体振荡器连接图3、振荡器工作模式振荡器可以工作于三种不同的模式,每一种都有一个优化的频率范围。工作模式通过熔丝位CKSEL3..1来选择,如表2.6所示。表2.6晶体振荡器工作模式CKOPTCKSEL3..1频率范围(MHz)使用晶体时电容C1和C2的推荐范围(pF)1101(1)0.4-0.9–11100.9-30-8.012-220101,110,1111.012-223直流电机控制系统硬件设计ATmega16直流电机控制系统硬件设计重要涉及以下几个方面的内容:接口电路,LMD18200驱动电路,串行通信接口电路,时钟电路,系统复位电路设计。3.1总体电路设计直流电机控制系统重要是由上位机发出指令,通过串行通信电路将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。再传送至单片机上,由单片机发出控制脉冲,控制驱动芯片LMD18200中PWM电路的占空比,从而控制电机正反转以及起停等动作。如附录C。3.2时钟电路在ATmega16芯片内部有一个高增益方向放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路,如图3.1所示。图3.1时钟电路设计系统所采用的晶体振荡器为12MHz(11.059MHz)足够可以与微调电容起振,满足系统所需的采样频率。3.3系统复位电路任何单片机在工作之前都要进行复位,复位对单片机来说就象计算机的重新启动,是在做一些准备工作。一般来说,只要将AVR单片机的RESET引脚上加负脉冲就完毕了复位。复位都是通过复位电路来完毕的,复位电路的实现有很多种方法,但是从功能上一般分为两种:一种是电源复位,即外部电路的复位电路在系统上电之后自动进行复位;另一种方法是在复位电路按键设计开关,通过按键开关出发复位电平,从而控制单片机的复位。系统才用的是通过按键产生脉冲进行复位的按键复位电路,如图3.2。图3.2按键复位电路复位之后单片机对所有的内部寄存器置为初始默认值,单片机的程序指针指向程序存储器的首地址,也就是程序存储器的起始地址,使得单片机从头开始执行程序。3.4串行通信接口电路设计Max232产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2驱动器、2接受器和一个电压发生器电路提供TIA/EIA-232-F电平。该器件符合TIA/EIA-232-F标准,每一个接受器将TIA/EIA-232-F电平转换成5-VTTL/CMOS电平。每一个发送器将TTL/CMOS电平转换成TIA/EIA-232-F电平。3.4.1重要特点1、单5V电源工作2、LinBiCMOSTM工艺技术3、两个驱动器及两个接受器4、±30V输入电平5、低电源电流:典型值是8mA6、符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.287、ESD保护大于MIL-STD-883(方法3015)标准的2023V3.4.2内部结构第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供应RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。3.4.3Max232引脚图图3.3Max232引脚图3.4.4Max232电路设计本设计使用MAXIM公司的Max232来进行单片机TTL电平和标准DB9电平的转换。ATmega16单片机和上位计算机之间的串行通信电路如图3.4。图3.4Max232电路图3.5驱动电路3.5.1LMD18200芯片介绍LMD18200是美国国家半导体公司(NS)推出的专用于直流电动机驱动的H桥组件。同一芯片上集成有CMOS控制电路和DMOS功率器件,运用它可以与主解决器、电机和增量型编码器构成一个完整的运动控制系统。LMD18200广泛应用于打印机、机器人和各种自动化控制领域。本文介绍了LMD18200芯片的结构、原理及其典型应用。1、重要性能•峰值输出电流高达6A,连续输出电流达3A;

•工作电压高达55V;

•LowRDS(ON)typically0.3Wperswitch;

•TTL/CMOS兼容电平的输入;

•无“shoot-through”电流;

•具有温度报警和过热与短路保护功能;

•芯片结温达145℃,结温达170℃时,芯片关断;

•2、典型应用•驱动直流电机、步机电机

•伺服机构系统位置与转速

•应用于机器人控制系统

•应用于数字控制系统

•应用于电脑打印机与绘图仪3、内部结构和引脚说明LMD18200外形结构如图3.5所示,内部电路框图3.6如图所示。它有11个引脚,采用TO-220和双列直插式封装。图3.5LMD18200外形结构图图3.6内部电路框图3.5.2各引脚的功能及原理表3.1LMD18200引脚功能表引脚名称功能描述1、11桥臂1,2的自举输入电容连接端在脚1与脚2、脚10与脚11之间应接入10uF的自举电容2、10H桥输出端

3方向输入端转向时,输出驱动电流方向见表1。该脚控制输出1与输出2(脚2、10)之间电流的方向,从而控制马达旋转的方向。4刹车输入端刹车时,输出驱动电流方向见表1。通过该端将马达绕组短路而使其刹车。刹车时,将该脚置逻辑高电平,并将PWM信号输入端(脚5)置逻辑高电平,3脚的逻辑状态决定于短路马达所用的器件。3脚为逻辑高电平时,H桥中2个高端晶体管导通;3脚呈逻辑低电平时,H桥中2个低端晶体管导通。脚4置逻辑高电平、脚5置逻辑低电平时,H桥中所有晶体管关断,此时,每个输出端只有很小的偏流(1.5mA)。5PWM信号输入端PWM信号与驱动电流方向的关系见表1。该端与3脚(方向输入)如何使用,决定于PWM信号类型。6、7电源正端与负端

8电流取样输出端提供电流取样信号,典型值为377µA/A。9温度报警输出温度报警输出,提供温度报警信号。芯片结温达145℃时,该端变为低电平;结温达170℃时,芯片关断。表3.2LMD18200逻辑真值表PWM转向刹车实际输出驱动电流电机工作状态HHL流出1、流入2正转HLL流入1、流出2反转L×L流出1、流出2停止HHH流出1、流出2停止HLH流入1、流入2停止LXHNONE

LMD18200工作原理:内部集成了四个DMOS管,组成一个标准的H型驱动桥。通过充电泵电路为上桥臂的2个开关管提供栅极控制电压,充电泵电路由一个300kHz左右的工作频率。可在引脚1、11外接电容形成第二个充电泵电路,外接电容越大,向开关管栅极输入的电容充电速度越快,电压上升的时间越短,工作频率可以更高。引脚2、10接直流电机电枢,正转时电流的方向应当从引脚步到引脚10;反转时电流的方向应当从引脚10到引脚2。电流检测输出引脚8可以接一个对地电阻,通过电阻来输出过流情况。内部保护电路设立的过电流阈值为10A,当超过该值时会自动封锁输出,并周期性的自动恢复输出。假如过电流连续时间较长,过热保护将关闭整个输出。过热信号还可通过引脚9输出,当结温达成145度时引脚9有输出信号。3.5.3驱动电路设计图3.7驱动电路图LMD18200提供双极性驱动方式和单极性驱动方式。双极性驱动是指在一个PWM周期里,电动机电枢的电压极性呈正负变化。双极性可逆系统虽然有低速运营平稳性的优点,但也存在着电流波动大,功率损耗较大的缺陷,特别是必须增长死区来避免开关管直通的危险,限制了开关频率的提高,因此只用于中小功率直流电动机的控制。本文中将介绍单极性可逆驱动方式。单极性驱动方式是指在一个PWM周期内,电动机电枢只承受单极性的电压。图3.8单极性驱动方式下的抱负波形3.6光电耦合电路电力电子器件的驱动电路是电力电子主电路与控制电路之间的接口,是电力电子控制系统的重要环节,对整个装置的性能有很大的影响。在驱动电路中还要提供控制电路与主电路之间的电气隔离环节,这也就是这节介绍的光电耦合电路。一般采用光隔离或磁隔离。系统采用光耦合器来完毕。光耦合器由发光二极管和光敏晶体管组成,封装在一个外壳内。其类型有普通,高速和高传输比三种,内部电路和基本接法如图3.9。图3.9光耦合器系统采用高速光电耦合器K1010来完毕控制电路与主电路之间的电气隔离。K1010具有良好的光电隔离功能,其响应时间小于1.5μs。系统光电隔离电路如图3.10所示。图3.10系统光电隔离电路4软件设计直流电机驱动器的软件涉及单片机程序,涉及:初始化程序,主程序,中断及转速子程序,串行数据传输程序,ICCAVR开发,及AVRStudio仿真。4.1初始化程序设计4.1.1I/O初始化作为通用数字I/O使用时,所有AVRI/O端口都具有真正的读-修改-写功能。ATmega16单片机上共有三组端口:端口A,端口B,端口C。系统采用PB3和PC1作为I/O端口。其中PC1为普通I/O端口,而PB3又为OC0(T/C0输出比较匹配输出)。OC0,输出比较匹配输出:PB3引脚可作为T/C0比较匹配的外部输出。实现该功能时,PB3引脚必须配置为输出(设DDB3为1)。在PWM模式的定期功能中,OC0引脚作为输出。每个端口引脚都具有三个寄存器位:DDxn、PORTxn和PINxn。DDxn位于DDRx寄存器,PORTxn位于PORTx寄存器,PINxn位于PINx寄存器。下面就是对系统所采用的端口B和端口C进行初始化:PORTB=(1<<PB3);DDRB=(1<<DDB3)初始化端口B的PB3引脚,PB3引脚重要完毕PWM脉冲输出,将PB3口定义方向为输出。PORTC=(1<<PC1);DDRC=(1<<DDC1)初始化端口C的PC1引脚,PC1引脚重要完毕对直流电机转动方向,将PC1口定义方向为输出。4.1.2定期器初始化T/C(TCNT0)和输出比较寄存器(OCR0)为8位寄存器。中断请求(图中简写为Int.Req.)信号在定期器中断标志寄存器TIFR都有反映。所有中断都可以通过定期器中断屏蔽寄存器TIMSK单独进行屏蔽。图中没有给出TIFR和TIMSK。T/C可以通过预分频器由内部时钟源驱动,或者是通过T0引脚的外部时钟源来驱动。时钟选择逻辑模块控制使用哪一个时钟源与什么边沿来增长(或减少)T/C的数值。假如没有选择时钟源T/C就不工作。时钟选择模块的输出定义为定期器时钟clkT0。双缓冲的输出比较寄存器OCR0一直与T/C的数值进行比较。比较的结果可用来产生PWM波,或在输出比较引脚OC0上产生变化频率的输出。比较匹配事件还将置位比较标志OCF0。此标志可以用来产生输出比较中断请求。本系统采用定期器0进行控制,现在对定期器0进行初始化:OCR0=0XFF;//定期器0设初值。TCCR0=(1<<WGM00)|(1<<COM01)|(1<<COM00)|(1<<CS01);初始化定期器0的寄存器。4.1.3串口初始化通用同步和异步串行接受器和转发器(USART)是一个高度灵活的串行通讯设备。重要特点为:•全双工操作(独立的串行接受和发送寄存器)•异步或同步操作•主机或从机提供时钟的同步操作•高精度的波特率发生器•支持5,6,7,8或9个数据位和1个或2个停止位•硬件支持的奇偶校验操作•数据过速检测•帧错误检测•噪声滤波,涉及错误的起始位检测,以及数字低通滤波器•三个独立的中断:发送结束中断,发送数据寄存器空中断,以及接受结束中断•多解决器通讯模式•倍速异步通讯模式将USART分为了三个重要部分:时钟发生器,发送器和接受器。控制寄存器由三个单元共享。时钟发生器包含同步逻辑,通过它将波特率发生器及为从机同步操作所使用的外部输入时钟同步起来。XCK(发送器时钟)引脚只用于同步传输模式。发送器涉及一个写缓冲器,串行移位寄存器,奇偶发生器以及解决不同的帧格式所需的控制逻辑。写缓冲器可以保持连续发送数据而不会在数据帧之间引入延迟。由于接受器具有时钟和数据恢复单元,它是USART模块中最复杂的。恢复单元用于异步数据的接受。除了恢复单元,接受器还涉及奇偶校验,控制逻辑,移位寄存器和一个两级接受缓冲器UDR。接受器支持与发送器相同的帧格式,并且可以检测帧错误,数据过速和奇偶校验错误。时钟产生逻辑为发送器和接受器产生基础时钟。USART支持4种模式的时钟:正常的异步模式,倍速的异步模式,主机同步模式,以及从机同步模式。USART控制位UMSEL和状态寄存器C(UCSRC)用于选择异步模式和同步模式。倍速模式(只合用于异步模式)受控于UCSRA寄存器的U2X。使用同步模式(UMSEL=1)时,XCK的数据方向寄存器(DDR_XCK)决定期钟源是由内部产生(主机模式)还是由外部生产(从机模式)。仅在同步模式下XCK有效。USART的波特率寄存器UBRR和降序计数器相连接,一起构成可编程的预分频器或波特率发生器。降序计数器对系统时钟计数,当其计数到零或UBRRL寄存器被写时,会自动装入UBRR寄存器的值。波特率的公式如下式:(4.1)串口采用UART,异步正常模式BAUD=2400,fosc=11.0592MHz,所以,UBRR=288。设立波特率:UBRRH=0X01;UBRRL=0x1F。UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//接受器与发送器使能,接受结束中断使能。UCSRB=(1<<RXEN)|(1<<TXEN);UCSRC=(1<<URSEL)||(3<<UCSZ0);//异步操作,严禁奇偶校验,设立帧格式:8个数据位,1个停止位。4.2主程序主程序完毕系统初始化,中断判断,数据检测及解决电机的PWM控制等工作。主程序结构图如4.1。程序开始,一方面初始化I/O端口:PC1,PB3。初始化串行通信口:RXD,TXD。初始化结束后,查询上位机是否有命令发送给单片机。假如有则检查数据是否有效;假如没有,则返回上一步重新查询。假如数据不能有效使用,则向上位机返回“命令错”重新检查数据。当检查数据有效时,程序自动调用转速控制子程序,等待中断,控制电机转速,方向等。图4.1主程序流程图代码如下://主程序开始main(void){unsignedchari=0;//systeminitializeasm("CLI"); //disableglableinterupt//WDT_off();//wathdogoffPORTIni();USART_Init(); //USARTinitializeTimer0_Init(); //Timer0initializeasm("SEI"); //enaableglableinterupt//while(1);OCR0=0X80;while(1){USART_Transmit(0XAA);USART_Transmit(0XBB);}}4.3中断及转速控制子程序直流电动机转速的控制方法可分为2类,即励磁控制法与电枢电压控制法。励磁控制法控制磁通,其控制功率虽然小,但低速时受到磁饱和的限制,高速时受到换向火花和换向器结构强度的限制;并且由于励磁线圈电感较大,动态响应较差。所以常用的控制方法是改变电枢端电压调速的电枢电压控制法。设直流电源电压为Ud,将电枢串联一个电阻R,接到电源Ud,则电枢两端的电压Ua为:=(3.1)显然,调节电阻R即可改变端电压,达成调速目的。但这种传统的调压调速方法,效率低。因此,随着电力电子技术的进步,发展了许多新的电枢电压控制方法。其中PWM(脉宽调制)是常用的一种调速方法。其基本原理如图4.2所示,设加在电机电枢两端的矩形波的幅值电压为Ud,则电机电枢两端电压的平均值为:图4.2PWM波形图(3.2)称为占空比。通过改变的值,达成调压的目的。由于0≤≤1,Ua值的范围是-Ud~+Ud,因而电机可以在正、反2个方向调速运转。本设计是通过LMD18200为驱动电路,由上位机输出控制命令控制电机速度与转速变化。转速控制子程序流程图如图4.3,中断程序流程图如图4.4。图4.3转速子程序流程图图4.4中断流程图中断及转速程序://串口接受中断函数//中断定义:USART,Rx结束//中断源:USART,RXCvoidUART_isr(void){unsignedchari;i=UDR;switch(i) {caseforehead: PORTC=PORTC|(1<<PC1); break; caserollback: PORTC=PORTC&(!(1<<PC1)); break; casespeed_high: OCR0=0X50; break; casespeed_mid: OCR0=0X80; break; casespeed_low: OCR0=0XA0; break; casespeed_zero: OCR0=0XFF; break; default: break; }}4.4串行数据传输程序单片机与上位计算机之间采用Max232的串行数据传输方式。单片机采用中断方式接受数据,而发送数据则采用查询方式。串行通信程序:voidUSART_Init(void){UBRRH=0X01;UBRRL=0x1F;UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE);//接受器与发送器使能,接受结束中断使能UCSRB=(1<<RXEN)|(1<<TXEN);UCSRC=(1<<URSEL)||(3<<UCSZ0);//异步操作,严禁奇偶校验,设立帧格式:8个数据位,1个停止位4.5ICCAVR4.5.1开发环境ICCAVR介绍ImageCraft公司开发的ICCAVR是使用符合ANSI标准的C语言来开发AVR系列单片机一种开发工具。ICCAVR是一个综合了编辑器,工程管理器和C编译器的集成开发环境(IntegratedDevelopmentEnvironment,IDE)。其可在WINDOS9x/NT/XP下工作。ICCAVR采用工程项目管理方式,将源文献所有组织到工程之中。文献的编辑和工程的构筑也在这个环境中完毕。编译错误显示在状态窗口中,并且当用鼠标单击编译错误时,光标会自动跳转到编辑窗口中一起错误的那一行。工程管理器还能直接产生可以直接使用的IntelHEX格式文献。IntelHEX格式文献可被大多数的编程器所支持,用于下载程序到芯片中去。ICCAVR是一个32位的程序,支持长文献名。4.5.2开发及编译打开软件,建立工程SYY.prj,将其保存在目的文献夹。然后右键单击SYY进行工程设立,如图4.5。图4.5CompilerOptions窗口建立一个新的文献SYY.C,保存在目的文献夹SYY2。然后将其添加到工程SYY中,如图4.6。图4.6工程窗口然后对文献进行编译,系统会自动生成SYY.HEX文献。4.6AVRStudio仿真AVRJTAGICE是一款与ATMEL公司的JTAGICE相兼容的低价位的AVRJTAG接口是具有4线测试存取通道(TAP)的控制器,完全符合IEEE1149.1规格规定。Atmel公司的AVR器件扩展了它的一些功能,涉及可以对目的芯片进行实时在线仿真。AVROCD在芯片调试协议使用户对AVR单片机的内部资源可以进行完全的实时监控。4.6.1仿真器的特点本仿真器的特点:1、同时完全支持AVRStudio4.XX和IARSystem。2、支持所有具有JTAG接口的AVR系列单片机。3、完全真实的实现AVR单片机的所有的电性能。4、可以完全实现片内的数字或模拟功能。5、可以在程序执行过程中实现单步(step)、连续、断点、变量具有数据或程序空间断点。6、支持汇编和高级语言(C,C++)开发。7、可以对Flash、EEPROM、熔丝位、加密位进行编程。8、支持仿真电压2.3~6V。9、使用原厂AVRStudio的仿真监控程序。当有新版本时,能自动检测并自动升级,保证你的仿真器是最新版。10、支持芯片列表:AT90CAN128,ATmega128,ATmega128L,ATmega16,ATmega162,ATmega162V,ATmega165,ATmega165V,ATmega169,ATmega169V,ATmega16L,ATmega32,ATmega323,ATmega323L,ATmega32L,ATmega64,ATmega64L。4.6.2连接JTAGICE在开始使用AVRStudio前,应将目的板、JTAGICE和PC机先连接起来。为保证AVRStudio的对的自检,在开始使用AVRStudio前应当先进行连接。1、将JTAGICE连接到PC机上JTAGICE使用标准的RS-232口。将JTAGICE的串口线连接到PC机的一个空闲COM端口。AVRStudio将通过COM端口自动检测端口上存在的JTAGICE仿真器。假如有其它程序占用COM端口(例如,串口调试精灵,超级终端等),在启动AVRStudio前应先关闭这些程序。假如其它资源已经控制

温馨提示

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

评论

0/150

提交评论