Инвертор 12-220 волта на Arduino чист синус с пълен програмен код.
теория
Постигането на синусоидална вълна е доста трудно и не може да се препоръча за инвертори, защото електронен устройствата обикновено не обичат експоненциално нарастващи токове или напрежения. Тъй като инверторите се произвеждат основно с помощта на твърди електронни устройства, обикновено се елиминира синусоидалната форма на вълната.
Електронните захранващи устройства при работа със синусоидални вълни дават неефективни резултати, тъй като устройствата, като правило, се нагряват в сравнение с правоъгълни импулси.
По този начин, най-добрият вариант за прилагане на синусоида на инвертор е PWM, което означава модулация на импулсна ширина или PWM.
PWM е подобрен начин (цифрова версия) на експозицията на експоненциална форма на вълната чрез пропорционално вариращи ширини на импулса на квадратите, чиято стойност се изчислява точно според нетната стойност на избраната експоненциална форма на вълната, като тук "чистата" стойност се отнася до стойността на RMS. Следователно, изчислената ШИМ във връзка с дадена синусоидална вълна може да се използва като идеален еквивалент за репликация на дадена синусоида. В допълнение, PWMs ще бъдат идеално съвместими с електронни устройства за захранване (mosfets, BJTs, IGBTS) и ще позволят използването им с минимална топлина.
Какво е SPWM?
Най-разпространеният метод е да се произведе синусоида на PWM (синусоида) или SPWM, чрез прилагане на няколко експоненциално променливи сигнала към входа на операционен усилвател за необходимата обработка. Сред двата входни сигнала единият трябва да е с много по-висока честота в сравнение с другия.
Използване на два входни сигнала
Както бе споменато в предходния раздел, процедурата включва подаване на два експоненциално вариращи сигнала към входовете на операционния усилвател.
Тук операционният усилвател е конфигуриран като типичен сравнител, така че можем да предположим, че операционният усилвател веднага ще започне да сравнява мигновените нива на напрежение на тези два наслоени сигнала в момента, в който се появяват или се прилагат към входовете му.
За да може операционният усилвател правилно да приложи необходимия синусоидален PWM на своя изход, е необходимо един от сигналите да е с много по-висока честота от другия. По-бавната честота тук е тази, която трябва да бъде синусоидалната проба на пробата, която трябва да бъде симулирана (репликирана) от PWM.
В идеалния случай и двата сигнала трябва да бъдат синусоидални (единият с по-висока честота от другия), но същият може да бъде реализиран чрез включване на триъгълна вълна (висока честота) и синусоида (селективна вълна с ниска честота). Както може да се види на следващите изображения, високочестотният сигнал неизменно се подава към инвертиращия вход (-) на операционния усилвател, докато друг по-бавен синусоидален сигнал се подава към неинвертиращия (+) вход на операционния усилвател. В най-лошия случай и двата сигнала могат да бъдат триъгълни вълни с препоръчителни нива на честотата, както е описано по-горе. Това обаче ще помогне за постигане на сравнително добър еквивалент на PWM синусоида.
Сигнал с по-висока честота се нарича носител сигнал, докато по-бавен образец сигнал се нарича модулиращ вход.
Създайте SPWM с триъгълна и сухожилна вълна
Като се обърне към горната фигура, е възможно ясно да се визуализират през нанесените точки различните съвпадащи или припокриващи се точки на напрежение на двата сигнала за даден период от време. Хоризонталната ос показва периода от време на формата на вълната, докато вертикалната ос показва нивата на напрежение от 2 едновременно работещи, наслоената форма на вълната. Фигурата ни информира как операционният усилвател ще реагира на показаните съвпадащи мигновени нива на напрежение на двата сигнала и произвежда съответно променящ се синусоидален PWM на неговия изход. Операционен усилвател (оп-усилвател) просто сравнява нивата на напрежение на бърза триъгълна вълна, мигновено променяща синусоида (може да е и триъгълна вълна) и проверява за случаите, в които напрежението на формата на триъгълника може да бъде по-ниско от напрежението на синусоидата и реагира веднага създайте висока логика на излизанията си.
Това се поддържа, докато потенциалната вълна на триъгълника продължава да е по-ниска от потенциала на синусоидалната вълна и в момента, в който потенциалът на синусоидата се установи, че е по-нисък от моменталния потенциал на вълната на триъгълника, изходите се връщат с минимум и издържат, докато ситуацията се повтори.
Това непрекъснато сравнение на моменталните потенциални нива на две наслоени форми на вълната на двата входа на операционните усилватели води до създаването на съответно променящи се PWM, които могат точно да повторят синусоидалната форма, приложена към неинвертиращия вход на операционния усилвател.
Операционен усилвател и SPWM
Следващата фигура показва моделиране горната операция:
Тук можем да наблюдаваме как се прилага на практика и по този начин операционният усилвател ще направи същото (макар и с много по-висока скорост, в MS).
Операцията е съвсем очевидна и ясно показва как операционният усилвател трябва да обработва PWM синусоида, като сравнява два едновременно променящи се сигнала на входовете си, както е описано в предишните раздели.
В действителност, операционният усилвател ще обработва синусоидалната PWM много по-точно от симулацията, показана по-горе, може да бъде 100 пъти по-добра, създавайки изключително равномерен и добре премерен PWM, който съответства на предоставената проба. Синусова вълна.
Инвертор Arduino две вериги
списък с части
Всички резистори 1/4 Watt, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4бр
• MOSFETs IRF540 = 2бр
• Arduino UNO = 1
• Трансформатор = 9-0-9V / 220V / 120V.
• Батерия = 12V
Всички резистори 1/4 Watt, 5% CFR
• 10K = 4
• 1K = 2
• BC547 = 4бр
• MOSFETs IRF540 = 2бр
• Arduino UNO = 1
• Трансформатор = 9-0-9V / 220V / 120V.
• Батерия = 12V
Дизайнът всъщност е много прост, както е показано на следващата фигура.
Пин №8 и щифт №9 създават PWM последователно и превключват Mosfets със същата PWM.
Mosfet от своя страна индуцира силно актуална SPWM форма на вълната на трансформатора, използвайки силата на батерията, принуждавайки вторичния на трансформатора да генерира идентична форма на вълната.
Предлаганата верига на инвертора Arduino може да бъде надстроена до всяко предпочитано по-високо ниво на мощност, като просто замените Mosfets и трансформатора, съответно като алтернатива, можете също да преобразувате това в пълен мост или H-мост на синусоидален инвертор
Мощност на борда на Arduino
Изображения на вълната за Arduino SPWM
Тъй като Arduino ще произведе 5V изход, това може да не е идеално за директно управление на MOS транзистори.
Следователно е необходимо да се повиши нивото на строб до 12V, така че Mosfets да работи правилно без отоплителни устройства.
За да сте сигурни, че Mosfety не се стартира, когато Arduino стартира или стартира, трябва да добавите следния генератор на забавяне и да го свържете към основата на транзисторите BC547. Това ще защити Mosfets и ще им попречи да изгорят по време на превключвателя на захранването и когато Arduino се зареди.
Добавяне на автоматичен регулатор на напрежението
Подобно на всеки друг инвертор, на изхода на този дизайн токът може да се повиши до опасни граници, когато батерията е напълно заредена.
За да контролирате това, добавете автоматичен регулатор на напрежението.
BC547 колекторите трябва да бъдат свързани към основите на лявата двойка BC547, които са свързани към Arduino чрез 10K резистори.
Втората версия на инвертора, използваща чипа sn7404 / k155ln1
Важно е да се:
За да избегнете случайно включване, преди да заредите Arduino, в горната конструкция може да бъде включено обикновено забавяне в схемата на таймера, както е показано по-долу:
Програмен код:
/ *
Този код се основава на 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 = true;
bool sPWMpin2Status = true;
настройка за невалидност ()
{
pinMode (sPWMpin1, OUTPUT);
pinMode (sPWMpin2, OUTPUT);
}
void loop ()
{
// Примка за щифт 1
за (int i (0); i! = sPWMArrayValues; i ++)
{
ако (sPWMpin1Status)
{
digitalWrite (sPWMpin1, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = невярно;
}
още
{
digitalWrite (sPWMpin1, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin1Status = true;
}
}
// Примка за щифт 2
за (int i (0); i! = sPWMArrayValues; i ++)
{
ако (sPWMpin2Status)
{
digitalWrite (sPWMpin2, HIGH);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = невярно;
}
още
{
digitalWrite (sPWMpin2, LOW);
delayMicroseconds (sPWMArray [i]);
sPWMpin2Status = true;
}
}
}
Успех