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 4 - Astabil multivibrátorok, egyszerű IF-es szerkezetek, független feltételek vizsgálata

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.

 

 

4.1 Astabil multivibrátorok

 

     Ebben és a következő cikkben több új feladatot mutatok be, továbbfejlesztve az 5-ödik programot. Az egy astabil multivibrátor volt, mely a beépített L-ledet és a külső LED-ledet villogtatta felváltva. Szinte minden alap elektronikával foglalkozó könyv, tankönyv foglalkozik a multivibrátorokkal, így én is ezzel folytatnám, mielőtt rátérnék a bonyolultabb kapcsolásokra. Először a hardvert tekintve lépünk feljebb: ezen cikk feladataihoz 2 db külső LED-re lesz szükségünk.

  

     Az impulzus előállító áramköröknek több fajtája van. Ezek közül a billenőkapcsolások olyan pozitívan visszakapcsolt digitális áramkörök, melyek kimeneti feszültsége kétféle diszkrét értéket vehet fel: H-t és L-t. A két állapot közötti átmenet elhanyagolható (a mi esetünkben jelenleg még elhanyagolható). Fajtái: astabil-, monostabil-, és bistabil multivibrátorok.

 

10. program: az astabil multivibrátor

      Ezt a kapcsolást szokták kezdőknek ajánlani (a detektoros rádió és az egy tranzisztoros erősítő mellett)  az egyszerűsége és a gyakorlati felhasználhatósága miatt. Ha a tranzisztoros kapcsolást nézzük, akkor a bemenetre adott egyenfeszültségből a kimenetén (vagy inkább a kimenetein) végtelen sorozatú négyszögfeszültséget állít elő.

     Arduino alkalmazása esetén csak 2 db külső led-re lesz szükség, a védőellenállásokkal együtt (14. ábra). Bemeneti periféria itt még nincs, mivel az egész működést a kis program végzi (15. ábra).A program függvényei a 18. ábrán láthatók.

14._abra_-_astabil_multivibrator.png

14. ábra

 

15._abra_-_program_10.png

15. ábra

 

     A program két „int” típusú változó deklarálásával és definiálásával kezdődik. A 11-es és a 12-es kimeneteket fogjuk használni, melyekre a ledek vannak kötve. Bármilyen nevet adhatunk nekik, nem kötelező a „ledPin”. A lényeg, hogy jól megkülönböztethetők legyenek egymástól, fel lehessen ismerni, hogy melyik lábra fognak vonatkozni. A setup függvényben mindkettőt kimenetként deklaráljuk.

     A főprogram megírása egyszerű. Megadjuk, hogy először melyik kimenet legyen H- és melyik L-állapotú, majd beteszünk egy késleltetést. Ez az időtartam mindkettőre vonatkozik, azaz addig az ideig H-állapotú az egyik és ezzel egy időben L-állapotú a másik kimenet. Majd fordítva – viszont a végére is kell késleltetés, mert utána kezdi elölről a program futtatását, a végtelenségig.

 

11. program: a módosított astabil multivibrátor

      A módosítás (16. ábra) a szünetek (L) betétele az egyes H-állapotok után, az áramkör változatlan marad. Működés közben továbbra sem lesz egyetlen stabil állapot sem:

   1 - Led1 H és led2 L

   2 - Led1 L és led2 L

   3 - Led1 L és led2 H

   4 - Led1 L és led2 L... stb.

     Természetesen ezt is lehet tovább fokozni, például berakhatunk egy negyedik fajta vezérlést, ahol mindkét led egyszerre van H állapotban. A példában most is minden szünet 1 másodperc, de ezen is lehet módosítani. Mint az előző feladatban, most is kell a végére egy késleltetés, mert a program ha lefutott, itt is kezdődik elölről.

     A függvényei a 18. ábrán láthatók.

 

16._abra_-_program_11.png

16. ábra

 

 

4.2 Független feltételek vizsgálata

 

12. program: előre programozott astabil multivibrátor

 

     Legyen a feladat az, hogy a fentebbi példák hardvere változatlan maradjon, viszont a ledek H állapota ciklusonként növekedjen egy adott egységnyivel (pl 0,5 másodperccel). A növekedés 5-lépcsős legyen, majd az egész kezdődjön elölről a végtelenségig (mert nincs stabil állapota).

 

17._abra_-_program_12..png

17. ábra

 

     A program működése:         

     Marad az előző példából a két „int” típusú változó deklarálása és definiálása a 11-es és a 12-es lábakra. Ezek továbbra is kimenetként lesznek beállítva. Deklarálunk egy harmadik int típusú változót ido-névvel.

     Az időzítő utasítások kétfélék lehetnek: időzítők és időmérők. Mindkettő lehet ezred- és milliomod másodperces. Így négyféle utasítást különböztetünk meg:

-        delay(); Ezred másodperces késleltetés: a zárójelben megadott ideig késleltet. Ezalatt az idő alatt a program működését leállítja, majd a késleltetési idő után folytatja tovább. A példákban eddig ezt használtuk. Pl: a delay(1000) 1 másodpercig késleltet, a delay(500) 0,5 másodpercig.

-        delayMicroseconds(); A fentebbi utasításhoz hasonlít, csak ez nem ezred, hanem milliomod másodperces.

-        millis(); A bekapcsolás óta eltelt időt méri ezred másodpercben (millisec)

-        micros(); Működése a millis()-re hasonlít, csak itt milliomod másodpercekben (mikrosec) méri a bekapcsolás óta eltelt időt.

     Egyenlőre az ezred másodperces késleltetéssel és időméréssel foglalkozunk, a milliomod másodpercessel később.

     A főprogram elején, az ido=millis(); sorban mérjük a bekapcsolás óta eltelt időt ezred másodpercben, amit az ido-változóba töltünk. Ezután következik a független feltételek vizsgálata, azaz 5 egyágú szelekció (mivel a feladatban a növekedés is 5-lépcsős).

     Minden szelekció azonos felépítésű. A program amikor belép az első if-es sorba, megvizsgálja, hogy teljesül-e az ott levő feltétel, azaz hogy az idő kisebb-egyenlő-e mint 500 milliszekundum. Ha teljesül, végrehajtja az utána jövő utasításokat – ezek az adott if-es szerkezetben a feltétel után kapcsos zárójelek közé vannak írva. Így bármelyik if utáni feltétel teljesülése esetén csak a hozzá kapcsolódó utasítások hajtódnak végre. Amennyiben nem teljesül (jelen példában a bekapcsolás óta már több idő telt el) úgy a következő szerkezetre ugrik a vezérlés.

     Az if (ido>500 and ido<=1000); sor megvizsgálja, hogy az ido-változó értéke 501-1000 között van-e. Ha teljesül a feltétel akkor végrehajtja az utasításait, ha nem, akkor tovább ugrik a következő szelekcióra. Az and egy logikai és, ami a két feltétel egyidejű teljesítését kapcsolja össze, azaz egyszerre kell nagyobbnak lennie 501-nél és kisebb-egyenlőnek lennie 1000-nél.

     Az ido-változó vizsgálatai tehát:

-        0-500 msec

-        501-1000 msec

-        1001-1500 msec

-        1501-2000 msec

-        2001-2500 msec. Ezután több vizsgálat nincs, a program kezdi elölről.

     Az egyes független feltételvizsgálatok utáni utasítások egy-egy astabil multivibrátor programot tartalmaznak, azaz a 10-edik gyakorlati feladat (15. ábra) főprogramját úgy, hogy az egyes kis programok csak a késleltetési idő értékében különböznek egymástól. A kapcsos zárójel bezárása után, azaz két független feltételvizsgálat között pedig késleltetések (szünetek) vannak, pontosan akkora idővel, mint ami az azt megelőző szelekció utasításában találhatók. (Ez a 11-edik gyakorlati feladat és a 16-odik ábrájára hasonlít, kisebb módosítással, azaz először lefut a vezérlés mindkét led-re, majd utána tart szünetet). A program 22,5 másodperc alatt fut le, és a működése 15 lépésben a következő lesz:

   1 - Led1 H és led2 L: 500 msec-ig

   2 - Led1 L és led2 H: 500 msec-ig

   3 - Led1 H és led2 H: szünet 500 msec-ig

   4 - Led1 H és led2 L: 1000 msec-ig

   5 - Led1 L és led2 H: 1000 msec-ig

   6 - Led1 H és led2 H: szünet 1000 msec-ig

   7 - Led1 H és led2 L: 1500 msec-ig

   8 - Led1 L és led2 H: 1500 msec-ig

   9 - Led1 H és led2 H: szünet 1500 msec-ig

   10 - Led1 H és led2 L: 2000 msec-ig

   11 - Led1 L és led2 H: 2000 msec-ig

   12 - Led1 H és led2 H: szünet 2000 msec-ig

   13 - Led1 H és led2 L: 2500 msec-ig

   14 - Led1 L és led2 H: 2500 msec-ig

   15 - Led1 H és led2 H: szünet 2500 msec-ig.

A program függvényei a 18. ábrán láthatók.

 

18._abra_-_10_11_12_feladatok_fuggvenyei_forgatva.png

18. ábra

 

     Felhasznált irodalom:

http://www.elektromanoid.hu/progi15.html (2022.03.04.)

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

Angster Erzsébet: Objektumorientált tervezés és programozás – Java 1 (2. kiadás, 2002)

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: 20
Tegnapi: 3
Heti: 23
Havi: 148
Össz.: 3 877

Látogatottság növelés
Oldal: Arduino kezdőknek 4 - astabil multivibrátorok, IF-es szerkezetek
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 »