فهرست مطالب:

Arduino Sinewave for Inverters: 4 Step
Arduino Sinewave for Inverters: 4 Step

تصویری: Arduino Sinewave for Inverters: 4 Step

تصویری: Arduino Sinewave for Inverters: 4 Step
تصویری: как сделать простой инвертор 4500W, синусоида, 8 MOSFET, IRFz 44n, jlcpcb 2024, جولای
Anonim
Arduino Sinewave for Inverters
Arduino Sinewave for Inverters

در این پروژه من یک سیگنال SPWM (پالس موج سینوسی با مدولاسیون گسترده) از دو خروجی دیجیتال arduino pwm ایجاد کرده ام.

از آنجا که برای ایجاد چنین برنامه ای ، باید در مورد بسیاری دیگر از عملکردها و ویژگی های arduino در مورد پروژه کامل از جمله تصاویر اسیلوسکوپ و فرکانس های مختلف صحبت کنید ، از وب سایت من دیدن کنید:

eprojectszone

مرحله 1: ایجاد سیگنال Pwm برای 50Hz

برای تولید سیگنال 50 هرتز در فرکانس بالاتر ، انجام برخی محاسبات ضروری است. فرکانس های آردوینو می توانند در 8 مگاهرتز باشند ، اما ما سیگنالی با چرخه کاری متغیر می خواهیم.

برای درک انواع چرخه های متغیر وظیفه آردوینو ، می توانید این 3 قسمت از همان پست 1 ، 2 و 3 را بخوانید.

فرض کنید فرکانس ما 50 هرتز است ، یعنی دوره زمانی 20 میلی ثانیه است. بنابراین 10 میلی ثانیه نیم دوره است. در آن 10 میلی ثانیه ما نیاز به داشتن تعداد زیادی پالس با چرخه های مختلف وظیفه داریم که با چرخه های وظیفه کوچک شروع می شود ، در وسط سیگنال حداکثر چرخه های وظیفه را داریم و همچنین با چرخه های وظیفه کوچک به پایان می رسانیم. برای ایجاد موج سینوسی از دو پین یکی برای نیم چرخه مثبت و یک نیم سیکل منفی. در پست خود برای این کار از پین 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" که با آردوینو راحت تر محاسبه می شود).

چنین آرایه ای عبارت است از:

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، 248، 247، 247، 247، 246، 246، 245، 245، 244، 244، 243، 243، 242، 242، 241، 240، 240، 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: برنامه آردوینو برای چرخه وظیفه متغیر

برنامه آردوینو برای چرخه وظیفه متغیر
برنامه آردوینو برای چرخه وظیفه متغیر

در تصویر بالا سیگنالهای چرخه وظیفه متغیر با مقادیر از آرایه داریم.

اما چگونه می توان چنین سیگنالی ایجاد کرد ؟؟

بخشی از برنامه زیر از وقفه برای تغییر مقادیر چرخه های وظیفه استفاده می کند

sei () ؛ // وقفه ها را فعال کنید

}

ISR (TIMER1_COMPA_vect) {// وقفه زمانی که تایمر 1 با مقدار OCR1A مطابقت دارد

if (i> 313 && OK == 0) {// مقدار نهایی از بردار برای پین 6

i = 0؛ // رفتن به اولین مقدار بردار (آرایه)

OK = 1؛ // پین 5 را فعال کنید

}

x = sinPWM ؛ // x مقدار را از بردار مربوط به موقعیت i بگیرید (i نمایه شده صفر است) -ارزش چرخه وظیفه

i = i+1 ؛ // به موقعیت بعدی بروید

}

مرحله 3: متناوب در پین های آردوینو 50Hz

متناوب در پین های آردوینو 50 هرتزی
متناوب در پین های آردوینو 50 هرتزی

از آنجا که هر پین فقط یک چرخه نیمه وظیفه ایجاد می کند تا یک موج سینوسی کامل ایجاد کند ، ما از دو پین استفاده می کنیم که بعد از 10 ثانیه دقیق (به مدت 50 هرتز) یکی پس از دیگری متناوب می شوند. این تغییر پین ها در انتهای آرایه انجام می شود- پس از این که فرض کنیم پین 5 314 پالس ایجاد کرده است ، این پین خاموش شده و پین 6 را فعال می کند که همین کار را می کند اما برای چرخه وظیفه منفی.

از آنجا که آردوینو می تواند فقط سیگنال های مثبت تولید کند ، چرخه وظیفه منفی در h Bridge ساخته می شود- می توانید در اینجا درباره آن بخوانید

برنامه تغییر پین:

sei () ؛ // وقفه ها را فعال کنید

}

ISR (TIMER1_COMPA_vect) {// وقفه زمانی که تایمر 1 با مقدار OCR1A مطابقت دارد

if (i> 313 && OK == 0) {// مقدار نهایی از بردار برای پین 6

i = 0؛ // رفتن به اولین مقدار بردار

OK = 1؛ // پین 5 را فعال کنید

}

if (i> 313 && OK == 1) {// مقدار نهایی از بردار برای پین 5

i = 0؛ // رفتن به اولین مقدار بردار

OK = 0؛ // پین 6 را فعال کنید

}

x = sinPWM ؛ // x مقدار را از بردار مربوط به موقعیت i بگیرید (i نمایه شده صفر است)

i = i+1 ؛ // به موقعیت بعدی بروید

if (OK == 0) {

OCR0B = 0 ؛ // پین 5 را بسازید

OCR0A = x؛ // پین 6 را به چرخه وظیفه مربوطه فعال کنید

if (OK == 1) {

OCR0A = 0 ؛ // پین 6 را بسازید

OCR0B = x؛ // پین 5 را به چرخه وظیفه مربوطه فعال کنید

}

}

مرحله 4: رانندگی بر روی پل H و فیلتر کردن سیگنال Pwm

سیگنال های بدست آمده از آردوینو بخش کنترل برنامه های اینورتر است زیرا هر دو مثبت هستند. برای ایجاد یک موج سینوسی کامل و یک اینورتر عملی ، ما باید از یک پل h استفاده کنیم و pwm را از یک فیلتر کم گذر پاک کنیم.

پل H در اینجا ارائه شده است.

فیلتر کم گذر با موتورهای کوچک AC در اینجا آزمایش شده است.

توصیه شده: