基於51單片機的數字電流電壓表

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路模擬輸入,1路模擬輸出和一個串行I2C總線接口用來與單片機通信。此電路將電流信號和電壓信號進行轉換後傳送給單片機。電路如圖:
在這裏插入圖片描述
(4)總體電路
在這裏插入圖片描述
3.軟件設計
軟件流程相對簡單,當單片機上電後,程序對各個模塊進行初始化後,進入循環,定時檢測電流及電壓值,並將最新的數據顯示在顯示屏上。程序流程如圖:
(1)主函數

void main (void)
{     
	unsigned char midvolt,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);//顯示第二行
//		uartSendStr(dis0,16);	  //串口上報
//		uartSendStr("\n",1);			   //換行
		DelayMs(500);          //延時有助於穩定
	}
}

詳細完整的程序,可下載源碼。

源碼+AD原理圖 下載:關注公衆號,首頁回覆“電壓電流表”獲取資料
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章