Заготовка для поделок на pic16f676 + дисплей nokia 3310 + энкодер Термометр на китайском дисплее от nokia 3310 и pic12f675
Создано: 15-03-2012 23:11:22 изменено: 21-12-2012 17:31:32  Метки: electronic pic
новая весия
В последнее время для устройств с батарейным питанием все чаще используются LiOn аккумуляторы. Вот и я надергал элементов 18650 из старых батарей от ноутбуков, собрал элементарную зарядку на lm317 (кстати тут на выходных моделировал в протеусе защиту для них во время зарядки - если доделаю выложу). Однако при всех преимуществах литья для долгой службы надо следить за напряжением во время разряда - должно на элементе оставаться не меньше 3 вольт, иначе можно их быстро выбросить...


В железе пока не опробовал, моделирование в протеусе не всегда соответствует железу увы...
Вот архив с моделью, hex-файлом и исходником.
Поясню:
При включении или резете загорается столбик из светодиодов соответствующий половине напряжения на входе ( у меня 2 банки последовательно). Зажигаем на время в секундах в ячейке 3 eeprom. В первых трех хранятся коэффициенты срабатывания светодиодов, соответствующие напряжениям 4, 3.5 и 3 вольта. Соответственно можно эти коэффициенты поменять под свои элементы и/или напряжение питания. adc настроен на 8 бит оцифровки, т.е. 255 = напряжению питания. После того как замер напряжения показан - pic уходит в цикл, 2.3 секунды "спит", потом меряет напругу, если оно стало меньше 3 вольт, начинает моргать красный светодиод.
update:
Собрал в железе, для более простой разводки поменял местами некоторые пины, поправил исходник. Схему не рисовал - по исходнику понятно что куда подключается:
'@device = pic12F675, intrc_osc_noclkout, wdt_on, mclr_on, protect_off
    led_full      var     GPIO.0
    led_half      var     GPIO.1            
    led_low     var     GPIO.2
    led_empty      var     GPIO.5
    trisio=%00010000 ' отключаем GPIO.4
    ANSEL = %00111000 ' внутренний RC генератор, AN3
    adcon0=%00001101 '  опорное - питание, An3, модуль АЦП включен
    
    CMCON = 7 
    define adc_bits 8 
    define adc_clock 3 
    define adc_sampleus 50 
    led_empty = 1
    led_low = 1
    led_half = 1
    led_full = 1
    adval var byte 
    full var byte
    half var byte
    lowb var byte
    show var byte
    
    data @0,204,178,153,3  ' значения для 4, 3.5, 3 вольт (full,half,low) (51 для 1 вольта)
    
    read 0,full
    read 1,half
    read 2,lowb
    read 3,show         ' сколько секунд показывать напряжение
    adcin 3, adval
    if adval < lowb then led_empty = 0
    if adval > lowb then led_low = 0
    if adval > half then led_half = 0
    if adval > full then led_full = 0
    pause 1000*show          ' показывает напряжение на батарее и ждем 3 секунды
    led_empty = 1
    led_low = 1
    led_half = 1
    led_full = 1
main:   nap 7               ' спим 2.3 секунды
        adcin 3, adval
        if adval > lowb then main
avaria: led_empty = 0
        nap 5
        led_empty = 1
        nap 5
        goto avaria
end 

2531 просмотров комментировать

Заготовка для поделок на pic16f676 + дисплей nokia 3310 + энкодер Термометр на китайском дисплее от nokia 3310 и pic12f675