1.简述
本文介绍了基于STC89C52单片机为核心,分别以ACS712-05芯片和串联分压电路为为电流检测和电压检测电路,并通过AD0809数模转换芯片对电压信号进行采集和转换,传输给单片机进行处理,最后将处理后的电压值和电流值通过LCD1602显示屏显示出来。
2.硬件设计
本设计的硬件主要分为5部分,分别为:单片机最小系统、电流信号采样电路、电压信号采集电路、ADC转换电路、LCD1602显示屏电路。 硬件框图如图:
(1)电流信号采集电路
电流信号采集电路采用了ACS712-05芯片,该芯完全基于霍尔感应的原理设计,由一个精确的低偏移线性霍尔传感器电路与位于接近IC表面的铜箔组成、,电流流过铜箔时,产生一个磁场,霍尔元件根据磁场感应出一个线性的电压信号,经过内部的放大、滤波、斩波与修正电路,输出一个电压信号,该信号从芯片的第七脚输出,直接反应出流经铜箔电流的大小。 具体电路如图:
ACS712根据尾缀的不一样,量程分为三个规格:±5A、±20A、±30A,此次使用的量程为±5A,由于ADC转换芯片只能识别正压信号,所以电流的量程为0~5A。 ACS712-05电流电压对应关系如下图,Ip=0A即没有输入电流的时候,对应输出电压为2.5V.精确度为185mV/A即为图中斜线的斜率。 取VCC=5V,计算公式为:
Vout= 2.5 + 0.185*IP
(2)电压信号采集电路
电压信号采集电路相对简单,主要使用了两个电阻作为串联分压电路,分压比为3。 比如当检测表笔检测15V的电压时,由于分压比为3,R3端的电压为5V。 如果需要提高测试电压的量测,可以更改分压比。 (注意:在选用分压电阻时,尽量选择阻值大一点的电阻,不然电阻过小会导致输入电流过大; 此电路也只适用于测试输入阻抗较大的电路上的电压,不然测试出来的误差较大); 电路如图:
(3)ADC转换电路
本次ADC转换电路采用了PCF8591芯片,该芯片是一个单电源低功耗的8位CMOS数据采集器件,即分辨率为256,具有4路vwin 输入,1路模拟输出和一个串行I2C总线接口用来与单片机通信。 此电路将电流信号和电压信号进行转换后传送给单片机。 电路如图:
(4)总体电路
3.软件设计
软件流程相对简单,当单片机上电后,程序对各个模块进行初始化后,进入循环,定时检测电流及电压值,并将最新的数据显示在显示屏上。 程序流程如图:
(1)主函数
voidmain(void){unsignedcharmidvolt,midcur;//电压电流中间变量值Init_Timer0();//定时器0初始化UART_Init();//串口初始化LCD_Init();//初始化液晶DelayMs(20);//延时有助于稳定LCD_Clear();sprintf(dis0,"My Designer!! ");//打印LCD_Write_String(0,0,dis0);//显示第一行sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印电压电流值LCD_Write_String(0,1,dis0);//显示第二行uartSendStr("reday ok!!",10);while(1)//主循环{ midvolt=ReadADC(1);//读取AD检测到的 电压值DelayMs(50);//延时有助于稳定midcur=ReadADC(0);//读取电流转化后的电压值Volt=(float)midvolt*5.13/255*3;//计算出电压 *3表示分压值Acurrent=(float)midcur*5.13/255;//计算出电流if(Acurrent>2.62)//如果电流转换后的电压值超过2.62{ Acurrent=(Acurrent-2.62)/0.185;//电流模块 电压转换计算}else{ Acurrent=0; }sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印电压电流值LCD_Write_String(0,1,dis0);//显示第二行DelayMs(500);//延时有助于稳定} }
- 传感器
+关注
关注
2541文章
49565浏览量
745806 - 单片机
+关注
关注
6017文章
44266浏览量
626676 - 电压表
+关注
关注
3文章
316浏览量
38686 - STC89C52
+关注
关注
41文章
330浏览量
81745 - 采集电路
+关注
关注
3文章
28浏览量
12237
发布评论请先登录
相关推荐
利用STC89C52单片机制作了一个简单的数字电压表
如何使用STC89C52单片机进行数控直流稳压电源的设计

如何使用STC89C52单片机和AD0809设计数字电压表

STC89C52单片机

评论