תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-23 14:46
זוהי תכנית בקרה עבור מנוע הצעד 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: הסתיים
אז כל שנותר לעשות הוא להעלות את הקוד לארדואינו ולהפעיל אותו! עיין בסרטון למעלה לקבלת מושג טוב על אופן הפעולה של הפרויקט. זה יהיה שימושי עבור מצלמות מצלמות, זרועות רובוטיות ויישומים רבים אחרים!
אם אתה משתמש בקוד, הודע לי על כך, ואם אתה רואה מקום שבו ניתן לשפר את הקוד, אשמח לשמוע את המשוב שלך.
מוּמלָץ:
מנוע צעד נשלט על ידי מנוע צעד ללא מיקרו -בקר !: 6 שלבים
מנוע צעד נשלט על מנוע צעד ללא מיקרו -בקר !: בהוראה מהירה זו, נכין בקר מנוע צעד פשוט באמצעות מנוע צעד. פרויקט זה אינו דורש מעגלים מורכבים או מיקרו -בקר. אז בלי להתבטא יותר, בואו נתחיל
מנוע צעד נשלט על ידי מנוע צעד ללא מיקרו -בקר (V2): 9 שלבים (עם תמונות)
מנוע צעד מבוקר צעדים ללא מיקרו -בקר (V2): באחד ממדריכי ההוראות הקודמים שלי, הראיתי לך כיצד לשלוט במנוע צעד באמצעות מנוע צעד ללא מיקרו -בקר. זה היה פרויקט מהיר ומהנה אך הוא בא עם שתי בעיות שיפתרו במדריך זה. אז, שנינות
קטר דגם מבוקר באמצעות מנוע צעד - מנוע צעד כמקודד סיבובי: 11 שלבים (עם תמונות)
קטר דגם מבוקר באמצעות מנוע צעד | מנוע צעד כמקודד סיבוב: באחד מההנחיות הקודמות למדנו כיצד להשתמש במנוע צעד כמקודד סיבוב. בפרויקט זה, כעת נשתמש במנוע הצעד ההופך את המקודד הסיבובי לשליטה על קטר דגם באמצעות מיקרו -בקר ארדואינו. אז בלי fu
מנוע צעד מבוקר צעד מנוע - מנוע צעד כמקודד סיבובי: 11 שלבים (עם תמונות)
מנוע צעד מבוקר צעד מנוע | מנוע צעד כמקודד סיבובי: האם כמה מנועי צעד שוכבים ורוצים לעשות משהו? במדריך זה, בואו להשתמש במנוע צעד כמקודד סיבובי כדי לשלוט במיקום מנוע צעד אחר באמצעות מיקרו -בקר Arduino. אז בלי להתבטא יותר, בואו נגיד
מנוע צעד (מנוע צעד): 5 שלבים
التحكم بالمحرك الخطوي (מנוע צעד) بطريقة (Microstep): في هذه المدونة اتحدث عن كيف نقوم بالتحكم بماتور خطوي عن طريق الخطوة الدقيقة وهي الطريقة المتبعة في الطابعات الثلاثية الابعاد