Tartalomjegyzék:

Arduino időzítők: 8 projekt: 10 lépés (képekkel)
Arduino időzítők: 8 projekt: 10 lépés (képekkel)

Videó: Arduino időzítők: 8 projekt: 10 lépés (képekkel)

Videó: Arduino időzítők: 8 projekt: 10 lépés (képekkel)
Videó: #1 Az Outseal Arduino PLC programozása (Kezdő lépések) 2024, Június
Anonim
Arduino időzítők: 8 projekt
Arduino időzítők: 8 projekt

Az Arduino Uno vagy Nano pontos digitális jeleket tud generálni hat dedikált csapon a három beépített időzítő használatával. Ezek csak néhány parancsot igényelnek a beállításhoz, és nem futtatnak CPU -ciklusokat!

Az időzítők használata megfélemlítő lehet, ha az ATMEGA328 teljes adatlapjából indul ki, amely 90 oldalt tartalmaz a leírásukhoz! Számos beépített Arduino parancs már használja az időzítőt, például millis (), delay (), tone (), AnalogWrite () és a szervokönyvtár. Ahhoz azonban, hogy teljes erejüket ki tudják használni, be kell állítani őket a nyilvántartásokon keresztül. Megosztok itt néhány makrót és funkciót, amelyek megkönnyítik és átláthatóbbá teszik ezt.

Az időzítők nagyon rövid áttekintése után kövessen 8 klassz projektet, amelyek az időzítőkkel jelgenerálásra épülnek.

1. lépés: Szükséges összetevők

Szükséges összetevők
Szükséges összetevők

Mind a 8 projekt megvalósításához szüksége lesz:

  • Egy Arduino Uno vagy kompatibilis
  • Prototípus pajzs mini protoboarddal
  • 6 kenyeretábla áthidaló kábel
  • 6 rövid kenyérpult jumper (készítsd el magad 10 cm -es tömör magból álló csatlakozóhuzalból)
  • 2 krokodil vezeték
  • 1 db fehér 5 mm -es LED
  • 220 ohmos ellenállás
  • 10 kOhm -os ellenállás
  • 10 kOhm potenciométer
  • 2 kerámia 1muF kondenzátor
  • 1 db 10muF elektrolit kondenzátor
  • 2 dióda, 1n4148 vagy hasonló
  • 2 SG90 mikro szervo motor
  • 1 8 ohmos hangszóró
  • 20 m vékony (0,13 mm) zománcozott huzal

2. lépés: Az Arduino időzítők áttekintése a jelgeneráláshoz

A Timer0 és a timer2 8 bites időzítők, vagyis legfeljebb 0-tól 255-ig tudnak számolni. Az 1. időzítő egy 16 bites időzítő, így akár 65535-ig is számolhat. Minden időzítő két kimeneti tűvel rendelkezik: 6 és 5 az időzítő0, 9 és 10 az időzítő1, 11 és 3 az időzítő 2 számára. Az időzítőt minden Arduino óra ciklusban növelik, vagy olyan sebességgel, amelyet egy előre beállított tényező csökkent, ami vagy 8, 64, 256 vagy 1024 (32 és 128 is engedélyezett az időzítőnél2). Az időzítők 0 -tól „TOP” -ig számolnak, majd újra (gyors PWM) vagy lefelé (fázis helyes PWM). A „TOP” értéke tehát meghatározza a gyakoriságot. A kimeneti csapok beállíthatják, visszaállíthatják vagy megfordíthatják a kimeneti összehasonlító regiszter értékét, így ezek határozzák meg a működési ciklust. Csak az időzítő1 képes egymástól függetlenül beállítani a frekvenciát és a működési ciklusokat mindkét kimeneti csapnál.

3. lépés: A LED villog

Image
Image
LED villog
LED villog
LED villog
LED villog

A 8 bites időzítőkkel elérhető legalacsonyabb frekvencia 16 MHz/(511*1024) = 30, 6 Hz. Tehát ahhoz, hogy a LED 1 Hz -el villogjon, szükségünk van időzítőre1, amely elérheti a 256 -szor kisebb, 0,12 Hz -es frekvenciákat.

Csatlakoztasson egy LED -et az anódjával (hosszú lábával) a 9 -es érintkezőhöz, és csatlakoztassa a katódját egy 220 ohmos ellenállással a földhöz. Töltse fel a kódot. A LED pontosan 1 Hz -en villog, 50%-os működési ciklus mellett. A loop () függvény üres: az időzítő inicializálásra kerül a setup () során, és nem igényel további figyelmet.

4. lépés: LED fényerő -szabályozó

Image
Image
LED dimmer
LED dimmer
LED dimmer
LED dimmer

Az impulzusszélesség-moduláció hatékony módja a LED-ek intenzitásának szabályozására. Megfelelő meghajtó esetén ez az előnyben részesített módszer az elektromotorok fordulatszámának szabályozására is. Mivel a jel vagy 100% -ban be van kapcsolva, vagy 100% -ban le van kapcsolva, a soros ellenállásra nem kell energiát pazarolni. Alapvetően olyan, mintha a LED gyorsabban villogna, mint amennyit a szem képes követni. Az 50 Hz elvileg elegendő, de úgy tűnhet, hogy egy kicsit villog, és amikor a LED vagy a szem mozog, bosszantó, nem folyamatos „nyom” keletkezhet. Egy 64-es előskálát használva 8 bites időzítővel 16MHz/(64*256) = 977Hz-et kapunk, ami megfelel a célnak. Az időzítőt2 választjuk, így az időzítő1 elérhető marad más funkciókhoz, és nem zavarjuk az Arduino time () függvényt, amely a timer0 -t használja.

Ebben a példában a terhelési ciklust és így az intenzitást egy potenciométer szabályozza. Egy második LED függetlenül szabályozható ugyanazzal az időzítővel a 3 -as érintkezőn.

5. lépés: Digitális-analóg átalakító (DAC)

Image
Image
Digitális-analóg átalakító (DAC)
Digitális-analóg átalakító (DAC)
Digitális-analóg átalakító (DAC)
Digitális-analóg átalakító (DAC)

Az Arduino nem rendelkezik valódi analóg kimenettel. Egyes modulok analóg feszültséget használnak egy paraméter (kijelző kontraszt, érzékelési küszöb stb.) Szabályozására. Csak egy kondenzátorral és ellenállással az időzítő1 használható analóg feszültség létrehozására 5 mV vagy jobb felbontással.

Az aluláteresztő szűrő analóg feszültségre „átlagolhatja” a PWM jelet. Egy kondenzátor egy ellenálláson keresztül egy PWM csaphoz van csatlakoztatva. A jellemzőket a PWM frekvencia, valamint az ellenállás és a kondenzátor értéke határozza meg. A 8 bites időzítők felbontása 5V/256 = 20mV lenne, ezért a 10 bites felbontás érdekében a Timer1-et választjuk. Az RC áramkör elsőrendű aluláteresztő szűrő, és némi hullámzása lesz. Az RC áramkör időskálájának sokkal nagyobbnak kell lennie, mint a PWM jel periódusa, hogy csökkentse a hullámzást. A 10 bites pontossághoz kapott időszak 1024/16MHz = 64mus. Ha 1 muF kondenzátort és 10 kOhm ellenállást használunk, akkor az RC = 10 ms. A csúcs-csúcs hullámzás legfeljebb 5V*0,5*T/(RC) = 16mV, ami itt elegendőnek tekinthető.

Ne feledje, hogy ennek a DAC -nak nagyon magas a kimeneti impedanciája (10 kOhm), ezért a feszültség jelentősen csökken, ha áramot vesz fel. Ennek elkerülése érdekében pufferolható egy opamp -el, vagy választható R és C másik kombinációja, például 1 kOhm és 10 mF.

A példában a DAC kimenetet potenciométerrel irányítják. Egy második független DAC csatorna is futtatható az 1. időzítővel a 10. tűn.

6. lépés: Metronóm

Image
Image
Metronóm
Metronóm
Metronóm
Metronóm

A metronóm segít nyomon követni a ritmust zenélés közben. Nagyon rövid impulzusok esetén az arduino időzítő kimenetét közvetlenül a hangszóróba lehet táplálni, ami jól hallható kattanásokat fog hallani. Potenciométerrel az ütemfrekvencia 40 -től 208 ütés / perc -ig, 39 lépésben szabályozható. Az időzítő1 szükséges a szükséges pontossághoz. A frekvenciát meghatározó „TOP” értéke a loop () függvényen belül módosul, és ez figyelmet igényel! Itt láthatja, hogy a WGM mód eltér a többi fix frekvenciájú példától: ez az üzemmód, amelynek TOP -ját az OCR1A regiszter állítja be, dupla puffereléssel rendelkezik, és véd a hiányzó TOP -tól és a hosszú hibáktól. Ez azonban azt jelenti, hogy csak 1 kimeneti tűt használhatunk.

7. lépés: Hang spektrum

Image
Image
Hang spektrum
Hang spektrum
Hang spektrum
Hang spektrum

Az emberek több mint 3 nagyságrendű hangfrekvenciát hallhatnak, 20 Hz és 20 kHz között. Ez a példa potenciométerrel generálja a teljes spektrumot. A hangszóró és az Arduino közé 10muF kondenzátort helyeznek, hogy blokkolják az egyenáramot. Az 1. időzítő négyzethullámot produkál. A Waveform generálási mód itt fázis-korrekt PWM. Ebben az üzemmódban a számláló hátrafelé kezd számolni, amikor eléri a csúcsot, ami azt eredményezi, hogy az impulzusok rögzített átlagos értékkel rendelkeznek, még akkor is, ha a ciklus változik. Ez azonban egy (majdnem) kétszeres időszakot is eredményez, és csak az történik, hogy a 8. előskálával az időzítő1 lefedi a teljes hallható spektrumot, anélkül, hogy módosítania kellene az előskálát. Szintén itt, mivel a TOP értéke menet közben változik, az OCR1A használata csúcsként csökkenti a hibákat.

