Obsah:

Výukový program rotačného enkodéra s Arduinom: 6 krokov
Výukový program rotačného enkodéra s Arduinom: 6 krokov

Video: Výukový program rotačného enkodéra s Arduinom: 6 krokov

Video: Výukový program rotačného enkodéra s Arduinom: 6 krokov
Video: Как построить ПЛК Arduino с модулем часов реального времени и поворотным энкодером 2024, Júl
Anonim
Výukový program rotačného enkodéra s Arduinom
Výukový program rotačného enkodéra s Arduinom

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 rotačného enkodéra
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

Pinout rotačného enkodéra
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

Schematický
Schematický
  • 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

Kód
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

Výkon
Výkon

1 = hodnota štartovacieho tlačidla rotátora, keď nebol stlačený

Odporúča: