תוכן עניינים:
- שלב 1: יצירת אות Pwm למשך 50 הרץ
- שלב 2: תוכנית Arduino למחזור עבודה משתנה
- שלב 3: לסירוגין בסיכות Arduino 50Hz
- שלב 4: נסיעה בגשר H וסינון אות Pwm
וִידֵאוֹ: Arduino Sinewave לממירים: 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
בפרויקט זה יצרתי אות SPWM (דופק גל סינוס רחב מאופנן) משני יציאות דיגיטליות של pwm arduino.
מכיוון שכדי להכין תוכנית כזו אני צריך לדבר על הרבה פונקציות ומאפיינים אחרים של הארדואינו הפרויקט המלא כולל תמונות אוסצילוסקופ ולתדרים שונים אנא בקר באתר שלי:
eprojectszone
שלב 1: יצירת אות Pwm למשך 50 הרץ
כדי ליצור אות 50Hz בתדר גבוה יותר יש צורך לבצע כמה חישובים. תדרים מארדואינו יכולים להיות במהירות 8 מגה -הרץ, אך אנו רוצים אות בעל מחזור עבודה משתנה.
כדי להבין את סוגי מחזורי העבודה המשתנים של ארדואינו אתה יכול לקרוא את 3 החלקים של אותו הודעה 1, 2 ו -3.
נניח שהתדר שלנו הוא 50Hz כלומר תקופת הזמן היא 20ms. אז 10ms היא תקופה של מחזור מחזור. בעשרות השניות האלה עלינו לקבל פולסים רבים עם מחזורי עבודה שונים המתחילים במחזורי עבודה קטנים, באמצע האות יש לנו מחזורי עבודה מרביים ולסיים גם עם מחזורי עבודה קטנים. כדי ליצור גל סינוס נשתמש בשני סיכות אחת עבור חצי מחזור חיובי ואחד לחצי מחזור שלילי. בהודעה שלנו לשם כך אנו משתמשים בסיכות 5 ו -6, כלומר טיימר 0.
לאות חלק אנו בוחרים pwm נכון בשלב בתדירות 31372 הרץ-ראה הודעה קודמת. אחת הבעיות הגדולות ביותר היא כיצד אנו מחשבים את מחזור ההפעלה הדרוש עבור כל דופק. לכן, מכיוון שהתדר שלנו הוא f = 31372Hz התקופה עבור כל דופק היא T = 1/31372 = 31.8 אותנו, כך שמספר הפולסים לחצי מחזור הוא N = 10ms/31.8us = 314 פולסים. כעת כדי לחשב את מחזור העבודה לכל דופק יש לנו y = sinx, אך במשוואה זו אנו זקוקים למעלות ולכן למחצית המחזור יש 180 מעלות עבור 314 פולסים. עבור כל דופק יש לנו 180/314 = 0.57deg/דופק. זה אומר שבכל דופק אנחנו מתקדמים קדימה עם 0.57 מעלות.
y הוא מחזור העבודה ו- x ערך המיקום במחזור חצי עבודה. בהתחלה x הוא 0, כי x = 0.57, x = 1.14 וכן הלאה עד x = 180.
אם אנו מחשבים את כל 314 הערכים נקבל מערך 314 אלמנטים (הקלד "int" לחישוב קל יותר על ידי arduino).
מערך כזה הוא:
int sinPWM = {1, 2, 5, 7, 10, 12, 15, 17, 19, 22, 24, 27, 30, 32, 34, 37, 39, 42, 44, 47, 49, 52, 54, 57, 59, 61, 64, 66, 69, 71, 73, 76, 78, 80, 83, 85, 88, 90, 92, 94, 97, 99, 101, 103, 106, 108, 110, 113, 115, 117, 119, 121, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 169, 171, 173, 175, 177, 178, 180, 182, 184, 185, 187, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 211, 212, 213, 215, 216, 217, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 237, 238, 239, 240, 240, 241, 242, 242, 243, 243, 244, 244, 245, 245, 246, 246, 247, 247, 247, 248, 248, 248, 248, 249, 249, 249, 249, 249, 250, 250, 250, 250, 249, 249, 249, 249, 249, 248, 248, 248, 248, 247, 247, 247, 246, 246, 245, 245, 244, 244, 243, 243, 242, 242, 241, 240, 239, 238, 237, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 219, 217, 21 6, 215, 213, 212, 211, 209, 208, 207, 205, 204, 202, 201, 199, 198, 196, 195, 193, 192, 190, 188, 187, 185, 184, 182, 180, 178, 177, 175, 173, 171, 169, 168, 166, 164, 162, 160, 158, 156, 154, 152, 150, 148, 146, 144, 142, 140, 138, 136, 134, 132, 130, 128, 126, 124, 121, 119, 117, 115, 113, 110, 108, 106, 103, 101, 99, 97, 94, 92, 90, 88, 85, 83, 80, 78, 76, 73, 71, 69, 66, 64, 61, 59, 57, 54, 52, 49, 47, 44, 42, 39, 37, 34, 32, 30, 27, 24, 22, 19, 17, 15, 12, 10, 7, 5, 2, 1};
אתה יכול לראות שכמו גל סינוס מחזור העבודה הוא הנמוך ביותר באלמנט הראשון והאחרון והגבוה ביותר באמצע.
שלב 2: תוכנית Arduino למחזור עבודה משתנה
בתמונה למעלה יש לנו אותות מחזורי חובה משתנים עם ערכים מהמערך.
אבל איך עושים אות כזה ??
החלק של התוכנית שלהלן משתמש בפסיקות לשינוי ערכי מחזורי העבודה
sei (); // אפשר הפרעות
}
ISR (TIMER1_COMPA_vect) {// הפרעה כאשר טיימר 1 תואם לערך OCR1A
if (i> 313 && OK == 0) {// ערך סופי מהווקטור עבור סיכה 6
i = 0; // עבור לערך הראשון של וקטור (מערך)
אישור = 1; // הפעל סיכה 5
}
x = sinPWM ; // x לקחת את הערך מהווקטור המתאים למיקום i (i הוא אפס לאינדקס)-ערך מחזור החובה
i = i+1; // עבור למיקום הבא
}
שלב 3: לסירוגין בסיכות Arduino 50Hz
מכיוון שכל סיכה מייצרת מחזור חצי עבודה בלבד כדי ליצור גל סינוס מלא אנו משתמשים בשני סיכות המתחלפות אחת אחרי השנייה לאחר 10 שניות מדויקות (למשך 50 הרץ). שינוי הפינים הזה מתבצע בסוף המערך- אחרי שנניח שסיכה 5 יצרה 314 פולסים סיכה זו כבויה ומופעלת סיכה 6 מה שהופך את אותו הדבר אך למחזור העבודה השלילי.
מכיוון שארדואינו יכול לייצר רק אותות חיוביים מחזור עבודה שלילי מתבצע בגשר h- אתה יכול לקרוא כאן על זה
התוכנית לשינוי סיכות:
sei (); // אפשר הפרעות
}
ISR (TIMER1_COMPA_vect) {// הפרעה כאשר טיימר 1 תואם לערך OCR1A
if (i> 313 && OK == 0) {// ערך סופי מהווקטור עבור סיכה 6
i = 0; // עבור לערך הראשון של וקטור
אישור = 1; // הפעל סיכה 5
}
if (i> 313 && OK == 1) {// ערך סופי מהווקטור עבור סיכה 5
i = 0; // עבור לערך הראשון של וקטור
אישור = 0; // הפעל סיכה 6
}
x = sinPWM ; // x לקחת את הערך מהווקטור המתאים למיקום i (i הוא צמוד לאפס)
i = i+1; // עבור למיקום הבא
אם (אישור == 0) {
OCR0B = 0; // צור סיכה 5 0
OCR0A = x; // אפשר את סיכה 6 למחזור העבודה המתאים
אם (אישור == 1) {
OCR0A = 0; // יוצרים סיכה 6 0
OCR0B = x; // אפשר את סיכה 5 למחזור העבודה המתאים
}
}
שלב 4: נסיעה בגשר H וסינון אות Pwm
האותות המתקבלים מארדואינו הם חלק הבקרה עבור יישומי מהפך מכיוון ששניהם חיוביים. כדי ליצור גל סינוס מלא ומהפך מעשי עלינו להשתמש בגשר h ולנקות את ה- pwm מסנן מעבר נמוך.
גשר H מוצג כאן.
מסנן המעבר הנמוך נבדק עם מנועי AC קטנים-כאן.
מוּמלָץ:
כיצד לבצע אנטנת BiQuade כפולה 4G LTE שלבים פשוטים: 3 שלבים
כיצד להפוך אנטנת 4G LTE BiQuade כפולה לשלבים קלים: לרוב לא עמדתי בפני, אין לי עוצמת אות טובה לעבודות היום-יומיות שלי. לכן. אני מחפש ומנסה סוגים שונים של אנטנות אבל לא עובד. לאחר בזבוז זמן מצאתי אנטנה שאני מקווה לייצר ולבדוק, כי זה עקרון הבנייה לא
עיצוב משחק בקפיצה ב -5 שלבים: 5 שלבים
עיצוב משחק בקפיצה ב -5 שלבים: פליק הוא דרך פשוטה מאוד ליצור משחק, במיוחד משהו כמו פאזל, רומן חזותי או משחק הרפתקאות
זיהוי פנים ב- Raspberry Pi 4B בשלושה שלבים: 3 שלבים
זיהוי פנים ב- Raspberry Pi 4B בשלושה שלבים: במדריך זה אנו הולכים לבצע זיהוי פנים ב- Raspberry Pi 4 עם Shunya O/S באמצעות ספריית Shunyaface. Shunyaface היא ספריית זיהוי/זיהוי פנים. הפרויקט שואף להשיג את מהירות הזיהוי והזיהוי המהירה ביותר עם
מהדורת ליל כל הקדושים של Arduino - מסך קופץ זומבים (שלבים עם תמונות): 6 שלבים
מהדורת ליל כל הקדושים של Arduino - מסך פופ -אאוט של זומבים (צעדים עם תמונות): רוצה להפחיד את החברים שלך ולעשות רעש צורח בהלווין? או סתם רוצה לעשות מתיחה טובה? המסך הקופץ הזה של זומבים יכול לעשות זאת! במדריך זה אלמד אותך כיצד ליצור זומבים קופצים בקלות באמצעות Arduino. ה- HC-SR0
מזין דגים Arduino Uno ב 6 שלבים זולים וקלים !: 6 שלבים
מזין הדגים Arduino Uno ב -6 שלבים זולים וקלים !: כך שאולי יהיה צורך בקצת סיפור רקע לפרויקט זה. לאנשים עם דגים לחיות מחמד הייתה כנראה אותה בעיה כמוני: חופשות ושכחה. כל הזמן שכחתי להאכיל את הדגים שלי ותמיד הסתבכתי לעשות זאת לפני שהגיע ל