מה ההבדל בין פוטנציומטר ארדואינו למקודד רוטרי

Mh Hhbdl Byn Pwtnzywmtr Rdw Ynw Lmqwdd Rwtry



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

מהו פוטנציומטר

פוטנציומטר הוא ריאוסטט, או שאנו יכולים לקרוא לו נגד משתנה. ערך ההתנגדות משתנה בהתאם לסיבוב הציר של הפוטנציומטר. פוטנציומטרים יכולים לפנות רק למרחק מוגדר. ישנם פוטנציומטרים אנלוגיים ודיגיטליים כאחד, אך הם כמעט דומים. ניתן לממשק פוטנציומטרים אנלוגיים עם מיקרו-בקרים ב-Arduino, Raspberry Pi והתקנים אחרים. לפוטנציומטר יש שלושה פינים שהם פין מתח כניסה Vcc, Ground Pin GND ופין אות הכניסה. סיכת האות מספקת קלט לארדואינו.









מהו מקודד רוטרי

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







דיאגרמת פין ותיאור פינים של מקודד רוטרי

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

Out B או CLK



סיכה זו נותנת פלט של כמה פעמים הכפתור או המקודד הסיבובי הסתובבו. בכל פעם כאשר הכפתור מסובב, ה-CLK משלים מחזור של HIGH ונמוך. זה נספר כסיבוב אחד.

Out A או DT

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

החלף

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

Vcc

סיכה זו מחוברת לאספקת 5V

GND

סיכה זו מחוברת לאדמה

ההבדל בין פוטנציומטר למקודד רוטרי

מִפרָט פוטנציומטר מקודד רוטרי
רוֹטַציָה ניתן לסובב את הפוטנציומטר רק בכיוון אחד, וגם זה לשלושת רבעי מעגל. המקודד הסיבובי מסוגל להסתובב 360° ברציפות הן בכיוון השעון והן נגד כיוון השעון.
מכשיר אנלוגי או דיגיטלי הפוטנציומטר הוא בעיקר התקן קלט אנלוגי שמודד את השינוי במיקום באמצעות שינוי בערך של נגד מקודד סיבובי הוא התקן קלט דיגיטלי החש את המיקום הזוויתי ומספק ערכים דיגיטליים.

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

הגדרת פוטנציומטר עם Arduino

קל יותר להגדיר את הפוטנציומטר עם Arduino מאשר מקודד סיבובי. לפוטנציומטר יש רק שלושה פינים VCC, GND ופין INPUT שמחובר לארדואינו. הממשק של הפוטנציומטר עם Arduino מוצג להלן:

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

קוד לדוגמה לפוטנציומטר

const int pot = A0; // הצהר על סיכת קלט
הגדרה בטלה ( ) {
   pinMode ( סיר, קלט ) ; // ערך ההגדרה נלקח מהפוטנציומטר כפי ש קֶלֶט
Serial.begin ( 9600 ) ;
}
לולאה ריקה ( ) {
int potValue = analogRead ( סיר ) ; // קרא את הערך של הקלט שנלקח על ידי פוטנציומטר
מַפָּה ( potValue, 0 , 1023 , 0 , 255 ) ; // שינוי קנה המידה של ערך הקלט כך שיתאים 8 -ביט
Serial.println ( potValue ) ; // מדפיס ערך שהוזן לפוטנציומטר
לְעַכֵּב ( 100 ) ;
}

קוד הפוטנציומטר קל ופשוט מאוד. פין הקלט האנלוגי של ארדואינו פשוט מוכרז לקבל קלט מהפוטנציומטר, ואז נעשה שימוש בפונקציות analogRead() ו-map() כדי לקרוא ולתת את הערך המדויק של הקריאה מהפוטנציומטר.

מקודד רוטרי מקשר עם Arduino

לקודד הסיבובי יש חמישה פינים. VCC ו-GND של המקודד הסיבובי מחוברים לזה של Arduino. הפינים הנותרים CLK, DT ו-SW מחוברים לפיני הקלט הדיגיטליים של Arduino.

קוד Arduino עבור מקודד רוטרי

// כניסות מקודד רוטרי
#define CLK_PIN 2
#define DT_PIN 3
#define SW_PIN 4
int counter = 0 ;
int currentCLKState;
int lastCLKState;
String currentDirection = '' ;
unsigned long lastButtonPressTime = 0 ;
הגדרה בטלה ( ) {
// הגדר פינים מקודד כפי ש תשומות
    pinMode ( CLK_PIN, INPUT ) ;
    pinMode ( DT_PIN, INPUT ) ;
    pinMode ( SW_PIN, INPUT_PULLUP ) ;
// הגדר צג טורי
Serial.begin ( 9600 ) ;
// קרא את המצב ההתחלתי של CLK
lastCLKState = digitalRead ( CLK_PIN ) ;
}
לולאה ריקה ( ) {
// קרא את המצב הנוכחי של CLK
currentCLKState = digitalRead ( CLK_PIN ) ;
// אם אחרון והמצב הנוכחי של CLK שונים, לאחר מכן דופק התרחש
// להגיב רק ל 1 שינוי מדינה כדי למנוע ספירה כפולה
אם ( CLKState הנוכחי ! = lastCLKState && currentCLKState == 1 ) {
// אם מצב DT שונה ממצב CLK, לאחר מכן
// המקודד מסתובב נגד כיוון השעון, אז הקטינו
אם ( digitalRead ( DT_PIN ) ! = הנוכחיCLKState ) {
דֶלְפֵּק--;
currentDirection = 'CCW' ;
} אַחֵר {
// המקודד מסתובב עם כיוון השעון, אז הגדל
counter++;
currentDirection = 'CW' ;
}
Serial.print ( 'כיוון סיבוב:' ) ;
Serial.print ( currentDirection ) ;
Serial.print ( ' | ערך מונה: ' ) ;
Serial.println ( דֶלְפֵּק ) ;
}
// זכור את אחרון מצב CLK
lastCLKState = currentCLKState;
// קרא את מצב הכפתור
int buttonState = digitalRead ( SW_PIN ) ;
// אם אנו מזהים אות LOW, הכפתור נלחץ
אם ( buttonState == LOW ) {
// אם עברו 50 אלפיות השנייה מאז אחרון דופק נמוך, זה אומר שה
// הלחצן נלחץ, שוחרר ונלחץ שוב
אם ( מיליליוס ( ) - lastButtonPressTime > חמישים ) {
Serial.println ( 'לחצו על הכפתור!' ) ;
}
// זכור את אחרון אירוע לחיצת כפתור זְמַן
lastButtonPressTime = מיליליוס ( ) ;
}
// לָשִׂים ב עיכוב קל ל עֶזרָה להקפיץ את הקריאה
לְעַכֵּב ( 1 ) ;
}

בקוד הנתון לעיל, המצב של פין CLK נבדק בפונקציית loop() . אם הוא אינו שווה למצבו הקודם, זה מראה שהכפתור הסיבובי הסתובב. כעת, כדי לבדוק את כיוון סיבוב הכפתור, המצב הנוכחי של CLK מושווה למצב של DT. אם שני המצבים אינם שווים, זה מראה שהכפתור הסתובב עם כיוון השעון והנגד מגדיל את ערכו כדי להראות את מיקום הכפתור הסיבובי. במקרה ההפוך, ירידת נגד.

יישומים

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

סיכום

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