PIC - Arduino vezérlések

2015.

Telnek, múlnak az évek, és ismét foglalkozom a mikrovezérlők világával.....

Ezúttal az arduinos világot vettem célba. Nagyon jó vele foglalkozni, könnyű programozni C nyelven, és sok kész HW áll rendelkezésre, ráadásul úgy, hogy a kezelőrutinokat a gyártó lapjáról le lehet tölteni. Nagyszerű. A fejlesztő környezetet és a nyelv refernciáját le lehet tölteni innen: www.arduino.cc. Azt mondom, hogy könnyű programozni C nyelven, ezt úgy mondom, hogy én nem tudtam C-ben programozni. Assembly-s, Pascalos, Clipperes multtal, sikerült, meglepően hamar működésre bírnom a lapokat.

Én két alaplapot használtam, az egyik az uno, a másik a nano típus. Ezek egymással kompatibilsek, csak mások a mechanikai kialakításaik. A lap tartalmazza a kontrollert, 5V-os tabilizátort, az USB-Serial kummunikáció eszközeit és az órajel generátort. Az UNO-hoz van sokféle illeszkedő periféria (érdemes az ebayon rákeresni az arduino uno shield kifejezésre), amit egy mozdulattal rátehetünk, míg a NANO-hoz ez nincs. Ott kábeleznünk kell, viszont kissebb, szűkebb helyre beépíthető és olcsóbb. Ezek az eszközök az Atmel ATmega ATmega328 kontrollert használják. A megoldásnak van előnye, hátránya, legalábbis az én véleményem szerint. Az előnye, hogy nagyon egyszerűen lehet magaszszintű nyelven programozni, nekem főleg az aritmetika megléte nagy segítség. A hátránya, hogy a Atmel kontroller több szolgáltatása elveszik, pl belső számlálók, belső megszakítás. A ki-bemenetek struktúrája előre meghatározott. Mindent összevetve, általános esetben érdemes használni, sokkal könnyebb vele egyedi projektet fejleszteni, mint az általam ismert többi eszközzel. Jut eszembe, itthon valamiért csillagászati áron kínálják ezeket a cuccokat, nem is értem. Az ebay-ről, ha nem is fillérekért, de 1-2 ezer forintért lehet rendelni ilyen egységeket.

Nano
Az ebay-en 2,85$
Mini
Én nem használom, mert nincs benne usb csatlakozási lehetőség. Ez jó, mert  az illesztő áramkörök fogyasztása nem terheli az áramkört, de viszont gond, mert külön kell megtalálni hozzá
Mini + TTL-USB
Találtam egy tételt, ahol együtt adják a lapot és az illesztőt. Így biztatónak tűnik, majd kipróbálom, ha megjön.

Uno
Van dip és smd tokozott procival is.
 
Az ebay-en 6,26$


MEGA2560
Lényegében az UNO típussal kompatibilis, csak több io vezetéke van. Előnye még, hoyg az UNO-n is létező lábak itt is ugyanúgy megvannak, tehaát az uno perifériák ugyanúgy használhatóak. Ez például nagyon kellemes, ha egy LCD shield-del bővítem, és az lcd kezelésen felül még marad bőségesen io láb.
Ide már nem írok árat, mert úgyis változik.... 8$ körül szokott lenni.
ATTinny85
A legújjabb üdvöske, pici, olcsó, aranyos. Már meg is rendeltem, hamarosan kipróbálom.
Itt van pici csavar, ugyanis az arduinos (linkelt) verzió 3.3V-os, az általam rendelt verzió 5V-os, és szoftver kompatibilis az arduino Gemma-val. Reméljük....

2016.12.12.
Kipróbáltam. Nagyon tetszik!
Kicsit másképp működik, mint a nano. Kell hozzá egy driver, és az IDE-t is fel kell paraméterezni hozzá. Amikor az IDE-ről feltöltök programot, először fordítja, majd kiírja, hogy feltöltés, de valójában csak vár arra, hogy rádugjam usb-n a lapkát. Akkor feltölti és kész. De a legközelebbi feltöltéskor ismét csatlakoztatni kell az usb porthoz. Leírást itt találtam hozzá. Szóval, lehúz, feldug..... és örül.....
Nem néztem utána még tüzetesebben, de ahogy felületesen olvastam, ennek azért szűkebb az utasítás készlete, mint az uno/nano típusoknak. Az tűnt még fel, hogy a p5-ös port nem programozható kimenetként, állandó reset-ként működik. Legalábbis, most itt tartok...



ATTinny85
1,5$ körül

A programozás menete:
1. Letöltjük az IDE-t (kezelő felületet) a honlapról: https://www.arduino.cc/en/Main/Software, installáljuk. Itt némely esetben tapasztaltam azt a hibát, hogy a virtuális USB-SOROS fordító program nem tudott telepedni a windows alá (eszközkezelő-sárga tábla). Ilyenkor a google segítségével meg kell keresnünk az aktuális megoldást. A fórumok sok segítséged adnak. Én ezt használom, és innen vettem. Remélem, nem valami vírus, mindenesetre remekül működik :).
2. A panel mellé kapott kábellel rá kell dugni usb-re, az IDE-ben be kell állítani a kapcsolat COM portját, és egyből lehet behívni demo programokat. Én első próbálkozásra a file/examples/basic/blink programot ajánlom, azzal el lehet szépen indulni.

Aztán hajrá, sokat kell olvasgatni a referencia oldalt, és megy ez :)

Jut eszembe, egy kedves honfitársunk írt a témában egy könyvet magyar nyelven.
http://www.webmaster442.hu/letoltheto-irasok/mikrovezerlos-rendszerfejlesztes-cc-nyelven-ii-arduino-platform/
Jó könyv, ajánlom. Bár magam még nem olvastam, csak megvettem......

Találtam egy másik könyvet is az elmki.hu oldalon. Íme.
Azóta el is olvastam, jó könyv, ha valaki programozni már jól tud, akkor nagyon hasznos olvasmány arduino területen.

Az első elvégzett projektem az volt, hogy csináltam egy garázs világítás - szellőztetés vezérlést. A dolog célja, hogy ha a garázsba lekapcsolom a villanyt, a vezérlés észlelje ezt, és pár másodpercre adjon irányfényt. A szellőzést meg téli-nyári üzemmód szerint úgy végezze, hogy nyáron, ha kinn hidegebb van, télen ha melegebb, akkor szellőztessen folyamatosan, különben, csak kb 50 percenként 2 percre frissítsen a belső levegőn. A programozás rész kb 2 nap alatt megvolt, szépen működik is. Nagyon jók a tapasztalataim.

A készülék fotója, még a munkaasztalon:
Garázs vezérlés

A berendezés "C" programja: garazsvezerles.ino.pdf

Egy másik projekt egy időzítő óra, amelynek az a feladata, hogy adott időpontban bekapcsolja a fűtést, amennyiben a környezeti hőfok egy adott hőmérséklet alatt van. Ha az időszakon belül a hőmérséklet a határ érték fölé emelkedik, akkor a fűtés szünetel. A berendezés a kikapcsolási idő elérkezésekor képes saját magát és a fűtő egységet áramtalanítani. A fotókon látható, hogy az UNO alaplapra fel lett téve egy LCD -key Shield, egy I2C-s óra áramkör és két relé panel.  Az lcd és az óra áramkörhöz is a kezelő rutinok az arduino rendszerben rendelkezésre állnak (include-olhatók).


Az alsó képeken jól látszik, az alaplapra felfűzött, készen vásárolt elemek.


2017.05.15.

Vettem egy új repülőt, amihez persze új szervók is kellettek..... Rendeltem is 7 darabot a HK-ról, de a beépítés előtt a régebbi tapasztalatok szerint érdemes ellenőrizni, hogy szép-e a hangja, azaz a mechanika korrekt-e, és nem-e zizereg nyugalmi pozícióba, azaz nem-e silány a pozícionálása. Erre használható egy szervó teszter. Fogtam is az enyémet, és rájöttem, hogy nem használtam már évek óta, és nem is jó. Elromlott. No, itt az idő, hogy gyorsan összedobjak egyett arduino uno lap segítségével.....
Íme az összetevők:
Arduino UNO
LCD keypad schield
Aztán forrasztottam 3-at: A szervócsatit ráforrasztottam a GND-re, az 5V-ra, és a 3-as digitális portra.
Összedugtam az LCD keypad schield-et és az UNO alaplapot, aztán kész is.... 


....már csak a progit kellett megírni. Épp éjszaka volt, meg is volt 2-3 óra alatt, némi filmnézés közben... Az üzemmódok a szokásosak:
- mode = 0 -> a jobbra-balra gombbal lehet 15 fokos lépésekben szabályozni a szervót 0 és 180 fok között.,
- mode = 1 -> a szervó beáll 90 fokra,
- mode = 2 -> a szervó 0 és 180 fok között mozog oda-vissza a szervó 2,7 sec/180 fokos sebességgel.

A módot a le-fel gombokkal lehet állítani.

íme a kód... bocsi, nincs agyon kommentelve, éjjel volt, késő...... :)





1997.
80C31

 

Régi hobbim volt a processzoros eszközök, mikrokontrollerek programozása. A Múltban 80C31-es mikrokontrollerrel foglalkoztam, ennek nagyon kényelmes volt az Assembly nyelve. Szerettem. Ami kevésbé volt szerencsés, hogy elég bonyolult hw kellett egy-egy igényesebb felhasználáshoz. Ennek oka, hogy az eszközbe nem voltak integrálva az I/O portok, így azt diszkrét alkatrészekkel kellett megoldani. Fő művem vele, egy fokozatmentes szabályozású, 8 szivattyús, csoportvezérléses nyomásfokozó vezérlő egysége. A hardver is működött és a szoftver is nagyon jól sikerült. Gyári, profi eszközöket meghazuttoló, kiváló nyomásstabilitást sikerült elérni. Grundfos centrifugálszivattyúk és Danfoss frekvenciaváltó volt hozzá.

Az általam tervezett nyomásfokozó csoportvezérlés fotója: 


2006.
Microchip PIC 16F676

 

Pár év múltával ismét a kontorllerek világa vonzott. A választásom erre a típusra esett. Ennek berendezkedtem a programozására és két általános célú alaplap nyákot is terveztem, gyártattam hozzá. Most már összeállt egy jól használható, kezdők részére is ajánlott fejlesztői környezet.

 



PIC 16F676 saját fejlesztésű alaplapok

 

Nagyon jól sikerültek. Főleg a kisebbik. Rengeteg-okos pici kis cuccot csináltam belőle. Semmi komoly, de aranyos. Nemsokára tervezek több, a modellezéshez kapcsolódó igencsak real-time alkalmazást. Főleg egy fékszárnyvezérlés mozgatja a fantáziámat vitorlásokhoz.....

De mindezek előtt egy asztali fejlesztő egység van félkészen. Egy pici panel kiegészítve I/O csatlakozásokkal, kijelzővel, hogy egyszerűbb legyen univerzális környezetben programozni.

 
Érdekesség, hogy a gyakorlatban a kisebb, egyszerűbb panel jobban bejött. Mondjuk ennek oka az is, hogy maga a PIC processzor foglalatba helyezhető, azt meg jobban preferálom.




PIC programozás

Ha valaki ilyesmire adná a fejét a következők kellenek neki:


1. assembly programozási hajlandóság (C programozás előny, de én sem tudok, szóval nem feltétel),
a megfelelő doksik a Microchip cég honlapjáról. Pl.: Mid Range Reference Manual és a konkrét processzor dokumentációja (pl.: 16F676).
2. egy PIC proramozó készülék: PICKIT3, ami itthon pl itt beszerezhető: ChipCAD Kft. Ez utóbbi helyen rendelhető magyar nyelvű szakkönyv is a PIC témakörhöz, nagyon sok információ van benne, de sok hasznát sajnos nem vettem. Lehet a neten találni egyéb programozó készülékeket, akár ingyen is letölthető, megépítési leírásokat, de azt tapasztaltam, hogy annyira olcsó ez az eszköz, hogy nem érdemes pót megoldásokban gondolkodni.
3. a programozó vezérléséhez szükséges Microchip program (Mplab IDE),
+1. ajánlatos még egy nyák, amin rajta vannak az alapvető működéshez kellő elemek (lásd saját fejlesztésű alaplapok), csatlakozók, de ennélkül is el lehet boldogulni.
 

Ez felett már csak egy átlagos PC kell, és indulhat a menet....  Az Mplab IDE felületén megírom a programot, a PICKIT 3-mal letöltöm a processzorba, kipróbálom, az eredmények ismeretében módosítom, letöltöm, és így tovább....

Nagyon fura, az ember azt gondolná, hogy kijelző, monitor nélkül nehéz a hibakeresés, a programok tesztelése, de igazából egy-egy lábon megjelenő tesztjelek (esetleg oszcilloszkópos figyelése) meglepően jól használhatóvá teszi a dolgot.

Jó móka.




LED-es világítás vezérlő

Egy ismerős beleszeretett a LED-es világításba. Nézegettük a neten, és azt a furcsaságot tapasztaltuk, hogy nincs egyszerű, könnyen használható LED-es fényerőszabályzós-kapcsoló elem a piacon. Vannak bonyolult, RGB vezérlésű, távirányítós csodák, de egy egyszerű panel, ami képes ki-bekapcsolásra, fokozatos fényerőszabályzásra, egy egyszerű nyomógombos kapcsolóval, azt nem találtunk, hát megcsináltam....

A kisebbik PIC-es alaplapot használtam, 2A-es teljesítmény darlington kimenettel. A vezérlés teljesen szoftveres úton zajlik. Még azt is lehetővé teszi, hogy ne kelljen stabilizált feszültségű 12V-os tápegységet használni a működtetéshez. Gyakorlatilag 12-19V-os változó táp mellett is működőképes és a LED-eket is megvédi a túláram okozta tönkremeneteltől. Természetesn kapcsoló üzemű, azaz nincs számottevő disszipáció a rendszerben.

 


DC áram logger és akku merülés jelző

A következő munkám egy DC áram logger.  Az a feladat, hogy egy RC repülőben kb 1 másodpercenként logoljam a motor által felvett áramot (1-30A). Ezt a PIC-ben tárolom, így később kielemezhető, idő függvényében, a hajtáslánc terheltsége. A dolog nehézsége, hogy a motor kapcsoló üzemben van vezérelve, így az mintavételek közti időben is integrálni kell az áramot, illetve, hogy nyomon követhessem az akkuból fogyott kapacitást, a teljes üzem alatt gördítve is kell integrálni a mérendő adatokat. Az jutott eszembe, hogy ha az előbbi funkciót már megvalósítom, akkor egyszerű megoldani, hogy a logger összegezze a rajta átfolyt mAh kapacitást, így pontos riasztást tudjon adni az akkumulátor beállított merülési szintjekor. És ez a riasztás teljesen független az akksi feszültség szintjétől.

 

Ma:

2017. November 21. Kedd,
Olivér napja van.

A weblapról:

Ezt a lapot kedvtelésből csinálom, ha épp ihletem van. A rajta lévő tartalom távolról sem teljes. Alakul még....

update: rendszertelenül.....