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

בקרת מיקום זוויתית של מנוע צעד 28BYJ-48 עם ג'ויסטיק ארדואינו ואנלוגי: 3 שלבים
בקרת מיקום זוויתית של מנוע צעד 28BYJ-48 עם ג'ויסטיק ארדואינו ואנלוגי: 3 שלבים

וִידֵאוֹ: בקרת מיקום זוויתית של מנוע צעד 28BYJ-48 עם ג'ויסטיק ארדואינו ואנלוגי: 3 שלבים

וִידֵאוֹ: בקרת מיקום זוויתית של מנוע צעד 28BYJ-48 עם ג'ויסטיק ארדואינו ואנלוגי: 3 שלבים
וִידֵאוֹ: www.cmcltd.co.il - בקרת סרבו למנועי צעד 2024, יולי
Anonim
בקרת מיקום זוויתית של מנוע צעד 28BYJ-48 עם ג'ויסטיק ארדואינו ואנלוגי
בקרת מיקום זוויתית של מנוע צעד 28BYJ-48 עם ג'ויסטיק ארדואינו ואנלוגי

זוהי תכנית בקרה עבור מנוע הצעד 28BYJ-48 שפיתחתי לשימוש כחלק מפרויקט עבודת הגמר שלי בשנה האחרונה. לא ראיתי את זה נעשה קודם לכן חשבתי להעלות את מה שגיליתי. אני מקווה שזה יעזור למישהו אחר שם בחוץ!

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

ליישום שלי דרשתי שאם הג'ויסטיק ישוחרר, כלומר אין לו מיקום זוויתי, המנוע חוזר לכיוון "הבית". כיוון הבית פונה מזרחה, והמנוע (או בשכירות כל מצביע / מכשיר שחיברת לפיר הפלט!) חייב להיות פונה לכיוון זה גם כשהוא מופעל.

אספקה

Arduino Uno או דומה

קרש לחם ומבחר חוטי מגשר (זכר לזכר, זכר לנקבה)

ספק כוח 5V

מודול ג'ויסטיק אנלוגי (באופן אידיאלי עם תכונת לחיצה רגעית, הדבר מאפשר מנוחה קלה יותר של תנוחת "הבית"

מנוע צעד 28BYJ-48 ונהג צעד ULN2003

עט, נייר ובלוטק (או כל מכשיר מצביע אחר לחיבור למנוע!)

שלב 1: שלב 1: הגדרה

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

IN1 - סיכת ארדואינו 8

IN2 - סיכת ארדואינו 9

IN3 - סיכת ארדואינו 10

IN4 - סיכת ארדואינו 11

חבר את ספק הכוח 5V שלך למסילות האספקה בלוח הלחם שלך, וחבר את כניסות 5V ULN2003 למסילות האספקה. חבר את מסילת הקרקע לקרקע על הארדואינו שלך.

עבור הג'ויסטיק, חבר כדלקמן:

סיכת מתג - סיכת Arduino 2

ציר X - Arduino A0 (אנלוגי ב 0)

ציר Y - Arduino A1

+5V - פלט Arduino 5V

GND - ארדואינו GND

לבסוף חבר את קרקע לוח הלוח שלך לסיכת ה- GND האחרת של Arduino

שלב 2: שלב 2: הסבר הקוד

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

התיאוריה מאחורי הקוד הזה היא שהמרחב שתופס הג'ויסטיק מחולק לגרף, כאשר 0, 0 במרכז. אולם כניסות הג'ויסטיק נשענות על (כ) 512 במרכז, כך שעל מנת להתגבר על שתי פונקציות אלה משתמשים כדי "לאפס" את הערך הנקרא מציר X ו- Y. בהתאם לאספקת החשמל שבה אתה משתמש ייתכן שיהיה עליך לשנות את הערכים בפונקציות ZeroX ו- ZeroY כך שהג'ויסטיק שלך יקרא קריאה אמינה של 0 בזמן מנוחה.

כאשר נקראים ערכי X, Y, הם מומרים לראשונה לרדיאנים באמצעות הפונקציה atan2 () בספריית math.h. הסברת הפונקציה הזו היא מחוץ להיקף ההנחיה, אך אנא חפש אותה - זהו טריק פשוט למדי של גיאומטריה!

לבסוף, כדי להקל על החיים של אלה מאיתנו שהיו עובדים במעלות ולא ברמות, ערך ה- rad המחושב על ידי atan2 () הופך למעלות.

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

עכשיו על החלק העיקרי של הקוד! אנו מתחילים בקריאת הג'ויסטיק X, Y קואורדינטות Y מופרדות פעמיים בעיכוב של 10ms ולאחר מכן בודקות אם הן זהות - גיליתי שהג'ויסטיק יפיק מדי פעם קריאות ספורדיות, והעיכוב הקל הזה הספיק כדי לעצור את סיבוב המנוע על סמך אלה. זהו גם עיכוב קצר מספיק כך שנראה כי הוא אינו מפריע לתשומות מכוונות.

שאר הקוד די מסביר את עצמו ועשיתי כמיטב יכולתי לתעד אותו; סדרה של הצהרות IF משוות את זווית הג'ויסטיק הנוכחית לזווית המנוע ומזיזים את המנוע לזווית זו. 28BYJ-48 כולל 5.689 צעדים לתואר, ולכן לכן אנו מכפילים את התנועה הנדרשת במספר המוזר לכאורה!

החלק היחיד בקוד הדורש את ההסבר הרב ביותר הוא מה שכיניתי "מקרה עוטף". אפילו שהג'ויסטיק והמנוע היו למשל +175 °, והג'ויסטיק זז לאחר מכן ל -175 ° (תנועה של 10 ° בלבד על הג'ויסטיק, מצפון מערב מערבי מדרום למערב), המנוע ינוע בכיוון הלא נכון ב -350 °! לשם כך נכתב המקרה המיוחד.

המקרה העוטף מתחיל בבדיקה שלמנוע ולג'ויסטיק יש סימנים הפוכים, כלומר המנוע חיובי והג'ויסטיק שלילי, או להיפך. כמו כן, הוא בודק כי סכום המוחלט (כלומר, הערכים החיוביים) של הג'ויסטיק והמנוע גבוה מעל 180 °.

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

הערכים המוחלטים של זווית המנוע וזווית הג'ויסטיק מסתכמים ונגרעים מ -360 ° כדי לקבוע את המרחק לזוז. לבסוף, זווית המנוע (המשקפת כעת את זווית הג'ויסטיק) מתעדכנת ככזו.

שלב 3: הסתיים

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

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

מוּמלָץ: