- חומרים נדרשים
- מנוע צעד (28BYJ-48)
- ULN2003 נהג מנוע IC
- תרשים מעגלים וחיבורים
- מנוע צעד מסתובב עם STM32F103C8
- תכנות STM32 למנוע צעד
מנוע צעד הוא מנוע DC ללא מברשות, שניתן לסובב אותו בזוויות קטנות, זוויות אלה נקראות צעדים. באופן כללי, מנוע צעד משתמש ב -200 שלבים להשלמת סיבוב של 360 מעלות, פירושו שהוא מסתובב ב -1.8 מעלות לכל צעד. מנוע צעד משמש במכשירים רבים הזקוקים לתנועה סיבובית מדויקת כמו רובוטים, אנטנות, כוננים קשיחים וכו '. אנו יכולים לסובב את מנוע הצעד לכל זווית מסוימת על ידי מתן הוראות מתאימות. בעיקר שני סוגים של מנועי צעד זמינים, קוטבי ו Bipolar. חד קוטבי קל יותר לתפעול, שליטה וגם קל יותר להשיג. כאן במדריך זה אנו מממשקים את מנוע הצעד עם לוח STM32F103C8 (גלולה כחולה).
חומרים נדרשים
- STM32F103C8 (גלולה כחולה)
- מנוע צעד (28BYJ-48)
- ULN2003 IC
- פוטנציומטר 10k
- קרש לחם
- חוטי מגשר
מנוע צעד (28BYJ-48)
28BYJ-48 הוא מנוע צעד חד קוטבי הדורש אספקת 5 וולט. המנוע כולל סידור חד קוטבי עם 4 סלילים וכל סליל מדורג ל + 5 וולט ולכן קל יחסית לשלוט עליו עם כל בקרי מיקרו כמו Arduino, Raspberry Pi וגם STM32. אבל אנחנו צריכים כונן מנוע IC כמו ULN2003 כדי להניע אותו, כי מנועי צעד צורכים זרם גבוה וזה עלול לפגוע במיקרו-בקרים.
נתונים חשובים נוספים שיש לשים לב אליהם הם זווית הצעד: 5.625 ° / 64. משמעות הדבר היא שהמנוע כאשר הוא פועל ברצף של 8 שלבים ינוע 5.625 מעלות לכל צעד וזה ייקח 64 צעדים (5.625 * 64 = 360) כדי להשלים סיבוב מלא אחד. מפרטים אחרים ניתנים בגיליון הנתונים להלן:
בדוק גם ממשק עם מנוע צעד עם מיקרו-בקרים אחרים:
- מנוע צעד משולב עם Arduino Uno
- בקרת מנוע צעד עם פטל פי
- ממשק מנוע צעד עם מיקרו-בקר 8051
- ממשק מנוע צעד עם מיקרו-בקר PIC
ניתן לשלוט על מנוע צעד גם ללא כל מיקרו-בקר, עיין במעגל נהג מנוע צעד זה.
ULN2003 נהג מנוע IC
הוא משמש להנעת המנוע בהתאם לפולסים המתקבלים ממיקרו-בקר. להלן תרשים התמונה של ULN2003:
סיכות (IN1 עד IN7) הן סיכות קלט ו- (OUT 1 ל- OUT 7) הן סיכות יציאה מתאימות. ל- COM ניתן מתח מקור חיובי הנדרש למכשירי פלט. חיבורים נוספים עבור מנוע צעד ניתנים להלן בסעיף דיאגרמת המעגל.
תרשים מעגלים וחיבורים
להלן הסבר החיבורים לתרשים המעגל לעיל.
STM32F103C8 (גלולה כחולה)
כפי שניתן לראות בתרשים שלהלן, סיכות ה- PWM מסומנות בתבנית גל (~), ישנם 15 פינים כאלה אשר יכולים לשמש להפקת דופק למנוע צעד. אנו זקוקים לארבעה פינים בלבד, אנו משתמשים (PA0 toPA3).
STM32F103C8 עם ULN2003 מנוע נהג IC
סיכות (PA0 ל- PA3) נחשבות כסיכות יציאה המחוברות עם סיכות כניסה (IN1-IN4) של ה- ULN2003 IC.
סיכות STM32F103C8 |
סיכות של ULN2003 IC |
PA0 |
IN1 |
PA1 |
IN2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC עם מנוע צעד (28BYJ-48)
סיכות הפלט (OUT1-OUT4) של ULN2003 IC מחוברות לסיכות מנועי הצעד (כתום, צהוב, ורוד וכחול).
סיכות של ULN2003 IC |
סיכות של מנוע צעד |
OUT1 |
תפוז |
OUT2 |
צהוב |
OUT3 |
וָרוֹד |
OUT4 |
כָּחוֹל |
COM |
אָדוֹם |
STM32F103C8 עם פוטנציומטר
פוטנציומטר משמש לקביעת מהירות מנוע הצעד.
פוטנציומטר |
STM32F103C8 |
שמאלה (קלט) |
3.3 |
מרכז (פלט) |
PA4 |
ימני (GND) |
GND |
מנוע צעד מסתובב עם STM32F103C8
להלן מספר שלבים להפעלת מנוע הצעד:
- הגדר את המהירות של מנוע צעד על ידי פוטנציומטר משתנה.
- לאחר מכן הזן ידנית צעדים לסיבוב בכיוון השעון (+ ערכים) או בכיוון נגד כיוון השעון (-ערכים) באמצעות מוניטור SERIAL הקיים ב- ARDUINO IDE (כלים-> צג סידורי) או CTRL + SHIFT + M.
- על פי ערך הקלט שניתן במוניטור סדרתי שלבים מסוימים של סיבוב מתרחשים במנוע צעד.
לדוגמה
ערך שניתן במוניטור סדרתי |
רוֹטַציָה |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
תכנות STM32 למנוע צעד
כמו ההדרכה הקודמת, תיכנתנו את ה- STM32F103C8 עם Arduino IDE דרך יציאת USB ללא שימוש במתכנת FTDI. כדי ללמוד על תכנות STM32 עם Arduino IDE לחץ על הקישור. אנחנו יכולים להמשיך לתכנת אותו כמו ארדואינו. הקוד השלם ניתן בסוף הפרויקט.
ראשית עלינו לכלול את קבצי הספרייה המדרגה #include
#לִכלוֹל
ואז אנו מגדירים לא. שלבים להשלמה בסיבוב, כאן אנו משתמשים ב- 32 מכיוון שאנו משתמשים בצעד מלא (4 רצפים) כך (360/32 = 11.25 מעלות). אז לצעד אחד, הפיר נע 11.25 מעלות שהיא זווית צעד. ברצף 4 שלבים, נדרשים 4 שלבים לסיבוב שלם אחד.
# הגדר שלבים 32
אנו יכולים גם להשתמש במצב חצי צעד שבו יש זווית צעד של רצף 8 (360/64 = 5.625).
צעדים לכל מהפכה = 360 / STEP ANGLE
כאשר אנו קובעים מהירות עלינו לקחת ערך אנלוגי מ- PA4 המחובר לפוטנציומטר. אז אנחנו חייבים להכריז על סיכה בשביל זה
const int speedm = PA4
לאחר מכן המירנו את הערך האנלוגי לדיגיטלי על ידי אחסון ערכים אלה במשתנה מסוג שלם, לאחר מכן עלינו למפות את ערכי ADC להגדרת מהירות ולכן נשתמש בהצהרה הבאה. למידע נוסף על שימוש ב- ADC עם STM32 כאן.
int adc = analogRead (speedm); int result = map (adc , 0, 4096, 1, 1023);
כדי להגדיר מהירות, אנו משתמשים ב- stepper.setSpeed (תוצאה); יש לנו טווח מהירות של (1-1023).
עלינו ליצור מופע כמו למטה כדי לקבוע את הפינים המחוברים למנוע. היזהר בשלבים אלה מכיוון שרובם עושים טעות כאן בתבנית זו. הם נותנים דפוס שגוי ובגלל זה סלילים לא יכולים להיות אנרגטיים.
צעד צעד (STEPS, PA0, PA2, PA1, PA3);
ההצהרה למטה משמשת לקבלת ערך הצעדים מהצג הטורי. לדוגמא אנו זקוקים ל -2048 ערכים לסיבוב מלא אחד (32 * 64 = 2048) כלומר 64 יהיה יחס ההילוכים ו -32 יהיה רצף חצי צעד לסיבוב אחד.
סובב = Serial.parseInt ();
הקוד שלמטה משמש כדי להתקשר למופע ולהפעיל את המנוע. אם ערך הסיבוב הוא 1 הוא מכנה את צעד הפונקציה פעם אחת ומהלך אחד נעשה.
stepper.step (סובב);
הקוד המלא עם סרטון ההפגנה מופיע להלן. בדוק כאן גם את כל הפרויקטים הקשורים למנוע צעד, עם ממשקים עם מיקרו-בקרים שונים אחרים