Enkodery: Przewodnik po czujnikach ruchu i pozycji
W automatyce i robotyce precyzja jest wszystkim. Aby system wiedział, o jaki kąt obrócił się silnik lub w którym miejscu znajduje się ramię robota, potrzebuje urządzenia zwanego enkoderem. W tym artykule przyjrzymy się budowie, rodzajom i praktycznym zastosowaniom tych kluczowych sensorów.
Co to jest enkoder obrotowy?
Enkoder obrotowy (nazywany również przetwornikiem obrotowo-impulsowym) to czujnik, który przekształca ruch mechaniczny (obrót wału) na sygnał elektryczny. Dzięki niemu układ sterujący może określić pozycję, prędkość oraz kierunek obrotu elementu roboczego.
Zastosowanie w pigułce: Enkodery znajdziemy wszędzie – od gałek w radiach samochodowych i drukarek 3D, aż po zaawansowane serwonapędy w liniach produkcyjnych.
Rodzaje enkoderów i ich działanie
Wybór odpowiedniego typu enkodera zależy od tego, czy system po restarcie zasilania musi „pamiętać” swoją pozycję.
1. Enkoder inkrementalny (przyrostowy)
Działa poprzez generowanie impulsów podczas ruchu. Najczęściej spotykany to rotary encoder z wyjściem kwadraturowym (kanały A i B przesunięte o 90 stopni).
Wada: Po wyłączeniu zasilania „gubi” pozycję i wymaga bazowania (powrotu do punktu zero).
2. Enkodery absolutne
Każdemu kątowi obrotu przypisany jest unikalny kod cyfrowy. Enkoder absolutny od razu po włączeniu wie, w jakiej pozycji się znajduje, bez konieczności ruchu. Idealny do precyzyjnych ramion robotycznych.
| Cecha | Inkrementalny | Absolutny |
|---|---|---|
| Punkt referencyjny | Wymagany (bazowanie) | Niepotrzebny |
| Cena | Niższa | Wyższa |
Technologie: Optyka vs Magnetyzm
Enkoder obrotowy optyczny wykorzystuje tarczę z nacięciami i wiązkę światła. Jest niezwykle precyzyjny (enkoder kątowy wysokiej klasy), ale wrażliwy na kurz i wibracje.
W nowoczesnej elektronice hobbystycznej i przemysłowej coraz popularniejsze są enkodery magnetyczne, takie jak AS5600.
Bohater projektów DIY: AS5600
To bezkontaktowy, magnetyczny enkoder absolutny. Współpracuje z magnesem zamocowanym na osi silnika. Oferuje 12-bitową rozdzielczość i komunikację przez I2C, co czyni go idealnym zamiennikiem dla klasycznych potencjometrów, które z czasem się zużywają.
Czym jest sygnał kwadraturowy?
Większość enkoderów przyrostowych wyprowadza sygnał w kodzie Graya lub jako dwa przebiegi prostokątne przesunięte w fazie. Analizując, który kanał (A czy B) pierwszy zmienia stan na wysoki, mikrokontroler określa kierunek obrotu, a licząc zbocza — przebytą drogę.
Analiza schematu: Połączenie enkodera z mikrokontrolerem
- • Zasilanie i masa — standardowe podłączenie VCC (3.3V/5V) oraz GND zapewnia stabilną pracę układów logicznych enkodera.
- • Kanały sygnałowe (A, B) — wyjścia podłączone do pinów przerwań zewnętrznych (Interrupts) pozwalają na błyskawiczne zliczanie impulsów bez obciążania procesora.
- • Rezystory Pull-up — niezbędne przy enkoderach z wyjściem typu otwarty kolektor (Open Collector), aby wymusić stan wysoki na liniach sygnałowych.
Wskazówka: Przy enkoderach mechanicznych warto zastosować filtr sprzętowy (kondensator 100nF) lub programowy debouncing, aby wyeliminować drgania styków generujące fałszywe impulsy.
Jak odczytać pozycję z AS5600? (Przykład Arduino)
Enkoder magnetyczny AS5600 komunikuje się za pomocą interfejsu I2C. W przeciwieństwie do zwykłych enkoderów inkrementalnych, tutaj odczytujemy konkretną wartość rejestru odpowiadającą aktualnemu kątowi obrotu (0-4095).
#include <Wire.h> // Adres I2C dla AS5600 to zawsze 0x36 void setup() { Wire.begin(); Serial.begin(115200); } void loop() { Wire.beginTransmission(0x36); Wire.write(0x0E); // Rejestr wyjściowy (RAW ANGLE) Wire.endTransmission(); Wire.requestFrom(0x36, 2); if (Wire.available() <= 2) { int highByte = Wire.read(); int lowByte = Wire.read(); // Połączenie bajtów w 12-bitową wartość (0-4095) int rawAngle = (highByte << 8) | lowByte; float degAngle = rawAngle * 360.0 / 4096.0; Serial.print("Pozycja: "); Serial.println(degAngle); } delay(100); }






















