Potencjometry i enkodery obrotowe na pierwszy rzut oka wyglądają prawie identycznie, ale działają na różne sposoby. Dowiedz się, jak używać obu z Arduino.
Wśród elementów elektronicznej kontroli użytkownika pokrętła wyróżniają się jako jedne z najbardziej satysfakcjonujących w użyciu. Mogą uzupełniać ekrany dotykowe i inne urządzenia wejściowe, a także dobrze współpracować z przyciskami i przełącznikami. Ale jak dodać pokrętło do własnych projektów DIY Arduino?
Masz dwie główne opcje: potencjometr lub enkoder obrotowy. Te komponenty mogą wyglądać podobnie, ale metody ich używania z urządzeniem takim jak płytka mikrokontrolera Arduino są bardzo różne. Zobaczmy, jak porównują się ze sobą.
Potencjometry vs. Enkodery obrotowe
Większość potencjometrów i enkoderów obrotowych, z którymi zetkną się entuzjaści majsterkowania, ma podobną obudowę. Mają prostopadłościenną lub cylindryczną podstawę z przymocowanymi nogami łączącymi oraz okrągły trzonek, który się obraca i ma wycięcia na czapkę.
Niektóre potencjometry wyglądają inaczej, na przykład te, które mają postać długich suwaków, takich jak te, które można znaleźć na mikserach muzycznych. Jednak jeśli chodzi o enkodery obrotowe, na pierwszy rzut oka wyglądają prawie identycznie jak enkodery obrotowe, więc można by pomyśleć, że są takie same.
Co to jest potencjometr?
Potencjometr jest zasadniczo zmiennym rezystorem. Gdy wał się obraca, rezystancja wewnątrz potencjometru zmienia się, umożliwiając użytkownikowi zmianę właściwości obwodu bez konieczności jego przebudowywania. Potencjometry mogą być zarówno analogowe, jak i cyfrowe, ale potencjometry cyfrowe naśladują potencjometry analogowe, co czyni je bardzo podobnymi w użyciu.
Potencjometry zawsze mają określony punkt początkowy i końcowy, w którym nie można już obrócić wału. Niektóre potencjometry po przekręceniu wydają się nierówne, ale wiele z nich jest również gładkich, jak te, które można znaleźć w starych zestawach stereo.
Pomimo tego, że są analogowe, potencjometry dobrze współpracują z mikrokontrolerami. Możesz łatwo skonfiguruj potencjometr z Raspberry Pi Pico lub Arduino.
Co to jest enkoder obrotowy?
Enkodery obrotowe określają położenie swojego wału za pomocą czujnika w celu dostarczenia sygnału analogowego lub cyfrowego do urządzenia, do którego są podłączone. To mówi urządzeniu, w której pozycji znajduje się enkoder. Oprócz obracającego się wałka, enkodery obrotowe mają zwykle również wbudowany przycisk, który jest uruchamiany przez pchnięcie wałka w dół.
W przeciwieństwie do potencjometrów, enkodery obrotowe mogą obracać się bez zatrzymywania i prawie zawsze mają wyczuwalne wypukłości dla każdej pozycji wału. Wiele nowoczesnych samochodów wykorzystuje enkodery obrotowe do sterowania systemami rozrywki.
Jak używać potencjometru z Arduino
Dzięki ich prostej konstrukcji, użycie potencjometru z Arduino jest proste. Twój potencjometr ma trzy złącza: uziemienie, wyjście i vref. Kołki uziemienia i vref łączą się odpowiednio ze złączami GND i 5 V na twoim Arduino, podczas gdy styk wyjściowy potencjometru łączy się z jednym z wejść analogowych na twojej płycie.
Kod potencjometru Arduino
Twój kod potencjometru Arduino zaczyna się od podstawowego organizować coś() I pętla() szablon, który zobaczysz podczas tworzenia nowego pliku w Arduino IDE. Najpierw dodaj A stała wewn zmienną na początku kodu, aby zarejestrować połączenie pinów analogowych garnka — w tym przypadku A0.
konstint potencjometr = A0;
W ślad za tym organizować coś() funkcja jest prosta: wystarczy zadeklarować pin potencjometru jako wejście. Możesz także uruchomić połączenie szeregowe, jeśli chcesz wysłać dane do komputera w celu diagnostyki.
próżniaorganizować coś(){
pinMode (potencjometr, WEJŚCIE);
Seryjny.zaczynać(9600);
}
Następnie nadszedł czas, aby skonfigurować pętla() funkcjonować. Zacznij od utworzenia int zmienna za pomocą Odczyt analogowy() Funkcja przechowywania pozycji potencjometru. Następnie możesz użyć mapa() aby zmniejszyć rozmiar wartości, z którą masz do czynienia — w tym przykładzie, aby dopasować specyfikację PWM, na przykład do sterowania jasnością diody LED. Dodaj krótkie opóźnienie, aby zapewnić stabilność.
próżniapętla(){
int potentiometerValue = analogRead (potencjometr);
mapa (wartość potencjometru, 0, 1023, 0, 255);
Seryjny.println(potencjometrWartość);
opóźnienie (10);
}
Teraz, gdy masz już pozycję potencjometru, możesz użyć go z innymi częściami kodu. na przykład Jeśli instrukcja zadziałałaby dobrze, aby uruchomić kod, gdy potencjometr znajduje się w określonej pozycji.
konstint potencjometr = A0;
próżniaorganizować coś(){
pinMode (potencjometr, WEJŚCIE);
Seryjny.zaczynać(9600);
}
próżniapętla(){
int potentiometerValue = analogRead (potencjometr);
mapa (wartość potencjometru, 0, 1023, 0, 255);
Seryjny.println(potencjometrWartość);
opóźnienie (10);
}
Jak używać enkodera obrotowego z Arduino
Enkodery obrotowe wymagają bardziej skomplikowanego kodu niż potencjometry, ale nadal są dość łatwe w obsłudze. Twój enkoder obrotowy ma pięć pinów: uziemienie, VCC, pin przycisku (SW), wyjście A (CLK) i wyjście B (DT). Piny uziemiające i VCC łączą się odpowiednio ze złączami uziemienia i 5 V w Arduino, podczas gdy wtyki SW, CLK i BT łączą się z indywidualnymi złączami cyfrowymi w Arduino.
Kod enkodera obrotowego Arduino
Aby nasz kod był prostszy i łatwiejszy w obsłudze, użyjemy biblioteki SimpleRotary Arduino stworzonej przez MPrograms na GitHub. Upewnij się, że masz zainstalowaną tę bibliotekę przed rozpoczęciem pracy nad kodem.
Podobnie jak kod potencjometru, możesz uruchomić skrypt enkodera obrotowego za pomocą podstawowego Arduino organizować coś() I pętla() szablon funkcji. Zacznij od zadeklarowania biblioteki SimpleRotary i przypisania pinów enkodera w tej kolejności; CLK, DT i SW.
#włączać
Prosty obrotowy obrotowy(1,2,3);
Nie musisz nic dodawać do swojego organizować coś() tej funkcji, chyba że chcesz używać monitora szeregowego do diagnozowania enkodera obrotowego.
próżniaorganizować coś(){
Seryjny.zaczynać(9600);
}
The pętla() funkcja to inna bajka. Określenie obrotu wałka enkodera rozpoczyna się od a obrotowy.obrót() wywołanie funkcji, które jest przypisane do int zmienny. Jeśli wynikiem jest 1, enkoder obraca się zgodnie z ruchem wskazówek zegara. Jeśli wynikiem jest 2, enkoder obraca się w kierunku przeciwnym do ruchu wskazówek zegara. Wynik zawsze będzie równy 0, jeśli enkoder nie obrócił się od ostatniego sprawdzenia.
Możesz użyć Jeśli instrukcje wyzwalające inny kod w zależności od kierunku obrotu enkodera.
próżniapętla(){
int enkoderObrót;
enkoderObrót = obrotowy.obrót();if (obrót enkodera == 1) {
Serial.println("zgodnie ze wskazówkami zegara");
}
if (obrót enkodera == 2) {
Serial.println(„przeciwnie do ruchu wskazówek zegara”);
}
}
Musisz także dodać kod dla przycisku enkodera do pliku pętla() funkcjonować. Ten proces jest bardzo podobny, z tą różnicą, że użyjesz obrotowy.push() funkcję, a nie obrotowy.obrót().
próżniapętla(){
int enkoderPrzycisk;
przycisk kodera = obrotowy.push();
if (przycisk enkodera == 1) {
Serial.println(„wciśnięty przycisk”);
}
}
Ten skrypt jest dość prosty i możesz zrobić wiele, aby uczynić go swoim własnym. Warto zapoznać się z dokumentacją projektu SimpleRotary, aby upewnić się, że korzystasz ze wszystkich jego kluczowych funkcji. Po złożeniu kod enkodera powinien wyglądać tak.
#włączać
Prosty obrotowy obrotowy(1,2,3);próżniaorganizować coś(){
Seryjny.zaczynać(9600);
}próżniapętla(){
int enkoderObrót;
enkoderObrót = obrotowy.obrót();if (obrót enkodera == 1) {
Serial.println("zgodnie ze wskazówkami zegara");
}if (obrót enkodera == 2) {
Serial.println(„przeciwnie do ruchu wskazówek zegara”);
}int enkoderPrzycisk;
przycisk kodera = obrotowy.push();
if (przycisk enkodera == 1) {
Serial.println(„wciśnięty przycisk”);
}
}
Jak wybierać między potencjometrami a enkoderami obrotowymi do projektów
Jak widać, enkodery obrotowe i potencjometry działają zupełnie inaczej. Oba te komponenty zapewniają nowe sposoby sterowania projektami elektronicznymi, ale który wybrać?
Potencjometry są niedrogie i łatwe w użyciu, ale pozwalają tylko na ograniczony zakres wejściowy. To czyni je doskonałymi, gdy chcesz kontrolować jasność diody LED lub zwiększać i zmniejszać moc przekazywaną do określonych komponentów oraz do innych podobnych zadań.
Enkodery obrotowe zapewniają znacznie większy zakres niż potencjometry. Włączenie przycisku oznacza, że świetnie nadają się do systemów sterowania menu, jak widać w wielu nowoczesnych samochodach. Ten typ komponentów stał się bardzo popularny w przestrzeni do budowy klawiatur mechanicznych. Możesz nawet zbudować mały makropad z wbudowanym enkoderem.
Podobny wygląd, różne komponenty
Mając wszystkie te informacje na swoim koncie, powinieneś być gotowy do rozpoczęcia projektu elektronicznego z potencjometrem lub enkoderem obrotowym. Te komponenty mogą dać ci mnóstwo kontroli nad tworzonymi obwodami, ale musisz upewnić się, że wybierzesz właściwą opcję dla swojego projektu.