Obsah:

Časovače Arduino: 8 projektů: 10 kroků (s obrázky)
Časovače Arduino: 8 projektů: 10 kroků (s obrázky)

Video: Časovače Arduino: 8 projektů: 10 kroků (s obrázky)

Video: Časovače Arduino: 8 projektů: 10 kroků (s obrázky)
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Listopad
Anonim
Časovače Arduino: 8 projektů
Časovače Arduino: 8 projektů

Arduino Uno nebo Nano mohou generovat přesné digitální signály na šesti vyhrazených pinech pomocí tří vestavěných časovačů. K nastavení vyžadují pouze několik příkazů a ke spuštění nepoužívají žádné cykly CPU!

Používání časovačů může být zastrašující, pokud začnete z úplného datového listu ATMEGA328, který má 90 stránek věnovaných jejich popisu! Několik vestavěných příkazů Arduino již používá časovače, například millis (), delay (), tone (), AnalogWrite () a knihovna serv. Chcete -li však využít jejich plný výkon, budete je muset nastavit prostřednictvím registrů. Sdílím zde některá makra a funkce, aby to bylo jednodušší a transparentnější.

Po velmi krátkém přehledu časovačů sledujte 8 skvělých projektů, které spoléhají na generování signálu pomocí časovačů.

Krok 1: Požadované součásti

Požadované součásti
Požadované součásti

K provedení všech 8 projektů budete potřebovat:

  • Arduino Uno nebo kompatibilní
  • Prototyp štítu s mini protoboardem
  • 6 propojovacích kabelů pro propojovací pole
  • 6 krátkých propojovacích můstků (vyrobte se z 10cm pevného jádra)
  • 2 krokodýlí vývody
  • 1 bílá 5mm LED
  • odpor 220 ohmů
  • odpor 10 kOhm
  • potenciometr 10 kOhm
  • 2 keramické kondenzátory 1 mF
  • 1 elektrolytický kondenzátor 10 mF
  • 2 diody, 1n4148 nebo podobné
  • 2 mikro servomotory SG90
  • 1 8Ohm reproduktor
  • 20 m tenkého (0,13 mm) smaltovaného drátu

Krok 2: Přehled časovačů Arduino pro generování signálu

Timer0 a timer2 jsou 8bitové časovače, což znamená, že mohou počítat nejvýše od 0 do 255. Timer1 je 16bitový časovač, takže může počítat až 65535. Každý časovač má dva přidružené výstupní piny: 6 a 5 pro časovač 0, 9 a 10 pro časovač 1, 11 a 3 pro časovač 2. Časovač se zvyšuje v každém cyklu hodin Arduino nebo rychlostí, která je snížena o faktor přednastavení, který je buď 8, 64, 256 nebo 1024 (32 a 128 jsou také povoleny pro časovač2). Časovače počítají od 0 do „TOP“a poté znovu (rychlé PWM) nebo dolů (fázově správné PWM). Hodnota ‘TOP’ tedy určuje frekvenci. Výstupní piny lze nastavit, resetovat nebo převrátit na hodnotu registru pro porovnání výstupů, takže tyto určují pracovní cyklus. Pouze časový spínač 1 má schopnost nezávisle nastavit frekvenci a pracovní cykly pro oba výstupní kolíky.

Krok 3: LED bliká

Image
Image
LED bliká
LED bliká
LED bliká
LED bliká

Nejnižší frekvence, které lze dosáhnout s 8bitovými časovači, je 16 MHz/(511*1024) = 30, 6 Hz. Aby LED blikala s frekvencí 1 Hz, potřebujeme časovač1, který může dosáhnout frekvencí 256krát menších, 0,12 Hz.

Připojte LED s její anodou (dlouhá noha) na pin9 a připojte její katodu s odporem 220 Ohm k zemi. Nahrajte kód. LED bude blikat přesně 1 Hz s pracovním cyklem 50%. Funkce loop () je prázdná: časovač je inicializován v setup () a nepotřebuje žádnou další pozornost.

Krok 4: LED stmívač

Image
Image
LED stmívač
LED stmívač
LED stmívač
LED stmívač

Modulace šířky pulsu je účinný způsob, jak regulovat intenzitu LED. U správného ovladače je to také upřednostňovaný způsob regulace rychlosti elektromotorů. Vzhledem k tomu, že signál je buď 100% zapnutý, nebo 100% vypnutý, nedochází k plýtvání energií na sériovém odporu. V zásadě je to jako blikat LED rychleji, než může oko sledovat. 50 Hz je v zásadě dostačující, ale stále se může zdát, že trochu bliká, a když se dioda LED nebo oči pohnou, může dojít k nepříjemné nesouvislé „stopě“. Pomocí předvolby 64 s 8bitovým časovačem získáme 16 MHz/(64*256) = 977 Hz, což odpovídá účelu. Vybereme timer2, aby timer1 zůstal k dispozici pro další funkce, a nezasahujeme do funkce Arduino time (), která používá timer0.

V tomto případě je pracovní cyklus, a tím i intenzita, regulován potenciometrem. Druhá LED dioda může být nezávisle regulována stejným časovačem na pinu 3.

Krok 5: Převodník digitálního signálu na analogový (DAC)

Image
Image
Převodník digitálního signálu na analogový (DAC)
Převodník digitálního signálu na analogový (DAC)
Převodník digitálního signálu na analogový (DAC)
Převodník digitálního signálu na analogový (DAC)

Arduino nemá skutečný analogový výstup. Některé moduly používají k regulaci parametru analogové napětí (kontrast displeje, práh detekce atd.). S pouhým jedním kondenzátorem a rezistorem lze časovač1 použít k vytvoření analogového napětí s rozlišením 5 mV nebo lepším.

Nízkopásmový filtr může „průměrovat“signál PWM na analogové napětí. Kondenzátor je připojen přes odpor ke kolíku PWM. Charakteristiky jsou určeny frekvencí PWM a hodnotami odporu a kondenzátoru. Rozlišení 8bitových časovačů by bylo 5V/256 = 20mV, takže jsme se rozhodli pro Timer1, abychom získali 10bitové rozlišení. Obvod RC je nízkoprůchodový filtr prvního řádu a bude mít určité zvlnění. Časové měřítko obvodu RC by mělo být mnohem větší než období signálu PWM, aby se omezilo zvlnění. Období, které získáme pro 10bitovou přesnost, je 1024/16MHz = 64mus. Pokud použijeme kondenzátor 1 mF a odpor 10 kOhm, RC = 10 ms. Zvlnění mezi špičkami je nejvýše 5V*0,5*T/(RC) = 16mV, což je zde považováno za dostatečné.

Všimněte si, že tento DAC má velmi vysokou výstupní impedanci (10 kOhm), takže napětí výrazně poklesne, pokud odebírá proud. Aby se tomu zabránilo, může být pufrován operačním zesilovačem, nebo může být zvolena jiná kombinace R a C, například 1 kOhm s 10 uF.

V tomto případě je výstup DAC řízen potenciometrem. Druhý nezávislý kanál DAC lze spustit s časovačem1 na pinu 10.

Krok 6: Metronom

Image
Image
Metronom
Metronom
Metronom
Metronom

Metronom pomáhá sledovat rytmus při přehrávání hudby. Pro velmi krátké impulsy lze výstup arduino časovače přivést přímo k reproduktoru, který produkuje jasně slyšitelná kliknutí. Potenciometrem lze regulovat frekvenci úderů od 40 do 208 tepů za minutu, v 39 krocích. Časovač1 je potřebný pro požadovanou přesnost. Hodnota ‘TOP’, která určuje frekvenci, je uvnitř funkce loop () upravena, a to vyžaduje pozornost! Zde vidíte, že režim WGM se liší od ostatních příkladů, které mají pevnou frekvenci: tento režim, s TOP nastaveným registrem OCR1A, má dvojité ukládání do vyrovnávací paměti a chrání před chybějícím TOP a získáním dlouhé závady. To však znamená, že můžeme použít pouze 1 výstupní pin.

Krok 7: Zvukové spektrum

Image
Image
Zvukové spektrum
Zvukové spektrum
Zvukové spektrum
Zvukové spektrum

Lidé mohou slyšet více než 3 řády zvukových frekvencí, od 20 Hz do 20 kHz Tento příklad generuje celé spektrum pomocí potenciometru. Mezi reproduktor a Arduino je umístěn 10mF kondenzátor, který blokuje stejnosměrný proud. Timer1 vytváří čtvercovou vlnu. Režim generování průběhu je zde PWM s korektní fází. V tomto režimu počitadlo začne počítat zpět, když dosáhne vrcholu, což má za následek pulsy, které mají svůj pevný průměr, i když se pracovní cyklus mění. Výsledkem je však také období, které je (téměř) dvojnásobné, a prostě se stane, že s předvolbou 8 časovač 1 pokryje celé slyšitelné spektrum, aniž by bylo nutné předzměnu měnit. Také zde, protože hodnota TOP se mění na cestách, použití OCR1A jako top snižuje závady.

Krok 8: Servomotory

Image
Image
Servomotory
Servomotory
Servomotory
Servomotory

Existují výkonné servo knihovny, ale pokud máte k ovládání pouze dvě serva, můžete to také provést přímo pomocí časovače1, a tím snížit využití CPU, paměti a vyhnout se přerušení. Populární servo SG90 má signál 50 Hz a délka pulsu kóduje polohu. Ideální pro časovač 1. Frekvence je pevná, takže oba výstupy na pinu 9 a pinu 10 lze použít k samostatnému řízení serv.

Krok 9: Zdvojnásobovač napětí a měnič

Zdvojnásobovač napětí a měnič
Zdvojnásobovač napětí a měnič
Zdvojnásobovač napětí a měnič
Zdvojnásobovač napětí a měnič
Zdvojnásobovač napětí a měnič
Zdvojnásobovač napětí a měnič

Někdy váš projekt vyžaduje napětí vyšší než 5 V nebo záporné napětí. Může to být spuštění MOSFETu, spuštění piezoelektrického prvku, napájení operačního zesilovače nebo resetování EEPROM. Pokud je odběr proudu dostatečně malý, až ~ 5mA, může být nejjednodušším řešením nabíjecí čerpadlo: pouhé 2 diody a dva kondenzátory připojené k pulznímu signálu z časovače umožňují zdvojnásobit arduino 5V na 10V. V praxi existují 2 kapky diod, takže v praxi to bude spíše 8,6 V pro zdvojovač nebo -3,6 V pro měnič.

Frekvence čtvercové vlny by měla být dostatečná k pumpování dostatečného náboje diodami. Při změně napětí mezi 0 a 5 V se kondenzátor 1 mF pohybuje o 5 mC, takže pro proud 10 mA musí být frekvence alespoň 2 kHz. V praxi je lepší vyšší frekvence, protože snižuje zvlnění. S časovačem2 čítajícím od 0 do 255 bez předvolby je frekvence 62,5 kHz, což funguje dobře.

Krok 10: Bezdrátový přenos energie

Image
Image
Bezdrátový přenos energie
Bezdrátový přenos energie
Bezdrátový přenos energie
Bezdrátový přenos energie

Nabíjení chytrých hodinek bez kabelů není neobvyklé, ale totéž může být snadno součástí projektu Arduino. Cívka s vysokofrekvenčním signálem může přenášet energii na jinou blízkou cívku indukcí, bez elektrického kontaktu.

Nejprve připravte cívky. Z papírové role o průměru 8,5 cm a smaltovaného drátu o průměru 0,13 mm jsem vytvořil 2 cívky: primární s 20 závity, sekundární s 50 závity. Samoindukčnost tohoto typu cívky s N vinutím a poloměrem R je ~ 5 mH * N^2 * R. Takže pro N = 20 a R = 0,0425 dává L = 85 mH, což bylo potvrzeno testerem součástek. Produkujeme signál o frekvenci 516kHz, což má za následek impedanci 2pi*f*L = 275Ohm. To je dostatečně vysoké, aby se Arduino nedostalo do nadproudu.

Aby byla cívka co nejefektivnější, chtěli bychom použít skutečný střídavý zdroj. Existuje trik, který lze provést: dva výstupy časovače lze spustit v opačné fázi, převrácením jednoho z výstupů. Aby to bylo ještě více podobné sinusové vlně, používáme PWM s korektní fází. Tímto způsobem se mezi piny 9 a 10 střídá napětí mezi oběma 0V, pin 9 +5V, obě 0V, pin 10 +5V. Efekt je na obrázku znázorněn na stopě rozsahu (s přednastavením 1024 tento rozsah hračky nemá velkou šířku pásma).

Připojte primární cívku ke kolíku 9 a 10. Připojte LED k sekundární cívce. Když se sekundární cívka přiblíží k primární, LED se jasně rozsvítí.

Doporučuje: