Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Právě je ned lis 18, 2018 7:56 pm


Začátky s Arduinem

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Předchozí

Re: Začátky s Arduinem

Příspěvekod 250w_gridfree » pát led 15, 2016 3:04 pm

jupí funguje.

Graf je v příloze. Dám si kávu a budu se snažit pochopit tuto část programu..
Díky Pavel
Přílohy
jupí.jpg
250w_gridfree
 
Příspěvky: 72
Registrován: pon zář 08, 2014 9:55 am
Reputation: 2

Re: Začátky s Arduinem

Příspěvekod rob.brno » sob led 16, 2016 9:14 am

kodl69 píše:já se snažím všchny proměnný udržet jako int nebo unsigned int, procesor to má rychlej spočítaný, a když se to má třeba poslat jako řetězec do rádiovýho modulu, je to jednodušší. Mít víc než 5 platnejch míst je z technickýho hlediska blbina, jako třeba: Měřím výkon tak, že na jednom a/d mám proud, na druhým napětí, tj 10bit rozlišení v optimálním případě, tj 1024 hodnot. Pokud postupuju rozumně, vystačím si s int: P=Iměř*Uměř*koeficient kterej si spočítám bokem podle děličů napětí a výsledek bude třeba vynásobenej 10 nebo 100 aby to pěkně do toho int vyšlo. Hlavně poznámky do kódu, jinak se v tom sám nevyznáš.
A nebo I=Iměř*koefI, U=Uměř*koefU , P=U*I a tady už jsem v koncích, koeficienty jsou třeba 0,01587, takže výsledek je jistě float, a už se v tom vezu, přetypování a další blbiny. Je potřeba strávit pár nocí při bádání nad takovejma věcma co mají fungovat a nefungují, a pak už znovu tu blbost neuděláš.


KDyž máš setinový koeficienty, tak to je můžeš zadat jako konstantu koef. x 10000 a mezivýsledky ukládat do longu. Jo a často se místo int dá použít i nejmenší proměná char(byte) a oproti int operace s ní zabere jen polovinu času i kódu i RAM.
rob.brno
 
Příspěvky: 779
Registrován: sob čer 09, 2012 8:14 am
Reputation: 9

Re: Začátky s Arduinem

Příspěvekod sponn » stř úno 10, 2016 9:20 pm

Zdravím, mám dotaz na zkušenější, jak dalece vadí arduinu, když se program několikrát v průběhu odkazuje na sériovou komunikaci ( serial.println() ... ), a přitom není připojené k PC. Jediné co jsem si všiml, že pravidelně bliká led Tx.
FVP 400W, bat. 24V Li-ion 100Ah, Epsolar 2215BN
sponn
 
Příspěvky: 20
Registrován: sob led 03, 2015 6:14 pm
Reputation: 0

Re: Začátky s Arduinem

Příspěvekod solárník » stř úno 10, 2016 9:57 pm

Arduinu je zcela jedno, jestli na sériovém portu někdo přijímá / naslouchá. Tedy z toho vyplývá, že mu to absolutně nevadí, když se na serial bude zapisovat a není nic připojeno.

Jediné Arduino, které dokáže zjistit, jestli je serial připojen, je, tuším, Leonardo. Ostatní Arduina to ani nevědí, takže je jim to zcela jedno. Prostě data odvysílají na sériovou linku, ať je, nebo není připojená.

Program ani nečeká na konec přenosu. serial.println jen uloží data do bufferu a hned se vrátí do programu. Sériový přenos pak probíhá tzv. asynchronně na pozadí v momentu, kdy už program běží dál.
solárník
 
Příspěvky: 1427
Registrován: pát bře 15, 2013 7:53 pm
Reputation: 53

Re: Začátky s Arduinem

Příspěvekod sponn » stř úno 10, 2016 10:15 pm

Díky za vyčerpávající odpověď .
FVP 400W, bat. 24V Li-ion 100Ah, Epsolar 2215BN
sponn
 
Příspěvky: 20
Registrován: sob led 03, 2015 6:14 pm
Reputation: 0

Re: Začátky s Arduinem

Příspěvekod Pavel.Z. » ned črc 02, 2017 7:28 pm

Ahojte,
mám jednoduchý program pre riadenie serva pomocou dvoch tlačítok. Prosím mám otázku ako to mám spraviť, aby aj po odpojení napájania a potom po opätovnom pripojení napájania ostalo servo stále v polohe ako bolo pred odpojením napájania? Proste aby si to pamätalo stav ako to bolo pred vypnutím. Stačilo by niečo jednoduché ;) ďakujem.
Bude to slúžiť na prehodenie výhybiek v modelovej železnici. Ďakujem
Program:
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
myservo.attach(9);
}
void loop() {
if (digitalRead(2) == 1) {
myservo.write(10);
}
if (digitalRead(3) == 1) {
myservo.write(90);
}

Obrázok
servo.jpg
Pavel.Z.
 
Příspěvky: 120
Registrován: ned lis 25, 2012 10:06 am
Reputation: 4

Re: Začátky s Arduinem

Příspěvekod kodl69 » ned črc 02, 2017 8:41 pm

jediná možnost co mě napadá, je zapsat polohu serva do eeprom, a po zapnutí napájení si ji načíst z této. A nebo pomocnej kontakt na výhybce, kterej arduinu řekne, že při připojení napájení je to servo pravo nebo vlevo. a nebo ze serva vykuchat celou elektroniku a pouštět jenom elektriku přímo do motorku přes H- můstek. po stisknutí jenoho nebo druhýho tlačítka po dobu nutnou na otočení seva.
ostrov 4600Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 6xTratek 275Wp, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2885
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 192

Re: Začátky s Arduinem

Příspěvekod Pavel.Z. » ned črc 02, 2017 10:19 pm

S tým kontaktom je to trošku pracné. Serv bude 15násť plus ku každému kontakt, káble plus ďaľši vstup na Arduine. Ale ako nápad to je dobrý, nenapadlo ma to. Pôjdem skúsiť tú eeprom. Ešte som s ňou nepracoval, snáť to naštudujem niekde :-D.
Pavel.Z.
 
Příspěvky: 120
Registrován: ned lis 25, 2012 10:06 am
Reputation: 4

Re: Začátky s Arduinem

Příspěvekod solárník » ned črc 02, 2017 10:39 pm

eeprom je asi jedine reseni. kdybys to chtel dal rozvijet, tak pamatuj, ze eeprom ma omezeny pocet zapisu. tedy zapsat obcas nejaka data je ok, ale zapisovat tam neco stale v rychlem sledu ji brzy znici.

jinak staci stahnout knihovnu EEPROM.h
a pak napriklad zapis a cteni integeru:

Kód: Vybrat vše
// funkce pro čtení Integer z EEPROM
int eepromIntRead(int adresa)
{
 int hodnota = EEPROM.read(adresa) + ((EEPROM.read(adresa+1)) << 8) ;
 return hodnota;
}

// funkce pro zápis Integeru do EEPROM
void eepromIntWrite(int adresa, int hodnota)
{
 byte byte1 = hodnota;
 byte byte2 = hodnota >> 8;
 EEPROM.write(adresa, byte1);
 EEPROM.write(adresa + 1, byte2);
}

UNO ma mensi velikost eeprom, MEGA vetsi, vyber si...
solárník
 
Příspěvky: 1427
Registrován: pát bře 15, 2013 7:53 pm
Reputation: 53

Re: Začátky s Arduinem

Příspěvekod kodl69 » pon črc 03, 2017 1:16 am

a nebo eeprom na I2c, externí, většinou s větším počtem zápisů. Taky se dá řešit počítadlo zápisů do eeprom, a měnit adresu pro zápis, a tu zapisovat do eeprom...
tj. když zapíšu do eeprom data (dva BYTE jsou pro 15 výhybek až moc :) tak na další pozici si zapíšu načtené číslo +1, a až to číslo dosáhne 10000, tak na místo kde mám zapsanou adresu pro zápis, zapíšu nový, o x vyšší číslo (x dle velikosti ukládanejch dat, vč. toho počítadla zápisů, kam se uloží 1). Je potřeba to brát tak, že každý hrknutí výhybkou je jeden zápis do eeprom, a 10000 není zas tak velký číslo. A nebo se na to vybodnout, s tím, že je to stejně meziverze, a bude se to brzo předělávat.

P.S. dnes už nejsou ve výhybkách elektromagnety, jako v dobách TT modelů z NDR?
ostrov 4600Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 6xTratek 275Wp, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2885
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 192

Re: Začátky s Arduinem

Příspěvekod solárník » pon črc 03, 2017 8:45 am

Jinak pro upresneni

eeprom adresa v prikladu vyse muze nabyvat hodnot
- Arduno Duemilanove: 0-511
- Arduino Uno: 0-1023
- Arduino Mega: 0-4095

A zivotnost eeprom je podle udaju vyrobce 100 000 zapisu na tu samou adresu. Pak je pametova bunka znicena.
solárník
 
Příspěvky: 1427
Registrován: pát bře 15, 2013 7:53 pm
Reputation: 53

Re: Začátky s Arduinem

Příspěvekod Pavel.Z. » pon črc 03, 2017 5:51 pm

Díky chlapi, idem pošpekulovať nad tým a ak to nepôjde nechám to tak. Vo výhybach býva el.magnet, len to chcem so servom. Spravil som to s knižnicou VarSpeedServo. Veľmi sa mi lúbi ako sa dá nastaviť rýchlosť serva. Vypáda to realisticky ako bum, bác elektromagnet :-). Taktiež sa to dá použiť na návestidlá atď.
výhybka so servom:
https://www.youtube.com/watch?v=uA8pSf-h5so
Pavel.Z.
 
Příspěvky: 120
Registrován: ned lis 25, 2012 10:06 am
Reputation: 4

Re: Začátky s Arduinem

Příspěvekod dub042 » stř črc 05, 2017 6:36 am

Ještě by tu byla jedna možnost, jak ušetřit epromku, co takhle zápis na SD kartu?
dub042
 
Příspěvky: 164
Registrován: pát kvě 09, 2014 7:11 pm
Reputation: 9

Re: Začátky s Arduinem

Příspěvekod jiri59 » stř črc 05, 2017 10:54 pm

Pro ovládání serva výhybek modelové železnice bych spíše než dvě tlačítka použil přepínač (např. https://www.ges.cz/cz/mts-500apc-GES06500133.html) a tím bych měl i optickou kontrolu v jaké poloze se má výhybka nacházet. Dal by se pro to použít i Váš program arduina bez úprav.
Pokud by bylo nutné použít pro ovládání tlačítka, tak by bylo řešením spojit mechanicky pohyb serva s trimrem a podle polohy serva by se měnil odpor trimru a tím se zpětně získá poloha serva (poloha výhybky). Toto by znamenalo i upravit program.
poloostrov = panel 2S 250 Wp + MT2420/24v + GF 1000 + NiCd NKO118 + 0,5kWh Lion z 18650
jiri59
 
Příspěvky: 30
Registrován: ned úno 26, 2017 10:29 pm
Reputation: 1

Předchozí

Zpět na Arduino

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

Reputation System ©'