Измеритель емкости аккумуляторов
Добавлено: 09 фев 2014, 12:46
Недавно тут вспомнил, что у меня скопилась куча разных аккумуляторов, и было бы неплохо их проверить, и уже наконец-то выбросить совсем умершие. Поэтому была собрана простенькая схема (а точнее эдакая приставка для отладочно-макетной платы) на 16f877а. Реализация - по сути, счетчик миллиампер за подсчитанное время, пока аккумулятор не сел до заданного напряжения + расчет внутреннего сопротивления, как (Uхх - Uнагр)/I, но точность при небольших токах и небольших падениях так себе, все-таки точность измерения 10мВ.
Работает просто - на portb висит 7-и битный цап, который служит источником опорного напряжения для классического "сточника" тока на оу и транзисторе. Через делитель напряжение измеряется ацп, сравнивается с минимальным (для выбранной химии), и принимается решение о вкл/выкл через подтягивание затвора к земле. (можно было бы и выключить цап, но напряжение смещения нуля на оу создало бы небольшой ток, так надежнее, да и универсальнее, так как плату я сделал сразу на 2 канала, просто программа пока еще не переделана, и работает только 1 канал). Параллельно работает счетчик времени (минуты) и емкости (+ток/10 каждые 6 минут), и раз в минуту расчет Rвнутр.
Управление энкодером для задания тока, старт/стоп, выбор химии, и не показанная на схеме кнопка выбора канала (на будущее, когда я пересилю лень и перепишу прогу).
Программа работает как "обрубок" RTOS, где таймером tmr0 создаются кванты времени (прерывание, каждую 1мс), внутри которых работают по приоритетам и по очереди различные процедуры, типа обновления дисплея, счетчика времени, емкости, опрос клавиатуры с защитой от дребезга и прочее. На дисплее показываются: иконка, сигнализирующая разряд (как иконка батарейки в сотовых, только на "опустошение"), химия, напряжение, ток, время/Rвнутр (каждые 2с сменяют друг друга), емкость.
Если будут интересны подробности - пишите, расскажу.
Схема и как это выглядит (сейчас стоит разрядка пары акков от ноутбука какого-то).
Программа:
Работает просто - на portb висит 7-и битный цап, который служит источником опорного напряжения для классического "сточника" тока на оу и транзисторе. Через делитель напряжение измеряется ацп, сравнивается с минимальным (для выбранной химии), и принимается решение о вкл/выкл через подтягивание затвора к земле. (можно было бы и выключить цап, но напряжение смещения нуля на оу создало бы небольшой ток, так надежнее, да и универсальнее, так как плату я сделал сразу на 2 канала, просто программа пока еще не переделана, и работает только 1 канал). Параллельно работает счетчик времени (минуты) и емкости (+ток/10 каждые 6 минут), и раз в минуту расчет Rвнутр.
Управление энкодером для задания тока, старт/стоп, выбор химии, и не показанная на схеме кнопка выбора канала (на будущее, когда я пересилю лень и перепишу прогу).
Программа работает как "обрубок" RTOS, где таймером tmr0 создаются кванты времени (прерывание, каждую 1мс), внутри которых работают по приоритетам и по очереди различные процедуры, типа обновления дисплея, счетчика времени, емкости, опрос клавиатуры с защитой от дребезга и прочее. На дисплее показываются: иконка, сигнализирующая разряд (как иконка батарейки в сотовых, только на "опустошение"), химия, напряжение, ток, время/Rвнутр (каждые 2с сменяют друг друга), емкость.
Если будут интересны подробности - пишите, расскажу.
Схема и как это выглядит (сейчас стоит разрядка пары акков от ноутбука какого-то).
Программа: