PIC fejlesztő környezet
A cikk letöltése PDF-ben...
Nemrégen nekiálltunk egy riasztóközpontot tervezni és ott derült ki igazán ez a probléma mivel a program írása közben még néhány dolog változott a hardveren. Amikor felszabadítottunk néhány lábat pl. azzal, hogy egy portra tettük a kijelzőt és a billentyűzetet, azonnal változott a nyákterv. Viszont ez azzal járt, hogy többször kellett újratervezni a panelt, na meg többször legyártani. Akkor gondoltunk először arra, hogy ha csinálunk egy olyan panelt, amely eléggé dinamikusan változtatható, akkor ezeket az utólagos újratervezéseket megúszhatjuk. Ezen a panelen csak átdugdosom a vezetékeket és folytathatom a programírást tovább. Ráérek a teljes befejezés után egyszer megtervezni a nyákot és legyártani a végleges hardvert. Persze tudom, meglehet az egészet csinálni a próbapanelen is, de elég nyűgös a dugdosós próbapanelre egy komolyabb hardvert megépíteni kijelzőtől, tasztatúrától stb...

Hirdetés

Rögtön a próbapanel ötlete jutott eszünkbe. Nagyon gyorsan lehet vele összerakni kisebb kísérleti áramköröket, bármikor változtatható, pillanatok alatt átépíthető az áramkör.
Sőt mivel nagyjából fillérekbe kerül a hozzávaló vezeték, és azok a tüskesor hüvelyek, amibe azokat bele lehet dugdosni, kezdett egyre szimpatikusabbá válni az ötlet, és úgy döntöttünk, hogy annak a mintájára csináljuk meg a panelt.



Nosza, nekiálltunk. Mivel a PIC18F4520-as PIC (amivel már csináltunk néhány dolgot, és valamennyire ismertük, pláne hogy pár darab volt is itthon) megfelelőnek tűnt, rá esett a választásunk. Mivel TEXTOOL foglalattal terveztük a dolgot, használható lesz más PIC-ekkel is csak mindegyikhez tervezni kell egy kis adaptert, amit a foglalatba bele lehet tenni. Persze nem mindhez, de azért bővíthető a választék.
Pl. a PIC16F877, PIC18F4550, alapból használható hozzá.
Rögtön az elején leírnám azt is, hogy ezt a panelt a saját jelenlegi igényeinkhez terveztük. Sokkal több mindent is fel lehetne tenni rá, de nekünk nagyjából ennyire volt szükségünk. Nincs rajta pl. analóg rész, mivel egyelőre nem is nagyon akarunk vele foglalkozni. Nem tettünk rá MAX232-őt sem csak a Rx-Tx kivezetést, mivel a soros port is kezd nagyjából a múlté lenni, de így egy adapterrel azért még megoldható, ha nagyon muszáj, stb... Tehát nem mondom, hogy tökéletes, még lehetne bővíteni ha szükség van rá, de az már egy másik történet. Nem tanuló panelnek szántuk, hanem hardverfejlesztő panelnek. Tanulni ott van a PIC16F877-es gyakorló panel, bár akinek nincs, ezen ugyanúgy lehet programozást tanulni és gyakorolni.

Menjünk végig a dolgon. Ami viszont rajta van: egy 4x4-es mátrix keyboard, egy 8-as gombsor, minden portra egy LED, tranzisztorral meghajtva, sőt a tranzisztorok nyitott kollektora is kihozható egy másik próbapanelre.
Ezen kívül egy DS1307-es óra IC, 24Cxx sorozatú memória, 1Wire csatlakozási lehetőség ahová pl. DS1820, DS1821-es hőmérő csatlakoztatható és iButton csatlakozási lehetőség, amelyek szintén bármelyik portra kivezetékezhető. Ezen kívül LCD kijelző, sőt a PIC16F877-es gyakorló panelhez tervezett kétféle LED-es kijelzőm is feldugható a panelra. Van még egy piezo zümmer is, meg egy infra vevő patron és USB csatlakozás is.

Mivel a PIC minden portja ki van hüvelysorokra vezetve oda lehet beledugni a külső elemeket, taszt, display, nyomógomb stb.. össze lehet vezetékezni a dugdosós próbapanel vezetékeivel.
Úgy alakítottuk ki a panelt, hogy ha az óra IC nem kell, akkor két jumperrel leválasztható az I2C buszról akárcsak a 24Cxx memória is, sőt mivel még egy 3-as hüvelysor van az I2C buszon, így azt is ki lehet vezetni akár másik panelre vagy kísérleti áramkörre. Ha portnak akarjuk használni azokat a lábakat, akkor az I2C felhúzó ellenállásait is le lehet választani egy dupla jumperrel.
Sőt amennyiben pl. PIC18F4550-es IC-t teszünk a foglalatba akkor az I2C helyett az USB port is rendelkezésünkre áll mivel USB csatlakozó is helyet kapott a panel felső részén, akár az USB port is tudja biztosítani a panel teljes tápfeszültségét, bár kezdőknek ez nem ajánlatos mivel egy rossz húzással tönkretehetjük a PC USB portját.

A portoknak a szintjét, ellenállásokon keresztül lehet akár Táp akár GND szintre hozni a panelen kialakított Táp és GND szigetekkel, amelyek szintén hüvelysorokból van kialakítva.

ICSP csatlakozón keresztül lehet programozni, mivel PICkit2-őt és ICD 2-őt használunk.

A panel legnagyobb előnye: bármelyik perifériát bármelyik portra bekábelezhetem, nem vagyok fixen kötve szinte semmihez. Ez teszi a dogot igen dinamikussá és felhasználóbaráttá. Akár közvetlenül, akár soros ellenálláson keresztül ki lehet hozni a PIC portjait bár a soros ellenálláson keresztül jobb, mivel ha kimenetre konfiguráljuk a portot akkor így a rövidzárat elkerülhetjük. DIP kapcsolókkal választhatók le a portokról a tranzisztoros meghajtó fokozat, de a LED-ek is leválaszthatók, és akkor felhasználható a tranzisztorok nyitott kollektora.
Helyet kapott a panelen egy mezei 5V-os táp is melyre kb. 8-20V-ig bármit köthetünk, akár egyent, akár váltót, mivel a bemenete egy Graetz híd. Max 1A-ig terhelhető, de ez bőven elegendő, mivel az összes LED és a kijelző háttér világításának a fogyasztása nem éri el ennek a felét. A PIC fogyasztása elhanyagolható. SMD 7805 került a panel fóliaoldalára, mert az összefüggő GND felület megfelelő hűtést biztosít és ez által megspóroltuk a hűtőbordát. (Ez a megoldás leginkább a borda által elfoglalt hely miatt lett szimpatikus.)
Vannak olyan kijelzők, aminek a kontraszt beállítását -5V-al kell elvégezni, felkerült a panelre egy ICL7660-as IC, ami a +5V-ból állítja elő a -5V-ot, amit szintén kivezettünk egy kis tápszigetre egyéb felhasználás céljára.
A másik feltétel az otthoni legyárthatóság volt, bár mivel elég nagyra sikerült a panel, vasalással nehezen megoldható, de azért nem lehetetlen, foto eljárással viszont simán otthon legyártható a panel. Ezért lett egyoldalasra tervezve, inkább vállaltuk pár átkötés beültetését, minthogy kétoldalas furatgalvános legyen, mivel annak, amatőr körülmények közötti legyártása szinte lehetetlen. Bár igaz, mi is legyártattuk az első panelt, de inkább a mérete miatt, meg azért mert a nyáküzemben gyártott példányon megoldott a szitázás, és így szépen feliratozva lett a panel, ezáltal sokkal egyszerűbb lett vele a munka mivel az alkatrész oldalon mindennek ott a leírása. Persze fehér Alfaset-el is lehet feliratozni akkor azért otthon is legyártható, de nekünk sem ekkora panelunk, sem ekkora műnyomó papírunk nem volt, na meg Alfaset sem, így hát végül is a gyártás mellett döntöttünk.
Az alkatrészek gyakorlatilag eléggé olcsón beszerezhetőek, így egy egész jó kis fejlesztői környezethez jutottunk a gyári panelek árának a töredékéért.

A BC337-es tranzisztor 7,-Ft, a 64 lábú hüvelysor 270,-Ft, ebből alakítottuk ki az összes hüvelysor szigetet, a DIP kapcsoló 100,-Ft, a Textool foglalat 700,-Ft körül van, de ha valaki csak egyféle IC-vel akarja használni, akkor megteszi egy sima precíziós foglalat is, bár szerintem ezen már nem érdemes spórolni. 850,-Ft-ért lehet kapni 100db vezetéket a próbapanelhez, ehhez is azokat használom. A nyomógombok árát nem tudom, mivel abból volt itthon bőven, de az is filléres tétel.
A nyákon kívül (ami legyártatva is 6-8.000,-Ft környékén mozog) néhány ezer Ft-ból megúsztuk az egész költséget. Ennyi pénzért azt hiszem bőven megérte nekiállni.

A későbbiek során talán még bővítünk rajta, gondolok a grafikus kijelzőre, vagy több PIC lehetőségére egy panelen, de egyelőre ez így nekünk elegendő volt.
Még egy apróság. Tudjuk, hogy sokkal több csatlakozó hüvely van a panelen, mint amennyi valóban kellhet, de mivel filléres tétel, nem spóroltunk vele, inkább legyen tízzel több, mint eggyel kevesebb.

Lássuk a panel működését: A PIC minden portja ki van vezetve a hüvelysorokra. A foglalat utáni első hüvelysor szélesebb, mint a port, két oldalán van egy-egy plusz csati a táp és a GND számára, ide közvetlenül bele lehet dugni a felhúzó ellenállás hálókat, ellenállásokat. Bár általában felhúzókat használunk, megvan a lehetősége GND felé húzni a portokat. A következő hüvelysor közvetlenül a PIC kivezetéseihez enged hozzáférni. Utána van egy soros ellenállás a PIC-et védendő, majd egy dupla hüvelysor, ami szintén a PIC portjainak lábaihoz csatlakozik, de már a védőellenálláson keresztül. Utána egy DIP kapcsoló amivel - ha szükség van rá - beiktatható egy tranzisztor, amivel a portok állapotát mutató LED-eket hajtjuk, sőt ha a LED-eket a következő DIP kapcsolóval leválasztjuk, akkor a tranzisztorok nyitott kollektorát felhasználhatjuk nagyobb áramú alkatrészek meghajtására is. /Relé stb.../

Ki vannak alakítva a panelen TÁP és GND szigetek. Mivel ezeket közel terveztük a portokhoz akár vezetékkel akár ellenállással lehet a PIC portjait akár bitenként is TÁP vagy GND szintre hozni. Ebből is jóval több lett, mint ami elméletileg kellett, de azt hiszem, Murphy törvényét mindenki ismeri. Minden méretre vágott vezeték rövidnek bizonyul és minden beépített aljzat mellé kell építeni még egyet, mert kevés lesz. Így hát nem sajnáltuk.
Ezen kívül, ha akár próbapanelen akár egyéb módon össze akarjuk hozni esetlegesen másik áramkörrel a panelt, ezek a csatlakozósorok még jól jöhetnek, sőt mivel kiegészítőket is terveztünk hozzá / relés panel, triakos Panel, stb.../ azokat is ide lehet feldugdosni, tehát valószínűleg nem lesz túlzás a sok hüvelysor.

Mivel úgy gondoltuk, hogy ne csak egy-két féle PIC-et lehessen használni a panelhez, így jumperrel leválaszthatóvá tettük a Quarz oszcillátort is - persze nem csak ezért, hanem azért is mert belső oszcillátor használata esetén azok a lábak portként felhasználhatók.
Amennyiben másik PIC-et akarunk használni, csinálni kell hozzá egy kis adaptert, amit ellátunk két oldalt olyan tüskesorral, hogy befogható legyen a TEXTOOL foglalatba.
Erre aztán fel lehet tenni a másik PIC-et, úgy hogy a megfelelő lábakra ugyanazokat a portot, tápot, stb... vezetjük ki, amik a panelen vannak. Ezekre az adapterekre akár foglalatot is tehetünk, vagy akár SMD PIC-et is. Így igen sokféle PIC-el használható a panel. (Persze nem mindegyikkel, de nem is az volt a cél)
Kivezettük a programozó lábakat is mivel így közvetlenül programozható a PIC. Persze ezek már csak a fejlettebb programozókkal használhatók leginkább, de azt hiszem ez nem gond, mivel aki PIC-el szeretne foglalkozni annak előbb-utóbb be, kell szerezni vagy meg kell építeni egy legalább PICKIT 2 vagy ICD 2 szintű programozót. Itt az oldalon a PICKIT 2 építési leírása szerepel is az egyik előző cikkben. A cikk írása óta már több példány készült belőle, mind kifogástalanul működik.

Na menjünk tovább. Helyet kapott még egy DS1307-es Óra IC. Hogy miért pont ez? Valahogy ez volt szimpatikus. Egyrészt I2C buszos, másrészt folyamatosan működik, mivel telep is táplálja, azonkívül a hetes lábon - amire szintén tettünk két csatit - kivezethető a 32, 8, és a 4 kHz, sőt az egy Hertz-es kvarc pontos frekvenciájú jel is, amit esetlegesen felhasználhatunk ha szükség van rá. Amennyiben nem kell éppen használni, egy dupla jumperrel leválasztható az I2C buszról, akár csak az I2C buszos 24C sorozatú memória, aminek a helyére csak egy foglalatot tettünk, mivel többféle is van, amit használhatunk.

Ha portként akarjuk azokat a lábakat használni, amik az I2C buszhoz tartoznak akkor egy dupla jumperrel leválaszthatóak a felhúzó ellenállások is, sőt le kell akkor is, ha az USB portot akarjuk használni.

Az USB port is egy hármas DIP kapcsolóval iktatható az áramkörbe a csatlakoztatás után.
Természetesen ezt csak olyan PIC-el lehet használni ami, kezeli az USB portot. (Pl. PIC18F2550, PIC18F4550, stb...)
Általában csak egy kondi kell a V+ lábra, amit be lehet iktatni a DIP 3 kapcsolójával.
USB-B csatlakozót tettünk a panelra, mert annyi hely még bőven volt és összehasonlíthatatlanul többet kibír, mint a mini USB. Sajnos az nagyon hamar tönkremegy, mint azt már fényképezőgépeknél, kameráknál stb.. tapasztaltam.

Ejtsünk néhány szót az 1Wire és az iButton csatlakoztatási lehetőségről is.
Az 1Wire pl. a DS1820, DS1821 csatlakoztatására szolgál. Mivel ezek nagyon jó hőmérő IC-k, érdemes volt feltenni a panelre a csatlakozás lehetőségét, hiszen remek dolgokat lehet a segítségükkel csinálni.
Ennek is úgy van kialakítva a csatlakozása, hogy miután a háromlábú IC-t beledugjuk közvetlen a részére kialakított hüvelysorba, megkapja a tápot és a GND-t, utána egy darab vezetékkel arra a portra kötöm be az adatlábat, amelyik szimpatikus. Mivel nekünk csak TO-92-es tokozásúak voltak a DIP 8 verziójú változat beépítésére nem volt szükség, nem is került rá sor.

Az iButton csatlakozás szintén egy jól használható dolog, segítségével akár riasztót, autóriasztót vagy beléptető rendszereket tervezhetünk.

Elláttuk a panelt egy infra bemenettel is. Ez egy DVD-ből, vagy videomagnóból bontott infra vevő. Ez szintén bármelyik portra feldugható, és ha írunk neki egy rutint, akkor a PIC megtanítható, hogy felismerje bármely infra távszabályzó jelét, amit ezután felhasználhatunk vezérlésre, kiváltva az esetleges mechanikus kapcsolókat.

Volt még egy ötletünk, ami szintén kellhet, ez pedig nem más, mint egy kis piezo hangszóró.
Ez is felkerült hát, bár már kezdtünk hely szűkében lenni. Egy tranzisztor hajtja ezt a kis áramkört is, ami megkapja a tápot és a GND-t a panelról, a tranzisztor bázisát meg kivezettük egy tüskesorra így ez is bármely portra felkábelezhető. Használható akár billentyűhang programozásához vagy valamilyen visszajelző hangjelnek is.

Kapott a panel egy 8 db-os gombsort ami GND felé kapcsol. Ez is bármely portra feldugható.

Mellette a panel közepe táján egy 4x4-es mátrix tasztatúra kapott helyet, melyet ellenállásokkal is elláttunk, hogy a kijelző mellé ugyanarra a portra feldugható legyen, de persze ez is bármely portra csatlakoztatható. Mivel minden oszlop és sor külön kezelhető így 4x3-as 4x2-es 3x3-as stb...keyboard-ként is használható.

Na ja, és ne feledkezzünk el a kijelzőről sem. Az is bármelyik portra csatlakoztatható, sőt többféle kijelző is használható hozzá, mivel ha másképp nem, akkor egy kis öcsi-panel legyártásával olyan kijelző is használható hozzá, ami nem láb kompatibilis azzal, amit mi használunk.
Ennek érdekében egy kis - 5 Voltos táp is felkerült a panelre mivel sok kijelző a kontraszt beállításhoz azt használ. (Persze ez csak néhány mA-ig terhelhető, de ide az elegendő is.)
Ezen kívül egyik előző cikkemben itt az oldalon leírtam kétféle LED-es kijelzőt is, amiket a gyakorló panelhez terveztem. Ezek is minden további nélkül használhatóak ehhez a panelhez is, akárcsak a gyakorló panel LCD kijelzője.
Ezt a -5V-ot is kivezettük egy kis hüvelysor szigetre, ha esetlegesen valami másra szeretnénk használni, akkor a lehetősége meglegyen. (Tudom ez is feleslegesnek tűnik, de ha csak egyszer lesz rá szükség, akkor már megérte.)
Végül még egy reset gombot is kapott, mivel PIC-nek szüksége van egy jól definiálható alaphelyzetre, mely ezzel kiváltható és újra indítható, ha kísérletezés közben megfagyasztjuk.

Van még egy érdekes dolog, ami feleslegesnek tűnik bár nem az, a B és a D port, az E és a C port valamint a keyboard mellett, van három olyan hüvelysor sziget, ami nincs bekötve sehová. Így igaz, ezek csak és kizárólag a hosszabbító szerepét töltik be. Mivel van egy két dolog, ami nagyon távolra került a portoktól, nem mindenhova ér el a próbapanel vezetéke még a hosszú sem, viszont ha nincs más ezekkel tovább lehet vinni a jelet, tápot bármit...

Lehet hozzá egy csomó kiegészítőt is készíteni. Nekünk már elkészült egy Relés panel melyre 8 db relét tettünk, ami egy teljes portot elfoglal. Le lehet vele vezérléseket próbálni, mivel a panelnak az a célja, hogy a komplett hardvert is össze lehessen álli tani rajta. Most készül egy Triak-os panel is, ami szintén hasonlóan használható csak mechanikus kapcsoló elem nélkül.
Ezekhez a külső tartozékokhoz készült egy egyszerű Táp is, mely stabil 5V-ot, 12V-ot állít elő, és van benne egy egyszerű szabályozható is, 1,2 Volt és 18 volt között. Nagyjából 2A terhelhetőségű összesen, ez kísérletezni a legtöbb esetben több mint elegendő.
Ezen kívül már az első IC foglalatba tehető adapter is elkészült melybe PIC16F84, PIC16F628 és ezekkel lábkompatibilis PIC tehető.
Sőt csináltunk egy olyan kis panelt is, amibe a PIC16F873 (876-os PIC-et / Tehát a vékony 28 lábút / vagy bármelyik 8, 14, 16 lábú DIP tokosat lehet beletenni, és a dugdosós próbapanel mintájára lehet a lábakat átkötni, ezáltal szinte bármelyik DIP tokos PIC-et használhatjuk hozzá.

Egyelőre nagyjából ennyi. Kísérletező panelnek szántuk és azt hiszem elég sok, olyan megtervezendő áramkört lehet vele szimulálni, hogy nem kínlódtunk vele hiába. A panel lehetőségeit úgyis csak az áramkörök tervezése közben lehet igazán megismerni. Mi is csak most haverkodunk a frissen megtervezett panellel, de remélem, sok-sok kellemes órát szerez még.
Pontosan tudjuk, hogy a tökéletestől messze van, de ha figyelembe vesszük a gyári panelek árait, akkor azt hiszem a hasonló tudású fejlesztői környezetek ennek a sokszorosába kerülnek. Valószínűleg még néhány változáson átmegy, mielőtt a végleges formáját eléri, mivel munka közben fog kiderülni, hogy esetlegesen milyen hiányosságai vannak még na meg, hogy mi mindent toltunk el rajta) vagy mi az, amit feltétlen meg kell rajta változtatni, hogy még használhatóbb legyen....

Fájlok:
FájlnévFájlméretLetöltve
A cikkhez tartozó fájlok csak bejelentkezés után tölthetőek le!
grandiloquent-yearly
grandiloquent-yearly
grandiloquent-yearly
grandiloquent-yearly