Ох уж эта извечная проблема знать сколько же энергии осталось у тебя в аккумуляторе.
Хотелось бы еще услышать когда разрядится батарея, и еще лучше подать какой нить управляющий сигнал для выключения нагрузки.
Как всегда в Интернете транзисторные схемы 80х годов, которые пройдется отлаживать.
На улице 21 век,и если посчитать стоимость дискретных деталей-то можно купить 2-3 микроконтролера, который справятся с более сложными задачами, и будут надежнее работать.
Беда была в том что мне как то не приходилось работать с ADC микроконтроллеров, этот момент меня заставлял извращается с «рассыпухой» не один день.
Любому терпению приходит конец.
За день был написан исходный код программы, и собрана печатная плата. Я был счастлив до безумия что этот «камень приткновения» исчез.
Собственно все начинается с рисования схемы:
Собственно постановка задачи:
-индикация уровня напряжения на 12в батареи
-звуковая сигнализация
-выдача управляющих сигналов, при полном разряде
Индикация сделана 8ми шаговая, из целях уменьшения размеров печатной платы.
При желании можно сделать хоть 16 шаговую.
Если напряжение выше порога то загорается соответствующий светодиод, если ниже то гаснет.
Как только напряжения на батареи достигнет «красной зоны» 10.5в, начинает пищать бузер и мигать два оставшиеся светодиода.
Если напряжение опускается ниже 9.8В,прекращается звуковой сигнал, и выдается один короткий импульс на выводы PB1,PB0.
По умолчанию на PB1,PB0 присутствует лог «1», при достижение порога, сменяется на лог «0» длительностью около 0.06с.
Далее если происходит рост напряжения, то только при достижение порога в 10.5в, возможна очередная смена сигналов на PB1,PB0.
Такой гестерезис был сделан для корректной работы моей схемы выключения/включения нагрузки.
Шаги индикации напряжения:
«Зеленая зона» 13.8В , 13.3В ,12.7В
«Желтая зона» 12.2В , 11.7В , 11.1В
«Красная зона» 10.5В , 9.8В
Возможно кто то не согласится с корректностью этих цифр,но как грится- вам калькулятор в руки)
Возможно небольшое отличие напряжений связанное с погрешностью АЦП и погрешностью расчетов автора.
Цикл индикации повторяется где то через каждые 0.2-0.5с(по прерыванию TC1).Это сделано что бы исключить реакцию на импульсные помехи.
Так же добавлен watchdog,на случай если микроконтроллер вдруг сдуру повиснит.
Управляющая программа написана на асемблере,в среде AVR Studio 5.
Шаги напряжений легко изменить на любые вами понравившиеся, даже не владея навыками программирования. Для этого вам нужно открыть исходник, и поменять в нем значения, на те которые вам нужны и заново скомпилировать файл прошивки.
А именно-значения напряжений там заданы в 16-тиричной системе, допустим 13.8в-3B0, 11.1В-2F4 и т.д.
Логику этих цифр не понять, если не заглянуть в даташит на atmega8,там мы находим формулу:
Где Vref=2.56В для нашего микроконтроллера, Vin-напряжение на входе АЦП.
Формула это хорошо, но что с ней делать не ясно.
Итак задаемся целью узнать магическое число ,при напряжение на входе устройства равным 6в.
Так как у нас стоит делитель R1,R2, то для начала нам нужно узнать –а сколько же вольт будет на выводе PC3? Тут нам поможет закон Ома.
R=R1+R2;
I=U/R
Uл=R2*I
где R-общее сопротивления делителя, в данном случае 19.3к,I-ток через резисторы,Uл-напряжение на лапе PC3.
Итак:
I=6/19300=0.0003108А
Uл=1.02564В
Такие точности нам не нужны, можно округлить,можно просто отбросить,вобщем теперь мы знаем что на лапе микросхемы у нас 1.03в.
Теперь пользуемся формулой из даташита(ту которую я привел выше):
(1.03*1024)/2.56=412.
Вполне человеческое число. Теперь ищем у себя в компьютере калькулятор-инжинерный вид и переводи в 16ричную систему, получаем 19С .
Магическое число найдено, меняем на него значение в исходнике(по образу и подобию),и радуемся.
Этот индикатор вполне подойдет и для 6вольтовой батареи, и для какой нить сборки Ni-Cd, Ni-Mh аккумуляторов. Потребуется только пересчитать «пороговые числа»,подобрать другие номиналы R1,R2,и обеспечить микроконтроллер питанием- что бы он и не сгорел, и завелся. R1,R2-считаются исходя из того что при самом максимальном напряжении на входе делителя, на его выходе должно быть не более 2.56в. У меня что то около 15в.
Потребляемый ток в режиме индикации около 40мА,без индикации 10мА.
Дает о себе знать LM7805,но все таки 10мА не так страшно, если у вас ток в нагрузке 5А ))
Конструкция и детали:
Плата разведена в Sprint Layout.Единсвенно-на фотке со стороны дорожек вы можете увидеть p-n-p транзистор, который не захотел закрыватся по причине моей не внимательности, он был удален и поставлен n-p-n как на схеме, с платы так же этот участок был удален. Еще там распаян резистор и конденсатор на выводе RESET микроконтролера,точно не помню нужны ли они,но впаял на всякий случай.
Бузер BZ1-откуда то выпаян, светодиоды оттуда же. Самовосстанавливающийся предохранитель FZ1-0.25А,собственно я его туда поставил потому что на его место плохо стал 2х ватный резистор (не учел его размеры резистора ,возможна ситуация КЗ на корпус LM-ки)
Фузы никакие программировать не нужно, все стоит на заводских. Если уж захочется что бы пикало быстрее-можно поставить тактовую частоту в 2мгц или 4,это уже на ваше усмотрение.
Фотки устройства:
Видео работы
http://www.youtube.com/watch?v=b6FNs-dnu98&feature=feedu
http://www.youtube.com/watch?v=B3Jpp2sisRE&feature=feedu
Думаю статья поможет тем кто не хочет городить неделями транзистор к транзистору, и подпирать резистором)) А главное микроконтроллер дешевле LM3915!!! (Правда, помимо МК вам понадобится еще программатор и компьютер, чтобы запрограммировать контроллер, но автор почему-то не включает это в стоимость. Прим. Кота.)
Файлы:
Печатная плата
Прошивка с исходником