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

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

Дешевий простий 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
Повідомлень: 4

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).

Неактивний

#3 2023-04-11 22:18:09

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

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

Проект було радикально покращено і допрацьвано до промислового рівня, 4 проміжних релізи не публікувались тут, поточна версія 1.0 і оновлень коду більше не планується.
Деякі ремарки:
- реалізована функція обмеження (додан приклад реалізації обмеження напруги, а також обмеження струму - якість/плавність обмеження струму не тестувалась, хоча код на це розрахований);
- виявлена проблема з лінійним стабілізатором - навіть з якісним стабілізатором рекомендується додавати ще один конденсатор на його вихід (на живлення мікроконтролера) порядка 47мкф;
- реалізована робота індуктора в continuous mode (він буде утримуватись в такому режимі в певних наборах обставин);
- значно покращені практивно всі характеристики (плавність виходу/ripple current, швидкість калібрування/зміни режимів, час заміру холостої напруги);
- додано розширену інформацію (+оновлена схематика) з прикладом другого прототипу - рекомендації до збірки/розташування компонентів;
- ефективніть (ККД) другого прототипу при ~12в виході - до 95%, типово 93-94%, при ~5в виході - 83-85%;
- другий прототип зроблено з іншею топологією (розпіновкою) - прошивка x.x.x.'F', яка має здвоєний PWM пін (і не має інвертованого PWM);
- конкретно другий прототип (із задокументованими компонентами) підходить як є для 18в 50вт панелі для ~12в/4a виходу, для струму десь більше 3-4 ампер варто додавати радіатор на мосфет, що контролюється PWM (конкретніше треба тестувати, у цілому у мене на тривалих 1.5-2А мосфет IRLZ34N майже холодний);
- другий прототип був короткостроково (~5-10 секунд) протестований з вихідним струмом 9 ампер, а також з заміненим потужнішим індуктором і вихідним струмом 14 ампер, ніхто не постраждав smile

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

Рекомендований індуктор - 33 мікрогенрі, але в межах однакових корпусів чим більше індуктивність, тим менше рейтинговий струм індуктора (який є +- коректним максимальним вихідним струмом для ефективної роботи цього пристрою, беріть трошки з запасом). І це є проблема бо у індуктора з прикладу рейтинговий струм всього 3.9а, і потужніших я не знаходив у продажу в Україні. Індуктори з меншою індуктивністью підійдуть, але будуть давати більший ripple current і піщати з більшою вірогідністю.

Більше детальної інформації - у main.c у початку файла. Рекомендована прошивка pic12f675_lp_mppt__1_0_198_F.hex

Окремо додано коротку інструкцію як швидко/легко прошити pic12f675 маючи плату ардуіно, два діоди і два керамічних конденсатори ( https://github.com/Nonoum/ProgramPic-fork-modification ).

Планую також зробити і викласти відео на youtube з додатковою інформацією, в тому числі з поясненням оцінки/визначення доцільності MPPT як такового у конкретно взятих випадках.

Прототип №2 (фото пережаті форумом при завантаженні, дещо якісніші оригінали у png у репозиторії на github):
lp_mppt_pic12f675__prototype2_top_view.jpeg
lp_mppt_pic12f675__prototype2_bottom_view_flipped.jpeg
lp_mppt_pic12f675__prototype2_bottom_view_flipped_commented.jpeg

Оновлена схематика:
1_0_schematics.jpeg

Неактивний

#4 2023-07-07 23:24:08

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

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

Як і планував - зробив відео (правда, Англійською і без субтитрів) з додатковими поясненнями теорії, в т.ч. як оцінювати ефективність сонячних контролерів для конкретного випадку (високовольтні/високопотужні системи не розглядаються), оглянуто для прикладу два куплених модулі з заявленим MPPT, якого в них насправді нема, показано і пояснено, чому вони погано працюють.
Після релізу 1.0 були ще деякі дослідження і покращення:
- заміряно реальний зворотній струм у панель у темряві: 18в 50вт панель тягнула з 12в аккуму лише близько 2ма струму, що небагато, і ставить питання доцільності захитсу від зворотньго струму (базова схема пристрою має зворотній струм через закритий PWM мосфет, якщо нема додаткового захисту, але він самій схемі не шкодить).
- додано опціональну функцію захисту від зворотнього струму (нова топологія - "U", прошивки 1.3.*.U) - прошивка керує додатковим вихідним мосфетом базуючись на заміряній напрузі холостого ходу (OCV), швидкість реакції - 2 секунди, пояснення і розрахунки - на додатковому фото (U_schematics_extension.jpg).
- зібрано і протестовано компактний прототип для нової топології для заряду Li-Ion аккуму (напруга, звісно, налаштовується, "профілю заряду" немає, лише обмеження вихідної напруги) з панелі з рейтингом 6в (MPP) - дуже висока ефективність (типово 92% перетворення), також пояснено у відео. Прототип розраховувався на панель до 10вт smile особисто я бачу доцільними/збалансованими кастомні сонячні павербанки з 3-5вт панеллю і 10аг аккумом, або 10вт панеллю і 20аг аккумом.

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

https://www.youtube.com/watch?v=ihknAuBgBg0

Неактивний

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

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

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