מנועי סרוו שימושיים מאוד במוצרי אלקטרוניקה ומערכות משובצות. אתה יכול למצוא את השימוש במנוע סרוו בכל מקום סביבך, הם משמשים בצעצועים, רובוטים, מגש תקליטורים של מחשב, מכוניות, מטוס וכו '. הסיבה להיקף רחב זה היא שמנוע סרוו הוא אמין ומדויק מאוד. אנחנו יכולים לסובב אותו לכל זווית מסוימת. הם זמינים במגוון רחב, יוצרים מנוע מומנט גבוה למומנט נמוך. במדריך זה אנו הולכים לממשק מנוע סרוו למיקרו-בקר 8051 (AT89S52).
ראשית עלינו להבין את עקרון העבודה של מנועי סרוו. מנוע סרוו עובד על עיקרון PWM (אפנון רוחב הדופק), פירושו שזווית הסיבוב שלו נשלטת על ידי משך הדופק שהופעל עד PIN הבקרה שלו. בעיקרון מנוע סרוו מורכב ממנוע DC אשר נשלט על ידי נגד משתנה (פוטנציומטר) וכמה הילוכים. כוח במהירות גבוהה של מנוע DC מומר מומנט על ידי הילוכים. אנו יודעים ש WORK = FORCE X DISTANCE, במנוע DC כוח פחות ומרחק (מהירות) גבוה ובסרוו, כוח הוא גבוה ומרחק פחות. פוטנציומטר מחובר לפיר המוצא של סרוו, כדי לחשב את הזווית ולעצור את מנוע DC בזווית הנדרשת.
מנוע סרוו יכול להיות מסובב בין 0 ל -180 מעלות, אך הוא יכול לעלות ל -210 מעלות, תלוי בייצור. ניתן לשלוט על דרגת סיבוב זו על ידי מריחת דופק LOGIC ברמה 1 למשך זמן בין 1ms ל 2ms. 1 ms יכול לסובב סרוו ל 0 מעלות, 1.5 ms יכול לסובב ל 90 מעלות ו 2 ms דופק יכול לסובב אותו ל 180 מעלות. משך זמן בין 1 לשני אלפיות השנייה יכול לסובב את מנוע סרוו לכל זווית שבין 0 ל -180 מעלות.
תרשים מעגל והסבר עבודה
מנוע סרוו כולל שלושה חוטים אדום עבור Vcc (ספק כוח), חום לקרקע, וכתום הוא חוט בקרה. ניתן לחבר את חוט הבקרה ל- 8051, חיברנו אותו לסיכה 2.1 של 8051. כעת עלינו לשמור את הסיכה הזו ללוגיקה 1 למשך 1ms כדי לסובב אותה 0 מעלות, 1.5ms ל 90 מעלות, 2 ms ל 180 מעלות. השתמשנו בטיימרים של שבב של 8051 כדי ליצור עיכוב. יצרנו עיכוב של 50us באמצעות הפונקציה "servo_delay", והשתמשנו בלולאה "for" כדי ליצור עיכוב במספר של 50us.
אנו משתמשים בטיימר 0 ובמצב 1, לכן שמנו 01H במרשם ה- TMOD. מצב 1 הוא מצב טיימר של 16 סיביות ו- TH0 מכיל בתים גבוהים ו- TL0 מכילים בתים נמוכים של טיימר של 16 סיביות. שמנו את FFD2 ברישום טיימר של 16 סיביות, FF ב- TH0 ו- D2 ב- TL0. הצבת FFD2 תיצור עיכוב של כ. 50 אותנו עם הקריסטל של 11.0592MHz. TR0 ו- TF0 הם הסיביות של רישום TCON, סיכת TR משמשת להפעלת טיימר בעת הגדרה ועצירה בעת איפוס (0). TF הוא דגל הצפה, מוגדר על ידי חומרה בעת הצפה וצריך לאפס אותו על ידי תוכנה. בעיקרון TF מספר על השלמת הטיימר, ומוגדר על ידי חומרה כאשר מעבר 16 טיימר מ- FFFFH עד 0000H. אתה יכול לקרוא על "8051 טיימרים" כדי להבין את חישוב הערך ברשומות הטיימרים, כדי ליצור עיכוב של 50 us.
כעת, כאשר נמדד מ- CRO, 13 לולאות של פונקציית servo_delay יתנו את העיכוב של 1 ms, אז התחלנו מ 1 ms (13 לולאות) ועברנו ל 2 ms (26 לולאות) כדי לסובב את הסרוו מ 0 ל 180 מעלות. אבל לאט לאט הגדלנו את העיכוב מ- 1ms, חילקנו חלון של 1ms ל -2 ms לשבעה חלקים כמו 1.14ms, 1.28 ms, 1.42ms וכן הלאה, כך שהסרוו יסתובב במספר של בערך. 26 מעלות (180/7). לאחר 180 זה יחזור אוטומטית ל 0 מעלות.