Szilágyi Sándor Zoltán hobbielektronika és amatőr robottechnika oldala

Arduino kezdőknek cikksorozatom, melynek első 13 része publikálásra került. Amatőr robotok, robot autók és LED-kockák építése.

Arduino kezdőknek 5 – Monostabil multivibrátorok, pergésmentesítés

 

Szilágyi Sándor Zoltán   Villamosmérnök, mérnök-informatikus

 

A cikket megírtam: 2022. 03. 08-án

A Rádiótechnikában megjelent: 2022. május

Ez a blog oldal tehát az eredeti, saját tulajdonomban levő dokumentum, és nem a nyomtatásban megjelent másolata. A cikket én írtam, én küldtem be, és csak azután jelent meg nyomtatott formában is. A nyomtatásban megjelent cikkeimre szerződést nem kötöttek velem, és anyagi juttatást se kaptam soha érte. Mivel a magazin már nem kapható, ezért a megjelent 13 cikkemet itt folytatnám, mivel Magyarországon jelenleg nincs hobbielektronikával foglalkozó magazin.

 

 

5.1 Monostabil multivibrátorok 

 

   A 4-edik szám folytatása következik. Az astabil billenőkapcsolások után először a monostabil multivibrátorokat mutatom be 3 példán keresztül. Ennek a cikknek is lesz még folytatása, egyrészt az alapok ismertetése miatt (bistabil multivibrátorok, véletlen szám generálás, Schmitt-triggerek), majd később a LED-kockák vagy a robotok vezérlésénél.

 

     A monostabil multivibrátoroknak egy stabil állapotuk van, erre utal a nevük is (mono = egy). A legtöbb elektronikai kapcsolásban az L-szint (low, alacsony, 0) szokott lenni a stabil állapot. Ha a bemenetre nem kapnak vezérlő impulzust, akkor a kimenetük ezen az egy stabil állapotban marad. Egy trigger-jelet (vezérlő jelet) kapcsolva a bemenetre, a kimenet átbillen a másik (H) állapotába (high, magas, 1), viszont, mivel ez egy instabil – azaz nem stabil – állapot, így csak meghatározott ideig marad ott, majd visszabillen az eredeti stabil állapotába. A késleltetést elektronikus kapcsolás esetén RC-elemekkel kell beállítani, Arduino esetén elég egy delay()-t begépelni egy előre meghatározott értékkel.

     A gyakorlati éltből néhány példa az alkalmazására: lépcsőház időzített világítása, vagy egy adott jelre kapcsoljon be egy ventilátor, majd az idő lejárta után kapcsoljon ki. Bonyolultabb alkalmazása lehet egy 2-motoros kis robotautó modell, ahol a főmotor hajtja előre, majd ha elérte a falat (érzékelő által küldött impulzusra), a főmotort lekapcsolja, és adott időre bekapcsolja a kormánymotort (mely pl csak egy irányba képes kormányozni), majd az idő lejárta után visszavált a főmotorra és megy tovább a következő ütközésig, stb...

     Az elektronikus kapcsolásokkal foglalkozó szakirodalmak egyik része csak 1-ledes áramköröket közöl, míg vannak olyanok is, amelyek csak a 2-ledest. Én mindkét változatot elkészítettem Arduino-ra. Mivel ezek most még csak modellek, a jövőben konkrétabb alkalmazásokat is be fogok mutatni rájuk.

 

13. Program: monostabil multivibrátor (1 ledes)

     A 3-adik cikkem bevezetőjében írtam, hogy lesz folytatása a nyomógombok alkalmazásának. Ez az első folytatás, de még számtalan fogja követni.

     Az elektronikai kapcsolás (19. ábra) két részből áll. Az egyik a 11-es lábra kötött kapcsoló vagy nyomógomb áramköre, a másik a 12-es lábra kapcsolt led köre. A nyomógombnál a belső programozható felhúzó ellenállást használtam, ahogy az a 20. ábrán is látható: INPUT_PULLUP. A 11-es lábat tehát bemenetként definiáljuk, majd magas értéket írunk ki rá, így egy használható, lebegésmentesített nyomógombot kapunk.

     A program ellenőrzése, majd feltöltése után a kapcsolásunk stabil állapotba kerül, azaz nem fog világítani a led. A gomb megnyomása után (pillanatnyi megnyomást feltételezve) trigger jel kerül a bemenetre, magas állapotba kerül, melyet a led kigyulladása jelez is. A delay()-ben meghatározott ideig égni fog – de mivel ez egy instabil állapot, az idő letelte után visszabillen az eredeti stabil állapotába, azaz a led elalszik. Fontos a pillanatnyi gombnyomás, mert hosszabb ideig nyomva tartva majd elengedve más (de hasonló) működés tapasztalható: megmarad a monostabil jellegű működés, de a megadottnál kevesebb H-állapotbeli idővel. Ennek a problémának a megoldásával a következő (14-es) feladat foglalkozik.

 

 19._abra_monostabil_multivibrator_1-ledes.png

19. ábra

 

 20._abra_-_13._feladat_1_ledes_monostabil.png

20. ábra

 

 

5.2 Pergésmentesítés

 

14. Program: a pergésmentesítés

     Ismét a 3-ik cikkemhez térnék vissza. Ott írtam a lebegésről és a különböző megoldásairól. A nyomógombot megnyomva tűimpulzusokat generálunk (akaratunk ellenére), melyek kb 10-15 msec idejűek lehetnek. A nyomógombot fel kellett húzni +5V-ra, hogy ne legyen lebegés, azaz ne szedje össze a környezetéből a zavarokat. Ezt a problémát javítjuk tovább a pergésmentesítéssel, azaz a nyomógomb mechanikus szerkezete által generált tűimpulzusokat is ki kell szűrni. A pergésmentesítést szoftveresen oldjuk meg, azaz egy új sort kell csak begépelni az előző feladatunkba: a delay(20) késleltetést. Mint korábban írtam, a  delay() egy ezred másodperces késleltetést hoz létre. A mi esetünkben 20 msec-est, azaz éppen többet, mint a nyomógomb feltételezett tűimpulzusainak legnagyobbika. A program ezután mindig 20 ezredmásodpercenként olvassa be a kapcsoló állapotát.

     A pergésmentesítés további előnye, hogy szándékosan, többször megnyomva a nyomógombot (ennek tesztelésére vettem fel 5000 msec-re a led világítási idejét, azaz a nem-stabil állapotot), csak az első gombnyomást veszi figyelembe. Ekkor kezdődik az 5 másodperces időzítés, mely tartama alatt a led folyamatosan világít. Ezalatt a gombot többször megnyomva a program azt figyelmen kívül hagyja, és csak az első megnyomáshoz képesti időzítés lesz az érvényes. Ezzel kiküszöbölhető a szándékos zavarkeltés is.

     A 21-ik ábrán látható a lebegésmentesített/pergésmentesített monostabil multivibrátor programja. Az elektronikai kapcsolás megegyezik az előzőével (19. ábra).

 

 

21._abra_-_14._feladat_1_ledes_monostabil_pergesmentes.png

21. ábra

 

15. Program: monostabil multivibrátor (2 ledes)

 

     A feladat csak annyiban tér el az előzőtől, hogy mindkét állapot folyamatosan jelezve van, hol az egyik, hol a másik leddel.

     Alapállapotban tehát a 13-as lábra kötött LED2 világít, és a 12-es lábra kötött LED1 alacsony szinten van. Megnyomva a (pergésmentesített) nyomógombot a rendszer az instabil állapotba kerül 5 másodpercre (ez lett beállítva a példában), azaz a 12-es lábra kötött led fog világítani, míg a 13-as lábra kötött elalszik. A gomb egyszeri megnyomása után szándékos pergést generálva – azt többször megnyomva – nem jön elő újabb hiba, azaz a beállított késleltetési ideig van csak ebben az állapotban, majd visszabillen a stabil állapotába és a LED2 fog ismét világítani.

 

22._abra_-_15._feladat_2_ledes_monostabil_aramkor.png

22. ábra

 

23._abra_-_15._feladat_2_ledes_monostabil_pergesmentes.png

23. ábra

 

   Felhasznált irodalom:

Zsom Gyula: Digitális technika 1. (7. kiadás, 2010)

Szittya Ottó: Digitális és Analóg Technika – Informatikusoknak 1. (1999)

Kovács Csongor: Digitális elektronika (ismeretlen évjárat)

https://megtestesules.info/hobbielektronika/2018/elektro18_10.pdf (2022. 03. 20-i állapot)

 

A cikket megírtam: 2022. 03. 08-án

A Rádiótechnikában megjelent: 2022. május

Weblap látogatottság számláló:

Mai: 3
Tegnapi: 3
Heti: 6
Havi: 131
Össz.: 3 860

Látogatottság növelés
Oldal: Arduino kezdőknek 5 - monostabil multivibrátorok, pergésmentesítés
Szilágyi Sándor Zoltán hobbielektronika és amatőr robottechnika oldala - © 2008 - 2025 - szilagyi-robot.hupont.hu

A HuPont.hu ingyen adja a tárhelyet, és minden szolgáltatása a jövőben is ingyen ...

ÁSZF | Adatvédelmi Nyilatkozat

X

A honlap készítés ára 78 500 helyett MOST 0 (nulla) Ft! Tovább »