在DIY制作中我們經(jīng)常會使用到電阻,電阻值的測量一般會通過萬用表或直接讀取電阻器上的色環(huán)代碼來完成。沒萬用表怎么辦?色環(huán)顏色不易分辨怎么辦?為了克服這些困難,那就使用Arduino來制作一個簡單的歐姆表,并在LCD 1602顯示屏上顯示被側(cè)電阻的值。
Arduino歐姆表原理
在利用Arduino來制作歐姆表的這個項目中,基本原理是基于分壓器電路。它的計算公式是:Vout= (Vin x R2) / (R1 + R2),Vin是輸入電壓;Vout是輸出電壓。
根據(jù)歐姆定律,可以推導(dǎo)出以下公式:
Vin = I x (R1+R2),輸入電壓=電流x電阻值。
Vout = I x R2,輸出電壓=電流 x R2的值。
I = Vin /(R1+R2),電流=輸入電壓/電阻值。
I = Vout / R2,電流=輸出電壓 / R2電阻值。
Vout / R2 = Vin /(R1+R2)
Vout= (Vin x R2) / (R1 + R2)
16×2 LCD顯示屏
顯示屏的引腳可查看:1602 LCD液晶屏引腳定義圖
電阻色環(huán)值的計算
為了能通過色環(huán)計算電阻的值,我們可以使用下面的公式:R= [ (AB*10c)Ω ± T% ]
其中:
A:第一個色環(huán)的值;
B:第二個色環(huán)的值;
C:第三個色環(huán)的值;
T:第四個色環(huán)的值。
假設(shè),上圖電阻色環(huán)是“紅-橙-黃-銀”,其電阻值的計算過程是:
通過電阻的色環(huán)阻值表,可以得到 紅=2 ;橙=3 ;黃=4;銀=10。然后通過上面的公式:R= [ (AB*10c)Ω ± T% ]計算,AB=23;10c=104;T%=10%,得到R = 230000Ω ,精度為± 10%。因此,實際電阻值介于207KΩ~ 253KΩ 之間。
用Arduino歐姆表計算電阻的過程
Arduino歐姆表計算電阻的過程非常簡單,它依然可以分壓器電路來解釋。在電阻R1和R2組成的分壓器網(wǎng)絡(luò)中,Vout = Vin * R2 / (R1 + R2 ),由此可以推導(dǎo)出R2的值,R2 = Vout * R1 / (Vin – Vout)。R1 是已知電阻;R2 是未知電阻。因此,如果我們得到未知電阻(Vout )的電壓值,我們可以很容易地計算出未知電阻R2。電路中使用Arduino的模擬引腳A0讀取電壓值Vout (參見電路圖),并將這些值(0 -1023)轉(zhuǎn)換為電壓,如下面的代碼所示。
注:如果已知電阻的值遠(yuǎn)遠(yuǎn)大于或小于未知電阻,測量誤差會比較大。因此,建議保持已知的電阻值與未知的電阻相對接近。代碼釋義
LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7
在代碼的這一部分中,定義連接到Arduino的16*2 LCD顯示器的引腳。16*2 lcd的RS引腳連接Arduino的數(shù)字引腳2。16*2 lcd的 Enable 引腳連接Arduino的數(shù)字引腳3。16*2 lcd的數(shù)據(jù)引腳(D4-D7)連接Arduino的數(shù)字引腳4,5,6,7。
int Vin=5; //voltage at 5V pin of arduino
float Vout=0; //voltage at A0 pin of arduino
float R1=3300; //value of known resistance
float R2=0; //value of unknown resistance
在這部分代碼中,定義了程序中使用的一些變量。Vin是Arduino的5V 引腳提供的電壓。Vout是電阻R2的對地電壓。R1是已知電阻的值。R2是未知電阻的值。
lcd.begin(16,2);
在這部分代碼中,我們將初始化LCD 1602液晶顯示器模塊。這些命令用于LCD 1602液晶顯示器的顯示設(shè)置,比如屏幕對比度、光標(biāo)閃爍等。
在代碼的這一部分,是將電阻R2 (A0引腳)上的模擬電壓轉(zhuǎn)換為數(shù)字值(0到1023)并存儲在變量中。
buffer=a2d_data*Vin;
Vout=(buffer)/1024.0;
在代碼的這一部分,是將數(shù)字值(0-1023)轉(zhuǎn)換為電壓,然后進(jìn)行進(jìn)一步的計算。Arduino Uno ADC的分辨率是10-bit (所以值范圍是:0 — 210 = 1024)。意味著它將把輸入電壓從0 – 5V映射成0-1023之間的整數(shù)。如果將輸入 anlogValue 乘以 (5/1024) 就可以得到輸入電壓的數(shù)字值。
buffer=Vout/(Vin-Vout);
R2=R1*buffer;
未知電阻的實際值是用上面介紹的方法計算出來的。
lcd.setCursor(4,0);
lcd.print(“ohm meter”);
lcd.setCursor(0,1);
lcd.print(“R (ohm) = ”);
lcd.print(R2);
這部分代碼,主要完成將未知電阻的值顯示在1602顯示屏上。這樣通過Arduino,我們可以很容易地計算出未知電阻的電阻值了。
完整代碼如下:
#include《LiquidCrystal.h》
LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7
int Vin=5; //voltage at 5V pin of arduino
float Vout=0; //voltage at A0 pin of arduino
float R1=3300; //value of known resistance
float R2=0; //value of unknown resistance
int a2d_data=0;
float buffer=0;
void setup()
{
lcd.begin(16,2);
}
void loop()
{
a2d_data=analogRead(A0);
if(a2d_data)
{
buffer=a2d_data*Vin;
Vout=(buffer)/1024.0;
buffer=Vout/(Vin-Vout);
R2=R1*buffer;
lcd.setCursor(4,0);
lcd.print(“ohm meter”);
lcd.setCursor(0,1);
lcd.print(“R (ohm) = ”);
lcd.print(R2);
delay(1000);
}
}
-
歐姆表
+關(guān)注
關(guān)注
0文章
22瀏覽量
10043 -
Arduino
+關(guān)注
關(guān)注
188文章
6468瀏覽量
186952
發(fā)布評論請先 登錄
相關(guān)推薦
評論