Gridfree & arduino

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Gridfree & arduino

Příspěvek od 250w_gridfree »

Ahoj,
pomrkávám po řízení výkonu mikroinvertoru a panelů pomocí arduina, má někdo zkušenosti s hW - jaké proudové snímače použít - osvědčily se, ev. zdrojáček? atp.
spotřeva > výroba = panel k invertoru připojen

Už mám na cestě uno, začnu se systémem s blikáním diodama, nějaké zkušenosti s PHP mám, tak to snad nějak půjde:)

Díky
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Takže řízení fve zatímv nedohlednu, ale v arduinu sem pokročil, mám jednoduchou regulaci thermosolárního systému k bazénu. A baví mě to. Jen mám dotaz Má být mezi Arduinem a LCD 1602 přes i2c zapojen nějaký rezistor? Díky za info P.
8milan8
Příspěvky: 128
Registrován: čtv led 01, 2015 6:30 pm

Re: Gridfree & arduino

Příspěvek od 8milan8 »

250w_gridfree píše:
Takže řízení fve zatímv nedohlednu, ale v arduinu sem pokročil, mám jednoduchou regulaci thermosolárního systému k bazénu. A baví mě to. Jen mám dotaz Má být mezi Arduinem a LCD 1602 přes i2c zapojen nějaký rezistor? Díky za info P.
Nevím o tom, že by byl potřeba. ;) Takže ne.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Díky...
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Efektivita zápisu - připadá mi část kódu zbytečně dlouhá, je možný efektivnější zápis?

if (rozdil < 100 && rozdil > 75)
{
digitalWrite(13, HIGH); //na pinu 13 pusť proud a sepni relé se zátěží 25w
digitalWrite(12, HIGH)); //na pinu 12 pusť proud a sepni relé se zátěží 25w
digitalWrite(11, HIGH)); //na pinu 11 pusť proud a sepni relé se zátěží 25w
digitalWrite(10, HIGH)); //na pinu 10 pusť proud a sepni relé se zátěží 25w
digitalWrite(9,LOW); //na pinu 9 vypni proud
digitalWrite(8,LOW); //na pinu 8 vypni proud
}

if (rozdil <= 75 && rozdil>50)
{
digitalWrite(13, HIGH); //na pinu 13 pusť proud a sepni relé se zátěží 25w
digitalWrite(12, HIGH)); //na pinu 12 pusť proud a sepni relé se zátěží 25w
digitalWrite(11, HIGH)); //na pinu 11 pusť proud a sepni relé se zátěží 25w
digitalWrite(10,LOW); //na pinu 10 vypni proud
digitalWrite(9,LOW); //na pinu 9 vypni proud
digitalWrite(8,LOW); //na pinu 8 vypni proud
}


if (rozdil < =50 && rozdil > 25)
{
digitalWrite(13, HIGH); //na pinu 13 pusť proud a sepni relé se zátěží 25w
digitalWrite(12, HIGH)); //na pinu 12 pusť proud a sepni relé se zátěží 25w
digitalWrite(11,LOW); //na pinu 11 vypni proud
digitalWrite(10,LOW); //na pinu 10 vypni proud
digitalWrite(9,LOW); //na pinu 9 vypni proud
digitalWrite(8,LOW); //na pinu 8 vypni proud
}


if (rozdil < =25 && rozdil > 0)
{
digitalWrite(13, HIGH); //na pinu 13 pusť proud a sepni relé se zátěží 25w
digitalWrite(12,LOW); //na pinu 12 vypni proud
digitalWrite(11,LOW); //na pinu 11 vypni proud
digitalWrite(10,LOW); //na pinu 10 vypni proud
digitalWrite(9,LOW); //na pinu 9 vypni proud
digitalWrite(8,LOW); //na pinu 8 vypni proud
}


Díky...
8milan8
Příspěvky: 128
Registrován: čtv led 01, 2015 6:30 pm

Re: Gridfree & arduino

Příspěvek od 8milan8 »

250w_gridfree píše:
Efektivita zápisu - připadá mi část kódu zbytečně dlouhá, je možný efektivnější zápis?

if (rozdil < 100 && rozdil > 75)
{
digitalWrite(13, HIGH); //na pinu 13 pusť proud a sepni relé se zátěží 25w
digitalWrite(12, HIGH)); //na pinu 12 pusť proud a sepni relé se zátěží 25w
digitalWrite(11, HIGH)); //na pinu 11 pusť proud a sepni relé se zátěží 25w
digitalWrite(10, HIGH)); //na pinu 10 pusť proud a sepni relé se zátěží 25w
digitalWrite(9,LOW); //na pinu 9 vypni proud
digitalWrite(8,LOW); //na pinu 8 vypni proud
}
...
Třeba takto

celej ten balast nahradit timto. ;) Ale jde fakt jen o efektivitu zápisu. Pokud je dobrý překladač, tak bude výsledný přeložený kód stejný (nebo se limitně tomu blížit).

digitalWrite(13, rozdil > 0 ? HIGH : LOW); //na pinu 13 pusť proud a sepni relé se zátěží 25w
digitalWrite(12, rozdil > 25 ? HIGH : LOW)); //na pinu 12 pusť proud a sepni relé se zátěží 25w
digitalWrite(11, rozdil > 50 ? HIGH : LOW)); //na pinu 11 pusť proud a sepni relé se zátěží 25w
digitalWrite(10, rozdil > 75 ? HIGH : LOW)); //na pinu 10 pusť proud a sepni relé se zátěží 25w
digitalWrite(9,LOW); //na pinu 9 vypni proud
digitalWrite(8,LOW); //na pinu 8 vypni proud
solárník
Příspěvky: 1588
Registrován: pát bře 15, 2013 7:53 pm

Re: Gridfree & arduino

Příspěvek od solárník »

Záleží o co vám jde, jestli o přehlednost, nebo o rychlost.

Za použití konstrukce "else if", která by byla v prvním dlouhém zápisu na místě použít u druhého a dalších "if", protože se jednotlivé varianty vylučují, by se vyhodnocovaly vždy pouze dvě podmínky a proto by program pravděpodobně byl nejrychlejší. Samozřejmě by šel dál optimalizovat pouze na jednu vyhodnocovanou podmínku, a dále, protože třeba 8 a 9 dáváte LOW kdykoli, takže nemusejí figurovat v žádné podmínce.

U toho, co jste oba napsali, se bude vždy vyhodnocovat 4 (u obou variant určitě) až 8(u první varianty) podmínek, takže budou patřičně pomalejší.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Díky za inspiraci, vyzkouším. Jde mi o rychlost. Překladač používám ten který je k Arduinu //1.0.6
solárník
Příspěvky: 1588
Registrován: pát bře 15, 2013 7:53 pm

Re: Gridfree & arduino

Příspěvek od solárník »

Pokud je promenna rozdil typu integer, tak by to teoreticky melo jit resit i switchem:

switch(rozdil)
{
case 0 ... 25:
udelej neco;
break;
case 26 ... 50:
udelej neco jineho;
break;

atd,atd,

default:
tudy to jde kdyz neplati ani jedno;
break;
}

Ovsem jaka pak bude rychlost zpracovani netusim, nutno vyzkouset.
Neni to sice standardni ANSI C zapis, definovat interval pomoci "...", ale v Arduino IDE funguje bez problemu.
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Zatím nemám proudový snímač, hodnotu do proměnné zatím získám z teploměru. Číslo jako číslo Pozítří buádu ladit... Dík
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Ahoj, konečně jsem v laborování pokročil, proudový snímač http://www.ebay.com/itm/381099203483?_t ... EBIDX%3AIT zapojen, měření tímto koresponduje s měřením s wattmetrem do zásuvky. OK Ale hlava mi nebere, že tento snímač zobrazuje korektní hodnoty, ačkoliv je 5A a přitom ve zdrojáku je nastaveno 30A!
Zdroják:
#include "EmonLib.h" // Include Emon Library
EnergyMonitor emon1; // Create an instance
#include <OneWire.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
float Pwatt;
int rozdil = 0; //korekce na nulu
void setup(){
emon1.current(1, 30.0); //nastavení senzoru
lcd.init();
lcd.backlight();
}
void loop(){
double Irms = emon1.calcIrms(1480);
Pwatt = (Irms*230.0) + rozdil;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Watt: ");
lcd.print(Pwatt);
lcd.setCursor(0, 1);
lcd.print("Amper: ");
lcd.print(Irms);
}

Jaký senor používáte pro měření s horní hranicí 25 -30 A? Zapojeno podle tohoto šénu http://www.mindkits.co.nz/images/blog/c ... ly_bbR.png

Díky za info P.
Uživatelský avatar
tomas
Příspěvky: 2579
Registrován: pon bře 07, 2011 11:05 am
Bydliště: Třinec

Re: Gridfree & arduino

Příspěvek od tomas »

250w_gridfree píše:
Ale hlava mi nebere, že tento snímač zobrazuje korektní hodnoty, ačkoliv je 5A a přitom ve zdrojáku je nastaveno 30A!
Tam by jsi měl mít přece převod toho měřícího trafa proudu.
Například když mám měřící trafa 150A/5A tak do elektroměru musím nastavit převod 30 aby elektroměr zobrazoval správné kWh. Nebo neměřenou hodnotu násobím 30 pokud to elektroměr neumí.
Ty máš převod 5/0,005 = 1000
A 1mA na výstupu by měl odpovídat 1A na vstupu. Ale jsou tam zřejmě nějaké odpory a bočníky a arduinem měříš napětí, takže to bude asi nutné přepočítat i přes ty odpory.
Chci elektrárnu s licencí a s prodejem přebytků nebo komunitní výměnou energie: ANO
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Díky, ale stejně tomu nerozumím. Chápu ještě ten převod 1 A vstup, 1mA výstup. Potřebuji bezpečně měřit AC proud do 5A, v krátkodobých špičkách až 25A a uložit do proměnné, se kterou se bude dále pracovat. Jaký senzor pro tento záměr použít? S poměrem 200/1 ?
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Že by tento? hlavně, aby z něho vedly 2 drátky... a bylo to napájeno 5V
http://www.ebay.com/itm/25A-SCT-013-025 ... 1519522013
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Ještě zajímavost, při vyčítání na serial monitoru se stále zobrazuje na analog vstupu hodnota 511 až 512 - polovina z 1024, a to i při korektním měření, i když je měřeno 100w nebo 500w, na serialu monitoru stále stejná hodnota, měřeno současně v jednom cyklu na analog1 :(
Uživatelský avatar
tomas
Příspěvky: 2579
Registrován: pon bře 07, 2011 11:05 am
Bydliště: Třinec

Re: Gridfree & arduino

Příspěvek od tomas »

No podle toho obrázku zapojení to vypadá že by v klidu mělo být na vstupním pinu 2,5V, je tam dělič na polovinu z 5V poskládaný z těch dvou stejných odporů. 2,5V by mělo tedy odpovídat nule a to bude asi těch 511 až 512 - polovina z 1024. Ten měřený proud (napětí) by měl odpovídat té výchylce od 2,5V (511 až 512) krát ten převod.
A ještě je tam odpor 100 ohmů paralelně k vinutí trafu. Při 1mA by na něm mělo být 0,1V. Potom tedy 2,6V na vstupním pinu by mělo odpovídat 1A procházející měřeným obvodem. Jenže měříš sinusový proud, tak to bude kolísat od 2,4V do 2,6V a to už musíš nějak softwarově vyřešit a vyhodnotit.
Při proudu 2A by na vstupu do arduina mělo být sinusové napětí od 2,3V do 2,7V. Měla by to být efektivní hodnota, maximální bude vyšší. Ale nejlepší a nejistějí je to přece změřit, nebo nasimulovat:
http://www.spsemoh.cz/vyuka/zel/circuit/circuit.htm
Chci elektrárnu s licencí a s prodejem přebytků nebo komunitní výměnou energie: ANO
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Začínám se v tom lehce orientovat, především mi jde o to, abych do arduina nepustil destruktivní hodnoty. Pokud se nemýlím, neměla by se překročit hodnota 5V. Díky
Uživatelský avatar
tomas
Příspěvky: 2579
Registrován: pon bře 07, 2011 11:05 am
Bydliště: Třinec

Re: Gridfree & arduino

Příspěvek od tomas »

250w_gridfree píše:
Že by tento? hlavně, aby z něho vedly 2 drátky... a bylo to napájeno 5V
http://www.ebay.com/itm/25A-SCT-013-025 ... 1519522013
Můžeš použít jakékoliv měřící trafa proudu které ti vyhoví výstupním proudem, převodem, výkonem a přesností. ;)
http://www.pmec.cz/index.php?page=sensors
A pozor na to že proudový transformátor musí být vždy něčím zatížený (odporem) nebo zkratovaný, jinak zničí arduino i sebe.
Chci elektrárnu s licencí a s prodejem přebytků nebo komunitní výměnou energie: ANO
250w_gridfree
Příspěvky: 82
Registrován: pon zář 08, 2014 10:55 am

Re: Gridfree & arduino

Příspěvek od 250w_gridfree »

Takže vzít měřák a hlídat hodnotu <5V na analogovém vstupu a postupně zvyšovat měřenou zátěž, tohle trafo má odpor již namontovaný http://www.ebay.com/itm/381099203483?_t ... EBIDX%3AIT
Uživatelský avatar
tomas
Příspěvky: 2579
Registrován: pon bře 07, 2011 11:05 am
Bydliště: Třinec

Re: Gridfree & arduino

Příspěvek od tomas »

Ještě koukám že na tom měřícím trafu je také odpor.
http://www.ebay.com/itm/381099203483?_t ... EBIDX%3AIT
Co to je za hodnotu 10 ohmů?
Chci elektrárnu s licencí a s prodejem přebytků nebo komunitní výměnou energie: ANO

  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek