پروژه الکترونیکپروژه های آردوینو

SPWM چیست؟ ساخت اینورتر موج سینوسی خالص با آردوینو

مدارهای اینورتر غالباً در مواردی که امکان تأمین برق AC از شبکه وجود ندارد ، مورد نیاز هستند. از مدار اینورتر برای تبدیل برق DC به برق AC استفاده می شود و می توان آن را به دو نوع Pure Sine Wave Inverters یا Modified Square Wave Inverters تقسیم کرد. اینورتر های موج سینوسی خالص بسیار گران هستند. در این آموزش آردوینو، ما یک مبدل ساده سینوسی خالص با استفاده از Arduino می سازیم و اصل کار مدار را توضیح می دهیم.

اگر این مدار را می سازید ، توجه داشته باشید که این مدار فیدبک ، محافظت از جریان اضافی ، محافظت در برابر اتصال کوتاه و محافظت در برابر دما ندارد. از این رو این مدار فقط برای اهداف آموزشی ساخته و نشان داده شده است ، و ساخت و استفاده از این نوع مدار برای وسایل تجاری توصیه نمی شود. اما در صورت لزوم می توانید آنها را به مدارهای خود اضافه کنید.

توجه : اگر این نوع مدارها را می سازید ، لطفاً در مورد افزایش ولتاژ و ولتاژ بالا که توسط سیگنال سوئیچینگ به ورودی ایجاد می شود ، بیشتر احتیاط کنید.

SPWM (مدولاسیون پالس سینوسی) چیست ؟

همانطور که از نامش پیداست ، SPWM مخفف Sinusoidal Pulse Width Modulation است. همانطور که قبلاً می دانید ، یک سیگنال PWM سیگنالی است که در آن می توانیم فرکانس پالس و همچنین زمان روشن و خاموش را تغییر دهیم ، که به عنوان چرخه وظیفه نیز شناخته می شود. اگر می خواهید در مورد PWM بیشتر بدانید ، می توانید مقاله PWM چیست ؟ را بخوانید. بنابراین ، با تغییر چرخه وظیفه ، ولتاژ متوسط ​​پالس را تغییر می دهیم. تصویر زیر نشان می دهد که

SPWM (مدولاسیون پالس سینوسی) چیست

اگر ما یک سیگنال PWM را در نظر بگیریم که بین 0 تا 5 ولت تغییر می کند که دارای چرخه وظیفه 100٪ است ، یک ولتاژ خروجی متوسط ​​5 ولت خواهیم داشت ، اگر همین سیگنال را با یک چرخه کار 50٪ در نظر بگیریم ، ولتاژ خروجی 2.5 ولت را بدست می آوریم و برای چرخه کار 25٪ ، 1.25 ولت است. این خلاصه اصل اساسی سیگنال PWM است و ما می توانیم به سمت درک اصل اساسی سیگنال SPWM برویم.

ولتاژ سینوسی در درجه اول یک ولتاژ قیاسی است که گذشت زمان مقدار آن را تغییر می دهد و ما می توانیم با تغییر مداوم چرخه وظیفه موج PWM ، این رفتار موج سینوسی را تولید کنیم ، تصویر زیر نشان می دهد کهولتاژ سینوسی SPWM

اگر به شماتیک زیر نگاه کنید ، می بینید که در خروجی ترانسفورماتور یک خازن متصل شده است. این خازن وظیفه هموار سازی سیگنال AC از فرکانس حامل را دارد.

سیگنال ورودی استفاده شده با توجه به سیگنال ورودی و بار ، خازن را شارژ و تخلیه می کند. همانطور که ما از یک سیگنال SPWM با فرکانس بسیار بالا استفاده کرده ایم ، این یک چرخه وظیفه بسیار کوچک خواهد داشت که مانند 1٪ است ، این چرخه وظیفه 1٪ کمی خازن را شارژ می کند ، چرخه وظیفه بعدی 5٪ است ، این خازن کمی بیشتر شارژ می شود، پالس زیر یک چرخه وظیفه 10٪ دارد و خازن کمی بیشتر شارژ می شود ، ما سیگنال را اعمال می کنیم تا زمانی که به یک چرخه وظیفه 100٪ برسیم و از آنجا ، دوباره پایین خواهیم رفت به 1٪ این یک منحنی بسیار صاف مانند موج سینوسی در خروجی ایجاد می کند. بنابراین ، با ارائه مقادیر مناسب چرخه کار در ورودی ، یک موج سینوسی در خروجی خواهیم داشت.

نحوه کار اینورتر SPWM

نحوه کار اینورتر SPWM

تصویر بالا بخش اصلی درایو اینورتر SPWM را نشان می دهد ، و همانطور که مشاهده می کنید ، ما برای استفاده از ترانسفورماتور این مدار ، کاهش صدای سوئیچینگ ناخواسته و محافظت از MOSFET ، از دو MOSFET کانال N در پیکربندی نیمه پل استفاده کرده ایم. ما از دیودهای 1N5819 موازی با MOSFET استفاده کرده ایم. برای کاهش سنبله های مضر تولید شده در قسمت گیت ، ما از مقاومت های 4.7 اهم به موازات دیود های 1N4148 استفاده کرده ایم. سرانجام ، ترانزیستور های BD139 و BD 140 در یک پیکربندی Push-Pull برای هدایت گیت MOSFET پیکربندی شده اند ، زیرا این MOSFET ظرفیت گیت بسیار بالایی دارد و برای روشن شدن مناسب به حداقل 10 ولت در پایه نیاز دارد.

SPWM چیست؟

برای درک بهتر اصل کار مدار ، ما آن را تا حدی کاهش داده ایم که این بخش از MOSFET روشن باشد. وقتی MOSFET روی جریان است ، ابتدا از طریق ترانسفورماتور جریان می یابد و سپس توسط MOSFET زمین گیر می شود ، بنابراین یک شار مغناطیسی نیز در جهتی که جریان جریان دارد القا می شود و هسته ترانسفورماتور شار مغناطیسی را عبور می دهد در سیم پیچ ثانویه ، و ما نیمه سیکل مثبت سیگنال سینوسی را در خروجی خواهیم گرفت.

حتما ببینید :  اندازه گیری جمعیت با پردازش تصویر رزبری پای و OpenCV

اینورتر موج سینوسی خالص با کمک آردوینو

در چرخه بعدی ، قسمت پایین مدار در قسمت بالای مدار قرار دارد خاموش است به همین دلیل من قسمت بالایی را حذف کردم ، اکنون جریان در جهت مخالف جریان می یابد و یک شار مغناطیسی در آن جهت ایجاد می کند ، بنابراین شار مغناطیسی را در هسته معکوس میکند.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.

همه ما می دانیم که یک ترانسفورماتور با تغییرات شار مغناطیسی کار می کند. بنابراین ، روشن و خاموش کردن MOSFET ها ، یکی معکوس به دیگری و انجام آن 50 بار در ثانیه ، شار مغناطیسی نوسانی خوبی را در داخل هسته ترانسفورماتور ایجاد می کند و شار مغناطیسی متغیر باعث ایجاد ولتاژ در سیم پیچ ثانویه می شود.

مدار کامل اینورتر SPWM استفاده شده در این پروژه در زیر آورده شده است.

مدار کامل اینورتر SPWM

قطعات مورد نیاز اینورتر SPWM

قطعات مورد نیاز اینورتر SPWM

در جدول زیر لیست قطعات به همراه تعداد مورد نیاز قرار داده شده است.

شمارهمشخصاتنوعتعداد
1Atmega328PIC1
2IRFZ44Nماسفت2
3BD139ترانزیستور2
4BD140ترانزیستور2
522pFخازن2
610K,1%مقاومت1
716MHzکریستال1
80.1uFخازن3
94.7Rمقاومت2
101N4148دیود2
11LM7805رگولاتور ولتاژ1
12200uF,16Vخازن1
1347uF, 16Vخازن1
142.2uF,400Vخازن1

کد آردوینو برای SPWM اینورتر

قبل از اینکه پیش برویم و شروع به درک کد کنیم ، بیایید اصول آن را درک کنیم. شما یاد گرفته اید که سیگنال PWM در خروجی چگونه به نظر می رسد ، اکنون این سوال باقی مانده است که چگونه می توانیم چنین موج متفاوتی را در پایه های خروجی آردوینو ایجاد کنیم.

برای ایجاد سیگنال PWM متغیر ، ما قصد داریم از تایمر1 16 بیتی با تنظیم پیش تعیین کننده 1 استفاده کنیم ، که اگر یک نیم چرخه موج سینوسی را در نظر بگیریم به ما 1600/16000000 = 0.1 میلی ثانیه زمان برای هر کدام می دهد. ، که دقیقاً 100 بار در یک نیم چرخه موج قرار می گیرد. به زبان ساده ، ما می توانیم موج سینوسی خود را 200 بار نمونه برداری کنیم.

بعد ، ما باید موج سینوسی خود را به 200 قطعه تقسیم کنیم و مقادیر آنها را با همبستگی دامنه محاسبه کنیم. سپس باید آن مقادیر را با ضرب آن با حد شمارنده به مقادیر شمارنده تایمر تبدیل کنیم. سرانجام ، ما باید این مقادیر را در یک جدول جستجو قرار دهیم تا آن را به شمارنده تغذیه کنیم و موج سینوسی خود را دریافت خواهیم کرد.ز

توجه داشته باشید که کد کامل شده است و مطالب این بخش فقط برای افزایش درک شما از این پروژه است. میتوانید کد کامل را در انتهای صفحه در فایل دانلودی مشاهده کنید.

ما برنامه خود را با اضافه کردن پرونده های هدر مورد نیاز آغاز می کنیم.

#include <avr/io.h>
#include <avr/interrupt.h>

بعد ، ما دو جدول جستجو داریم که می خواهیم مقادیر شمارنده تایمر را از آنها بدست آوریم.

int lookUp1[] = {50 ,100 ,151 ,201 ,250 ,300 ,349 ,398 ,446 ,494 ,542 ,589 ,635 ,681 ,726 ,771 ,814 ,857 ,899 ,940 ,981 ,1020 ,1058 ,1095 ,1131 ,1166 ,1200 ,1233 ,1264 ,1294 ,1323 ,1351 ,1377 ,1402 ,1426 ,1448 ,1468 ,1488 ,1505 ,1522 ,1536 ,1550 ,1561 ,1572 ,1580 ,1587 ,1593 ,1597 ,1599 ,1600 ,1599 ,1597 ,1593 ,1587 ,1580 ,1572 ,1561 ,1550 ,1536 ,1522 ,1505 ,1488 ,1468 ,1448 ,1426 ,1402 ,1377 ,1351 ,1323 ,1294 ,1264 ,1233 ,1200 ,1166 ,1131 ,1095 ,1058 ,1020 ,981 ,940 ,899 ,857 ,814 ,771 ,726 ,681 ,635 ,589 ,542 ,494 ,446 ,398 ,349 ,300 ,250 ,201 ,151 ,100 ,50 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0};
int lookUp2[] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,50 ,100 ,151 ,201 ,250 ,300 ,349 ,398 ,446 ,494 ,542 ,589 ,635 ,681 ,726 ,771 ,814 ,857 ,899 ,940 ,981 ,1020 ,1058 ,1095 ,1131 ,1166 ,1200 ,1233 ,1264 ,1294 ,1323 ,1351 ,1377 ,1402 ,1426 ,1448 ,1468 ,1488 ,1505 ,1522 ,1536 ,1550 ,1561 ,1572 ,1580 ,1587 ,1593 ,1597 ,1599 ,1600 ,1599 ,1597 ,1593 ,1587 ,1580 ,1572 ,1561 ,1550 ,1536 ,1522 ,1505 ,1488 ,1468 ,1448 ,1426 ,1402 ,1377 ,1351 ,1323 ,1294 ,1264 ,1233 ,1200 ,1166 ,1131 ,1095 ,1058 ,1020 ,981 ,940 ,899 ,857 ,814 ,771 ,726 ,681 ,635 ,589 ,542 ,494 ,446 ,398 ,349 ,300 ,250 ,201 ,151 ,100 ,50 ,0};

