Arduino – PIC vezérlések

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 referenciá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 kezdetben 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 ritkább. 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
Eltelt sok év, és még mindig a nano bizonyúlt a leginkább ajánlott lapkának. Az ára nem vészes, egész kicsivel drágább, mint a attiny85, vagy a PRO Mini, viszont könynen, jól dokumentáltan használható.
Az ebay-en 2,50$, meg még egy adag szállítás
PRO Mini
Ahogy én látom, hasonló, mint a nano, azonban kevesebb a lába, nincs benne usb interfész. Ez jó, mert  az illesztő áramkörök fogyasztása nem terheli az áramkört, de viszont gond, mert külön kell venni hozzá usb-ttl illesztőt, ami viszont nem marad benne az épített áramkörbe. Azzal jól működik. Figyelni kell, mert ebből már van 5V-os és 3.3V-os verzió is. Itt nagyon kell vigyázni, mert újabban minimálisan olcsóbban nem Atmega328-as, hanem 168-as procival szerelik. Ennek kb nincs is semmi jelentősége addig, amíg nem akarunk pl grafikus kijelzőt kezelni vele. Ott kevés a 168-as memóriája. Mivel tényleg, csak kevéssel drágább, érdemes figyelni, hogy 328-as verziót vegyünk.
FT232RL-3-3V-5-5V-FTDI-USB-to-TTL-Serial-Adapter-Module-for-Arduino-Mini-PortTTL-USB illesztő
Létezik FT232RL és CH340 IC-vel megvalósított. Mindkettő jó. Arra érdemes figyelni, hogy 3.3-5V-os, átkapcsolható típust kell venni, hogy bármelyik feszültséggel használható lapot tudjon kezelni. 3.3V használat előtt ellenőrizni kell, hogy jó-e a kimenő fesz, volt már, ahol FAKE kapcsoló volt, és mindenhogy 5V-ot adott ki, ami a 3.3V-os lap tönkremeneteléhez vezet.

Uno
Van dip és smd tokozott procival is. Arra érdemes figyelni, hogy ne hagyományos USB csati legyen rajta, hanem valami kisebb verzió, mert az lcd – key schildnek kissé útban van.
 
Az ebay-en kb 3,2$ + szállítás

MEGA2560
Lényegében az UNO típussal kompatibilis, csak több io vezetéke van. Előnye még, hogy az UNO-n is létező lábak itt is ugyanúgy megvannak, tehá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…. újabban 10$ körül szokott lenni.
Mega 2560 Pro
Újabban kijött a fenti típusnak kisebb verziója, ugyan azt tudja, csak kisebb nyákra van megcsinálva. Ennek van 5V-os és 3.3V-os verziója is, itt erre figyelni kell.


ATTinny85
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… 5db esetén majd 10$
Igazából nem markánsan olcsóbb, mint a nano vagy a pro mini, viszont a programozása kicsit macerás, ott van létjogosultsága, ahol a kis méret szempont.
ESP8266 Wemos D1
Wifi képes arduinos lapka. Kiválóan alkalmas web-es felületen paraméterezhető online eszközök készítésére. Az ardunos GUI nagyszerűen ismeri, jól használható. Jó kód mintát kell keresni, vannak olyan kódok, melyeknél nem jó a wifi kezelés. Sajnos EEprom nincs benne.
ESP8266 WeMos D1 Mini, mely kompatibilis az előző lappal.
Amit észrevettem, hogy ha a PC-s böngészőkön a böngésző kiszolálása feltűnően lassú, nézni kell másik libraryt vagy böngészőt.
Kerestem valami szimpatikus kijelzőt az arduinós lapkáimhoz. Ezen a két oled kijelzőn akadt meg a szemem. Mindkettő létezik fehér és kék monochrom kivitelben, és I2C busz segítségével, azaz mindössze 4 vezetékkel használható. A 4 vezetékes típusnál meg kellett növelnem az initializálásnál a késleltetést 4sec-re, mert másképp nem mindig éledt fel. A kisebb 128×32 pixel,
a nagyobb 128×64 pixel felbontású. Erről írtam, hogy az Atmega168-as procival nem lehet kezelni, mert annak csak 1KB memóriája van, és az ehhez kevés. Nekem Atmega 328-on, az Adafruit library-val sikerült, grafikus módban életre kelteni. Remek abból a szempontból, hogy lehet keverni a alfanumerikus és a grafikus elemeket a képernyőn.

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.
2. Az adott panelről olvasgatni kell a neten, hogy milyen beállítások szükségesek az IDE felületen. Gyakran az adott panel kezelő szoftvereit is nekünk kell letölteni. A nano és UNO panelek azért is jók, mert teljes körűen integráltak az IDE szoftverébe. Aztán márcsak a panel mellé kapott kábellel rá kell dugni usb-re, az IDE-ben be kell állítani a processzor típusát, 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:

Egy másik projekt egy időzítő óra, amelynek az a feladata, hogy adott idő intervallumban 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ó. A tervezés csodája, hogy egy 5db alkatrészből álló körömnyi nyákon mi tud elromlani….. Elromlott. No, itt az idő, hogy gyorsan összedobjak eggyett 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.


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ót kezelt. 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.

É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: PICKIT4, 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 X IDE) /őszintén, itt már kicsit találgatok, mert vagy 10 éve áttértem az arduinora, így azóta nem követem szorosan a pickit témakört/
+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 4-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.