找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8653|回復(fù): 18
打印 上一主題 下一主題
收起左側(cè)

DIY高精度電壓表電流表 12位ADC XPT2046 單片機(jī)程序原理圖PCB

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
在實(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格式的):如下:


PCB文件(json格式的):


制作出來(lái)的實(shí)物圖如下:


校正方法:接入負(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ī)源程序如下:
  1. #include "oled.h"
  2. #include "bmp.h"
  3. #include "xpt2046.h"
  4. typedef unsigned int u16;
  5. #define  v_verf 3.6  //基準(zhǔn)電壓最大值
  6. #define  v_aver 2 //分壓比例
  7. #define  v_correction 1
  8. #define  i_correction 0.95
  9. void delay(unsigned int i)
  10. {
  11.         while(i--);
  12. }
  13. void v_datapros()
  14. {
  15.         u16 v_value;
  16.         u16 v;
  17.         
  18.     delay(50000);
  19.         v_value= Read_AD_Data(0xD4);
  20.         delay(50000);
  21.         
  22.     v=(float)v_value*v_verf/4095*1000*2; //4944
  23.         
  24.         OLED_ShowChar(8,2,v/1000+0x30,16);
  25.         OLED_ShowChar(16,2,'.',16);
  26.         OLED_ShowChar(24,2,v%1000/100+0x30,16);
  27.         OLED_ShowChar(32,2,v%100/10+0x30,16);
  28.         OLED_ShowChar(40,2,v%10+0x30,16);
  29.         

  30. }        

  31. void i_datapros()
  32. {
  33.         u16 i_value;
  34.         u16 i;
  35.         delay(50000);
  36.         i_value= Read_AD_Data(0x94);
  37.     delay(50000);
  38.         
  39. //        OLED_ShowChar(8,6,i_value/1000+0x30,16);
  40. //        OLED_ShowChar(16,6,i_value%1000/100+0x30,16);
  41. //        OLED_ShowChar(24,6,i_value%100/10+0x30,16);
  42. //        OLED_ShowChar(32,6,i_value%10+0x30,16);
  43.         
  44.         i=(float)i_value*v_verf/4095*1000*i_correction;     //ma
  45.         
  46.     OLED_ShowChar(8,6,i/1000+0x30,16);
  47.         OLED_ShowChar(16,6,i%1000/100+0x30,16);
  48.         OLED_ShowChar(24,6,i%100/10+0x30,16);
  49.         OLED_ShowChar(32,6,i%10+0x30,16);


  50.         

  51. }
  52. void main(void)
  53. {
  54.         OLED_Init(); //OLED初始化
  55.         OLED_Clear();
  56. //        OLED_DrawBMP(0,0,128,1,BMP1);
  57.     delay(50000);        
  58.         while(1)
  59.         {
  60.                 v_datapros();
  61.                 i_datapros();
  62.         }
  63. }
復(fù)制代碼


Keil代碼和立創(chuàng)格式的json文件下載:

代碼.7z (122.63 KB, 下載次數(shù): 151)


評(píng)分

參與人數(shù) 2黑幣 +55 收起 理由
小當(dāng) + 5
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏22 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:307493 發(fā)表于 2022-6-24 09:51 | 只看該作者
這個(gè)制作不錯(cuò)
回復(fù)

使用道具 舉報(bào)

板凳
ID:149799 發(fā)表于 2022-6-24 19:07 | 只看該作者
詳細(xì),做工精細(xì),謝謝分享。
回復(fù)

使用道具 舉報(bào)

地板
ID:232366 發(fā)表于 2022-6-25 14:00 | 只看該作者
不知道測(cè)量范圍多大
回復(fù)

使用道具 舉報(bào)

5#
ID:491577 發(fā)表于 2022-6-28 11:35 | 只看該作者
89C52只適合學(xué)習(xí),用來(lái)做產(chǎn)品還ADC只能呵呵,ADC不是初學(xué)者可以做好的, 首先是電源,ADC芯片、運(yùn)放必須是線性穩(wěn)壓電源,第二是運(yùn)放,LM358與高精度無(wú)源,樓主如果在意價(jià)格把STC89C52RC和XPT2046換成STC8H,省下的錢(qián)足夠買(mǎi)一個(gè)好點(diǎn)的運(yùn)放。
回復(fù)

使用道具 舉報(bào)

6#
ID:1028260 發(fā)表于 2022-7-1 16:17 | 只看該作者
lm358可換成op07,零漂幾乎沒(méi)有。
回復(fù)

使用道具 舉報(bào)

7#
ID:491577 發(fā)表于 2022-7-1 17:41 | 只看該作者
ccczzzyy 發(fā)表于 2022-7-1 16:17
lm358可換成op07,零漂幾乎沒(méi)有。

op07雖然零漂小但是需要正負(fù)電源,不合適
回復(fù)

使用道具 舉報(bào)

8#
ID:1028260 發(fā)表于 2022-7-1 18:34 | 只看該作者
hhh402 發(fā)表于 2022-7-1 17:41
op07雖然零漂小但是需要正負(fù)電源,不合適

op333可單電源,零漂幾乎沒(méi)有
回復(fù)

使用道具 舉報(bào)

9#
ID:582138 發(fā)表于 2022-7-5 16:15 | 只看該作者
現(xiàn)在的零漂移運(yùn)算放大器太多了,可以試一下
回復(fù)

使用道具 舉報(bào)

10#
ID:620098 發(fā)表于 2022-7-21 14:53 | 只看該作者
樓主做完后測(cè)試效果如何,特別是線性度如何?
回復(fù)

使用道具 舉報(bào)

11#
ID:627942 發(fā)表于 2022-7-29 20:14 | 只看該作者
可以,留個(gè)標(biāo)記.
回復(fù)

使用道具 舉報(bào)

12#
ID:893997 發(fā)表于 2022-8-10 10:56 | 只看該作者
hhh402 發(fā)表于 2022-6-28 11:35
89C52只適合學(xué)習(xí),用來(lái)做產(chǎn)品還ADC只能呵呵,ADC不是初學(xué)者可以做好的, 首先是電源,ADC芯片、運(yùn)放必須是 ...

這個(gè)ADC用的是XPT2046,沒(méi)有51
回復(fù)

使用道具 舉報(bào)

13#
ID:893997 發(fā)表于 2022-8-10 10:57 | 只看該作者
ccczzzyy 發(fā)表于 2022-7-1 16:17
lm358可換成op07,零漂幾乎沒(méi)有。

確實(shí),只是手頭LM358比較多
回復(fù)

使用道具 舉報(bào)

14#
ID:893997 發(fā)表于 2022-8-10 10:57 | 只看該作者
SHANWAZI 發(fā)表于 2022-6-25 14:00
不知道測(cè)量范圍多大

可以自己更改取樣電阻
回復(fù)

使用道具 舉報(bào)

15#
ID:893997 發(fā)表于 2022-8-10 10:58 | 只看該作者
mengfc 發(fā)表于 2022-7-21 14:53
樓主做完后測(cè)試效果如何,特別是線性度如何?

可以符合100ma-2a正常讀數(shù)
回復(fù)

使用道具 舉報(bào)

16#
ID:1043853 發(fā)表于 2022-9-6 21:29 來(lái)自手機(jī) | 只看該作者
很好,很實(shí)用
回復(fù)

使用道具 舉報(bào)

17#
ID:1045132 發(fā)表于 2022-9-21 15:32 | 只看該作者
431基準(zhǔn)是不是不穩(wěn)定
回復(fù)

使用道具 舉報(bào)

18#
ID:1083475 發(fā)表于 2023-6-12 08:52 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

19#
ID:1083996 發(fā)表于 2023-6-16 08:43 | 只看該作者
hhh402 發(fā)表于 2022-6-28 11:35
89C52只適合學(xué)習(xí),用來(lái)做產(chǎn)品還ADC只能呵呵,ADC不是初學(xué)者可以做好的, 首先是電源,ADC芯片、運(yùn)放必須是 ...

這個(gè)可能就是一個(gè)創(chuàng)意提示方案,真的做產(chǎn)品肯定根據(jù)實(shí)際條件選元器件;
實(shí)際很多時(shí)候?qū)τ趪?guó)內(nèi)的同行來(lái)說(shuō),缺乏的只是一個(gè)創(chuàng)意靈感;
看國(guó)外很多的創(chuàng)意很值錢(qián),后期他們買(mǎi)到手之后還要經(jīng)過(guò)大量的實(shí)驗(yàn)和工藝改進(jìn)才能量產(chǎn)化,我們對(duì)一些最初的能從零開(kāi)始先驅(qū)者,總是缺乏一些關(guān)愛(ài)和包容……
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表