מנועי DC הם המנועים הנפוצים ביותר. מנועים אלה ניתן למצוא כמעט בכל מקום, החל מפרויקטים קטנים וכלה ברובוטיקה מתקדמת. בעבר התממשקנו מנוע DC עם מיקרו-בקרים רבים אחרים כמו Arduino, Raspberry pi והשתמשנו בו בפרויקטים רובוטיים רבים. היום אנו לומדים לשלוט במנוע DC באמצעות AVR Microcontroller Atmega16. אבל לפני שנמשיך בואו לדעת יותר על מנוע DC.
מהו מנוע DC?
מנוע DC הוא מכשיר ההופך אנרגיה חשמלית לאנרגיה מכנית. באופן ספציפי, מנוע DC משתמש בזרם DC להמרת אנרגיה חשמלית לאנרגיה מכנית. העיקרון הבסיסי של המנוע הוא האינטראקציה בין השדה המגנטי לזרם כדי לייצר כוח בתוך המנוע שעוזר למנוע להסתובב. לכן כאשר הזרם החשמלי מועבר דרך סליל בשדה מגנטי, נוצר כוח מגנטי המייצר מומנט וכתוצאה מכך תנועת המנוע. כיוון המנוע נשלט על ידי היפוך הזרם. כמו כן ניתן לשנות את מהירותו באמצעות מתח מתח מסופק. מכיוון שלמיקרו-בקרים יש סיכות PWM, כך שניתן להשתמש בה בכדי לשלוט על מהירות המנוע.
במדריך זה תודגם הפעלת מנוע DC באמצעות Atmega16. נהג מנוע L293D ישמש כדי להפוך את כיוון הזרם ובכך לכיוון התנועה. מנהל התקן המנוע L293D משתמש בתצורת מעגל H-Bridge המוציאה את הזרם הנדרש למנוע. שני כפתורי לחיצה משמשים לבחירת כיוון המנוע. אחד מהלחצנים משמש לבחירת סיבוב השעון והשני משמש לבחירת הפעולה נגד השעון של מנוע DC.
רכיבים נדרשים
- מנוע DC (5V)
- נהג מנוע L293D
- מיקרו-בקרת Atmega16
- מתנד קריסטל 16Mhz
- שני קבלים 100nF
- שני קבלים 22pF
- לחץ על הכפתור
- חוטי מגשר
- קרש לחם
- USBASP v2.0
- Led (בכל צבע)
תרשים מעגל
תכנות Atmega16 לבקרת מנוע DC
כאן ה- Atmega16 מתוכנת באמצעות USBASP ו- Atmel Studio7.0. אם אינך יודע כיצד לתכנת את Atmega16 באמצעות USBASP, היכנס לקישור. התוכנית המלאה ניתנת בסוף הפרויקט, פשוט העלה את התוכנית ל- Atmega16 והשתמש בשני כפתורי הלחיצה לסיבוב המנוע DC בכיוון השעון ובנגד כיוון השעון.מנוע DC מממשק באמצעות נהג מנוע L293D. מנוע DC יסתובב לשני כיוונים כאשר לוחצים על כפתור המתאים. כפתור הלחיצה האחד ישמש לסיבוב מנוע DC בכיוון השעון השעון וכפתור הלחיצה השני ישמש לסיבוב מנוע DC בכיוון החכם נגד השעון. ראשית הגדירו את תדר המעבד של המיקרו-בקר וכללו את כל הספריות הדרושות.
#define F_CPU 16000000UL #include #include
לאחר מכן, השתמש במשתנה אחד כדי לעקוב אחר סטטוס הלחיצה על כפתור. משתנה זה ישמש להגדרת כיוון המנוע.
int i;
בחר במצב קלט / פלט של GPIO באמצעות רישום כיווני הנתונים. בתחילה, הפוך את תפוקת סיכת המנוע לנמוכה ביותר כדי להימנע מהפעלת המנוע מבלי ללחוץ על כפתור.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
בדוק אם 1 st בלחיצת כפתור נלחץ מחובר PORTA4 של Atmega16 ולאחסן את מעמדה של כפתור לדחוף משתנה.
אם (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _עיכוב_מס (1000); }
באופן דומה לבדוק אם 2 nd בלחיצת כפתור נלחץ מחובר PORTA5 של Atmega16 ולאחסן את מעמדה של כפתור לדחוף משתנה.
אחרת אם (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _עיכוב_מס (1000); }
אם מעמדו של 1 st הכפתור נכון אז לסובב מנוע DC בכיוון חכם שעון ואם מצב של כפתור הדחיפה השני הוא נכון אז לסובב מנוע DC ב-שעון נגד חכם.
אם (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } אחר אם (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
אתה יכול לחבר סיכות מנוע לכל סיכה של GPIO, תלוי ב- GPIO המשמש. כמו כן, חשוב להשתמש במנוע הנהג IC כדי להפחית את העומס על המיקרו-בקר מכיוון שמיקרו-בקרים אינם מסוגלים לספק זרם נדרש להפעלת מנועי DC. לפרטים נוספים ופרויקטים אחרים המבוססים על מנועי DC, בקרו בקישור הנתון.
הקוד המלא וסרטון ההדגמה מופיע להלן.