Basic для PIC микроконтроллеров Пн, 21.05.2012, 15:03



Переводчик/Translator

   
Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Swordfish
Проекты на PIC, программы для которых написаны на Basic в программе SwordFish
Proton PICBasic
Проекты на Proton+ PICBasic.
Microbasic
Интересные проекты на Microbasic
PICBasicPro
Проекты пользователей на PIC микроконтроллерах, программы для которых написаны в PICBasicPro
PIC Simulator IDE
Программы, написанные в PICSimulatorIDE
Bascom
Данный раздел предназначен для размещения статей, относящихся к разработкам на АВР на Basic в среде Bascom
Ассемблер, Си
Проекты на ассемблере или Си
Полезные материалы
Здесь размещаются статьи об электронике в целом. Полезные приемы и способы решения различных задач.

Облако тегов
Протон термометр авто ик Brestart flowcode дисплей Давление света ЗУ мнемоники компилятор графическое программирование команды Ключ подключение interrupt ошибки печатная плата box Library Call BCD плата Swordfish IR Decode Программирование Pascal Logger picbasicpro терморегулятор статья полезные материалы protonheadermaker онлайн инструменты утилиты mikrobasic протеус даташит АЦП Ассемблер IR NEC система исчисления КМОП рисование CF_INIT TMR0 стабилизатор ds18B20 Термологгер примеры хилинский datasheet ёмкость Woodman блок питания Программа ASIN Asm...Endasm LM35 INT PDU справка PureBasic MicroBasic онлайн-инструменты пульт ДУ Измерение баском разводка Nokia 3310 книги термостат Ультразвук свет PICBASIC программы USB Basic разработка Plugin сервис PROTON таймер порт Button programmer светодиодный индикатор резонатор кнопки процессор HID задержка Siemens PIC статьи Pic Basic com порт температура лекарство Конвертер MPLAB разрешение паяльная станция Delphi подсчет дизайн rfPIC Проекты Busin picsimulatoride Плагин Branch сигнализация ATX таймеры пример compiler кнопка bascom led ремонт ИК NEC Visual Basic 6 Bstop схема разводка плат proteus LCD lдисплей библиотеки отладчик датчик справочник прибор IR симулятор динамическая индикация бейсик для PIC прерывания акустика ASCII бейсик PIC16F84 AVR замок PCB отладка измерения интересное Visual Basic программатор

Главная » Статьи » Статьи и проекты » 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) | Автор: Андрей Соколов E W
Просмотров: 894 | Комментарии: | Теги: АКБ, ЗУ | Рейтинг: 5.0/2
Всего комментариев: 0

Форма входа
Логин:
Пароль:


Статистика


Онлайн всего: 5
Гостей: 4
Пользователей: 1

tesla88

Поиск

Copyright Slazonger © 2012Создать сайт бесплатно