Блок живлення постійного струму на основі мікроконтролера

ArticleCategory: [Виберіть категорію, не перекладайте це]

AuthorImage: [Тут нам потрібно від вас трохи зображення]

живлення

TranslationInfo: [Автор + історія перекладів. mailto: або http: // homepage]

AboutTheAuthor: [Невелика біографія про автора]

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

Анотація: [Тут ви пишете невеликий зміст]

Ця стаття є четвертою у серії мікроконтролерів Linux Focus AT90S4433. Пропоную вам прочитати попередні статті про програмування мікроконтролерів Atmel щодо:

  1. Як встановити та використовувати середовище розробки Linux AVR та як створити апаратне забезпечення програміста:
    Березень 2002 р. Програмування мікроконтролера AVR за допомогою GCC
  2. Як зробити власну друковану плату:
    Травень 2002 р., РК-панель управління для вашого сервера Linux
  3. Як побудувати корпус/коробку для вашого джерела живлення:
    Вересень 2002 року, лічильник частот 1 Гц-100 МГц з РК-дисплеєм та інтерфейсом RS232
Одним з найважливіших пристроїв для вашої майстерні вдома є хороший та надійний джерело живлення постійного струму. У цій статті ми побудуємо такий блок живлення. Він буде керований мікроконтролером. Він має РК-дисплей, і ви можете надсилати йому команди зі свого комп’ютера Linux через інтерфейс RS232. Він має дуже міцний дизайн.

У цій статті також показано, наскільки універсальними є мікроконтролери. Однак це не найпростіша схема.
Якщо ви просто шукаєте просте джерело постійного струму, тоді погляньте на "просте живлення постійного струму". Простий постійний струм хороший, якщо вам потрібен лише невеликий блок живлення для інших електронних експериментів у Linux Focus. Однак це не має нічого спільного з Linux та програмним забезпеченням загалом.
Навіть якщо ви нарешті створили лише блок "простого живлення постійного струму", ви можете прочитати і дізнатися багато цікавих аспектів мікроконтролерів.

Ілюстрація статті: [Це заголовок вашої статті]

ArticleBody: [Тіло статті]

Вступ

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

Для цієї статті вам потрібно багато деталей, але це лише дешеві стандартні деталі. Це джерело живлення не є дорогим.

Що тобі потрібно

Схема та дошка

Я використовував Eagle для Linux для розробки схеми та дошки. Файли Eagle також входять до пакету tar.gz разом із програмним забезпеченням. Ви можете завантажити його в кінці статті.

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

Основна схема (натисніть на неї, щоб отримати більший малюнок):

Схема для частини з великою потужністю (натисніть на неї, щоб отримати більший малюнок):

Як підключити кнопки в матриці (натисніть на неї, щоб отримати більший малюнок):

Основна дошка, вид зверху (натисніть на неї, щоб отримати більший малюнок):


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

Кілька деталей у потужній частині блоку живлення можуть бути встановлені на стандартних прототипованих платах (тих платах, що мають багато отворів). Основна плата та силова частина з'єднані за допомогою проводів (JP2 та JP3). Ви помітите, що заземлюючий провід від основної частини з'єднується плюс вихід постійного струму. Це правильно, і саме тому нам потрібні два окремі трансформатори (один для силової частини, а другий для логічної частини з мікроконтролером та операційними підсилювачами).

Як це працює

Переглядаючи основну схему, можна побачити, що вона складається з 2 логічних частин. Один позначений на схемі як "контроль струму", а інший "контроль напруги". Це 2 незалежні петлі управління. Один контур контролює вихідну напругу, а інший - падіння напруги на резисторі 0,275 Ом в силовій частині. Падіння напруги еквівалентно струму. Дві частини управління "поєднуються" через діоди D2 і D3. Ці діоди формують і аналогові електричні АБО. Тобто, якщо струм занадто високий, тоді частина контролю струму знижує напругу, поки вона не перевищує межу, інакше (струм не надто високий) частина регулювання напруги відповідає за регулювання вихідної напруги.

Це логічне АБО працює, оскільки транзистор T3 підключений через R19 до + 5В. Якщо там немає операційних підсилювачів, підключених за D2 і D3, тоді ви отримаєте максимальну вихідну потужність. Операційні підсилювачі в контурах управління контролюють вихід, віднімаючи + 5 В від Т3 (тягніть його стільки, скільки потрібно на землю).

Шлейф управління напругою контролює вихідну напругу відповідно до рівня напруги, який він отримує на виводі 5 IC6B. Іншими словами, напруга на виводі 5 еквівалентна вихідній напрузі, помноженій на коефіцієнт посилення, який визначається резисторами R15, R10 і R16. Те саме стосується струму, за винятком того, що це напруга на резисторі R30, що еквівалентно макс. вихідний струм.

Для того, щоб встановити максимальний струм або регулювати потужність джерела живлення, нам просто потрібно подати відповідні напруги на дві точки (контакт 5 IC6B і резистор R30). Цим займається мікроконтролер. але як мікроконтролер може генерувати та регулювати еталонну напругу постійного струму? Погляньте на наступний малюнок:

На цьому малюнку ви бачите, як імпульсний сигнал може трансформуватися в сигнал постійного струму. Все, що вам потрібно зробити, це пропустити його через фільтр низьких частот з частотою відсічення в сто (або більше) разів нижчою за частоту сигналу. Оскільки наш мікроконтролер працює на частоті 4 МГц, не так складно розробити такий фільтр низьких частот. Навіть якщо ми реалізуємо генерацію сигналу за допомогою програмного забезпечення, ми все одно отримаємо кілька кГц, а фільтр все одно буде дуже малим.

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

Класно, правда? Ми можемо генерувати точну постійну напругу з цифрового сигналу!

Мікроконтролер AT90S4433 має два внутрішні лічильники. Один - 16-бітний, а другий - 8-бітний. 16-бітний лічильник має можливість використовувати широтно-імпульсну модуляцію (ШІМ), яка вже реалізована в апаратному забезпеченні мікросхеми AT90S4433 з роздільною здатністю 10 біт. У 8-бітного лічильника цього немає, але ми можемо реалізувати це в програмному забезпеченні. Це все ще досить швидко. Ми використовуємо 16-бітний лічильник для регулювання напруги, це дає нам 10-бітний = 1023 кроки роздільної здатності для контролю напруги. Вихідний струм управляється за допомогою 8-бітного лічильника, і це дає нам 255 кроків для управління 1-3000 мА. Це означає, що ми маємо точність приблизно 12 мА (або менше). Цього ще достатньо для поточного контролю.

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

Програмне забезпечення

Програмне забезпечення для мікроконтролера використовує багато аспектів, які ви вже знаєте з попередніх статей (uart для rs232, рідкокристалічний дисплей, лічильники в режимі переривання). Ви можете поглянути на нього тут:
linuxdcp.c.

Цікавим є, можливо, програмне забезпечення ШІМ (модуляція ширини імпульсу). Змінна ipwm_phase реалізує разом з ipwm_h ШІМ для поточного. Ми просто запускаємо 8-бітний лічильник у режимі переривання, і кожного разу, коли він генерує переповнення, викликається функція "SIGNAL (SIG_OVERFLOW0)". Тут ми перевіряємо ipwm_phase, щоб перевірити, чи слід нам генерувати 1 або 0 на виході, а потім перезапускаємо таймер. Легко.

Програмне забезпечення зовсім не складне, але щоб його точно зрозуміти, вам потрібно прочитати технічний паспорт 4433 (див. Посилання).

4433 - це 8-бітний мікроконтролер, і його математичні можливості обмежені. Функції divXbyY та multiXbyY реалізують 24-бітну математику, яка нам потрібна для точного розрахунку ширини імпульсу з заданого набору напруги для користувача.

Наш блок живлення має 7 кнопок. Доступно 6 кнопок для зміни рівня струму та напруги, а одна кнопка знаходиться в режимі очікування. За допомогою кнопки очікування ви можете тимчасово вимкнути живлення і все одно змінити межі напруги та струму. Стан кнопок "витягується" в основному циклі програми. Змінна ignorebutton використовується для відмови від кнопок. Коли ви натискаєте кнопку пальцем, вона трохи підскакує вгору-вниз. Як людина, ви цього не помітите, але мікроконтролер настільки швидкий, що бачить увімкнення, вимкнення, увімкнення, вимкнення. Лічильник кнопок ignore трохи зачекає після натискання кнопки, щоб уникнути цього підстрибування.

Виготовлення друкованої плати

Основна дошка:
Корпус для блоку живлення. Дерево з боків, листовий метал для нижньої, верхньої та передньої частин:
Передня панель:
Програмний пакет містить файл постскриптуму (linuxDCpower.ps) для друкованої плати. Особисто я вважаю, що подушечки завжди занадто малі. Тому я настійно рекомендую трохи збільшити їх маркером для фарби перед тим, як травити дошку. Процес виготовлення дошки вдома описаний у: травень 2002 р., РК-панель управління для вашого сервера Linux.
Про те, як створити дешевий, але гарний корпус для вашого джерела живлення, описано в статті "Вересень 2002 р., Лічильник частот 1 Гц-100 МГц з РК-дисплеєм та інтерфейсом RS232" Справа ви можете побачити корпус і передню панель, яку я зробив. Клацніть на зображення для збільшення.

Тестування

Ось воно: Наше власне джерело живлення

Ви вже бачили, що доступні 3 варіанти, залежно від того, який трансформатор ви використовуєте. Програмне забезпечення за замовчуванням призначене для виходу 16 В, 2,2 А. Щоб змінити це, відредагуйте файл linuxdcp.c та знайдіть:
MAX_U, IMINSTEP, MAX_I, а у функції set_i вам потрібно змінити калібрування, якщо у вас є максимальна вихідна потужність 3А. Код добре прокоментовано, і ви побачите, що вам потрібно змінити.

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

Використання джерела живлення

u = X встановити напругу (наприклад, u = 105 встановити напругу 10,5 В)
i = Xmax встановлює максимальний струм (наприклад, i = 500 встановлює межу струму 500 мА)
s = 1 або s = 0 встановлено в режим очікування
u =? або i =? або s =? роздрукувати поточні налаштування. Це дасть роздруківку, яка виглядає приблизно так:
u: 50 с: 0 i: 100 л: 0
u: означає напругу = 50 = 5 В, s: 0 означає вимкнений режим очікування, i: 100 - 100 мА, а l: 0 означає, що межа струму не досягнуто.

Використовуючи цю командну мову acsii, ви також можете написати графічний інтерфейс для джерела живлення. Для використання рядка rs232 вам потрібно спочатку ініціалізувати його командою ttydevinit. ttydevinit включений у пакет програмного забезпечення. Це також описано у статті, присвяченій лічильнику частот за вересень 2002 року.