基于单片机电压采集电路设计
基于单片机的数字电压表设计
基于单片机的数字电压表设计一、引言在电子测量领域中,电压表是一种常用的测量仪器,用于测量电路中的电压值。
传统的模拟电压表由于精度低、读数不便等缺点,逐渐被数字电压表所取代。
数字电压表具有精度高、读数直观、抗干扰能力强等优点,广泛应用于工业自动化、电子设备检测、实验室测量等领域。
本文将介绍一种基于单片机的数字电压表设计方案,详细阐述其硬件电路设计、软件编程实现以及系统性能测试。
二、系统总体设计方案(一)设计要求设计一款基于单片机的数字电压表,能够测量 0 5V 的直流电压,测量精度为 001V,具有实时显示测量结果的功能。
(二)系统组成本数字电压表系统主要由以下几个部分组成:1、传感器模块:用于将输入的电压信号转换为适合单片机处理的电信号。
2、单片机模块:作为系统的核心,负责对传感器采集到的数据进行处理和计算,并控制显示模块显示测量结果。
3、显示模块:用于实时显示测量的电压值。
三、硬件电路设计(一)传感器模块选用 ADC0809 作为模数转换芯片,它具有 8 个模拟输入通道,可以将 0 5V 的模拟电压转换为 8 位数字量输出。
(二)单片机模块选择 AT89C51 单片机作为控制核心,它具有 4K 字节的 Flash 程序存储器和 128 字节的随机存取数据存储器。
(三)显示模块采用液晶显示屏(LCD1602)作为显示器件,它能够清晰地显示数字和字符信息。
四、软件编程实现(一)编程语言选择使用 C 语言进行编程,C 语言具有语法简洁、可移植性强等优点。
(二)主程序流程主程序首先进行系统初始化,包括单片机端口初始化、LCD1602 初始化、ADC0809 初始化等。
然后启动 ADC0809 进行模数转换,读取转换结果并进行数据处理,计算出实际的电压值。
最后将电压值发送到 LCD1602 进行显示。
(三)模数转换子程序ADC0809 的转换过程通过控制其启动转换引脚(START)和读取转换结束引脚(EOC)来实现。
51单片机电压电流采样电路设计
51单片机是一种常用的微控制器,广泛应用于各种电子设备中。
在很多电子设备中,需要对电压和电流进行采样和测量,以确保设备正常运行和安全使用。
设计一个稳定、精准的电压电流采样电路对于电子设备的正常运行至关重要。
本文将介绍51单片机电压电流采样电路的设计原理、实现方法和相关注意事项,希望能够为初学者提供一些帮助。
一、设计原理1.1 电压采样原理电压采样是通过模数转换器(ADC)将模拟电压信号转换为数字信号的过程。
在51单片机中,有多个模拟输入引脚可以用于电压采样。
通过选择合适的参考电压和采样精度,可以实现对不同电压范围的准确采样。
1.2 电流采样原理电流采样通常需要借助电流传感器或电流互感器来实现。
通过将电流信号转换为与之成正比的电压信号,然后使用ADC进行采样,可以实现对电流的准确测量。
二、电压采样电路设计2.1 电压采样电路原理图在设计电压采样电路时,需要考虑信噪比、采样精度和参考电压的稳定性。
一般来说,可以通过电阻分压网络将被测电压信号转换为微控制器可以接受的范围内的电压信号。
2.2 电压采样电路实现在实际设计中,可以选择合适的电阻数值和参考电压,使得被测电压在不损失精度的前提下可以被精准采样。
还需要注意电源滤波和去耦电容的设置,以提高电路的稳定性和抗干扰能力。
三、电流采样电路设计3.1 电流采样电路原理图电流采样电路通常需要借助电流传感器或电流互感器来实现。
在设计电流采样电路时,需要考虑到电流传感器的灵敏度、线性度和频率特性,以确保采样的准确性和稳定性。
3.2 电流采样电路实现在实际设计中,需要根据被测电流的范围和精度要求选择合适的电流传感器,并通过运算放大器等电路将电流信号转换为微控制器可以接受的范围内的电压信号。
还需要注意电流传感器的电源和接地,以确保电路的正常工作。
四、电压电流采样电路的综合设计4.1 电压电流采样电路整体连接在设计完成电压和电流采样电路后,需要将两者连接到51单片机的模拟输入引脚,并编写相应的程序进行数据采集和处理。
基于单片机的数字电压表设计毕业论文答辩new
致谢
LOGO
两个多月的设计时间很快的过去了,在这两个月里我通过学习掌握了许
多单片机的相关知识,锻练了自学能力,了解到了一些设计上的方法和技巧。 感谢学校给了我们这样一个培养动手能力和自主学习能力的时机,我相信, 这对我们将来走入工作岗位后的帮助是很大的,而这也必定是学校开设毕业 论文设计的目的所在。在这里首先我要感谢一直帮助指导我的刘桂英老师, 设计当中我们遇到了什么不明白的问题,刘老师都会很耐心很细心的帮助我 们,使我们的论文设计可以顺利进行;同时我也要感谢我同组的同学和宿舍 的同学,在做论文时我积极向他们请教,解决做论文时遇到的许多困难,在 此我要对他们表示衷心的感谢。
设计成果仿真与调试
• 5V电压表仿真调试结果
LOGO
•
本方案实现的数字电压表量程是5V,测量精度可以精确到小数点后两位,
由于单片机为8位处理器,当输入电压为5.00 V时,ADC0809输出数据值为
255〔FFH〕,单片机最高的数值分辨率只能为0.0196 V〔5/255〕的原因,
还存在着不能满足高精度测量的缺陷,可以通过采用更高位的A/D转换器
缺乏之处:由于技术上的缺陷加上时间问题,所设计的两种量程电压表没有做到多路 电压的测量,假设实现就更好了。 255V量程的电压表中也没有做到多档量程的自动切 换,精度和分辨率较5V量程电压表的低;电压表设计的显示偏差,这个可以通过校正 ADC0809的基准参考电压来解决,或用软件编程来校正其测量值。
LOGO
本论文设计是以单片机为开发平台,控制系统采用AT89C51单片机的电压 测量电路,也就是在单片机控制下完成电压信号的采集,A/D转换器采用 ADC0809为主要硬件,先完成5V量程电压表、在此根底上通过改变程序再 扩展到255V量程数字电压表的硬件和软件设计,最后在四位共阴极数码管 7SEG-MPX4-CC上显示。这种硬件电路设计比较简单,所用元器件也少,经 济实惠,而且调节非常方便。本设计实现后可广泛应用于某些学校的电路电 子电工实验室,因此本设计具有非常实际的意义。
基于单片机下的数字电压表设计毕业论文
河南理工大学万方科技学院本科毕业论文基于单片机下的数字电压表设计毕业论文目录前言 (1)1 设计任务与分析 (3)1.1 设计任务简介及背景 (3)1.1.1 单片机简介 (3)1.1.2 背景及发展情况 (3)1.2 设计任务及要求 (5)1.3 设计总体方案及方案论证 (5)1.4 数据输入模块的方案与分析 (7)1.4.1 芯片选择 (6)1.4.2 实现方法介绍 (6)1.4.3 输入模块流程图 (10)1.5 A/D模块的方案与分析 (10)1.5.1 芯片的选择 (11)1.5.2 实现方法介绍 (11)1.5.3 A/D模块流程图 (13)1.6 数据处理及控制模块 (13)1.6.1 芯片选择 (14)1.6.2 实现方法介绍 (14)1.6.3 数据处理及控制模块流程图 (14)1.7 显示模块 (15)1.7.1 芯片选择 (15)1.7.2 实现方法介绍 (15)2 硬件设计 (16)2.1 数据输入模块原理图 (17)2.2 A/D模块原理图 (18)2.3 控制模块原理图 (20)2.4 显示模块原理图 (21)3 软件设计 (23)3.1 主程序流程图 (23)3.2 子程序介绍 (24)3.2.1 初始化程序 (24)3.2.2 中断子程序 (24)3.2.3 档位选择子程序 (25)4 主要芯片 (29)本科毕业论文4.1 AT89C52的功能简介 (29)4.1.1 AT89C52芯片简介 (29)4.1.2 引脚功能说明 (29)4.2 ICL7135功能简介 (31)4.2.1 ICL7135 芯片简介 (31)4.2.2 引脚功能说明 (32)4.3 LCD1602功能简介 (35)4.3.1 LCD1602芯片简介 (35)4.3.2 引脚功能说明 (35)4.4 CD4052的功能介绍 (38)4.4.1 CD4052芯片简介 (38)4.4.2 引脚功能说明 (39)4.5 CD4024的功能介绍 (39)4.5.1 CD4024芯片简介 (39)4.5.2 引脚功能说明 (40)4.6 OP07的功能介绍 (40)4.6.1 OP07的功能简介 (41)4.6.2 引脚功能说明 (41)结论 (42)致谢 (44)参考文献 (45)河南理工大学万方科技学院本科毕业论文前言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
基于单片机的电池电压检测方案设计
基于单片机的电池电压检测方案设计电池电压检测是电池管理系统中的重要一环,可以用来监测电池的电量和健康状况。
本文将介绍一种基于单片机的电池电压检测方案设计。
电池电压检测方案的设计目标是实现对电池电压的精确检测,并能够将检测结果与预设的阈值进行比较,以判断电池的状态。
具体的设计步骤如下:1. 硬件设计:1.1 选择合适的电池电压检测模块:可以选择集成了AD转换器的电压检测模块,如常用的MAX17043芯片。
该芯片具有高精度的电池电压检测功能,并能通过I2C接口与单片机进行通信。
1.2 连接电池电压检测模块和单片机:将电池电压检测模块的输出引脚与单片机的AD输入引脚相连接,以实现模拟电压的转换和采集。
1.3 设计供电电路:为电池电压检测模块和单片机提供稳定的电源,可以使用电源管理芯片来实现。
2. 软件设计:2.1 单片机初始化:在程序开始时,需要对单片机的AD输入引脚进行初始化,以及对电池电压检测模块进行初始化,包括设置采样率、AD转换位数等。
2.2 读取电池电压:通过AD输入引脚采集电池电压的模拟信号,并将其转换为数字信号。
根据电压和AD转换系数的关系,可以得到电池的实际电压值。
2.3 比较电池电压:将当前检测到的电池电压与预设的最低电压阈值进行比较。
如果电池电压低于阈值,则表示电池电量不足或电池老化,需要进行相应的处理。
2.4 输出电池状态:根据电池电压的比较结果,可以通过显示屏、LED灯或蜂鸣器等输出设备来显示电池的状态。
还可以将电池状态信息通过串口或无线通信模块发送给外部设备。
3. 系统调试:在完成硬件和软件设计后,需要对系统进行调试和测试。
可以通过改变电池电压来模拟不同的电池状态,并观察系统的检测结果是否准确。
总结:基于单片机的电池电压检测方案设计涉及到硬件设计和软件设计两个方面。
通过选择合适的电池电压检测模块,实现对电池电压的精确检测,并可以通过单片机进行处理和输出。
该方案可以广泛应用于电池管理系统中,提高电池使用效率和安全性。
基于STC89C52单片机的简易数字电压表设计【毕业设计
存档编号华北水利水电大学North China University of Water Resources and Electric Power 毕业设计题目基于单片机的数字电压表设计学院信息工程学院专业通信工程姓名学号 200912303指导教师完成时间 2013年5月20日教务处制目录摘要 (I)Abstract (II)绪论...................................................................................................................... I II 一设计背景................................................................................................ I II 二设计意义. (V)第一章数字电压表 (1)1.1 数字电压表的优点 (1)1.2 数字电压表发展趋势 (1)1.3 设计平台 (2)1.3.1 KEIL C51开发平台 (2)1.3.2 Proteus 7 Professional设计软件 (2)第二章总体设计方案 (4)2.1数字电压设计的两种方案 (4)2.1.1 由数字电路及芯片构建 (4)2.1.2 由单片机系统及A/D 转换芯片构建 (4)2.2 设计要求 (5)2.3 技术要求 (5)2.4 设计方案 (5)第三章硬件简介 (7)3.1 本设计单片机的选择 (7)3.1.1常用单片机的特点比较 (7)3.1.2 单片机的选择 (7)3.1.3 STC89C52单片机介绍 (8)3.2 本设计显示器件选择 (13)3.2.1 常用显示器件简介 (13)3.2.2 显示器件的选择 (14)3.2.3 1602字符型LCD简介 (14)3.3A/D芯片 (19)3.3.1常用的A/D芯片 (19)3.3.2 ADC0809芯片 (20)第四章接口电路 (23)4.1 显示电路 (23)4.2 ADC0809与单片机接口电路 (23)第五章硬件电路系统模块设计 (25)5.1 总电路模块 (25)5.2 硬件系统电路简介 (25)第六章系统软件设计 (26)6.1 主程序 (26)6.2 A/D转换子程序 (26)6.3 显示子程序 (27)第七章调试及性能分析 (28)7.1 调试与测试 (28)7.2 性能分析 (28)总结 (30)参考文献 (31)致谢 (33)附录 (34)附录I(外文翻译) (34)外文译文 (44)附录II(任务书) (52)附录III(开题报告) (54)附录IV(图表) (57)I Proteus仿真图 (57)II 硬件总电路图 (58)III 实物图 (59)附录V(程序清单) (60)摘要随着时代的进步,用指针式万用表测量小幅度直流电压已经显得有些不太方便。
用单片机实现电压采集
⽤单⽚机实现电压采集⽂档介绍:中国矿业⼤学单⽚机课程设计姓名:学号:专业: 电⼦科学与技术题⽬:⽤单⽚机实现电压采集专题:单⽚机系统设计指导教师:设计地点:时间: 2011-042011 年 4⽉单⽚机课程设计任务书专业年级学号学⽣姓名任务下达⽇期: 2011 年 4⽉ 18⽇设计⽇期: 2010年4⽉18⽇⾄ 2010年 4⽉29⽇设计题⽬:⽤单⽚机实现电压采集设计专题题⽬:单⽚机系统设计设计主要内容:1、制作可产⽣0⾄+5V电压模块2、制作单⽚机电压采集装置设计要求:⼀、基本要求(1)制作可产⽣0⾄+5V电压模块(2)制作单⽚机电压采集装置电压采集功能在ADC0809的0通道输⼊0~5V电压,实时显⽰被测电压值(显⽰精度0.001V,即显⽰1位整数,3位⼩数)。
⼆、扩展要求(1)指定通道采集按:通道+1按:通道-1按:循环采集显⽰,默认每通道显⽰2秒钟按1:。
报警设置报警上限默认为.0V ,警下限默认为0.0V按:⼀绪论 11.1系统概述 11.1.1设计性质、⽬的、任务 .. 11.2系统设计⽅案 (1)1.2.1系统设计原理框图 (2)⼆硬件电路设计 22.1 主要芯⽚介绍 22.1.1 AT89S51 22.1.2 A/D0809 32.2 单⽚机电路 42.1.1 单⽚机电路板42.2.2 单⽚机最⼩系统 42.2.3 单⽚机的复位电路 52.2.4 开关电路 52.2.5 显⽰译码电路 62.2.6 蜂鸣器和继电器电路 72.3 A/D转换 72.3.1 ADC0809内部结构 72.3.2 ADC0809转换原理 82.3.3电路设计82.3.4采集数据和对应电压的转换 8三软件设计 93.1 设计任务 93.1.1 基本任务 9。
单片机电压采样电路 -回复
单片机电压采样电路-回复什么是单片机电压采样电路?单片机电压采样电路是一种用于采集和处理电压信号的电路,主要用于将外部电压输入转换为单片机可读取的数字信号。
单片机电压采样电路的主要功能是将模拟电压信号转换为对应的数字量,以便单片机进行处理和判断。
单片机电压采样电路在各种电子设备中广泛应用,例如温度监测、电池电压检测、传感器信号采集等。
单片机电压采样电路的构成单片机电压采样电路通常由以下几个主要部分组成:1. 电压输入端:用于接收外部电压信号的引脚或接口。
2. 采样电阻:用于限制电流,保护输入端,并将电压信号转换为与输入电压成正比的电压降。
3. 运放电路:用于放大和处理采样电阻输出的电压信号,以提供更高的输出电压。
4. ADC(模数转换器):用于将模拟电压信号转换为数字量,以便单片机进行处理。
步骤一:设计采样电阻首先,根据电压采样电路的要求,选择合适的采样电阻的阻值。
常用的电阻阻值有10KΩ、100KΩ、1MΩ等。
这里的选择应根据采样信号的幅值和频率来确定。
通常情况下,阻值越大,对信号源的影响越小,但也会引入更多的噪声。
因此,需要根据实际情况进行权衡。
步骤二:设计运放电路运放电路的设计主要考虑放大倍数、输入电阻、输出电阻以及电源电压等因素。
放大倍数决定了输出信号的幅度,输入电阻决定了对应的输入电压范围,输出电阻影响了电压输出的稳定性,电源电压决定了运放的工作情况。
运放电路中常用的结构是非反馈运放电路,其中最常用的是差动放大器和非反馈放大器。
差动放大器对输入信号进行放大,并提供差分输出,以提高信号的抗干扰能力。
非反馈放大器则通过提供一个放大倍数确定的反馈电阻来放大输入信号。
步骤三:设计模数转换器模数转换器(ADC)是单片机电压采样电路中最关键的部分。
它将模拟电压信号转换为单片机可读取的数字信号。
常用的ADC类型有逐次逼近型ADC和Sigma-Delta型ADC。
逐次逼近型ADC通过逐步比较模拟输入电压与参考电压,来逼近要转换的模拟输入电压,最后将其转换为数字输出。
基于单片机电压采集电路设计完整版
基于单片机电压采集电路设计集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]1引言数据采集是分析模拟信号量数据的有效方法。
而实时显示数据是自动化检测系统的现实需求。
在测试空空导弹导引头的过程中,导引头的响应信号包括内部二次信号和模拟量电压信号。
检测过程中要求检测系统实时显示导引头的工作状态,显示二次电源和模拟量响应电压信号,判断导引头性能,同时保证在非常情况下人为对导引头做出应急处理,保护导引头。
对于模拟量电压信号,通常采用模数转换、事后数据标定的方法实现。
根据现实需求,研制相应检测系统可作为导引头日常维护和修理的重要工具。
这里介绍一种基于单片机和CPLD的实时数据采集显示系统设计方案。
?2系统构成该系统中待采集显示电压信号共路,动态电压范围为-~+27V。
由于这些电压信号变化频率较低,或者认为频率无变化,且检测系统只关心其电压值,所以在低采样率下就可满足系统要求。
根据需求,系统设计的采样率即显示刷新速率在1.56k/s以上。
采用单片机80C196KB和可编程逻辑器件78SLC为核心控制器,以80C196KB内部集成A/D转换器作为模数转换器实现16路电压信号的实时数据采集、显示、控制。
该系统总体设计结构框图如图1所示。
整个系统主要由信号预处理、信号选通、单片机采集、双机以及数据处理显示等构成。
其中,信号选通模块由CPLD和多路模拟选择器组成。
3系统硬件电路设计3.1信号预处理电路由于待采集电压信号输入动态范围较宽,且极性各异,对于单片机A/D转换器来说,需要调理到能够采集的电压范围闱0~5V,所以要统一调理采集信号,如图2所示。
图2中运放和1556均采用双电压供电,以提高动态信号输入范围;均采用精度为0.1%的精密型金属膜电阻,以提高电压转换精度。
在二级电压凋理过程中,MC1556同相输人端采用电路以减少长时间通电情况下温度升高对系统产生的不良影响。
南于电压跟随器具有输入阻抗大和输出驱动能力强的特点,故在预处理电路的输入端和输出端均采用电压跟随电路。
基于单片机的直流电压检测系统设计
课程设计说明书题目:基于单片机的直流电压检测系统设计课程:单片机原理及应用B课程设计院(部):信息与电气工程学院专业:班级:学生姓名:学号:指导教师:完成日期:2013年6月摘要 (I)1 设计目的 (1)2 设计要求 (2)3 设计内容 (3)单片机电压测量系统的总体设计 (3)硬件选择 (4)软件选择 (4)本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。
在单片机的应用系统程序设计时,常用的是汇编语言和C语言。
汇编语言的特点是占用内存单元少,执行效率高。
执行速度快。
但它依赖于计算机硬件,程序可读性和可移植性比较差。
而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。
(4)硬件电路的设计 (4)输入电路模块设计 (4)LM7805稳压电源电路介绍 (5)显示模块电路设计 (6)A/D转换设计 (7)单片机模块的简介 (9)系统软件的设计 (12)本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。
在单片机的应用系统程序设计时,常用的是汇编语言和C语言。
汇编语言的特点是占用内存单元少,执行效率高。
执行速度快。
但它依赖于计算机硬件,程序可读性和可移植性比较差。
而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。
(12)主程序的设计 (12)各子程序的设计 (14)总结与致谢 (16)参考文献 (17)附录一系统整体电路图 (19)附录二A/D转换电路的程序 (20)附录三1602LCD显示模块的程序 (22)摘要随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段。
基于51单片机的电压、频率采集系统
图1 是系统 的硬件结 构框图 。
盟 : L D 小 或撤警 E
了 55 .%和 58 .%。
图 2T 中断服 务子程序 流程 图 ,1
4结束 语 本设计 是 双 电源切换 装 置 的一 小部分 , 有 C U利 用率 高 、 行 具 P 执 速度快、 简单易行等特点 , 同时可 以在外围进行电路扩展 , 故具有推广 价值。 由于该系统差 要 但 是电压和频率的采集和实时监控, 没有涉及到 电压 和频率 的控 制设计 , 以在控制: 面 所 有待进一步 研究 。 另外基 于系 统本身及器件转换中存 在误差的缺点, 该设计还需要进一步提高精度 、 减小误差, 从而提高系统的整体性能 ,
A C89 D 00 转换结束后.O . C发出中断信号通知单片机进行中断。它的 E 中断服务子程序所需要完成的工作是读入被转换了的 8 位数字量 , 再 将这个 8 位的十六进制数转换成待 显 示的七段显示码存入缓冲器中。 另一 —个中断 为系统 内部 的定时 器 T 中断 。它有两个 功能 : 是对 1 一 外部矩形 脉冲信 号进行 定时计 数 ,s 1 内所得 到 的计 数值 即使频率值 ; 二 是用 于中断 显示 , 时间 到一次 , 示—位 , 计数 就显 由于定 时 时间很短 , 人 眼看起 来各位 数码显 示管就 像“ 同时 ” 示一样 。该 中断服务 子程序 的 显
流程 图如图 2 所示 。
Hale Waihona Puke 被测电溺 } 瞄
片
基于单片机的纯电动汽车蓄电池组电压采集方案设计
[ 2 ] 张毅刚. 电动车辆动力电池组电压采集电路设计 [ J ] . 电器应用, 2 0 0 7 ( 1 2 ) : 9 1 — 9 3 .
三 结束语
本方案设计可实现单片机对蓄电池组的单体电池实现 分时采集控制, 可作为蓄电池组电压采集的下位机实现方
[ 3 ] 谭晓军. 电 动汽车动力电 池管理系 统设计[ M ] . 中
第 6期
鸡 西 大 学 学 报
2 0 l 4年
计时需要考虑电压的分时采集, 为区分采集的电压的单体 案, 具体的电压数据显示及分析可利用上位机的 M C U控制 电池序号 , 采用频率和序号对应的方法 , 即采集某个单体电 池电压时发送和该电池序号对应的频率以区分序号。 程序流程图如图4 所示。
( 责任编辑 : 郑英玲)
・
o u p a s a n e x a mp l e,w e d e s i g n a d a t a a c q u i s i t i o n s c h e me or f b a t t e y r v o l t a g e b y mi c r o c o n t r o l l e r a s t h e c o r e t hi s s c h e me i s s i m—
山大学出版社 , 2 0 1 1 : 1 2 1 — 1 2 3 .
Th e De s i g n o f Vo l t a g e Ac q ui s i t i o n Sc he me f o r Ve h i c l e Ba t t e r y Bas e d o n M CU
,
b a t t e r y c e l l s i s a n i mp o r t a n t b a s i s f o r un d e r s t a n di n g i t s p e r f o r ma nc e wh i l e t he v e hi c l e i s r un ni n g t a k i n g l i t hi u m i r o n ph o s ph a t e b a t —
基于单片机的高精度智能交直流电压数据采集系统设计
基于单片机的高精度智能交直流电压数据采集系统设计电压是电子与电力系统中最基本的测量元素之一,快速准确地获取电压值一直是数据采集与电子测量仪器研究的重要内容之一。
传统的指针式电压表具有精度低、可视距离近、功能单一等缺陷,已不适应高速信息化的发展需要。
目前市场上广泛使用的数字电压表智能化程度低,测量电压时需手动切换量程,当量程选择不当时会出现测量精度下降、乃至烧坏电压表的极端情况;而高精度的全量程无档数字电压表一般都采用了DSP、FPGA或CPLD等复杂电路系统,硬件和软件实现成本较高。
为此,笔者设计研制出了一种以单片机为控制主体的智能交流直流电压数据采集系统,具有体积小、精度高、结构简单、使用与读数方便、性价比高、适应范围宽等优点,有效地弥补了上述各种电压表系统的缺点和弊端。
1 系统总体方案该电压数据采集系统主要由电压衰减器、量程转换及放大电路、AC/DC转换电路、A/D 转换电路、主控单片机STC89C52以及LCD显示电路等5个部分组成,其原理框图如图1所示。
电压衰减器和放大器将待测模拟信号电压值转换到AC/DC变换器的输入电压范围内,直流电压经衰减放大后不需作AC/DC转换;量程转换电路根据输入到A/D转换器的模拟直流电压大小,由单片机判断后控制继电器对衰减放大电路作相应的调整,确保选择出最佳量程;A/D转换由单片机启动,在软件中对采集到的数据作数字滤波、标度变换和系统误差校准等处理后,根据电压类型标志位在LCD上显示测量值和电压类型。
2 系统硬件设计2.1 电压衰减、放大和量程转换电路电压衰减放大和量程转换电路如图2所示。
电阻R1~R5构成衰减系数分别为1、10、100、1 000、10 000的分压器,将被测输入电压Uin衰减至0~200 mV范围内并送至后端电路放大、AC/DC转换(直流电压不需转换)、A/D转换以及由单片机进行采集、处理与显示。
为了降低测量误差,分压电阻R1~R5均选用误差为±0.5%的精密金属膜电阻。
基于STM32F103单片机电流电压采集系统设计
基于STM32F103单片机电流电压采集系统设计一、本文概述随着现代电子技术的快速发展,电流和电压的精确采集在诸多领域中,如电力监控、能源管理、工业自动化等,都扮演着至关重要的角色。
STM32F103单片机,凭借其强大的处理能力、灵活的扩展性和高性价比,已成为众多电子系统设计者的首选。
本文旨在探讨基于STM32F103单片机的电流电压采集系统设计,通过对硬件电路和软件程序的详细解析,为相关领域的工程师和研究者提供一种可靠的、高效的电流电压采集方案。
本文将首先介绍电流电压采集系统的总体设计方案,包括硬件架构的选择、关键元件的选型以及系统的工作原理。
随后,将详细介绍电流电压采集电路的设计,包括模拟信号的处理、模数转换器的配置以及信号调理电路的实现。
在软件设计方面,本文将阐述STM32F103单片机的编程环境搭建、数据采集程序的编写以及数据处理和传输的实现方法。
本文还将对系统的性能进行评估,包括精度测试、稳定性分析和响应速度测试等。
通过本文的研究,我们期望能够为电流电压采集系统的设计提供一套完整、实用的解决方案,为相关领域的工程实践和技术创新提供有力支持。
本文也希望激发更多研究者对基于STM32F103单片机的电子系统设计进行深入研究,共同推动电子技术的发展和应用。
二、系统总体设计在设计基于STM32F103单片机的电流电压采集系统时,我们首先需要考虑的是系统的整体架构和功能需求。
系统总体设计的主要目标是实现高精度的电流和电压数据采集,同时保证系统的稳定性和可靠性。
核心控制器:选择STM32F103单片机作为系统的核心控制器,负责数据采集、处理和控制逻辑的实现。
信号调理电路:设计合适的信号调理电路,将采集到的模拟信号转换为适合STM32F103处理的电压范围。
这包括电流转换电路和电压跟随电路,以确保信号的准确性和稳定性。
ADC模块:利用STM32F103内置的ADC模块进行模拟信号到数字信号的转换,实现高精度的数据采集。
基于51单片机的电压表的设计
引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用[1]。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型[3]。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC化),另一方面,精度也从0.01%-0.005%。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面[4]。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。
其中,A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号[5]。
1 设计总体方案1.1设计要求:完成系统的硬件电路设计与软件设计; 采用汇编或C 语言编程;采用Proteus 、KeilC 等软件实现系统的仿真调试。
基于单片机的电池电压检测方案设计
基于单片机的电池电压检测方案设计电池是电子设备中常用的能量供应装置,而电池的电压是电池当前状态的重要指标之一。
设计一种基于单片机的电池电压检测方案,能够及时准确地获取电池的电压状态,对于延长电池寿命、保障设备安全具有重要意义。
一、方案设计目标1. 实现对电池电压的实时监测,提前预警电池状态。
2. 利用单片机实现对电池电压的准确测量和处理。
3. 设计一套电池电压检测方案,能够灵活应用在不同类型、不同规格的电池上。
二、方案设计思路1. 采用单片机进行数据采集和处理,以减小电路复杂度,提高测量精度。
2. 使用模拟转换芯片进行电压信号的模拟-数字转换,提高测量精度和稳定性。
3. 设计一套合理的电池电压检测算法,减小温度、电流等外界因素对测量结果的影响。
4. 灵活设置电池电压报警阈值,能够根据不同应用场景对电压状态进行定制化监测。
三、方案设计详解1. 单片机选择单片机作为方案的核心部件,需具备足够的计算能力和IO引脚用于数据采集和输出。
常见的单片机包括STC89C52、STM32、Arduino等,具体选择应根据实际应用需求来定。
2. 模拟-数字转换电池电压是一个模拟信号,需要通过模拟-数字转换芯片将其转换成数字信号,以供单片机进行处理。
常见的模拟-数字转换芯片有MCP3208、ADS1115等,具有多路输入、高分辨率和内部参考电压等特点,能够满足电池电压检测的需求。
3. 电池电压检测算法电池电压的检测需要考虑到多种因素的影响,如温度、负载电流等。
需要设计一套合理的检测算法,能够在保证测量精度的减小外界因素的干扰。
常见的电池电压检测算法包括移动平均滤波、二次差分滤波等,根据具体情况选择合适的算法。
4. 报警系统设计电池电压状态良好与否,对于设备运行的安全性有着直接的影响。
需要设计一套完善的报警系统,能够在电池电压低于预设阈值时及时报警,以便进行相关的处理和维护。
报警系统可以通过单片机的IO口控制蜂鸣器、LED灯等进行报警提示,也可以与其他设备进行通讯,实现远程监测和控制。
用stc12c5a60s2单片机采集交流电压并计算其有效值(普中科技hc6800为硬件)
用stc12c5a60s2单片机采集交流电压并计算其有效值(普中科技hc6800为硬件)//******P1^7为参考电压,P1^2为待测电压接口#include<reg51.h>#include<math.h>#define bianshu 1#define qshu 50#define buchangTH1 0Xfe#define buchangTL1 0X0c //1000us 1000hz 10000us 考虑给取值过程留点时间(200us) 用700us 65536-700=64836 //与ad相关的特殊功能寄存器sfr ADC_CONTR =0XBC; //定义ad相关特殊功能寄存器地址sfr ADC_RES =0XBD;sfr ADC_RESL =0XBE;sfr P1ASF =0X9D;sbit EADC=IE^5;//ad中断允许位//配合ADC_CONTR置相应位因为ADC_CONTR不可位寻址,所以采用与或方式置相应位#define ADC_POWER 0X80#define ADC_FLAG 0X10#define ADC_START 0X08#define ADC_SPEEDLL 0X00#define ADC_SPEEDL 0X20#define ADC_SPEEDH 0X40#define ADC_SPEEDHH 0X60unsigned char CH2=2;//通道 p1^2unsigned char CH7=7;//通道 p1^7//***步长所用变量int Gbuchang,Lbuchang;//***遍数,取数个数,开断及等待控制部分所用变量char N=qshu,M=bianshu;char kd,bx;char flag1; //等待标志位,用作等待开断、定时//***取数部分所用变量float bus,zhi[qshu],cankao;char i,geshu;//***处理数据部分所用变量char u,v,w;//for循环控制位float zhi1[qshu],zhi2[qshu],sum;//改成float了,少占点内存要取的 n个数(转换完的整数)float junzhi;int zhenzhi,zhi3[qshu];//***显示部分所用变量char j,k,s;//for循环控制位int LedNumVal;char LedOut[8]; //取要显示数的个十百... 数码管8位unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码sbit LS138A = P2^2; //定义138译码器的输入A脚由P2.2控制控制8个数码管sbit LS138B = P2^3; //定义138译码器的输入脚B由P2.3控制sbit LS138C = P2^4; //定义138译码器的输入脚C由P2.4控制//***查错部分所用变量sbit cha1=P2^0;sbit cha2=P2^1;sbit cha3=P2^7;sbit cha4=P2^6;void delay(int q);void main(){while(1){//***遍数,取数个数,开断及等待控制部分所用变量M=bianshu;N=qshu;bx=0;//显示遍数标志位kd=0;//开断标志位flag1=1;//用“1”符合逻辑!控制开始与结束标志位CH2=2;//通道 p1^2 辅助置ADC_CONTR的通道位CH7=7;//通道 p1^2 辅助置ADC_CONTR的通道位//***取数部分所用变量bus=0;//数据传输媒介(实数)数据区cankao=0;geshu=0;sum=0;junzhi=0;zhenzhi=0;i=0;//i是取数中的变量u=0;//j,k,s都是显示程序中的变量v=0;w=0;j=0;//j,k,s都是显示程序中的变量k=0;s=0;LedNumVal=0;//**********zhi[i]清零************for(i=0;i<N;i++){zhi[i]=0;zhi1[i]=0;zhi2[i]=0;zhi3[i]=0;}//********ad初始化********EADC=1; //允许ad中断P1ASF=0x84; //通道1000 0100ADC_RES=0; //寄存器清零ADC_CONTR=ADC_POWER|ADC_SPEEDHH|CH2;//设置电源速度通道2 注意此处不开启ADC_START 取完数之后每次都需要再置位delay(1); //第一次需要时间来置位//********外部中断1初始化********EX1=1; //外部中断1允许中断号2 引脚P3^3IT1=1; //设置为下降沿触发//********定时器1初始化(采用查询方式)所以没有开启定时器1的中断允许位ET1位TMOD=0X11; //0001 0001 定时1,0 方式1 16位Gbuchang=buchangTH1;Lbuchang=buchangTL1;TH1=Gbuchang;TL1=Lbuchang; //1000us 无定时器中断允许采用查询方式控制步长// 用定时器0来查看一下取数时间TH0=0;TL0=0;//*****取数要求:ad从零点开始,按相同步长取到确定的N个数***************************EA=1;//等待外部中断1来开启ad与定时器1//****flag1=1(等待同步方波下降沿开启)>>flag1=0(采集数据)>>flag1=1(等待同步方波下降沿关闭)>>//*******ad取数阶段**********要保证下次循环不被打扰//通道二:取zhi[i](要为小数),由同步方波确定取值“geshu”个//通道七:取cankao,cankao为标准电压的数字量//涉及数据:zhi[i],geshu,cankaowhile(flag1==1);TR0=1;cha3=0;while(flag1==0){cha4=0;for(i=0;i<N;i++) //ad转换完一次后ADC_START会自动清零{TR1=1; //此处开启定时器开始定时器控制步长ADC_CONTR|=ADC_START; //此处开启ad转换统一开始时间开始ad 时间很短while(TF1==0); //因为步长大于ad采集时间,所以此处会进入ad中断取!!ADC_RES》bus!!等待定时器控制步长完再把数bus>>zhi[i]TF1=0;//软件查询,需软件清中断申请位TR1=0;//此处关闭为了不让它再计时***定时器计满溢出回零之后(方式0、1、3)会重新开始从零计数所以要先关闭再说 **** TH1=Gbuchang;TL1=Lbuchang;zhi[i]=bus;//zhi[i]为初始取的数字量bus=0;//清零geshu=i+1;//指向i的下一个数标if(flag1==1)// 此处本意是想:用同步方波来控制取数的结束时间,而不是以前的固定取N个数在等待结束break;}TR0=0;//取完通道二(一个周期后)就要关闭定时器0的TR0ADC_CONTR=ADC_POWER|ADC_SPEEDHH|CH7;//待通道二取完数字量之后,重置取通道七的标准电压的数字量delay(1); //第一次需要时间来置位以防万一TR1=1; //此处开启定时器开始定时器控制步长ADC_CONTR|=ADC_START; //此处开启ad转换统一开始时间开始ad 时间很短while(TF1==0); //因为步长大于ad采集时间,所以此处会进入ad中断取!!ADC_RES》bus!!等待定时器控制步长完再把数bus>>zhi[i]TF1=0;//软件查询,需软件清中断申请位TR1=0;//此处关闭为了不让它再计时***定时器计满溢出回零之后(方式0、1、3)会重新开始从零计数所以要先关闭再说****TH1=Gbuchang;TL1=Lbuchang;cankao=bus;//cankao为标准电压的数字量bus=0;//清零}EA=0;flag1=1;zhi3[geshu+2]=geshu;//显示个数zhi3[geshu+4]=256*TH0+TL0;//显示时间,看看取数时间是否超过20000uszhi3[geshu+6]=cankao;//显示标准参考电压数字量cha4=0;//ADC_CONTR&=!ADC_POWER; //ad电源的开断会使内部电压不稳,导致数值不稳//************循环M遍显示取到的N个数值*************************************while(M--){//****处理数据:【zhi[i],zhi1[u],zhi2[v],sum,zhi2】均为小数,zhenzhi,geshu,时间,zhi3[w]为整数//****涉及变量:zhi1[u],zhi2[v],zhi3[w]// u,v,w,sum,zhi2,zhenzhifor(u=0;u<geshu;u++) //只处理geshu以前的数{zhi1[u]=zhi[u]*3/cankao;//此处用(暂选3V)精确电压确定的单个位电压来计算}for(v=0;v<geshu;v++){zhi2[v]=zhi1[v]*zhi1[v];//小数sum+=zhi2[v];//平方和此处bus已经乘了1000,可以说已经取了4位有效数字}junzhi=sum/(geshu);//junzhi为小数值,zhenzhi=sqrt(junzhi)*1000;//zhenzhi为整数值此处已经*1000提取了有效数字zhi3[geshu+8]=zhenzhi;for(w=0;w<geshu;w++)//仅对geshu前的数处理zhi3[w]=zhi1[w]*1000;}//显示程序只显示zhi3[N]的整数值for(j=0;j<N;j++) //循环显示N个数{LedNumVal=zhi3[j];LedOut[0]=Disp_T ab[LedNumVal%100000000/10000000]; //取各个位LedOut[1]=Disp_T ab[LedNumVal%10000000/1000000];LedOut[2]=Disp_T ab[LedNumVal%1000000/100000];LedOut[3]=Disp_T ab[LedNumVal%100000/10000];LedOut[4]=Disp_T ab[LedNumVal%10000/1000]|0x80; //千位LedOut[5]=Disp_T ab[LedNumVal%1000/100]; //百位LedOut[6]=Disp_T ab[LedNumVal%100/10];//十位LedOut[7]=Disp_T ab[LedNumVal%10]; //个位//EA=0; //此处关中断有效的解决了ad打断程序进行的问题去掉它就可以循环了!!for(k=0;k<125;k++) //循环显示这个数300次,为了能看清它大点 cha2就不亮了到了200以上怎么就那么长时间??{cha1=1;for(s=0;s<8;s++) //只显示8个数字{P0=LedOut[s];switch(s) //使用switch 语句控制位选也可以是用查表的方式学员可以试着自己修改{case0:LS138A=0; LS138B=0; LS138C=0; break;case 1:LS138A=1; LS138B=0; LS138C=0; break;case 2:LS138A=0; LS138B=1; LS138C=0; break;case 3:LS138A=1; LS138B=1; LS138C=0; break;case 4:LS138A=0; LS138B=0; LS138C=1; break;case 5:LS138A=1; LS138B=0; LS138C=1; break;case 6:LS138A=0; LS138B=1; LS138C=1; break;case 7:LS138A=1; LS138B=1; LS138C=1; break;}delay(5);cha1=0;}cha2=1; //}cha2=0; //每换数一次显示一下}bx++;P0=Disp_Tab[bx]; //显示管显示为“0”delay(2000);//搞清楚此处延时的影响!!}cha3=1;cha4=1;//delay(10000);}}//**********外部中断1控制取数从零点开始flag1和flag3的作用仅仅是控制完整周期(不再开启和关闭中断或定时器)**********// void adc_kai() interrupt 2//外部中断1 中断号2 3^3引脚{// flag1=!flag1;// if(flag1==1)// flag1=0;// else flag1=1;kd++;if(kd==1){flag1=1;}if(kd==2){kd=0;flag1=0;}//**********ad中断程序定时器查询和再置数(控制步长) ad取数**********//void adc_qushu() interrupt 5{ADC_CONTR&=!ADC_FLAG; //每次都要用软件清中断标志位bus=ADC_RES;ADC_RES=0;ADC_CONTR=ADC_POWER|ADC_SPEEDHH|CH2; //?是否需要每次都上电选速度和通道}//**********延时**********//void delay(int q){int z;while(q--){z=100;while(z--);}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机电压采集电路
设计
This model paper was revised by the Standardization Office on December 10, 2020
1 引言
数据采集是分析模拟信号量数据的有效方法。
而实时显示数据是自动化检测系统的现实需求。
在测试空空导弹导引头的过程中,导引头的响应信号包括内部二次信号和模拟量电压信号。
检测过程中要求检测系统实时显示导引头的工作状态,显示二次电源和模拟量响应电压信号,判断导引头性能,同时保证在非常情况下人为对导引头做出应急处理,保护导引头。
对于模拟量电压信号,通常采用模数转换、事后数据标定的方法实现。
根据现实需求,研制相应检测系统可作为导引头日常维护和修理的重要工具。
这里介绍一种基于单片机和CPLD的实时数据采集显示系统设计方案。
2 系统构成
该系统中待采集显示电压信号共路,动态电压范围为-~+27 V。
由于这些电压信号变化频率较低,或者认为频率无变化,且检测系统只关心其电压值,所以在低采样率下就可满足系统要求。
根据需求,系统设计的采样率即显示刷新速率在1.56 k/s以上。
采用单片机80C196KB和可编程逻辑器件78SLC为核心控制器,以80C196KB内部集成A/D 转换器作为模数转换器实现16路电压信号的实时数据采集、显示、控制。
该系统总体设计结构框图如图1所示。
整个系统主要由信号预处理、信号选通、单片机采集、双机以及数据处理显示等构成。
其中,信号选通模块由CPLD和多路模拟选择器组成。
3 系统硬件电路设计
3.1 信号预处理电路
由于待采集电压信号输入动态范围较宽,且极性各异,对于单片机A/D转换器来说,需要调理到能够采集的电压范围闱0~5 V,所以要统一调理采集信号,如图2所示。
图2中运放和1556均采用双电压供电,以提高动态信号输入范围;均采用精度为0.1%的精密型金属膜电阻,以提高电压转换精度。
在二级电压凋理过程中,MC1556同相输人端采用电路以减少长时间通电情况下温度升高对系统产生的不良影响。
南于电压跟随器具有输入阻抗大和输出驱动能力强的特点,故在预处理电路的输入端和输出端均采用电压跟随电路。
3.2 信号选通电路
508A是一款8通道模拟多路选择器,具有高速转换速度和低内阻特性,通道切换具有防短路功能。
在CPLD控制下,它可对采集信号进行有序通道切换,配合单片机进行数据采
集。
EPMSLC是一款Ahera公司生产的CPLD,其容量为128个宏单元,采用硬件描述语言VHDL 对CPLD编程设置实现信号的选通控制。
首先编写模块对1 MHz进行20分频,输出2路相位相错、周期为20 &;s的矩形同步信号。
其中一路信号经D触发器进行2分频,得到占空比50%、周期为μs的方波信号;然后编写信号选通控制模块。
此模块根据方波信
号和另一路同步信号循环输出控制信号,两模块都在MuxPlus-II环境下开发,CPLD控
制信号时序仿真结果如图3所示,其中,信号和ROAD是单片机主程序运行的勤务信号;1和CS2是2片的片选信号:A0、和A2则是ADG508A通道选通控制信号。
3.3 单片机采集电路
80C196KB 是Intel公司生产的一款16位CMOS单片机,片内集成有8路A/D转换器,该转换器包括一个8通道多路模拟,采样保持电路和10位A/D转换器。
由于该系统外部有多路选择器,故内部无需通道转换,采用一个ACH0通道即可完成数据采集。
对于采用12 MHz晶振的单片机系统,完成一次A/D转换需22μs。
80C196KB的A/D转换器采用
逐次逼近的方法完成模拟量到数字量的转换,基准电压设定非常关键,内部阻容网络将基准电压Vref等分为1 024个阶梯,每级为Vref/1 024 V。
通过与基准电压比较,可
得到10位数据转换结果,其中基准电压的精度以及稳定度直接影响到测量结果的绝对精度。
因此在电路中Vref采用单独电源供电并通过基准稳压源如LM136的5 V提高精度及稳定度。
80C196KB通过判断ROAD信号在其上升沿读取上次A/D转换结果,同时启动A/D转换器转换下一路信号,该单片机用FRM信号作为非屏蔽中断使计数器DXL归零,主程序循环一次,保证对16路通道信号的时分复用采集。
单片机80C196KB程序流程如图4所示。
3.4 双机数据传输
为达到采集数据的实时可控性,系统设计双机通信接口作为单片机A/D转换数据向计算机传输的通道。
计算机采用下的模式通信,速度达500 KB/s~2 MB/s。
使用双端口RAM IDT作为主要元件,通过通信接口,单片机将A/D转换数据存入双端口RAM中,计算机
则实时显示从双端口RAM中读取的数据。
单片机通过双端口 RAM IDT7130的A端口进行
写操作,计算机则通过B端口进行读操作。
握手信号由单片机通过对ROAD信号计数产生,二者可异步读写操作,实现数据交换。
图 5为单片机与计算机接口电路。
4 系统软件设计
4.1 数据标定
在给定Vref=5 V,设单片机采集端口输入电压为Vin与之相对应的A/D转换数字量为X,则X=1 024 Vin/5V。
对于线性变换预处理电路可采用Y=5KX/1 024,其中,Y表示电压实测值,X表示与Y对应的A/D转换值,K为放大器增益。
令K=Ymax/5 V,其中Ymax 表示待测量电压的最大值。
为保证采集精度,应先计算Ymax,以保持足够的A/D转换有效数字。
以待采集电压0~27 V为例,预处理电路增益为27/5=5.4。
4.2 实时显示
读数及显示软件在VC++6.0环境下编写,使用对话框模式,并口采用WDM驱动方式。
软件运行时直接打开驱动设备,同时使用AfxBeginThread()函数生成一个新线程,其控制线程函数实时更新读取并显示数据。
由于单片机采用1O位A/D转换器,所以一次转换结果分两次传输,分别为高位和低位传输。
并口数据传输也采用8位方式。
上位机在读取数据后,2组数据经移位、加法运算后得出一个完整数据,标定后在计算机界面显示。
5 结论
实践证明,该实时采集显示系统完全满足导引头的检测需求。
采集电压精度可达mV级,刷新率在1.56 k/s以上。
该系统采用单片机和CPLD技术,电路设计结构简单,实际应用可靠性高、通用性强、使用灵活,且采集通道具有扩展性。
但在电路设计过程中应注意:由于系统既有模拟电路又有数字电路,所以合理布线对系统至关重要,应采取合理布线措施以保证基准地线的稳定性,从而提高采集精度。