Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Rotačný snímač je elektronická súčiastka schopná monitorovať pohyb a polohu pri otáčaní. Rotačný snímač používa optické snímače, ktoré môžu pri otáčaní snímača generovať impulzy. Na výber ponuky na displeji je možné použiť aj aplikáciu rotačného snímača, spravidla ako mechanického alebo robotického monitora pohybu. Rotačný snímač má dva výstupy, aby mohol rozlišovať medzi negatívnym (CW) a pozitívnym (CCW) otáčaním a má tiež jediné tlačidlo.
Krok 1: Pulzný tok rotačného enkodéra
Pulzný tok generovaný nasledujúcim rotačným snímačom je ako na obrázku vyššie.
Krok 2: Pinout rotačného enkodéra
Vysvetlenie:
- GND GND
- + + 5V
- Tlačidlo SW rotačného snímača pri stlačení
- Údaje DT
- Údaje CLK 2
Jeden z pinov DT alebo CLK musí byť pripojený k pätke prerušenia Arduino Uno, alebo obidva DT a CLK sú pripojené k kolíku prerušenia.
Krok 3: Schéma
- GND a GND Arduino Uno
- + à + 5V Arduino Uno
- SW à PIN 4 Arduino Uno
- DT à PIN 3 Arduino Uno
- CLK à PIN2 Arduino Uno
Krok 4: Kód
V nasledujúcom návode, ktorý bude použitý ako prerušenie, je PIN 2 Arduino Uno, zatiaľ čo PIN 3 sa používa iba ako bežný vstup.
#definovať kodér0PinA 2 #definovať kodér0PinB 3 #definovať kodér0Btn 4 int kodér0Pos = 0; void setup () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {
Serial.print („CCW“);
} lastValRotary = valRotary; Serial.println (""); oneskorenie (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = kodér0Pos/2,5; }
V riadku 10 vyššie uvedenej skice sa používa na povolenie prerušenia pinu 2 Arduino Uno. Vo funkcii "doEncoder" sa počíta z rotačného snímača. Ak je hodnota DT a CLK (prerušenie kolíka Arduino Uno) rovnaká, potom sa premenná „encoder0Pos“zvýši / pridá, okrem tejto podmienky sa zníži aj premenná „encoder0Pos“.
Krok 5: Vysvetlenie
Hodnota ValRotary je hodnota počtu spustených krokov. Hodnota ValRotary sa získa z hodnoty čítanej na snímači rotačného senzora delenej 2,5. Z testu sa získa hodnota 2,5, pretože jeden krok rotačného snímača môže prekročiť 1, takže jeho hodnotu delte 2,5 podľa perstepu a tiež pridania oneskorenia čítania.
Kým na linke 19 - 25 je program na určenie, či rotačný rotačný snímač CW alebo CCW. Vysvetlenie riadkov 19 - 25 je, keď je aktuálny údaj rotačného snímača väčší ako predchádzajúce rotačné údaje potom vyjadrené ako CW. Pokiaľ je aktuálna hodnota menšia ako predchádzajúca, potom sa uvádza ako CCW.
Krok 6: Výstup
1 = hodnota štartovacieho tlačidla rotátora, keď nebol stlačený