在實(shí)際測(cè)試中,不管是研發(fā)還是維修,我們經(jīng)常需要測(cè)量設(shè)備的電壓電流,根據(jù)這個(gè)情況,我做了一個(gè)電壓電流表。
單片機(jī):由于手頭上STC89C52RC很多,而且這也是大多數(shù)人比較常用的,所以我用了89C52RC做處理器。
ADC采樣:這個(gè)單片機(jī)沒(méi)有內(nèi)置ADC,我采用XPT2046做ADC采集,XPT2046不僅精度高(12位ADC),
而且有四個(gè)通道,還很便宜,非常適合ADC采樣。
基準(zhǔn)電壓:由于隨著輸入電壓與負(fù)載的波動(dòng),會(huì)使得XPT2046的電壓不是標(biāo)準(zhǔn)的5V,雖然XPT2046內(nèi)置了
基準(zhǔn)電壓,但是太小了,會(huì)導(dǎo)致這個(gè)表的量程不夠,所以我采用了TL431產(chǎn)生一個(gè)基準(zhǔn)電壓。
采樣電阻:電流采樣使用一個(gè)0.1歐姆1%精度,2512封裝的貼片電阻,如果有1A電流,則產(chǎn)生0.1W的功耗,
取樣電阻不會(huì)發(fā)燙,但是此時(shí)電阻只有0.1V的電壓理論ADC采集是沒(méi)問(wèn)題,但是如果流過(guò)0.1A,
那只有0.01V的電壓,ADC采樣就不合適,所以需要放大。電壓采樣采用兩個(gè)0603的電阻并聯(lián),
由于接了跟隨器,所以這兩個(gè)電阻可以取大一些降低功耗(雖然問(wèn)題不大)。
放大電路:采用LM358,一路做電流采樣的放大,本項(xiàng)目是放大10倍,另一路做電壓采樣跟隨器。
LM358存在零點(diǎn)漂移,所以在設(shè)置放大倍數(shù)的適合可能需要進(jìn)行微調(diào)。
顯示:使用了OLED,測(cè)試0.96寸的,實(shí)際可以使用0.91寸即可。
電路原理圖(json格式的):如下:
51hei圖片_20220616115116.png (121.86 KB, 下載次數(shù): 104)
下載附件
2022-6-16 11:51 上傳
PCB文件(json格式的):
51hei圖片_20220616115208.png (89.86 KB, 下載次數(shù): 86)
下載附件
2022-6-16 11:52 上傳
制作出來(lái)的實(shí)物圖如下:
51hei圖片_20220616115222.jpg (306.77 KB, 下載次數(shù): 77)
下載附件
2022-6-16 11:52 上傳
校正方法:接入負(fù)載,輸出一個(gè)足夠大的電流,1A最好,然后測(cè)試取樣電阻的電壓,應(yīng)該是0.1V,然后可以微調(diào)LM358的電阻使得OLED的顯示正確,也可以在代碼微調(diào),代碼里面有微調(diào)系數(shù)。附加功能:加了三個(gè)按鍵,可以額外開(kāi)發(fā)更多功能。代碼留有很多開(kāi)發(fā)的余地,并且可以自己編程序顯示電阻和功率。
單片機(jī)源程序如下:- #include "oled.h"
- #include "bmp.h"
- #include "xpt2046.h"
- typedef unsigned int u16;
- #define v_verf 3.6 //基準(zhǔn)電壓最大值
- #define v_aver 2 //分壓比例
- #define v_correction 1
- #define i_correction 0.95
- void delay(unsigned int i)
- {
- while(i--);
- }
- void v_datapros()
- {
- u16 v_value;
- u16 v;
-
- delay(50000);
- v_value= Read_AD_Data(0xD4);
- delay(50000);
-
- v=(float)v_value*v_verf/4095*1000*2; //4944
-
- OLED_ShowChar(8,2,v/1000+0x30,16);
- OLED_ShowChar(16,2,'.',16);
- OLED_ShowChar(24,2,v%1000/100+0x30,16);
- OLED_ShowChar(32,2,v%100/10+0x30,16);
- OLED_ShowChar(40,2,v%10+0x30,16);
-
- }
- void i_datapros()
- {
- u16 i_value;
- u16 i;
- delay(50000);
- i_value= Read_AD_Data(0x94);
- delay(50000);
-
- // OLED_ShowChar(8,6,i_value/1000+0x30,16);
- // OLED_ShowChar(16,6,i_value%1000/100+0x30,16);
- // OLED_ShowChar(24,6,i_value%100/10+0x30,16);
- // OLED_ShowChar(32,6,i_value%10+0x30,16);
-
- i=(float)i_value*v_verf/4095*1000*i_correction; //ma
-
- OLED_ShowChar(8,6,i/1000+0x30,16);
- OLED_ShowChar(16,6,i%1000/100+0x30,16);
- OLED_ShowChar(24,6,i%100/10+0x30,16);
- OLED_ShowChar(32,6,i%10+0x30,16);
-
- }
- void main(void)
- {
- OLED_Init(); //OLED初始化
- OLED_Clear();
- // OLED_DrawBMP(0,0,128,1,BMP1);
- delay(50000);
- while(1)
- {
- v_datapros();
- i_datapros();
- }
- }
復(fù)制代碼
51hei.png (7.14 KB, 下載次數(shù): 73)
下載附件
2022-6-16 15:00 上傳
Keil代碼和立創(chuàng)格式的json文件下載:
代碼.7z
(122.63 KB, 下載次數(shù): 151)
2022-6-16 15:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|