ዝርዝር ሁኔታ:

ሮታሪ ኢንኮደር - ተረድተው ይጠቀሙበት (አርዱinoኖ/ሌላ Μ ተቆጣጣሪ) 3 ደረጃዎች
ሮታሪ ኢንኮደር - ተረድተው ይጠቀሙበት (አርዱinoኖ/ሌላ Μ ተቆጣጣሪ) 3 ደረጃዎች

ቪዲዮ: ሮታሪ ኢንኮደር - ተረድተው ይጠቀሙበት (አርዱinoኖ/ሌላ Μ ተቆጣጣሪ) 3 ደረጃዎች

ቪዲዮ: ሮታሪ ኢንኮደር - ተረድተው ይጠቀሙበት (አርዱinoኖ/ሌላ Μ ተቆጣጣሪ) 3 ደረጃዎች
ቪዲዮ: የመዳፊት ማሸብለል ዊል ሮታሪ ኢንኮደርን እንደገና ጥቅም ላይ ማዋል እና በአርዱዪኖ ናኖ መሞከር 2024, ሀምሌ
Anonim
ሮታሪ ኢንኮደር - ተረድተው ይጠቀሙበት (አርዱinoኖ/ሌላ Μ ተቆጣጣሪ)
ሮታሪ ኢንኮደር - ተረድተው ይጠቀሙበት (አርዱinoኖ/ሌላ Μ ተቆጣጣሪ)

ሮታሪ ኢንኮደር የማዞሪያ እንቅስቃሴን ወደ ዲጂታል ወይም አናሎግ መረጃ የሚቀይር ኤሌክትሮ-ሜካኒካል መሣሪያ ነው። በሰዓት አቅጣጫ ወይም በተቃራኒ ሰዓት አቅጣጫ መዞር ይችላል። ሁለት ዓይነት የ rotary encoders ዓይነቶች አሉ -ፍፁም እና አንጻራዊ (ጭማሪ) ኢንኮደሮች።

ፍፁም ኢንኮደር ከአሁኑ ዘንግ ማእዘን ጋር ተመጣጣኝ የሆነ እሴት ሲያወጣ ፣ አንድ ተጨማሪ ኮዴደር የሾላውን ደረጃ እና አቅጣጫውን ያወጣል። (በዚህ ጉዳይ ላይ እኛ ተጨማሪ ኢንኮደር አለን)

በአንድ የኤሌክትሪክ ሞዱል ውስጥ ሁለት ተግባሮችን መጠቀም ስለቻሉ የሮታሪ ኢንኮደሮች የበለጠ ተወዳጅ እየሆኑ መጥተዋል - ኦፕሬሽኖችን እና ቀለል ያለ ማዞሪያን ለማሰስ ቀላል መቀየሪያ ፣ ለምሳሌ። በምናሌ በኩል።

ዘንግ በሚሽከረከርበት ጊዜ እየጨመረ የሚሄድ የ rotary ኢንኮደር ሁለት የውጤት ምልክቶችን ያመነጫል። በአቅጣጫው ላይ በመመስረት አንደኛው ምልክት ሌላውን ይመራል። (ከስር ተመልከት)

ደረጃ 1 የውጤት መረጃን መረዳት

የውጤት መረጃን መረዳት
የውጤት መረጃን መረዳት

እርስዎ የኢኮኮደር ዘንግ በሰዓት አቅጣጫ መሽከርከር ሲጀምር እንደሚመለከቱት ፣ የውጤት ሀ መጀመሪያ ወደ LOW ዝቅ ይላል እና የውጤት ቢ ይከተላል። በተቃራኒ ሰዓት አቅጣጫ ቀዶ ጥገናው ወደ ተቃራኒው ይቀየራል።

አሁን ይህንን በእኛ µ ተቆጣጣሪ (አርዱዲኖ ናኖን እጠቀም ነበር) ላይ መተግበር አለብን።

ደረጃ 2 ወረዳውን ይገንቡ

ወረዳውን ይገንቡ
ወረዳውን ይገንቡ
ወረዳውን ይገንቡ
ወረዳውን ይገንቡ

እኔ እንደገለፅኩት ውፅዓቱ ከፍ ያለ እና ዝቅተኛ ጎን እንዲፈጥሩ። በ ‹ተቆጣጣሪው› የውሂብ ፒን ሀ እና ቢ ላይ ንፁህ HIGH ን ለማግኘት የ “Up-Up resistors” ን ማከል አለብን። የተለመደው ፒን ሲ ለ LOW ጎኑ በቀጥታ ወደ መሬት ይሄዳል።

ስለ ውስጣዊ ማብሪያ (ግፊት-ቁልፍ) መረጃ ለማግኘት ሌሎቹን ሁለት ፒን እንጠቀማለን። ከመካከላቸው አንዱ ወደ ቪሲሲ ሌላኛው ወደ Pin ተቆጣጣሪ ፒን ዳታ ፒን ይሄዳል። እንዲሁም ንጹህ LOW ን ለማግኘት ወደ ታች ፒን (Pull-Down Resistor) ወደ የውሂብ ፒን ማከል አለብን።

እንዲሁም የእርስዎን µ ተቆጣጣሪ ውስጣዊ መጎተት እና ወደታች መጎተቻ መቆጣጠሪያዎችን መጠቀም ይቻላል!

በእኔ ሁኔታ ጥይቱ የሚከተለውን ይመስላል

  • +3 ፣ 3V => +3 ፣ 3 ቪ (አርዱinoኖ) (እንዲሁም +5 ቪ ይቻላል)
  • GND => GND (አርዱinoኖ)
  • ሀ => ፒን 10
  • ለ =>

    ፒን

    11

  • C => GND
  • SW =>

    ፒን

    12

ደረጃ 3 - ኮዱን መጻፍ

int pinA = 10; // የውስጥ መቀየሪያ A int pinB = 11; // የውስጥ መቀየሪያ B int pinSW = 12; // ማብሪያ (ኢንኮደር ተጭኗል) int encoderPosCount = 0; // በዜሮ ይጀምራል ፣ ከፈለጉ ይቀይሩ

int positionval;

bool switchval; int mrotate የመጨረሻው; int mrotate;

ባዶነት ማዋቀር () {

int mrotateLast = digitalRead (pinA); Serial.begin (9600); መዘግየት (50); }

ባዶነት loop () {readencoder (); ከሆነ (readwitch () == 1) {Serial.println ("Switch = 1"); }}

int readencoder () {

mrotate = digitalRead (pinA); ከሆነ (ሞሮቴቴ! Serial.println ("በሰዓት አቅጣጫ ዞሯል"); } ሌላ {// ማብሪያ ቢ መጀመሪያ ተቀይሯል-> በተቃራኒ ሰዓት አቅጣጫ መቀየሪያ encoserPosCount--; Serial.println ("በተቃራኒ ሰዓት አቅጣጫ ዞሯል"); }

Serial.print ("የኢኮደር አቀማመጥ:"); Serial.println (encoderPosCount); Serial.println (""); } mrotateLast = mrotate; መመለስ encoderPosCount; } bool readwitch () {

(digitalRead (pinSW)! = 0) {// ማብሪያ ተጭኗል

ሳለ (digitalRead (pinSW)! = 0) {} // ማብሪያ /ማጥፊያ በአሁኑ ጊዜ ተጭኗል switchval = 1; } ሌላ {switchval = 0;} // መቀየሪያ ያልተጫነ የመመለሻ መቀየሪያ ነው ፤ }

አሁን መቀየሪያውን ማዞር ይችላሉ እና ተለዋዋጭ ኢንኮደርPosCount በሰዓት አቅጣጫ ቢዞሩ እና በተቃራኒ ሰዓት አቅጣጫ ቢዞሩ ወደ ታች ይቆጥራሉ።

ይሀው ነው! በቀላሉ እና ጠቃሚ።

ኮዱን ለመለወጥ እና ለማከናወን ነፃነት ይሰማዎ። በፕሮጀክትዎ ውስጥ መተግበር ይችላሉ።

እንዲሁም የኤልዲዎቼን ብሩህነት ለማዘጋጀት ኢንኮደሩን የተጠቀምኩበትን የ LED ፕሮጀክት እሰቅላለሁ።

የሚመከር: