
תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-23 14:46


שלום שוב חברים:) לכן, בפרויקט זה נשלוט על מנוע סרוו עם STM32F4 ARM MCU. במקרה שלי, אשתמש בלוח גילוי, אך אם אתה מבין את עיקר הבעיה, תוכל ליישם אותו עבור כל MCU. לכן. בואו נתחיל:)
שלב 1: דרישות חומרה ותוכנה
מבחינת חומרה נצטרך:
- MCU שהוא במקרה שלי STM32f4 לוח גילוי
- מנוע סרוו נפוץ, כמו SG90 או כל אחד אחר
מבחינת תוכנה נצטרך:
- STM32CubeMX
- Keil uVision
אם יש לך את כל אלה, קפץ לשלב הבא:)
שלב 2: תצורת STM32CubeMX
כידוע, לשליטה במנוע סרוו אנו זקוקים לאות PWM. הדרישות מבחינת אות PWM הן כאלה:
- תקופת PWM חייבת להיות 20 mS
- הזמן חייב להיות בין 0.5 mS ל 2.5 mS. כאשר הזמן הוא 0.5 mS, הסרוו יפנה 0 מעלות, 1.5 mS ל- 90 מעלות ו- 2.5 mS ל- 180 מעלות.
לכן, עלינו להגדיר את PWM ולשם כך נשתמש ב- Timer1.
- ראשית, בחר TIM1 מהקטע טיימרים. השלב הזה
-
לאחר מכן, מקטע 'מצב'
- בחר שעון פנימי שלב זה
- PWM Generation CH1 שלב זה
-
לאחר מכן, מקטע התצורה
- הגדר Prescaler ל 160 שלב זה
- הגדר את תקופת המונה לשנת 2000 שלב זה
- הגדר את הדופק ל- 50 שלב זה
- בנוסף, מתצורת השעון הגדר את שעוני טיימר APB1 ל -16 מגה -הרץ. השלב הזה
עכשיו, בואו נדבר קצת על השלב הזה:
תדירות שעון טיימר APB1 שלנו היא 16MHz. אז זה אומר שצריך 16, 000, 000 קרציות כדי לקבל שנייה אחת. עם זאת, הגדרנו את מכשיר ההרשמה שלנו ל -160. המשמעות היא שאנו מחלקים את התדירות במספר זה והפחתנו את מספר הקרציות ל -100,000. לכן, לשנייה אחת אנו זקוקים ל -100,000 קרציות. עם זאת, אנו זקוקים ל 20 מס של תקופת PWM כפי שצייננו קודם. אז, בהתבסס על מתמטיקה פשוטה, אנחנו צריכים 2000 קרציות עבור 20mS. לכן, על ידי הגדרת תקופת הנגד לשנת 2000 אנו קובעים את תקופת האות PWM שהיא 20mS. כעת עלינו לקבוע את מספר הסימון לקבלת זמנים מופעלים מ- 0.5mS עד 2.5mS. אנו יכולים לקבל את המשוואה הזו ממתמטיקה פשוטה והיא:
ב-_Time = (Tick_Number / 100). זכור כי זוהי שעה_המשנה את זווית מנוע הסרוו. אז, מתחת לתמונה אני מסכם את השלב הזה. אם יש לך שאלה כתוב בתגובות ואני אענה בהקדם האפשרי.
תמונת חישובים
לאחר ביצוע כל אלה יוצרים קוד:)
שלב 3: קידוד UVision Keil
אז בואו נקבע קודם כל מה אנחנו רוצים לעשות? אנחנו רוצים לכתוב פונקציה שמקבלת תואר ולכתוב אותה לסרוו. אם כן, כיצד נעשה זאת? כפי שאמרנו בעבר, על מנת לשנות זווית עלינו לשנות את הזמן. הזוויות שלנו משתנות בין [0, 180] לבין מספר הקרציות שלנו הקובע את שינויי הזמן בין [50, 250]. לכן, אנו זקוקים לפונקציית מיפוי הממפה זווית נתונה לטווח מספר הקרציות. לדוגמה, עבור 0 קרציות 50 מעלות, עבור 180 מעלות 250 קרציות וכן הלאה … אז בואו נכתוב את פונקציית המיפוי שלנו:
int map (int st1, int fn1, int st2, int fn2, int value) {return (1.0*(value-st1))/((fn1-st1)*1.0)*(fn2-st2)+st2; }
זוהי פונקציית המיפוי שלנו. מעניין אותך איך זה נגזר? ואז תקרא את זה. לכן, אנו לוקחים את הטווחים שלנו ואת הערך שברצוננו למפות.
כעת, בואו נכתוב פונקציה המקבלת זווית וממפה אותה לטווח הקרציות:
servo_write חלל (זווית int) {htim1. Instance-> CCR1 = מפה (0, 180, 50, 250, זווית); }
כפי שאתה יכול לראות, קוד זה מקבל זווית וממפה אותו לטווח מספר הקרציות. ואז, מספר הקרציות נתון לרשם CCR1 השולט בזמן הזמן וכך, בזווית.
עם זאת, על מנת שכל אלה יעבדו אנו מתחילים תחילה את ה- pwm שניתן לבצע על ידי שורת קוד בלבד:
HAL_TIM_PWM_Start (& htim1, TIM_CHANNEL_1);
אז, יש לנו פונקציה שמקבלת זווית וכותבת אותה לסרוו. בואו נבדוק את זה ונכתוב את פונקציית הטאטא שלנו שהיא קלה מאוד:
void servo_sweep (void) {for (int i = 0; i <= 180; i ++) {servo_write (i); HAL_Dayay (10); } עבור (int i = 180; i> = 0; i--) {servo_write (i); HAL_Delay (10); }}
אז, זה רק לספור עד 180 ואז להוריד עד 0 ולכתוב את הערכים האלה לסרוו:) אז, בואו נראה את התוצאה!
שלב רביעי: התוצאה:)
אם כך, זהו הסוף. אם יש לך שאלה אנא שאל. אני אשמח על מנת לענות להם. תודה רבה על הקריאה ומקווה שנתראה בפרויקט הבא:)
מוּמלָץ:
Arduino כיצד לחבר מנועי סרוו מרובים - PCA9685 הדרכה: 6 שלבים

Arduino כיצד לחבר מנועי סרוו מרובים - PCA9685 הדרכה: במדריך זה נלמד כיצד לחבר מספר מנועי סרוו באמצעות מודול PCA9685 ומודול arduino.PCA9685 הוא טוב מאוד כאשר אתה צריך לחבר מספר מנועים, תוכל לקרוא עוד על זה כאן https : //www.adafruit.com/product/815 צפה ב- Vi
כיצד להפעיל מנועי סרוו באמצעות מוטו: ביט עם מיקרו: ביט: 7 שלבים (עם תמונות)

כיצד להפעיל מנועי סרוו באמצעות מוטו: ביט עם מיקרו: ביט: אחת הדרכים להרחיב את הפונקציונליות של המיקרו: ביט היא להשתמש בלוח בשם moto: bit מאת SparkFun Electronics (כ-15-20 $). הוא נראה מסובך ויש לו הרבה תכונות, אבל לא קשה להפעיל ממנו מנועי סרוו. Moto: bit מאפשר לך
דגם שעון ייחודי המופעל על ידי מנועי סרוו ארדואינו: 5 שלבים

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

מדריך Arduino - בקרת מנועי סרוו עם פוטנציומטר: מדריך זה הוא הגרסה הכתובה של " Arduino: כיצד לשלוט במנוע סרוו עם פוטנציומטר " סרטון יוטיוב שהעליתי לאחרונה. אני ממליץ לך בחום לבדוק את זה. בקר בערוץ YouTube
מדריך Arduino - בקרת מנועי סרוו עם Arduino: 5 שלבים

הדרכת Arduino - בקרת מנועי סרוו עם Arduino: להוראה זו היא הגרסה הכתובה של " Arduino: כיצד לשלוט במנוע סרוו עם Arduino " סרטון יוטיוב שהעליתי לאחרונה. אני ממליץ לך בחום לבדוק את זה. בקר בערוץ YouTube