0
Nyomógombok által programozható vezérlés Mikrokontrollert mindenütt találunk: a háztartási készülékekben, a szórakoztató elektronikai készülékekben, a gépkocsikban, a mérõkészülékekben, sõt az ember nélküli ûrhajókban is. Mindenütt elvégzi azokat a teendõket, amelyeket egy program ajánl. Izgalmas dolog, hogy saját maga hozzon létre egyszer egyszerû vezérlõprogramokat. Mindig az az elsõ lépés, hogy megkeresse azt a mikrokontrollert vagy processzort, amely a lehetõ legjobban illik az adott feladathoz.
Tartalomjegyzék 1 Bevezetés 5 2 Váltakozó villogó 8 3 Bináris számláló és PWM-kiadás 9 4 Analóg-digitális-átalakító 13 5 Véletlengenerátor 15 6 Impulzushosszúság mérése 17 7 Programok kiolvasása 19 8 Programok beadása 21 9 A példaprogramok helyreállítása 23 10 TPS-alapparancsok 23 11 Számítás változókkal 26 12 Ugrások és elágazások 28 13 A parancsok áttekintése 30 14 Számlálóhurok 31 15 Összehasonlítások 32 16 AND, OR és XOR 33 17 Alprogramok 34 18 Szürkül
1 Bevezetés A TPS-kontroller elve nagyon egyszerû. Van négy digitális bemenet (E1 - E4), és négy digitális kimenet (A1 - A4). Van ezenkívül két analóg bemenet (AD1 és AD2), továbbá egy kvázi-analóg PWM-kimenet. Egy reset-bemenet a hozzátartozó reset-gombbal visszaállítja a programokat a kezdeti állapotukra. A kontrollert három AA-méretû elem táplálja kb. 4,5 V feszültséggel, és a 2,2 V - 5,5 V tartományban mûködõképes.
1. ábra 1: A rendszer alapkapcsolása 2.
A szállításkor már van néhány alapprogram (default = alapértelmezés) a TPS-kontrollerben, amelyek közvetlenül elindíthatók. Ennek következtében a kontroller lépésrõl lépésre vehetõ használatba. Ismerkedjen meg elõször a hardver-funkciókkal, és csak utána kezdjen bele néhány programba. Az elsõ tesztek esetében a kontrollerben már készen elérhetõ kis programokat indítson el. A hozzájuk tartozó programjegyzékek elsõ benyomást nyújtanak a lehetõségekrõl. Minden esetben magyarázatot is kap hozzájuk.
Használja a felsõ és az alsó tápellátó sínt a GND testcsatlakozások számára. Ide kell csatlakoztatni az elemtartó fekete kábelét, azaz a negatív pólust. A VCC pozitív vezetéket kösse össze az elemtartó piros csatlakozókábelével. Feltétlenül kerülni kell a helytelen polaritású csatlakozást, mert tönkremehet a kontroller. Szereljen be tehermentesítõnek egy rövid huzaldarabot. Az egyszer már csatlakoztatott tápáramellátást lehetõleg mindig hagyja bekötve. A kikapcsoláshoz vegye ki az egyik elemet a tartóból.
A példa a 20h-val (decimális 32) kezdõdõ címtartományt foglalja el. A felsõ címtartományba esõ több program késõbb ugyancsak saját alkalmazásból indítható. A címek saját programkóddal is felülírhatók. Szükség esetén azonban a kontroller ismét visszaállítható alapállapotába, amikoris az eredeti példaprogramok helyreállítódnak. Cím Parancs Adatok Megjegyzés 20 1 1 LED1 21 2 8 Várj 500 ms-t 22 1 8 LED8 23 2 8 Várj 500 ms-t 24 3 4 Ugorj -4 1.
5. ábra 5: A PWM-LED alkalmazása 6. ábra.
Rakja az E1-et a GND szintre. Ezáltal egy visszaállítás után elindul a második példaprogram. Ez a kimeneti állapotokat számlálja binárisan felfelé. Folyamatosan végigfut a 0000-tól (decimális 0) a 1111-ig (decimális 15). A program az A változót használja az egyszerû összeadáshoz, és a digitális kimeneten, ill. a PWM-kimeneten történõ kiadásra. A 7. és az 5. parancsnak alfunkciói vannak, amelyek adatokként vannak megírva.
A következõ legmagasabb kimenetnek mindig fele akkora a frekvenciája, ill. kétszer akkora a periódusideje: A1: A2: A3: A4: 200 ms 400 ms 800 ms 1.600 ms Ezenkívül a növekvõ számértékek kiadásra kerülnek a PWM-kimeneten (impulzusszélességmoduláció) is. A PWM-jel egy kb. 16 kHz frekvenciájú négyszögjel. Itt az impulzushossz szabályozása történik, úgyhogy az impulzus/szünet-arány határozza meg az átlagos bekapcsolás idõt, és ezzel a LED fényességét.
8. ábra 8: Simított PWM-kimenõfeszültség 4 Analóg-digitális-átalakító Ha az E2-t a GND-re köti, és megnyomja a reset-gombot, elindít egy kis példaprogramot az analóg-digitális-átalakítóhoz (AD-átalakító). Az AD1 analóg bemeneten lévõ analóg feszültséget a készülék megméri, és átalakítja digitális számértékké. Mivel a TPS-kontroller kivétel nélkül 4bites értékekkel dolgozik, az analóg-digitális-átalakítás eredménye a 0-15 tartományba esõ szám.
9. ábra 9: A fényérzékelõ csatlakoztatása 10.
A példaprogram a digitális kimeneteken és a PWM-kimeneten történõ kiadás miatt nagyon hasonló az elõzõ fejezet programjához. Az elsõ sorban azonban az analógérték átalakítási parancsa áll. Cím Parancs Adatok Megjegyzés 3. kilistázás: Az AD-átalakító és a PWM-kimenet Vizsgálja a programot az érzékelõ különbözõ megvilágításai mellett. Minél több fény esik az LDR-re, annál kisebb a feszültség az AD1-n.
11. ábra 11: A véletlenkapcsoló ellindítása 12.
A program egy feltételes ugrás parancsot alkalmaz. Ha az S1-bemenet állapota Egy, a következõ parancs átugrásra kerül. Ha megnyomja a gombot, az állapot Nulla lesz, és ez által megnõ az A változó értéke. Ez a kimenet állapotának a gyors felfelé számlásához vezet. A gomb felengedésekor az utolsó számlálóállás marad meg. A nagy számolási sebesség miatt nincs befolyásunk az eredményre, azaz az véletlenszerû. Cím Parancs Adatok Megjegyzés 4.
13. ábra 13: E4 a GND-ra kötve 14.
Az idõmérés az S1 = 0 állapotban történik, azaz megnyomott gomb mellett. Az 5 ms-os várakozási idõhöz még egyszer kb. 5 ms adódik a számlálóhurok összesen öt parancsának a végrehajtásához. A mérés idõegysége emiatt 10 ms. Cím Parancs Adatok Megjegyzés 5. kilistázás: Idõmérés Nyomja meg lehetõleg röviden az S1 gombot. Eredményül például 1010-et kap, azaz a decimális 10-et. Mivel a program idõegysége 10 ms, a kijelzés jelentése 100 ms. Egy kis edzéssel rövidebb idõt is elérhet, lefelé egészen 50 ms-ig.
15. ábra 15: S1 és S2 a programozási üzemmódhoz 16.
• • • • • • • • • Az S2 gomb elsõ megnyomása A cím (alsó négy bit) megjelenítése, 300 ms Kijelzõ ki, 300 ms A parancs megjelenítése Az S2 gomb második megnyomása Az adatok megjelenítése Az S2 gomb harmadik megnyomása A következõ cím megjelenítése, 300 ms stb. Ha pl. egy meglévõ öt lépéses programot csak meg akar nézni, de nem akar módosítani, az S2 gomb összesen tízszeri megnyomásával jut a végére. Miután minden esetben rövid idõre megjelenik az aktuális cím, könnyû a tájékozódás.
az a képzet, hogy a rendszer takarékoskodik a kijelzõ energiájával, és a programozásra az EEPROM-ot használja. Ilyesmit ismerünk már autónkból is: Ha az önindítót mûködtetjük, rövid idõre elmegy a világítás és a rádió. Egy meglévõ programnak lehet csak egy helyét módosítani. Az S2 gombbal legördítjük a sorokat a kívánt helyig, és az S1 gombbal megváltoztatjuk a parancsot vagy az adatokat, majd tároljuk õket az S2 gombbal. Az elsõ teszthez egy csak két parancsból álló programot adjon be.
9 A példaprogramok helyreállítása Ha bizonyos idõ múlva helyre akarja állítani a kontroller õseredeti állapotát, ezt két FF byte beadásával teheti meg. Valójában ez az állapot a beíratlan EEPROM-nak felel meg. A TPSkontroller firmwareje egy indítási funkciót tartalmaz, amely elõször a két elsõ címet vizsgálja meg, hogy felismerje, üres-e a memória. Ha itt két FF-byte olvasható, a kontroller abból indul ki, hogy még nem lett beadva program.
A 2. parancs olyan paraméter, amely az idõt milliszekundumokban, és egy 1-2-5-sorolást tartalmaz. A 0 -15 értékû csekély számátfogás ellenére ezen a módon egy milliszekundum és egy perc közötti késleltetési idõk valósíthatók meg. Még ennél is hosszabb idõket kell beprogramozni egy várakozási parancs többszöri végrehajtása céljából, pl. egy számlálóhurokban. A 3. visszaugrási parancs különösképpen egyszerû, és sok olyan feladathoz megfelel, ahol egy folyamatot végtelen sokszor ismételni kell.
Cím Parancs Adatok 08 3 8 Megjegyzés 11 28 12 28 14 28 18 28 38 10. kilistázás: 1. futófény Bõvítse ki a programot két további kiadási mintával, úgyhogy a fénypont mindig oda- és visszafusson. Kísérletezzen más kiadási mintákkal és késleltetési idõkkel. Cím Parancs Adatok Megjegyzés 11 28 12 28 14 28 18 28 14 28 12 28 3C 11. listázás: 2. futófény, oda és vissza Egy kapcsolóóra egy késleltetési paranccsal egy percig terjedhetõ késleltetést tartalmazhat.
11 Számítás változókkal Eleddig az egyes parancsok paramétereiben csak állandó számértékek nyertek alkalmazást. Ez ésszerû akkor, amikor egy programnak mindig egyformán kell lefutnia. A komplexebb programok azonban változó adatokkal dolgoznak. Pl. esetleg az A = A + B számítást kell elvégezni. Az A és a B változó értékétõl függõen esetrõl esetre valami mást kapunk eredményül. Az eredmény vezérelheti pl. a kimeneteken lévõ LED-eket. A szabályzás négy változóval - A, B, C és D - rendelkezik.
65: A = Din.0 66: A = Din.1 67: A = Din.2 68: A = Din.3 69: A = AD1 6A: A = AD2 71 –7A: A = 1–10 kifejezés 71: A = A + 1 72: A = A – 1 73: A = A + B 74: A = A – B 75: A = A * B 76: A = A / B 77: A = A And B 78: A = A Or B 79: A = A Xor B 7A: A = Not A Az A változó alkalmazására egy példát talál a 3. fejezet példaprogramjai között. A program itt a nulla címre lett beállítva, és kissé ki lett bõvítve. Hozzájött még egy 0 értékkel definiált kezdés az A változón.
Cím Parancs Adatok Megjegyzés 69 54 7A 59 26 35 14. kilistázás: Invertálás 12 Ugrások és elágazások Eddig csak egy egyszerû ugrásról volt szó (3. parancs), amely maximum 15 címig nyúlt vissza. Most egy abszolút ugrás (Jump) jön hozzá. Mivel az ugrási cél csak 4 bittel adható meg, van egy kiegészítõ parancs, amely a cím legmagasabb helyértékû nibblejét határozza meg. Ezáltal a címtartományunk 0–255.
C5: if Din.1 = 1 then Adr = Adr + 1 C6: if Din.2 = 1 then Adr = Adr + 1 C7: if Din.3 = 1 then Adr = Adr + 1 C8: if Din.0 = 0 then Adr = Adr + 1 C9: if Din.1 = 0 then Adr = Adr + 1 CA: if Din.2 = 0 then Adr = Adr + 1 CB: if Din.
Adja be a programot, és tesztelje. A reakcióidõ most lényegesen gyorsabb. Az idõegység kb. 5 ms. Az eredeti példaprogram még mindig megvan a memóriában a 34h címtõl, mert csak az alacsonyabb címek lettek átírva. Írjon meg egy kis programot, amely csak egy ugrást tartalmaz ezen a címen. Itt elõször a 3. oldalt kell megadni. Az ezután következõ abszolút ugrás a megadott 4 címmel a 34. tényleges címet célozza. Cím Parancs Adatok 00 8 3 01 9 4 Megjegyzés 83 94 16.
14 Számlálóhurok Egy folyamatot pl. pontosan ötször kell végrehajtani. Ehhez egy számlálóhurkot kell képezni. Egy ugrási parancsot ebben az esetben ötször kell végrehajtani, majd többé nem. A számlálóváltozó neve C. Az 5 számlálási értéket elõször az A-ba kell betölteni, majd onnan a Cbe. Az A2 parancs egy abszolút ugrást végez a 02 címre, és ugyanakkor 1-gyel csökkenti a C változó tartalmát. Ha a C elérte a 0 értéket, az ugrásra többet már nem kerül sor.
A számlálóhurkot úgy is lehet alkalmazni, hogy ne hátra, hanem elõre ugorjon. Ezúttal a folyamat ténylegesen ötször megy végbe, ha a C kezdeti értékéül 5-öt töltünk be. A minden esetben átugrott 04 cím egy önmagára történõ relatív ugrást tartalmaz, és ezzel egy végtelen hurkot, amely a program végéül szolgál. Cím Parancs Adatok Megjegyzés 45 52 80 A5 30 15 28 1A 28 36 18. kilistázás: Ötszöri villogás 15 Összehasonlítások Két számértékeket kell összehasonlítani.
Cím Parancs Adatok Megjegyzés 45 51 80 69 C1 98 1F 34 10 36 19. kilistázás: Egyszerû szürkületi kapcsoló Tesztelje úgy a programot, hogy a tenyerével többé vagy kevésbé eltakarja a fényérzékelõt. Megállapíthatja, hogy az alapmûködés teljesül. Mindenesetre egy nem túl szép mellékkörülmény jelenik meg többnyire. Éppen a bekapcsolás-kikapcsolás határán összevissza villognak a LED-ek. Elsõsorban mûfénynél ingadozik a fényesség gyorsan egy bizonyos középérték körül.
Cím Parancs Adatok 03 7 7 04 5 4 05 3 5 Megjegyzés 64 51 43 77 54 35 20. kilistázás: Az AND-funkció alkalmazása Változtassa meg a programot, és teszteljen más logikai funkciókat is.
Alprogram: Cím Parancs Adatok 08 7 2 09 E 0 Megjegyzés 80 D8 54 29 D8 54 28 37 72 E0 21. kilistázás: Alprogramok felhívása A program eredménye egy elágazó bináris számláló nem egyenlõ idõkésleltetésekkel. Teszteljen egyszer más parancsokat is az alprogramban. A szállításkori állapotban lévõ példaprogramok között sok hasznos, általános alkalmazású alprogram van. Ezek a Függelékben kompletten fel vannak sorolva.
18 Szürkületi kapcsoló Egy szürkületi kapcsolónak akkor kell bekapcsolnia a világítást, amikor a környezeti megvilágítás egy megadott határérték alá csökken. És megfordítva, ha kivilágosodik, a világításnak ismét ki kell kapcsolódnia. Gondoskodni kell arról, hogy a világítás ne kapcsolódjon be és ki a határérték környékén. Ezt egy hiszterézis alkalmazásával sikerül megoldani, azaz egy kis távolság hagyásával a bekapcsolási és a kikapcsolási megvilágítás között.
A program magjában a már jól ismert ugrási parancs kerül alkalmazásra. Ha az adott gomb nincs megnyomva, az akkumulátor tartalmának a növelésére vagy csökkentésére irányuló hozzátartozó parancs átugrásra kerül. A nehézség abban van, hogy ekkor normál esetben felléphet az átfutás 15-rõl 0-ra, vagy 0-ról 15-re. Egy kissé több ráfordítást igényel ennek az átfutásnak a megakadályozása. Ehhez ugyanis minden esetben le kell kérdezni, hogy már elértünk-e az alsó végponthoz (0) vagy a felsõ végponthoz (15).
20 Számzár Az itt bemutatott számzár bekapcsolja a PWM-kimenetet, ha a felhasználó a helyes számsort adta be. A számbeadásnak pontosan követnie kell az S1 és az S2 gombbal végzett programozás mintáját. Az alábbi program az egyes számoknak az S1 gombbal történõ beadását szemlélteti. Mint a programozáskor is, az elsõ gombnyomás a 0000 eredményt adja. Az S1 minden egyes további megnyomása 1-gyel növeli a kiadást. Az S2 gomb megnyomásával befejezõdik a beadás.
A PWM-kimenetet ebben a példában egy normális digitális portként kezeljük. Erre azért van szükség, mert mind a négy, A1 - A4 kimenetre szükség van a számbeadáshoz. Minden egyes teljes beadás után a négy LED törlõdik, hogy egy esetleges megfigyelõ személynek lehetõleg kevés betekintése legyen a titkos számkombinációba. Cím Parancs Adatok Megjegyzés 87 43 51 D0 C3 30 10 45 51 D0 C3 30 10 42 51 D0 C3 30 10 4F 59 30 26.
21 Függelék A példaprogramok kilistázása Cím Parancs Adatok Megjegyzés 64 51 4E 80 C3 98 82 95 4D 80 C3 9E 82 9A 4B 81 0.
Cím Parancs Adatok Megjegyzés C3 94 83 90 47 81 C3 9A 83 94 43 82 C3 90 84 90 1. oldal: A példaprogramok kiválasztása és elindítása Cím Parancs Adatok Megjegyzés 11 28 18 28 34 71 54 59 26 34 69 54 59 26 34 FF 2.
Cím Parancs Adatok Megjegyzés 54 CE 71 33 22 CC 32 40 22 71 54 CE 34 39 FF FF 3.
Cím Parancs Adatok Megjegyzés - 86 D0 40 71 54 23 CD 34 D8 40 54 3B FF FF FF FF 4. oldal: Példaprogram: stopperóra start/stop Cím Parancs Adatok Megjegyzés 4F 93 45 53 19 11 21 19 11 21 19 11 20 B4 10 E0 5.
Cím Parancs Adatok Megjegyzés 23 CE 32 23 CC 31 E0 FF 23 CF 32 23 CD 31 E0 FF 6.
Cím Parancs Adatok Megjegyzés CC 31 40 54 23 CE 32 CF E0 CC 33 71 23 CC 31 3C 7.
Impresszum © 2011 Franzis Verlag GmbH, 85540 Haar bei München, www.eloweb.de Autor: Burkhard Kainka ISBN 978-3-645-101042 Készült a Conrad Electronic SE megbízásából, Klaus-Conrad-Str. 1, 92240 Hirschau Minden jog fenntartva, a fotómechanikus lejátszásé és az elektronikus médiákon történõ tárolásé is. Csak a kiadó írásos engedélyével szabad másolatokat készíteni és terjeszteni papíron, adathordozókon vagy az interneten, különösen PDF-fájlként, ellenkezõ esetben büntetõjogi következményekkel járhat.