بعد ، در بخش void setup ، رجیستر های کنترل کننده تایمر را مقدار دهی می کنیم تا روی هر کدام واضح باشد.

    TCCR1A = 0b10100010;
       /*10 clear on match, set at BOTTOM for compA.
         10 clear on match, set at BOTTOM for compB.
         00
         10 WGM1 1:0 for waveform 15.
       */
    TCCR1B = 0b00011001;
       /*000
         11 WGM1 3:2 for waveform 15.
         001 no prescale on the counter.
       */
    TIMSK1 = 0b00000001;
       /*0000000
         1 TOV1 Flag interrupt enable.
       */

پس از آن ، ما رجیستر input capture را با مقدار از پیش تعیین شده 16000 مقدار دهی اولیه می کنیم زیرا این امر به ما کمک می کند تا دقیقاً 200 نمونه تولید کنیم.

ICR1   = 1600;

بعد ، با فراخوانی عملکرد زیر ، وقفه های مورد نظر را فعال می کنیم ،

sei();

در آخر ، پین 9 و 10 آردوینو را به عنوان خروجی تنظیم می کنیم

DDRB = 0b00000110;

که پایان عملکرد void setup را نشان می دهد.

حتما ببینید :  آموزش ساخت اسکنر کد QR با رزبری پای و OpenCV

قسمت loop کد خالی باقی می ماند زیرا یک برنامه زمان سنج ضد وقفه است.

void loop(){;}

در مرحله بعد ، ما بردار سرریز timer1 را تعریف کرده ایم ، هنگامی که timer1 سرریز می شود این عملکرد متوقف می شود و یک وقفه ایجاد می کند.

ISR(TIMER1_OVF_vect){

سپس برخی از متغیرهای محلی را به عنوان متغیر های ساکن اعلام می کنیم.

static int num;
static char trig;
OCR1A = lookUp1[num];
OCR1B = lookUp2[num];

سرانجام ، پیشخوان را برای تغذیه مقادیر بعدی با ضبط و افزایش مقاومت ها ، که پایان این کد است ، از پیش افزایش می دهیم.

if(++num >= 200){ // Pre-increment num then check it's below 200.
       num = 0;       // Reset num.
       trig = trig^0b00000001;
       digitalWrite(13,trig);
     }

آزمایش مدار اینورتر TL494 PWM

آزمایش مدار اینورتر TL494 PWM

به منظور آزمایش مدار ، از تنظیمات زیر استفاده می شود.

  • باتری 12 ولت اسید سرب
  • یک ترانسفورماتور که دارای یک ضربه 6-0-6 و 12-0-12
  • لامپ رشته ای 100 وات به عنوان یک بار
  • مولتی متر Meco 108B + TRMS
  • مولتی متر Meco 450B + TRMS

سیگنال خروجی از آردوینو

پس از بارگذاری کد. من سیگنال خروجی SPWM را از دو پایه آردوینو اندازه گرفتم که مانند تصویر زیر است ،

سیگنال خروجی از آردوینو

اگر کمی بزرگنمایی کنیم می توان چرخه وظیفه در حال تغییر موج PWM را مشاهده کرد.

چرخه وظیفه در حال تغییر موج PWM

بعد ، تصویر زیر سیگنال خروجی از ترانس را نشان می دهد.

سیگنال خروجی از ترانس

مدار SPWM اینورتر در حالت ایده آل

مدار SPWM اینورتر در حالت ایده آل

همانطور که از تصویر بالا مشاهده می کنید ، این مدار در حالت ایده آل در حدود 13 وات ترسیم می شود.

ولتاژ خروجی بدون بار

ولتاژ خروجی بدون بار
ولتاژ خروجی مدار اینورتر در بالا نشان داده شده است ، این ولتاژی است که در خروجی بدون بار متصل شده خارج می شود.

مصرف برق ورودی

مصرف برق ورودی

تصویر فوق توان ورودی را که با اتصال 40 وات به برق مصرف می کند ، نشان می دهد.

مصرف برق خروجی

مصرف برق خروجی

تصویر بالا توان خروجی مصرف شده توسط این مدار را نشان می دهد (بار یک لامپ رشته ای 40 وات است)

فیلم عملکرد

فیلم زیر نحوه عملکرد این پروژه را نشان میدهد.

دانلود فیلم پروژه ساخت موج SPWM

موارد موجود در فایل : سورس کامل ، شماتیک

برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن