Croduino Voltmetar

Uvod

 
Ovaj projekt voltmetra nastavak je na tutorial o INPUT/OUTPUT pinovima.
 
UPOZORENJE: budite pažljivi prilikom ispitivanja napona. Atmega328 podnosi maksimalni napon od 5V, ako želite mjeriti veće napone preskočite na dio s otpornim djeliteljem (voltage divider).

Spajanje

 
Potrebni su nam dva kablića: gnd(-) i (+). Gnd spajamo na gnd, a (+) koji mjerimo na analogni pin 0 Croduina. Nipošto ne spajajte napon veći od 5V na Croduino!
 
Untitled Sketch_bb

Kod

 
Ukoliko vam nije jasan kod predlažemo da pogledate tutorial o INPUT/OUTPUT pinovima.

int ulaz = A0;

void setup() {

    pinMode(ulaz, INPUT);

    Serial.begin(9600); // započinjem serijsku komunikaciju
                        // podatke ćemo pregledavati u Serial Monitoru

}

void loop() {

    int ulazniNapon_analog = analogRead(ulaz);  // čitam analogne vrijednosti
    float ulazniNapon_volt = map(ulazniNapon_analog, 0, 1023, 0, 5);  // pretvaram analogne vrijednosti u napon

    Serial.print("Ulazni napon = ");
    Serial.println(ulazniNapon_volt);

}

Voltage divider

 

Voltage divider ili otporni djelitelj je serija od dva otpornika kojim spuštamo napon. Otpornik bliži ulaznom naponu (Vin) označavamo s R1, dok otpornik bliže gnd označavamo s R2. Pad napona preko R2 je Vout, a označava podjeljen napon našeg strujnog kruga. Na primjeru gore koristimo R1= 10kΩ te R2 = 1kΩ. Računa se prema formuli:
 
511968d9ce395f7c54000000
Odnosno, ako je vrijednost ulaznog napona (Vin) jednaka 40V, izlazni (Vout) će iznositi Vout = 40* ( 1/(10+1) ) = 3.636V. To je napon koji mikrokontroler može podnijeti. Maksimalni ulazni napon za ovu kombinaciju otpornika iznosi 55V, no zbog sigurnosti nazovimo ga 0-40VDC voltmetar.
 
Ovu formulu ćemo uvrsitit u Arduino kod, na nama je samo da pazimo kako ne bismo prešli maksimalno dopušteni ulazni napon.

int r1= 10; // r1 iznosi 10k ohma
int r2 = 1; // r2 iznosi 1k ohm

int ulaz = A0; // napon mjerimo preko analognom pina A0

void setup() {
    pinMode(ulaz, INPUT);

    Serial.begin(9600); // započinjemo serijsku komunikaciju
}

void loop() {
    // pozivamo fuknciju koja vraća ispravljeni ulazni napon
    float ulazniNapon = VoltageDivider(ulaz);

   // ispisujemo napon
    Serial.print("Ulazni napon = ");
    Serial.println(ulazniNapon);
}

void VoltageDivider(int pin) {
    int vout_a = analogRead(pin);  // prvi korak je ocitati analognu vrijednost Vout napona podjeljenim voltage dividerom
    float vout_v = map(vin_a, 0, 1023, 0, 5);  // mapiramo ocitanu vrijednost u napon
    float vin = vout_v * ( (r1+r2) / r2 );  // posto znamo vrijednosti otpornika napon na pinu A0 pretvaramo u stvarni napon
                                          // Vin, prije voltage dividera
    return vin;  // vraćamo prepravljenu vrijednost
}

Točnost ovog voltmetra možemo jednostavno dobiti tako da podjelimo 5V / 1023, što nam daje korak od 4,88mV. Ovisno o otpornicima koje koristite, postojati će odstupanje stvarnog i očitanog napona. Ako imate mogućnost, tarirajte voltmetar pomoću labaratorijskog.
 
Za bolje razumjevanje pogledajte video tutorial sve analogno.

Leave a Reply