Spisu treści:
- Krok 1: Wymagane składniki
- Krok 2: Przegląd liczników Arduino do generowania sygnału
- Krok 3: LED Miga
- Krok 4: Ściemniacz LED
- Krok 5: Przetwornik cyfrowo-analogowy (DAC)
- Krok 6: Metronom
- Krok 7: Widmo dźwiękowe
- Krok 8: Serwosilniki
- Krok 9: Podwajacz napięcia i falownik
- Krok 10: Bezprzewodowe przesyłanie zasilania
Wideo: Arduino Timery: 8 projektów: 10 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Arduino Uno lub Nano może generować dokładne sygnały cyfrowe na sześciu dedykowanych pinach za pomocą trzech wbudowanych timerów. Wymagają tylko kilku poleceń do skonfigurowania i nie używają cykli procesora do uruchomienia!
Korzystanie z timerów może być onieśmielające, jeśli zaczniesz od pełnego arkusza danych ATMEGA328, który ma 90 stron poświęconych ich opisowi! Kilka wbudowanych poleceń Arduino już korzysta z timerów, na przykład millis(), delay(), tone(), AnalogWrite() i biblioteka serwo. Ale aby wykorzystać ich pełną moc, musisz ustawić je za pomocą rejestrów. Udostępniam tutaj kilka makr i funkcji, aby było to łatwiejsze i bardziej przejrzyste.
Po bardzo krótkim przeglądzie timerów, śledź 8 fajnych projektów, które polegają na generowaniu sygnału za pomocą timerów.
Krok 1: Wymagane składniki
Aby wykonać wszystkie 8 projektów potrzebujesz:
- Arduino Uno lub kompatybilny
- Prototypowa tarcza z mini płytą prototypową
- 6 kabli połączeniowych płytki stykowej
- 6 krótkich zworek do krojenia styków (zrób sobie z 10cm solidnego drutu łączącego)
- 2 przewody krokodyla
- 1 biała dioda LED 5mm
- rezystor 220 Ohm
- rezystor 10kOhm
- potencjometr 10kOhm
- 2 kondensatory ceramiczne 1mF
- 1 kondensator elektrolityczny 10mF
- 2 diody, 1n4148 lub podobne
- 2 mikrosilniki serwo SG90
- 1 głośnik 8 omów
- 20m cienkiego (0,13mm) drutu emaliowanego
Krok 2: Przegląd liczników Arduino do generowania sygnału
Timer0 i timer2 to 8-bitowe zegary, co oznacza, że mogą liczyć maksymalnie od 0 do 255. Timer1 jest 16-bitowym zegarem, więc może liczyć do 65535. Każdy zegar ma dwa skojarzone piny wyjściowe: 6 i 5 dla timera0, 9 i 10 dla timera1, 11 i 3 dla timera2. Licznik jest zwiększany w każdym cyklu zegara Arduino lub w tempie, które jest zmniejszane o współczynnik preskalowania, który wynosi 8, 64, 256 lub 1024 (32 i 128 są również dozwolone dla timera2). Timery liczą od 0 do „TOP”, a następnie od nowa (szybki PWM) lub w dół (z poprawną fazą PWM). Wartość „TOP” określa zatem częstotliwość. Kołki wyjściowe mogą ustawiać, resetować lub odwracać na wartości rejestru porównywania wyjść, więc to one określają cykl pracy. Tylko timer1 ma możliwość niezależnego ustawienia częstotliwości i cykli pracy dla obu pinów wyjściowych.
Krok 3: LED Miga
Najniższa częstotliwość jaką można osiągnąć przy pomocy 8-bitowych timerów to 16MHz/(511*1024)=30, 6Hz. Tak więc, aby dioda LED mrugała z częstotliwością 1 Hz, potrzebujemy timera1, który może osiągnąć częstotliwości 256 razy mniejsze, 0,12 Hz.
Podłącz diodę LED z jej anodą (długą nogą) do pinu 9 i podłącz jej katodę z rezystorem 220 Ohm do masy. Prześlij kod. Dioda LED będzie migać dokładnie z częstotliwością 1 Hz z cyklem pracy 50%. Funkcja loop() jest pusta: licznik czasu jest inicjowany w setup() i nie wymaga dalszej uwagi.
Krok 4: Ściemniacz LED
Modulacja szerokości impulsu to skuteczny sposób regulowania intensywności diody LED. Przy odpowiednim sterowniku jest to również preferowana metoda regulacji prędkości silników elektrycznych. Ponieważ sygnał jest w 100% włączony lub w 100% wyłączony, nie ma marnowania mocy na rezystancję szeregową. Zasadniczo przypomina to miganie diody LED szybciej, niż oko może śledzić. 50 Hz jest w zasadzie wystarczające, ale nadal może wydawać się, że trochę migocze, a gdy dioda LED lub oczy się poruszają, może pojawić się denerwujący, nieciągły „ślad”. Używając preskalowania 64 z 8-bitowym zegarem, otrzymujemy 16MHz/(64*256)=977Hz, co odpowiada celowi. Wybieramy timer2, aby timer1 pozostał dostępny dla innych funkcji i nie ingerujemy w funkcję Arduino time(), która używa timera0.
W tym przykładzie cykl pracy, a tym samym intensywność, regulowany jest potencjometrem. Druga dioda LED może być regulowana niezależnie za pomocą tego samego timera na pinie 3.
Krok 5: Przetwornik cyfrowo-analogowy (DAC)
Arduino nie ma prawdziwego wyjścia analogowego. Niektóre moduły pobierają napięcie analogowe, aby regulować parametr (kontrast wyświetlacza, próg wykrywania itp.). Za pomocą tylko jednego kondensatora i rezystora timer1 może być użyty do wytworzenia napięcia analogowego o rozdzielczości 5mV lub lepszej.
Filtr dolnoprzepustowy może „uśrednić” sygnał PWM do napięcia analogowego. Kondensator jest podłączony przez rezystor do pinu PWM. Charakterystyki są określone przez częstotliwość PWM oraz wartości rezystora i kondensatora. Rozdzielczość 8-bitowych timerów wynosiłaby 5V/256=20mV, więc wybieramy Timer1, aby uzyskać 10-bitową rozdzielczość. Obwód RC jest filtrem dolnoprzepustowym pierwszego rzędu i będzie miał pewne tętnienia. Skala czasowa obwodu RC powinna być znacznie większa niż okres sygnału PWM, aby zmniejszyć tętnienie. Okres jaki otrzymujemy dla 10-bitowej precyzji to 1024/16MHz= 64mus. Jeśli użyjemy kondensatora 1mF i rezystora 10kOhm, RC=10ms. Tętnienie międzyszczytowe wynosi co najwyżej 5V*0,5*T/(RC)=16mV, co jest tutaj uważane za wystarczające.
Zauważ, że ten DAC ma bardzo wysoką impedancję wyjściową (10 kOhm), więc napięcie znacznie spadnie, jeśli będzie pobierał prąd. Aby tego uniknąć, można go buforować opampem lub wybrać inną kombinację R i C, na przykład 1kOhm z 10mF.
W przykładzie wyjście DAC sterowane jest potencjometrem. Drugi niezależny kanał DAC może być uruchamiany z timerem1 na pinie 10.
Krok 6: Metronom
Metronom pomaga śledzić rytm podczas odtwarzania muzyki. W przypadku bardzo krótkich impulsów wyjście timera arduino można podać bezpośrednio do głośnika, co spowoduje wyraźnie słyszalne kliknięcia. Za pomocą potencjometru częstotliwość uderzeń można regulować w zakresie od 40 do 208 uderzeń na minutę, w 39 krokach. Timer1 jest potrzebny do uzyskania wymaganej precyzji. Wartość „TOP”, która określa częstotliwość, jest modyfikowana wewnątrz funkcji loop(), a to wymaga uwagi! Widać tutaj, że tryb WGM różni się od innych przykładów, które mają stałą częstotliwość: ten tryb, z ustawionym TOP przez rejestr OCR1A, ma podwójne buforowanie i chroni przed brakiem TOP i długim glitchem. Oznacza to jednak, że możemy użyć tylko 1 pinu wyjściowego.
Krok 7: Widmo dźwiękowe
Ludzie mogą słyszeć ponad 3 rzędy wielkości częstotliwości dźwięku, od 20Hz do 20kHz Ten przykład generuje pełne widmo za pomocą potencjometru. Kondensator 10mF jest umieszczony między głośnikiem a Arduino, aby zablokować prąd stały. Timer1 generuje falę prostokątną. Tryb generowania przebiegów to PWM z poprawną fazą. W tym trybie licznik zaczyna odliczać wstecz, gdy osiągnie szczyt, co skutkuje impulsami, które mają stałą średnią, nawet gdy cykl pracy się zmienia. Skutkuje to jednak również okresem, który jest (prawie) podwójny i tak się składa, że przy preskali 8 timer1 pokrywa pełne spektrum słyszalne, bez konieczności zmiany preskali. Również tutaj, ponieważ wartość TOP jest zmieniana w ruchu, użycie OCR1A jako topu zmniejsza usterki.
Krok 8: Serwosilniki
Istnieją potężne biblioteki serwomechanizmów, ale jeśli masz tylko dwa serwa do napędzania, równie dobrze możesz zrobić to bezpośrednio za pomocą timera1, a tym samym zmniejszyć użycie procesora, pamięci i uniknąć przerwań. Popularny serwo SG90 pobiera sygnał 50Hz, a długość impulsu koduje pozycję. Idealny do timera1. Częstotliwość jest stała, więc oba wyjścia na pinie 9 i pinie 10 mogą być używane do niezależnego sterowania serwami.
Krok 9: Podwajacz napięcia i falownik
Czasami twój projekt wymaga napięcia wyższego niż 5 V lub napięcia ujemnego. Może to być uruchomienie MOSFET, uruchomienie elementu piezo, zasilanie opampa lub zresetowanie EEPROM. Jeśli pobór prądu jest wystarczająco mały, do ~5mA, najprostszym rozwiązaniem może być pompa ładująca: tylko 2 diody i dwa kondensatory podłączone do sygnału impulsowego z timera pozwalają podwoić arduino 5V do 10V. W praktyce są 2 spadki diod, więc w praktyce będzie to bardziej jak 8,6V dla podwajacza lub -3,6V dla falownika.
Częstotliwość fali prostokątnej powinna być wystarczająca do przepompowania wystarczającego ładunku przez diody. Kondensator 1mF porusza się o 5mC zmiany, gdy napięcie zmienia się od 0 do 5V, więc dla prądu 10mA częstotliwość musi wynosić co najmniej 2kHz. W praktyce wyższa częstotliwość jest lepsza, ponieważ zmniejsza tętnienie. Przy timerze2 liczącym od 0 do 255 bez przeskalowania częstotliwość wynosi 62,5kHz, co działa dobrze.
Krok 10: Bezprzewodowe przesyłanie zasilania
Nie jest niczym niezwykłym ładowanie inteligentnego zegarka bez kabli, ale to samo z łatwością może być częścią projektu Arduino. Cewka z sygnałem o wysokiej częstotliwości może przenosić moc do innej pobliskiej cewki poprzez indukcję, bez kontaktu elektrycznego.
Najpierw przygotuj cewki. Użyłem rolki papieru o średnicy 8,5 cm i drutu emaliowanego o średnicy 0,13 mm, aby wykonać 2 zwoje: pierwotną z 20 zwojami, wtórną z 50 zwojami. Indukcyjność własna tego typu cewki przy N uzwojeniach i promieniu R wynosi ~5muH*N^2*R. Czyli dla N=20 i R=0,0425 daje L=85muH, co zostało potwierdzone testerem podzespołów. Wytwarzamy sygnał o częstotliwości 516kHz, co daje impedancję 2pi*f*L=275Ohm. Jest to na tyle wysokie, że Arduino nie przechodzi w stan przetężenia.
Aby jak najefektywniej uruchomić cewkę, chcielibyśmy użyć prawdziwego źródła prądu przemiennego. Jest pewien trik, który można wykonać: dwa wyjścia timera mogą działać w przeciwnej fazie, odwracając jedno z wyjść. Aby uczynić go jeszcze bardziej podobnym do fali sinusoidalnej, używamy PWM z korekcją fazową. W ten sposób pomiędzy pinem 9 a 10 napięcie zmienia się pomiędzy 0V, pin 9 +5V, oba 0V, pin 10 +5V. Efekt jest pokazany na obrazku ze śladu lunety (przy preskalowaniu 1024, ta zabawkowa luneta nie ma dużej przepustowości).
Podłącz cewkę pierwotną do styków 9 i 10. Podłącz diodę LED do cewki wtórnej. Gdy cewka wtórna jest zbliżona do pierwotnej, dioda LED świeci jasno.
Zalecana:
Fajny laptop Touchpad Hack dla projektów Arduino !: 18 kroków (ze zdjęciami)
Fajny hack touchpada do laptopa dla projektów Arduino!: Jakiś czas temu, kiedy majstrowałem przy touchpadzie PS/2 z mikrokontrolerem Arduino, dowiedziałem się, że dwa z jego połączeń na płycie mogą być używane jako wejścia cyfrowe. W tej instrukcji nauczmy się, jak możemy wykorzystać dodatek touchpada PS/2
Komunikacja bezprzewodowa za pomocą modułu nadawczo-odbiorczego NRF24L01 dla projektów opartych na Arduino: 5 kroków (ze zdjęciami)
Komunikacja bezprzewodowa przy użyciu modułu nadawczo-odbiorczego NRF24L01 dla projektów opartych na Arduino: To jest mój drugi samouczek dotyczący robotów i mikrokontrolerów. To naprawdę niesamowite widzieć swojego robota żywego i działającego zgodnie z oczekiwaniami i uwierz mi, że będzie fajniej, jeśli będziesz sterować swoim robotem lub innymi rzeczami bezprzewodowymi z szybkim i
5 obwodów LDR: zatrzask, timery, czujniki światła i ciemności: 3 kroki
5 obwodów LDR: zatrzaskiwanie, zegary, czujniki światła i ciemności: Rezystor zależny od światła, znany również jako LDR, to element, który ma (zmienną) rezystancję, która zmienia się wraz z natężeniem padającego na niego światła. Pozwala to na ich stosowanie w obwodach wykrywania światła. Tutaj pokazałem pięć prostych obwodów, które mogą być ma
10 podstawowych projektów Arduino dla początkujących! Wykonaj co najmniej 15 projektów na jednej tablicy!: 6 kroków
10 podstawowych projektów Arduino dla początkujących! Twórz co najmniej 15 projektów za pomocą jednej płytki!: Arduino Project & Tablica samouczków; Zawiera 10 podstawowych projektów Arduino. Wszystkie kody źródłowe, plik Gerber i nie tylko. Brak SMD! Łatwe lutowanie dla każdego. Łatwo zdejmowane i wymienne elementy. Możesz wykonać co najmniej 15 projektów za pomocą jednego bo
Darmowe części do projektów elektronicznych i eksperymentów: 26 kroków (ze zdjęciami)
Darmowe części do projektów elektronicznych i eksperymentów: Ta instrukcja dotyczy uzyskiwania bezpłatnych części do projektów elektronicznych. Prawdopodobnie masz wszystko, czego potrzebujesz, aby zacząć, a twoje zapasy będą z czasem rosnąć, gdy psujesz rzeczy, kupujesz nowe rzeczy, a czasem ludzie dają ci swoje stare lub nie