مدارهای اینورتر برای تولید منبع AC در مواقع نیاز بسیار مفید هستند و از حداقل سطح بایاس DC از منبع باتری استفاده می کند.
در اینجا مدار اینورتر ساده و قابل اعتمادی با برد آردوینو طراحی شده است و می توانیم آردوینو را برای به دست آوردن خروجی AC پله ای، خروجی سینوسی اصلاح شده AC یا خروجی سینوسی خالص برنامه ریزی کنیم و همچنین می توانیم برد آردوینو را طوری برنامه ریزی کنیم که محدوده فرکانس خروجی متفاوتی را به ارائه دهد.
سازوکار مدار
این مدار اینورتر دارای سه مرحله و یک باتری 12 ولتی 5.0 آمپر ساعتی SLA به عنوان بایاس DC است که برای ساده تر شدن مدار شارژر باتری را حذف کرده ام.
مرحله اول این مدار برد کنترلر Micro Arduino است و به گونه ای برنامه ریزی شده است که SPWM
(Sinusoidal Pulse Width Modulation) (مدولاسیون عرض پالس سینوسی) بدهد یا می توانید کد را تغییر دهید تا خروجی های متفاوتی از پین های آردوینو تولید کند.
مرحله دوم سوئیچینگ و مرحله درایور است، پالس خروجی از پین های دیجیتال آردوینیو به ترانزیستور سوئیچینگ SL100 npn و سپس پاور mosfet IRF540 وارد می شود.
مرحله سوم یک مرحله خروجی است که با استفاده از ترانسفورماتور (230 VAC اولیه / 12-0-12 VAC ثانویه) ساخته می شود و به طور معکوس با مدار درایور متصل می شود که مرحله ثانویه (12-0-12 VAC) به آن متصل است. ماسفت برق و سمت اولیه ترانسفورماتور اجازه می دهد تا منبع خروجی را بدهد.
هنگامی که باتری متصل به این رگولاتور 7812 ولتاژ مدار برد آردوینو را تغذیه می کند و شروع به تولید پالس های خروجی می کند، پالس ها باعث می شوند ترانزیستور SL100 و پاور ماسفت IRF540 و سیم پیچ ثانویه ترانسفورماتور متصل به ماسفت انرژی مجزا دریافت کنند و متقابلاً القا شوند. همانطور که می دانیم به دلیل تعداد زیاد سیم پیچ اولیه و تغییر میدان مغناطیسی، خروجی AC ولتاژ بالا تولید می کند.
کد اینورتر آردوینو
این کد برای تولید SPWM در پایه D9 و D10 برد آردوینو uno است، می توانید کد آردوینو بهتر خود را تغییر داده و نظر دهید.
const int SpwmArry[] = {500,500,750,500,1250,500,2000,500,1250,500,750,500,500}; // Array of SPWM values.
const int SpwmArryValues = 13; //Put length of an Array depends on SpwmArray numbers.
// Declare the output pins and choose PWM pins only
const int sPWMpin1 = 10;
const int sPWMpin2 = 9;
// enabling bool status of Spwm pins
bool sPWMpin1Status = true;
bool sPWMpin2Status = true;
void setup()
{
pinMode(sPWMpin1, OUTPUT);
pinMode(sPWMpin2, OUTPUT);
}
void loop()
{
// Loop for Spwm pin 1
for(int i(0); i != SpwmArryValues; i++)
{
if(sPWMpin1Status)
{
digitalWrite(sPWMpin1, HIGH);
delayMicroseconds(SpwmArry[i]);
sPWMpin1Status = false;
}
else
{
digitalWrite(sPWMpin1, LOW);
delayMicroseconds(SpwmArry[i]);
sPWMpin1Status = true;
}
}
// Loop for Spwm pin 2
for(int i(0); i != SpwmArryValues; i++)
{
if(sPWMpin2Status)
{
digitalWrite(sPWMpin2, HIGH);
delayMicroseconds(SpwmArry[i]);
sPWMpin2Status = false;
}
else
{
digitalWrite(sPWMpin2, LOW);
delayMicroseconds(SpwmArry[i]);
sPWMpin2Status = true;
}
}
}
توجه
در مدار خروجی جریان با ولتاژ بالا وجود دارد. با اقدامات مراقبتی و ایمنی رفتار کنید.