Obsah:

Výukový program rotačního kodéru s Arduinem: 6 kroků
Výukový program rotačního kodéru s Arduinem: 6 kroků

Video: Výukový program rotačního kodéru s Arduinem: 6 kroků

Video: Výukový program rotačního kodéru s Arduinem: 6 kroků
Video: Jak postavit Arduino PLC s modulem hodin reálného času a rotačním kodérem 2024, Červenec
Anonim
Výukový program rotačního kodéru s Arduinem
Výukový program rotačního kodéru s Arduinem

Rotační kodér je elektronická součástka schopná sledovat pohyb a polohu při otáčení. Rotační kodér využívá optické senzory, které mohou generovat impulsy při otáčení rotačního kodéru. Pro výběr nabídky na displeji lze také použít aplikaci rotačního kodéru obvykle jako mechanický nebo robotický monitor pohybu. Rotační kodér má dva výstupy, takže dokáže rozlišit mezi negativní (CW) a pozitivní (CCW) rotaci a má také jediné tlačítko.

Krok 1: Pulzní tok rotačního kodéru

Pulzní tok rotačního kodéru
Pulzní tok rotačního kodéru

Pulzní tok generovaný následujícím rotačním kodérem je jako na obrázku výše.

Krok 2: Pinout rotačního kodéru

Pinout rotačního kodéru
Pinout rotačního kodéru

Vysvětlení:

  • GND GND
  • + + 5V
  • Tlačítko SW rotačního kodéru při stisknutí
  • Data DT
  • Data CLK 2

Jeden z pinů DT nebo CLK musí být připojen k patce přerušení Arduino Uno, nebo oba DT a CLK jsou připojeny k kolíku přerušení.

Krok 3: Schéma

Schéma
Schéma
  • GND à 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 následujícím tutoriálu, který bude použit jako přerušení, je PIN 2 Arduino Uno, zatímco PIN 3 se používá pouze jako běžný vstup.

#definovat kodér0PinA 2 #definovat kodér0PinB 3 #definovat kodér0Btn 4 int kodér0Pos = 0; neplatné nastavení () {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 (""); zpoždění (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = kodér0Pos/2.5; }

V řádku 10 náčrtu výše se používá k povolení přerušení pin 2 Arduino Uno. Ve funkci "doEncoder" se vypočítává z rotačního kodéru. Pokud je hodnota DT a CLK (přerušení pinu Arduino Uno) stejná, pak bude proměnná „encoder0Pos“zvýšena / přidána, kromě této podmínky bude proměnná „encoder0Pos“snížena.

Krok 5: Vysvětlení

Hodnota ValRotary je hodnota počtu kroků, které byly spuštěny. Hodnota ValRotary je získána z hodnoty čtení snímače rotačního snímače děleno 2,5. Z testu se získá hodnota 2,5, protože jeden krok rotačního kodéru může překročit 1, takže jeho hodnotu vydělte 2,5 podle perstepu a také přidání zpoždění čtení.

Zatímco na řádku 19 - 25 je program, který určuje, zda rotační rotační kodér CW nebo CCW. Vysvětlení řádků 19 - 25 je, když je aktuální hodnota rotačního kodéru větší než předchozí rotační data, pak vyjádřená jako CW. Zatímco pokud je aktuální hodnota menší než předchozí, pak je uvedena jako CCW.

Krok 6: Výstup

Výstup
Výstup

1 = hodnota startovacího tlačítka rotátoru, pokud nebyl stisknut

Doporučuje: