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

קו מבוסס PID בעקבות רובוט עם מערך חיישן POLOLU QTR 8RC: 6 שלבים (עם תמונות)
קו מבוסס PID בעקבות רובוט עם מערך חיישן POLOLU QTR 8RC: 6 שלבים (עם תמונות)

וִידֵאוֹ: קו מבוסס PID בעקבות רובוט עם מערך חיישן POLOLU QTR 8RC: 6 שלבים (עם תמונות)

וִידֵאוֹ: קו מבוסס PID בעקבות רובוט עם מערך חיישן POLOLU QTR 8RC: 6 שלבים (עם תמונות)
וִידֵאוֹ: על עקבותיה של ציוויליזציה עתיקה? 🗿 מה אם טעינו בעבר שלנו? 2024, נוֹבֶמבֶּר
Anonim
קו מבוסס PID בעקבות רובוט עם מערך חיישן POLOLU QTR 8RC
קו מבוסס PID בעקבות רובוט עם מערך חיישן POLOLU QTR 8RC

שלום!

זו הכתבה הראשונה שלי על מדריכים, והיום אני הולך לקחת אותך לדרך, ולהסביר כיצד להטיל קו מבוסס PID בעקבות רובוט באמצעות מערך חיישן QTR-8RC.

לפני שנמשיך לבניין הרובוט, עלינו להבין מה נקרא PID,

שלב 1: עקרון העבודה

מהו PID ??

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

מונחי מפתח כאמור במסמכי פולאלו

הערך הפרופורציונלי הוא בערך פרופורציונלי למיקום הרובוט שלך ביחס לקו. כלומר, אם הרובוט שלך מרוכז במדויק על הקו, אנו מצפים לערך פרופורציונלי של 0 בדיוק

הערך האינטגרלי מתעד את ההיסטוריה של תנועת הרובוט שלך: זהו סכום של כל ערכי המונח הפרופורציונלי שנרשמו מאז שהרובוט התחיל לפעול

הנגזרת היא קצב השינוי של הערך היחסי

במדריך זה נדבר רק על Kp ומונחי Kd, אולם ניתן להשיג תוצאות גם באמצעות המונח Ki. הקריאות שאנו מקבלים מהחיישן אינן רק קריאות אנלוגיות אלא גם קריאות המיקום של הרובוט..אז בעצם החיישן מספק ערכים מ -0 עד 2500 החל מהרהור מרבי ועד החזר מינימלי, אך במקביל מספק גם מידע על המרחק שהרובוט תקוע מהקו.)

כעת עלינו לשקול את מונח השגיאה, זהו ההבדל בין ערך הערך של שני הערכים והערך הנוכחי. (ערך נקודת ההתחלה הוא הקריאה המתאימה למיקום "מושלם" של חיישנים על גבי השורות. והזרם הנוכחי ערך הוא הקריאות המיידיות של החיישן. לדוגמא: אם אתה משתמש בחיישן מערך זה ועושה שימוש ב -8 חיישנים, תקבל קריאת מיקום של 3500 אם אתה נקודתית, בסביבות 0 אם אתה שמאלני מידי הקו ובסביבות 7000 אם אתה צודק מדי.). המטרה שלנו היא להפוך את השגיאה לאפס. רק אז הרובוט יכול לעקוב בצורה חלקה אחר הקו.

ואז מגיע חלק החישוב,.

1) חשב את השגיאה.

שגיאה = ערך נקודת ערך - ערך נוכחי = 3500 - מיקום

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

2) לקבוע את המהירויות המותאמות של המנועים.

MotorSpeed = Kp * שגיאה + Kd * (שגיאה - LastError);

LastError = שגיאה;

RightMotorSpeed = RightBaseSpeed + MotorSpeed;

LeftMotorSpeed = LeftBaseSpeed - MotorSpeed;

מבחינה לוגית, טעות של 0 פירושה שהרובוט שלנו נמצא בצד שמאל, מה שאומר שהרובוט שלנו צריך ללכת קצת ימינה, מה שאומר שמנוע הימין צריך להאט והמנוע השמאלי צריך להאיץ. זה PID!

ערך MotorSpeed נקבע מהמשוואה עצמה. RightBaseSpeed ו- LeftBaseSpeed הם המהירויות (כל ערך של PWM 0-255) שבהן הרובוט רץ כאשר השגיאה היא אפס.

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

אם אתה נתקל בבעיות בעת יישום הרובוט שלך, רק בדוק אם וראה על ידי שינוי סימני המשוואות !!!

ועכשיו החלק הכי מסובך למצוא Kp ו- Kd, הייתי צריך להשקיע יותר משעה כדי לכוון את הרובוט שלי בצורה מושלמת. במקום לשים ערכים אקראיים מצאתי שיטה קלה יותר לקבוע זאת.

  1. התחל עם kp ו- Kd שווה ל- 0, והתחל עם Kp, ראשית נסה להגדיר את Kp ל- 1 והתבונן ברובוט, המטרה שלנו היא לעקוב אחרי הקו גם אם הוא מתנדנד, אם הרובוט ירד ויאבד את הקו תפחית את ערך ה- kp.אם הרובוט לא יכול לנווט בסיבוב ולהיות איטי להגדיל את ערך ה- Kp.
  2. ברגע שנראה שהרובוט קצת עוקב אחר הקו, התאם את ערך Kd (ערך Kd> ערך Kp) התחל מ -1 והגדל את הערך עד שתראה הנעה חלקה עם התנודדות פחותה.
  3. ברגע שהרובוט יתחיל לעקוב אחר הקו, הגדל את המהירות ובדוק אם הוא מסוגל לשמור על הקו ולעקוב אחריו.

זכור כי למהירות יש השפעה ישירה על כוונון PID וייתכן שתצטרך לפעמים להתאים מחדש את מהירות הרובוט שלך.

עכשיו אנחנו יכולים להתחיל לבנות את הרובוט שלנו.

שלב 2: הבנייה

המבנה
המבנה
המבנה
המבנה
המבנה
המבנה

Arduino atmega 2560 עם כבל USB - זהו המיקרו -בקר העיקרי המשמש.

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

www.ebay.com/itm/2WD-DIY-2-Wheel-Drive-Rou…

מנועי הילוכים מיקרומטריים- הרובוט היה צריך מנועים מסתובבים במהירות על מנת להתמודד עם שגרת ה- PID, לשם כך השתמשתי במנועים המדורגים ב -6 V 400 סל ד וגלגלים אחידים מתאימים.

www.ebay.com/itm/12mm-6V-400RPM-Torque-Gea…

www.ebay.com/itm/HOT-N20-Micro-Gear-Motor-…

מערך חיישן QTR 8Rc - זה יכול לשמש למעקב אחר הקווים, כפי שהוזכר קודם לכן אני חושב שעכשיו יש לך הבנה ברורה כיצד להפעיל את מערך החיישנים עם PID. הקוד פשוט מאוד ושימוש בספריות ארדואינו קיימות תוכל לבנות חסיד קו מהיר.

www.ebay.com/itm/Pololu-QTR-8RC-Reflectanc…

נהג מנוע TB6612FNG-רציתי להשתמש במנהג מנוע שיכול להתמודד עם סיבובים ולשנות כיוונים בבטחה, המסוגל לבלום את המנועים ביעילות כאשר אות ה- PWM ירד.

www.ebay.com/itm/Pololu-Dual-DC-Motor-Driv…

סוללת ליפו- סוללת ליפו 11.1V משמשת לאספקת כוח לרובוט. למרות שהשתמשתי בסוללת ליפו 11.1 וולט, קיבולת זו גדולה יותר מהנדרש עבור הארדואינו והמנועים. אם אתה יכול למצוא 7.4V קל משקל סוללת ליפו או סוללת 6V Ni-MH היא תהיה מושלמת. מסיבה זו אני צריך להשתמש בממיר באק כדי להמיר את המתח ל- 6V.

11.1V-

7.4 V-

מודול ממיר באק-

בנוסף לזה אתה צריך חוטי מגשר, אגוזים וברגים, מברגים וקלטות חשמל וגם קשרים כדי לוודא שהכל במקום.

שלב 3: הרכבה

הרכבה
הרכבה
הרכבה
הרכבה
הרכבה
הרכבה
הרכבה
הרכבה

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

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

שלב 4: עיצוב מסלול הקו שלך

עיצוב מסלול הקו שלך
עיצוב מסלול הקו שלך

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

שלב 5: תכנות את הקוד שלך

1. הורד והתקן את ה- Arduino

שולחן עבודה IDE

· Windows -

· Mac OS X -

· לינוקס -

2. הורד והדבק קובץ מערך חיישן QTR 8 RC בתיקיית ספריות Arduino.

·

· הדבק קבצים לנתיב - C: / Arduino / libraries

3. הורד ופתח LINEFOLLOWING.ino

4. העלה את הקוד ללוח הארדואינו באמצעות כבל USB

שלב 6: בוצע

Image
Image

עכשיו יש לך שורה בעקבות רובוט שנעשה בעצמך.

מקווה שהדרכה הזו הייתה מועילה. אל תהסס לפנות אלי דרך [email protected] אם יש לך בעיה.

נתראה בקרוב עם עוד פרויקט חדש.

תהנו בבנייה !!

מוּמלָץ: