Cov txheej txheem:

Yooj Yim Rotary Decoder: 4 Cov Kauj Ruam
Yooj Yim Rotary Decoder: 4 Cov Kauj Ruam

Video: Yooj Yim Rotary Decoder: 4 Cov Kauj Ruam

Video: Yooj Yim Rotary Decoder: 4 Cov Kauj Ruam
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Lub Xya hli ntuj
Anonim
Image
Image
Yooj Yim Teb Decoder
Yooj Yim Teb Decoder

Cov lus qhia no piav qhia txog txoj hauv kev yooj yim ntawm kev txiav txim siab cov lej sib law liag siv Arduino Uno R3.

Cov txheej txheem software me me tau siv los suav tus lej ntawm kev hloov pauv, tshem tawm kev sib cuag bounce, thiab txiav txim siab qhov kev hloov pauv. Cheebtsam ntxiv thiab saib cov ntxhuav tsis xav tau.

Kev cuam tshuam thiab tsis cuam tshuam ntawm cov cai tau muab.

Qhov cuam tshuam ntawm cov cai tsuas xav tau ib tus pin cuam tshuam xwb.

Dluab:

  • Daim duab qhib qhia pom lub khoos phis tawj sib dhos.
  • Cov vijtsam txhaj tshuaj qhia tus lej rau qhov cuam tshuam version thiab suav thaum lub cav encoder tau tig raws lub clockwise thiab counter clockwise.
  • Cov vis dis aus qhia qhov suav thaum lub sij hawm tig nrawm.

Kauj Ruam 1: Daim duab Circuit Court

Daim duab Circuit Court
Daim duab Circuit Court

Daim duab kab hluav taws xob txuas hluav taws xob tau qhia hauv daim duab 1.

Cov xov hlau jumper tau muab ncaj qha ncaj qha rau tus pin encoder.

Sib pauv ob txoj xov xiav yog hais tias suav cov lus qhia thim rov qab.

Kauj Ruam 2: Daim Ntawv Teev Npe

Cov hauv qab no tau txais los ntawm

  • 1 tsuas yog Arduino UNO R3 nrog USB Cable.
  • 1 tsuas yog cov lej sib hloov ua ntu zus (EC11 lossis sib npaug) nrog hloov.
  • 1 tsuas yog pob qhov rooj kom haum rau cov ncej.
  • 3 tsuas yog Arduino txiv neej-rau-txiv neej jumper xov hlau.

Kauj ruam 3: Txoj kev xav

Txoj kev xav
Txoj kev xav

Sequential rotary encoders tsim ob lub voos xwmfab txhua qhov uas tau txav chaw los ntawm 90 degrees raws li qhia hauv daim duab 1.

Cov qauv kev xav ntawm Kev Sib Tham A thiab Sib cuag B sib txawv thaum lub taub hau tau tig raws txoj kab rov tav (CW) thiab rov qab raws lub moos (CCW) los ntawm txoj haujlwm 1 txog 6.

Cov txheej txheem kev txiav txim siab qhov kev taw qhia ntawm kev sib hloov suav nrog:

  • kho vajtse
  • ntxaib cuam tshuam
  • qauv saib ntxhuav

Txoj haujlwm no siv cov txheej txheem software uas tsis xav tau cov ntxhuav saib. [1]

Kev taw qhia

Hloov chaw ntawm saib cov qauv tsim tawm los ntawm Kev Sib cuag A thiab Sib cuag B cia siab rau Kev Sib Tham A.

Yog tias peb ua piv txwv hu B tom qab txhua qhov kev sib cuag A hloov peb nco tias:

  • Sib cuag A thiab Sib cuag B muaj cov xwm txheej tsis sib thooj thaum tus encoder tig CW
  • Hu rau A thiab Tiv tauj B muaj tib lub xeev kev xav thaum tus lej nkag tau tig CCW

Cov cai tiag:

// ----- Suav cov kev hloov pauv

CurrentStateA = stateContactA (); yog (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB)); yog (CurrentStateA == CurrentStateB) Suav ++; yog (CurrentStateA! = CurrentStateB) Suav-- LastStateA = CurrentStateA; }

Txoj kev no muaj cov txiaj ntsig zoo hauv qab no:

  • tsis xav saib cov ntxhuav
  • tsuas yog ib txoj kab cuam tshuam nkaus xwb

Tshaj tawm

Txhua tus khoos phis tawj encoders raug kev txom nyem los ntawm "kev sib cuag thaws rov los".

Yog tias kev sib cuag sib hloov tsis ua/ua kom huv nws lub xeev cov laj thawj yuav oscillate nrawm los ntawm HIGH mus rau LOW kom txog rau thaum qhov kev sib cuag hloov mus. Qhov no ua rau suav tsis tseeb.

Ib txoj hauv kev rau kev tiv thaiv kev tiv tauj thaws yog ntxiv lub capacitor me me hla txhua qhov kev sib cuag. Lub capacitor thiab cuam tshuam rub-up resistor tsim ib qho kev sib xyaw uas ua tau zoo luv luv zaus thiab tso cai rau qhov hloov hluav taws xob nce/poob zoo.

Qhov tsis zoo ntawm txoj hauv kev no yog qhov kev hloov pauv tuaj yeem ploj yog tias lub cav nkag tau tig nrawm.

Software Debouncing

Txoj kev no siv ob lub txee (Qhib, Kaw) uas tau teeb tsa rau xoom. [2]

Thaum pom qhov kev hloov pauv ntawm Hu A:

  • Kev xaiv tsa tsis tu ncua Hu rau A.
  • Ua kom Qhib Lub Tuam Txhab, thiab rov qhib Lub Tuam Txhab Kaw, thaum twg Hu rau A yog HIGH.
  • Ua kom Lub Tsev Kaw, thiab rov qhib Lub Tuam Txhab Qhib, thaum twg hu rau A yog LOW.
  • Tawm ntawm lub voj thaum ib qho ntawm cov suav nce mus txog qhov suav ua ntej. Peb tab tom nrhiav rau lub sijhawm nyob hauv lub xeev ruaj khov tom qab muaj kev sib cuag.

Cov cai tiag:

// ----- Debounce Contact A

thaum (1) {yog (digitalRead (ContactA)) {// ----- ContactA Qhib Kaw = 0; // Tsis muaj qhov sib txawv sib xyaw ua ke Qhib ++; // Sib koom yog tias (Qhib> MaxCount) rov qab HIGH; } lwm { / ----- ContactA raug kaw Qhib = 0; // Tsis muaj qhov sib txawv sib xyaw ua ke Kaw ++; // Sib koom ua ke yog tias (Kaw> MaxCount) rov LOW; }}

Tsis tas yuav tsum tshaj tawm Kev Sib cuag B raws li Kev Sib Tham A thiab Kev Sib Txuas B hloov pauv tsis ua ke.

Suav

Lub tshuab "tshem tawm" ua tau zoo ob npaug rau koj li ob suav tau sau npe ntawm nyem (saib daim duab 1).

Tus naj npawb ntawm "cov neeg raug ntes" tuaj yeem txiav txim siab siv modulo 2 cov lej raws li qhia hauv qab no.

Cov cai tiag:

// ----- Suav "detents"

yog (Suav % 2 == 0) {Serial.print ("Suav:"); Serial.println (Suav / 2); }

Cov neeg ua tim khawv

Cov ntaub ntawv ntxiv tuaj yeem nrhiav tau ntawm:

[1]

howtomechatronics.com/tutorials/arduino/ro…

[2]

newbiehack.com/ButtonorSwitchDebounceinSof…

Kauj ruam 4: Software

Txoj haujlwm no xav tau cov ntawv tshiab ntawm Ardino Uno R3 IDE (kev txhim kho ib puag ncig ib puag ncig) uas muaj los ntawm

Rub tawm txhua ntawm ob daim duab hauv qab no Arduino (txuas nrog)

  • rotary_encoder_1.ino (tsab ntawv xaiv tsa)
  • rotary_encoder_2.no (cuam tshuam version)

Nyem ob npaug rau ntawm qhov koj xav tau thiab ua raws li cov lus qhia ntawm lub vijtsam.

Txaus siab rau …

Nyem qhov no mus saib kuv lwm cov ntawv qhia.

Pom zoo: