תוכן עניינים:

הדרכה של מקודד רוטרי עם ארדואינו: 6 שלבים
הדרכה של מקודד רוטרי עם ארדואינו: 6 שלבים

וִידֵאוֹ: הדרכה של מקודד רוטרי עם ארדואינו: 6 שלבים

וִידֵאוֹ: הדרכה של מקודד רוטרי עם ארדואינו: 6 שלבים
וִידֵאוֹ: הכנסת גליל מדבקות למקודד SATO מדגם PB-1 2024, נוֹבֶמבֶּר
Anonim
הדרכה של מקודד רוטרי עם ארדואינו
הדרכה של מקודד רוטרי עם ארדואינו

מקודד סיבובי הוא רכיב אלקטרוני המסוגל לעקוב אחר התנועה והמיקום בעת סיבוב. מקודד סיבובי משתמש בחיישנים אופטיים שיכולים לייצר פולסים כאשר המקודד הסיבובי מסתובב. יישום המקודד הסיבובי בדרך כלל כצג תנועה מכני או רובוטי יכול לשמש גם לבחירת התפריט בתצוגה. למקודד הרוטרי יש שתי יציאות כך שהוא יכול להבחין בין סיבוב שלילי (CW) לחיובי (CCW) ויש לו גם כפתור יחיד.

שלב 1: זרימת דופק של מקודד רוטרי

זרימת דופק של מקודד רוטרי
זרימת דופק של מקודד רוטרי

זרימת הדופק שנוצרת על ידי המקודד הסיבובי הבא דומה לתמונה למעלה.

שלב 2: Pinout של מקודד רוטרי

Pinout של מקודד רוטרי
Pinout של מקודד רוטרי

הֶסבֵּר:

  • GND GND
  • + 5V
  • כפתור SW של מקודד סיבוב בלחיצה
  • נתוני DT
  • נתוני CLK 2

אחד מהסיכות DT או CLK חייב להיות מחובר לרגל ההפרעה של Arduino Uno, או ששני ה- DT ו- CLK מחוברים לסיכת ההפרעה.

שלב 3: סכמטי

סכמטי
סכמטי
  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

שלב 4: קוד

קוד
קוד

במדריך הבא, אשר ישמש כהפרעה הוא PIN 2 של Arduino Uno, ואילו PIN 3 משמש רק כקלט רגיל.

#define encoder0PinA 2 #define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; הגדרת void () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (מקודד0PinB, INPUT_PULLUP); pinMode (מקודד 0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; לולאת void () {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 (""); עיכוב (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } אחר {encoder0Pos--; } valRotary = encoder0Pos/2.5; }

בשורה 10 של הסקיצה לעיל משמש כדי לאפשר את ההפרעה של סיכה 2 Arduino Uno. בפונקציה "doEncoder" מחושב מהמקודד הסיבובי. אם הערך של DT ו- CLK (הפסקת סיכה של Arduino Uno) זהה, משתנה "encoder0Pos" יעלה / יתווסף, בנוסף לתנאי זה, משתנה "encoder0Pos" יורד.

שלב 5: הסבר

ערך ValRotary הוא הערך של מספר השלבים שהופעלו. ערך ValRotary מתקבל מערך קריאת מקודד חיישן סיבובי חלקי 2.5. הערך של 2.5 מתקבל מהבדיקה, שכן שלב אחד של המקודד הסיבובי עשוי לחרוג מ- 1, לכן חלקו ב -2.5 לערכו בהתאם לצעדים וגם הוספת עיכוב הקריאה.

בעוד בקו 19 - 25 היא תוכנית לקבוע אם מקודד סיבובי סיבובי CW או CCW. ההסבר של שורות 19 - 25 הוא כאשר קריאת המקודד הרוטרי הנוכחי גדולה מהנתונים הסיבוביים הקודמים שהובאו אז כ- CW. בעוד שאם הקריאה הנוכחית קטנה מהקריאה הקודמת היא נקראת CCW.

שלב 6: פלט

תְפוּקָה
תְפוּקָה

1 = ערך לחצן ההתחלה של הסיבוב כאשר לא נלחץ עליו

מוּמלָץ: