Зарядное устройство на основе понижающего преобразователя

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да не говори. привычка

да и фиг с ним. analogwrite регулирует и норм. хотя мой друг перерыл бы все даташиты и либы и узнал как точно запускать, хоть и времени потратил бы много. упертый блин, никакой рациональности

minamonra
Offline
Зарегистрирован: 18.06.2014

Мне просто не понятно почему, если я тупо копирую код из CVAVR и запускаю его в среде ардуино, получаю совсем не ту частоту, а намного  меньше, фьюзы не те?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

скорее всего. так через калькулятор прогнать чтобы точно узнать. какие фьюзы?

minamonra
Offline
Зарегистрирован: 18.06.2014

Ну так бутлоадер же и фьюзы шьёт.

Вот мой кусок boards для attiny45:

attiny45-8.name=ATtiny45 (internal 8 MHz clock)
attiny45-8.bootloader.low_fuses=0xe2
attiny45-8.bootloader.high_fuses=0xdf
attiny45-8.bootloader.extended_fuses=0xff
attiny45-8.upload.maximum_size=4096
attiny45-8.build.mcu=attiny45
attiny45-8.build.f_cpu=8000000L
attiny45-8.build.core=arduino:arduino
attiny45-8.build.variant=tiny8

Как отсюда фьюзы с CVAVR сравнить я не знаю.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ты так говоришь как будто у каждого это есть в board.txt чтобы посмотреть)))

делитель на 8 отключен

бодлевел отключен

внутренный генератор на 8мгц

все))

minamonra
Offline
Зарегистрирован: 18.06.2014

Тихо, тихо, тихо, а тепрерь по-русски можно?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а что тут не по русски))

тинька работает на внутреннем генераторе 8мгц. без делителя значит частота работы 8мгц. нет защиты от снижения напряжения питания

minamonra
Offline
Зарегистрирован: 18.06.2014

И как это исправить?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

что исправить?

minamonra
Offline
Зарегистрирован: 18.06.2014

Фьюзы из калькулятора переписать в boards, чтобы CKDIV8 был включен?

Например из калькулятора получил вот это:

-U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m 

В боард я их воткну, это будет работать?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

работать будет. бутлоадер не факт. частота шима точно упадет

minamonra
Offline
Зарегистрирован: 18.06.2014

Так мне надо, чтобы предделитель работал тк, он у меня воспринимает только одно состояние - 0x01, те без предделителя, и так не только на тини, на меге8 тоже самое. За это ведь и отвечает CKDIV8 - я правильно понимаю?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

 

так фьюзы правильно указал. должно все работать на 1мгц

minamonra
Offline
Зарегистрирован: 18.06.2014

Не, нифига, без пресклинга - 1.9kHz примерно.

Посмотрел - такие фьюзы (-U lfuse:w:0x62:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m) действительно у меня в боард есть для attiny45 1MHz, но я их получил тут http://www.engbedded.com/fusecalc/ для Int. RS Osc 8MHz; Start-up time PWRDWN/RESET:6 CK/14 CK +64ms; [CKSEL=0010 SUT=10]; default value

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну и? 8 мгц. делитель включен. запуск фиг с ним. получается 1 мгц. как определил что не 1 мгц?

minamonra
Offline
Зарегистрирован: 18.06.2014

Запустил код, и попробовал менять предделитель, если 0x01, то PWM - 1.9kHz.

Я тут еще раз применил метод научного тыка, с фьюзами из #54 поста  (которые у меня изначально были) и получил 32kHz вот так:

 

void setup() {
 /*
 TCCR0A = 2<<COM0A0 | 2<<COM0B0 | 3<<WGM00;
 Control Register A for Timer/Counter-0 (Timer/Counter-0 is configured using two registers: A and B)
 TCCR0A is 8 bits: [COM0A1:COM0A0:COM0B1:COM0B0:unused:unused:WGM01:WGM00]
 2<<COM0A0: sets bits COM0A0 and COM0A1, which (in Fast PWM mode) clears OC0A on compare-match, and sets OC0A at BOTTOM
 2<<COM0B0: sets bits COM0B0 and COM0B1, which (in Fast PWM mode) clears OC0B on compare-match, and sets OC0B at BOTTOM
 3<<WGM00: sets bits WGM00 and WGM01, which (when combined with WGM02 from TCCR0B below) enables Fast PWM mode

 TCCR0B = 0<<WGM02 | 1<<CS00;   
 Control Register B for Timer/Counter-0 (Timer/Counter-0 is configured using two registers: A and B)
 TCCR0B is 8 bits: [FOC0A:FOC0B:unused:unused:WGM02:CS02:CS01:CS00]
 0<<WGM02: bit WGM02 remains clear, which (when combined with WGM00 and WGM01 from TCCR0A above) enables Fast PWM mode
 1<<CS00: sets bits CS01 (leaving CS01 and CS02 clear), which tells Timer/Counter-0 to not use a prescalar
 */
 // attiny45 32 kHz PWM
 DDRB = (1<<DDB0); // 5-ая нога как выход PWM
 TCCR0A = (2<<COM0A0) | (2<<COM0B0) | (3<<tWGM00);
 TCCR0B = (0<<WGM02) | (1<<CS00);
 OCR0A=200; //0x00; Скважность
}
void loop()  {
}

Надо только осцилом глянуть, точно там прямоугольник или нет... от дивана он далеко, только частоту и скважность вижу.

Вооот, ещё бы 64kHz получить и я был бы доволен пока.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

какой предделитель?

minamonra
Offline
Зарегистрирован: 18.06.2014

jeka_tm пишет:

какой предделитель?

TCCR0B или прескалинг см #42

я уже сам запутался...

minamonra
Offline
Зарегистрирован: 18.06.2014

32kHz для attiny выдернул отсюда

TCCR0A = 2<<COM0A0 | 2<<COM0B0 | 3<<WGM00;

Control Register A for Timer/Counter-0 (Timer/Counter-0 is configured using two registers: A and B)

TCCR0A is 8 bits: [COM0A1:COM0A0:COM0B1:COM0B0:unused:unused:WGM01:WGM00]

2<<COM0A0: sets bits COM0A0 and COM0A1, which (in Fast PWM mode) clears OC0A on compare-match, and sets OC0A at BOTTOM

2<<COM0B0: sets bits COM0B0 and COM0B1, which (in Fast PWM mode) clears OC0B on compare-match, and sets OC0B at BOTTOM

3<<WGM00: sets bits WGM00 and WGM01, which (when combined with WGM02 from TCCR0B below) enables Fast PWM mode



TCCR0B = 0<<WGM02 | 1<<CS00;   

Control Register B for Timer/Counter-0 (Timer/Counter-0 is configured using two registers: A and B)

TCCR0B is 8 bits: [FOC0A:FOC0B:unused:unused:WGM02:CS02:CS01:CS00]

0<<WGM02: bit WGM02 remains clear, which (when combined with WGM00 and WGM01 from TCCR0A above) enables Fast PWM mode

1<<CS00: sets bits CS01 (leaving CS01 and CS02 clear), which tells Timer/Counter-0 to not use a prescalar

minamonra
Offline
Зарегистрирован: 18.06.2014

Потихоньку почти собрал бесперебойник на базе сабжа:

s_1409671993_5735146_74709852cd.jpg

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

везет же. а я плату развел, а изготовить времени нет)

minamonra
Offline
Зарегистрирован: 18.06.2014

Плата. Схему позже нарисую, хотя там вроде все понятно.

Кондесаторов излищек присутствует, разведено на всякий.

minamonra
Offline
Зарегистрирован: 18.06.2014

Не получилось 32кГц сделать, посему пришлось использовать 15. Дроссель естественно пришлось воткнуть другой. Я его не считал, так на вскидку, поставил сейчас желто-зеленое кольцо:

s_1409856065_4069955_c6c5195d92.jpg

Холостой ход скважность 50% затвор:

s_1409856281_7200790_a578ae0cbe.jpg

27 вольт на входе, зарядка 12 вольт, 2.5А, затвор:

s_1409856350_5880673_d91b3a2bfd.jpg

Тоже, сток:

s_1409857215_1909444_9174f009f6.jpg

При 2.5-3А радиатор особо не нужен, можно флажок...

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

фронты хорошие

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

,

minamonra
Offline
Зарегистрирован: 18.06.2014

Выброс мне не очень нравится, тут наверное либо ультрафаст попробовать поставить, или снаббер посчитать как-то так.

Хотя можно не обращать внимания. 

Забыл сказать - сердечник из распыленки греется прилично, попробую подыскать еще что-нибудь, можно Ш с зазором например.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а гантельки не пробовал?

греется наверно изза низкой частоты, тут размер должен быть скорее всего побольше

minamonra
Offline
Зарегистрирован: 18.06.2014

Тут при такой низкой частоте все размеры большие - посчитал ETD39 с зазорм (!5мм) для 10А например одних ёмкостей на выходе должно быть под ~16000мКф, 20 витков 3x1мм провод.

Гантельку попробую перемотать, ту которую ставил для этой частоты не подойдет, там витков малова-то.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

может лучше копать в сторону увеличения частоты шима чем железо переделывать

minamonra
Offline
Зарегистрирован: 18.06.2014

Да я как могу так и копаю, кстати залил doper прошивку в avr910, прошил прямо из codevision, не трогая фьюзы - результат примерно тот же, так что нет пока идей по увеличению частоты тини.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

это результат упора работы на тиньке. может камень поменять? мега8 недорго стоит

minamonra
Offline
Зарегистрирован: 18.06.2014

Плата уже разведена, обидно, мега8 - не проблема, тут и десять 7219 пришли... Есть ещё парочка attiny2313.

Можно оставить этот вариант для токов не больше 2.5А.

Например для сухих 7Ач - Заряд до 13 вольт - 2-2.5А, дальше до 14.2 - 0.7А, потом качели 13.2-14.2 током до 0.01С.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну тогда искать как перестоить частоту шима. можно даже наобум редактировать регистры отвечающие за шим, в смысле значения записывать, а можно и даташить полистать

minamonra
Offline
Зарегистрирован: 18.06.2014

Насколько сейчас понял тактовая частота распределяется между частотой шим и разрядностью скважности.

32kHz получилось:

// Attiny45 32kHz PWM on PB0
DDRB =  (1<<DDB0);
TCCR0A=(1<<COM0A1) | (0<<COM0A0) | (1<<COM0B1) | (0<<COM0B0) | (1<<WGM01) | (1<<WGM00);
TCCR0B=(0<<WGM02) | (0<<CS02) | (0<<CS01) | (1<<CS00);
OCR0A=126; // Скважность 126 - 50%

Посмотрел меандр правильный.

s_1409997017_7499980_e199ba3c38.jpg

minamonra
Offline
Зарегистрирован: 18.06.2014

Attiny85, boards:

attiny85at16p.name=ATtiny85 @ 16 MHz  (internal PLL; 4.3 V BOD)
attiny85at16p.upload.maximum_size=8192
attiny85at16p.bootloader.low_fuses=0xC1
attiny85at16p.bootloader.high_fuses=0xD4
attiny85at16p.bootloader.extended_fuses=0xFF
attiny85at16p.bootloader.path=empty
attiny85at16p.bootloader.file=empty85at16.hex
attiny85at16p.build.mcu=attiny85
attiny85at16p.build.f_cpu=16000000L
attiny85at16p.build.core=tiny

с таким загрузчиком и кодом выше дают 64kHz.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну а теперь как? не греется так сильно?

minamonra
Offline
Зарегистрирован: 18.06.2014

Получше стало.

Нагрузил спиралью, ток 2.5А, фронты:

 

s_1410016781_7953967_747b188b96.jpg

Без радиаторов дальше нельзя.

s_1410016796_5037669_2fb4a00f85.jpg

Дроссель 16витков 2х0.64мм.

Пара узких мест - дорожка минусовая от шоттки до шунта нагревается, и диод 5408 слабоват тут (стоит в плюсе на нагрузку), переделывать буду. 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

3А макс. конечно диод слабоват

дорожки должна быть минимальной длины мосфет-диоды-дроссель-конденсатор. к сожалению в своей плате я такого сделать не смог. место ограничено

minamonra
Offline
Зарегистрирован: 18.06.2014

Схема на attinyXX, заряд + бесперебойник.

s_1410445235_1067595_61ce032b22.gif

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

А тини13 никак в этот проект не вписать?

minamonra
Offline
Зарегистрирован: 18.06.2014

Сначала на ней  делал, сейчас закончились просто.

HWman
HWman аватар
Offline
Зарегистрирован: 26.02.2013

minamonra пишет:

jeka_tm пишет:
и кстати зря картинки не на сервер сайта закачиваете. на хостингах скоро пропадет и увидеть через какие то время ничего нельзя будет

На itmages довольно долго храниться, на всякий случай:

Кнопку сброс можно на мк повесить, если на IBAT = 0 -> раз в ..... её дёргать.

А зачем диод VD4? Ведь стабилитрон в обратном включении все равно зашунтирует Ibat.

minamonra
Offline
Зарегистрирован: 18.06.2014

VD4 как развязка. Вообще при использовании схемы как зарядки узел с защитой - перестраховка, и сильной нужды как показала практика - нет, но на вход и на акк - предохранители обязательно тогда. Можно и сапрессор вольт на 15 перед акк.

minamonra
Offline
Зарегистрирован: 18.06.2014

Сегодня попробовал с MCP6242, - ну что сказать, с LM358 при попытке выставить минимальный ток зарядки у меня начиналась какая-то необъяснимая ерунда, тут же пожалуйста от 1 до 1024 (макс пока не проверял) без проблем, ток конечно зависит от делителя, дросселя, но  при значении тока 1 - 30ма у меня получилось.

Timon_1
Offline
Зарегистрирован: 15.03.2015

Добрый день. интересует ваша схема, но немного в иных целях. Хочу собрать умное зарядное для свинцово-кислотных автомобильных АКБ с функцией тренеровки (сначала заряжаем, потом разряжаем).  По схеме из 1 поста непонятно кто за зверь VD2 и параметры дросселя, а так же для чего они нужны.

В качестве второго варианта зарядного устройства рассматриваю регулировку через первичную обмотку трансформатора с использованием семистра. Есть ли в этом направлении какие-то наработки?

a5021
Offline
Зарегистрирован: 07.07.2013

VD2 это сдвоенный диод шоттки. Что-то типа такого

Я бы не стал запитывать эту схему от напряжением сильно выше 20 вольт. VT5 умрет.

Timon_1
Offline
Зарегистрирован: 15.03.2015

Кусок измерения тока можно заменить датчиком тока на основе ACS712. Бывают на 5А, 20А, 30А. по цене вроде как не шибко далеко от мощного резистора 0,1Ом.

И вопрос: Измерение напряжение через операционный усилитель имеет преимущества перед прямым подключением к ардуино через делитель напряжения? Если использовать ACS712, то тогда от операционного усилителя и обвязки можно б было отказаться

out-space
out-space аватар
Offline
Зарегистрирован: 11.03.2015

Мне кажется что преимуществ нет. Могу предположить что основная задача операционника мерить ток, а замер напряжение идет бонусом.

minamonra
Offline
Зарегистрирован: 18.06.2014

От этой схемы отказался, развитие ушло в сторону сетевого обратнохода, в итоге получился бесперебойник, кому интересно - тут.