תוכן עניינים:

נהיגה מוטורית פרופורציונלית Atmega128A - ATMEL ICE AVR טיימר בקרת UART PWM: 4 שלבים
נהיגה מוטורית פרופורציונלית Atmega128A - ATMEL ICE AVR טיימר בקרת UART PWM: 4 שלבים

וִידֵאוֹ: נהיגה מוטורית פרופורציונלית Atmega128A - ATMEL ICE AVR טיימר בקרת UART PWM: 4 שלבים

וִידֵאוֹ: נהיגה מוטורית פרופורציונלית Atmega128A - ATMEL ICE AVR טיימר בקרת UART PWM: 4 שלבים
וִידֵאוֹ: שיפורי מכוניות בישראל, וארבעה גלגלים מנצחים מלחמה 2024, נוֹבֶמבֶּר
Anonim
Atmega128A נהיגה מוטורית פרופורציונלית - ATMEL ICE AVR טיימר בקרת UART PWM
Atmega128A נהיגה מוטורית פרופורציונלית - ATMEL ICE AVR טיימר בקרת UART PWM
Atmega128A נהיגה מוטורית פרופורציונלית - ATMEL ICE AVR טיימר בקרת UART PWM
Atmega128A נהיגה מוטורית פרופורציונלית - ATMEL ICE AVR טיימר בקרת UART PWM
Atmega128A נהיגה מוטורית פרופורציונלית - ATMEL ICE AVR טיימר בקרת UART PWM
Atmega128A נהיגה מוטורית פרופורציונלית - ATMEL ICE AVR טיימר בקרת UART PWM
נהיגה מוטורית פרופורציונאלית Atmega128A - בקרת טיימר ATMEL ICE AVR טיימר UART PWM
נהיגה מוטורית פרופורציונאלית Atmega128A - בקרת טיימר ATMEL ICE AVR טיימר UART PWM

במדריך זה אסביר לך כיצד

  • לשלוט במנוע DC עם PWM
  • לתקשר באמצעות UART
  • לטפל בהפסקת טיימר

קודם כל, נשתמש בלוח פיתוח מערכת AVR Core שתוכל למצוא ב- Aliexpress בסביבות 4 דולר. קישור לוח הפיתוח נמצא כאן. אנו נשתמש גם ב- Atmel ICE Debugger וב- Atmel Studio כדי לתכנת ולפתור באגים בתוכנה שלנו.

שלב 1: צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון

צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון
צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון
צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון
צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון
צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון
צלילה עמוקה לתוך גליון הנתונים וקוד המקור - מהירות השעון

ב 1. הכדור אנו מגדירים את תדר הגביש שלנו שבו אנו יכולים לראות על לוח הפיתוח

שלב 2: הגדרת רישומי UART

הגדרת רשימות UART
הגדרת רשימות UART
הגדרת רשימות UART
הגדרת רשימות UART
הגדרת רשימות UART
הגדרת רשימות UART
הגדרת רשימות UART
הגדרת רשימות UART

על מנת לתקשר עם UART עליך להגדיר את רשימות קצב השידור של USART - UBRRnL ו- UBRRnH בצורה נכונה אתה יכול לחשב זאת בעצמך או להשתמש במחשבון מקוון כדי לקבל ערכים נכונים בקלות

מחשבון מקוון

ruemohr.org/~ircjunk/avr/baudcalc/avrbaudca…

אז ערך MYUBBR מחושב אז, ברישום UCSR0B אנו מאפשרים RXEN0 (recv enable) TXEN0 (transmit enable) ו- RXCIE0 (RX להפסקה). ברישום UCSR0C אנו בוחרים גודל סיביות של 8 סיביות.

לאחר שנקבע את ביט RUT, עלינו להוסיף פונקציית ISR עבור USART0_RX_vect

ISR (USART0_RX_vect) {char rcvChar = UDR0; if (rcvChar! = '\ n') {buffer [bufferIndex] = rcvChar; bufferIndex ++; }}

אסור לך לעשות שום היגיון עסקי בשגרת השירות שלך. עליך לגרום לפונקציה לחזור בהקדם האפשרי.

שלב 3: הגדרות PWM

הגדרות PWM
הגדרות PWM

בפונקציה initPWM הגדרנו את מדריך שעוני המעבד שלנו, מצב טיימר/מונה כ- PWM מהיר והגדרנו את התנהגותו עם סיביות COM

כמו כן עלינו לחבר את מנוע DC לסיכת OC2 המפורטת בטבלה 66. השווה מצב פלט, מצב PWM מהיר בגיליון הנתונים שלנו, תראה גם שסיכת OC2 היא (OC2/OC1C) PB7

שלב 4: תוצאה

תוֹצָאָה
תוֹצָאָה
תוֹצָאָה
תוֹצָאָה

כאשר אתה מעלה את קוד המקור בקובץ המצורף.

אתה יכול להזין ערך PWM חדש (0-255) מ- UART (אתה יכול להשתמש במסוף יציאה טורית של arduino) כדי להגדיר את מהירות מנוע DC.

מוּמלָץ: