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

להניע מנוע צעד עם מיקרו -מעבד AVR: 8 שלבים
להניע מנוע צעד עם מיקרו -מעבד AVR: 8 שלבים

וִידֵאוֹ: להניע מנוע צעד עם מיקרו -מעבד AVR: 8 שלבים

וִידֵאוֹ: להניע מנוע צעד עם מיקרו -מעבד AVR: 8 שלבים
וִידֵאוֹ: מנוע צעד - צעד רגיל 2024, יולי
Anonim
להניע מנוע צעד עם מעבד AVR
להניע מנוע צעד עם מעבד AVR

יש לך כמה מנועי צעד שנמחקו ממדפסות/כונני דיסק/וכו '?

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

שלב 1: הכירו את הצעדים

הכירו את סטפרים
הכירו את סטפרים
הכירו את סטפרים
הכירו את סטפרים

בעיקרון, תצטרך להבין לאן כל החוטים הקטנים הולכים.

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

שלב 2: מצא את המשותף

מצא את המשותף
מצא את המשותף
מצא את המשותף
מצא את המשותף

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

אם אתה מסתכל רק על ארבעה חוטים, יש לך מזל - זהו מנוע דו קוטבי. כל מה שאתה צריך לעשות הוא להבין אילו שני זוגות חוטים הולכים יחד. אם יש לך מנוע חד קוטבי, או יותר מ -4 חוטים, תצטרך לפרוץ את האומטר שלך. מה שאתה מחפש הוא החוט (הקרקע) המשותף לכל חצי. אתה יכול לדעת מה נטחן במנוע דו קוטבי מכיוון שיש לו חצי התנגדות לשני הקטבים ממה שהקטבים עושים על עצמם. בתמונה מופיעים ההערות שלי מחיבור חוטים לחוטים וציון ההתנגדות (או אם הם מחוברים בכלל). אתה יכול לראות שלבן הוא הקרקע לשלישייה התחתונה b/c שיש לו חצי התנגדות לאדום או לכחול שיש להם אחד לשני. (המנוע הזה מוזר ואין לו ברז מרכזי על סליל המגנט העליון. זה כאילו שהוא חצי דו קוטבי, חצי חד קוטבי. אולי תוכל להשתמש בזה כדי לחוש סיבוב בסליל האדום-לבן-כחול כשהשחור-צהוב סליל מונע.)

שלב 3: בדוק את סדר הצעדים

להבין את סדר הצעדים
להבין את סדר הצעדים

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

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

שלב 4: לקיחת המנוע לנסיעת מבחן

לוקח את המנוע לנסיעת מבחן
לוקח את המנוע לנסיעת מבחן

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

/* משחקים בהנעת מנועי הצעד הקטנים. */

/ * כלול פונקציית עיכוב */ #define F_CPU 1000000UL #include/ * pin defs עבור ATTiny2313 *// * סדר בכיוון השעון */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define צהוב _BV (PB3) #define DELAY 200 / * אלפיות השנייה בין השלבים * / int main (void) {DDRB = 0xff; / * אפשר פלט על כל סיכות B */ PORTB = 0x00; / * הגדר את כולם ל- 0v */ while (1) {/ * לולאה ראשית כאן */ PORTB = BLUE; _delay_ms (DELAY); פורטב = שחור; _delay_ms (DELAY); פורטב = אדום; _delay_ms (DELAY); פורטב = צהוב; _delay_ms (DELAY); }} עד כמה הקוד הזה פשוט? ממש פשוט. כל מה שהוא עושה זה להגדיר כמה הגדרות נחמדות כדי שאוכל להתייחס לחוטים לפי צבע ולא בשמות הסיכות שלהם, ואז הוא מחליף אותם ברצף עם עיכוב מתכוונן בין לבין. בתור התחלה בחרתי עיכוב של חצי שנייה בין השלבים. ראו את הסרטון הקצר לתוצאות. אם אתה באמת במשחק שלך, ספר את מספר הצעדים למחזור כדי להבין את הרזולוציה הזוויתית החד-מנועית של המנוע. (אה כן. PS. כוננים ללא עומס ב 3.6v בקלות. ראה סוללה בוידאו.)

שלב 5: החזר אותו קדימה

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

int main (void) {const uint8_t delay = 50; const uint8_t בכיוון השעון = {כחול, שחור, אדום, צהוב}; uint8_t i; DDRB = 0xff; / * אפשר פלט על כל סיכות B */ PORTB = 0x00; / * הגדר את כולם ל- 0v */ while (1) {/ * הלולאה הראשית כאן */ עבור (i = 0; i <= 3; i ++) {/ * צעד בין הצבעים בכיוון השעון */ PORTB = בכיוון השעון ; _ delay_ms (עיכוב); } עבור (i = 3; i> = 0; i-) { / * צעד בין הצבעים ccw * / PORTB = בכיוון השעון; _ delay_ms (עיכוב); }}} ראו את הסרטון המעודכן בנושא הגב והעונש.

שלב 6: אני אף פעם לא צעד צעד, כי אני לא חצי צעד …

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

void halfStepping (uint16_t עיכוב, uint8_t כיוון ) {uint8_t i; עבור (i = 0; i <= 3; i ++) {PORTB = כיוון ; / * חלק של סליל יחיד */ _עיכוב_מס (עיכוב); PORTB | = כיוון [i+1]; / * הוסף בחצי שלב */ _עיכוב_מס (עיכוב); }} הפקודה הראשונה של PORTB קובעת קוטב יחיד לחיובי וכל השאר לשלילי. ואז זה ממתין. ואז הפקודה השנייה של PORTB מגדירה את הקוטב השני (בצד השני של ההתפתלות) לחיובי, ומעסיק את שתי הפיתולים עבור 1.4x המומנט (ו -2 פעמים הנוכחי). להלן רשימת תוכניות מלאה. שני מערכים מוגדרים כעת (בכיוון השעון, נגד כיוון השעון) ולשניהם יש 5 אלמנטים כל אחד כדי לאפשר את כניסת i+1 בפונקציית halfStepping.

שלב 7: הוסף נהג מנוע

הוסף נהג מנוע
הוסף נהג מנוע
הוסף נהג מנוע
הוסף נהג מנוע
הוסף נהג מנוע
הוסף נהג מנוע

בינתיים הכל טוב.

הבעיה היחידה היא שלמנוע אין כל כך הרבה מומנט, מה שיכול להיות בגלל שהמעבד יכבה רק 50mA לסיכה. השלב הבא הברור יהיה לחבר אותו לנהג מנוע כדי לספק לו יותר מיץ. אבל אז קצת חושב: אני נוסע רק עם 5 וולט, וההתנגדות לסלילת סלילים היא ~ 125 אוהם. מה שאומר שהמנוע שואב רק 40mA לסיכה, והוא צריך להיות מונע מצוין על ידי שבב ה- AVR (הבשרני!). אז כדי לקבל יותר מתח המניע את המנוע, חיברתי אותו לשבב SN754410 H-bridge. המעגל די פשוט. כל סיכה מה- AVR נכנסת לקלט, וסיכות הפלט המתאימות עוברות אל המנוע. השבב צריך 5v לקטע ההיגיון ויכול לקחת הרבה יותר מתח בקטע המנוע. הפעלתו על 11.25v (שלוש סוללות 3.6v) עזרה מעט. מומנט ניכר יותר לאצבע שלי, אבל זה עדיין לא תחנת כוח. עם זאת, לא רע עבור מנוע שהוא קטן מניקל. ועכשיו המעגל הפך לנהג מנוע צעד דו-קוטבי לכללי. נוסף 29 בנובמבר: הפעילו את המנוע אתמול בלילה ב -12 וולט לזמן מה וזה התחיל להתחמם. אני לא בטוח אם מדובר בבעיית תדר מהדהד או שפשוט היה יותר מדי זרם עבור הפיתולים. כך או כך, היזהר מעט אם אתה נוהג במנוע הקטן הזה עם מתח גדול יותר.

שלב 8: הסוף

אז מה למדתי? נהיגה במנוע צעד עם AVR (ושבב H-bridge) היא די קלה, אפילו במצב חצי מהלך "מהודר".

עדיין לא בטוח מה אעשה עם מנועי הצעד הקטנים. הצעות כלשהן?

מוּמלָץ: