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

מפענח סיבובי פשוט: 4 שלבים
מפענח סיבובי פשוט: 4 שלבים

וִידֵאוֹ: מפענח סיבובי פשוט: 4 שלבים

וִידֵאוֹ: מפענח סיבובי פשוט: 4 שלבים
וִידֵאוֹ: ככה זה כשיש לך חברה רוסיה 2024, יולי
Anonim
Image
Image
מפענח סיבובי פשוט
מפענח סיבובי פשוט

מדריך זה מתאר שיטה פשוטה לפענוח מקודד סיבובי רציף באמצעות Arduino Uno R3.

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

מסופקים גרסאות קטע ופריעות של הקוד.

גרסת ה- interrupt של הקוד דורשת סיכת הפסקה אחת בלבד.

תמונות:

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

שלב 1: תרשים מעגלים

תרשים מעגלים
תרשים מעגלים

תרשים החיווט של המקודד מוצג באיור 1.

חוטי המגשר מולחמים ישירות לסיכות המקודד.

החלף את שני החוטים הכחולים אם כיוון הספירה הפוך.

שלב 2: רשימת חלקים

החלקים הבאים התקבלו מ-

  • 1 רק Arduino UNO R3 עם כבל USB.
  • מקודד סיבוב רציף אחד בלבד (EC11 או שווה ערך) עם מתג.
  • ידית אחת בלבד המתאימה לפיר.
  • 3 רק חוטי מגשר זכר לגבר מארדואינו.

שלב 3: תיאוריה

תֵאוֹרִיָה
תֵאוֹרִיָה

מקודדים סיבוביים רציפים יוצרים שני גלי ריבוע שכל אחד מהם נעקר ב 90 מעלות כפי שמוצג באיור 1.

דפוסי ההיגיון במגע A ובמגע B שונים כאשר הפיר מסתובב בכיוון השעון (CW) ונגד כיוון השעון (CCW) דרך העמדות 1 עד 6.

השיטות הנפוצות לקביעת כיוון הסיבוב כוללות:

  • חוּמרָה
  • קטע תאומים
  • טבלאות בדיקת דוגמאות

פרויקט זה משתמש בשיטת תוכנה שאינה דורשת טבלאות חיפוש. [1]

כיוון

במקום להסתכל על דפוסי הפלט מאנשי קשר א 'ומגע ב' נתמקד בקשר א '.

אם נדגום איש קשר B לאחר כל מעבר איש קשר A נציין כי:

  • לאיש קשר ואיש קשר B יש מצבי לוגיות מנוגדים כאשר המקודד מסובב CW
  • לאיש קשר ואיש קשר B יש אותו מצב לוגי כאשר המקודד מסובב CCW

קוד בפועל:

// ----- ספירת מעברים

CurrentStateA = stateContactA (); if (CurrentStateA! = LastStateA) {CurrentStateB = digitalRead (ContactB); if (CurrentStateA == CurrentStateB) ספירה ++; אם (CurrentStateA! = CurrentStateB) ספירה--; LastStateA = CurrentStateA; }

שיטה זו מציעה את היתרונות הבאים:

  • אין צורך בלוחות חיפוש
  • נדרש רק קו הפרעה יחיד

לדחות

כל המקודדים המכניים סובלים מ"הקפצת מגע ".

אם איש קשר של מתג לא יוצר/נשבר בצורה נקייה, מצב ההיגיון שלו יסתתף במהירות מ- HIGH ל- LOW עד שהקשר של המתג יתייצב. התוצאה היא ספירות שווא.

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

החיסרון בגישה זו הוא שעלולים להחמיץ מעברים אם ציר המקודד מסתובב במהירות.

ניפוי תוכנה

שיטה זו משתמשת בשני מונים (פתוחים, סגורים) שהוגדרו לאפס. [2]

לאחר שמזהה מעבר באיש קשר א ':

  • סקר רציף צור קשר עם א.
  • הגדל את המונה הפתוח ואפס את הדלפק הסגור, בכל פעם שמגע A גבוה.
  • הגדילו את המונה הסגור ואפסו את הדלפק הפתוח, בכל פעם שאיש הקשר A נמוך.
  • צא מהלולאה כאשר אחד המונים מגיע לספירה שנקבעה מראש. אנו מחפשים למעשה את תקופת המצב היציב לאחר כל הקפצת מגע.

קוד בפועל:

// ----- ניפוי איש קשר א

בעוד (1) {if (digitalRead (ContactA)) {// ----- ContactA פתוח סגור = 0; // ריק מול אינטגרטור פתוח ++; // שלבו אם (Open> MaxCount) החזרה HIGH; } אחר {// ----- ContactA נסגר פתוח = 0; // אינטגרציה ריקה נגדית סגורה ++; // שלב אם (סגור> MaxCount) החזרה LOW; }}

אין צורך להפחית את איש הקשר B מכיוון שמעברי איש הקשר א 'ואיש הקשר B אינם חופפים.

סְפִירָה

"מעצר" מכני למעשה מכפיל את הספירה שלך כאשר שתי ספירות נרשמות בין קליקים (ראה איור 1).

ניתן לקבוע את מספר "המעצרים" באמצעות חשבון מודולו 2 כפי שמוצג להלן.

קוד בפועל:

// ----- ספירת "מעצרים"

if (ספירה % 2 == 0) {Serial.print ("ספירה:"); Serial.println (ספירה / 2); }

הפניות

מידע נוסף ניתן למצוא בכתובת:

[1]

howtomechatronics.com/tutorials/arduino/ro…

[2]

newbiehack.com/ButtonorSwitchDebounceinSof…

שלב 4: תוכנה

פרויקט זה דורש גרסה עדכנית של Ardino Uno R3 IDE (סביבת פיתוח משולבת) הזמינה מ-

הורד כל אחת משתי המערכונים הבאים של Arduino (מצורף)

  • rotary_encoder_1.ino (גרסת סקר)
  • rotary_encoder_2.no (גירסת הפסקה)

לחץ פעמיים על הגרסה המועדפת עליך ופעל לפי ההוראות שעל המסך.

תהנה …

לחץ כאן לצפייה במדריכים האחרים שלי.

מוּמלָץ: