sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表
請(qǐng)點(diǎn)上面藍(lán)色字 ? ?即可免費(fèi)訂閱!?
1.簡(jiǎn)述
本文介紹了基于STC89C52單片機(jī)為核心,分別以ACS712-05芯片和串聯(lián)分壓電路為為電流檢測(cè)和電壓檢測(cè)電路,并通過(guò)AD0809數(shù)模轉(zhuǎn)換芯片對(duì)電壓信號(hào)進(jìn)行采集和轉(zhuǎn)換,傳輸給單片機(jī)進(jìn)行處理,最后將處理后的電壓值和電流值通過(guò)LCD1602顯示屏顯示出來(lái)。
2.硬件設(shè)計(jì)
本設(shè)計(jì)的硬件主要分為5部分,分別為:單片機(jī)最小系統(tǒng)、電流信號(hào)采樣電路、電壓信號(hào)采集電路、ADC轉(zhuǎn)換電路、LCD1602顯示屏電路。硬件框圖如圖:
(1)電流信號(hào)采集電路
電流信號(hào)采集電路采用了ACS712-05芯片,該芯完全基于霍爾感應(yīng)的原理設(shè)計(jì),由一個(gè)精確的低偏移線性霍爾傳感器電路與位于接近IC表面的銅箔組成、,電流流過(guò)銅箔時(shí),產(chǎn)生一個(gè)磁場(chǎng),霍爾元件根據(jù)磁場(chǎng)感應(yīng)出一個(gè)線性的電壓信號(hào),經(jīng)過(guò)內(nèi)部的放大、濾波、斬波與修正電路,輸出一個(gè)電壓信號(hào),該信號(hào)從芯片的第七腳輸出,直接反應(yīng)出流經(jīng)銅箔電流的大小。具體電路如圖:
ACS712根據(jù)尾綴的不一樣,量程分為三個(gè)規(guī)格:±5A、±20A、±30A,此次使用的量程為±5A,由于ADC轉(zhuǎn)換芯片只能識(shí)別正壓信號(hào),所以電流的量程為0~5A。ACS712-05電流電壓對(duì)應(yīng)關(guān)系如下圖,Ip=0A即沒(méi)有輸入電流的時(shí)候,對(duì)應(yīng)輸出電壓為2.5V.精確度為185mV/A即為圖中斜線的斜率。取VCC=5V,計(jì)算公式為:
Vout= 2.5 + 0.185*Ip
(2)電壓信號(hào)采集電路
電壓信號(hào)采集電路相對(duì)簡(jiǎn)單,主要使用了兩個(gè)電阻作為串聯(lián)分壓電路,分壓比為3。比如當(dāng)檢測(cè)表筆檢測(cè)15V的電壓時(shí),由于分壓比為3,R3端的電壓為5V。如果需要提高測(cè)試電壓的量測(cè),可以更改分壓比。(注意:在選用分壓電阻時(shí),盡量選擇阻值大一點(diǎn)的電阻,不然電阻過(guò)小會(huì)導(dǎo)致輸入電流過(guò)大;此電路也只適用于測(cè)試輸入阻抗較大的電路上的電壓,不然測(cè)試出來(lái)的誤差較大);電路如圖:
(3)ADC轉(zhuǎn)換電路
本次ADC轉(zhuǎn)換電路采用了PCF8591芯片,該芯片是一個(gè)單電源低功耗的8位CMOS數(shù)據(jù)采集器件,即分辨率為256,具有4路模擬輸入,1路模擬輸出和一個(gè)串行I2C總線接口用來(lái)與單片機(jī)通信。此電路將電流信號(hào)和電壓信號(hào)進(jìn)行轉(zhuǎn)換后傳送給單片機(jī)。電路如圖:
(4)總體電路
3.軟件設(shè)計(jì)
軟件流程相對(duì)簡(jiǎn)單,當(dāng)單片機(jī)上電后,程序?qū)Ω鱾€(gè)模塊進(jìn)行初始化后,進(jìn)入循環(huán),定時(shí)檢測(cè)電流及電壓值,并將最新的數(shù)據(jù)顯示在顯示屏上。程序流程如圖:
(1)主函數(shù)
void main (void){ ??unsigned?char?midvolt,midcur;??//電壓電流中間變量值 Init_Timer0(); //定時(shí)器0初始化??UART_Init();??????//串口初始化????????????? LCD_Init(); //初始化液晶 DelayMs(20); //延時(shí)有助于穩(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檢測(cè)到的 電壓值 DelayMs(50); //延時(shí)有助于穩(wěn)定????midcur=ReadADC(0);????//讀取電流轉(zhuǎn)化后的電壓值 Volt=(float)midvolt*5.13/255*3; //計(jì)算出電壓 *3表示分壓值 Acurrent=(float)midcur*5.13/255; //計(jì)算出電流 if(Acurrent>2.62) //如果電流轉(zhuǎn)換后的電壓值超過(guò)2.62 { Acurrent=(Acurrent-2.62)/0.185; //電流模塊 電壓轉(zhuǎn)換計(jì)算 } else { Acurrent=0;????}?? sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印電壓電流值????LCD_Write_String(0,1,dis0);//顯示第二行 DelayMs(500); //延時(shí)有助于穩(wěn)定 }}源碼+AD原理圖 下載:關(guān)注公眾號(hào),首頁(yè)回復(fù)“電壓電流表“”獲取資料
總結(jié)
以上是生活随笔為你收集整理的sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: usb接口驱动_乾坤合一~Linux设备
- 下一篇: requirednew基于xml配置日志