- מקודד סיבובי וסוגיו
- KY-040 מקודד סיבובי Pinout ותיאור
- איך עובד מקודד סיבובי
- רכיבים נדרשים
- PIC16F877A תרשים מעגל מקודד סיבובי
- הסבר קוד
אנקודר הוא מכשיר קלט שעוזר למשתמש אינטראקציה עם מערכת. זה נראה יותר כמו פוטנציומטר רדיו אבל הוא מוציא רכבת פולסים שהופכת את היישום שלו לייחודי. כאשר מסתובב הכפתור של המקודד הוא מסתובב בצורה של צעדים קטנים שעוזרים להשתמש בו לבקרת מנוע צעד / סרוו, ניווט ברצף של התפריט והגדלת / הקטנת ערך המספר ועוד.
במאמר זה נלמד על הסוגים השונים של מקודדי סיבוב וכיצד הוא פועל. אנו גם נתממשק אותו עם PIC Microcontroller PIC16F877A ונשלוט בערך שלם על ידי סיבוב המקודד ונציג את ערכו על גבי מסך LCD * 16 * 2. בסוף הדרכה זו, יהיה לך נוח להשתמש במקודד רוטרי לפרויקטים שלך. אז בואו נתחיל…
מקודד סיבובי וסוגיו
מקודד סיבובי נקרא לעתים קרובות מקודד פיר. זהו מתמר אלקטרומכני, כלומר ממיר תנועות מכניות לדופקים אלקטרוניים או במילים אחרות הוא ממיר מיקום זוויתי או תנועה או מיקום פיר לאות דיגיטלי או אנלוגי. הוא מורכב מכפתור שכאשר מסובב ינוע צעד אחר צעד וייצר רצף של רכבות דופק עם רוחב שהוגדר מראש לכל שלב.
ישנם סוגים רבים של מקודדים סיבוביים בשוק המעצב יכול לבחור אחד על פי היישום שלו. הסוגים הנפוצים ביותר מפורטים להלן
- מקודד מצטבר
- מקודד מוחלט
- מקודד מגנטי
- מקודד אופטי
- מקודד לייזר
מקודדים אלה מסווגים על פי אות הפלט וטכנולוגיית החישה, המקודד המצטבר והמקודדים המוחלטים מסווגים על פי אות הפלט והמקודד המגנטי, האופטי והלייזר מסווגים על בסיס טכנולוגיית חישה. Encoder המשמש כאן הוא סוג מקודד מצטבר.
מקודד מוחלט מאחסן את פרטי המיקום גם לאחר הסרת החשמל, ומידע המיקום יהיה זמין כאשר אנו שוב מפעילים עליו כוח.
הסוג הבסיסי האחר, מקודד מצטבר מספק נתונים כאשר המקודד משנה את מיקומו. הוא לא יכול היה לאחסן את פרטי המיקום.
KY-040 מקודד סיבובי Pinout ותיאור
הפינים של המקודד הסיבובי מסוג KY-040 מוצגים להלן. בפרויקט זה אנו נתממש את מקודד הרוטרי הזה עם המיקרו-בקר הפופולרי PIC16F877A ממיקרו-שבב.
שני הפינים הראשונים (קרקע ו- Vcc) משמשים להפעלת המקודד, בדרך כלל משתמשים באספקת 5 וולט. מלבד סיבוב הכפתור בכיוון השעון ולא נגד כיוון השעון, לקודן יש גם מתג (פעיל נמוך) שניתן ללחוץ עליו על ידי לחיצה על הכפתור פנימה. האות מהמתג הזה מתקבל דרך הסיכה 3 (SW). לבסוף יש לו שני סיכות פלט (DT ו- CLK) המייצרות את צורות הגל כפי שכבר דובר בהמשך. התקשרנו בעבר למקודד הסיבובי עם ארדואינו.
איך עובד מקודד סיבובי
הפלט תלוי לחלוטין ברפידות הנחושת הפנימיות המספקות את החיבור עם GND ו- VCC עם הפיר.
ישנם שני חלקים של המקודד הסיבובי. גלגל פיר המחובר עם הפיר ומסתובב בכיוון השעון או נגד כיוון השעון בהתאם לסיבוב הפיר, ולבסיס בו מתבצע החיבור החשמלי. לבסיס יש יציאות או נקודות המחוברות ל- DT או ל- CLK באופן שכאשר גלגל הפיר מסתובב, הוא יחבר את נקודות הבסיס ויספק גל מרובע הן ביציאת DT והן ב- CLK.
הפלט יהיה כמו כאשר הפיר מסתובב-
שתי יציאות מספקות את הגל המרובע אך יש הבדל קל בתזמון. בשל כך, אם נקבל את הפלט כ- 1 ו- 0, יכול להיות רק ארבעה מצבים, 0 0, 1 0, 1 1, 0 1. רצף הפלט הבינארי קובע את סיבוב השעון או נגד כיוון השעון. כמו, למשל, אם המקודד הסיבובי מספק 1 0 במצב סרק ומספק 1 1 לאחר מכן, זה אומר שהמקודד משנה את המיקום שלו צעד אחד לכיוון השעון, אבל אם הוא מספק 0 0 אחרי הסרק 1 0, פירושו שהציר משנה את מיקומו בכיוון נגד כיוון השעון בצעד אחד.
רכיבים נדרשים
זה הזמן לזהות מה אנחנו צריכים כדי לממשק מקודד סיבובי עם מיקרו בקר PIC,
- PIC16F877A
- נגד 4.7k
- נגד 1k
- סיר 10k
- קבל דיסק קרמי 33pF - 2 יחידות
- גביש 20Mhz
- תצוגה 16x2
- מקודד סיבובי
- מתאם 5V.
- לוח לחם
- חוטי חיבור.
PIC16F877A תרשים מעגל מקודד סיבובי
להלן תמונת ההתקנה הסופית לאחר חיבור הרכיבים על פי דיאגרמת המעגל:
השתמשנו בנגד 1K יחיד עבור הניגודיות של ה- LCD במקום להשתמש בפוטנציומטר. כמו כן, בדקו את סרטון העבודה המלא שניתן בסוף.
הסבר קוד
קוד PIC מלא ניתן בסוף פרויקט זה עם סרטון הדגמה, כאן אנו מסבירים כמה חלקים חשובים בקוד. אם אתה חדש ב- PIC Microcontroller, עקוב אחר ההדרכות שלנו בנושא PIC מההתחלה.
כפי שדנו קודם, עלינו לבדוק את הפלט ולהבדיל את הפלט הבינארי הן עבור DT והן עבור CLK, לכן יצרנו חלק אם-אחר לפעולה.
אם (Encoder_CLK! = מיקום) { אם (Encoder_DT! = מיקום) { // lcd_com (0x01); מונה ++; // הגדל את המונה שיודפס על lcd lcd_com (0xC0); lcd_puts (""); lcd_com (0xC0); lcd_bcd (1, מונה); } אחר { // lcd_com (0x01); lcd_com (0xC0); דֶלְפֵּק--; // להקטין את המונה lcd_puts (""); lcd_com (0xC0); lcd_bcd (1, מונה); // lcd_puts ("שמאל"); } }
עלינו לאחסן את המיקום בכל שלב. לשם כך השתמשנו במיקום " משתנה " המאחסן את המיקום הנוכחי.
עמדה = מקודד_קל; // זה לאחסן את מיקום שעון המקודד על המשתנה. יכול להיות 0 או 1.
מלבד זאת ניתנת אפשרות להודיע על לחיצת מתג על גבי ה- LCD.
אם (Encoder_SW == 0) { sw_delayms (20); // עיכוב הפוגה אם (Encoder_SW == 0) { // lcd_com (1); // lcd_com (0xC0); lcd_puts ("מתג לחוץ"); // itoa (מונה, ערך, 10); // lcd_puts (ערך);
System_init הפונקציה משמשת לאתחול פעולת הסיכה I / O, LCD ו לאחסן את עמדת אנקודר.
בטל system_init () { TRISB = 0x00; // יציאה B כפלט, יציאה זו משמשת ל- TRISDbits LCD.TRISD2 = 1; TRISDbits.TRISD3 = 1; TRISCbits.TRISC4 = 1; lcd_init (); // זה יאותחל את מיקום ה- LCD = Encoder_CLK; // סימן את מיקום CLK בהתחלת המערכת, לפני תחילת לולאת הזמן. }
פונקציית ה- LCD נכתבת בספריה lcd.c ו- lcd.h בה מצהירים lcd_puts (), lcd_cmd ().
להצהרה המשתנה, סיביות תצורה וקטעי קוד אחרים, אנא מצא את הקוד המלא להלן.