Az előző bejegyzésben közölt egyszerű kijelzőt felhasználva 2 ellenállás hozzáadásával készítünk egy feszültségmérőt, (voltmérőt). Jól jöhet saját készítésű labortápegységek készítése esetén. Mivel az Arduino Uno tartalmaz 6 db analóg – digitál átalakító bemenetet, ezért akár 6 bemenetünk is lehetne. Most csak egyet mutatok meg, de apró módosítás kell csak a többi használatához.
Le kell szegeznem, hogy ez egyenfeszültség mérésére alkalmas. Nem jó váltóáram mérésére. Méréshatár főleg R1 ellenállástól függ, neked kell kiszámolnod. Jelenlegi R1=100K, R2=10K osztóval maximum 50V-ig mérhetsz biztonságosan.
Konnektorba dugni tilos, életveszélyes az váltóáram és 230-240V.
Áramkör:
R1 és R2 ellenállások kiszámításához a terheletlen feszültségosztó képletét használjuk. A pontos mérőműszer készítéséhez ellenállások értékét mérjük meg, ne a rá jelölt értékekkel számoljunk.
- Uki = 5V – a referencia feszültségünk ami megegyezik a mikrokontroller tápfeszültségével mivel belső referenciát használunk.
- Ube = mérni kívánt feszültség maximuma
- R2 = 10Kohm
- R1 = kiszámolható a lenti képlettel
Szkript:
#include <TM1637Display.h>
const int CLK = 2; //Kjelző CLK lába
const int DIO = 3; //Kijelző DIO lába
TM1637Display display(CLK, DIO); //Kijelző inicializálás.
int be = A0; //0 analog bemenet
int dc = 0;
float voltbex;
float voltki = 0.00;
float voltbe = 0.00;
float R1 = 97500.0; // R1 ellenállás értéke ohm-ban
float R2 = 9700.0; // R2 ellenállás értéke ohm-ban
void setup() {
// put your setup code here, to run once
Serial.begin(9600);
pinMode(be, INPUT);
display.setBrightness(0x0a); //kijelző fényerő max
}
void loop() {
// put your main code here, to run repeatedly:
for(int m=0;m<=40;m++){ //40 mintavétel
dc = analogRead(be); //ad átalakító leolvasása
voltki = (dc * 5.0) / 1024.0; // 5.0 referencia feszültség
voltbe = voltki / (R2/(R1+R2)); //kiszámolás (terheletlen feszültségosztó képlete átrendezve)
voltbex=voltbex+voltbe;
delay(5);
}
voltbex=voltbex/40;// átlag számítás
Serial.println(voltbex);//mért érték kiíratása soros portra
voltbex = voltbex * 100;//egész számmá alakítás
display.showNumberDecEx(voltbex, 0b01000000, false, 4, 0); //kiíratás kijelzőre : használjuk tizedesnek
voltbex=0;
delay(200);
}
Nagy pontosság eléréséhez, több mintavétel és az R1,R2 ellenállás pontos kimérése szükséges. Itt a hogyanra helyeztem a hangsúlyt. Jó méricskélést mindenkinek! Lentebb egy videó a működő áramkörrel.