DIN rail Arduino klonas (išėjimai)

4 03 2014

Išėjimų aptarimas bus labai trumpas.

Pirmiausia tai mano įtaisas, kaip ir bet kuris kitas Arduino, išėjimams gali generuoti skaitmeninius (on/off) arba PWM impulsinius išėjimus. Viso valdiklyje turime 8 išėjimus iš kurių visi gali būti skaitmeniniais ir 4 iš jų panaudoti galime kaip impulsinius. Bet apie viska iš eilės.

Technika

Išėjimo signalas valdiklyje yra tokios pačios įtampos kaip pagrindinis įrenginio maitinimas. Schemoje panaudota ULN2803 kuri ir konvertuoja Atmega328P signalus. Kiekvienas išėjimo kanalas gali būti apkrautas iki 500mA tik reikia įsitikinti kad tiek sugebės duoti pats maitinimo blokas.

Aš praktikoje beveik visuomet naudoju 12V maitinimą, tad kaip išjimus labai patogu naudoti plačiai paplitusias 12V rėles:

IMG_7781

Jei srovė neviršija mano minėtos ribos galima iškarto jungti ir norimą valdyti išėjimą, pvz. ventiliatorių:

IMG_7782

Čia tik keli pavyzdžiai, tačiau reikia turėti omenyje kad galutinis įtampos paskirstymo tašas gali būti labai įvairūs įtaisai. Tinka ir Solid State rėlės, ir Mosfetai, ir tristoriai.. Daug kas priklauso dar ir nuo to kas bus valdoma.

Svarbu paminėti kurie išėjimai gali būti naudojami impulsiniam išėjimui generuoti. Tad sudariau nedidelę lentelę kuri viskas paaiškina. Taip pat ji svarbi tiems kurie turi įdėjų programuoti įrenginuką iš esmės, nes paminėti Arduino adresų sąsajos su mano išdėliotais išėjimais:

Išėjimų tipai
Fizinis išėjimas Arduino portas Skaitmeninis PWM
O1 D13 +
O2 D12 +
O3 D11 + +
O4 D10 + +
O5 D9 + +
O6 D8 +
O7 D7 +
O8 D6 + +

Matome, kad PWM turi išėjimai O2, O3, O4 ir O8. Atmega328P turi dar du PWM signalus kurie, deja pateko į įėjimų gretas.

Išėjimų nustatymas programoje

Pakalbėkime kaip apdorojami išėjimai mano programoje.

Susukau maža filmuką kuriame matome kaip konfigūruojamos  viena iš dviejų rėlių ir ventiliatorius, parodomos default nustatymų veikimas ir pateikiama kaip viskas atvaizduojama informaciniuose languose:

Viskas labai panašu į įėjimu konfigūravimą, tik kad programa kol kas plius minus neišbaigta ir dabar, kad būtų pritaikyta default reikšmė, reikia kontrolerį perkrauti.. Pataisyta bus pirmu kodo atnaujinimu kuomet išsaugojus bet kokį įėjimą ar išėjimą jis bus reinicijuojamas. Paprastai visi įėjimai ir išėjimai inicijuojami tik startavus programai ir nusiskaičius visus nustatymus iš EEPROM.


Veiksmai

Information

9 responses

4 03 2014
giedriuszzz

Valdiklio korpusas iš lemonos ?

4 03 2014
mindogas

Gal ir ten tokiu yra bet ne. Dėžutės modelis yra Z104 ir nuoroda i gamintoją: http://www.kradex.com.pl/shop?product=350

4 03 2014
giedriuszzz

tai pirkai iš tos parduotuvės kur davei nuorodą ?

4 03 2014
mindogas

Ne. Nenoriu reklamuoti firmų nes iš jų naudos negaunu 😀

11 03 2014
11 03 2014
mindogas

Išdavikas 😀

12 03 2014
Evaldas

Kaip puiku matyti čia Mindaugą ir Alvydą, tik dar su Giedriumi nesu pažystamas (turiu omenyje virtualiai). O kas dėl reklamos, taigi čia nemanau, kad čia kai ką paviešiname, tai gal greičiau ne reklama o informacija, tiesiog nuoroda į šaltinį. Ai nežinau, man tai netrukdo nereikia papildomai knist interneto.

12 03 2014
saulevire

Aš čia ingognito (http://www.zodynas.lt/terminu-zodynas/i/inkognito) 🙂

DIN rail Arduino klono programa rašoma su Arduino IDE? Įrankis patogus, bet man pradeda nebepatikti.Jau nebetelpu su juo į 30 kb. Ir kur čia tilpsi, jei su AtmelStudio diodą uždegu su 180b, Arduino IDE 1kb neužtenka.

14 03 2014
mindogas

Gal truputi ne taip paklausiai. Turėjai omenyje ar programuodamas naudojau Arduino pseudo kalbą ar gryną AVR C++. Atsakymas būtų – Arduino. Realiai Arduino IDE yra tik terpė programuoti, o programuoju aš su juos su AtmelStudio.

Šiaip niekas nedraudžia Arduino programuoti be jos visų nesąmonių. Nenaudoji visokių pinMode(), digitalWrite() ir kodas bus ne ką mažesnis nei AVR C++ atveju. Kompiliatorius tu visų funkcijų tiesiog neįtrauks į flash’ą. Štai kažkas panašaus ką pinai sukompiliuosi su Arduino IDE 1.0.5 ir jis blinkses leda kas sekunde:
#include
#include
int main (void)
{
DDRB |= _BV(DDB5);
while(1) {
PORTB |= _BV(PORTB5);
_delay_ms(1000);
PORTB &= ~_BV(PORTB5);
_delay_ms(1000);
}
return 0;
}

Kur galiu visur naudoju Arduino kalbą kol nepristygu vietos, o kai pristygstu galvoju ką ten galima būtų keisti.

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti / Keisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti / Keisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti / Keisti )

Google+ photo

Jūs komentuojate naudodamiesi savo Google+ paskyra. Atsijungti / Keisti )

Connecting to %s




%d bloggers like this: