ዝርዝር ሁኔታ:

የተሟላ የአርዱዲኖ ሮታሪ መፍትሄ 5 ደረጃዎች
የተሟላ የአርዱዲኖ ሮታሪ መፍትሄ 5 ደረጃዎች

ቪዲዮ: የተሟላ የአርዱዲኖ ሮታሪ መፍትሄ 5 ደረጃዎች

ቪዲዮ: የተሟላ የአርዱዲኖ ሮታሪ መፍትሄ 5 ደረጃዎች
ቪዲዮ: በ30 ቀን እራስን መለወጥ Change Yourself in 30 Days 2024, ሀምሌ
Anonim
የተሟላ የአርዱዲኖ ሮታሪ መፍትሄ
የተሟላ የአርዱዲኖ ሮታሪ መፍትሄ

የሮታሪ ኢንዶክተሮች ለኤሌክትሮኒክ ፕሮጀክቶች የሚዞሩ የቁጥጥር ቁልፎች ናቸው ፣ ብዙውን ጊዜ ከአርዱዲኖ ቤተሰብ ማይክሮ መቆጣጠሪያ ጋር ያገለግላሉ። ግቤቶችን ለማስተካከል ፣ ምናሌዎችን ለማሰስ ፣ ዕቃዎችን በማያ ገጽ ላይ ለማንቀሳቀስ ፣ ማንኛውንም ዓይነት እሴቶችን ለማቀናበር ሊያገለግሉ ይችላሉ። እነሱ ለፖታቲሞሜትሮች የተለመዱ ምትክዎች ናቸው ፣ ምክንያቱም እነሱ በበለጠ በትክክል እና ወሰን ሊሽከረከሩ ስለሚችሉ ፣ በአንድ ጊዜ አንድ ልዩ እሴት ይጨምራሉ ወይም ይቀንሳሉ ፣ እና ብዙውን ጊዜ ለምርጫ ዓይነት ተግባራት በቀላሉ ሊገጣጠም ከሚችል ማብሪያ ጋር ይዋሃዳሉ። እነሱ በሁሉም ቅርጾች እና መጠኖች ይመጣሉ ፣ ግን ዝቅተኛው የዋጋ ክልል ከዚህ በታች እንደተገለፀው ለመገናኘት አስቸጋሪ ነው።

ስለ ሮታሪ ኢንኮደሮች የሥራ ዝርዝሮች እና የአጠቃቀም ሁነታዎች ፣ እና እንዴት ብዙ የናሙና ኮዶች እና ቤተመፃህፍት ስለመጠቀም ስፍር ቁጥር የሌላቸው ጽሑፎች አሉ። ብቸኛው ችግር አንዳቸውም በዝቅተኛ የዋጋ ክልል የቻይና ሮታሪ ሞጁሎች 100% ትክክል አለመሥራታቸው ነው።

ደረጃ 1: በውስጠኛው ውስጥ የ Rotary Encoders

በውስጠኛው ውስጥ የሮታሪ ኢንኮዲዶች
በውስጠኛው ውስጥ የሮታሪ ኢንኮዲዶች
በውስጠኛው ውስጥ የሮታሪ ኢንኮዲዶች
በውስጠኛው ውስጥ የሮታሪ ኢንኮዲዶች
በውስጠኛው ውስጥ የሮታሪ ኢንኮዲዶች
በውስጠኛው ውስጥ የሮታሪ ኢንኮዲዶች

የመቀየሪያው የ rotary ክፍል ሶስት ፒን (እና ለአማራጭ የመቀየሪያ ክፍል ሁለት ተጨማሪ) አለው። አንደኛው የጋራ መሬት (ጥቁር ጂኤንዲ) ፣ ሌላኛው ሁለቱ ጉብታ ሲዞር አቅጣጫን ለመወሰን ነው (እነሱ ብዙውን ጊዜ ሰማያዊ CLK እና ቀይ DT ተብለው ይጠራሉ)። ሁለቱም እነዚህ ከማይክሮ መቆጣጠሪያው የ PULLUP ግቤት ፒን ጋር ተያይዘዋል ፣ ይህም ደረጃውን ከፍ ያለ ነባሪ ንባብ ያደርጋቸዋል። ጉብታ ወደ ፊት (ወይም በሰዓት አቅጣጫ) ሲዞር ፣ መጀመሪያ ሰማያዊው CLK ወደ LOW ደረጃ ዝቅ ይላል ፣ ከዚያ ቀይ DT ይከተላል። ወደ ፊት በማዞር ፣ ሰማያዊ CLK ወደ HIGH ይመለሳል ፣ ከዚያ የተለመደው የ GND ጠጋኝ ሁለቱንም የግንኙነት ካስማዎች ሲተው ፣ ቀይ DT እንዲሁ ወደ ከፍተኛ ይመለሳል። ስለዚህ አንድ ሙሉ ምልክት FWD (ወይም በሰዓት አቅጣጫ) ማጠናቀቅ። ተመሳሳይ ወደ ሌላኛው አቅጣጫ BWD (ወይም በተቃራኒ ሰዓት አቅጣጫ) ይሄዳል ፣ ግን አሁን ቀይ በመጀመሪያ ይወድቃል ፣ እና በሁለቱ ደረጃዎች ምስሎች ላይ እንደሚታየው ሰማያዊ በመጨረሻ ወደ ኋላ ይመለሳል።

ደረጃ 2 - ለብዙዎች እውነተኛ ሥቃይ የሚያስከትል መከራ

ለብዙዎች እውነተኛ ሥቃይ የሚያስከትል መከራ
ለብዙዎች እውነተኛ ሥቃይ የሚያስከትል መከራ
ለብዙዎች እውነተኛ ሥቃይ የሚያስከትል መከራ
ለብዙዎች እውነተኛ ሥቃይ የሚያስከትል መከራ
ለብዙዎች እውነተኛ ሥቃይ የሚያስከትል መከራ
ለብዙዎች እውነተኛ ሥቃይ የሚያስከትል መከራ

ለአርዱዲኖ የትርፍ ጊዜ ማሳለፊያዎች የተለመደ ችግር ፣ ያ ርካሽ የሮታሪ ኢንኮደር ሞጁሎች በውጤት ደረጃዎች ውስጥ ተጨማሪ ለውጦችን የሚጨምሩ ፣ ይህም ተጨማሪ እና የተሳሳተ አቅጣጫ ቆጠራ ንባቦችን ያስከትላል። ይህ እንከን የለሽ ቆጠራን ይከላከላል እና እነዚህን ሞጁሎች ወደ ትክክለኛ የ rotary ፕሮጄክቶች ማዋሃድ የማይቻል ያደርገዋል። እነዚህ ተጨማሪ ዕድገቶች የሚከሰቱት በግንኙነት ካስማዎች ላይ ባሉት ጥገናዎች ሜካኒካዊ እንቅስቃሴዎች ነው ፣ እና ተጨማሪ capacitors ን እንኳን ሙሉ በሙሉ ሊያስወግዷቸው አይችሉም። Bounces በሞላ ዥረት ዑደቶች ውስጥ በማንኛውም ቦታ ሊታይ ይችላል ፣ እና በምስሎቹ ላይ በእውነተኛ የሕይወት ሁኔታዎች ተገልፀዋል።

ደረጃ 3 - የመጨረሻ ግዛት ማሽን (ኤፍኤስኤም) መፍትሄ

Finite State Machine (FSM) መፍትሄ
Finite State Machine (FSM) መፍትሄ

ምስሉ ለሁለቱም ፒኖች (ሰማያዊ CLK እና ቀይ DT) ፣ ለሁለቱም ለትክክለኛ እና ለሐሰት ጉርሻዎች ሊሆኑ የሚችሉ የደረጃ ለውጦችን ሙሉ የስቴት ቦታ ያሳያል። በዚህ የስቴት ማሽን ላይ በመመስረት ሁል ጊዜ 100% በትክክል የሚሰራ የተሟላ መፍትሄ በፕሮግራም ሊሰራ ይችላል። በዚህ መፍትሄ ውስጥ የማጣሪያ መዘግየቶች አስፈላጊ ስለሌለ ፣ እሱ ደግሞ በተቻለ ፍጥነት ነው። የፒንሶቹ ግዛት ቦታን ከሥራ ሁኔታ መለየት ሌላው ጥቅም አንድ ሰው ሁለቱንም የምርጫ ወይም ሁነታን ለራሱ ፍላጎት ማመልከት መቻሉ ነው። የድምፅ መስጫ ወይም ማቋረጦች በፒን ላይ የደረጃ ለውጦችን መለየት ይችላሉ እና የተለየ የዕለት ተዕለት ሁኔታ አሁን ባለው ሁኔታ እና በደረጃ ለውጦች ተጨባጭ ክስተቶች ላይ በመመስረት አዲሱን ሁኔታ ያሰላል።

ደረጃ 4: የአርዲኖ ኮድ

የአርዱዲኖ ኮድ
የአርዱዲኖ ኮድ

ከዚህ በታች ያለው ኮድ በተከታታይ ማሳያ ላይ የ FWD እና BWD መዥገሮችን ይቆጥራል እንዲሁም የአማራጭ የመቀየሪያ ተግባሩን ያዋህዳል።

// ፒተር Cururgay 2019-04-10

// ወደ አርዱዲኖ ወደቦች የተቀረጹ የ rotary ፒኖች

#ገላጭ SW 21 #ገላጭ CLK 22 #ዲቲ 23 ን ይግለጹ

// በ rotary የተስተካከለው የቆጣሪው የአሁኑ እና ቀዳሚው እሴት

int curVal = 0; int prevVal = 0;

// ሰባት የ FSM ግዛቶች (ውሱን የስቴት ማሽን)

#ጥራት IDLE_11 0 #ገላጭ SCLK_01 1 #ገላጭ SCLK_00 2 #ገላጭ SCLK_10 3 #ጥራት SDT_10 4 #ጥራት SDT_00 5 #ጥራት SDT_01 6 int state = IDLE_11;

ባዶነት ማዋቀር () {

Serial.begin (250000); Serial.println ("ጀምር …"); // ደረጃ HIGH ለሁሉም ፒን ፒን ሞዶ (SW ፣ INPUT_PULLUP) ነባሪ ይሆናል። pinMode (CLK ፣ INPUT_PULLUP); pinMode (DT ፣ INPUT_PULLUP); // ሁለቱም CLK እና DT ለሁሉም የደረጃ ለውጦች ዓባሪ መቋረጥ (digitalPinToInterrupt (CLK) ፣ rotaryCLK ፣ CHANGE) ማቋረጦች ያስነሳሉ ፤ አባሪ ማቋረጫ (digitalPinToInterrupt (DT) ፣ rotaryDT ፣ CHANGE); }

ባዶነት loop () {

// (digitalRead (SW) == LOW) {Serial.println ("Pressed") ከሆነ ወደ አንዳንድ የማዞሪያ ኢንኮደሮች የተዋሃደውን የአማራጭ መቀየሪያ አያያዝ ፤ ሳለ (! digitalRead (SW)); } // ማንኛውም (በ curVal! = PrevVal) {Serial.println (curVal) ከሆነ በመቆጣጠሪያ እሴት ላይ ማንኛውም ለውጥ በ Serial Monitor ውስጥ ይታያል። prevVal = curVal; }}

// የስቴት ማሽን ሽግግሮች ለ CLK ደረጃ ለውጦች

ባዶ rotaryCLK () {ከሆነ (digitalRead (CLK) == LOW) {if (state == IDLE_11) state = SCLK_01; ሌላ ከሆነ (ሁኔታ == SCLK_10) ሁኔታ = SCLK_00; ሌላ ከሆነ (ሁኔታ == SDT_10) ሁኔታ = SDT_00; } ሌላ {ከሆነ (ሁኔታ == SCLK_01) ሁኔታ = IDLE_11; ሌላ ከሆነ (ሁኔታ == SCLK_00) ሁኔታ = SCLK_10; ሌላ ከሆነ (ሁኔታ == SDT_00) ሁኔታ = SDT_10; ሌላ ከሆነ (ሁኔታ == SDT_01) {state = IDLE_11; curVal--; }}}

// የስቴት ማሽን ሽግግሮች ለዲቲ ደረጃ ለውጦች

ባዶ rotaryDT () {ከሆነ (digitalRead (DT) == LOW) {if (state == IDLE_11) state = SDT_10; ሌላ ከሆነ (ሁኔታ == SDT_01) ግዛት = SDT_00; ሌላ ከሆነ (ሁኔታ == SCLK_01) ሁኔታ = SCLK_00; } ሌላ {ከሆነ (state == SDT_10) state = IDLE_11; ሌላ ከሆነ (ሁኔታ == SDT_00) ሁኔታ = SDT_01; ሌላ ከሆነ (ሁኔታ == SCLK_00) ሁኔታ = SCLK_01; ሌላ ከሆነ (ሁኔታ == SCLK_10) {state = IDLE_11; curVal ++; }}}

ደረጃ 5 - እንከን የለሽ ውህደት

ከተለያዩ አልፎ አልፎ የሚነሱ ውጤቶች ባላቸው ዝቅተኛ ክልል የ rotary encoder እንኳን የ FSM መፍትሔ በትክክል እና በፍጥነት እንደሚሠራ በተያያዘው ቪዲዮ ውስጥ ማረጋገጥ ይችላሉ።

የሚመከር: