#1 2022-11-28 00:32:02

Nonoum
Учасник
Зареєстрований: 2022-11-27
Повідомлень: 2

Дешевий простий MPPT контролер на базі PIC12F675. Розроблено в Україні

Викладаю тут свою розробку простого дешевого (собівартість порядка 200грн) сонячного MPPT контролера, орієнтованого на ефективну роботу у хмарну і зимову погоду.

Через останні події я змушений зарелізити це дещо раніше, ніж планувалося (не все встиг зробити, що хотів), бо ссана русня вже спричинила блекаут, і сидячи без світла, води і опалення я вирішив, що проект у достатьому стані для того, щоб принести користь Українцям у певних юз-кейсах. Початково це замислювалося для невеликих портативних сонячних станції для потреб ЗСУ (які роблять інші люди у нашій країні).


Пристрій має нетипову схему і працює за іншим принципом, ніж MPPT контролери, які я бачив. Його особливість у мінімальній схемі і дешевому мікроконтролері, якого цілком достатньо для реалізації такої задачі.
У двох словах - пристрій вміє періодично дуже швидко заміряти "холосту" напругу сонячної панелі і корегувати PWM понижуючого перетворювача щоб підтримувати 80% від холостої напруги, яка і є MPP (maximum power point) на майже усьому діапазоні генерації енергії сонячною панеллю. Таким чином не потребується замір струму.
PWM виконується вручну, оскільки такий контролер не має апаратного PWM, реалізована частково асинхронна логіка на ассемблері для максимально гладкої роботи і низьких пульсацій.

Проект (код, схема, документація, прошивка у .hex) викладено на github тут: https://github.com/Nonoum/LP_MPPT_PIC12F675
Оновлення будуть потрапляти на github і сюди (я поки не знаю інших Українських форумів для розробників).
Зверху файлу коду прошивки (main.c) досить детальний опис з додатковими коментарями (все англійською), додаю версію Українською з деяким доповненням нижче:


Опис схеми словами:
1. сонячна панель має(рекомендовано) підключатися чрез діод, в прототипі використовувався діод шоттки SR840, обраний мною за круту ВАХ (вольт-амперну характеристику).
2. вхід ("висока напруга" / "земля") підключається до лінійного стабілізатора і мінімального потрібного для ньго керамічного конденсатора (0.1 - 0.15 мікрофарад).
    В прототипі конденсатор 0.15 мікрофарад і "LP2950CZ-3.3G ON" стабілізатор (обрано за прекрасні характеристики, але можна використовувати і інші - в першу чергу звертайте увагу на максимально допустиму вхідну напругу).
3. лінійний стабілізатор має вихідний керамічний конденсатор (згідно з його вимогами) - в прототипі 2.2 мікрофарад - стабілізована напруга живить мікроконтролер і ще один підтягуючий резистор.
    * понижуючий DC-DC перетворювач не може бути використаний замість лінійного стабілізатора, оскільки має високу вхідну ємність.
4. один Н-канальний мосфет (польовий транзистор) комутує буферний конденсатор (між "висока напруга" / "земля") і періодично закривається для заміру холостої напруги.
    * обов'язково додавати зовнішній підтягуючий резистор (до затвору цього мосфету) до живлення мікроконтролера (в прототипі резистор 200к).
    В прототипі було використано пачку з п'яти потужних конденсаторів (1000uf 35v LOW ESR) разраховану на дуже великі струми.
5. другий Н-канальний мосфет комутує вихідну частину схеми (індуктор + діод + конденсатор) між ("висока напруга" / "земля").
    * обов'язково додавати зовнішній підтягуючий резистор до землі (в прототипі резистор 200к).
    В прототипі використовувалися індуктори 22uh і 47uh (мікрогенрі), але можуть бути і інші (розраховуйте під конкретні потреби, деталі PWM нижче).
    Рекомендований вихідний конденсатор не менший ніж 2000 мікрофарад.
6. ділитель напруги між ("висока напруга" / "земля") підключається до АЦП входу контролера, разраховується таким чином, щоб максимальна напруга на АЦП не перевищувала (+ бажано майже дорівнювала) напругу живлення мікроконтролера.
    В прототипі використано 3.3кОм (на землю) і 20кОм(на "висока напруга"). Рекомендую використовувати такиї ділитель, щоб сумарний опір (на 1 кілоом) не перевищував максимальну напругу сонячної паналей на 1 вольт (тобто наприклад 20+3.3 = 23.3 кОм на максимальну напругу 22в панелі з номіналом 18в).
7. у прототипі використані мосфети IRLZ34N, які мають непогані характеристики, хоча навряд є оптимальними навіть для умов, в яких це тестувалося.
8. така мінімальна схема дає нерегульований (необмежений) вихід, на якому напруга може досягати максимальной напруги сонячної панелі (холостої напруги),
    якщо потрібно - для простого обмеження напруги можна використовувати понижуючий DC-DC конвертер послідовно.


Обмеження вихідної напруги/фідбек: заплановано зробити вбудоване обмеження (додаток до схеми і модифікація прошивки) з додаванням фідбеку на базі оптрону і компаратору.

Також особливості пристрою:
- софт старт (повільний старт заряду вихідного конденсатора - починаючи з менших струмів) - є і залишиться у мійбутніх версіях.
- низьке власне споривання схеми: прототип споживає 1-2 міліампери залежно від умов (стабільний стан коли немає навантаження),
    * з гіршим лінійним стабілізатором буде дещо більше.
    * конденсатори також впливають на споживання - рекомендую LOW ESR моделі, у прототипі: Hitano EXR Series.

Важлива примітка до контролера: є варіанти PIC12F675 (типа примітки I/P в кінці назви контролера) принаймні з двома діапазонами напруг (до 3.6 і до 5.5в) - звертайте на це увагу, якщо використовуєте лінійний стабілізатор на 5в, а не на 3.3в.


Примітки щодо ефективності/ККД:
- згідно з замірами ККД конкретного прототипу був від 70 до 92.5 відсотків залежно від різниці напруги (наскільки треба було знижувати напругу стабілізації (MPP) до вихідної).
- заміри робились не дорогим обладнанням (найкраще, що використовувалося - True RMS тестер за 1000 грн).
- описане тестування проводилося з 18в панеллю номіналом 50вт (її MPP в діапазоні 15..18 вольт залежно від освітленності, більша частина тестуання у тотально хмарну погоду).
- маючи простий powerbank на виході (таким чином вихідна напруга в діапазоні 4.5 ... 5.2в) різниця з напругою стабілізації (MPP) становила більше 10в і ККД був близько 75%.
- маючи той самий powerbank переведений у режим QC (або PD) певним чином (описано нижче) - вихідна напруга утримувалася на рівні 11.4 і ККД був 92.5%.
- припускаю (імовірно), що із лінійним стабілізатором на 5в ККД буде вищий (принаймні з іншими мосфетами) - це ще не було протестовано, у цілому ККД залежить від використаних компонентів.
- щодо впливу Ефекту Міллера - було обмежено протестовано варіанти з одиночним піном для керування мосфету і зі здвоєним піном для більшої потужності і швидшого відкривання/закривання мосфета:
    * не було помічено різниці у ККД.
    * тестувалося в обмежених умовах з вихідними напругами на рівні 2-4в, хоча ефект більше відноситься до більш високих напруг.
    * потужніші мосфети (з більшою паразитною ємністю) імовірніше за все потребують здвоєного/зтроєного піна для ефективного керування.
    * мосфет, який комутує буферний конденсатор, рідко тригериться і я рекомендую обирати на його місце більш потужну модель, ніж на другий мосфет.
    * при потребі зробити дуже потужний керуючий пін - не важко адаптувати PIC16F676 замість PIC12F676 і використовувати весь порт Б для керування мосфетом (6 пінів).

Пульсації:
- пульсації вихідної напруги на прототипі виглядають суб'ективно добре, але заміряні звичайними тестерами (в мене нема осцилографа).
- припускаю, що навіть більші пульсації не є проблемою коли навантаження - це якась БМС (принаймні, якщо якісна).
- пульсації зменшуються зі збільшенням конденсаторів (частково протестовано).
- конденсатори можуть бути менші/більші, припускаю такі рекомендації:
    -- мінімум 1000uf (буферний), 2000uf(вихідний);
    -- рекомендовані: 3000uf і більше (буферний), 5000uf і більше (вихідний);

PWM:
- для розрахунку індуктора можно орієнтуватися на такі параметри PWM:
    -- мінімальна довжина одиничних імпульсів (duty ON / вихідний мосфет відкрит) наразі 2 мікросекунди і майже точно не буде змінюватися з оновленнями.
    -- максимальна довжина одиничних імпульсів у поточній прошивці (0.1.0) наразі 21 мікросекунда (+ "найстарший" режим просто повністю відкриває мосфет і утримує доки це доцільно).
    -- співвідношення ON/OFF наближається до 1:1 (50%), або менше ("молодші" режими потужності - корегується автоматично відповідно умовам).


Деякі примітки щодо тестування з powerbank:
- powerbank, який я тестував, може бути переведений у режим QC (чи PD): при підключенні до джерела живлення він запитує підвищення напруги, і у випадку з цим MPPT пристроєм напруга у цей момент як раз може зростати, таким чином powerbank "вважає, що все іде за планом і приймає це".
- якщо напруга перевищить (встигне перевищити) допустиму напругу powerbank - він перейде в режим захисту і не буде заряджатися.
- звичайний понижуючий DC-DC перетворювач може бути використано для обмеження вихідної напруги - у такому стані він певно повністю "відкритий" і фактично являє собою невеликий резистор (опір інтуктора + опір мосфета), при тестуванні напруги на вході і виході такого перетворювача майже однакові (на вході трошки більше).





Додавання цього MPPT контролеру до готової типової системи (акумулятор + PWM сонячний контролер):
- вірогідно, що MPPT можна просто підключити всередені (між сонячною панеллю і PWM контролерем) для підвищення ефективності системи, але я таке не тестував і не можу бути впевнений, що все буде добре у всіх випадках (особливо коли заряд завершено і напруга на виході MPPT / вході PWM зросте).

Використання просто з акумуляторами через BMS контролер:
- вірогідно буде працювати коректно, але може викликати перехід BMS у захист від підвищеної напруги у деяких випадках.

Часткове затінення:
- часткове затінення сонячних панелей не береться до уваги у цьому пристрої - пристрій не буде намагатися зробити щось особливе у такому випадку ("повного сканування" немає і воно неможливе з такою схемою).
- вважаю, що, не дивлячись на це, пристрій буде працювати з адекватною ефективністю у реальних сценаріях часткового затінення.
- вважаю, що проблему часткового затінення взагалі не треба вирішувати, так як технологія сонячних панелей сама собою не передбачає такого постріла собі у ногу: встановлюйте панелі таких розмірів, і у таких місцях, щоб уникати часткового затінення наскільки це можливо.


Я не маю можливості протестувати багато юз-кейсів і не розбираюся у особливостях усіх суміжних технологій, розраховую, що інші спеціалисти зможуть використати все коректно для цільових юз-кейсів.



Схема:
Basic_Scheme.jpeg

Прототип виглядає так:
lp_mppt_pic12f675__prototype.jpeg

Неактивний

#2 2022-12-07 15:07:21

Nonoum
Учасник
Зареєстрований: 2022-11-27
Повідомлень: 2

Re: Дешевий простий MPPT контролер на базі PIC12F675. Розроблено в Україні

Оновлено до версії 0.3 - значно покращено пульсації, покращено ефективність у більшості випадків.
Поточна протестована версія - 0.3.198 (pic12f675_lp_mppt__0_3_198_A.hex).
https://github.com/Nonoum/LP_MPPT_PIC12F675

Третье число версії відповідає зашитій константі MPP, константа була переглянута для урахування вхідного діоду (при його наявності) (або також довгого/поганого вхідного кабелю з дещо-істотним падінням напруги).
Для підключення без вхідного діоду - можна брати версію 0.3.202, с якісним вхідним діодом - 0.3.198, з неякісним - 0.3.194 (максимальний запас падіння вхідної напруги).
Наразі планується кожну версію (поточна - 0.3) збирати також з трьома варіантами констант (202, 198, 194).

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму