Главная » Статьи » Proton PICBasic

ЗУ для 2 АКБ от фотоапарата
Принесли на ремонт ЗУ



 Во время ремонта был получен отрицательный результат . ТО БП не запускался , то управление не работало . Было принято решение - сделать свое . После поисков в сети остановился на этом 



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

 Так как еще не работал с PIC12 , остановил свой взгляд на PIC16F676. Когда то купленым под другой проект 

 С помощю Matrix252005 ( Николая ) PIC был сконфигурирован и я приступил к работе. 

 Был выбран такой алгоритм работы: если поключен АКБ , напряжение двоих АКБ больше 1,2В и нажата кнопка Старт 

 переходим в подпрограмму Разряда, а оттуда в зависимости от напряжения 

 в подпрограмму Предзаряда или Заряда.

 При выбраном токе заряда время до окончания примерно 9 часов. 

 В любом режиме контролируеться напряжение АКБ , если стало меньше 1,2В переход на Старт 

 В результате была нарисована схема. Отличием от оригинальной схемы является только применение микроконтроллера. 

 Изменить ток заряда можно, изменив номинал разистора R1 в ту или иную сторону . Обязательно также скорректировать и время заряда. На LM317T собран обычный стабилизатор тока. IRF540 ключ на разряд АКБ. Тоесть появилась 1 на затворе разряжаем АКБ. Реле добавлено для отключения АКБ при пропадании сети.

 Везде в программе, где указано напряжение имееться ввиду что это напряжение двоих аккамуляторов соедененных последовательно . 

 Пользоваться ЗУ просто. Включили в сеть, подсоединили АКБ и нажали кнопку Старт. Если в любой момент вытащить АКБ, устройство вернется в начальное состояние.



Схема:

.

 
Код: 

Код

Device = 16F676 '  
Config WDT_off, pwrte_on, mclre_off, intrc_osc_noclkout  
Xtal = 4 '  

'-------------------------- Натройки АЦП ------------------------------------  
Declare Adin_Res 10 '  
Declare Adin_Tad FRC '  
Declare Adin_Stime 50 '  

'-------------------------- OPTION_REG ----------------------------------------  

Symbol PS0 = OPTION_REG.0 '  
Symbol PS1 = OPTION_REG.1 '  
Symbol PS2 = OPTION_REG.2 '  
Symbol PSA = OPTION_REG.3 '  
Symbol T0SE = OPTION_REG.4 '  
Symbol T0CS = OPTION_REG.5 '  
Symbol INTEDG = OPTION_REG.6 '  
Symbol NOT_RBPU = OPTION_REG.7 '  

'-------------------------- INTCON --------------------------------------------  

Symbol RBIF = INTCON.0 '  
Symbol INTF = INTCON.1 '  
Symbol T0IF = INTCON.2 '  
Symbol RBIE = INTCON.3 '  
Symbol INTE = INTCON.4 '  
Symbol T0IE = INTCON.5 '  
Symbol PEIE = INTCON.6 '  
Symbol GIE = INTCON.7 '  

ADCON0 = %10000000  
ADCON1 = %00110000  
ANSEL = %00000001  
CMCON = %00000111  

TRISA = %00000001  
TRISC = %00000001  

Dim BAT As Float ' значение АЦП  
Dim VA As Float ' напряжение АКБ  
Dim BIG As Dword '  
Dim BIG1 As BIG.HighWord '  
Dim Sec As Byte ' секунды  
Dim Minute As Byte ' минуты  
Dim Hour As Byte ' часы  
Symbol St = PORTC.0 ' Кнопка Старт  
Symbol CHARGE = PORTC.1 ' Заряд  
Symbol DISCHARGE = PORTC.2 ' Разряд  
Symbol SVEND = PORTC.3 ' Окончание Заряда  

'-------------------------- Настройка TMR0 --------------------  
OPTION_REG = %10000111  
TMR0 = $00 ' значение TMR0  
T0IE = 1 ' разрешение прерывания 3906,250000 Гц  
GIE = 1 ' разрешение глобального прерівания  

On_Interrupt GoTo Int_Label  
'Sec = 0  
'--------------------------Страрт -------------------------  
Start:  
BAT = ADIn 0 ' данные с 1 канала АЦП заносим в BAT  
VA = BAT / 204.8 ' получаем 5 В  
Sec = 0 ' останавливаем таймер  
If VA > 1.2 And St = 0 Then GoTo ROZRYAD : Else : GoTo Start ' подключили АКБ и нажали кнопку  
GoTo Start ' возврат  
End '  

'-------------------------- Прерывания--------------------------  

Int_Label:  
Context Save '  
If T0IF = 1 Then BIG1 = BIG1 - 1 '  
If BIG < 0 Then BIG = BIG + 1000000 : Inc Sec '  
T0IF = 0 '  
Context Restore '  
End  

'-------------------------- Главная программа -------------------------  
PREDZARYAD: ' предварительный заряд  

BAT = ADIn 0 ' данные с 1 канала АЦП заносим в BAT  
VA = BAT / 204.8 ' получаем 5 В  

If VA < 1.2 Then GoTo Start ' нету АКБ  
If VA < 2.0 Then High CHARGE : DelayMS 2000 : Low CHARGE : DelayMS 2000 ' заряжаем импульсами по 2 сек  
If VA > 2.0 Then GoTo ZARYAD ' достигли 2,0В , переход в Заряд  

GoTo PREDZARYAD ' возврат  
End  

ZARYAD:  

BAT = ADIn 0 ' данные с 1 канала АЦП заносим в BAT  
VA = BAT / 204.8 ' получаем 5 В  
If VA < 1.2 Then GoTo Start ' нету АКБ  
If VA < 2.0 Then GoTo PREDZARYAD ' меньше 2,0 , переход в Предзаряд  
If VA > 2.0 Then High CHARGE : Else : Low CHARGE ' включаем Заряд  
If VA > 3.0 Then Low CHARGE : GoTo Start ' вытащили АКБ , возврат в начало  

If Sec = 60 Then Sec = 0 : Inc Minute ' инкрементируем минуты  
If Minute = 60 Then Minute = 0 : Inc Hour ' инкрементируем часы  
If Hour = 9 Then GoTo CHARGEEND ' дотикал таймер , окончание заряда  
GoTo ZARYAD ' возврат  
End '  

ROZRYAD:  

BAT = ADIn 0 ' данные с 1 канала АЦП заносим в BAT  
VA = BAT / 204.8 ' получаем 5 В  
If VA < 2.05 Then Low DISCHARGE : GoTo ZARYAD ' меньше 2,05 в Заряд  
If VA > 2.2 Then High DISCHARGE ' больше 2,2 в Розряд  
If VA < 1.2 Then GoTo Start ' нету АКБ  
GoTo ROZRYAD ' возврат  
End  

CHARGEEND:  

BAT = ADIn 0 ' данные с 1 канала АЦП заносим в BAT  
VA = BAT / 204.8 ' получаем 5 В  
If VA < 1.2 Then GoTo Start '  

Low CHARGE ' выключаем Заряд  
Low DISCHARGE ' выключаем Разряд  
SVEND = 1 ' Окончание Заряда  
Sec = 0 ' скидываем в ноль  
Minute = 0 '  
Hour = 0 '  

GoTo CHARGEEND ' возврат  
End  



Начальные настройки были получены с помощю плагина Протон Хедер Мейкер

 Возможны невыявленые глюки и возможно будет доработка кода. 

 Остальные данные и обсуждение в этой ветке

 Успехов в повторении и всего лучшего. 

 Приношу благодарность Matrix252005 ( Николаю ) за помощь в данном проекте . 

 Зарядка собрана и уже два месяца работает у клиента.
 






Категория: Proton PICBasic | Добавил: Andriy76 (21.11.2011)
Просмотров: 5719 | Теги: зарядное устройство, АКБ, pic16f676, фотоаппарат | Рейтинг: 5.0/4
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]