Gridfree & arduino
Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Gridfree & arduino
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
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
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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.
-
- Příspěvky: 128
- Registrován: čtv led 01, 2015 6:30 pm
Re: Gridfree & arduino
Nevím o tom, že by byl potřeba. Takže ne.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.
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
Díky...
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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...
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...
-
- Příspěvky: 128
- Registrován: čtv led 01, 2015 6:30 pm
Re: Gridfree & arduino
Třeba takto250w_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
}
...
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
-
- Příspěvky: 1588
- Registrován: pát bře 15, 2013 7:53 pm
Re: Gridfree & arduino
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ší.
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ší.
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
Díky za inspiraci, vyzkouším. Jde mi o rychlost. Překladač používám ten který je k Arduinu //1.0.6
-
- Příspěvky: 1588
- Registrován: pát bře 15, 2013 7:53 pm
Re: Gridfree & arduino
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.
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.
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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.
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.
-
- Příspěvky: 2579
- Registrován: pon bře 07, 2011 11:05 am
- Bydliště: Třinec
Re: Gridfree & arduino
Tam by jsi měl mít přece převod toho měřícího trafa proudu.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!
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
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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 ?
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
Ž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
http://www.ebay.com/itm/25A-SCT-013-025 ... 1519522013
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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
-
- Příspěvky: 2579
- Registrován: pon bře 07, 2011 11:05 am
- Bydliště: Třinec
Re: Gridfree & arduino
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
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
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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
-
- Příspěvky: 2579
- Registrován: pon bře 07, 2011 11:05 am
- Bydliště: Třinec
Re: Gridfree & arduino
Můžeš použít jakékoliv měřící trafa proudu které ti vyhoví výstupním proudem, převodem, výkonem a přesností.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
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
-
- Příspěvky: 82
- Registrován: pon zář 08, 2014 10:55 am
Re: Gridfree & arduino
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
-
- Příspěvky: 2579
- Registrován: pon bře 07, 2011 11:05 am
- Bydliště: Třinec
Re: Gridfree & arduino
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ů?
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
-
- 39 Odpovědi
- 7618 Zobrazení
-
Poslední příspěvek od gabulya
-
- 24 Odpovědi
- 3974 Zobrazení
-
Poslední příspěvek od berry
-
- 3 Odpovědi
- 818 Zobrazení
-
Poslední příspěvek od beethowen
-
- 9 Odpovědi
- 1669 Zobrazení
-
Poslední příspěvek od kubacernohorsky
-
- 2 Odpovědi
- 926 Zobrazení
-
Poslední příspěvek od ota