Arduino měřič W a Wh 

Zde je můj první projekt s arduinem na těchto stránkách. Je to měřící přístroj který měří napětí a proud, následně vypočítá výkon a ,,propálenou" energii ve Wh.

Zde je celý obvod i s kódem:   (funkční simulace)

Ale co každá část obvodu i kódu vlastně dělá? 

To si ukážeme:

Nejprve začneme napětím, a to s rozsahem do 30V, jenom že arduino, resp. jeho analogové vstupy umí měřit pouze do 5V. To se musí vyřešit! Nejsnadnější způsob je použití odporového děliče napětí. Jelikož je to pouze pro měřící účely a proud zde poteče minimální, tak je to použitelné.

A jde se počítat!

Odpor R1 si určíme sami, já jsem si určil 1k, dosadil jsem vstupní a výstupní napětí a vyšlo mi R2 200R. Pak jsem si ještě ohmovým zákonem spočítal proud, který poteče děličem mezi vstupem a zemí, což mi vyšlo 25mA. Žádný velký proud, takhle to necháme.

Dál budeme měřit proud, já použiju bočník. Zvolil jsem odpor 0R1, při proudu 5A bude úbytek 500mV, je to trochu víc ale zatím to tak nechám.

A jdeme na arduino. 

Zde je zapojení měřené části, odbočku od bočníku přivedeme na analogový pin A0, a výstup z děliče napětí na A1, taky musíme spojit zem arduina se zemí měřeného zdroje.

A připojíme ještě LCD displej:

RS  ==> 13

E    ==> 12

DB4 => 11

DB5 =>10

DB6 =>9

DB7 =>8

A teď program:


#include <LiquidCrystal.h>

//připojení knihovny pro LCD

LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

//definování pinů LCD

float current;

//vytvoření proměnné

int Ipin = 0;

//definování pinu

float voltage;

int Upin = A1;

float watt;

float Wh;

void setup() {

}

void loop() {{

lcd.begin(16, 2);

//definování velikosti displeje

}

current = analogRead(Ipin);

//načtení hodnoty do proměnné

voltage = analogRead(Upin);

current = current * 0.049019604;

voltage = voltage * 0.029325513;

//přepočet na hodnotu v A a V

watt = voltage * current;

//výpočet výkonu 

Wh = Wh + (watt * (0.5130/60/60));


lcd.setCursor(0, 0);

//nastavení kurzoru na LCD

lcd.print(current);

//vytisknutí hodnoty proměnné na LCD

lcd.setCursor(5, 0);

lcd.print("A");

// vytisknutí znaku A (ampér)

lcd.setCursor(8, 0);

lcd.print(voltage);

lcd.setCursor(13, 0);

lcd.print("V");

lcd.setCursor(0, 1);

lcd.print(watt);

lcd.setCursor(5,1);

lcd.print("W ");

lcd.setCursor(8, 1);

lcd.print(Wh);

lcd.print("Wh");

delay(500);

//čekání 0.5s do další aktualizace hodnot na displeji

if (current > 4.90) {

digitalWrite(2, LOW);

digitalWrite(4, LOW);

digitalWrite(3, HIGH);

//proudová ochrana

}

if (voltage > 29.90) {

digitalWrite(2, LOW);

digitalWrite(4, LOW);

digitalWrite(7, HIGH);

//napěťová ochrana

}

if (digitalRead(5) == HIGH) {

digitalWrite(2, HIGH);

digitalWrite(4, HIGH);

digitalWrite(3, LOW);

digitalWrite(7, LOW);

}

if (digitalRead(6) == HIGH) {

digitalWrite(2, LOW);

digitalWrite(4, LOW);

digitalWrite(3, LOW);

digitalWrite(7, LOW);

//zapnutí a vypnutí měření

}

}



Přepočet na hodnotu ve voltech nebo ampérech pomocí  násobením předem vypočítaným číslem, které si teď vypočítáme: 

Nejdřív v programu to naše číslo nastavíme na 1, pak na vstup připojíme max. napětí či proud. který má naše měřidlo měřit. a na displeji zjistíme hodnotu. a jde se počítat:

1023 je číslo které jsme vyčetli z displeje při násobení 1. což je číslo 1 a 30 je hodnota která má být zobrazena, číslem x se tedy násobí, takže 1023 x 0.029325513 je 30.

Ochrany fungují tak že když se napětí či proud zvedne nad úroveň stanovenou v programu, odpojí se zdroj od měřidla pomocí relé. Když vypne proudová ochrana, rozsvítí se červená LED vlevo, když napěťová, tak červená LED vpravo. Při spuštění je nutné zapnout měření což se dělá tlačítkem vlevo, při stisku se sepne relé a rozsvítí zelená LED, tlačítko vpravo měření vypíná.

Když u displeje dáme mezi pin E a 12 na arduinu vypínač, jeho vypnutí funguje jako funkce hold, tedy zamražení hodnoty na displeji.

Vytvořte si webové stránky zdarma! Tento web je vytvořený pomocí Webnode. Vytvořte si vlastní stránky zdarma ještě dnes! Vytvořit stránky