Svět elektroniky a robotiky je plný skvělých malých vynálezů, které nám umožňují ovládat a monitorovat nejrůznější pohyby. Jedním z nejvšestrannějších a nejužitečnějších prvků je bezpochyby rotační enkodér, optický i magnetický. Tato zařízení se stala nepostradatelnými v projektech Arduina, automatizace a řízení motorů. Pokud jste se někdy zamýšleli nad tím, co přesně rotační enkodér je, budete se divit. Optický nebo magnetický rotační enkodér: co to je a příklady: KY-040 a AS5600, Jste na správném místě.
V tomto článku se hlouběji ponoříme do provozu, aplikací a praktických příkladů rotačních enkodérů, se zvláštním zaměřením na dva velmi populární moduly: KY-040 a AS5600Naučíte se, jak rozlišovat mezi optickými a magnetickými enkodéry, jejich fyzikálními a elektrickými vlastnostmi, jak je zapojit a naprogramovat v Arduinu a jaké výhody každý z nich nabízí v závislosti na vašem projektu. Také vám poskytneme tipy pro výběr a použití těchto senzorů ve vašich vlastních projektech, vše vysvětlené jasným a poutavým způsobem, aniž bychom vynechali jakékoli relevantní detaily.
Co je to rotační enkodér?
Un rotační enkodér Je to senzor určený k měření úhlová poloha, rychlost a směr otáčení rotujícího hřídele nebo prvku. Toto zařízení transformuje rotační pohyb na elektrické signály (obvykle digitální impulsy nebo analogové signály), které pak může interpretovat mikrokontrolér, jako je Arduino, Raspberry Pi nebo dokonce průmyslový kontrolér.
Tyto senzory jsou nezbytné v aplikacích, kde je třeba znát přesnou polohu osy nebo počet otáček, které provedla. Běžně se nacházejí v tiskárnách, servomotorech, robotech, numerických řídicích systémech a samozřejmě v DIY projektech, od rozhraní menu až po systémy řízení rychlosti.
Typy rotačních enkodérů: optické vs. magnetické
Rotační enkodéry lze rozdělit hlavně na oční optici y magnetický, ačkoli existují i jiné méně běžné varianty, jako například kapacitní.
Optický rotační enkodér
Optický kodér, stejně jako KY-040Pracuje na disku se značkami nebo otvory a optickým vysílacím/přijímacím systémem (fotodioda nebo LED). Jak se hřídel otáčí, přerušení způsobená těmito značkami generují elektrické impulsy, které může mikrokontrolér spočítat, a tím určit úhlový posun. Jeho vnitřní konstrukce obvykle zahrnuje statickou část (disk) a rotující část (hřídel připojená k měřenému prvku).
Tento typ enkodéru vyniká svou vysokou přesností a rychlou odezvou. Jsou velmi užitečné v aplikacích, kde je klíčová mechanická robustnost a snadné digitální čtení, například v uživatelských rozhraních, ovládání hlasitosti, otočných nabídkách a vzdělávacích robotech.
Magnetický rotační enkodér
Na druhou stranu magnetický enkodér používá senzor citlivý na magnetické pole (obvykle Hallův senzor nebo specializovaný čip, jako například AS5600), který detekuje úhlovou polohu magnetu spojeného s hřídelí. Tyto enkodéry mohou poskytovat vyšší rozlišení díky internímu analogově-digitálnímu převodu a jsou méně náchylné k nečistotám nebo prachu, protože nespoléhají na optické součástky. Navíc obvykle nabízejí digitální (I2C nebo PWM) a/nebo analogové výstupy, což usnadňuje jejich integraci do různých elektronických systémů.
Inkrementální a absolutní enkodéry: klíčové rozdíly
Svět kodérů se dále dělí na přírůstkové y absolutní.
- Inkrementální enkodér: Poskytuje signál ve formě impulsů pokaždé, když se hřídel otočí o určitý zlomek. Počet impulsů na otáčku závisí na konstrukci a modelu. Pro určení aktuální polohy musí systém tyto impulsy spočítat a zapamatovat si je z referenčního bodu.
- Absolutní enkodér: Přímo poskytuje aktuální úhlovou polohu hřídele, i když se pohnula, když byl systém vypnutý. Obvykle má speciální kódování na disku nebo magnetický senzor s vysokým rozlišením.
V tomto článku se zaměříme na inkrementální enkodéry (jako je KY-040) a absolutní magnetický enkodér (AS5600), protože se jedná o nejběžnější a nejsnadněji integrovatelné enkodéry do projektů Arduino.
Obecný provoz inkrementálního rotačního enkodéru
L inkrementální enkodéry (jako například KY-040) se skládají ze dvou výstupních kanálů, kanálu A a kanálu B, které generují digitální impulsy fázově posunuté o 90°. Porovnáním pořadí, ve kterém se tyto kanály mění, je možné odvodit směr otáčení (ve směru nebo proti směru hodinových ručiček), a to navíc k počítání provedených kroků (pozic).
Vyprodukovaný signál se nazývá „kvadratura“ a umožňuje různé přesnosti:
- Jednoduchá přesnost: Záznam pouze jedné hrany v kanálu.
- Dvojitá přesnost: Záznam obou stran v jednom kanálu.
- Čtyřnásobná přesnost: Záznam obou křídel na obou kanálech.
Rotační enkodér KY-040: Vlastnosti, připojení a použití s Arduinem
El KY-040 Je to jeden z nejpoužívanějších inkrementálních rotačních enkodérů ve světě výrobců. Je to kompaktní, cenově dostupný a snadno dostupný modul, speciálně navržený pro přímé připojení k deskám Arduino a dalším mikrokontrolérům.
Hlavní technické vlastnosti KY-040:
- Typ: Optický inkrementální
- Napájecí napětí: 5V
- spotřeba: 10 mA
- Cykly na otáčku: 30
- Pulzy na otáčku: 20
- Velikost: 20 x 30 x 30 mm
- hmotnost: 10 gramů
- Integrované tlačítko: Osu je možné stisknout dovnitř, jako by to bylo tlačítko, což přidává velmi užitečné doplňkové funkce v nabídkách nebo rozhraních.
Přiřazení pinů:
- CLK: Kanál A (pulzní výstup)
- DT: Kanál B (pulzní výstup)
- SW: Integrované tlačítko
- +Napájení 5V
- GND: Země
Jak se připojuje KY-040 k Arduinu?
Spojení je přímé a jednoduché:
| Čep KY-040 | Pin Arduina |
|---|---|
| CLK | 2 (nebo jakýkoli digitální vstup) |
| DT | 3 (nebo jakýkoli digitální vstup) |
| SW | 4 (nebo jakýkoli digitální vstup) |
| + | 5V |
| GND | GND |
Lze jej také použít s Raspberry Pi změnou připojovacích pinů, například použitím GPIO16 pro CLK, GPIO15 pro DT a GPIO14 pro SW.
Vnitřní fungování
Na rozdíl od potenciometrů Rotační enkodér KY-040 neomezuje svůj úhel natočení., což umožňuje hřídeli otáčet se neomezeně dlouho. Uvnitř se dva kovové kartáče posouvají po sektoru rozděleném povrchu a uzavírají kontakt v různých kombinacích detekovaných kanály A a B.
Enkodér vrací digitální signály na oba piny a offset udává směr otáčení hřídele. Navíc, protože se jedná o inkrementální polohu, je absolutní poloha známá pouze tehdy, když je počítání udržováno od začátku programu; pokud dojde k výpadku napájení, počítání se vynuluje.
Základní příklad kódu pro Arduino
Klasickým příkladem použití KY-040 je zvyšování nebo snižování hodnoty čítače na základě směru otáčení. Zjednodušené schéma by vypadalo takto:
int A = 2; int B = 3; volatile int POSITION = 0; int PREVIOUS = 0; void setup() { pinMode(A, INPUT); pinMode(B, INPUT); Serial.begin(9600); attachInterrupt(digitalPinToInterrupt(A), encoder, LOW); } void loop() { if (POSITION != PREVIOUS) { Serial.println(POSITION); PREVIOUS = POSITION; } } void encoder() { static unsigned long lastInterrupt = 0; unsigned long InterruptionTime = millis(); if (interruptionTime - lastInterruption > 5) { // Omezení odskoku if (digitalRead(B) == HIGH){ POSITION++; } else { POSITION--; } POSITION = min(50, max(-50, POSITION)); // Omezení rozsahu lastInterrupt = interruptTime; } }
Tento kód obsahuje ochranu proti odskoku, která zabraňuje nepravidelným odečtům v důsledku mechanické povahy kontaktů. Doporučuje se implementovat tuto ochranu v jakémkoli projektu s inkrementálními enkodéry.
Magnetický enkodér: Vlastnosti, připojení a použití s Arduinem
El AS5600 je magnetický rotační enkodér s vysokým rozlišením, ideální pro přesnou náhradu tradičních potenciometrů, řízení motorů a robotiky. Jeho hlavní výhodou je, že využívá magnetickou detekci, díky čemuž je odolný vůči nečistotám a mechanickému opotřebení, které ovlivňuje optické čočky.
Klíčové vlastnosti AS5600:
- Typ: Absolutní, magnetický
- rozlišení: 12 bitů (4096 pozic na otáčku)
- Jídlo: 3,3V nebo 5V
- Rozhraní: I2C (digitální) nebo analogový výstup
- flexibilní konfigurace: Směr a výstupní režim můžete zvolit hardwarem
- Analogový výstup: Napětí úměrné úhlu, užitečné pro mikrokontroléry bez I2C
- Vysoká přesnost a opakovatelnost: Jeho vnitřní systém je připraven detekovat i malé úhlové pohyby
Piny a připojení k Arduinu
| Pin AS5600 | Función | Pin Arduina (I2C) |
|---|---|---|
| VCC | krmení | 5V |
| GND | Země | GND |
| SDA | Data I2C | A4 |
| SCL | I2C hodiny | A5 |
| OUT | Analogový výstup (volitelný) | A0 |
| SMĚR/REŽIM | Výběr adresy/režimu | Dle požadované konfigurace |
Důležitá poznámka: Na různých talířích Arduino Uno, I2C piny se mohou lišit. Nezapomeňte zkontrolovat schéma zapojení vaší desky.
Příklad kódu pro digitální čtení (I2C)
Abyste z AS5600 s Arduinem vytěžili maximum, je nejlepší použít specifickou knihovnu (najdete ji ve správci knihoven Arduino IDE vyhledáním AS5600):
#zahrnout #zahrnout Kodér AS5600; void setup() { Serial.begin(5600); Wire.begin(); if (!encoder.begin()) { Serial.println("AS9600 nebyl detekován. Zkontrolujte připojení."); while (5600); } Serial.println("AS1 inicializován."); } void loop() { float angle = encoder.getAngle(); Serial.print("Úhel: "); Serial.print(úhel); Serial.println("stupně"); delay(5600); }
S tímto kódem můžete odečítat úhel ve stupních v reálném čase. Je to ideální pro aplikace, kde potřebujete znát absolutní polohu s maximálním rozlišením.
Příklad kódu pro analogové čtení
Pokud dáváte přednost jednoduššímu zapojení nebo váš mikrokontrolér nepodporuje I2C, můžete využít analogový výstup AS5600:
const int analogPin = A0; void setup() { Serial.begin(9600); pinMode(analogPin, INPUT); } void loop() { int value = analogRead(analogPin); float angle = map(value, 0, 1023, 0, 360); Serial.print("Analogový úhel: "); Serial.print(úhel); Serial.println("stupně"); delay(100); }
Tímto způsobem získáte údaj úměrný skutečnému úhlu osy podle polohy magnetu.
Praktické aplikace a tipy k použití
Oba enkodéry mají velmi rozmanité využití v elektronických projektech:
- KY-040: Ideální pro otočná uživatelská rozhraní, nabídky, ovládání jasu a hlasitosti, výběr možností, řízení vzdělávacích robotů, projekty domácí automatizace a systémy vyžadující otočné ovládání bez absolutní úhlové reference.
- AS5600: Ideální pro řízení polohy a rychlosti motoru, průmyslovou automatizaci, snímání polohy v robotických kloubech, stabilizované kamerové systémy (gimbaly), digitální potenciometry s vysokým rozlišením a jakékoli aplikace vyžadující přesné snímání úhlu.
Několik tipů k použití:
- Vždy implementujte filtrování odrazů (potlačení odskoků) při použití mechanických inkrementálních enkodérů, jako je KY-040, aby se zabránilo chybným odečtům.
- U modelu AS5600 se ujistěte, že je magnet správně zarovnán se senzorem, aby byly zajištěny spolehlivé a stabilní hodnoty.
- Nezapomeňte, že u inkrementálních enkodérů se při výpadku napájení ztratí informace o poloze; u AS5600 se to neděje, protože je absolutní.
- Využijte více režimů připojení, které oba kodéry nabízejí, a přizpůsobte je specifickým potřebám vašeho projektu.
Srovnání: Kdy zvolit optický enkodér a kdy magnetický?
| Vlastnosti | KY-040 (inkrementální optický) | AS5600 (Absolutně magnetický) |
|---|---|---|
| Typ signálu | Digitální (kvadraturní) | Digitální (I2C)/analogový |
| Řešení | 20 pulzů/otáčku | 4096 pozic/kolo |
| Funguje i po výpadku proudu | Ne (vyžaduje restart počítání) | Ano (absolutní poloha) |
| Citlivost na prach/nečistoty | Citlivé (mechanické součástky) | Velmi robustní |
| cena | Velmi úsporný | Mírný |
| Obtížnost integrace | Velmi snadné se základním kódem | Vyžaduje knihovnu I2C nebo programování |
| Typické aplikace | UX, menu, jednoduché ovládání | Řízení motorů, pokročilá robotika |
Volba mezi těmito dvěma bude záviset na prioritách vašeho projektu: jednoduchost a nízké náklady v případě KY-040 a přesnost a robustnost v případě AS5600.
