1.簡述
本文介紹了基于STC89C52單片機(jī)為核心,分別以ACS712-05芯片和串聯(lián)分壓電路為為電流檢測和電壓檢測電路,并通過AD0809數(shù)模轉(zhuǎn)換芯片對電壓信號進(jìn)行采集和轉(zhuǎn)換,傳輸給單片機(jī)進(jìn)行處理,最后將處理后的電壓值和電流值通過LCD1602顯示屏顯示出來。
2.硬件設(shè)計
本設(shè)計的硬件主要分為5部分,分別為:單片機(jī)最小系統(tǒng)、電流信號采樣電路、電壓信號采集電路、ADC轉(zhuǎn)換電路、LCD1602顯示屏電路。 硬件框圖如圖:
(1)電流信號采集電路
電流信號采集電路采用了ACS712-05芯片,該芯完全基于霍爾感應(yīng)的原理設(shè)計,由一個精確的低偏移線性霍爾傳感器電路與位于接近IC表面的銅箔組成、,電流流過銅箔時,產(chǎn)生一個磁場,霍爾元件根據(jù)磁場感應(yīng)出一個線性的電壓信號,經(jīng)過內(nèi)部的放大、濾波、斬波與修正電路,輸出一個電壓信號,該信號從芯片的第七腳輸出,直接反應(yīng)出流經(jīng)銅箔電流的大小。 具體電路如圖:
ACS712根據(jù)尾綴的不一樣,量程分為三個規(guī)格:±5A、±20A、±30A,此次使用的量程為±5A,由于ADC轉(zhuǎn)換芯片只能識別正壓信號,所以電流的量程為0~5A。 ACS712-05電流電壓對應(yīng)關(guān)系如下圖,Ip=0A即沒有輸入電流的時候,對應(yīng)輸出電壓為2.5V.精確度為185mV/A即為圖中斜線的斜率。 取VCC=5V,計算公式為:
Vout= 2.5 + 0.185*IP
(2)電壓信號采集電路
電壓信號采集電路相對簡單,主要使用了兩個電阻作為串聯(lián)分壓電路,分壓比為3。 比如當(dāng)檢測表筆檢測15V的電壓時,由于分壓比為3,R3端的電壓為5V。 如果需要提高測試電壓的量測,可以更改分壓比。 (注意:在選用分壓電阻時,盡量選擇阻值大一點的電阻,不然電阻過小會導(dǎo)致輸入電流過大; 此電路也只適用于測試輸入阻抗較大的電路上的電壓,不然測試出來的誤差較大); 電路如圖:
(3)ADC轉(zhuǎn)換電路
本次ADC轉(zhuǎn)換電路采用了PCF8591芯片,該芯片是一個單電源低功耗的8位CMOS數(shù)據(jù)采集器件,即分辨率為256,具有4路模擬輸入,1路模擬輸出和一個串行I2C總線接口用來與單片機(jī)通信。 此電路將電流信號和電壓信號進(jìn)行轉(zhuǎn)換后傳送給單片機(jī)。 電路如圖:
(4)總體電路
3.軟件設(shè)計
軟件流程相對簡單,當(dāng)單片機(jī)上電后,程序?qū)Ω鱾€模塊進(jìn)行初始化后,進(jìn)入循環(huán),定時檢測電流及電壓值,并將最新的數(shù)據(jù)顯示在顯示屏上。 程序流程如圖:
(1)主函數(shù)
void main (void)
{
unsigned char midvolt,midcur; //電壓電流中間變量值
Init_Timer0(); //定時器0初始化
UART_Init(); //串口初始化
LCD_Init(); //初始化液晶
DelayMs(20); //延時有助于穩(wěn)定
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) //主循環(huán)
{
midvolt=ReadADC(1); //讀取AD檢測到的 電壓值
DelayMs(50); //延時有助于穩(wěn)定
midcur=ReadADC(0); //讀取電流轉(zhuǎn)化后的電壓值
Volt=(float)midvolt*5.13/255*3; //計算出電壓 *3表示分壓值
Acurrent=(float)midcur*5.13/255; //計算出電流
if(Acurrent>2.62) //如果電流轉(zhuǎn)換后的電壓值超過2.62
{
Acurrent=(Acurrent-2.62)/0.185; //電流模塊 電壓轉(zhuǎn)換計算
}
else
{
Acurrent=0;
}
sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印電壓電流值
LCD_Write_String(0,1,dis0);//顯示第二行
DelayMs(500); //延時有助于穩(wěn)定
}
}
-
傳感器
+關(guān)注
關(guān)注
2551文章
51099瀏覽量
753572 -
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635306 -
電壓表
+關(guān)注
關(guān)注
3文章
318瀏覽量
38959 -
STC89C52
+關(guān)注
關(guān)注
41文章
330瀏覽量
82061 -
采集電路
+關(guān)注
關(guān)注
3文章
28瀏覽量
12277
發(fā)布評論請先 登錄
相關(guān)推薦
評論