Официальный сайт компании Arduino по адресу arduino.cc
Зарядное устройство на основе понижающего преобразователя
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Это продолжение темы про ups, которую в принципе можно снести, функции бесперебойника прикрутить к зарядке не сильно то и сложно, больше внимания решил уделить заряду.
Немного почесав затылок, переделал предыдущую схему, и получил удовлетворительный результат. К управлению п-канального мосфета прикрутил драйвер на биполярах, и нагрев при работе стал минимален. Схема:
Существует сейчас вот в таком виде:
Драйвер собран навесом. При питании 27 вольт и нагрузке 1А за час работы какого-бы нагрева не замечено (частота 20kHz). :_) По появлению свободного времени пере-разведу плату. Транзистор VT2 в принципе не сильно нужен, задел для защиты, думаю добавив TL431 к VT2 и использовав имеющийся ОУ это можно реализовать. Также была мысль о драйвере на IR21xx и н-канальном полевике, но пока руки не дошли, плюс драйвера на IR - возможность использовать встроенную токовую защиту. Код сейчас простой:
#include <TimerOne.h> #include <PWM.h> #include "arduino.h" #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); int VBAT = 0; int IBAT = 0; int CURRENT = 180; int DUTY = 0; int32_t frequency = 15000; // desired frequency in Hertz #define PWM_PIN 3 // the output pin for the pwm byte chargeState = 0; // вкл/выкл заряда void setup () { pinMode(0, INPUT); pinMode(1, INPUT); lcd.init(); lcd.backlight(); InitTimersSafe(); bool success = SetPinFrequencySafe(PWM_PIN, frequency); //if the pin frequency was set successfully, turn pin 13 on if(success) { pinMode(13, OUTPUT); digitalWrite(13, HIGH); } } void loop () { VBAT = analogRead(0); IBAT = analogRead(1); // DUTY == DUTY*10; if (IBAT>CURRENT) DUTY--; if (IBAT<CURRENT) DUTY++; // DUTY == DUTY/10; if (DUTY>250) DUTY = 250; if (DUTY<1) DUTY = 1; if (VBAT>909) chargeState = 1; if (VBAT<843) chargeState = 0; if (CURRENT>400 ) DUTY=1; if (chargeState == 0) pwmWrite(PWM_PIN, DUTY); else pwmWrite(PWM_PIN, 0); lcd.setCursor(0, 0); lcd.print("V:"); if (VBAT<1000) lcd.print(0); if (VBAT<100) lcd.print(0); if (VBAT<10) lcd.print(0); lcd.print(VBAT);lcd.print(" "); lcd.print("I:"); if (IBAT<1000) lcd.print(0); if (IBAT<100) lcd.print(0); if (IBAT<10) lcd.print(0); lcd.print(IBAT);lcd.print(" "); lcd.setCursor(0, 1); lcd.print("D:"); if (DUTY<1000) lcd.print(" "); if (DUTY<100) lcd.print(0); if (DUTY<10) lcd.print(0); lcd.print(DUTY); lcd.print(" F:"); lcd.print(frequency/1000);lcd.print("kHz"); }
Алгоритм заряда пока не реализован, только отключение при достижении напряжения заряда и включение при разряде до 13.2 Библиотеку для ШИМ использовал отсюда.
Затылок зачесался по причине прочтения стр 18 этого документа, также думаю не лишним будет перенести R3 в эмиттер VT1.
Затылок зачесался по причине прочтения стр 18 этого документа, также думаю не лишним будет перенести R3 в эмиттер VT1.
Надеюсь не будете возражать если я утяну вашу ссылочку в родственную тему Проблема подбора MOSFET транзистора | Аппаратная платформа Arduino
P.S. Эх... когда нибудь будет время прочитать это внимательно и вдумчиво :)
Не, никаких возражений, кстати я тоже не от корки до корки там всё прочитал, только интересующее, как говаривал известный персонаж, "нельзя объять необъятное". По поводу защиты - задумка следующая - при достижении ~5.2 вольт на выходе ОУ измерителя тока гасить свет.:_) (ведь всё-равно ток который больше чем значение 1024 - это уже предел, соответственно максимальный ток настраивать делителем R10/R11). Думаю защита необходима - как компенсация медлительности мк.
//
Попробовал изобразить защиту.
Может мысли у кого будут?
Опробовал защиту на макете, работает, может потребоваться конденсатор на ref TL431. Номиналы подбирать все-равно. Работу можно глянуть в симуляторе, облегчает подбор делителей, файл мултисима можно взять тут.
Настроен на макс ток 1A, хотя схема позволяет больше, зависит от силовых элементов, индуктивности... Там же тестовая печать.
В общем-то это не только зарядка получилась, можно использовать как регулируемый стабилизированный источник питания с функцией стабилизации тока, как угодно. Макс питание без изменений в схеме 30 вольт, для повышения, либо ограничить питание ОУ, либо взять другой.
Что-то не сильно интересно, хотелось бы комментариев, ведь силовой модуль получился неплохой.
Последний вариант:
Пока вроде добавить нечего.
Очень интересно, жду высоковольтные Р-мосфеты, попробывать с 260 вольтами поработать :) , столько у меня солнечные панели выдают.
Напомните плиз, какие диоды шотки vd2?
Ох, на такое напряжение не планировал, хотя... высокая часть отделена, ничего не мешает взять другие транзисторы и попробовать.
VD2 у меня MBRF30100 в пластике, шоттки на большое напряжение не так много, можно ультрафасты какие-нибудь подыскать.
Сейчас "начисто" собрал, нюанс всплыл - цепь питания защиты и ОУ отделить от силовой части диодом надо, после этого короткое на выходе ловит изумительно.
ы. Для таких напряжений думаю все-таки трансформатор уже нужен, либо дроссель с двумя обмотками.
у меня один вопрос: пульстации из-за шима не влияют на измерения тока и напряжения? вижу фильтры, но справляются ли они
и вот с этим куском не очень понятно. могли бы пояснить
При появлении на выходе измерителя тока (U1A) напряжения больше 5 (ведь больше нам и не надо) вольт откроется TL431, транзистор VT2 через оптрон прижмет базу VT1 к земле и преобразователь выключится, те это триггерная защита, включить обратно можно либо выключением питания, либо кнопкой "сброс".
а смысл ставить транзистор если 431 может через себя пропустить такой же ток как и транзистор?
без vd4 в принципе тоже можно обойтись. входное сопротивление делителя высокое, влияние почти не будет оказывать
вместо TLP431 может применить более распрастраненный PC817, а то я даже даташит на него не нашел
так как все подается на ардуину или отдельный микроконтроллер может схему защиты запитать от 5В питания микроконтроллера, так как когда сработает защита, но не закроется полевик или заглючит схема усилителя датчика тока, выделяемая мощность на транзисторе VT2 может его сжечь. просто подстаховаться
и кстати зря картинки не на сервер сайта закачиваете. на хостингах скоро пропадет и увидеть через какие то время ничего нельзя будет
Хм... если не секрет ... для чего создавалось это устройство, если зарядный универсал-монстр для заряки / тренировки / балансировки чего-угодно на иБээ стоит 700-1200 р ???
ну что за люди. все только готовое, китайцы у кого то скопировали они и рады купить
если интереса нет вам конечно незачем, а кому то интересно
тогда зачем тут вообще сидеть? тут люди как раз что то делают, а не готовое покупают. а интересы у всех разные
а смысл ставить транзистор если 431 может через себя пропустить такой же ток как и транзистор?
Триггера не будет, транзистор шунтирует собой 431-ую. Те транзистор как "защелка", именно такой вариант хотел. VD4 перестраховка, лучше пере.... можно и не ставить. TLP431 - мой недочет, автоматом скопировал, TLP721 конечно же, хотя без разницы любой на подходящий по схеме ток подойдет.
так как все подается на ардуину или отдельный микроконтроллер может схему защиты запитать от 5В питания микроконтроллера, так как когда сработает защита, но не закроется полевик или заглючит схема усилителя датчика тока, выделяемая мощность на транзисторе VT2 может его сжечь. просто подстаховаться
Так внимательно на схему посмотрите, если сработает защита полевик закроется, и без разнице что-там на микроконтроллере. Ну или в мултисиме выше выложил ссылку можно посмотреть.
Вообще защиту внедрил именно для того чтобы избежать непредвиденных ситуаций с мк, можно и без нее...
а вот почему. чтобы сигнал на выходе не появился автоматом даже если проблема уже решена. т.е. пока не нажмешь кнопку он так и будет ждать?
если так то транзистор VT2 может просто сгореть. в худшем случае на нем будет падать 0,58вт, хотя максимум 0,5вт (хотя мое личное мнение что производитель завышает характеристики. чтобы SOT23 спокойно рассеивал 0,5Вт. ну х.з.)
блин ошибочка вышла. перепутал с BC857)))
На днях немного покоптил преобразователь, дроссель на "гантеле" DRWW14*15 (7 мм) 20 витков в четыре жилы 0.6. До 3A - холодный, 6А - уже печка, надо думать о материале сердечника. Распыленное железо не сильно хочу из-за размеров, тут либо Ш-образный феррит с зазором подыскать, либо подсмотреть у китайцев аналоги Kool mu колец, вот например:
ы. Я наверное из "старой" гвардии... на smd до сих пор перейти не могу, люблю выводные детали и все тут, хотя и пару тройку чип наборов лежит.
ыы. Вообще пока "вслепую" осциллограф соседу одолжил, к выходным если заберу, хоть увижу что-нибудь.
А ну и еще печать, которую выложил - она на скорую руку, дороги силовые у меня на токе 6А разогрелись сильно, либо медь поверх напаять, либо шире сделать.
На itmages довольно долго храниться, на всякий случай:
Кнопку сброс можно на мк повесить, если на IBAT = 0 -> раз в ..... её дёргать.
я основе вашей схемы сделаю свою. вы не против?
но я наверно триггерную схему делать не буду. если пропала проблема пусть сам включается
если дергать мк то нет ведь смысла делать триггер. смысл пропадает, а так схема довольно неплохая получилась
Смысл в схеме есть только если есть защита, если больше поинтересуетесь этим вопросом, то подход обычно другой, берётся smps контроллер и уже им управляет мк, .... ну вот например что будет, если мк повиснет? Эти все обсуждения не раз поднимались на других форумах.
Со схемой можно поступать как угодно... ;_)
Но в случае отказа от защиты - во-первых защитить программно - у мк не хватит скорости, во-вторых ставьте быстрый предохранитель.
ы. Деталей-то кот наплакал на защиту...
если дергать мк то нет ведь смысла делать триггер. смысл пропадает,
Смысл не пропадает, дергать можно раз в 1 сек, с полевиком ничего не будет, даже если закоротить выход наглухо. Можно подсмотреть реализацию схем защит на 555 таймере в связке шим контроллерами, там подход как раз точно такой же, сработала защита, далее таймер через промежуток времени ее вырубает...
вы меня не поняли. я не от защиты собрался отказываться а от тригерной схемы. то есть если напряжение (а он пропорционален току) на управляющем выводе TL431 превысит 2.5В (без учета делителя), то он вырубит полевик. но как только ток упадет полевик снова заработает без ожидания нажатия на кнопку
а уж программно делать регулировку напряжения/тока, так что даже если мк зависнет, ничего сгореть не должно
хотя может и оставлю как есть, все таки даст задуматься что произошло
А, понял, имеешь ввиду убрать VT2, а оптрон кинуть в катод TL? Ну тогда да, броски, кз, - спасает TL, остальное программно. Заодно посмотрим как оно.
да я эти и имел в виду. поэтому и возник изначально вопрос если такая защита (предполагал транзистор просто как усилитель тока) какой смысл в транзисторе если ток одинаково держат
да посмотрим. по идее тоже самое, но ждать не будет
подскажи как работает в данном случае триггер? точнее результат известен, но схемотехнически непонятно. не приходитлось делать таких триггеров
сейчас доделаю гидропонику (для кролика выращиваю овес в виде зеленого корма, а то мало ли кто что подумает) и отремонтирую самолет (был сильный удар об асфальт. корпус более менее выдержал, а вот с самодельным приемником что то случилось) и займусь схемо. я решил все таки сделать давно задуманное: зарядка для литиевых аккумуляторов с балансером. можно конечно и купить. но думаю все получится. ничего сверхестественного
Мултивибратор вспомни, ничего не напоминает?
Пока стабилитрон (TL431) закрыт на базе VT2 положительный потенциал, и он закрыт, как только напряжение на ref выводе достигает 2.49 вольт - база транзистора "приземляется", VT2 открывается и сам собой шунтирует (поддерживая на ref напряжение >2.49) пороговое напряжение TL`ки.
А как будет правильно подключить меге8 7-ми сегментный 4-ре знака так?
это первый вариант. тестировал также без транзисторов и резисторов. тоже работает хорошо, главное время отображения сделать небольшое (время свечения одной цифры при динамической индикации)
но требуется 11 выводов без точки. если нужно съэкономить выводы то можно применить 74HC595
но это постоянно требует процессорное время. лучше применить MAX7219
Ладно пока делаю с I2C, а как приедут 7219 соображу что нибудь с ними. Запустил со стабилизацией напряжения, код вот такой:
Реакция медленная при подключении нагрузки, те напряжение выравнивает, но медленно.
а зачем библиотека для шима? в меге8 3 шима хардварных
им также можно частоту поменять. где то ссылки проходили как одной строкой настраивается на другую частоту. правда там частоты вроде 490, 7кгц, 15кгц, 32кгц и 64кгц
изза софтварного шима все замедляется, так как требуется процессорное время
если я не ошибаюсь есть библиотека где можно Hz точнее настраивать. PWM lib по моему называется или как то так
так вот он настроил на нужную частоту чтобы не пищало предполагаю. но софтварный шим нагружает мк чтобы постоянно шимить
то есть для чайника(ну или для меня), его проблема именно из-за того что он пользуется этой lib?
скорее всего да. 20000 раз в секунду нужно подать на порт 1 и 0. как именно портом дергают непонятно в либе. насколько понял используются ардуиновские функции спрятанные внутри digitalWrite. всякие маски и тп
даже управление пинами порта с использование сдвигов требуется 10 мкс вроде насколько помню
в таком случае получается. 20000*2*10мкс=400000мкс=400мс=0,4с. столько нужно в секунду чтобы делать шим частотой 20кгц при условии что управление делается сдвигом
а потом еще прибавляем управление i2c дисплеем и получаем что делается медленно
ясно, в будуйщем буду обращать на это больше внимания
ясно, в будуйщем буду обращать на это больше внимания
лучше использовать хардварный шим, либо снижать частоту, либо мирится с тормозами
Я же говорил вроде где-то, мк в руки взял первый раз месяц-два назад (hex залить не считается - это не спортивно), решив что хватит быть аналоговым. :_)
На attiny подсказали вот так, но пока без приборов, не видя что там за шим не пробую.
лучше использовать хардварный шим, либо снижать частоту, либо мирится с тормозами
вот если надо чтоб быстро было, лучше как? частоту менять или хв шим?
быстро это хардварный. просто настроить на частоту повыше в случае данной темы
процессор не грузит
надо только найти для меги8 настройку или даташит читать. для 328меги выкладывали
так вот он настроил на нужную частоту чтобы не пищало предполагаю. но софтварный шим нагружает мк чтобы постоянно шимить
Не, тут не из-за писка, тут КПД и размеры тоже важны. Это для желто-белых колец 15кГц норма, а для феррита надо больше. Вообще нужно не много 15,32,64кГц - уже хорошо, примерно 85,100,125,150кГц бы ещё вообще отлично.
150кгц? а у вас полевик не сгорит изза переходных процессов? полевик будет греться и кпд упадет
Импульсные преобразователи и не на таких частотах работают, другой вопрос самому изготовить допустим 200-300кГц ИИП очень сложно, тут уже больше вопросов к индуктивности, разводке итп.
Кстати, изначально откуда взял идею - avr450 - один работает 15кГц (tiny), второй 100кГц, там и исходники есть.
ы. И да, для чего же тогда драйвер к полевику делал? На 15кГц он и без VT1,VT3,VT4 будет тарахтеть не плохо, ну почти...
а вот возмите осциллограф и проверьте фронты
Так я не говрил, что на 150кГц буду делать, но иметь возможность попровать-то надо, мало-ли, coilcraft`ом разживусь... :_) А фронты - да первым делом.
Пытаюсь разобраться с аппаратным ШИМ, запустил CVAVR мастера, для attiny45, Timer0, 31.250kHz получил такой код:
Выдернул то, что касается PB0 и таймера, вот так:
Но, получил 62.5Hz.
TCCR0B отвечает за прескалинг, если в него записать 0x01 или вот так:
то частота на PB0 - 15kHz, но почему? Ведь так мы должны получить практически 8MHz.
а частота работы тиньки какая?
Бутлоадер 8MHz.
попробуйте так вместо вашей настройки для 8мгц тиньки без делителя. интересно что получится
Залил, частота плавает 3.4MHz в среднем, OCR0A скважнсть не регулирует.
ну уже не герцы))
блин забыл, вроде OCR0A регулирует скважность
У меня на меге8 такая же примерно петрушка, только там получил 46kHz кажется.
Еще вот такой способ (шаманство чистой воды) выдернул откуда-то:
Выдает 31.25kHz, скважность только с помощью analogWrite, на изменения OCR0A не реагирует.
OCR0B попробуйте))
Ни OCR0A ни OCR0B ... без analogWrite в данном случае на выходе ноль.
ы. Да хватит уже на вы... ;_)