Съдържание:

Решетка инвертор: 10 стъпки (със снимки)
Решетка инвертор: 10 стъпки (със снимки)

Видео: Решетка инвертор: 10 стъпки (със снимки)

Видео: Решетка инвертор: 10 стъпки (със снимки)
Видео: Динко Вълев иска да вкара Стоян Колев в багажника 2024, Юли
Anonim
Image
Image
Инвертор за мрежови връзки
Инвертор за мрежови връзки
Инвертор за мрежови връзки
Инвертор за мрежови връзки

Това е месен проект, така че се закопчайте!

Инверторите за свързване на мрежата ви позволяват да включите захранването в електрически контакт, което е страхотна способност. Интересна ми е силовата електроника и системите за управление, включени в техния дизайн, затова изградих своя собствена. Този доклад споделя какво научих и документира как съм направил нещата. Ще се интересувам от вашите коментари (освен тези за това, че не се забърквате в електрическата мрежа).

Всички концепции са мащабируеми, но тази настройка имаше максимална мощност от 40 вата, преди филтърните индуктори да започнат да се насищат. Изходният ток беше синусоидален с THD <5%.

Вижте софтуера на моя GitHub

Консумативи

  • Използвах дъската за разработка STM32F407. Той работи на 168MHz и има 3 вградени ADC, способни на 12-битова резолюция при над 2,4MSPS (милиони проби в секунда) всеки. Това е безумно!
  • Използвах платката за разработка DRV8301. Тук се помещава 60v H-Bridge заедно с необходимите драйвери на порта, текущи шунтове и усилватели на ток. Супер хубаво!
  • Използвах тороидален трансформатор 230-25v с 2 изходни крана. Това означаваше, че не трябваше да произвеждам директно мрежово напрежение, но вместо това можеше да работи с пиково напрежение от 40 волта. Много по -безопасно!
  • Свързах товар от индуктори и кондензатори заедно, за да получа стойностите L и C, които исках за филтъра.
  • Осцилоскоп и диференциална сонда са ключови за такъв проект. Имам пикоскоп

Стъпка 1: Какво представлява захранването от мрежата?

Какво представлява захранването от мрежата?
Какво представлява захранването от мрежата?
Какво представлява захранването от мрежата?
Какво представлява захранването от мрежата?

Това, което получавате от електрически контакт (във Великобритания), е 50Hz 230v RMS синусоидален сигнал с много нисък импеданс. Няколко неща за казване по въпроса:

50Hz - Мрежовата честота се поддържа много точно при 50Hz. Той варира леко, но 90% от времето е между 49.9-50.1Hz. Виж тук. Можете да си представите, че всички огромни генератори в електроцентрали нагоре и надолу в страната се въртят в унисон. Те се въртят синхронно, произвеждайки за нас 50Hz синусоидален сигнал. Тяхната комбинирана масивна ротационна инерция отнема време, за да се забави или ускори.

На теория, ако към мрежата е прикрепен ОГРОМЕН товар, това би започнало да забавя генераторите в страната. В отговор обаче момчетата от контролния офис на Националната мрежа ще поискат от електроцентралите да подпалят котлите им, да увеличат топлината и да принудят тези генератори да се справят с търсенето. Така търсенето и предлагането са в непрекъснат танц помежду си.

Още нещо да кажа за 50Hz сигнала. Въпреки че варира много малко около 50Hz, момчетата отгоре се уверяват, че средната честота през деня е точно 50Hz. Така че, ако мрежата е на 49.95Hz за 10 минути, те ще гарантират, че тя работи на 50.05Hz по -късно, за да донесе точния брой цикли до 50Hz x 60seconds x 60minutes x 24hours = 4, 320, 000/ден. Те правят това точно с помощта на Международното атомно време. Поради това домакински, офис и промишлени уреди могат да използват честотата на мрежата, за да запазят времето. Това обикновено се прави например с механични таймери за контакти.

230v - Това е RMS (Root Mean Square) напрежение на 50Hz сигнала. Действителният сигнал се люлее до пик 325v. Това е важно да се знае, защото ако изграждате инвертор, трябва да генерирате толкова високо напрежение, ако искате да накарате някакъв ток да влезе в щепселите.

В действителност напреженията, наблюдавани на щепсел във вашата къща, са доста променливи. Това се дължи на спад на напрежението в съпротивлението на проводници, конектори, предпазители, трансформатори и др. Съпротивление има навсякъде. Ако включите електрически душ, който дърпа 11 киловата (това е ~ 50 Ампера), дори съпротивлението от 0,2 ома ще намали 10 волта. Може да видите това, тъй като светлините затъмняват толкова леко. Големите двигатели, като тези при забиване, привличат огромни токове, докато двигателят набира скорост. Така че често виждате леко трептене на светлините, когато ги включите.

Мисля, че мрежовото напрежение е много по -променливо. Тук във Великобритания трябва да бъде 230v с +10%/-6% толеранс. Можете да очаквате да видите внезапни промени и колебания, когато големите товари наблизо се включват/изключват. Помислете за сушилни, чайници, фурни, копаене и др.

Синусоидален - Сигналът трябва да е хубава чиста синусоида, но в действителност някои нелинейни уреди изсмукват мощността си от определени точки в цикъла на синусоидата. Това въвежда изкривяване и затова сигналът не е перфектна синусоида. Нелинейните натоварвания обикновено включват компютърни захранвания, флуоресцентни лампи, зарядни устройства, телевизори и др.

Общото хармонично изкривяване (THD) определя количествено това във формата на вълната. Има разпоредби за това колко чист трябва да бъде изходът на инвертора. Ако не може да произведе достатъчно чист сигнал, той няма да бъде одобрен за продажба. Това е важно, защото съдържанието на хармоници в мрежата намалява ефективността на някои устройства, свързани към нея (особено нечетни хармоници). Вярвам, че максимално допустимият THD е 8%

Нисък импеданс - Когато мислите за мрежов инвертор, това ще бъде важно да се има предвид. Към мрежата са свързани всякакви товари, включително индуктивни, резистивни и понякога капацитивни натоварвания. Така че импедансът е неизвестен и променлив. Съпротивлението е много малко, което означава, че ако свържете голям токов товар, напрежението няма да падне много.

Стъпка 2: Как да вмъкнете захранването в мрежата

Как да вмъкнете захранването в мрежата
Как да вмъкнете захранването в мрежата

За да включим захранването в мрежата, трябва да синтезираме сигнал, който точно съответства на честотата и фазата на мрежата, но с напрежение, което е толкова малко по -високо.

Поради ниското съпротивление на мрежата е трудно да се знае точно колко по -високо да се направи това напрежение. И тъй като RMS напрежението се колебае, трябва да сме сигурни, че се колебаем с него. Просто генерирането на фиксиран сигнал от 50Hz напрежение, малко по -високо от мрежовото напрежение, няма да работи!

PI Контрол на изходния ток

Това, от което се нуждаем, е контролен контур, чрез който измерваме моментния ток, който избутваме в мрежата, и автоматично регулираме изходното си напрежение, за да управляваме тока, който искаме. Това ефективно ще преобразува нашия изход в източник на ток (а не в източник на напрежение), който е по -подходящ за управление на ниски импеданси. Можем да постигнем това, като използваме PI (Пропорционално интегрален) контур за управление:

PI контролните контури са фантастични! Има 3 части към тях:

  • Измерената стойност - Токът, който вкарваме в електрическата мрежа
  • Зададената стойност - Токът, който искаме да натискаме в електрическата мрежа
  • Изходът - напрежението на сигнала за генериране

Всеки път, когато извикаме PID алгоритъма, преминаваме най -новото текущо измерване и зададената стойност, която искаме. Той ще върне произволен номер (пропорционален на изходното напрежение за генериране).

Нашият алгоритъм за PID управление ни позволява да изберем изходния ток, който искаме във всеки един момент. За да произведем 50Hz синусоидален изходен ток, ние трябва непрекъснато да променяме искания от нас ток по синусоидален начин.

PID алгоритъмът се извиква на всеки 100us (равен на 200 пъти за 50Hz цикъл). Всеки път, когато се извиква, той може да прави директни корекции на изходното напрежение и по този начин индиректно да регулира изходния ток. В резултат на това ние произвеждаме стъпаловиден токов изход, подобен на показания на снимката, като всяка стъпка се случва на всеки 100us. Това осигурява достатъчно разрешение.

Продължителен контрол

Можем значително да намалим натоварването на PI контролера, като добавим и контролер за предаване. Това е лесно! Знаем приблизителното изходно напрежение, което ще трябва да генерираме (същото като моменталното напрежение на мрежата). След това PI контролерът може да бъде оставен да добави малкото допълнително напрежение, необходимо за задвижване на изходен ток.

Контролерът за подаване сам по себе си съпоставя изходното напрежение на инвертора с напрежението на мрежата. Не трябва да тече ток, ако съвпадаме достатъчно добре. Следователно, контролът за предаване напред прави 99% от контрола на изхода.

Поради ниското съпротивление на мрежата, всяка разлика в нашето изходно напрежение на FF и напрежението на мрежата ще доведе до голям ток. Затова добавих 1ohm буферно съпротивление между инвертора и мрежата. Това наистина въвежда загуби, но те са доста малки в голямата схема.

Стъпка 3: Изработване на изходно напрежение с помощта на ШИМ

Производство на изходно напрежение с помощта на ШИМ
Производство на изходно напрежение с помощта на ШИМ
Производство на изходно напрежение с помощта на ШИМ
Производство на изходно напрежение с помощта на ШИМ
Производство на изходно напрежение с помощта на ШИМ
Производство на изходно напрежение с помощта на ШИМ

Въпреки че непряко контролираме изходния ток, това е изходно напрежение, което генерираме във всеки даден момент. Ние използваме PWM (Pulse Width Modulation), за да произвеждаме нашето изходно напрежение. ШИМ сигналите могат лесно да бъдат произведени от микроконтролери и те могат да бъдат усилени с помощта на H-Bridge. Те са прости форми на вълни, характеризиращи се с 2 параметъра, честотата F и работния цикъл D.

Формата на ШИМ вълна превключва между 2 напрежения, в нашия случай 0v и Vsupply

  • С D = 1.0 PWM формата на вълната е просто DC при Vsupply
  • С D = 0,5 получаваме квадратна вълна със средно напрежение 0,5 x V захранване (т.е. D x V захранване)
  • С D = 0,1 получаваме импулсна форма на вълна със среден период от 0,1 x V захранване
  • С D = 0.0 изходът е плосък (DC при 0v)

Основното е средното напрежение. С нискочестотен филтър можем да премахнем всичко, освен DC средния компонент. Така че, като променяме работния цикъл на ШИМ D, можем да направим всяко желано DC напрежение. Сладка!

Използване на H-Bridge

H-Bridge се състои от 4 превключващи елемента. Това могат да бъдат BJT, MOSFET или IGBT. За да произведем първата половина (0 - 180 градуса) на синусоидната вълна, ние задаваме фаза В ниска, като изключваме Q3 и Q4 (т.е. прилагаме ШИМ с D = 0). След това изпълняваме PWMing на фаза А. За втората половина, където VAB е отрицателен, задаваме фаза A ниска и прилагаме нашата PWM към фаза B. Това е известно като биполярно превключване.

MOSFET в H-моста трябва да се задвижват от драйвер на порта. Това е собствена тема, но прост чип може да се погрижи за това. Разработената платка DRV8301 удобно разполага с H-Bridge, драйвери на порта и текущи шунтове, което прави този проект адски много по-лесен.

Стъпка 4: Измерване на тока

Измервателен ток
Измервателен ток
Измервателен ток
Измервателен ток
Измервателен ток
Измервателен ток

Всеки крак на H-Bridge има шунтиращ резистор и диференциален усилвател. Нашите шунтове са 0.01ohms и усилвателите ни са настроени за усилване от 40. Следователно 1 Amp развива 10mV през шунта, който впоследствие се усилва до 400mV.

Изходите от шунтиращите усилватели се четат от 12 -битовите АЦП на STM32F407, работещи в режим на непрекъснато преобразуване. ADC са настроени да изпробват всеки шунт при 110KSPS и DMA контролерът автоматично записва преобразуванията в кръгов буфер от 11 думи в RAM. Когато се иска текущо измерване, ние извикваме функция, която връща средната стойност на този буфер от 11 думи.

Тъй като искаме текущи измервания на всяка PID итерация (при 10KHz), но запълваме нашите 11 -словни ADC буфери със скорост 110KHz, трябва да получим напълно свежи данни за всяка PID итерация. Причината за използването на среден филтър е, че превключването с ШИМ може да въведе шипове в сместа, а средните филтри премахват много ефективно фалшивите ADC проби.

Важен момент, който трябва да отбележим тук: Кой крак на H-Bridge използваме за текущи измервания? Ами зависи от кой крак в момента сме PWMing и кой просто е нисък. Кракът, държан ниско, е този, от който искаме да измерим тока си, тъй като токът винаги тече през шунтиращия резистор от тази страна. За сравнение, от страната, която е PWMed, когато MOSFET от високата страна е включен и долната страна е изключена, токът през ниската страна не тече. Така че, ние променяме на кой крак измерваме тока въз основа на полярността на изхода на инвертора. Можете да видите това ясно на снимката, показваща изхода от един от шунтиращите усилватели за определен период. Очевидно искаме да вземем показания по време на гладката част.

За да помогнете за отстраняване на грешки в текущите ни показания. Настроих цифрово-аналоговия конвертор на STM32F407. Написах текущите показания, които получавах, и обхванах изхода. Можете да видите това в крайното изображение, синьото е напрежението на изходния буферен резистор (т.е. изходният ток/1,1 ома), а червеният сигнал е нашият DAC изход.

Стъпка 5: Филтриране на изхода

Филтриране на изхода
Филтриране на изхода
Филтриране на изхода
Филтриране на изхода

Изходният филтър е ключова част от дизайна. От него се нуждаем от тези характеристики:

  1. Блокирайте всички високочестотни превключвания, но предайте 50Hz сигнал
  2. Ниски загуби
  3. За да не резонира!
  4. За да се справите с включените токове и напрежения

Фурие преобразуването на ШИМ сигнал с честота F, работен цикъл D, между 0 - V захранващи волта е: (D x V захранване) + синусоидални вълни при основната честота F и хармоници след това

Това е брилянтно! Това означава, че ако пуснем нашия ШИМ сигнал през нискочестотен филтър, който блокира фундаменталния ШИМ и всичко по -горе. Остава ни само терминът DC напрежение. Променяйки работния цикъл, ние лесно можем да произведем всяко напрежение, което искаме между 0 - V захранване, както е обяснено.

Въз основа на споменатите по -горе желани характеристики можем да проектираме изходния филтър. Нуждаем се от нискочестотен филтър, направен с минимално съпротивление, за да избегнем загуби. Следователно ние просто използваме индуктори и кондензатори. Ако изберем резонансна честота между 1 - 2KHz, ще избегнем резонанса, тъй като не инжектираме никакви сигнали близо до тази честота. Ето нашия дизайн на филтъра. Ние приемаме нашия изход като напрежение в C1.

Избирайки L1 = L2 = 440uH, C1 = 8.4uF изчисляваме резонансна честота от 1.85KHz. Това също са реалистични стойности на компонентите.

Жизненоважно е да се гарантира, че нашите индуктори не започват да се насищат при теченията, които очакваме. Индукторите, които използвах, имат 3A ток на насищане. Това ще бъде ограничаващият фактор на изходната мощност на нашата верига. Номиналното напрежение на кондензатора също е важно да се вземе предвид. Използвам някаква 450v керамика, което е много прекалено в този случай!

Графикът на bode (за малко по -различни стойности на L/C) е генериран с помощта на LTspice. Той ни показва затихването, причинено от различни входни честоти. Можем ясно да видим резонансната честота на 1.8KHz. Той показва, че 50Hz сигнал е почти изцяло неподправен, докато мога да ви кажа, че 45 KHz сигнал е отслабен от 54dB!

Така че нека да изберем нашата PWM носеща честота да бъде ~ 45KHz. Избирайки по -високи PWM носещи честоти, честотата на филтъра може да бъде повишена. Това е добре, защото прави стойностите L и C по -малки. Това означава по -малки и по -евтини компоненти. Недостатъкът е, че по -високите честоти на превключване на ШИМ внасят по -големи загуби в транзисторните превключватели.

Стъпка 6: Синхронизиране на фаза и честота

Синхронизиране на фаза и честота
Синхронизиране на фаза и честота
Синхронизиране на фаза и честота
Синхронизиране на фаза и честота
Синхронизиране на фаза и честота
Синхронизиране на фаза и честота

Синхронизирането с фазата и честотата на мрежата е това, което прави инвертора за свързване на мрежата. Използваме цифрова реализация на PLL (Phase Locked Loop), за да постигнем точно проследяване на фазата на мрежовия сигнал. Правим това чрез:

  1. Вземане на проби от мрежовото напрежение
  2. Производство на собствен локален 50Hz синусоидален сигнал
  3. Сравняване на фазата между нашия локален сигнал и мрежовия сигнал
  4. Регулиране на честотата на локалния сигнал, докато фазовата разлика между 2 -те сигнала е нула

1) Вземане на проби от мрежовото напрежение

Конфигурираме трети ADC канал за отчитане на линейното напрежение. Това получаваме чрез напрежение, разделящо трансформаторен кран, както е показано. Това осигурява мащабирано напрежение, вариращо около 1.65v, което точно представлява напрежението в мрежата.

2) Изработване на локален 50Hz синусоидален сигнал Производството на собствена локална 50Hz синусоидална вълна е лесно. Съхраняваме справочна таблица с 256 синусови стойности. Нашата симулирана стойност на синус лесно се получава с помощта на индекс за търсене, който се върти постепенно през таблицата.

Трябва да увеличим индекса си с точно правилната скорост, за да получим 50Hz сигнал. А именно 256 x 50Hz = 12, 800/s. Правим това, като използваме timer9 с тактова честота 168MHz. Като изчакаме 168MHz/12800 = 13125 часовника, ще увеличим индекса си с правилната скорост.

3) Сравняване на фазата между нашия локален сигнал и мрежовия сигнал Това е готината част! Ако интегрирате произведението на cos (wt) x sin (wt) за 1 период, резултатът е нула. Ако фазовата разлика е нещо различно от 90 градуса, получавате ненулево число. Математически:

Интеграл [Asin (t) x Bsin (t + φ)] = Ccos (φ)

Това е страхотно! Тя ни позволява да сравним мрежовия сигнал, sin (ωt) с нашия локален сигнал, sin (⍵t + φ) и да получим стойност.

Съществува обаче проблем, който трябва да бъде разгледан: Ако искаме сигналите ни да останат във фаза, трябва да коригираме локалната си честота, за да запазим Ccos (φ) термина максимален. Това няма да работи много добре и ще получим лошо проследяване на фазите. Това е така, защото d/dφ на ɑcos (φ) е 0 при φ = 0. Това означава, че терминът Ccos (φ) няма да варира много с промените във фазата. Има ли логика в това?

Би било много по -добре фазовото изместване на пробния мрежов сигнал с 90 градуса, така че да стане cos (ωt + φ). Тогава имаме това:

Интеграл [Asin (t) Bcos (t + φ)] = Csin (φ)

Въвеждането на фазово изместване на 90 градуса е лесно, просто вмъкваме нашите проби от напрежение на мрежовото ADC напрежение в единия край на буфера и ги изваждаме няколко проби по -късно, съответстващи на фазово изместване от 90 градуса. Тъй като честотата на мрежата почти не варира от 50Hz, една проста техника на закъснение работи брилянтно.

Сега умножаваме нашия 90 градусов фазово изместен мрежов сигнал с нашия локален сигнал и поддържаме работещ интеграл на продукта през последния период (т.е. през последните 256 стойности).

Резултатът, който знаем, ще бъде нулев, ако двата сигнала се поддържат точно на 90 градуса един от друг. Това е фантастично, защото отменя фазовото изместване, което току -що приложихме към мрежовия сигнал. Само за да поясним, вместо да максимизираме интегралния член, ние се опитваме да го запазим нула и фазово изместваме нашия мрежов сигнал. Фазовите промени на 90 градуса, въведени от тези 2 промени, се анулират взаимно.

Така че ако Integral_Result <0 знаем, че трябва да увеличим локалната честота на осцилатора, за да я върнем във фаза с мрежата, и обратно.

4) Регулиране на честотата на локалния сигнал Този бит е лесен. Ние просто коригираме периода между увеличаването чрез нашия индекс. Ограничаваме колко бързо можем да коригираме фазовата разлика, като по същество филтрираме фалшиви whatevers. Правим това с помощта на PI контролер с много малък I термин.

И това е. Заключихме локалния си осцилатор на синусоида (който задава зададената стойност на изходния ток) да бъде във фаза с мрежовото напрежение. Ние внедрихме PLL алгоритъм и той работи като мечта!

Увеличаването на честотата на нашия локален осцилатор също намалява фазовото изместване, поставено върху мрежовия сигнал. Тъй като ограничаваме настройката на честотата до +/- 131 отметки (+/- ~ 1%), ние ще повлияем на фазовото изместване най-много с +/- 1 °. Това няма да има значение, докато фазите се синхронизират.

Теоретично, ако мрежовата честота се отклони с повече от 0,5Hz, бихме загубили фазовото си заключване. Това се дължи на горното ни ограничение за това колко можем да регулираме нашата локална честота на осцилатора. Това обаче няма да се случи, освен ако мрежата е на път да се провали. Нашата анти-островна защита така или иначе ще започне да действа.

Ние правим откриване на пресичане на нула при стартиране, за да направим всичко възможно да стартираме сигналите във фаза от офсета.

Стъпка 7: Защита срещу остров

Анти-остров
Анти-остров

Уикипедия има страхотна статия, посветена на техники за остров и борба с острова. Това също така означава, че хората съскат и махат повече от необходимото, когато става въпрос за тази тема. „О, не можете да изградите свой собствен инвертор на мрежата, ще убиете някой и т.н. и т.н.“

Както е обяснено по -добре в статията в wikipedia, ние използваме няколко предпазни мерки, които заедно осигуряват адекватна защита (според мен):

  1. Под/над напрежение
  2. Под/Над честота

Можем да открием тези ситуации, като просто анализираме нашето пробно мащабирано мрежово напрежение. Ако нещо се обърка, деактивирайте H-моста и изчакайте нещата да се нормализират.

Препоръчано: