Зарядка всех аккумов по очереди автоматически

Mixanoid

Практически сразу после покупки вертолета столкнулся с необходимостью перетыкать аккумуляторы по мере их зарядки. Т.е. отлетал все 6 штук, а потом с интервалом в час их по очереди подключаешь к зарядке. Геморно. В связи с этим решено было изготовить приблуду, которая автоматически бы переключала аккумуляторы по мере их зарядки. Все просто как апельсин: берем один микроконтроллер и он по очереди через реле подключает аккумы к заряднику (у меня стандартный, е-скаевский) и смотрит на состояние лампочек на нем. В сам зарядник впаивается небольшой (4 канала) разъем: GND, +12V, зеленый светодиод и красный светодиод.

Само приспособление собиралось из того что было под рукой:

Два преобразователя стоят по той простой причине, что у меня не было сразу с 12 на 3.3 вольта. Сигналы для светодиодов берутся с лапки микросхемы внутри зарядника (5В) и делятся до 3.3В. S1 нужен для обнуления контроллера - это “ПУСК” так сказать… У меня использованы и биполярники и полевики т.к. хотел сначала обойтись без реле, одними полевиками, но потом не стал городить огород и купил релюшки, а полевики были уже припаяны - не пропадать же добру! =)

Релюшки приобрел первые попавшиеся, основной критерий - недорогие, двухканальные, 12В напряжение переключения, держат до 1А. Мне больше и не надо. Сначала думал, что они подключаются через резюк, оказалось - нет. Параллельно подключен светодиод, дабы было видно, какая релюшка в данный момент работает.

Микроконтроллер MSP430F1232 выбран по тому же принципу, что и стабилизаторы - то, что под рукой было.
Одна линия у батареек общая, остальные поключаются через реле с помощью толстого МГТФ’а
Даже не знаю, что еще обьяснить =))
Программа тоже писалась по-быстрому и тоже очень простая: Последовательный перебор релюшек с интервалом 5сек, если заморгал зелененький - останов, если загорелся - перебор далее. Если моргнул красный - срочный останов и отключение всех реле.
[codebox]#incl*ude “msp430.h”
;R15 - Счетчик
;R14 -
;R13 - temp было ли прерывание по входу
;R12 - Счетчик АКБ
;P1 - На АКБ
;P2.2 - Выход индикации ошибки
;P2.1 - Вход зеленого светодиода
;P2.2 - Вход красного светодиода
NAME main ;

PUBLIC main ;
ORG 0E000h

init: mov.w #0300h,SP ; Стек

main: NOP ; Основная программа
MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer

bic.b #00FFh, P1OUT ; Очищаем Port1
bic.b #00FFh, P2OUT ; Очищаем Port2
bis.b #00FFh, P1DIR ; Port1 весь на выход
bis.b #0004h, P2DIR ; Выход на P2.2
bic.b #0003h, P2DIR ; Вход на P2.1, 2.0
bis.b #0003h, P2IE ; Разрешаем прерывание P2.1, P2.0

;******************************************************************
mainloop:
eint
mov #0000h, R12 ; Счетчик АКБ = 0

nextacb
call #acboff ; Выключаем все АКБ
call #pause5s ; Пауза в 1 сек

inc R12 ; Увеличиваем счетчик АКБ
rla R12 ; Умножаем на 2…
rla R12 ; Умножаем на 4…
rla R12 ; Умножаем на 8…
add R12,PC ; …и смотрим:
nop
nop
nop
nop
bis.b #BIT0, P1OUT ; Включаем 8 АКБ
jmp afterchoose
nop
bis.b #BIT1, P1OUT ; Включаем 1 АКБ
jmp afterchoose
nop
bis.b #BIT2, P1OUT ; Включаем 2 АКБ
jmp afterchoose
nop
bis.b #BIT3, P1OUT ; Включаем 3 АКБ
jmp afterchoose
nop
bis.b #BIT4, P1OUT ; Включаем 4 АКБ
jmp afterchoose
;nop
bis.b #BIT5, P1OUT ; Включаем 5 АКБ
jmp afterchoose
;nop
bis.b #BIT6, P1OUT ; Включаем 6 АКБ
jmp afterchoose
;nop
bis.b #BIT7, P1OUT ; Включаем 7 АКБ
nop
nop
nop
nop
afterchoose:
rra R12 ; Возвращаем R12 к прежнему виду
rra R12 ; Возвращаем R12 к прежнему виду
rra R12 ; Возвращаем R12 к прежнему виду

mainloop2
clr R13 ; Очищаем флаг
call #pause5s ; И засекаем 5 секунд
bit.b #0001h,R13 ; Если моргает…
jnz mainloop2 ; …то продолжаем цикл

cmp #08h,R12
jne nextacb

// bit.b P1IN, #BIT1
// jnz mainloop

call #acboff

JMP $ ; Конец программы. Замыкание на себя.

;******************************************************************
; Выключение всех АКБ
acboff:
bic.b #00ffh, P1OUT ; Выключаем все АКБ
ret

;******************************************************************
; Пауза 1 секунда
pause1s:
call #pause200ms
call #pause200ms
call #pause200ms
call #pause200ms
call #pause200ms
ret

;******************************************************************
; Пауза 5 секунд
pause5s:
call #pause1s
call #pause1s
call #pause1s
call #pause1s
call #pause1s
ret

;******************************************************************
; Пауза 200 милисекунд
pause200ms:
mov #0C9A0h, R15
pause200ms1: dec R15
jnz pause200ms1
ret

inter: ; Прерывание от моргания светодиода
bit.b #0001, P2IFG ; Не красный ли моргнул?
jz inter2
call #acboff
bis.b #0004h, P2OUT ; Выход на P2.2
jmp $

inter2: ; Зеленый моргнул - зарядка не завершена
bic.b #00ffh, P2IFG ; Очищаем флаг прерывания
bis.b #0001h,R13 ; Устанавливаем флаг изменения напряжения на P2.1
reti

ORG 0FFFEh
DW init ; RESET
ORG 0FFE6h
DW inter ; P2IE

END
[/codebox]

Если кому влом компилить - вот уже готовый к заливке файл:

@E000
31 40 00 03 03 43 B2 40 80 5A 20 01 F0 C3 13 20
F0 C3 17 20 F0 D3 0C 20 E0 D2 10 20 F0 C0 03 00
0A 20 F0 D0 03 00 07 20 32 D2 0C 43 B0 12 A6 E0
B0 12 C2 E0 1C 53 0C 5C 0C 5C 0C 5C 00 5C 03 43
03 43 03 43 03 43 D0 D3 D9 1F 20 3C 03 43 E0 D3
D1 1F 1C 3C 03 43 E0 D2 C9 1F 18 3C 03 43 F0 D2
C1 1F 14 3C 03 43 F0 D0 10 00 B7 1F 0F 3C F0 D0
20 00 AF 1F 0B 3C F0 D0 40 00 A7 1F 07 3C F0 D0
80 00 9F 1F 03 43 03 43 03 43 03 43 0C 11 0C 11
0C 11 0D 43 B0 12 C2 E0 5D B3 FB 23 3C 92 C6 23
B0 12 A6 E0 FF 3F F0 C3 79 1F 30 41 B0 12 D8 E0
B0 12 D8 E0 B0 12 D8 E0 B0 12 D8 E0 B0 12 D8 E0
30 41 B0 12 AC E0 B0 12 AC E0 B0 12 AC E0 B0 12
AC E0 B0 12 AC E0 30 41 3F 40 A0 C9 1F 83 FE 23
30 41 D0 B3 47 1F 05 24 B0 12 A6 E0 E0 D2 3B 1F
FF 3F F0 C3 37 1F 5D D3 00 13
@FFE6
E2 E0
@FFFE
00 E0
q

Все это было собрано на макетке, ТЩАТЕЛЬНО проверено (липо не любят шуток с переполюсовкой и КЗ) и упаковано в какой-то корпус. Все замечательно работает, индицирует, заряжает, переключает, снова заряжает. Смотрится неэстетично по той причине, что имеющееся в корпусе отверстие для экранчика натолкнуло на мысль. Теперь жду пока придет экран, будем делать индикацию вольтажа на каждой банке и нормальную кнопку. =)

Sushkov_Andrew

Обалдеть, делайте на продажу 😃
Тема поднимается периодически, видать мысли у многих сходятся и проблема актуальна.
Я тоже спрашивал: rcopen.com/forum/f63/topic100401
В той ветке пара ссылок, тоже на рабочую конструкцию с соседнего форума. В общем я бы купил нормально сделанный, работающий образец. Ворох акков для 450го заряжать.

Denspb83

Я бы тоже с удовольствием купил. Автор - молодец.

Cosmojam

Да, тема отличная, автор молодец! Не сочтите за “советчика” но посмею выссказать мысль: всё-таки обойтись полевиками. Реле - не надежно громко и громоздко. Вместо них мосфеты поставить по 2 штуки на батарейку получится. Индикацию посадить на те же биполяры что в затворах полевиков - сразу и защита контроллера при пробое полевика и управление светодиодом.

Mixanoid

Да идея то была именно такая, но там зарядка идет странным образом - при включении на всех разъемах земля, а потом (при подключении аккума) видимо аккумовским напряжением что-то включается и начинается зарядка. Т.е. ток идет в две стороны - от банки к заряднику, а при включении процесса зарядки - от зарядника к банке. А как это сделать на полевиках, я не знаю.

Cosmojam

Полевику по сути пофиг в какую сторону ток будет идти по проводящему каналу, но у них у всех ещё между стоком и истоком в обратку стоит защитный стабилитрон, и через него в обратку сифонить будет - не гуд. Можно извратится со встречным включением 2-х полевиков, но это изврат.
Можно на симисторах сделать, кстати 😉 Только открывать его нужен больший ток, а следовательно биполяр по-мощнее.
Ещё вообще по-фирме такой девайс снабдить токовыми датчиками (мощный резистор с пол-Ома) и с него чтобы напруга снималась и в контроллер с АЦП. Каждый акк после симистора и токового датчика через нормально-замкнутое реле, и в случае скачка тока на акке, который в данный момент не заряжается чтобы отключались релюшками все акки. Огород получится но повышеная надежность и защита от пожара. Туда же по термопаре на акк и, как вы уже планируете, индикацию напруги на банке - соседи обзавидуются 😁

28 days later
Psw

Согласен, что закидать проблему баблом - прикольнее, Great Planes PolyCharge4 DC 4 Output LiPo Charger за $100 к примеру:

Просто сложность само дельного переключателя при его изготовлении “по уму” всё более приближается к изготовлению много канального зарядника.

RC-Flyer
Psw:

Согласен, что закидать проблему баблом - прикольнее, Great Planes PolyCharge4 DC 4 Output LiPo Charger за $100 к примеру:

Просто сложность само дельного переключателя при его изготовлении “по уму” всё более приближается к изготовлению много канального зарядника.

Три раза плюс! Сам пользую такой уже больше года, заказал себе еще один. Заряжает ровно в 4 раза быстрее, чем предложенный девайс, а учитывая одноамперные реле , тр раз в 10, наверное 😃
Предпочитаю использовать проверенные и отлаженные промышленно изготовленные девайсы, а свои дизанерские способности применять по прямому назначению - зарабатыванию денег 😃 Так оказалось эффективнее.  Хотя руки иногда чешутся… (тут меня закидают тапками… 😃 )
ЗЫ: автору огромный респект! И как вы время на это находите… 😃