Orodha ya maudhui:

Mafunzo ya Encoder ya Rotary na Arduino: Hatua 6
Mafunzo ya Encoder ya Rotary na Arduino: Hatua 6

Video: Mafunzo ya Encoder ya Rotary na Arduino: Hatua 6

Video: Mafunzo ya Encoder ya Rotary na Arduino: Hatua 6
Video: Lesson 97: Controlling Servo Motor using Rotary Encoder and Display Angle On LCD 2024, Novemba
Anonim
Mafunzo ya Encoder ya Rotary na Arduino
Mafunzo ya Encoder ya Rotary na Arduino

Encoder ya Rotary ni sehemu ya elektroniki inayoweza kufuatilia harakati na msimamo wakati wa kuzunguka. Encoder ya Rotary hutumia sensorer za macho ambazo zinaweza kutoa kunde wakati encoder ya rotary inapozunguka. Matumizi ya kisimbuzi cha rotary kawaida kama mfuatiliaji wa mwendo wa mitambo au roboti pia inaweza kutumika kwa uteuzi wa menyu kwenye onyesho. Encoder ya Rotary ina matokeo mawili ili iweze kutofautisha kati ya hasi (CW) na chanya (CCW) na pia ina kitufe kimoja.

Hatua ya 1: Pulse Flow ya Rotary Encoder

Mtiririko wa Pulse wa Encoder ya Rotary
Mtiririko wa Pulse wa Encoder ya Rotary

Mtiririko wa kunde unaotokana na usimbuaji wa rotary ufuatao ni kama picha hapo juu.

Hatua ya 2: Pinout ya Rotary Encoder

Ujazo wa Encoder ya Rotary
Ujazo wa Encoder ya Rotary

Ufafanuzi:

  • GND GND
  • + 5V
  • Kitufe cha SW cha kisimbuzi cha rotary kinapobanwa
  • Takwimu za DT
  • Takwimu za CLK 2

Moja ya pini za DT au CLK lazima ziunganishwe na mguu wa kukatiza wa Arduino Uno, au zote mbili za DT na CLK zimeunganishwa kwenye pini ya kukatiza.

Hatua ya 3: Mpangilio

Mpangilio
Mpangilio
  • GND na GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW na PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Hatua ya 4: Kanuni

Kanuni
Kanuni

Katika mafunzo yafuatayo, ambayo yatatumika kama usumbufu ni PIN 2 ya Arduino Uno, wakati PIN 3 inatumiwa tu kama pembejeo la kawaida.

#fafanua encoder0PinA 2 # fafanua encoder0PinB 3 #fafanua encoder0Btn 4 int encoder0Pos = 0; kuanzisha batili () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, INPUT_PULLUP); ambatisha Kukatiza (0, doEncoder, MABADILIKO); } int valRotary, mwishoValRotary; kitanzi batili () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Printa ya serial (valRotary); ikiwa (valRotary> lastValRotary) {Serial.print ("CW"); } ikiwa (valRotary {

Serial.print ("CCW");

} lastValRotary = valRotary; Serial.println (""); kuchelewesha (250); } batili DoEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } mwingine {encoder0Pos--; } valRotary = encoder0Pos / 2.5; }

Katika mstari wa 10 wa mchoro hapo juu hutumiwa kuwezesha usumbufu wa pini 2 Arduino Uno. Katika "doEncoder" kazi imehesabiwa kutoka kwa encoder ya rotary. Ikiwa dhamana ya DT na CLK (pinga kukatiza kwa Arduino Uno) ni sawa, basi ubadilishaji wa "encoder0Pos" utaongezwa / kuongezwa, pamoja na hali hiyo, ubadilishaji wa "encoder0Pos" hupunguzwa.

Hatua ya 5: Ufafanuzi

Thamani ya ValRotary ni thamani ya idadi ya hatua ambazo zimekuwa zikiendesha. Thamani ya ValRotary hupatikana kutoka kwa usomaji wa sensa ya encoder ya sensorer iliyogawanywa na 2.5. Thamani ya 2.5 hupatikana kutoka kwa jaribio, kwani hatua moja ya kisimbuzi cha rotary inaweza kuzidi 1, kwa hivyo gawanya na 2.5 kwa thamani yake kulingana na upitaji na pia uongezeo wa ucheleweshaji wa kusoma.

Wakati wa laini 19-25 ni mpango wa kuamua ikiwa encoder ya rotary CW au CCW. Ufafanuzi wa mistari 19-25 ni wakati usomaji wa kisimbuzi wa sasa wa rotary ni mkubwa kuliko data ya hapo awali ya rotary kisha iliyoonyeshwa kama CW. Ingawa usomaji wa sasa ni mdogo kuliko usomaji uliopita basi inasemekana kama CCW.

Hatua ya 6: Pato

Pato
Pato

1 = thamani ya kitufe cha kuanza cha rotary wakati haijasisitizwa

Ilipendekeza: