標(biāo)題: 開源基于STC單片機內(nèi)部基準(zhǔn)mini電壓表—極簡設(shè)計創(chuàng)新制作 [打印本頁]

作者: 劉海龍    時間: 2016-10-20 15:32
標(biāo)題: 開源基于STC單片機內(nèi)部基準(zhǔn)mini電壓表—極簡設(shè)計創(chuàng)新制作
開源基于STC單片機內(nèi)部基準(zhǔn)(Bandgap voltage reference)mini電壓表—極簡設(shè)計創(chuàng)新制作
1.hello-壇友們大家好!今天開源制作一款9.99v量程的電壓表(改變一下電阻和程序可以改為更大量程),只需要單片機數(shù)碼管電阻三種4個元件(沒有用到TL431之類的外接基準(zhǔn)芯片),極簡設(shè)計精簡制作。感覺贊的話在評論區(qū)留個評論,謝謝支持,大家的支持就是我發(fā)帖的最大動力。
2.利用STC單片機STC15W408AS內(nèi)部自帶的基準(zhǔn)電壓Bandgap voltage reference)最為參考電壓,用ADC測量出外部輸入的電壓。
3.昨晚奮斗到凌晨把程序改好,今天畫了原理圖,拍了照片。(發(fā)帖是一件辛苦的活,請評論一下帖子順便贊)
4.Bandgap voltage reference,常常有人簡單地稱它為Bandgap。最經(jīng)典的帶隙基準(zhǔn)是利用一個與溫度成正比的電壓與一個與溫度成反比的電壓之和,二者溫度系數(shù)相互抵消,實現(xiàn)與溫度無關(guān)的電壓基準(zhǔn),約為1.25V。因為其基準(zhǔn)電壓與硅的帶隙電壓差不多,因而稱為帶隙基準(zhǔn)。實際上利用的不是帶隙電壓,F(xiàn)在有些Bandgap結(jié)構(gòu)輸出電壓與帶隙電壓也不一致。(來自百度百科的解釋)
圖片中沒有測別的電源電壓,測量的是USB的供電電壓


mini電壓表測出來的是4.75v 萬用表測出來的是4.76v


下圖為在實驗板上的布局先插入電阻‘’插座、單片機


數(shù)碼管直接壓在單片機上插入實驗板(焊接過程自行腦補)


下圖為PADS畫的原理圖,附件中有原版。


看過留個評論謝謝!
  1. /********************************************/
  2. //2016.10.20日 1:01編寫完成
  3. //作者:劉海龍 (讀單片機內(nèi)部BandGap基準(zhǔn)電壓值參考的STC官網(wǎng)程序)
  4. //硬件:STC15W408AS+3位共陰數(shù)碼管+2個10K的電阻(1/4w)
  5. //晶振無說明的情況選12M
  6. //測量口P1.7
  7. #include <STC15W.h>
  8. #include <intrins.h>
  9. #include<4LED_YIN.H>//數(shù)碼管驅(qū)動顯示程序
  10. #include <BandGap.H>//包含讀單片機內(nèi)部BandGap基準(zhǔn)電壓值        
  11. /********************************/
  12. void main (void)
  13. {        Delay20ms();//待系統(tǒng)穩(wěn)定
  14.     InitADC();//初始化ADC
  15.     P1M1=0X80;//P1.7高阻輸入
  16.         init();//IO口設(shè)置初始化
  17.     while (1)
  18.     {
  19.         ShowResult(7);//顯示通道P1.7的測量值、單位為毫伏
  20.                 disp();        //數(shù)碼管顯示電壓值
  21.     }
  22. }
復(fù)制代碼





ADC極簡電壓表.rar

910.9 KB, 下載次數(shù): 1530, 下載積分: 黑幣 -5

原理圖+源程序


作者: 劉海龍    時間: 2016-10-20 16:39

下載時要勾選圖片中紅色圈內(nèi)的選項

作者: taoran    時間: 2016-10-20 19:52
電路還是很簡潔的,stc的內(nèi)部基準(zhǔn)不知道精度怎么樣。先收藏備用了,對了樓主你那個原理圖還漂亮 請教下是用什么軟件做的。
作者: 劉海龍    時間: 2016-10-20 21:13
taoran 發(fā)表于 2016-10-20 19:52
電路還是很簡潔的,stc的內(nèi)部基準(zhǔn)不知道精度怎么樣。先收藏備用了,對了樓主你那個原理圖還漂亮 請教下是用 ...

用的PADS9.5畫的
作者: 1123212143255    時間: 2016-11-3 04:02
做出來了,引腳可以任意改,非常好用。
作者: 尚尚網(wǎng)    時間: 2016-11-3 14:50
這個做和不錯。
作者: Y!NG    時間: 2016-11-15 10:44
并沒有sch原理圖,,。
作者: Y!NG    時間: 2016-11-15 10:45
尚尚網(wǎng) 發(fā)表于 2016-11-3 14:50
這個做和不錯。

你下載的文件有原理圖么,有的話郵一份1218946827  企鵝
作者: 尚尚網(wǎng)    時間: 2016-11-15 16:18
Y!NG 發(fā)表于 2016-11-15 10:45
你下載的文件有原理圖么,有的話郵一份1218946827  企鵝

我看過刪了。
作者: 尚尚網(wǎng)    時間: 2016-11-15 16:19
Y!NG 發(fā)表于 2016-11-15 10:45
你下載的文件有原理圖么,有的話郵一份1218946827  企鵝

http://c.51hei.com/d/forum/201610/20/152000q1w7oikbv1bo2oek.png、
上面不上有嗎?
作者: 春風(fēng)秋葉    時間: 2016-11-15 17:05
感謝樓主分享
作者: 劉海龍    時間: 2016-11-15 17:35
Y!NG 發(fā)表于 2016-11-15 10:44
并沒有sch原理圖,,。

有的,你解壓出來后有個ADC.sch文件就是,之前是手工畫的圖,后來改成電腦畫的了。
作者: 70700    時間: 2016-11-18 16:03
頂一頂,下載
作者: wasen    時間: 2016-11-18 16:27
這是好東西啊,收藏起來先。。。
作者: 越快樂越墮落    時間: 2016-11-20 21:32
Y!NG 發(fā)表于 2016-11-15 10:45
你下載的文件有原理圖么,有的話郵一份1218946827  企鵝

上面有圖直接復(fù)制一份不就好了 又不需要你改
作者: 越快樂越墮落    時間: 2016-11-20 21:33
只有我一個人覺得很浪費嗎???那么多IO口都沒用。不知道精度怎么樣
作者: somlye    時間: 2016-11-25 21:01
很好,收藏了!
作者: cnz    時間: 2017-1-16 08:20
非常棒,我也要學(xué)著做一個裝在電源上。
作者: zmmatlll    時間: 2017-3-21 19:59
頂貼了,下載下來看看,嘿嘿
作者: xiaoxiao///    時間: 2017-3-27 15:35
求附件內(nèi)容
作者: hxc888    時間: 2017-3-30 22:23
正好學(xué)習(xí),能郵到,O(∩_∩)O謝謝
作者: nnq    時間: 2017-4-20 19:53
精簡的設(shè)計,精度0.5mv嗎
作者: 劉海龍    時間: 2017-4-21 12:18
nnq 發(fā)表于 2017-4-20 19:53
精簡的設(shè)計,精度0.5mv嗎

精度沒有那么高,兩個分壓電阻也有誤差的。
作者: oosheoo    時間: 2017-4-24 22:04
這個的頂起來啊,這么好的源碼
作者: 越快樂越墮落    時間: 2017-4-29 18:54
怎么修改測量范圍?具體辦法是?
作者: 劉海龍    時間: 2017-4-30 23:03
越快樂越墮落 發(fā)表于 2017-4-29 18:54
怎么修改測量范圍?具體辦法是?

兩個電阻串聯(lián)分壓原理,改變兩個電阻的比值可以改變分壓多少,從而改變量程。
作者: 越快樂越墮落    時間: 2017-5-2 18:50
劉海龍 發(fā)表于 2017-4-30 23:03
兩個電阻串聯(lián)分壓原理,改變兩個電阻的比值可以改變分壓多少,從而改變量程。

程序如何修改呢
作者: 劉海龍    時間: 2017-5-2 22:34
越快樂越墮落 發(fā)表于 2017-5-2 18:50
程序如何修改呢

具體修改方法見圖片

21.png (19.37 KB, 下載次數(shù): 438)

21.png

作者: huyin    時間: 2017-5-3 16:27
很好,不錯學(xué)習(xí)下。
作者: 山中人家    時間: 2017-5-3 17:41
贊一個,給力
作者: 越快樂越墮落    時間: 2017-5-4 11:11
劉海龍 發(fā)表于 2017-5-2 22:34
具體修改方法見圖片

這樣就可以了?數(shù)碼管的百位會不會亂碼?是繼續(xù)用三位數(shù)碼管嗎?如果是,那么小數(shù)點的位移怎么解決?比如測的電壓為30.5v時。
作者: 人工智能威力    時間: 2017-5-4 14:55
劉海龍 發(fā)表于 2017-5-2 22:34
具體修改方法見圖片

我理解能力有問題!一直很蒙你直接說量程到30V要怎么修改這樣好明白一點
作者: 劉海龍    時間: 2017-5-4 22:32
本帖最后由 劉海龍 于 2017-5-4 22:39 編輯
人工智能威力 發(fā)表于 2017-5-4 14:55
我理解能力有問題!一直很蒙你直接說量程到30V要怎么修改這樣好明白一點

電阻R2改為2k,程序中的v=v*2改為v=v*6顯示程序也需要改為下面的這樣/******************顯示程序*************************/
void disp(){
unsigned int i;
        for(i=0;i<50;i++){
                diplay_data (1,disdata[v/10000]);
                diplay_data (2,disdata[v%10000/1000]+0x80);
                diplay_data (3,disdata[v%1000/100]);
        }
}


作者: 劉海龍    時間: 2017-5-4 22:38
越快樂越墮落 發(fā)表于 2017-5-4 11:11
這樣就可以了?數(shù)碼管的百位會不會亂碼?是繼續(xù)用三位數(shù)碼管嗎?如果是,那么小數(shù)點的位移怎么解決?比如 ...

/******************顯示程序*************************/
void disp(){
unsigned int i;
        for(i=0;i<50;i++){
                diplay_data (1,disdata[v/10000]);
                diplay_data (2,disdata[v%10000/1000]+0x80);
                diplay_data (3,disdata[v%1000/100]);
        }
}
作者: 越快樂越墮落    時間: 2017-5-5 14:05
劉海龍 發(fā)表于 2017-5-4 22:38
/******************顯示程序*************************/
void disp(){
unsigned int i;

還請詳細說一下,我不太懂你的意思,謝謝
作者: XDDZ1013    時間: 2017-5-12 21:52
謝謝分享,學(xué)習(xí)一下
作者: XDDZ1013    時間: 2017-5-12 21:54
下載學(xué)習(xí)學(xué)習(xí)
作者: 強如我蔥    時間: 2017-5-28 14:23
電壓變化公式是什么
作者: 強如我蔥    時間: 2017-5-28 17:20
學(xué)習(xí)一下
作者: 強如我蔥    時間: 2017-5-28 17:20
很好,值得分享
作者: 啦啦拉    時間: 2017-6-8 20:38
受教了,以前還不知道bandgap是什么
作者: 1qaz2wsx77    時間: 2017-6-9 07:37
學(xué)習(xí)了
作者: XDDZ1013    時間: 2017-6-9 21:41
單片機用STC12C5204AD可以嗎?頭文件要不要改?
作者: ytechcn    時間: 2017-6-13 17:23
你好,請教下,這個編譯時怎么會顯示警告的。
#if (MAIN_Fosc >= 24000000L)
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_30MHZ
#elif (MAIN_Fosc >= 20000000L)
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_24MHZ
#elif (MAIN_Fosc >= 12000000L)
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_20MHZ
#elif (MAIN_Fosc >= 6000000L)
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_12MHZ
#elif (MAIN_Fosc >= 3000000L)
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_6MHZ
#elif (MAIN_Fosc >= 2000000L)
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_3MHZ
#elif (MAIN_Fosc >= 1000000L)
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_2MHZ
#else
        #define                ISP_WAIT_FREQUENCY        ISP_WAIT_1MHZ
#endif

作者: ytechcn    時間: 2017-6-13 17:51
大神,求指教下你這個程序編譯時出現(xiàn)這個警告,我要注意什么問題嗎?還是我哪里出錯了:
Build target 'Target 1'
compiling STC15ADC.c...
STC15W.h(526): warning C322: unknown identifier
STC15W.h(528): warning C322: unknown identifier
STC15W.h(530): warning C322: unknown identifier
STC15W.h(532): warning C322: unknown identifier
STC15W.h(534): warning C322: unknown identifier
STC15W.h(536): warning C322: unknown identifier
STC15W.h(538): warning C322: unknown identifier
linking...
Program Size: data=22.0 xdata=0 code=1674
creating hex file from "STC15內(nèi)部基準(zhǔn)測量電壓程序"...
"STC15內(nèi)部基準(zhǔn)測量電壓程序" - 0 Error(s), 7 Warning(s).
作者: join22life    時間: 2017-8-17 10:22
非常感謝  學(xué)習(xí)中
作者: erzhu2007    時間: 2017-8-17 12:02
嘿,樓主強大,蝦蝦弄
作者: 劉海龍    時間: 2017-9-19 23:15
ytechcn 發(fā)表于 2017-6-13 17:23
你好,請教下,這個編譯時怎么會顯示警告的。
#if (MAIN_Fosc >= 24000000L)
        #define                ISP_WAIT_FREQUEN ...

把這些信息刪除就好了,不影響程序運行。
作者: king_zxt    時間: 2017-9-20 13:46
贊一個
作者: lzptt    時間: 2017-9-20 15:01
好文,必須收藏,贊一個
作者: join22life    時間: 2017-9-21 17:01
再看了一次,受教了,非常感謝,找時間也做個
作者: hclin    時間: 2017-9-26 01:25
very good, nice job !!!
作者: lsrly    時間: 2017-9-28 22:04
我改用共陽數(shù)碼管,怎么兩個數(shù)碼管同時顯示,可以講一下數(shù)碼管點掃描的原理嗎?就是你這個數(shù)碼管動態(tài)顯示的原理,謝謝
作者: 劉海龍    時間: 2017-9-28 22:37
lsrly 發(fā)表于 2017-9-28 22:04
我改用共陽數(shù)碼管,怎么兩個數(shù)碼管同時顯示,可以講一下數(shù)碼管點掃描的原理嗎?就是你這個數(shù)碼管動態(tài)顯示的 ...

看程序中的數(shù)碼管底層驅(qū)動函數(shù)4LED_Y.H
作者: lsrly    時間: 2017-9-29 20:58
劉海龍 發(fā)表于 2017-9-28 22:37
看程序中的數(shù)碼管底層驅(qū)動函數(shù)4LED_Y.H

看了,只是還不太了解這個時間是多少
作者: KDQ10328    時間: 2017-10-4 16:39
謝謝,正想學(xué)習(xí)仿制一個
作者: yao16811    時間: 2017-10-5 11:19
這個非常實用,代碼收藏了!
作者: lhuijiang    時間: 2017-10-13 08:34
電路和程序都很簡潔。
作者: lsrly    時間: 2017-10-17 21:55
這個怎么增加平均值,也就是取十次戓更多次
作者: jmkl128    時間: 2017-10-31 05:03

很好,值得分享
作者: lemon0210    時間: 2017-10-31 10:36
感謝樓主分享
作者: 劉海龍    時間: 2017-11-5 21:02
lsrly 發(fā)表于 2017-10-17 21:55
這個怎么增加平均值,也就是取十次戓更多次

百度搜索ADC平均值濾波法
作者: pgdw    時間: 2017-11-18 09:44
stc的單片機還是很不錯的,感謝樓主無私分享。
作者: criman    時間: 2017-11-18 09:56
您好樓主,請問如何我用段式lcd如何代替您文中的三位數(shù)碼管
作者: fly_apple    時間: 2017-11-20 15:06
剛開始學(xué)習(xí),謝謝
作者: fly_apple    時間: 2017-11-20 15:08
剛開始學(xué)習(xí)單片機,正好用這個練練手,謝謝樓主。
作者: criman    時間: 2017-11-25 16:23
電壓跳動比較大怎么解決?
作者: jmkl128    時間: 2017-12-4 17:09
感謝開源,按照樓主的圖和程序作了一個,用的是16腳的單片機,不錯!
作者: 愛喝檸檬水    時間: 2017-12-5 12:16
感謝分享
作者: 蘇大胡工    時間: 2017-12-11 09:02
好貼,學(xué)習(xí)了,試著用用
作者: xingyusky111    時間: 2017-12-11 13:03
看看,學(xué)習(xí)下
作者: iloveplc    時間: 2017-12-13 12:39
這個電壓表超級簡單,樓主的思維不一般啊,用到了MCU內(nèi)部的基準(zhǔn)電壓,贊!
作者: 功夫崽崽    時間: 2018-1-5 09:55
學(xué)習(xí)。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。!
作者: zhengguangxi    時間: 2018-1-19 22:49
不錯的東西
作者: jizi    時間: 2018-1-23 12:56
贊一個
作者: 更深的藍色    時間: 2018-1-30 18:49
學(xué)習(xí)了
作者: advantech    時間: 2018-1-31 09:39
很好,值得分享
作者: 51hejerry    時間: 2018-1-31 14:37
看起來還不錯簡單,先下載備用,謝謝!
作者: zzg731010    時間: 2018-2-8 14:34
我的分數(shù)不夠,不知能不能下載來學(xué)習(xí)下
作者: ccxdtrj    時間: 2018-2-8 20:41
很好,收藏一下下
作者: 劉海龍    時間: 2018-2-8 21:42
criman 發(fā)表于 2017-11-25 16:23
電壓跳動比較大怎么解決?

用中位數(shù)濾波法或平均值濾波法
作者: liding12356    時間: 2018-2-9 11:11
這資料不錯  感謝樓主

作者: madell    時間: 2018-2-13 10:44
非常不錯!程序?qū)懙煤芮宄?hr noshade size="2" width="100%" color="#808080"> 作者: zhengyu233    時間: 2018-3-8 10:29
簡單明了
作者: kkfy888    時間: 2018-3-14 00:31
謝謝分享!
作者: tangyufei12    時間: 2018-3-14 10:04
希望對我有用
作者: my51hsharks    時間: 2018-3-14 17:52
謝謝分享,學(xué)習(xí)一下
作者: jkt401    時間: 2018-3-29 16:36
謝謝分享,學(xué)習(xí)一下
作者: nb_kk    時間: 2018-4-18 15:52
很好,值得分享
作者: mengsiu    時間: 2018-4-18 18:37
很簡潔的設(shè)計。學(xué)習(xí)了。
作者: longwu4886    時間: 2018-4-19 09:22
下載學(xué)習(xí)學(xué)習(xí),謝謝,感謝分享!!!!!!
作者: longwu4886    時間: 2018-4-19 10:43
power_voltage=(float)bandgap*1024/adc_9gallery_res;
1024是什么的,為什么要乘以1024
作者: oyxx134    時間: 2018-4-25 12:36
8位255  10位1024  12位4095 不知道我說得對不對
作者: lucheng77    時間: 2018-4-25 18:44
不錯,收藏一下,以前真還不知道bandgap是什么。
作者: 劉海龍    時間: 2018-5-24 21:35
oyxx134 發(fā)表于 2018-4-25 12:36
8位255  10位1024  12位4095 不知道我說得對不對

說的對,STC15W408AS單片機內(nèi)部自帶ADC是10位的2的10次方就是1024
作者: zhongxing138    時間: 2018-6-11 14:29
還沒有做 看看能不能用
作者: zhongxing138    時間: 2018-6-11 14:31
看來樓主對這一塊也花了不少心思去研究,在沒有人教的情況下,自己去摸索,贊!
作者: lj820220    時間: 2018-6-25 00:16
學(xué)習(xí)了
作者: yzyjkcs    時間: 2018-6-26 18:42
贊一個!
作者: kiww    時間: 2018-6-26 21:40
好好學(xué)習(xí),天天向上




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1