8. lépés: Szervomotorok

Image
Image
Szervomotorok
Szervomotorok
Szervomotorok
Szervomotorok

Vannak erőteljes szervokönyvtárak, de ha csak két szervót kell meghajtani, akkor ezt közvetlenül az időzítővel1 is elvégezheti, és ezáltal csökkentheti a CPU -t, a memóriát és elkerülheti a megszakításokat. A népszerű SG90 szervó 50 Hz jelet vesz fel, és az impulzushossz kódolja a pozíciót. Ideális időzítőhöz 1. A frekvencia rögzített, így a 9 -es és a 10 -es tű mindkét kimenete használható a szervók önálló irányítására.

9. lépés: Feszültség duplázója és invertere

Feszültség duplázó és inverter
Feszültség duplázó és inverter
Feszültség duplázó és inverter
Feszültség duplázó és inverter
Feszültség duplázó és inverter
Feszültség duplázó és inverter

Néha a projekt 5 V -nál nagyobb feszültséget vagy negatív feszültséget igényel. Lehetséges, hogy MOSFET futtatása, piezo elem futtatása, opamp áramellátása vagy EEPROM alaphelyzetbe állítása. Ha az áramfelvétel elég kicsi, akár ~ 5 mA, akkor egy töltőszivattyú lehet a legegyszerűbb megoldás: mindössze 2 dióda és két kondenzátor van csatlakoztatva az időzítő impulzusjeléhez, így megduplázhatja az arduino 5V -tól 10V -ig. A gyakorlatban 2 dióda csepp van, tehát a gyakorlatban inkább 8,6 V lesz a duplázónál, vagy -3,6 V az inverternél.

A négyzethullám frekvenciájának elegendőnek kell lennie ahhoz, hogy elegendő töltést szivattyúzzon át a diódákon. Az 1muF kondenzátor 5 muC változást mozgat, amikor a feszültség 0 és 5 V között változik, tehát 10 mA áram esetén a frekvenciának legalább 2 kHz -nek kell lennie. A gyakorlatban jobb a magasabb frekvencia, mivel csökkenti a hullámzást. Az időzítő2 0 -tól 255 -ig számol, előskálázás nélkül, a frekvencia 62,5 kHz, ami jól működik.

10. lépés: Vezeték nélküli áramátvitel

Image
Image
Vezeték nélküli áramátvitel
Vezeték nélküli áramátvitel
Vezeték nélküli áramátvitel
Vezeték nélküli áramátvitel

Nem ritka az okosóra kábelek nélküli töltése, de ugyanez könnyen része lehet egy Arduino projektnek. A nagyfrekvenciás jelű tekercs indukción keresztül, elektromos érintkezés nélkül továbbíthatja az energiát egy másik közeli tekercshez.

Először készítse elő a tekercseket. 8,5 cm átmérőjű papírtekercsből és 0,13 mm átmérőjű zománcozott huzalból készítettem 2 tekercset: az elsődleges 20, a másodlagos 50 fordulattal. Az ilyen típusú tekercs öninduktivitása N tekercsekkel és R sugárral ~ 5muH * N^2 * R. Tehát N = 20 és R = 0,0425 esetén L = 85muH, amit a komponens teszterrel megerősítettünk. 516 kHz frekvenciájú jelet állítunk elő, melynek impedanciája 2pi*f*L = 275Ohm. Ez elég magas ahhoz, hogy az Arduino ne menjen túláramba.

A tekercs leghatékonyabb működtetéséhez valódi váltakozó áramforrást szeretnénk használni. Van egy trükk, amit meg lehet tenni: az időzítő két kimenete ellenkező fázisban futtatható, az egyik kimenet megfordításával. Annak érdekében, hogy még inkább hasonlítson a szinuszhullámhoz, a fázis-korrekt PWM-et használjuk. Ily módon a 9 és 10 érintkezők között a feszültség váltakozik mind a 0V, mind a 9 +5V, mind a 0V, a 10 +5V. A hatás a képen egy hatókör nyomvonalából látható (1024 -es előskálával ez a játékszóró nem rendelkezik nagy sávszélességgel).

Csatlakoztassa az elsődleges tekercset a 9. és 10. tűhöz. Csatlakoztasson egy LED -et a másodlagos tekercshez. Amikor a másodlagos tekercset közel hozza az elsődlegeshez, a LED fényesen világít.

Ajánlott: