电子大赛本科组D题的论文运用单片机制作四位半数字电压表.docx
《电子大赛本科组D题的论文运用单片机制作四位半数字电压表.docx》由会员分享,可在线阅读,更多相关《电子大赛本科组D题的论文运用单片机制作四位半数字电压表.docx(24页珍藏版)》请在冰点文库上搜索。
电子大赛本科组D题的论文运用单片机制作四位半数字电压表
电子大赛本科组D题的论文,不足之处还请各位高手来指正!
本科组(D题)数字电压表
【摘 要】
本设计是基于ATmega16单片机开发平台和自动控制原理的基础上实现的一种高精度、智能化的数字电压表系统。
该系统采用ATmega16单片机作为控制核心,以12位的A/D转换MAX187为数据采样系统,实现被测电压的高精度数据采样;使用系列比较器检测输入电压的范围,并通过继电器阵列实现了输入量程的全自动转换;同时具有显示模式的按键切换、LCD液晶显示等显著优点。
系统具有人性化的交互界面,硬件配置合理,控制方案优化,完全满足题目的基本要求。
【关键字】全自动量程转换 电压检测 MAX187 ATmega16 LCD显示
DigitalVoltmeter
Summary:
ThedesignisbasedonATmega16andautomationdevelopmentplatformbasedontheprincipleofachievingahighaccuracyandintelligentdigitalvoltagemetersystem.ThesystemusesATmega16coreasacontrol,12totheMAX187Dconversionfordatasamplingsystem,themeasuredvoltageandhigh-precisiondatasampling;Seriescomparisonwiththeuseofdetectionoftheinputvoltagerange,andthroughRelayarrayofinputrangeofautomaticconversion;thesametimeitisthedisplaymodeswitchbutton,LCDdisplaysignificantadvantages.Humanizedsystemofinterface,hardwareconfigurationreasonablecontrolprogramoptimization,thesubjectcompletelymeetthebasicrequirements.
Keywords:
Disney-rangeconversion,voltagedetection,MAX187,ATmegal16,LCDDisplay.
目 录
一、方案设计与论证1
1.试题分析1
2.系统控制方案1
3.各模块方案2
1)单片机选择2
2)A/D采样系统3
3)自动量程切换3
4)电压检测3
5)显示部分3
二、理论分析与电路设计4
1.系统总体设计与框图4
2.实际电路图4
2.1单片机系统4
2.2AD转换电路6
2.3信号调理模块6
2.4继电器模块9
2.5按键与LCD显示电路设计10
3.信号调理总体设计电路图10
三、软件设计与流程11
1.系统软件介绍11
2.软件程序流程图11
四、实验测试与结果分析12
五、参考文献13
六、附录13
数字电压表
一、方案设计与论证
1.试题分析
根据题目要求,系统设计需要基于自动控制原理,实现电压量程的自动切换、数据采样、电压显示等功能。
主要来说,系统由信号调理电路、A/D转换电路、按键输入电路、单片机控制系统、LCD显示系统等几个模块组成。
由于本设计属于高精度实时监测控制系统,因此各模块必须具有高精度、低噪声、可靠性强等诸多性能要求。
2.系统控制方案
『方案一』仅采用CPLD作为控制核心部件的方案
选用一片CPLD作为系统的核心部件,实现控制与处理的功能。
CPLD具有速度快、编程容易、资源丰富、开发周期短等优点,可利用VHDL语言进行编写开发。
但CPLD在控制上较单片机有较大的劣势。
同时,CPLD的处理速度非常快,而电压表的数据采样速度不可能太高,在这一点上,MCU就已经可以胜任了。
若采用该方案,必将在控制上遇到许许多多不必要增加的难题。
为此,我们不采用该种方案,进而提出了第二种设想。
图1.2.1以CPLD为核心部件的原理图
『方案二』仅采用单片机作为控制核心部件的方案
如图1.2.2所示:
我们采用单片机作为整个系统的核心,用其输入电压的范围、控制信号调理电路,实现输入量程的自动切换,以达到其既定的高精度性能指标。
充分分析我们的系统,其关键在于实现电压调理的自动量程控制,而在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。
而且,单片机其资源丰富、控制功能强大及可位寻址操作、价格低廉等,使得在实际制作过程中是一个较为理想的方案。
鉴于上述分析,在充分考虑到系统的需要及开发周期的情况下,我们决定选用第二种方案,即“仅采用单片机作为核心部件的方案”。
3.各模块方案
1)单片机选择
『方案一』选用51系列单片机。
51系列单片机目前得到广泛使用,如89S51它除了89C51所具有的优点外,还具有可在线编程,可在线仿真的功能,这让调试变得方便。
当与凌阳十六位单片机相比时,AT89S51八位单片机的价格便宜,再者编程方便。
编程技术及外围功能电路的配合使用都很成熟,这对于在网上查找相关资料和在图书馆查找相关资料时非常方便的。
但本系统是个多信息处理的复杂程序控制系统,需要占用大量的硬件资源,89S51单片机中的资源在此就显得相当紧张,将对整个系统的性能产生很大的影响。
『方案二』选用AVR系列单片机。
AVR单片机是高速单片机,硬件采用哈佛(Harward)结构,达到一个时钟周期可以执行一条指令,绝大部分指令都为单周期指令,而MSC-51要12个时钟周期执行一条指令;它支持程序的在系统编程ISP,开发门槛较低,性价比高;有丰富的外设,如RTC、WATCHDOG、AD转换器、PWM、UART接口等,部分型号还可以使用片内振荡器提供系统1~8MHz的系统时钟,使该类单片机无外加晶振器件即可工作;I/O口功能强、驱动能力大,I/O口有输入/输出、三态高阻输入,也可设定内部拉高电阻作输入端的功能,工业级产品,具有大电流(灌电流)10~40mA,可直接驱动可控硅SSR或继电器,节省了外围驱动器件;具有较大容量EEPROM,可擦写10万次的EEPROM,为掉电后数据的保存带来方便,来电后能记住掉电时的工作状态,EEPROM容量为64B~4KB;AVR是低功耗单片机,具有休眠省电功能(PowerDown)及闲置(Idle)低功耗功能。
一般耗电在1~2.5mA;AVR单片机内嵌高质量的Flash程序存储器,增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。
根据题目要求,综合考虑上述方案,我们选用ATMEGA16L单片机方案。
2)A/D采样系统
根据题目要求,要实现0-20V电压的精确测量,测量精度达到1mV,最高采样数据要达到20000,而12位的A/D为:
212=4096,15位的ADC为:
215=16384,16位的ADC为:
216=32768,所以必须采用16位ADC才能满足题目的要求,然而16位的ADC价格昂贵,实验室并不常见,加上系统开发时间的限制,我们只好采用实验室较为常见的12位AD。
『方案一』用1片12位并行AD集成芯片ADC574,12位并行DAC574集成芯片的转换速度快,而且精度高,但是其占用大量的单片机端口,外围电路较复杂。
『方案二』采用一片12位串行ADC芯片MAX187的优点是精度比较高,而且占用单片机的端口资源较少,外围电路也比较简单,缺点是转换速度不如并行AD转换快。
但是,数字电压表对数据采样的速度要求不高,而且串行DA的程序也容易实现,所以我们最终决定选择方案二来实现对输入电压的采样。
3)自动量程切换
智能数字电压表中关键技术之一为自动量程转换问题。
『方案一』用单片机控制多组继电器进行量程切换。
特点是简单实用,缺点是机械噪声大。
『方案二』采用光耦进行切换,其特点是控制部分隔离,无机械切换的噪声,可靠性好。
显然,采用方案二电气特性功能上更好,但是由于本系统中要使用多组电子开关,相对而言,采用继电器切换方式降低了设计的难度,因而更加有利于短期内的系统开发。
4)电压检测
为了实现对输入的微小信号或大信号进行精确测量,我们拟采用信号放大或衰减预处理电路,即需要对被测量电压的极性、范围进行判断和确定,从而将被测电压的基本信息传递给单片机系统。
『方案一』用多组比较器进行电压范围的分段检测,实现对输入电压的粗略测量。
『方案二』输入信号通过电阻分压后,由ADC转换成数字信号传递给单片机系统实现电压的粗略测量。
由于预处理电路只需要对输入电压进行范围的粗略测量,所以方案一完全能够满足实际要求,而方案二虽然测量结果较为精确,但电路复杂,还增加了编程难度。
故采用的方案一。
5)显示部分
『方案一』采用LED数码管动态扫描显示。
采用8位LED动态扫描显示的优点是能改善外部信号对显示的干扰,但单片机在工作时要求CPU不停地对LED更新,这将会降低系统的运行速度,且占用资源比较多。
『方案二』串行通讯方式实现8位LED的静态显示。
采用串行通讯方式实现8位LED的静态显示,虽可降低端口的使用,也不会降低CPU的运行速度,但整个显示界面显得不太友好。
『方案三』采用LCD液晶显示器显示。
液晶显示功耗低,轻便防震,显示界面友好。
因此本系统采用方案三。
二、理论分析与电路设计
1.系统总体设计与框图
系统框图如图2.1.1所示。
本系统采用ATMEGAL16L单片机作为控制核心,以12位的A/D转换MAX187为数据采样系统,实现被测电压的高精度数据采集与显示。
该过程是:
首先通过系列比较器检测输入电压的极性与范围,单片机根据电压极性与范围对继电器阵列进行相应的动作,实现了输入量程的全自动转换。
经过调理后的电压信号由AD转换后送出液晶显示,同时可以通过按键进行显示模式切换并具有过压保护、过压报警的功能。
2.实际电路图
2.1单片机系统
本设计是以ATMEGA16L单片机为控制核心,其外围接口电路如图所示。
图2.2.2 ATMEGA16L单片机接口图
ATmega16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
Tmega16有如下特点:
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模式下则允许振荡器和异步定时器继续工作。
另外,端口A(PA7..PA0)端口A可以做为A/D转换器的模拟输入端,即内部自带12位的AD转换器。
实际应用中我们是这样分配单片机的PA口主要用于信号检测,PB口用于继电器控制,PC口用于按键输入、过压报警等,PD口用于液晶显示。
2.2AD转换电路
我们利用MAX187作为AD数据采样器件,它是串行接口方式的A/D转换器,仅有8个引脚,外围接线很少。
体积小、速度快、精度高。
适用于仪器仪表、传感器、工程检测等方面。
MAX187是美信公司推出的12位A/D转换芯片,内部含有采样/保持电路,单5V操作电源,转换速度为8.5μs,具有片上4.096V参考电压,模拟量输入范围为0~VBEF。
三线串行接口,兼容SPI,QSPI,MicroWire总线。
图2.2.3 MAX187与单片机的接口电路
MAX187用采样、保持电路和逐位比较寄存器将输入的模拟信号转换为12位的数字信号,其采样、保持电路不需要外接电容。
MAX187有2种操作模式:
正常模式和休眠模式,将置为低电平进入休眠模式,这时的电流消耗降到10μA以下。
置为高电平或悬空进入正常操作模式。
它与单片机的接口电路如图(2.2.3)所示。
A/D转换的工作过程是:
当为低电平时,在下降沿MAX187的T/H电路进入保持状态,并开始转换,8.5μs后DOUT输出为高电平作为转换完成标志。
这时可在SCLK端输入一串脉冲将结果从DOUT端移出,读入单片机中处理。
数据读取完成后将置为高电平。
要注意的是:
在置为低电平启动A/D转换后,检测到DOUT有效(或者延时8.5μs以上),才能发SCLK移位脉冲读数据,SCLK至少为13个。
发完脉冲后应将置为高电平。
2.3信号调理模块
该部分主要实现的功能是自动量程切换和电压变换,模块主要由电压极性检测电路、电压范围粗测电路、电压变换电路、继电器模块四部分组成。
2.3.1电压极性检测电路
电压极性检测电路采用过零比较器检测负电压的方式实现的,运算放大器LM324的反向端接地,同向端通过100K电阻接输入信号。
当输入的测量信号为负时比较器翻转,输出端经过电平转换成TTL信号后送给单片机PA7端口检测,通常情况下输出为高电平,为正电压状态。
图2.2.4 电压极性检测电路
2.3.2电压范围粗测电路
为了粗略地得到被测量的电压范围我们采用多组比较器的方式,通过阶梯式比较的方法确定输入电压的范围。
其具体电路如下图(2.2.5)所示。
图2.2.5 电压范围粗测电路
继电器8开关状态常态时为正,当输入电压Ui为负时继电器8在单片机的控制下工作,进行反向放大成正电压后通过比较器检测,输出数据送给单片机P1口。
则根据其设计原理:
输入电压的范围与P1口对应的数据如下表所示2.2.6。
电压范围P10—P14口对应的数据(B)
0-100mV00000
100mV-5V00001
5V-10V00011
10V-15V00111
15V-20V01111
20V以上11111
表2.2.6范围检测数据表
2.3.3量程切换电路
量程切换电路包括电压衰减变换电路和无零漂小信号放大电路。
电压变换电路
电压变换电路由衰减电阻、切换继电器和运算放大器组成,对应的是衰减1/2、1/3、1/4和无零漂放大50倍,切换电路如图(2.2.7)所示。
电压变换到0-5V标准信号后,再由A/D转换进行采样,最后由单片机算法还原。
图2.2.7 电压范围粗测电路
无零漂小信号放大电路
无零漂小信号放大电路由两级放大器组成,前级放大器为跟随器形式,主要实现阻抗变换,由于小信号幅度很弱,所以要很高的输入阻抗。
第二级为零点补偿放大器,实现对小信号幅度的无零漂放大,电路如图(2.2.8)所示,零点补偿是通过电阻分压后由滑变电阻实现-20mV到20mV的微调节。
调试时将输入端接地,观察输出端信号,调节滑动变阻器,使其输出为零。
另外,由于实现的是小信号放大,所以采用精密的运算放大器。
图2.2.8无零漂小信号放大电路
2.4继电器模块
我们采用了八个继电器实现量程的自动切换,其动作由单片机PB口控制,其驱动电路如图(2.2.9)所示。
图2.2.9驱动电路
2.5按键与LCD显示电路设计
按键模块简单有效,我们设计了一个按键实现峰值与平均值的显示切换。
我们采用字符型液晶模块HS1602与单片机的接口和编程的方法显示测量的电压大小、极性、峰值。
其原理电路图如图(2.2.10)所示。
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器、RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据、D0~D7为8位双向数据线。
主单片机通过控制RS和RW,数据由D0~D7送入液晶显示。
报警由单片机控制并作出响应。
图2.2.10LCD显示电路
3.信号调理总体设计电路图
信号调理总体设计电路图如图(3.1)所示。
图3.1信号调理总体电路
三、软件设计与流程
1.系统软件介绍
软件部分采用模块化程序设计的方法,由单片机控制主程序、A/D转换子程序、电压检测及继电器控制程序、液晶显示组成。
系统选用的是ATMEL公司生产的单片微控制器ATMEGAL16L,ATMEGAL16L采用低功耗CMOS工艺生产的高性能8位AVR微控制器,16K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数(T/C),片内/外中断,可编程USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。
ATMEGAL8L也是低功耗、高性能8位AVR微控制器,8K字节的系统内可编程Flash,512字节EEPROM,1K字节SRAM,32个通用I/O口线,32个通用工作寄存器,三个具有比较模式的灵活的定时器/计数(T/C),片内/外中断,可编程USART,面向字节的两线串行接口,10位6路ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及五种可以通过软件进行选择的省电模式。
系统软件设计是在C编译环境下进行的,由于C语言程序可移植性好,所以提高了编程的效率。
2.软件程序流程图
单片机控制系统软件流程如图所示。
图3.2.1.1 主单片机控制系统流程图
四、实验测试与结果分析
本作品可以实现对-17V到+17V之间任意值的测量,测量精度达到0.001V,误差为10mV左右。
全过程实现了输入量程的自动化切换、电压测量、液晶显示等目的。
本作品制作完成了题目要求的基本部分的全部要求和发挥部分的大部分要求,达到了设计要求。
个别指标由于时间及条件的限制无法达到精确的测量要求。
可实现以下功能:
允许叠加输入频率为0-100HZ的交流信号。
可实现测量输出电压的峰峰值与平均值的显示。
量程全自动转换。
分辨率可达到三位半。
可显示测量的信号种类,电压极性、和数值大小等。
经分析,测量精度之所以达不到1mV的要求,是由于实验室条件的限制,我们采用了12位的A/D转换芯片MAX187,若要实现1mV的测量精度,最少需要采用16位的A/D转换芯片才能满足采样分辨率的需要,而且要采用精密运算放大器才能满足高精度的实际需要,同时电路布线布局也很重要,输入线需要屏蔽,这样减少内外噪声的影响。
五、参考文献
[1]李建忠,单片机原理及应用.西安:
西安电子科技大学出版社,2004.
[2]克劳斯-贝伊特,电子丛书—基本电路.北京科学出版社,1999.
[3]康华光.电子技术基础·模拟部分(第四版).北京:
高等教育出版社,1999.
[4]谢自美.电子线路设计·实验·测试(第二版).武汉:
华中理工出版社,2000.
[5]樊昌信等.通信原理.(第五版).北京.国防工业出版社,2001.
[6]金春林等.AVR系列单片机C语言编程与应用实例.北京:
清华大学出版社,2003
[7]黄智伟.全国大学生电子竞赛训练教程.北京:
电子工业出版社,2005.1
[8]李建忠.单片机原理及应用.西安:
西安电子科技大学出版社,2002.2
[9]全国大学生电子设计竞赛训练教程江西:
江西省电子电脑科技活动中心.2005.7
[10]ATMEGA16L单片机芯片使用手册,ATMEGA16L.pdf
[11]童诗白,华成英 模拟电子技术基础,高等教育出版社,2003.12
[12]陈明荧,8051单片机设计实训教材,清华大学出版社,2004.9
六、附录
源程序如下:
我们采用ATMEGAL16L单片机平台,PC机串行方式232通讯模式。
*****************
主程序
*****************
//dyb_system.c:
sourcefileforthedyb_systemproject
//
#include"dyb_system.h"
#include"lcd.h"
#include"dyb_systemSPI.h"
#defineVref4420
charsingal[8];
ucharfhao;
/////////////////////////////////////////////////////////////////////////////
//dyb_system
voiddelay_1ms(void) //1ms延时函数
{
unsi