电流
1、 设计任务
完成一台电流表(外壳采用成品可设计补充模块,采用数码管显示)
主要技术指标:供电电压:220V(+_10%)
测量范围:0—30MA
测量精度:0.5%
仪表功率:3W
仪表灵敏度:0.1MA
2、 #设计
#
摘 要
本设计采用了以单片机为开发平台,控制系采用AT89C52单片机,A/D转换采用PCF8951。系统除能确保实现要求的功能外,还可以方便进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。简易数字电压测量电路由A/D转换、数据处理、显示控制等组成。分频器是由两块74S74芯片组成的二分频电路。
关键词:单片机;AT89C52;A/D转换;远程;电压表;数据处理
方案一: 将被测信号经LM331(F/V)频率电压转换器,将电压信号转化为频率信号然后通过STC89C52RC单片机编程计数,然后由数码管显示所测量的电压。
方案二:将被测信号经高阻输入LM324射极跟随器,电压信号再通过PCF8591A/D转换器信号传输到单片机上计数,在数码管上显示。
上述两种方案中,本设计采用方案二。相对应于方案一而言,方案二对远程电压表的电压测量精确度高。被测信号经高阻输入LM324射极跟随器,使电压信号不会在传输过程中损耗。PCF8591A/D转换器上输入输出的地址、控制和数据信号都是通过双线双向I²C总线以串行的方式进行传输。I2C总线系统具有很大的灵活性和独立的电气特性。
1.设计电路总体框图
该电路由六部分组成,其工作原理是利用A/D将模拟信号转换成数字信号,数字信号在通过单片机,由单片机计算和校准后在通过数码管显示出来,由此制作出一个简易的直流电压表。
图1总体设计方框图
2、单向桥式整流电路设计
将交流信号转换成直流信号
图2 单向桥式整流电路
3、A/D模拟信号电路设计
A/D转换部分采用的PCF8951芯片是TI工公司生产的10位逐次逼近模数转换器,该器件具有两个数字输入端和一个3态输出端。没有采用同系列的8位A/D转换芯片PCF8951,是因为本芯片精度更高,可以达到令人满意的效果模数转换是用单片机控制模数转换芯片(A/D),使它对外部的一个模拟信号进行采样,量化然后转化为一个离散的数字量,提供控制器做进一步处理。此次电压表总体设计方案是单片机的I/0口输出信号来控制A/D启动转换,将送入的模拟信号转换成一个8位数字量,然后通过I/0口送回单片机内部进行处理,单片机进行一系列的运算和校准后,通过数码管显示出来
图3 A/D转换
4.单片机控制电路设计
AT89C52单片机是一个低电压高性能的CMOS位单片机,是一个智能多功能的单片机,在电路中接收模拟信号,然后计算校准信号后输出一种数字信号,然后输出到数码管显示。其中P2.5/P2.6是输出与接受的端口。
图4 单片机STC89C52
5、显示电路设计
显示方面采用了74LS48译码器,以其功能强大,编程简单,控显可靠,可泛用于工业控制器等力一面的数码显示驱动,比较成熟的应用即为与单片机的结合。选用LED数码管显示电压值,精度高,可视距离远。LED数码管简单经济,使我放弃了本想使用的液晶显示单元,虽然先进有挑战性,但却极大的增加了成本,对产品的功能设计而言毫无意义,所以最后选择了LED数码管做。
图5 LED
调试测试 :电流测量
设计任务:以LM331为设计核心的电压频率转换模块测试
测试设备:GDS1062示波器一台,直流稳压电源一台,万能表两只,
测试方法:
1、打开直流稳压电源,分别调出两个+15V和1V的电压,校准示波器
2、将LM331电路板的输入电源接到稳压电源的+15V,电路的输入信号接到稳压电源的+1V
3、分别调节输入电压:1V,2V,3V,4V,5V真实电流:4.9MA,9.6MA,14.3MA,19.0MA23.8MA,用示波器测量输出电流,分别读出频率信号并记录。
Iin (MA)
4.9
9.6
14.3
19.0
23.8
U (V)
1
2
3
4
5
Iout(MA)
4.07
7.99
11.93
16.2
20.3
绝对误差
0.845
相对误差
59%
表一
3、 设计总结
本设计是基于SAT89C52单片机开发平台和自动控制原理的基础上实现的一种数字电流表系统。该系统采用单片机作为控制核心,通过发射极实现被测电流的数据采样;使用系列比较器检测输入电流的范围,并通过A/D转换实现了输入量程的自动转换;由TCF8591 和数码管组成 ,将测量的电流信号显示出来 。
本文采用SAT89C52进行数据控制 、 处理,送到显示器显示 ,硬件结构简单 , 软 件采用C语言实现 , 程序简单可读写性强 ,效率高 。与传统的电路相比 ,具有方便操作 、 理速度快 、 定性高 、性价比高的优点 , 具有一定的使 用 价值 。
附录1 电流表控制电路原理图
附录2单片机控制电路
附录3电源设计电路
附录4数码管显示设计电路
附录5 计数程序
#include
#define uint unsigned int
#define uchar unsigned char
uchar code a[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //数码管不带小数点断码
uchar wx[4]={0xfe,0xfd,0xfb,0xf7};//位选
uint counter;
void initial()
{
TMOD=0x50;
TH1=0x00;
TL1=0x00;
IE=0x00;
TR1=1;
}
void delay (uint k)
{
uint data i,j;
for(i=0;i