Съдържание:

Захранване с цифрова батерия: 7 стъпки (със снимки)
Захранване с цифрова батерия: 7 стъпки (със снимки)

Видео: Захранване с цифрова батерия: 7 стъпки (със снимки)

Видео: Захранване с цифрова батерия: 7 стъпки (със снимки)
Видео: Най-важното, което трябва да знаем за захранването на бебето 2024, Ноември
Anonim
Захранване с цифрова батерия
Захранване с цифрова батерия
Захранване с цифрова батерия
Захранване с цифрова батерия
Захранване с цифрова батерия
Захранване с цифрова батерия
Захранване с цифрова батерия
Захранване с цифрова батерия

Искали ли сте някога захранване, което да можете да използвате в движение, дори и без електрически контакт наблизо? И няма ли да е готино, ако беше и много прецизно, цифрово и управляемо чрез компютър?

В тази инструкция ще ви покажа как да изградите точно това: захранване с цифрова батерия, което е съвместимо с arduino и може да се управлява чрез компютър през USB.

Преди известно време изградих захранване от стар ATX PSU и макар да работи чудесно, исках да засиля играта си с цифрово захранване. Както вече беше казано, той се захранва от батерии (2 литиеви клетки, за да бъдем точни) и може да достави максимум 20 V при 1 A; което е достатъчно за повечето от моите проекти, които изискват точно захранване.

Ще покажа целия процес на проектиране и всички файлове на проекта могат да бъдат намерени на моята страница на GitHub:

Да започваме!

Стъпка 1: Функции и цена

Характеристики и цена
Характеристики и цена

Характеристика

  • Режими на постоянно напрежение и постоянен ток
  • Използва линеен регулатор с нисък шум, предшестван от проследяващ регулатор, за да сведе до минимум разсейването на мощността
  • Използване на ръчно сгъваеми компоненти, за да поддържа проекта достъпен
  • Осъществено от ATMEGA328P, програмирано с Arduino IDE
  • Комуникация с компютър чрез Java приложение през micro USB
  • Захранва се от 2 защитени 18650 литиево -йонни клетки
  • 18 -милиметрови бананови щепсели за съвместимост с BNC адаптери

Спецификации

  • 0 - 1A, стъпки от 1 mA (10 -битов DAC)
  • 0 - 20V, стъпки от 20 mV (10 -битов DAC) (истинска 0V операция)
  • Измерване на напрежение: 20 mV резолюция (10 битов ADC)
  • Текущо измерване:

    • <40mA: 10uA резолюция (ina219)
    • <80mA: 20uA резолюция (ina219)
    • <160mA: резолюция 40uA (ina219)
    • <320mA: 80uA резолюция (ina219)
    • > 320mA: 1mA резолюция (10 битов ADC)

Разходи

Пълното захранване ми струваше около 135 долара, с всички еднократни компоненти. Батериите са най -скъпата част (30 долара за 2 клетки), тъй като са защитени 18650 литиеви клетки. Възможно е значително да се намалят разходите, ако не е необходима работа на батерията. Като пропуснете батериите и схемите за зареждане, цената пада до около 100 долара. Въпреки че това може да изглежда скъпо, захранването с много по -ниска производителност и функции често струва повече от това.

Ако нямате нищо против да поръчате компонентите си от ebay или aliexpress, цената с батерии ще падне до $ 100 и $ 70 без. Влизането на части отнема повече време, но това е жизнеспособна опция.

Стъпка 2: Схеми и теория на работа

Схеми и теория на работа
Схеми и теория на работа

За да разберем работата на веригата, ще трябва да разгледаме схемата. Разделих го на функционални блокове, така че да е по -лесно за разбиране; По този начин ще обясня операцията стъпка по стъпка. Тази част е доста задълбочена и изисква добри познания по електроника. Ако просто искате да знаете как да изградите веригата, можете да преминете към следващата стъпка.

Основен блок

Операцията се основава на чипа LT3080: това е линеен регулатор на напрежението, който може да понижава напреженията въз основа на управляващ сигнал. Този управляващ сигнал ще бъде генериран от микроконтролер; как се прави това, ще бъде обяснено подробно по -късно.

Настройка на напрежението

Схемата около LT3080 генерира подходящи управляващи сигнали. Първо ще разгледаме как се задава напрежението. Настройката на напрежението от микроконтролера е PWM сигнал (PWM_Vset), който се филтрира от нискочестотен филтър (C9 & R26). Това произвежда аналогово напрежение - между 0 и 5 V - пропорционално на желаното изходно напрежение. Тъй като нашият изходен диапазон е 0 - 20 V, ще трябва да усилим този сигнал с коефициент 4. Това се прави от неинвертиращата конфигурация на opamp на U3C. Печалбата към зададения щифт се определя от R23 // R24 // R25 и R34. Тези резистори са 0,1% толерантни, за да минимизират грешките. R39 и R36 нямат значение тук, тъй като те са част от веригата за обратна връзка.

Текуща настройка

Този зададен щифт може да се използва и за втората настройка: текущ режим. Искаме да измерим текущото теглене и да изключим изхода, когато това надвиши желания ток. Следователно, започваме отново с PWM сигнал (PWM_Iset), генериран от микроконтролера, който сега е нискочестотен филтриран и отслабен, за да премине от диапазон 0 - 5 V до диапазон 0 - 2 V. Това напрежение сега се сравнява с падането на напрежението в текущия сензорен резистор (ADC_Iout, вижте по -долу) от конфигуратора на компаратора на opamp U3D. Ако токът е твърде висок, това ще включи светодиод и също ще издърпа зададената линия на LT3080 към земята (чрез Q2), като по този начин ще изключи изхода. Измерването на тока и генерирането на сигнала ADC_Iout се извършва по следния начин. Изходният ток протича през резистори R7 - R16. Тези общо 1 ом; причината да не се използва 1R на първо място е двойна: 1 резистор трябва да има по -висок рейтинг на мощност (той трябва да разсее поне 1 W), а като използваме 10 1% резистори паралелно, получаваме по -висока точност от с един 1 % резистор. Добър видеоклип защо това работи може да се намери тук: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Когато токът тече през тези резистори, той създава спад на напрежението, който можем да измерим, и той е поставени преди LT3080, тъй като спадът на напрежението върху него не трябва да влияе на изходното напрежение. Спадът на напрежението се измерва с диференциален усилвател (U3B) с усилване 2. Това води до диапазон на напрежение от 0 - 2 V (повече за това по -късно), следователно делителят на напрежението при ШИМ сигнала на тока. Буферът (U3A) е там, за да се увери, че токът, протичащ в резистори R21, R32 и R33, не преминава през текущия сензорен резистор, което би повлияло на неговото отчитане. Също така имайте предвид, че това трябва да бъде опампа от релса към релса, тъй като входното напрежение на положителния вход е равно на захранващото напрежение. Неинвертиращият усилвател е само за измерване на курса, въпреки че за много прецизни измервания имаме на борда чип INA219. Този чип ни позволява да измерваме много малки токове и се адресира чрез I2C.

Допълнителни неща

На изхода на LT3080 имаме още неща. На първо място, има миене на ток (LM334). Това извлича постоянен ток от 677 uA (зададен от резистор R41), за да стабилизира LT3080. Той обаче не е свързан към земята, а към VEE, отрицателно напрежение. Това е необходимо, за да може LT3080 да работи до 0 V. Когато е свързан към земята, най -ниското напрежение ще бъде около 0,7 V. Това изглежда достатъчно ниско, но имайте предвид, че това ни пречи да изключим напълно захранването. Стабилитронът D3 се използва за захващане на изходното напрежение, ако то надвишава 22 V, а резисторният делител намалява диапазона на изходното напрежение от 0 - 20 V до 0 - 2 V (ADC_Vout). За съжаление, тези вериги са на изхода от LT3080, което означава, че техният ток ще допринесе за изходния ток, който искаме да измерим. За щастие, тези токове са постоянни, ако напрежението остане постоянно; така че можем да калибрираме тока, когато натоварването е изключено първо.

Зареждаща помпа

Отрицателното напрежение, което споменахме преди, се генерира от любопитна малка верига: зареждащата помпа. За неговата работа бих се позовал тук: https://www.youtube.com/embed/1WAhTdWErrU&t=1s Захранва се от 50% PWM на микроконтролера (PWM)

Boost Converter

Нека сега разгледаме входното напрежение на нашия основен блок: Vboost. Виждаме, че е 8 - 24V, но изчакайте, 2 литиеви клетки последователно дава максимум 8.4 V? Наистина и затова трябва да повишим напрежението с т.нар усилващ преобразувател. Винаги можем да повишим напрежението до 24 V, без значение какъв изход искаме; това обаче би загубило много енергия в LT3080 и нещата щяха да станат прекалено горещи! Така че вместо да правим това, ще повишим напрежението до малко повече от изходното напрежение. Подходящо е около 2,5 V по -високо, за да се отчете спадането на напрежението в токовия резистор и отпадащото напрежение на LT3080. Напрежението се задава от резистори на изходния сигнал на усилвателния преобразувател. За да променим това напрежение в движение, използваме цифров потенциометър, MCP41010, който се управлява чрез SPI.

Батерията се зарежда

Това ни води до реалното входно напрежение: батериите! Тъй като използваме защитени клетки, просто трябва да ги поставим последователно и сме готови! Важно е тук да се използват защитени клетки, за да се избегне свръхток или свръхразреждане и по този начин увреждане на клетките. Отново използваме делител на напрежение за измерване на напрежението на батерията и понижаването му до полезен диапазон. Сега към интересната част: веригата за зареждане. За тази цел използваме чипа BQ2057WSN: в комбинация с TIP32CG, той по същество сам образува линейно захранване. Този чип зарежда клетките чрез подходяща CV CC траектория. Тъй като батериите ми нямат температурна сонда, този вход трябва да бъде свързан с половината напрежение на батерията. Това завършва частта за регулиране на напрежението на захранването.

5V регулатор

Захранващото напрежение от 5 V на arduino е направено с този прост регулатор на напрежение. Това обаче не е най -прецизният 5 V изход, но това ще бъде решено по -долу.

2.048 V еталон за напрежение

Този малък чип осигурява много точна справка за напрежение 2.048 V. Това се използва като отправна точка за аналоговите сигнали ADC_Vout, ADC_Iout, ADC_Vbatt. Ето защо имаме нужда от делители на напрежение, за да намалим тези сигнали до 2 V. Микроконтролер Мозъкът на този проект е ATMEGA328P, това е същият чип, който се използва в Arduino Uno. Вече разгледахме повечето контролни сигнали, но въпреки това има някои интересни допълнения. Ротационните енкодери са свързани към 2 -те външни прекъсващи щифта на arduino: PD2 и PD3. Това е необходимо за надеждно внедряване на софтуер. Превключвателите отдолу използват вътрешен резистор. След това има този странен делител на напрежение на линията за избор на чип на потенциометъра (Pot). Делител на напрежение на изход, за какво е добре; може да се каже. Както бе споменато по -горе, 5 V захранването не е ужасно точно. Поради това би било добре да се измери това точно и съответно да се регулира работния цикъл на ШИМ сигнала. Но тъй като нямах повече свободни входове, трябваше да накарам щифт с двойно натоварване. Когато захранването се зарежда, този щифт първо се задава като вход: той измерва захранващата шина и се калибрира. След това той е зададен като изход и може да управлява линията за избор на чип.

Драйвер на дисплея

За дисплея исках общодостъпен - и евтин - LCD екран Hitachi. Те се задвижват от 6 пина, но тъй като не ми останаха игли, имах нужда от друго решение. Сменен регистър на помощ! 74HC595 ми позволява да използвам линията SPI за управление на дисплея, като по този начин се нуждая само от 1 допълнителна линия за избор на чип.

FTDI

Последната част от това захранване е връзката с жестокия външен свят. За това трябва да преобразуваме серийните сигнали в USB сигнали. Това става чрез FTDI чип, който е свързан към микро USB порт за лесно свързване.

И това е всичко!

Стъпка 3: ПХБ и електроника

PCB & Electronics
PCB & Electronics
PCB & Electronics
PCB & Electronics
PCB & Electronics
PCB & Electronics
PCB & Electronics
PCB & Electronics

Сега, когато разбрахме как работи схемата, можем да започнем да я изграждаме! Можете просто да поръчате печатна платка онлайн от любимия си производител (моята струва около 10 долара), гербер файловете могат да бъдат намерени на моя GitHub, заедно със сметката за материали. След това сглобяването на печатната платка е основно въпрос на запояване на разположените компоненти според копринената печат и сметката на материалите.

Първата стъпка е запояване на SMD компонентите. Повечето от тях са лесни за правене на ръка, с изключение на чипа FTDI и микро USB конектора. Следователно, можете сами да избегнете запояване на тези 2 компонента и вместо това да използвате FTDI пробивна платка. Предоставих щифтове за заглавки, където това може да бъде запоено.

Когато работата по SMD приключи, можете да преминете към всички компоненти през отворите. Те са много ясни. За чиповете може да искате да използвате гнезда, вместо да ги запоявате директно към платката. За предпочитане е да използвате ATMEGA328P с зареждащ механизъм Arduino, в противен случай ще трябва да го качите с помощта на заглавката на ICSP (показана тук).

Единствената част, която се нуждае от малко повече внимание, е LCD екранът, тъй като той трябва да бъде монтиран под ъгъл. Запояйте няколко мъжки ъглови заглавки върху него, като пластмасовото парче е обърнато към долната страна на екрана. Това ще позволи добро поставяне на екрана върху печатната платка. След това той може да бъде запоен на място, както всеки друг проходен компонент.

Единственото, което остава да направите, е да добавите 2 проводника, които ще се свържат към банановите клеми на предната плоча.

Стъпка 4: Корпус и монтаж

Калъф и монтаж
Калъф и монтаж
Калъф и монтаж
Калъф и монтаж
Калъф и монтаж
Калъф и монтаж

С направената платка можем да преминем към калъфа. Специално проектирах печатната платка около този хамонов калъф, така че използването на друг калъф не се препоръчва. Винаги обаче можете да отпечатате 3D калъф със същите размери.

Първата стъпка е да подготвите крайния панел. Ще трябва да пробием някои дупки за винтове, ключове и т.н. Направих това на ръка, но ако имате достъп до CNC, това би било по -точна опция. Направих дупките според схемата и потупах отворите за винтове.

Добра идея е сега да добавите копринени подложки и да ги задържите на място с малка капка супер лепило. Те ще изолират LT3080 и TIP32 от задната плоча, като същевременно ще позволят пренос на топлина. Не ги забравяйте! Когато завинтвате чиповете към задната част, използвайте шайба за слюда, за да осигурите изолация!

Вече можем да се съсредоточим върху предния панел, който просто се плъзга на място. Сега можем да добавим банановите крикове и копчетата за въртящите се енкодери.

С двата панела на място вече можем да поставим монтажа в кутията, да добавим батериите и да затворим всичко. Уверете се, че използвате защитени батерии, не искате клетките да експлодират!

На този етап хардуерът е свършен, сега остава само да вдъхнем малко живот със софтуера!

Стъпка 5: Arduino код

Кодът на Arduino
Кодът на Arduino

Мозъкът на този проект е ATMEGA328P, който ще програмираме с Arduino IDE. В този раздел ще разгледам основната операция на кода, подробностите могат да бъдат намерени като коментари в кода.

Кодът по принцип преминава през тези стъпки:

  1. Прочетете серийни данни от java
  2. Бутони за анкета
  3. Измерете напрежението
  4. Измерете тока
  5. Измерете тока с INA219
  6. Изпратете серийни данни в java
  7. Конфигурирайте boostconvertor
  8. Вземете заряд на батерията
  9. Екран за актуализиране

Ротационните енкодери се обработват от рутинна услуга за прекъсване, за да бъдат възможно най -отзивчиви.

Кодът вече може да бъде качен на платката през микро USB порта (ако чипът има буутлоудър). Платка: Arduino pro или pro mini Програмист: AVR ISP / AVRISP MKII

Сега можем да разгледаме взаимодействието между Arduino и компютъра.

Стъпка 6: Java код

Java код
Java код

За регистриране на данни и контролиране на захранването чрез компютъра направих java приложение. Това ни позволява лесно да контролираме дъската чрез графичен интерфейс. Подобно на кода на Arduino, няма да навлизам във всички подробности, но ще дам преглед.

Започваме, като правим прозорец с бутони, текстови полета и т.н.; основни GUI неща.

Сега идва забавната част: добавянето на USB портовете, за които използвах библиотеката jSerialComm. След като бъде избран порт, java ще слуша всички входящи данни. Също така можем да изпращаме данни до устройството.

Освен това всички входящи данни се записват в csv файл за по -късна обработка на данните.

Когато изпълняваме.jar файла, първо трябва да изберем правилния порт от падащото меню. След свързване данните ще започнат да влизат и ние можем да изпратим нашите настройки на захранването.

Въпреки че програмата е доста основна, тя може да бъде много полезна да я контролирате чрез компютър и да регистрирате данните си.

Стъпка 7: Успех

Успех!
Успех!
Успех!
Успех!
Успех!
Успех!

След цялата тази работа вече имаме напълно функционално захранване!

Трябва също да благодаря на някои хора за подкрепата им:

  • Проектът се основава на uSupply проекта на EEVBLOG и неговата схема Rev C. Така че специални благодарности на Дейвид Л. Джоунс, че пусна схемите си под лиценз с отворен код и сподели всичките си знания.
  • Огромни благодарности на Йохан Патин за създаването на прототипите на този проект.
  • Също така Седрик Бушотс и Ханс Ингелбертс заслужават признание за помощта при отстраняване на неизправности.

Вече можем да се наслаждаваме на собственото си домашно захранване, което ще бъде полезно, докато работим по други страхотни проекти! И най -важното: научихме много неща по пътя.

Ако този проект ви е харесал, моля, гласувайте за мен в конкурса за захранване, наистина ще съм благодарен! Https: //www.instructables.com/contest/powersupply/

Конкурс за захранване
Конкурс за захранване
Конкурс за захранване
Конкурс за захранване

Втора награда в конкурса за захранване

Препоръчано: