מהפך 12 -220 וולט על הסינוס הטהור של ארדואינו עם קוד התוכנה המלא.
תיאוריה
השגת תפוקת גל סינוס היא די קשה ולא ניתן להמליץ על ממירים, מכיוון אלקטרוני מכשירים בדרך כלל לא אוהבים הגדלת זרמים או מתחים באופן אקספוננציאלי. מכיוון שהממירים מיוצרים בעיקר באמצעות מכשירים אלקטרוניים במצב מוצק, בדרך כלל מבוטלת צורת גל סינוסואידית.
מכשירי חשמל אלקטרוניים בעבודה עם גלים סינוסואידיים נותנים תוצאות לא יעילות, שכן מכשירים, ככלל, מחוממים בהשוואה לפולסים מלבניים.
לפיכך, האפשרות הטובה ביותר ליישום גל סינוס על מהפך היא PWM שפירושו אפנון רוחב דופק או PWM.
PWM היא דרך משופרת (גרסה דיגיטלית) של חשיפה של צורת גל אקספוננציאלית באמצעות רוחב פעימות מרובעות משתנות באופן יחסי, שערכו הנקי מחושב בדיוק לפי הערך הנקי של צורת הגל האקספוננציאלית שנבחרה, כאן הערך "הטהור" מתייחס לערך RMS. לכן PWM המחושב בהתייחס לגל סינוס נתון יכול לשמש כמקבילה אידיאלית לשכפול של גל סינוס נתון. בנוסף, מכשירי PWM יתאימו באופן אידיאלי למכשירי חשמל אלקטרוניים (mosfets, BJTs, IGBTS) ויאפשרו את השימוש בהם בחום מינימלי.
מה זה SPWM?
השיטה הנפוצה ביותר היא לייצר שסתום PWM (גל סינוס) או SPWM, על ידי החלת מספר אותות משתנים מעריכיים על כניסת המגבר התפעולי לצורך העיבוד הדרוש. בין שני אותות הקלט, אחד צריך להיות גבוה בהרבה בתדר בהשוואה לשני.
שימוש בשני אותות קלט
כאמור בסעיף הקודם, הנוהל כולל אספקת שני אותות משתנים אקספוננציאלית לתשומות המגבר התפעולי.
כאן מגבר התפעול מוגדר כמשווה אופייני, כך שאפשר להניח שהמגבר התפעולי יתחיל להשוות מיד את רמות המתח המיידי של שני האותות המוצבים זה בזה ברגע שהם מופיעים או מוחלים על כניסותיו.
על מנת שהמגבר התפעולי יטמיע נכון את ה- PWM הסינוסואידי הנדרש ביציאתו, יש צורך כי לאחד האותות יש תדר גבוה בהרבה מהשני. התדר האיטי יותר כאן הוא זה שאמור להיות גל הסינוס של המדגם, אותו צריך לדמות (לשכפל) על ידי PWMs.
באופן אידיאלי, שני האותות צריכים להיות סינוסים (אחד עם תדר גבוה יותר מזה), עם זאת, ניתן לממש את אותו הדבר על ידי הכללת גל משולש (תדר גבוה) וגל סינוס (גל סלקטיבי עם תדר נמוך). כפי שניתן לראות בתמונות הבאות, האות בתדר הגבוה מועבר תמיד לכניסה ההפוכה (-) של המגבר התפעולי, ואילו אות סינוסואיד אחר איטי יותר מועבר לכניסה הלא הפוכה (+) של המגבר התפעולי. במקרה הגרוע ביותר, שני האותות עשויים להיות גלים משולשים עם רמות תדר מומלצות, כמתואר לעיל. עם זאת, זה יעזור בהשגת שווה ערך סביר למדי של גל הגנה PWM.
אות עם תדר גבוה יותר נקרא אות נשא, ואילו אות מדגם איטי יותר נקרא כניסה לאפנון.
צור SPWM עם גל משולש וגיד
בהתייחס לתרשים לעיל, ניתן לדמיין בבירור דרך הנקודות המתוארות את נקודות המתח השונות בצירוף המקרים או חופפים של שני האותות במשך פרק זמן נתון. הציר האופקי מציג את פרק הזמן של צורת הגל, ואילו הציר האנכי מראה את רמות המתח של 2 הפועלים בו זמנית, את צורת הגל המונחת מעל. הנתון מודיע לנו כיצד המגבר התפעולי יגיב לרמות המתח המיידיות המופיעות בצירוף שני האותות וייצר PWM סינוסואידי משתנה בהתאמה ביציאתו. מגבר תפעולי (מגבר אודיו) פשוט משווה, רמות המתח של גל משולש מהיר משתנות באופן מיידי גל סינוס (זה יכול להיות גם גל משולש), ובודקת אם מדובר במקרים בהם המתח של צורת הגל המשולש יכול להיות נמוך יותר מהמתח של גל הסינוס ומגיב צור מיד היגיון גבוה ביציאות שלך.
זה נשמר כל עוד הגל הפוטנציאלי של המשולש ממשיך להיות נמוך מהפוטנציאל של גל הסינוס, והרגע בו מתגלה הפוטנציאל של גל הסינוס נמוך מהפוטנציאל המיידי של גל המשולש, היציאות חוזרות במינימום ועומדות עד שהמצב חוזר על עצמו.
השוואה מתמשכת זו של רמות הפוטנציאל המיידי של שתי צורות-גל מונחות-על-גבי שתי כניסות המגברים התפעוליים מובילה ליצירת PWMs המשתנים בהתאמה, שיכולים לחזור במדויק על הצורה הסינוסואלית המיושמת על הכניסה הלא הפיכה של המגבר התפעולי.
מגבר תפעולי ו- SPWM
באיור הבא מופיע דוגמנות הפעולה לעיל:
כאן ניתן לראות כיצד הוא מיושם בפועל, וככה יעשה אותו מגבר תפעולי (אם כי במהירות גבוהה בהרבה, ב- MS).
הפעולה די ברורה ומראה בבירור כיצד המגבר התפעולי צריך לעבד את גל הסינוס PWM על ידי השוואה בין שני אותות המשתנים בו זמנית בכניסותיו, כמתואר בסעיפים הקודמים.
למעשה, המגבר התפעולי יעבד את ה- PWM הסינוסואידי הרבה יותר מדויק מההדמיה המוצגת לעיל, הוא יכול להיות פי מאה יותר, ויוצר PWM אחיד ומודד היטב התואם את הדגימה המסופקת. גל סינוס.
מהפך ארדואינו שני מעגלים
רשימת חלקים
כל 1/4 ואט נגדים, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4 יחידות
• MOSFETs IRF540 = 2 יחידות
• ארדואינו UNO = 1
• שנאי = 9-0-9V / 220V / 120V.
• סוללה = 12 וולט
כל 1/4 ואט נגדים, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4 יחידות
• MOSFETs IRF540 = 2 יחידות
• ארדואינו UNO = 1
• שנאי = 9-0-9V / 220V / 120V.
• סוללה = 12 וולט
העיצוב הוא למעשה פשוט מאוד, כפי שמוצג באיור הבא.
סיכה מס '8 ופין מס' 9 יוצרים PWM לסירוגין ומחליפים Mosfets עם אותו PWM.
Mosfet, בתורו, משרה צורה של גל SPWM זרם מאוד על השנאי, תוך שימוש בכוח הסוללה, ומכריח את המשנה של השנאי לייצר צורת גל זהה.
ניתן לשדרג את מעגל המהפך של Arduino לכל רמת עוצמה גבוהה מועדפת על ידי החלפת פשוט של Mosfets והשנאי, בהתאמה, כחלופה, תוכלו גם להמיר זאת לגשר מלא או מהפך גל סינוס H-bridge.
כוח לוח ארדואינו
תמונות צורת גל עבור Arduino SPWM
מכיוון שהארדואינו יפיק תפוקת 5 וולט, יתכן וזה לא יהיה אידיאלי לשליטה ישירה בטרנזיסטורי MOS.
לפיכך, יש צורך להעלות את מפלס ה- strobe ל- 12V כך שה- Mosfets יעבדו נכון מבלי לחמם את המכשירים.
כדי לוודא כי Mosfety לא יתחיל כאשר ארדואינו יתחיל או יתחיל, עליך להוסיף את מחולל העיכוב הבא ולחבר אותו לבסיס הטרנזיסטורים BC547.זה יגן על Mosfets וימנע מהם לשרוף במהלך מתג הפעלה וכאשר ארדואינו יתחלל.
הוספת רגולטור מתח אוטומטי
ממש כמו בכל מהפך אחר, בפלט של עיצוב זה, הזרם יכול לעלות לגבולות לא בטוחים כאשר הסוללה נטענת במלואה.
כדי לשלוט בזה, הוסף ווסת מתח אוטומטי.
יש לחבר את אספני BC547 לבסיסים של צמד BC547 השמאלי, המחוברים לארדואינו דרך נגדים 10K.
הגרסה השנייה של המהפך באמצעות שבב sn7404 / k155ln1
חשוב:
כדי להימנע מהפעלה מקרית לפני טעינת הארדואינו, ניתן לכלול עיכוב פשוט במעגל הטיימר בתכנון לעיל, כמוצג להלן:
קוד התוכנית:
/ *
קוד זה התבסס על קוד SPWM של Swagatam עם שינויים שנעשו בכדי להסיר שגיאות. השתמש בקוד זה כפי שתשתמש בכל יצירות אחרות של Swagatam.
סיכון אטון 2017
* /
const int sPWMArray [] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // זהו המערך עם ערכי SPWM משנים אותם כרצונם
const int sPWMArrayValues = 13; // אתה זקוק לזה מכיוון ש- C לא נותנת לך את האורך של מערך
// הסיכות
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// מתג הסיכה
bool sPWMpin1Status = נכון;
bool sPWMpin2Status = נכון;
הגדרת ביטול ()
{
pinMode (sPWMpin1, OUTPUT);
pinMode (sPWMpin2, OUTPUT);
}
לולאה חלילה ()
{
// לולאה לסיכה 1
עבור (int i (0); i! = sPWMArrayValues; i ++)
{
אם (sPWMpin1Status)
{
digitalWrite (sPWMpin1, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = שקר;
}
אחר
{
digitalWrite (sPWMpin1, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = נכון;
}
}
// לולאה לסיכה 2
עבור (int i (0); i! = sPWMArrayValues; i ++)
{
אם (sPWMpin2Status)
{
digitalWrite (sPWMpin2, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = שקר;
}
אחר
{
digitalWrite (sPWMpin2, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = נכון;
}
}
}
בהצלחה.