- רכיבים נדרשים
- תיאור סיכה של מנוע סרוו
- תרשים מעגל
- מנוע סרוו בשליטה עם AVR ATmega16
- תכנות Atmega16 באמצעות USBasp
מנועי סרוו נמצאים בשימוש נרחב כאשר נדרשת שליטה מדויקת כמו רובוטים, מכונות אוטומטיות, זרוע רובוטית וכו '. עם זאת, היקף מנוע הסרוו אינו מוגבל עד כדי כך וניתן להשתמש בו ביישומים רבים. למידע נוסף על היסודות, התיאוריה ועקרון העבודה של מנוע סרוו, עקוב אחר הקישור.
בעבר התממשקנו בין סרוו מנוע למיקרו-בקרים רבים:
- ממשק מנוע סרוו עם ARM7-LPC2148
- מנוע סרוו ממשק עם MSP430G2
- מנוע סרוו ממשק עם STM32F103C8
- ממשק מנוע סרוו עם PIC מיקרו-בקר באמצעות MPLAB ו- XC8
- מנוע סרוו ממשק עם Arduino Uno
- ממשק מנועי סרוו עם מיקרו-בקר 8051
במדריך זה, נתממש את המיקרו סרוו מנוע עם מיקרו-בקרת Atmega16 AVR באמצעות Atmel Studio 7.0. מנוע סרוו מדורג לעבוד ב 4.8-6 וולט. אנו יכולים לשלוט בזווית הסיבוב והכיוון שלה על ידי החלת אותות דופק או PWM. שים לב שמנועי הסרוו לא יכולים לנוע לסיבוב מלא של 360 מעלות, ולכן משתמשים בהם במקום בו אין צורך בסיבוב רציף. זווית הסיבוב היא 0 -180 מעלות או (-90) - (+90) מעלות.
רכיבים נדרשים
- מנוע מיקרו סרוו SG90 Tower Pro
- מיקרו-בקרת Atmega16
- מתנד קריסטל 16Mhz
- שני קבלים 100nF
- שני קבלים 22pF
- לחץ על הכפתור
- חוטי מגשר
- קרש לחם
- USBASP v2.0
- Led (בכל צבע)
תיאור סיכה של מנוע סרוו
- אדום = ספק כוח חיובי (4.8V עד 6V)
- חום = קרקע
- כתום = אות בקרה (סיכת PWM)
תרשים מעגל
חבר את כל הרכיבים כמוצג בתרשים להלן כדי לסובב את מנוע הסרוו באמצעות מיקרו בקר AVR. ישנם ארבעה סיכות PWM, אנו יכולים להשתמש בכל סיכת PWM של Atmega16. במדריך זה אנו משתמשים בפין PD5 (OC1A) ליצירת PWM. PD5 מחובר ישירות לחוט כתום של מנוע סרוו שהוא סיכת אות קלט. חבר כל נורית צבע למחוון מתח. כמו כן, חבר כפתור אחד בלחצן איפוס לאיפוס לאיפוס Atmega16 במידת הצורך. חבר את Atmega16 למעגל מתנד קריסטל תקין. כל המערכת תופעל באמצעות אספקת 5 וולט.
ההתקנה המלאה תיראה להלן:
מנוע סרוו בשליטה עם AVR ATmega16
כמו מנוע צעד, מנוע סרוו אינו זקוק לשום נהג חיצוני, למשל ULN2003 או נהג מנוע L293D. רק PWM מספיק בכדי להניע את מנוע הסרוו וקל מאוד ליצור PWM ממיקרו-בקר. המומנט של מנוע סרוו זה הוא 2.5 ק"ג / ס"מ, כך שאם אתה זקוק למומנט גדול יותר, סרוו זה אינו מתאים.
כידוע שמנוע הסרוו מחפש דופק כל 20ms ואורך הדופק החיובי יקבע את זווית הסיבוב של מנוע הסרוו.
התדר הנדרש לקבלת הדופק 20ms הוא 50Hz (f = 1 / T). אז לגבי מנוע סרוו זה, המפרט אומר שעבור 0 מעלות אנחנו צריכים 0.388ms, עבור 90 מעלות אנחנו צריכים 1.264ms ועבור 180 מעלות אנחנו צריכים דופק של 2.14ms.
כדי ליצור פולסים מוגדרים נשתמש ב- Timer1 של Atmega16. תדר המעבד הוא 16Mz אך אנו נשתמש רק ב- 1Mhz מכיוון שאין לנו ציוד היקפי רב המחובר למיקרו-בקר ואין עומס רב על המיקרו-בקר, ולכן 1Mhz יעשה את העבודה. ה- Prescaler מוגדר ל- 1. אז השעון מחולק ל- 1Mhz / 1 = 1Mhz (1uS) וזה נהדר. טיימר 1 ישמש כמצב PWM מהיר כלומר מצב 14. ניתן להשתמש במצבים שונים של טיימרים כדי ליצור רכבת דופק רצויה. ההפניה ניתנת להלן ותוכל למצוא תיאור נוסף בגיליון הנתונים הרשמי של Atmega16.
כדי להשתמש ב- Timer1 כמצב PWM מהיר נצטרך ערך ה- TOP של ICR1 (רישום לכידת הקלט 1). כדי למצוא את הנוסחה השתמשו בערך TOP המפורט להלן:
f pwm = f מעבד / nx (1 + TOP)
ניתן לפשט זאת ל, TOP = ( f cpu / ( f pwm xn)) - 1
איפה, N = ערך הגדרת Prescaler
מעבד f = מעבד Frequencyy
f pwm = רוחב הדופק של מנוע סרוו שהוא 50Hz
כעת חישב את ערך ה- ICR1 כיוון שיש לנו את כל הערך הנדרש, N = 1, f cpu = 1MHz, f pwm = 50Hz
פשוט הכניסו את הערכים לנוסחה שלמעלה ונקבל
ICR1 = 1999
המשמעות היא להשיג תואר מקסימלי כלומר 180 0 ה- ICR1 צריך להיות 1999.
עבור גבישים 16MHz ו Prescaler מוגדרים ל 16, יהיה לנו
ICR1 = 4999
עכשיו בואו נמשיך לדון במערכון.
תכנות Atmega16 באמצעות USBasp
קוד AVR מלא לשליטה במנוע סרוו ניתן להלן. קוד הוא פשוט וניתן להבין אותו בקלות.
כאן קידדנו את ה- Atmega16 כדי לסובב את מנוע הסרוו בין 0 0 ל 180 0 וחוזר שוב מ 180 0 ל 0 0. מעבר זה יסתיים ב 9 שלבים כלומר 0 - 45 - 90 - 135 - 180 - 135 - 90 - 45 - 0. לעיכוב נשתמש בספרייה הפנימית של Atmel Studio כלומר.
חבר את USBASP v2.0 שלך ופעל לפי ההוראות בקישור זה כדי לתכנת את Atmega16 AVR Microcontroller באמצעות USBASP ו- Atmel Studio 7.0. פשוט בנה את השרטוט והעלה באמצעות שרשרת כלים חיצונית.
הקוד המלא עם סרטון ההפגנה מופיע להלן. למידע נוסף על מנועי סרוו על ידי ידיעת חשיבותם ברובוטיקה.