Симисторний регулятор потужності на Ардуїно. Світловий димер керований Arduino. Технологічний процес збирання

Продовження розробки контролера, розпочатої в уроці 36. Напишемо програму регулятора потужності на елементі Пельтьє. Дізнаємось що таке інтегральний регулятор.

Охолоджувальна здатність елемента Пельтьє пов'язана з електричною потужністю на елементі. Тому регулювання температури в камері повинно проводитись за рахунок зміни електричної потужності на модулі Пельтьє. Тобто. нам потрібен регулятор ні напруги, ні струму, зокрема потужності.

Розроблятимемо регулятор потужності, але спочатку дізнаємося мінімальні відомості про регулятори.

Загальні відомості щодо регуляторів.

Регулятор – це пристрій, який підтримує певні параметри об'єкта на заданому рівні. Регулятор стежить за станом об'єкта та виробляє керуючі дії для того, щоб забезпечити стабільність параметра регулювання.

Я добре пам'ятаю, що першою системою регулювання, яку нам в інституті представив викладач ТАУ (теорія автоматичного управління), був механізм підтримки рівня води зливного бачка. Коли рівень води досягає заданого значення, поплавець піднімається і клапан, пов'язаний з важелем, перекриває потік води. Якщо рівень води зменшиться, то поплавець опуститься і клапан відкриє воду.

У будь-якому регуляторі треба чітко виділити, що ми регулюємо та за допомогою чого ми регулюємо. Тобто.

  • регульований параметр;
  • та регулюючий елемент.

У системі регулювання рівня води регульований параметр це рівень води, а регулюючий елемент клапан, пов'язаний з важелем поплавця. Решта між поплавком і клапаном реалізує алгоритм управління.

Для нашого регулятора потужності:

  • регульований параметр - електрична потужність на навантаженні;
  • регулюючий елемент – широтно-імпульсний модулятор.

Хтось поставить питання, що є регулюючим елементом у нашій системі – коефіцієнт заповнення ШІМ або ключовий транзистор електронної схеми. Алгоритм регулятора реалізуємо програмним способом. Для програми регулюючий елемент – коефіцієнт наповнення ШІМ.

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

У нашому випадку на регулятор надходить виміряна потужність з виходу системи та задане значення потужності. За певним алгоритмом регулятор обчислює значення коефіцієнта заповнення ШІМ, за рахунок якого змінюється потужність на навантаженні.

Як у всьому світі, у регулятора є критерії оцінки якості. Це:

  • Швидкість регулювання (швидкість) - час зменшення помилки регулювання до заданої величини.
  • Точність регулювання – помилка параметра регулювання у стані.
  • Стійкість регулятора – відсутність вагань параметра регулювання.

І ще. Ми реалізуємо алгоритм регулювання програмним способом. Це означає, що ми будемо дискретний за часом регулятор. Управління відбуватиметься окремі моменти часу. У програмі контролера ми визначили часову дискретність регулятора потужності 20 мс.

Інтегральний регулювальник.

Інші закони регулювання ми розглянемо в наступному уроці, коли розроблятимемо ПІД (пропорційно-інтегрально-диференціювальний) регулятор температури. Зараз ми говоримо лише про інтегральний закон регулювання.

Отже, ми повинні підтримувати значення потужності на виході, змінюючи ШІМ. Найпростіший, інтуїтивний спосіб це:

  • порівняти задану потужність із виміряною;
  • якщо задане значення більше реального, то ШІМ збільшити на 1;
  • якщо задане значення менше реального, то ШІМ зменшити на 1.

Регулятор з таким алгоритмом управління працюватиме, лише критерії якості регулювання у нього не на висоті. Причому, абсолютно все.

Для якіснішого регулювання необхідно додавати до поточного значення ШІМ величину, що залежить від помилки параметра регулювання.

Математично закон управління інтегрального регулятора виглядає так

  • Kw – коефіцієнт заповнення ШІМ;
  • Ki – інтегральний коефіцієнт;
  • e(t) – помилка неузгодженості, тобто. різниця між заданим та реальним значеннями регульованого параметра.

Вихідна функція інтегрального регулятора пропорційна інтегралу за часом відхилення регульованого параметра.

Інтегральний регулятор – це регулятор послідовного наближення. Велика помилка – він зраджує ШІМ великими кроками. Невелика помилка він повільно її компенсує. Помилка накопичується в інтеграторі і як малою вона не була б, все одно з часом вона вплине на регулюючий елемент.

У більш зрозумілому вигляді, близькому до дискретної реалізації, схема інтегрального регулятора виглядає так.

  • Обчислюється помилка неузгодженості e як різниця між заданою потужністю Pset і виміряною на виході Preal: e = Pset – Preal.
  • Помилка неузгодженості e множиться на інтегральний коефіцієнт Ki та накопичується у регістрі-інтеграторі RgI.
  • Цілі розряди регістру надходять на широтно-імпульсний модулятор.

Як правило, інтегратор має досить велику розрядність із дрібною частиною. А ШІМ може приймати лише цілі значення. Тут нема суперечності. Значення менше одиниці поступово накопичуються в інтеграторі і переходять у цілу частину, а значить і в ШІМ. Це дозволяє при малих помилках неузгодженості або малому значенні Ki зменшувати швидкодію регулятора. Малі значення довго переходитимуть у цілу частину.

Інтегральні регулятори мають:

  • високою точністю;
  • низькою швидкістю регулювання;
  • посередньою стійкістю, що залежить від швидкості регулювання.

Чому регулятора потужності на елементі Пельтьє ми вибрали саме інтегральний закон управління.

  • Елемент Пельтьє змінює параметри в залежності від температури. Але відбувається це дуже повільно. Швидкий регулятор нам просто не потрібний.
  • Більше того, різка зміна потужності на елементі Пельтьє веде до деградації напівпровідникових кристалів модуля. Через різкі зміни температури в місцях спайки напівпровідників виникають механічні напруги, що веде до зниження ефективності елемента і навіть виходу його з ладу. Тому як би швидко не змінював регулятор температури, задане значення для регулятора потужності необхідно, щоб зміна потужності на елементі Пельтьє відбувалася плавно.
  • Є ще конденсатор великої ємності на виході регулятора, який також краще заряджати повільно.

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

До всіх цих вимог ідеально підходить саме інтегральний регулятор. Більше того, коефіцієнт Ki ми спеціально знизимо, щоб забезпечити повільну зміну потужності на навантаженні.

Програма регулятора потужності.

Регулятор додамо до програми з попереднього уроку. Нагадаю, що в ній ми створили структуру програми контролера та реалізували вимірювання напруги, струму та потужності на навантаженні.

Нам потрібні наступні змінні та константи:

float measureP; // виміряна потужність на навантаженні, Вт – ця змінна у програмі вже є.

float setPower; // задана потужність
float regPwrInt=0; //
#define koeffRegPwrInt 0.05 //

Сам регулятор вмістився в один рядок:

І ще треба перевантажити цілу частину з інтегратора в ШІМ:

analogWrite(9, (unsigned int) regPwrInt); // ШИМ

У принципі, ця програма вже працює. Можна тимчасово задати потужність, що дорівнює, наприклад, 5 Вт:

setPower = 5; // тимчасово задана потужність 5 Вт

вставити регулятор у цикл 20 мс та перевірити. Але не вистачає ще деяких операцій.

Обмеження інтегратора.

Ми працюємо із реальною схемою. Допустимо, задана потужність, яку регулятор не здатний забезпечити, наприклад, 50 Вт. Регулятор має сформувати максимальний ШІМ. Але інтегральна ланка нашого регулятора продовжуватиме збільшуватися. Коли воно перевищить максимально допустиме значення ШІМ (у нас це 255), ШІМ перестане правильно працювати. Швидше скинеться на 0 і знову почне збільшуватися. Тобто. необхідно запровадити обмеження інтегральної ланки. Воно не повинно бути більшим за максимальне значення ШІМ і не припустимо, щоб воно стало негативним.

if (regPwrInt< 0) regPwrInt=0; // обмеження знизу
if (regPwrInt > обмеження зверху

"Мертвий час" ШІМ.

Є ще одна тонкість роботи з ШІМ. Імпульси на виході ШІМ перемикають реальний ключ. При зменшенні коефіцієнта заповнення імпульси увімкнення ключа можуть стати дуже короткими. Для нашого ШІМ значення 1 відповідає імпульсу тривалістю 62,5 нс. За такий короткий час ключ не встигає відкриватися повністю і нормально не працюватиме. Швидше за все, при нашому низьковольтному харчуванні (12 В) лиха не трапиться. Але у високовольтних ланцюгах джерел живлення (300 і більше) така комутація призводить до катастрофічних наслідків. Тому хороший стиль управління ШІМ – це заборона надто коротких імпульсів керування.

Введемо два тимчасові відрізки, на яких заборонимо роботу ШІМ. Один відрізок поблизу нуля, другий близько до максимального значення. Загальноприйнято тривалість цих відрізків називати "мертвим часом" ШІМ (dead time). Алгоритм простий:

  • Якщо значення ШІМ менше "мертвого часу", то ШІМ дорівнює 0.
  • Якщо значення ШІМ більше різниці максимального ШІМ та “мертвого часу”, то ШІМ дорівнює максимальному значенню.

Реалізація цього алгоритму у програмі виглядає так:


if (pwm< DEAD_TIME) pwm=0;
if (pwm >
analogWrite(9, pwm); // ШИМ

Я поставив "мертвого часу" рівним 500 нс:

#define DEAD_TIME 8 // мертвий час ШІМ (*62,5 нс)

Вимкнення регулятора.

Останнє, що треба додати це швидке вимкнення регулятора. Я говорив, що регулятор повинен повільно змінювати потужність елемента Пельтьє. Але це не стосується аварійного вимикання. При setPower=0 вимикатимемо регулятор миттєво.

Повністю програмний блок інтегрального регулятора потужності виглядає так:

//------------------ регулятор потужності
if (setPower! = 0) (
regPwrInt = regPwrInt + (setPower - measureP) * koeffRegPwrInt;
if (regPwrInt< 0) regPwrInt=0; // обмеження знизу
if (regPwrInt > MAX_PWM) regPwrInt=MAX_PWM; // обмеження зверху
// мертвий час ШИМ
unsigned int pwm = (unsigned int) regPwrInt; // Переведення в ШІМ
if (pwm< DEAD_TIME) pwm=0;
if (pwm > (MAX_PWM - DEAD_TIME)) pwm=MAX_PWM;
analogWrite(9, pwm); // ШИМ
}
else (// вимкнення
regPwrInt=0;
analogWrite(9, 0); // ШИМ
}

Serial.print("p="); Serial.print(regPwrInt, 2); // інтегральна ланка регулятора потужності

І сплатіть. Усього 40 руб. на місяць за доступ до всіх ресурсів сайту!

Перевірка та налаштування регулятора.

Тепер перевіримо роботу регулятора на реальному навантаженні та визначимо інтегральний коефіцієнт.

Як засіб контролю роботи регулятора використовуватимемо монітор послідовного порту. Не забудьте встановити швидкість 19 200 бод.

Спочатку я поставив інтегральний коефіцієнт рівним 0,1.

#define koeffRegPwrInt 0.1 // інтегральний коефіцієнт регулятора потужності

Запустив монітор послідовного порту та побачив таку картину.

Регулятор працює. Задану потужність (5 Вт) встановлює за 14-15 сік.

Замкнув один резистор. Потужність різко змінилася, але регулятор за 5-6 сік привів її в норму.

Працює стійко. Про стійкість треба будувати висновки щодо зміни цілої частини інтегрального ланки, тобто. ШИМ. В ідеальному регуляторі ШІМ повинен змінюватися на 1. Струм, а значить, і потужність "скачуть" через не дуже точну дискретизацію АЦП при малих значеннях. У принципі, цей коефіцієнт (0,1) нас влаштовує. Але краще побачити межі сталої роботи регулятора та задати його із запасом.

Встановив інтегральний коефіцієнт рівним 1 і побачив таке.

Потужність встановлюється на заданому рівні приблизно за 1 с і регулятор продовжує працювати стійко.

Тепер коефіцієнт 10.

Працює ще швидше, але ШІМ почав "скакати" на 2-5 одиниць. Регулятор працює нестійко. Такий коефіцієнт використовувати не можна.

Чисто в демонстративних цілях я поставив коефіцієнт рівним 20.

Вагання досягли 30 одиниць ШІМ. Ось осцилограма напруги на виході. Все пішло у рознесення.

Вибирайте коефіцієнт самі. Я думаю, що він не повинен перевищувати 0,5. Я поки що встановив повільний коефіцієнт 0,05.

Регулятор встановлює задану потужність 5 Вт за 30 с. За більшої потужності працюватиме ще повільніше. Але тим краще для елемента Пельтьє. Та й коефіцієнт завжди можна змінити.

Резюме

Для системи «Розумний дім» основним завданням є управління побутовими приладами з керуючого пристрою чи то мікроконтролер типу Ардуїно, чи мікрокомп'ютер типу Raspberry PI або будь-яке інше. Але зробити цього безпосередньо не вийде, давайте розберемося як управляти навантаженням 220 В з Ардуїно.

Для управління ланцюгами змінного струму засобів мікроконтролера недостатньо з двох причин:

1. На виході мікроконтролераформується сигнал постійної напруги.

2. Струм через пін мікроконтролера зазвичай обмежений величиною 20-40 мА.

Ми маємо два варіанти комутації за допомогою реле або за допомогою сімістора. Симистор може бути замінений двома включеними зустрічно-паралельно тиристорами (це і є внутрішня структура симистора). Розгляньмо це докладніше.

Управління навантаженням 220 В за допомогою симистора та мікроконтролера

Внутрішня структура симистора зображена на зображенні нижче.

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

Я написав імпульс не так. На відміну від транзистора тиристор є напівпровідниковим ключем. Це означає, що з зняття керуючого сигналу струм через тиристор продовжить протікати, тобто. він залишиться відкритим. Щоб він закрився, потрібно перервати струм у ланцюгу або змінити полярність прикладеної напруги.

Це означає, що при утриманні позитивного імпульсу на електроді, що управляє, потрібно тиристор в ланцюзі змінного струму буде пропускати тільки позитивну напівхвилю. Симистор може пропускати струм обох напрямах, але т.к. він складається з двох тиристорів, підключених назустріч один одному.

Керуючі імпульси по полярності для кожного з внутрішніх тиристорів повинні відповідати полярності відповідної напівхвилі, тільки при виконанні такої умови через симістор протікатиме змінний струм. Насправді така схема реалізована у поширеному.

Як я вже сказав, мікроконтроллер видає сигнал тільки однієї полярності, для того щоб узгодити сигналу потрібно використовувати драйвер побудований на оптосимісторі.

Таким чином, сигнал включає внутрішній світлодіод оптопари, вона відкриває симистор, який подає керуючий сигнал на силовий симистор T1. Як оптодрайвер може бути використаний MOC3063 і подібні, наприклад, на фото нижче зображено MOC3041.

Zero crossing circuit – ланцюг детектора переходу фази через нуль. Потрібна для реалізації різноманітних симісторних регуляторів на мікроконтролері.

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

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

Реле та А рдуїно

Для управління реле з Ардуїно потрібно використовувати додатковий транзистор для посилення струму.

Зверніть увагу, використаний біполярний транзистор зворотної провідності (NPN-структура), це може бути вітчизняний КТ315 (усім улюблений та всім відомий). Діод потрібен для гасіння сплесків ЕРС самоіндукції в індуктивності, це потрібно, щоб транзистор не вийшов з ладу від високої напруги. Чому це виникає, пояснить закон комутації: "Струм в індуктивності не може змінитися миттєво".

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

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

Або купити готовий модуль або цілий шилд з реле для Ардуїно :

На фото зображено саморобний шилд, до речі, в ньому використані для посилення струму КТ315Г, а нижче ви бачите такий же шилд заводського виконання:

Висновок

Безпечне управління навантаженням змінного струму має на увазі насамперед вся описана вище інформація справедлива для будь-якого мікроконтролера, а не тільки плати Ардуїно.

Головне завдання - забезпечити потрібну напругу та струм для управління симистором або реле та гальванічна розв'язка ланцюгів управління та силового ланцюга змінного струму.

Крім безпеки для мікроконтролера, таким чином, ви підстрахуєте себе, щоб при обслуговуванні не отримати електротравму. При роботі з високою напругою потрібно дотримуватися всіх правил техніки безпеки, дотримуватися ПУЕ та ПТЕЕП.

Ці схеми можна використати і . Симистори і реле у разі виступають у ролі проміжного підсилювача і узгоджувача сигналів. На потужних приладах комутації великі струми управління котушкою і залежать безпосередньо від потужності контактора або пускача.

Олексій Бартош

Діммер на базі Arduino – це один із сотень простих та цікавих пристроїв, за допомогою якого можна плавно змінювати мережеву напругу від 0 до номінального значення. Кожен користувач Arduino знайде застосування такої корисної саморобки, а досвід, отриманий під час збирання своїми руками, поповнить багаж знань.

Схема та принцип її роботи

Як і більшість недорогих диммерів, дана схема працює за рахунок фазового регулювання напруги, що досягається шляхом примусового відкривання силового ключа – сімістора. Принцип дії схеми є наступним. Arduino на програмному рівні формує імпульси, частота яких підлаштовується опір потенціометра. Керуючий імпульс з виведення P1 проходить через оптопар MOC3021 і надходить на керуючий електрод симистора. Він відкривається і пропускає струм до переходу напівхвилі напруги через нуль, після чого закривається. Потім наступає наступний імпульс і цикл повторюється. Завдяки зрушенню управляючих імпульсів, у навантаженні формується обрізана по фронту частина синусоїди.

Щоб симистор відкривався відповідно до заданого алгоритму, частота проходження імпульсів повинна бути засинхронізована з напругою мережі 220 В. Іншими словами, Arduino повинен знати, в який момент синусоїда напруги проходить через нуль. Для цього в диммері на елементах R3, R4 і PC814 реалізований ланцюг зворотного зв'язку, сигнал з якого надходить на виведення P2 та аналізується мікроконтролером. У ланцюг детектора нуля доданий резистор R5 на 10 кОм, який потрібен для підживлення вихідного транзистора оптопари.

Один силовий висновок симістора підключається до фазного дроту, а до другого підключається навантаження. Нульовий провід мережі 220 безпосередньо йде від клемника J1 до J2, а потім до навантаження. Застосування оптопару необхідно для гальванічної розв'язки силової та низьковольтної частини схеми диммера. Потенціометр (на схемі не показаний) середнім висновком підключається на будь-який аналоговий вхід Arduino, а двома крайніми – на +5 і «загальний».

Друкована плата та деталі складання

Мінімум радіоелементів дозволяє сконструювати односторонню друковану плату, розмір якої не перевищує 20х35 мм. Як видно з малюнка на ній відсутній змінний резистор, щоб радіоаматор міг самостійно підібрати потенціометр відповідного форм-фактора та визначити місце його кріплення до корпусу готового диммера. Підключення до Arduino здійснюється через дроти, які запаюють у відповідні отвори на платі.

Для збирання своїми руками диммера, керованого Arduino, знадобляться наступні радіоелементи та деталі:

  1. Симистор BT136-600D, здатний витримувати зворотну напругу до 600 В та пропускати в навантаження струм до 4 А (природно з попереднім монтажем на радіатор). У схемі можна застосувати симистор і з більшою здатністю навантаження. Головне – забезпечити відведення тепла від його корпусу та правильно підібрати струм на керуючий електрод (довідковий параметр). При підключенні до навантаження електроприладу великої потужності ширину друкованих провідників у силовій частині схеми необхідно буде перерахувати. Як варіант, силові доріжки можна продублювати з іншого боку плати.
  2. Оптопара MOC3021 із симисторним виходом.
  3. Оптопара PC814 із транзисторним виходом.
  4. Резистори номіналом 1 кОм, 220 Ом, 10 кОм потужністю 0,25 Вт та 2 резистори на 51 кОм потужністю 0,5 Вт.
  5. Змінний резистор на 10 ком.
  6. Клемні колодки – 2 шт., з двома роз'ємами та кроком 5 мм.

Усі необхідні файли за проектом знаходяться у ZIP-архіві: dimmer-arduino.zip

Алгоритм керування Arduino

Програма керування симістором створена на базі таймера Timer1 та бібліотеки Cyber.Lib, завдяки чому відсутній вплив на роботу інших програмних кодів. Принцип її дії є наступним. При переході напруги через нуль «знизу вгору» таймер переналаштовується на зворотний перехід «зверху вниз» і починає відлік часу відповідно до значення змінної «Dimmer». У момент спрацьовування таймера Arduino формує імпульс, що управляє, і симистор відкривається. При наступному переході через нуль симистор перестає пропускати струм і чекає на чергове спрацьовування таймера. І так 50 разів на секунду. За регулювання затримки на відкривання симистора відповідає змінна Dimmer. Вона зчитує та обробляє сигнал з потенціометра і може набувати значення від 0 до 255.

Область застосування димеру на Arduino

Звичайно, використовувати дорогий Arduino для управління яскравістю галогенних ламп – надмірно. Для цього краще замінити звичайний вимикач диммером промислового виготовлення. Діммер на Arduino здатний вирішувати більш серйозні завдання:

  • керувати будь-якими видами активного навантаження (температурою нагріву паяльника, проточного водонагрівача тощо) з точним утриманням заданого параметра;
  • одночасно виконувати кілька функцій. Наприклад, забезпечувати плавне включення вранці (відключення увечері) світла, а також контролювати температуру та вологість тераріуму.

Побачити, яким чином змінюється напруга в навантаженні, можна за допомогою осцилографа. Для цього до вихідних клем диммера припаюють резистивний дільник, завдяки якому сигнал у контрольній точці повинен зменшитися приблизно в 20 разів. Після цього до дільника приєднують щупи осцилографа та подають харчування на схему. Змінюючи положення ручки потенціометра, на екрані осцилографа можна спостерігати наскільки плавно Arduino керує симистором і чи є високочастотні перешкоди.

Читайте також

Цим уроком я починаю серію статей присвячених імпульсним стабілізаторам, цифровим регуляторам, пристроїв керування вихідною потужністю.

Мета, яку я поставив, є розробка контролера для холодильника на елементі Пельтьє.

Робитимемо аналог моєї розробки, тільки реалізований на основі плати Ардуїно.

  • Ця розробка багатьох зацікавила, і мені посипалися листи з проханнями продати її на Ардуїно.
  • Розробка ідеально підходить для вивчення апаратної та програмної частини цифрових регуляторів. До того ж вона поєднує у собі безліч завдань, вивчених у попередніх уроках:
    • вимірювання аналогових сигналів;
    • робота із кнопками;
    • підключення систем індикації;
    • вимірювання температури;
    • робота з EEPROM;
    • зв'язок із комп'ютером;
    • паралельні процеси;
    • і багато іншого.

Розробку я вестиму послідовно, крок за кроком, пояснюючи свої дії. Що в результаті вийде – не знаю. Сподіваюся на повноцінний робочий проект контролера холодильника.

Я не маю готового проекту. Уроки я писатиму за поточним станом, тому під час випробувань може з'ясуватися, що на якомусь етапі я помилився. Виправлятиму. Це краще, ніж я налагоджу розробку та видам готові рішення.

Відмінність розробки від прототипу.

Єдина функціональна відмінність від прототипу розробки на PIC-контролері - це відсутність швидкого стабілізатора напруги, який компенсує пульсації напруги живлення.

Тобто. цей варіант пристрою повинен живитися від стабілізованого джерела живлення з низьким рівнем пульсації (не більше 5%). Цим вимогам відповідають усі сучасні імпульсні блоки живлення.

А варіант живлення від нестабілізованого блоку живлення (трансформатор, випрямляч, ємнісний фільтр) виключено. Швидкодія системи Ардуїно не дозволяє реалізувати швидкий регулятор напруги. Рекомендую прочитати вимоги до живлення елемента Пельтьє.

Розробка загальної структури устрою.

На цьому етапі треба у загальному вигляді зрозуміти:

  • із яких елементів складається система;
  • на якому контролері її виконати;
  • чи достатньо висновків та функціональних можливостей контролера.

Я представляю контролер "чорною скринькою" або "сміттєвою ямою" і підключаю до нього все що треба. Потім дивлюся, чи підходить для цієї мети, наприклад, плата Arduino UNO R3.

У моїй інтерпретації це так.

Я намалював прямокутник – контролер та всі сигнали, необхідні для підключення елементів системи.

Я вирішив, що потрібно підключити до плати:

  • LCD індикатор (для відображення результатів та режимів);
  • 3 кнопки (для керування);
  • світлодіод індикації помилки;
  • ключ керування вентилятором (для включення вентилятора радіатора гарячої сторони);
  • ключ імпульсного стабілізатора (для регулювання потужності елемента Пельтьє);
  • аналоговий вхід вимірювання струму навантаження;
  • аналоговий вхід виміру напруги навантаження;
  • датчик температури у камері (точний 1-wire датчик DS18B20);
  • датчик температури радіатора (ще не вирішив, який датчик, швидше за теж DS18B20);
  • сигнали зв'язку із комп'ютером.

Усього вийшло 18 сигналів. У плати Arduino UNO R3 чи Arduino NANO 20 висновків. Залишилося ще два висновки про запас. Може, захочеться ще одну кнопку підключити, або світлодіод, або датчик вологості, або вентилятор холодного боку… Нам потрібні 2 або 3 аналогові входи, у плати – 6. Тобто. все нас влаштовує.

Можна призначити номери висновків відразу, можна під час розробки. Я призначив одразу. Підключення відбувається через рознімання, завжди можна змінити. Майте на увазі, що призначення висновків є остаточним.

Імпульсні стабілізатори.

Для точної стабілізації температури та роботи елемента Пельтьє необхідно в оптимальному режимі регулювати потужність на ньому. Регулятори бувають аналогові (лінійні) та імпульсні (ключові).

Аналогові регулятори є послідовно підключені до джерела живлення регулюючий елемент і навантаження. З допомогою зміни опору регулюючого елемента відбувається регулювання напруги чи струму на навантаженні. Як регулюючий елемент, як правило, використовується біполярний транзистор.

Регулюючий елемент працює у лінійному режимі. На ньому виділяється "зайва" потужність. При великих струмах стабілізатори такого типу сильно гріються, мають невеликий ККД. Типовим лінійним стабілізатором напруги є мікросхема 7805.

Нам такий варіант не підходить. Робитимемо імпульсний (ключовий) стабілізатор.

Імпульсні стабілізатори бувають різні. Нам потрібен знижувальний імпульсний регулятор. Напруга на навантаженні в таких пристроях завжди нижче напруги живлення. Схема понижуючого імпульсного регулятора має такий вигляд.

І це діаграма роботи регулятора.

Транзистор VT працює у ключовому режимі, тобто. у нього може бути лише два стани: відкритий або закритий. Пристрій управління, у разі мікроконтролер, комутує транзистор з певною частотою і шпаруватістю.

  • Коли транзистор відкрито струм тече по ланцюгу: джерело живлення, транзисторний ключ VT, дросель L, навантаження.
  • При розімкнутому ключі енергія, накопичена в дроселі, надходить у навантаження. Струм тече по ланцюгу: дросель, діод VD, навантаження.

Таким чином, постійна напруга на виході регулятора залежить від співвідношення часу відкритого (tоткр) та закритого ключа (tзакр), тобто. від шпаруватості імпульсів управління. Змінюючи шпаруватість, мікроконтролер може змінювати напругу на навантаженні. Конденсатор C згладжує пульсацію вихідної напруги.

Головна перевага такого способу регулювання – високий ККД. Транзистор завжди знаходиться у відкритому чи закритому стані. Тому на ньому розсіюється невелика потужність - завжди або напруга на транзисторі близько до нуля, або струм дорівнює 0.

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

Тому я змінив схему. У ній навантаження відірвано від загального дроту, зате до загального дроту прив'язаний ключ. Таке рішення дозволяє керувати транзисторним ключем від сигналу мікроконтролера, використовуючи простий драйвер-підсилювач струму.

  • При замкнутому ключі струм надходить у навантаження ланцюга: джерело живлення, дросель L, ключ VT (шлях струму показаний червоним кольором).
  • При розімкнутому ключі енергія, накопичена в дроселі, повертається в навантаження через рекуперативний діод VD (шлях струму показаний синім кольором).

Практична реалізація ключового регулятора.

Нам необхідно реалізувати вузол імпульсного регулятора з такими функціями:

  • власне ключовий регулятор (ключ, дросель, рекуперативний діод, конденсатор, що згладжує);
  • ланцюг виміру напруги на навантаженні;
  • ланцюг вимірювання струму регулятора;
  • апаратний захист від перевищення струму

Я, практично без змін, взяв схему регулятора.

Схема імпульсного регулятора для роботи із платою Ардуїно.

Як силовий ключ я використав MOSFET транзистори IRF7313. У статті про збільшення потужності контролера елемента Пельтьє я докладно писав про ці транзистори, про можливу заміну та про вимоги до ключових транзисторів для цієї схеми. Ось посилання на технічну документацію.

На транзисторах VT1 та VT2 зібраний драйвер ключового MOSFET транзистора. Це просто підсилювач струму, за напругою він навіть послаблює сигнал приблизно до 4,3 В. Тому ключовий транзистор обов'язково має бути низькопороговим. Існують різні варіанти реалізації драйверів MOSFET транзисторів. У тому числі з використанням інтегральних драйверів. Цей варіант найпростіший і найдешевший.

Для вимірювання напруги на навантаженні використається дільник R1, R2. При таких значеннях опорів резисторів та джерелі опорної напруги 1,1 В діапазон вимірювання становить 0 … 17,2 В. Ланцюг дозволяє виміряти напругу на другому виведенні навантаження щодо загального проводу. Напруження на навантаженні ми обчислимо, знаючи напругу джерела живлення:

Uнавантаження = U харчування - Uвиміряне.

Зрозуміло, що точність виміру залежатиме від стабільності підтримки напруги джерела живлення. Але нам не потрібна висока точність виміру напруги, струму, потужності навантаження. Нам потрібно точно вимірювати та підтримувати лише температуру. Її ми і вимірюватимемо з високою точністю. А якщо система покаже, що на елементі Пельтьє встановлена ​​потужність 10 Вт, а насправді буде 10,5 Вт, це не позначиться на роботі пристрою. Це стосується решти всіх енергетичних параметрів.

Струм вимірюється за допомогою резистора-датчика струму R8. Компоненти R6 та C2 утворюють простий фільтр низьких частот.

На елементах R7 і VT3 зібрано найпростіший апаратний захист. Якщо струм у ланцюзі перевищить 12 А, то на резисторі R8 напруга досягне порога відкривання транзистора 0,6 В. Транзистор відкриється і замкне виведення RES (скидання) мікроконтролера на землю. Все має відключитися. На жаль, поріг спрацьовування такого захисту визначається напругою база-еммітер біполярного транзистора (0,6). Через це захист спрацьовує лише за значних струмів. Можна застосувати аналоговий компаратор, але це ускладнить схему.

Струм буде вимірюватися точніше зі збільшенням опору датчика струму R8. Але це призведе до виділення на ньому значної потужності. Навіть при опорі 0,05 Ом та струмі 5 А на резисторі R8 розсіюється 5*5*0,05 = 1,25 Вт. Зауважте, що резистор R8 має потужність 2 Вт.

Тепер, який струм ми вимірюємо. Ми вимірюємо струм споживання імпульсного стабілізатора від джерела живлення. Схема виміру цього параметра набагато простіше, ніж схема виміру струму навантаження. Навантаження у нас "відв'язане" від загального дроту. p align="justify"> Для роботи системи необхідно вимірювати електричну потужність на елементі Пельтьє. Ми обчислимо потужність споживану регулятором, помноживши напругу джерела живлення на струм, що споживається. Вважаємо, що наш регулятор має ККД 100% і вирішимо, що це і є потужність на елементі Пельтьє. Насправді ККД регулятора буде 90-95%, але ця похибка ніяк не позначиться на роботі системи.

Компоненти L2, L3, C5 – простий фільтр радіоперешкод. Можливо, у ньому немає потреби.

Розрахунок дроселя ключового стабілізатора.

Дросель має два параметри, важливі для нас:

  • індуктивність;
  • струм насичення.

Необхідна індуктивність дроселя визначається частотою ШІМ та допустимими пульсаціями струму дроселя. На цю тему є дуже багато інформації. Я наведу найпростіший розрахунок.

Ми подали на дросель напругу і струм через нього почав збільшуватися струм. Збільшуватись, а не з'явився, бо якийсь струм уже протікав через дросель у момент включення Iвкл).


Транзистор відчинився. До дроселя підключили напругу:

Uдросселя = U харчування – U навантаження.

Струм через дросель почав наростати за законом:

Iдросселя = Uдросселя * tвідкр / L

  • tвідкр - тривалість імпульсу відкритого ключа;
  • L – індуктивність.

Тобто. значення пульсації струму дроселя або на скільки збільшився струм за час відкритого ключа визначається виразом:

Iвикл - Iвкл = Uдросселя * tвідкр / L

Напруга може змінюватися. А воно визначає напругу на дроселі. Існують формули, що враховують це. Але в нашому випадку я прийняв би такі значення:

  • напруга живлення 12;
  • мінімальна напруга на елементі Пельтьє 5;
  • отже максимальна напруга на дроселі 12 - 5 = 7 ст.

Тривалість імпульсу відкритого ключа tвідкр визначається частотою періоду ШІМ. Чим вона вища, тим меншої індуктивності необхідний дросель. Максимальна частота ШІМ плати Ардуїно 62,5 кГц. Як отримати таку частоту я розповім у наступному уроці. Її і використовуватимемо.

Візьмемо найгірший варіант - ШІМ переключається рівно в середині періоду.

  • Тривалість періоду 1/62500 Гц = 0,000016 сек = 16 мкс;
  • Тривалість відкритого ключа = 8 мкс.

Пульсації струму таких схемах зазвичай задають до 20% від середнього струму. Не треба плутати з пульсаціями вихідної напруги. Їх згладжують конденсатори на виході схеми.

Якщо ми допускаємо струм 5 А, візьмемо пульсації струму 10 % або 0,5 А.

L = Uдросселя * tвідкр / Iпульсацій = 7 * 8 / 0,5 = 112 мкГн.

Струм насичення дроселя.

Все у світі має межу. І дросель теж. При якомусь струмі він перестає бути індуктивністю. Це і є струм насичення дроселя.

У разі максимальний струм дроселя визначається як середній струм плюс пульсації, тобто. 5,5 А. Але краще струм насичення вибирати із запасом. Якщо ми хочемо, щоб працював апаратний захист у цьому варіанті схеми, він повинен бути не менше 12 А.

Струм насичення визначається повітряним зазором у магнітопроводі дроселя. У статтях про контролерів елемента Пельтьє я розповідав про конструкцію дроселя. Якщо я почну розгортати цю тему докладно, то ми підемо від Ардуїно, від програмування і не знаю, коли повернемося.

У мене дросель виглядає так.


Звичайно, провід обмотки дроселя має бути достатнього перерізу. Розрахунок простий – визначення теплових втрат з допомогою активного опору обмотки.

Активний опір обмотки:

Rа = ρ*l/S,

  • Rа – активний опір обмотки;
  • Ρ – питомий опір матеріалу, для міді 0,0175 Ом мм2/м;
  • l – довжина обмотки;
  • S – перетин дроту обмотки.

Теплові втрати на активному опорі дроселя:

Ключовий регулятор споживає від джерела живлення пристойний струм і не можна допускати, щоб струм проходив через плату Ардуіно. На схемі показано, що дроти від блока живлення підключені безпосередньо до блокувальних конденсаторів C6 та C7.

Основні імпульсні струми схеми проходять за контуром C6, навантаження, L1, D2, R8. Цей ланцюг має замикатися зв'язками з мінімальною довжиною.

Загальний провід та шина живлення плати Ардуїно підключаються до блокувального конденсатора C6.

Проводи сигналів між платою Ардуіно та модулем ключового стабілізатора повинні бути мінімальної довжини. Конденсатори C1 і C2 краще розташувати на роз'єм підключення до плати.

Я зібрав схему на платі. Запаяв лише потрібні компоненти. Виглядає зібрана схема у мене так.

Я поставив ШІМ 50% та перевірив роботу схеми.

  • При живленні від комп'ютера платня формувала заданий ШІМ.
  • При автономному живленні від зовнішнього блоку живлення все чудово працювало. На дроселі формувалися імпульси з добрими фронтами, на виході була постійна напруга.
  • Коли я ввімкнув одночасно живлення і від комп'ютера, і від зовнішнього блоку живлення, у мене згоріла плата Ардуїно.

Моя дурна помилка. Розповім, щоб її ніхто не повторив. Взагалі, підключаючи зовнішній блок живлення, треба бути акуратним, продзвонити всі зв'язки.

У мене сталося таке. На схемі був діода VD2. Я додав його після цієї неприємності. Я вважав, що плату можна живити від зовнішнього джерела через висновок Vin. Сам написав в уроці 2, що плата може отримувати живлення від зовнішнього джерела через роз'єм (сигнал RWRIN). Але я думав, що це той самий сигнал, тільки на різних роз'ємах.

Я під'єднав блок живлення (не включив у мережу) і шнур плати Ардуїно в USB-роз'єм комп'ютера. На вихід стабілізатора плати U1 NCP1117 з роз'єму USB надійшла напруга +5 В. А вхід виявився замкненим через досить низький опір вимкненого блоку живлення. Схема є в

Розглянемо одне цікаве та корисне питання. Діммер для регулювання навантаження змінного струму за допомогою arduino. Тобто, це плавний контроль таких мережевих приладів, як лампи, нагрівачі у вигляді тенів або теплих підлог.
Кілька тижнів тому на другому каналі, який повністю присвячений програмуванню arduino, вийшов видос для управління навантаженням постійного струму за допомогою шим-сигналу. Те, що дивіться зараз, теж мало вийти на тому каналі. Але вирішив опублікувати його.

Радіодеталі, компоненти та прилади у цьому китайському магазині.

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

Пристрій, який робитимемо, називається диммер. У нього входять звичайні синусоїди з розетки та виходять обрізані. Діммер не пропускає частину синусоїди. І чим більша ця частина, тим менша середня напруга. Змінюючи проміжки, коли напруга дорівнює нулю, регулюватимемо сумарну вихідну напругу. Відкриває та закриває напругу така залізяка, як симистор. Вони є в різних корпусах та на різний струм. Наприклад, великий хлопчина може пропустити через себе 40 ампер при напрузі 800 вольт. Що близько 30 квт.

Щоб керувати симистором у потрібні моменти часу, знадобиться пакет розсипухи. Кілька резисторів та дві оптопари. Все це можна за копійки купити у будь-якому магазині радіодеталей або на радіоринку. Для зручності підключення можна взяти клеми. А збирати усю схему можна на макетній платі. Схема підключення виглядає наступним чином.

Симистор розриває мережу 220в, arduino його відкриватиме і закриватиме через оптопару. Тобто сама arduino буде оптично розв'язана мережевою напругою з метою нашої безпеки. І важливий момент. Щоб вчасно відкривати симістор, arduino повинна знати, коли напруга мережі проходить через 0. Для цього стоїть друга оптопара, що підключена в протилежний бік. І на виході з неї отримуємо сигнал щоразу, коли напруга в мережі проходить через 0. І керуємо симистором через верхню оптопару. Алгоритм роботи трохи згодом.

Зберемо схему у залозі

В ідеалі такі речі потрібно робити на друкованій сукні. Про каналі незабаром окремий цикл відео уроків. Покажемо, як розводити плати та як травити. Ну а поки що не вміємо робити друковані плати, є ще два шляхи. Перше, це зібрати схему на макетній платі. Чим займемося за хвилину. І друге – замовити виготовлення плат у китайців. Зробив кілька варіантів плат на платформі Easyeda. Перша – на маленькому семисторі, друга – на великому семисторі. І третя, це триканальний димер. У якого є один спільний вхід та один загальний вихід детектора нуля. Три виходи під навантаження та 3 pin під керування трьома симисторами arduino. Схему легко масштабувати і зробити димер на будь-яку кількість каналів.

Щоб замовити плати, потрібно витягнути з проекту gerber-файли. Натискаємо кнопку і потрапляємо на сторінку замовлення плат у сервісу easyeda. І натискаємо кнопку скачати gerber-файли. Вони скачаються одним архівом. Ідемо на сайт сервісу lg psb. Це один з найдешевших і найбільших сервісів виготовлення друкованих плат у промислових масштабах з доставкою. Спочатку залогінимся про всяк випадок. Переходимо в кошик та додаємо нове замовлення. І додаємо gerber-файл, тобто, той самий архів. Плата одношарова. Вибираємо один шар. Розміри, як бачите, поставилися автоматично. Кількість - можна замовити 5 штук. Товщина текстоліту, колір. Нехай червоний. Це колір маски, якою покрита плата. Вибирається припій, яким буде вкрито доріжки. Це олов'яно-свинцевий, безсвинцевий та ще, який не знаємо. Далі товщина мідної фольги не є текстолітом. Ну ціна чомусь змінюється вдвічі. Ідуть золоті пальчики. Це гребінець вставляти плату в роз'єм. Потім можна отримати плату у такому вигляді. І ще можна обрізати останні контакти. Але нічого з цього не потрібне. Все зберігаємо корзину. Як можете бачити, вартість за 5 плат становить 2 долари. Тобто, це приблизно 25 рублів за одну плату. Плати промислової якості дістануться практично задарма.

Єдине, що доставка. Потрібно вказати свою адресу. Для зручності зазвичай користуємося сервісом трансліт, який переводить російські літери у трансліт. Та й сама доставка. 30 доларів за кур'єрську, і стандартна – 250 рублів за відправку поштою. Dhl, з фізичними особами не працюють. Якщо немає знайомих фірми, то краще не зв'язуватися та почекати пару тижнів поштою. Сплатити цю справу можна за paypal або банківською карткою. Загалом, друковані плати замовив і поки вони їдуть, зберемо схему на макетці.

Цей проект складання регулятора змінного струму відноситься до тих, які можна зібрати на макетній платі, дивлячись на розведення друкованої плати. Тобто вставляємо компоненти в макетку так само, як на печатці. І з'єднуємо всі ногами самих компонентів. Ось, наприклад, симистор дотягується до обох клемників і оптопари. Беремо і запаюємо. А ще можна використовувати лайфхак із відео про зварювальник для акумуляторів. Тобто роздрукувати розведення плати, приклеїти її на макетку та паяти, орієнтуючись на доріжки. І через 10 хвилин роботи пінцетом та паяльником виходить плата. Компактна.
Для з'єднання використано багато компонентів. Єдине, треба було поєднати загальний вихід шматком мідного дроту. Важливий момент. Паяємо з гліцериновим флюсом, і його сліди можна побачити. Він блищить. Діммер працювати з напругою 220в і пробивати через флюс, і працювати не стабільно. Або взагалі згорить. Тому беремо зубну щітку та йдемо чистити. Ну а зайве відрізаємо ножицями по металі, а рівняємо край. І все, готовий димер. Здорово та компактно.
На обрізці макетки зібрав варіант з великим хлопцем. Йде пряме підключення до симістора за допомогою колодок. Ліва – це вихід, середня – вхід, а права – загальна для входу та виходу. До неї за схемою лише один резистор. Сам симистор приклеєний на двосторонній скотч. В ідеалі колодки треба було пригвинтити. Та й так зійде. Усе. Припаяно просто ногами резисторів. Ця плата потрібна в одному з таких проектів. Спробуйте вгадати у коментарях, що це може бути.
Зараз нарешті подивимося на алгоритм, яким працює управління симистором. Так ось, керувати симистором будемо з arduino. Прошивки пишуться у спеціальній програмі. Є два важливі моменти. Перший – отримання сигналу з виходу детектора нуля, який повідомляє, що синусоїда напруги перетинає напругу 0 вольт. Вихід детектора нуля підключений до оброблювача апаратних переривань. Це другий pin arduino. І pin підтягнутий до землі резистором на 10 кілом. Внутрішня підтяжка не справляється. Не знаємо, чому. На відміну від усіх прошивок в інтернеті алгоритм не використовує затримки. Тобто керування симістором не заважає виконанню решти коду програми. Реалізовано це за допомогою таймера таймер-1. Оскільки використання звичайних лічильників призведе до деяких мерехтіння через кожні кілька хвилин.
Для зручної роботи з таймером використовуємо спритну бібліотеку сайберліп. Загалом, суть така, як виявляється перехід через нуль знизу, це точка, таймер запускає на час димування, і переривання переналаштовується на перехід напруги через нуль зверху вниз. І час пішов. Після спрацьовування таймера, Сімістор відкриває струм на споживач. Як тільки переривання переміщується через нуль зверху вниз, воно зупиняє таймер і знову переналаштовується. А також вимикає струм через симистор. І так повторюється 50 разів на секунду.

Для регулювання часу, через який відкриється симистор після перетину через нуль, використаний потенціометр. Змінні диммери повинні приймати значення від 0 до 255. Це повна і мінімальна яскравість. І все. Нагадаю, що всі схеми та скетч можна завантажити на сторінці проекту. Посилання в описі під відео.

Діммер можна використовувати не лише для керування яскравістю. Набагато більший інтерес представляє система управління нагрівальним елементом із зворотним зв'язком. Для точного підтримання заданої температури.
Також диммер можна використовувати в системах, таких як розумний будинок, і контроль цього диммера через інтернет. Для цього потрібно вміти писати програми під windows, android чи під веб.

Приїхали китайські друковані плати. Повторимося, якщо ви фізична особа, то краще замовляти поштою. Через dhl довелося прикриватися знайомою фірмою та переоформлювати документи на митниці. Загалом такі симпатичні печатки. Якщо врахувати, що вони обійшлися по 25 руб. штука, сподіваємося, китайцям це хоч трохи вигідно. Інакше прикро.

Розпаяли один диммер і підключаємо його до arduino, як раніше. Рухаємо потенціометром, напруження лампочки змінюється від максимального до ледве тліючого. Насправді цікаве видовище.

Напевно, все відео хотілося подивитися на реальну форму хвилі на виході з димера. Чи відповідає вона картинкам, що їх показував. Скористаємося дешевим китайським осцилографом, який вміє вимірювати напругу до 12 вольт. Стоп. Так робити не можна. Щоб виміряти напругу, потрібно скористатися штукою, як дільник напруги. Підійде співвідношення 1 до 20. Щоб резистори не грілися, взяв номінали двісті та десять кілоом. Акуратно все підключаємо і тільки потім включаємо в мережу. Це є небезпечним для життя. І бачимо ту саму красу, як на картинках. Видно, як напруга в періодах синусоїди з'являється, сягає нуля і пропадає. Щоб знову увімкнеться по таймеру наступного напівперіуду. Чудове видовище!

IPad