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
 
OTA WEMOS D1 CH340 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.  
OTA WEMOS CH340 D1 Amit észrevettem, hogy a PC-s böngészõkön a böngészõ kiszolálása feltûnõen lassú.

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:

2018. Augusztus 16. Csütörtök,
Ábrahám 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.....