Spisu treści:
Wideo: Prosty dekoder obrotowy: 4 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
Ta instrukcja opisuje prostą metodę dekodowania sekwencyjnego enkodera obrotowego za pomocą Arduino Uno R3.
Kompaktowe procedury oprogramowania służą do zliczania liczby przejść, eliminowania odbijania się styków i określania kierunku obrotu. Dodatkowe komponenty i tabele przeglądowe nie są wymagane.
Dostępne są wersje kodu z przerwaniami i bez przerw.
Wersja kodu z przerwaniami wymaga tylko jednego pinu przerwania.
Obrazy:
- Zdjęcie otwierające przedstawia zmontowany enkoder.
- Zrzut ekranu pokazuje kod dla wersji przerwania i liczbę, gdy wał enkodera jest obracany zgodnie z ruchem wskazówek zegara i przeciwnie do ruchu wskazówek zegara.
- Film pokazuje liczbę podczas szybkiego obracania.
Krok 1: Schemat obwodu
Schemat okablowania enkodera pokazano na rys.1.
Przewody połączeniowe są przylutowane bezpośrednio do pinów enkodera.
Zamień dwa niebieskie przewody, jeśli kierunek zliczania jest odwrotny.
Krok 2: Lista części
Następujące części zostały uzyskane z
- 1 tylko Arduino UNO R3 z kablem USB.
- 1 tylko sekwencyjny enkoder obrotowy (EC11 lub równoważny) z przełącznikiem.
- 1 tylko pokrętło pasujące do wału.
- 3 tylko zworki Arduino męsko-męskie.
Krok 3: Teoria
Sekwencyjne enkodery obrotowe generują dwie fale prostokątne, z których każda jest przesunięta o 90 stopni, jak pokazano na rys.1.
Wzorce logiczne na styku A i styku B są różne, gdy wał jest obracany zgodnie z ruchem wskazówek zegara (CW) i przeciwnie do ruchu wskazówek zegara (CCW) przez pozycje od 1 do 6.
Typowe metody określania kierunku obrotu to:
- sprzęt komputerowy
- podwójne przerwania
- tabele wyszukiwania wzorców
Ten projekt wykorzystuje metodę oprogramowania, która nie wymaga tabel przeglądowych. [1]
Kierunek
Zamiast patrzeć na wzorce wyjściowe z Kontaktu A i Kontaktu B, skupmy się na Kontaktie A.
Jeśli po każdym przejściu Kontaktu A przeanalizujemy próbkę kontaktu B, zauważymy, że:
- Kontakt A i Kontakt B mają przeciwne stany logiczne, gdy enkoder jest obracany w prawo
- Kontakt A i kontakt B mają ten sam stan logiczny, gdy enkoder jest obrócony w lewo
Rzeczywisty kod:
// ----- Policz przejścia
BieżącyStanA = stanKontaktA(); if (CurrentStateA != LastStateA) { CurrentStateB = digitalRead(ContactB); if (CurrentStateA == CurrentStateB) Count++; if (CurrentStateA != CurrentStateB) Count--; Ostatni Stan A = Bieżący Stan A; }
Ta metoda ma następujące zalety:
- tabele przeglądowe nie są wymagane
- wymagana jest tylko jedna linia przerwania
Obalić
Wszystkie enkodery mechaniczne cierpią z powodu „odskoku kontaktu”.
Jeśli styk przełącznika nie zwiera/rozwiera się czysto, jego stan logiczny będzie gwałtownie oscylował od WYSOKIEGO do NISKIEGO, aż styk przełącznika ustabilizuje się. Powoduje to fałszywe zliczenia.
Jedną z metod tłumienia odbijania się styków jest dodanie małego kondensatora na każdym styku przełącznika. Kondensator i związany z nim rezystor podciągający tworzą integrator, który skutecznie zwiera wysokie częstotliwości i umożliwia wdzięczny wzrost/spadek napięcia przełącznika.
Wadą tego podejścia jest to, że przejścia mogą zostać pominięte, jeśli wał enkodera zostanie szybko obrócony.
Odbicie oprogramowania
Ta metoda wykorzystuje dwa liczniki (Open, Closed), które zostały ustawione na zero. [2]
Po wykryciu przejścia na styku A:
- Stale ankietuj kontakt A.
- Zwiększ licznik otwarcia i zresetuj licznik zamknięcia, gdy styk A jest WYSOKI.
- Zwiększ licznik zamknięcia i zresetuj licznik otwarcia, gdy styk A jest NISKI.
- Wyjdź z pętli, gdy jeden z liczników osiągnie określoną liczbę. Skutecznie szukamy okresu stanu ustalonego po każdym odbiciu kontaktu.
Rzeczywisty kod:
// ----- Odbij kontakt A
while (1) { if (digitalRead(ContactA)) { // ----- ContactA jest otwarty zamknięty = 0; // Pusty przeciwny integrator Open++; // Integracja jeśli (Open > MaxCount) return HIGH; } else { // ----- KontaktA jest zamknięty Otwarty = 0; // Pusty przeciwny integrator Closed++; // Integracja jeśli (Zamknięte > MaxCount) return LOW; } }
Nie ma potrzeby odbijania kontaktu B, ponieważ przejścia Kontaktu A i Kontaktu B nie pokrywają się.
Rachunkowość
Mechaniczna „zapadka” skutecznie podwaja twoją liczbę, ponieważ dwie liczby są rejestrowane między kliknięciami (patrz rys. 1).
Liczbę „zapadków” można określić za pomocą arytmetyki modulo 2, jak pokazano poniżej.
Rzeczywisty kod:
// ----- Policz "zapadki"
if (Liczba % 2 == 0) { Serial.print("Liczba: "); Serial.println(Liczba / 2); }
Bibliografia
Więcej informacji można znaleźć pod adresem:
[1]
howtomechatronics.com/tutorials/arduino/ro…
[2]
newbiehack.com/ButtonorSwitchDebounceinSof…
Krok 4: Oprogramowanie
Ten projekt wymaga najnowszej wersji Ardino Uno R3 IDE (zintegrowane środowisko programistyczne), które jest dostępne pod adresem
Pobierz każdy z poniższych dwóch szkiców Arduino (w załączeniu)
- rotor_encoder_1.ino (wersja odpytująca)
- rotor_encoder_2.no (wersja z przerwaniem)
Kliknij dwukrotnie preferowaną wersję i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.
Cieszyć się …
Kliknij tutaj, aby wyświetlić inne moje instrukcje.
Zalecana:
Jak to zrobić: bezstykowy enkoder obrotowy: 3 kroki
Jak to zrobić: bezstykowy enkoder obrotowy: Ta nota aplikacyjna opisuje, jak zaprojektować przełącznik obrotowy lub enkoder o wysokiej niezawodności przy użyciu Dialog GreenPAK™. Ta konstrukcja przełącznika jest bezstykowa, a zatem ignoruje utlenianie i zużycie styków. Idealnie nadaje się do użytku na zewnątrz, gdzie
Jak zrobić prosty dekoder linii telefonicznej DTMF (tonowy): 3 kroki
Jak zrobić prosty dekoder linii telefonicznej DTMF (ton): Jest to prosty projekt, który umożliwia dekodowanie sygnałów DTMF na praktycznie każdej linii telefonicznej. W tym samouczku używamy dekodera MT8870D. Używamy wstępnie wbudowanego dekodera tonów, ponieważ uwierz mi, to ból z tyłu próbować to zrobić za pomocą
Enkoder obrotowy za pomocą Arduino Nano: 4 kroki
Enkoder obrotowy używający Arduino Nano: Cześć wszystkim,W tym artykule zrobię tutorial jak używać enkodera obrotowego przy użyciu Arduino Nano. Aby użyć tego enkodera obrotowego, nie potrzebujesz zewnętrznej biblioteki. Dzięki temu możemy bezpośrednio tworzyć programy bez uprzedniego dodawania bibliotek. ok Zacznijmy
Lepszy enkoder obrotowy: 4 kroki
Lepszy enkoder obrotowy: Jeśli kiedykolwiek próbowałeś użyć gotowego enkodera obrotowego w swoim projekcie, najprawdopodobniej byłeś rozczarowany. Czy to z powodu trudności w konfiguracji, czy nieprecyzyjnych kontroli. Miałem ten sam problem, więc postanowiłem go naprawić. Zaprojektowałem 3D pr
Enkoder obrotowy DIY: 4 kroki
Enkoder obrotowy DIY: Przepraszamy za brak zdjęć, nie zdecydowałem się na samouczek na ten temat, dopóki prawie go nie skończyłem.Przegląd: Enkodery obrotowe używają dwóch lub więcej czujników do wykrywania pozycji, kierunku obrotu, prędkości , a liczba zwojów