在翻找電腦里的東西時候,發(fā)現(xiàn)了原來半途而廢研究的資料:用分壓電路測量負電壓。
于是又拿出來看看,忽然腦袋一時清亮起來,把原理想明白了。仿真了一下,效果還好。用實際器材測試一下,達到了可以接受的程度。
花絮ps:
本來想法的形成是昨天(2023.8.16)晚上的事情,上午要忙批閱作業(yè)和一些雜事兒,簡單用Micro:bit試驗了一下,并與網(wǎng)上一位大神交流了。中午半夢半醒,計算了原理,晚上使用Arduino UNO測試了真實的數(shù)據(jù),挺好。
實際古老的Arduino UNO盡管在今天看起來已經(jīng)不是那么時髦了,但是個人感覺它的ADC質(zhì)量相當不錯,而且在8位ADC水平上,遠強于Micro:bit,和ESP32比也不遜色(個人感覺)。
原理圖:
- 其中VCC 3.17V是我實測的Micro:bit板3V和GND引腳間電壓。Micro:bit輸出的3V并不準。多數(shù)單片機引出的輸出電壓都來自板載穩(wěn)壓芯片,但是由于不象參考電壓那么要求高,所以也都不太準。但偏差也并不大。
- 為說明原理,要測量的負電壓,記為V_in,比如這里把5V電源正極接在GND,那么R3右側(cè)相當于輸入了5V負電壓。
- 測量點,即R1、R2之間探針所在處。記為V_out。
一般我們習慣上取分壓器R1=R2=R,基爾霍夫一下子,有
[如果R1、R2、R3均為一般取值,即則比較麻煩]
若3個電阻使用上面電路圖中的參數(shù),則V_out = 0.0892857V_in + 0.455357*E_VCC。這樣,我們在Arduino里面,可以這樣寫代碼(以下代碼,已測試):
float VCC=5.0; //這里的5.0,一般不太準,可以用好點兒的表校一下
//電腦USB口供電時校準的VCC電壓
float VCC=5.062;
void setup() {
Serial.begin(9600);
}
void loop() {
//把電路圖探針接到模擬引腳A0
int Vol = analogRead(A0);
float V_out = Vol/1023.0*VCC;
//R、R為等值分壓電阻,R3為接入電阻
//R取10k,R3取51k
//V_{out}=frac{R}{R+2R_3}V_{in}+frac{R_3}{R+2R_3}E_{VCC}
float V_in = (V_out-0.455357*VCC)/0.0892857;
Serial.println(V_in);
delay(1000);
}
以下使用的是Micro:bit的粗略測試。3只電阻相應都縮小了10倍,即10k、10k、51k。是因為手邊沒有合適大小的電阻,實際保持原值應該好一些,因為R3相當于電壓表內(nèi)阻,小了不好。 連線圖:
IO2接模擬引腳P0。MicroBlocks編寫代碼。分別測量兩只干電池的正反向電壓,以毫伏為單位。發(fā)現(xiàn)差值均為0.019V,這應該是零點誤差造成的,估計可以很容易修正回來。 總之結(jié)論是,可以。
剛剛使用Arduino UNO的測試
實物圖:
4F超級電容器40Ω電阻放電:
4F超級電容器0.22Ω電阻放電:
有什么用?
在實驗數(shù)據(jù)要求并不是太過于精確時,簡便地使用。比如觀察電容器的充、放電實驗,電壓、電流很嚴格了嗎?沒有,這個時候就可以祭出此一大招了。至少,在精度允許的范圍內(nèi),省了不少大角錢啊。
-
超級電容器
+關注
關注
19文章
407瀏覽量
28689 -
電阻器
+關注
關注
21文章
3784瀏覽量
62158 -
負電壓
+關注
關注
3文章
99瀏覽量
19110 -
分壓電路
+關注
關注
5文章
32瀏覽量
14472 -
GND
+關注
關注
2文章
539瀏覽量
38733
發(fā)布評論請先 登錄
相關推薦
評論