- Необходими материали
- Схема на електронно натоварване на Arduino DC
- PCB Design и Gerber File
- Поръчка на вашата PCB от AllPCB
- Код на Arduino за регулируемо DC натоварване
- Тестване на нашия регулируем DC товар
Ако някога сте работили с батерии, SMPS вериги или други схеми за захранване, тогава често би трябвало да се наложи да тествате своя източник на захранване, като го зареждате, за да проверите как работи при различни условия на зареждане. Устройство, което обикновено се използва за извършване на този тип изпитване, се нарича постоянен ток с постоянен ток, което ни позволява да регулираме изходния ток на вашия източник на захранване и след това да го поддържа постоянен, докато отново не бъде променен. В този урок ще научим как да изградим собствения си Регулируем електронен товар, използвайки Arduino, който може да поеме максимално входно напрежение от 24V и да източи ток до 5А. За този проект използвахме платки за печатни платки, произведени от AllPCB, професионален доставчик на услуги за производство и сглобяване на печатни платки в Китай.
В нашия предишен урок за контролиран с напрежение източник на ток, ние обяснихме как да използваме операционен усилвател с MOSFET и да използваме верига за източник на ток с контролирано напрежение. Но в този урок ще приложим тази схема и ще направим цифрово управляван източник на ток. Очевидно е, че дигитално управляваният източник на ток изисква цифрова верига и за да служи на целта се използва Arduino NANO. Arduino NANO ще осигури необходимите контроли за DC натоварването.
Веригата се състои от три части. Първата част е секцията Arduino Nano, втората част е цифрово-аналогов преобразувател, а третата част е чиста аналогова схема, където се използва двоен оперативен усилвател в един пакет, който ще контролира товарната секция. Този проект е вдъхновен от публикация в Arduino, но веригата е променена за по-малка сложност с основни функции за всички, за да я изгради.
Нашият електронен товар е проектиран да има следните входни и изходни секции.
- Два входни превключвателя за увеличаване и намаляване на товара.
- LCD, който ще покаже зададеното натоварване, действителното натоварване и напрежението на товара.
- Максималният ток на натоварване е ограничен до 5А.
- Максималното входно напрежение е 24V за товара.
Необходими материали
Компонентите, необходими за изграждане на електронен товар с постоянен ток, са изброени по-долу.
- Arduino nano
- LCD с 16x2 знака
- Двуцевно гнездо
- Mosfet irf540n
- Mcp4921
- Lm358
- 5 ватов шунтов резистор.1 ома
- 1k
- 10k - 6бр
- Система за охлаждане
- .1uF 50v
- 2k - 2бр
Схема на електронно натоварване на Arduino DC
В схемата по-долу операционният усилвател има две секции. Единият е да контролира MOSFET, а другият да усили усещания ток. Можете също да проверите видеоклипа в долната част на тази страница, който обяснява пълната работа на веригата. Първият раздел има R12, R13 и MOSFET. R12 се използва за намаляване на натоварващия ефект върху секцията за обратна връзка и R13 се използва като резистор на Mosfet порта.
Допълнителни два резистора R8 и R9 се използват за засичане на захранващото напрежение на захранването, което ще бъде под напрежение от това фиктивно натоварване. Според правилото на делителя на напрежението, тези два резистора поддържат максимум 24V. Повече от 24V ще произведе напрежение, което няма да е подходящо за щифтовете Arduino. Затова внимавайте да не свързвате захранване, което има повече от 24V изходно напрежение.
Резисторът R7 е действителният резистор на натоварване тук. Това е резистор от 5 вата,.1 ома. Съгласно закона за мощността, той ще поддържа максимум 7A (P = I 2 R), но за по-безопасна страна е по-разумно да ограничите максималния ток на натоварване от 5A. Следователно, в момента максимално 24V, 5A натоварване може да бъде зададено от този фиктивен товар.
Друга секция на усилвателя е конфигурирана като усилвател с усилване. Той ще осигури 6x печалба. По време на потока на тока ще се появи спад на напрежението. Например, когато 5A ток протича през резистора, спадът на напрежението ще бъде.5V през шунтиращия резистор.1 Ohms (V = I x R) съгласно закона за ома. Неинвертиращият усилвател ще го усили до x6, следователно 3V ще бъде изходът от втората част на усилвателя. Този изход ще бъде усетен от нано аналоговия входен пин Arduino и токът ще бъде изчислен.
Първата част на усилвателя е конфигурирана като верига за следене на напрежение, която ще управлява MOSFET според входното напрежение и ще получи желаното напрежение с обратна връзка поради тока на товара, протичащ през шунтиращия резистор.
MCP4921 е цифрово-аналогов преобразувател. ЦАП използва протокола за комуникация SPI, за да получи цифровите данни от всеки микроконтролер и да осигури аналогово изходно напрежение в зависимост от него. Това напрежение е входът на операционния усилвател. Преди това научихме и как да използваме този ЦАП MCP4921 с PIC.
От другата страна има Arduino Nano, който ще предоставя цифровите данни на ЦАП чрез SPI протокол и ще контролира натоварването, като също така ще показва данните в 16x2 символен дисплей. Използват се две допълнителни неща, това е бутонът за намаляване и увеличаване. Вместо да се свързва към цифров щифт, той се свързва в аналоговите щифтове. Следователно може да се смени с друг тип превключватели като плъзгач или аналогов енкодер. Също така, чрез модифициране на кода може да се предоставят сурови аналогови данни за контрол на товара. Това също така избягва проблема с изключването на превключвателя.
И накрая, чрез увеличаване на натоварването, Arduino nano ще предостави данните за натоварването на ЦАП в цифров формат, ЦАП ще предостави аналогови данни на операционния усилвател, а операционният усилвател ще контролира MOSFET според входното напрежение на операционния усилвател. И накрая, в зависимост от потока на тока на натоварване през шунтиращия резистор, ще се появи спад на напрежението, който допълнително ще се усили от втория канал на LM358 и ще се получи от Arduino nano. Това ще се покаже на дисплея на символите. Същото ще се случи, когато потребителят натисне бутона за намаляване.
PCB Design и Gerber File
Тъй като тази схема има висок токов път, е по-разумен избор да се използват правилни тактики за проектиране на печатни платки за премахване на нежелани случаи на повреда. По този начин, PCB е проектирана за това DC натоварване. Използвал съм Eagle PCB Design Software за проектиране на моята PCB. Можете да изберете всеки софтуер за PCB Cad. Окончателният дизайн на печатни платки в CAD софтуера е показан на изображението по-долу,
Един важен фактор, който трябва да забележите по време на проектирането на тази платка, е да се използва дебела равнина на мощност за правилно протичане на тока по цялата верига. Съществуват и VIAS наземни шевове (произволни отвори в земната равнина), които се използват за правилен поток на земята както в слоевете отгоре, така и отдолу.
Можете също да изтеглите файла Gerber на тази PCB от връзката по-долу и да я използвате за изработка.
- Изтеглете регулируем електронен DC Gerber файл
Поръчка на вашата PCB от AllPCB
След като сте готови с вашия Gerber файл, можете да го използвате, за да направите вашата PCB фабрична. Говорейки за това, извежда спонсора на тази статия ALLPCB, които са известни със своите висококачествени печатни платки и свръхбърза доставка. Освен производството на печатни платки, AllPCB също предлагаСглобяване на печатни платки и източник на компоненти.
За да получите поръчката си от печатни платки от тях, посетете allpcb.com и регистрация. След това на началната страница въведете размерите на вашата PCB и необходимото количество, както е показано по-долу. След това кликнете върху „Цитирай сега“.
Сега можете да промените останалите параметри на вашата печатна платка, като броя на слоевете, цвета на маската, дебелината и т.н. Това ще ви покаже времето за изпълнение и общата сума за плащане. Избрах DHL и общата ми сума е $ 26, но ако сте клиент за първи път, цените ще спаднат при плащане. След това кликнете върху Добавяне в кошницата и след това щракнете върху плащане сега.
Сега можете да кликнете върху качването на вашия Gerber файл, като кликнете върху „Качване на Gerber“ и след това кликнете върху купуване.
На следващата страница можете да въведете адреса си за доставка и да проверите крайната цена, която трябва да платите за вашата печатна платка. След това можете да прегледате поръчката си и след това да кликнете върху „Изпращане“, за да извършите плащането.
След като поръчката ви бъде потвърдена, можете да седнете и да изпратите печатната платка да пристигне на прага ви. Получих поръчката си след няколко дни и след това опаковката беше чиста, както е показано по-долу.
Качеството на печатната платка беше добро както винаги, както можете да се убедите сами на снимките по-долу. Горната и долната страна на дъската са показани по-долу.
След като вземете дъската си, можете да продължите със сглобяването на всички компоненти. Готовата ми дъска изглежда нещо подобно, показано по-долу.
След това можете да качите кода и да включите модула, за да проверите как работи. Пълният код за този проект е даден в долната част на тази страница. Обяснението на кода е както следва.
Код на Arduino за регулируемо DC натоварване
Кодът е доста прост. Първоначално включихме SPI и LCD заглавни файлове, както и зададохме максималното логическо напрежение, щифтове за избор на чипове и т.н.
#include
Този раздел се състои от необходимите декларации, свързани с програмния поток, на цели числа и променливи. Също така задаваме асоциираните периферни щифтове с Arduino Nano.
const int slaveSelectPin = 10; // Чип за избор на щифт int номер = 0; увеличение int = A2; // Увеличение на пин 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; float load_voltage = 0.0; плаващ ток = 0,0; плаващо напрежение = 0,0; LCD LiquidCrystal (7, 6, 5, 4, 3, 2); // LCD щифтове
Това се използва за настройка на LCD и SPI. Също така, посоките на щифтовете са зададени тук.
void setup () { pinMode (slaveSelectPin, OUTPUT); pinMode (увеличение, INPUT); pinMode (намаляване, INPUT); pinMode (current_sense, INPUT); pinMode (напрежение_сенс, ВХОД); // инициализиране на SPI: SPI.begin (); // задаване на броя на колоните и редовете на LCD: lcd.begin (16, 2); // Отпечатайте съобщение на LCD дисплея. lcd.print ("Digital Load"); lcd.setCursor (0, 1); lcd.print ("Circuit Digest"); забавяне (2000); }
Използва се за преобразуване на стойността на ЦАП.
void convert_DAC (неподписана стойност int) { / * Размер на стъпката = 2 ^ n, Следователно 12bit 2 ^ 12 = 4096 За 5V справка стъпката ще бъде 5/4095 = 0,0012210012210012V или 1mV (приблизително) * / неподписан int контейнер; неподписан int MSB; неподписан 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; за (int a = 0; a <средно; a ++) { load_current = load_current + analogRead (current_sense); } load_current = load_current / средно; load_current = (load_current * MAX_VOLT) / 1024; load_current = (load_current / opamp_gain) / load_resistor; връщане load_current; }
Това се използва за отчитане на товарното напрежение.
float read_voltage (void) { load_voltage = 0; за (int a = 0; a <средно; a ++) { load_voltage = load_voltage + analogRead (voltage_sense); } load_voltage = load_voltage / средно; load_voltage = ((load_voltage * MAX_VOLT) /1024.0) * 6; връщане натоварване_напрежение; }
Това е действителният цикъл. Тук се измерват стъпките на превключване и данните се изпращат към ЦАП. След предаване на данните се измерва действителният токов поток и напрежението на товара. И двете стойности се отпечатват накрая на LCD дисплея.
цикъл void () { state1 = analogRead (увеличение); if (state1> 500) { delay (50); state1 = analogRead (увеличение); ако (състояние1> 500) { volt = volt + 0,02; } } състояние2 = analogRead (намаляване); if (state2> 500) { delay (50); state2 = analogRead (намаление); if (състояние2> 500) { if (volt == 0) { volt = 0; } иначе { volt = volt-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 ("mA"); lcd.setCursor (0, 1); lcd.print ("I"); lcd.print ("="); lcd.print (текущ); lcd.print ("A"); lcd.print ("V"); lcd.print ("="); lcd.print (напрежение); lcd.print ("V"); // lcd.print (load_voltage); //lcd.print("mA "); // забавяне (1000); //lcd.clear (); }
Тестване на нашия регулируем DC товар
Цифровата верига за натоварване е запоена и захранвана с помощта на 12V източник на енергия. Използвах моята 7.4V литиева батерия от страната на източника на захранване и свързах измервателен уред, за да проверя как работи. Както можете да видите, когато зададеният ток е 300mA, веригата изтегля 300mA от батерията, която също се измерва чрез измервателен уред като 310mA.
Пълната работа на веригата може да бъде намерена във видеото, свързано по-долу. Надявам се, че сте разбрали проекта и сте се радвали да изградите нещо полезно. Ако имате въпроси, оставете ги в раздела за коментари или използвайте форумите.