- Необхідні матеріали
- Електрична схема навантаження Arduino DC
- Дизайн друкованої плати та файл Gerber
- Замовлення друкованої плати у AllPCB
- Код Arduino для регульованого навантаження постійного струму
- Тестування нашого регульованого навантаження постійного струму
Якщо ви коли-небудь працювали з акумуляторами, схемами SMPS чи іншими схемами живлення, то часто траплялося б, що вам доведеться перевірити джерело живлення, завантаживши його, щоб перевірити, як воно працює в різних умовах навантаження. Пристрій, який зазвичай використовується для проведення цього типу випробувань, називається постійним струмом навантаження постійного струму, що дозволяє нам регулювати вихідний струм вашого джерела живлення, а потім підтримує його постійним, доки його не відрегулюють знову. У цьому підручнику ми дізнаємося, як створити власне регульоване електронне навантаження за допомогою Arduino, яке може приймати максимальну вхідну напругу 24 В і відводити струм до 5 А. Для цього проекту ми використали плати друкованих плат, які виробляє AllPCB, професійний постачальник послуг із виготовлення та монтажу друкованих плат у Китаї.
У нашому попередньому навчальному посібнику з джерелом струму з керованою напругою ми пояснили, як використовувати операційний підсилювач з MOSFET та використовувати схему джерела струму з керованою напругою. Але в цьому підручнику ми застосуємо цю схему та створимо цифрове джерело струму. Очевидно, що для джерела струму з цифровим управлінням потрібна цифрова схема, і для досягнення цілі використовується Arduino NANO. Arduino NANO забезпечить необхідні засоби керування навантаженням постійного струму.
Схема складається з трьох частин. Перша частина - це розділ Arduino Nano, друга частина - цифро-аналоговий перетворювач, а третя частина - це чисто аналогова схема, де використовується подвійний операційний підсилювач в одному корпусі, який буде керувати секцією навантаження. Цей проект натхненний публікацією про Arduino, однак, схема змінена для меншої складності з основними функціями для всіх, щоб її побудувати.
Наш електронний навантажувач розроблений, щоб мати наступні вхідні та вихідні секції.
- Два вхідних перемикача для збільшення та зменшення навантаження.
- РК-дисплей, який відображатиме встановлене навантаження, фактичне навантаження та напругу навантаження.
- Максимальний струм навантаження обмежений 5А.
- Максимальна вхідна напруга становить 24 В для навантаження.
Необхідні матеріали
Компоненти, необхідні для побудови електронного навантаження постійного струму, перелічені нижче.
- Arduino nano
- РК-дисплей 16x2 символів
- Двоствольна розетка
- Mosfet irf540n
- Mcp4921
- Lm358
- Шунтуючий резистор 5 Вт.1 Ом
- 1к
- 10к - 6шт
- Радіатор
- .1uF 50v
- 2к - 2шт
Електрична схема навантаження Arduino DC
У наведеній нижче схемі операційний підсилювач має дві секції. Один - керувати MOSFET-транзистором, а другий - посилювати відчутий струм. Ви також можете переглянути відео внизу цієї сторінки, яке пояснює повну роботу схеми. Перший розділ містить R12, R13 і MOSFET. R12 використовується для зменшення ефекту навантаження на секцію зворотного зв'язку, а R13 використовується як резистор затвора Мосфета.
Додаткові два резистори R8 і R9 використовуються для вимірювання напруги живлення джерела живлення, яке буде напружено цим фіктивним навантаженням. Відповідно до правила дільника напруги, ці два резистори підтримують максимум 24 В. Більше 24 В вироблятиме напругу, яка не підходить для штифтів Arduino. Тому будьте обережні, щоб не підключати джерело живлення, яке має вихідну напругу більше 24 В.
Резистор R7 тут є фактичним резистором навантаження. Це резистор на 5 Вт,.1 Ом. Відповідно до закону про потужність, він підтримуватиме максимум 7А (P = I 2 R), але для безпечної сторони розумніше обмежити струм навантаження максимум 5А. Отже, на даний момент максимальним навантаженням 24 В, 5 А може бути встановлено це фіктивне навантаження.
Інший розділ підсилювача налаштований як підсилювач посилення. Це забезпечить 6-кратний виграш. Під час протікання струму з'явиться падіння напруги. Наприклад, коли через резистор протікає струм 5А, падіння напруги складе 0,5 В на шумовому резисторі.1 Ом (V = I x R) відповідно до закону Ом. Неінвертуючий підсилювач посилить його до x6, тому 3В буде вихідним сигналом з другої частини підсилювача. Цей вихід буде сприйматися аналоговим вхідним штифтом Arduino і обчислюватиметься сила струму.
Перша частина підсилювача виконана у вигляді схеми послідовника напруги, яка буде керувати MOSFET відповідно до вхідної напруги та отримувати бажану напругу зворотного зв'язку за рахунок струму навантаження, що протікає через маневровий резистор.
MCP4921 - це цифрово- аналоговий перетворювач. ЦАП використовує протокол зв'язку SPI для отримання цифрових даних з будь-якого блоку мікроконтролера та забезпечення аналогового виходу напруги в залежності від нього. Ця напруга є входом операційного підсилювача. Раніше ми також дізналися, як використовувати цей ЦАП MCP4921 з PIC.
З іншого боку, є Arduino Nano, який буде передавати цифрові дані на ЦАП через протокол SPI і контролювати навантаження, також відображаючи дані на дисплеї символів 16x2. Використовуються дві додаткові речі, це кнопка зменшення та збільшення. Замість підключення до цифрового штифта він підключається до аналогових штифтів. Тому можна змінити його на інший тип комутаторів, таких як повзунок або аналоговий кодер. Також, модифікуючи код, можна надати необроблені аналогові дані для контролю навантаження. Це також дозволяє уникнути проблеми відключення перемикача.
Нарешті, збільшуючи навантаження, Arduino nano надаватиме дані навантаження ЦАП у цифровому форматі, ЦАП надаватиме аналогові дані операційному підсилювачу, а операційний підсилювач управлятиме MOSFET відповідно до вхідної напруги операційного підсилювача. Нарешті, залежно від потоку струму навантаження через шунтуючий резистор, з'явиться падіння напруги, яке в подальшому буде посилюватися другим каналом LM358 і отримуватиметься від Arduino nano. Це буде показано на дисплеї символів. Те ж саме відбудеться, коли користувач натисне кнопку зменшення.
Дизайн друкованої плати та файл Gerber
Оскільки ця схема має сильний струм, є розумним вибір використовувати правильну тактику проектування друкованих плат для усунення небажаних випадків відмов. Таким чином, друкована плата призначена для цього навантаження постійного струму. Я використовував Eagle PCB Design Software для проектування моєї друкованої плати. Ви можете вибрати будь-яке програмне забезпечення Cad для друкованих плат. Остаточна розроблена друкована плата в програмному забезпеченні САПР показана на зображенні нижче,
Одним з важливих факторів, на який слід звернути увагу під час проектування цієї друкованої плати, є використання товстої площини потужності для належного протікання струму по всій схемі. Існує також VIAS для наземного зшивання (випадкові вставки в площині землі), які використовуються для належного потоку ґрунту в обох шарах до верху і донизу.
Ви також можете завантажити файл Gerber цієї друкованої плати за посиланням нижче і використовувати його для виготовлення.
- Завантажте регульований електронний файл навантаження постійного струму Gerber
Замовлення друкованої плати у AllPCB
Після того, як ви будете готові до свого файлу Gerber, ви зможете використовувати його для виготовлення друкованої плати. Говорячи про це, виховується спонсор цієї статті ALLPCB, який відомий своїми високоякісними друкованими платами та надшвидкою доставкою. Окрім виробництва друкованих плат, AllPCB також пропонуєАсамблея друкованих плат та джерело компонентів.
Щоб отримати замовлення друкованих плат у них, відвідайте allpcb.com та реєстрація. Потім на домашній сторінці введіть розміри друкованої плати та необхідну кількість, як показано нижче. Потім натисніть на Quote now.
Тепер ви можете змінити інші параметри друкованої плати, наприклад кількість шарів, колір маски, товщину тощо. Праворуч ви можете вибрати свою країну та бажаний варіант доставки. Це покаже вам час виконання та загальну суму до сплати. Я вибрав DHL, і моя загальна сума складає 26 доларів, але якщо ви вперше замовник, ціни будуть знижуватися при оформленні замовлення. Потім натисніть Додати в кошик, а потім натисніть "Оформити зараз".
Тепер ви можете натиснути на завантаження свого файлу Gerber, натиснувши кнопку «Завантажити Gerber», а потім натиснути кнопку «Купити».
На наступній сторінці ви можете ввести свою адресу доставки та перевірити остаточну ціну, яку потрібно заплатити за друковану плату. Потім ви можете переглянути замовлення, а потім натиснути кнопку "Надіслати", щоб здійснити платіж.
Як тільки ваше замовлення буде підтверджено, ви зможете розслабитися та передати друковану плату до вашого порогу. Я отримав замовлення через кілька днів, а потім упаковка була акуратною, як показано нижче.
Якість друкованої плати була як завжди гарна, як ви можете переконатись самі на малюнках нижче. Верхня та нижня сторони дошки показані нижче.
Отримавши дошку, ви можете продовжувати збирати всі компоненти. Моя готова дошка виглядає приблизно так, як показано нижче.
Далі ви можете завантажити код і включити модуль, щоб перевірити, як він працює. Повний код цього проекту наведено внизу цієї сторінки. Пояснення коду таке.
Код Arduino для регульованого навантаження постійного струму
Код досить простий. Спочатку ми включили файли заголовків SPI та LCD, а також встановили максимальну логічну напругу, штифти для вибору мікросхеми тощо.
#включати
Цей розділ складається з необхідних програмних оголошень цілих чи змінних. Крім того, ми встановлюємо асоційовані висновки периферії з Arduino Nano.
const int slaveSelectPin = 10; // Чип для вибору шпильки int номер = 0; збільшення int = A2; // Збільшення pin int зменшення = A3; // зменшення виводу int current_sense = A0; // висновок поточного сенсору int voltage_sense = A1; // контакт напруги датчика напруги int state1 = 0; int стан2 = 0; int Set = 0; поплавковий вольт = 0; float load_current = 0,0; поплавкове навантаження_напруга = 0,0; плаваючий струм = 0,0; поплавкова напруга = 0,0; Рідкий кристал рідкий (7, 6, 5, 4, 3, 2); // РК-шпильки
Це використовується для налаштування РК-дисплея та SPI. Також тут встановлені напрямки штифтів.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (збільшення, ВХІД); pinMode (зменшення, ВХІД); pinMode (current_sense, INPUT); pinMode (напруга_сенс, ВХІД); // ініціалізуємо SPI: SPI.begin (); // налаштовуємо кількість стовпців і рядків на РК: lcd.begin (16, 2); // Роздрукувати повідомлення на РК-дисплеї. lcd.print ("Цифрове завантаження"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); затримка (2000); }
Він використовується для перетворення значення ЦАП.
void convert_DAC (непідписане значення int) { / * Розмір кроку = 2 ^ n, отже, 12 біт 2 ^ 12 = 4096 Для посилання 5В кроком буде 5/4095 = 0,0012210012210012V або 1 мВ (приблизно) * / контейнер без підпису int; без підпису int MSB; unsigned int LSB; / * Крок: 1, зберігається 12-бітові дані в контейнері Припустимо, дані складають 4095, у двійковому вигляді 1111 1111 1111 * / container = value; / * Крок: 2 Створення фіктивного 8-бітного. Отже, поділивши 256, верхні 4 біти фіксуються в LSB LSB = 0000 1111 * / LSB = контейнер / 256; / * Крок: 3 Надсилання конфігурації з пробиванням 4-бітових даних. LSB = 0011 0000 АБО 0000 1111. Результат 0011 1111 * / LSB = (0x30) - LSB; / * Крок: 4 Контейнер все ще має 21-бітове значення. Витяг нижчих 8 бітів. 1111 1111 І 1111 1111 1111. Результат - 1111 1111, що є MSB * / MSB = 0xFF & container; / * Крок: 4 Надсилання 16-бітних даних шляхом ділення на два байти. * / digitalWrite (slaveSelectPin, LOW); затримка (100); SPI.transfer (LSB); SPI.transfer (MSB); затримка (100); // піднімаємо штифт SS високо, щоб скасувати вибір мікросхеми: digitalWrite (slaveSelectPin, HIGH); }
Цей розділ використовується для поточних операцій зондування.
float read_current (void) { load_current = 0; for (int a = 0; a <середнє; a ++) { load_current = load_current + analogRead (current_sense); } струм_навантаження = струм_навантаження / середнє; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; повернути load_current; }
Це використовується для зчитування напруги навантаження.
float read_voltage (void) { load_voltage = 0; for (int a = 0; a <середнє; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } напруга_навантаження = напруга_навантаження / середнє; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; зворотне навантаження_напруга; }
Це власне цикл. Тут вимірюються кроки перемикання і дані надсилаються в ЦАП. Після передачі даних вимірюється фактичний струм струму та напруга навантаження. Обидва значення також нарешті надруковані на РК-дисплеї.
void loop () { state1 = analogRead (збільшення); if (state1> 500) { затримка (50); state1 = analogRead (збільшення); якщо (стан1> 500) { вольт = вольт + 0,02; } } state2 = analogRead (зменшення); якщо (стан2> 500) { затримка (50); state2 = analogRead (зменшення); якщо (стан2> 500) { якщо (вольт == 0) { вольт = 0; } ще { вольт = вольт-0,02; } } } число = вольт / 0,0012210012210012; convert_DAC (число); напруга = read_voltage (); поточний = read_current (); lcd.setCursor (0, 0); lcd.print ("Встановити значення"); lcd.print ("="); Встановити = (вольт / 2) * 10000; lcd.print (Set); lcd.print ("мА"); lcd.setCursor (0, 1); lcd.print ("Я"); lcd.print ("="); lcd.print (поточний); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (напруга); lcd.print ("V"); // lcd.print (напруга_навантаження); //lcd.print("mA "); // затримка (1000); //lcd.clear (); }
Тестування нашого регульованого навантаження постійного струму
Цифрова схема навантаження припаюється і живиться за допомогою джерела живлення 12 В. Я використав літієву батарею 7,4 В зі сторони джерела живлення та підключив лічильник затискачів, щоб перевірити, як вона працює. Як ви можете бачити, коли встановлений струм становить 300 мА, схема забирає 300 мА від акумулятора, який також вимірюється за допомогою вимірювального приладу як 310 мА.
Повну роботу схеми можна знайти у відео, наведеному нижче. Сподіваюся, ви зрозуміли проект і сподобалось будувати щось корисне. Якщо у вас виникли запитання, залиште їх у розділі коментарів або скористайтеся форумами.