Pull to refresh

Comments 33

Субъективно лучше использовать дифференциальный АЦП и измерять между его ножками. Например, ads1115 — 16 бит, 4 канала. Можно и дифференциально измерять и относительно опорного. Не очень быстрый, но китайцы готовый breakout за копейки продают.
UFO just landed and posted this here
Делитель, с резисторами точной выборки.
Вот, я для проекта делал симуляцию. У меня только плечо делителя с переменным сопротивлением, но принцип тот же. Еще проще. В этом варианте источник напряжения будет переменным.



Симуляция

Полная схема:


Еще можно посмотреть библиотеки RunningAverage и RunningMedian для сглаживания.
Хотя это и дикий перебор для обычного измерения батареи.
UFO just landed and posted this here
Извините за простынь, спойлер поломал при редактировании.
А зачем? Все равно измерением только напряжения остаточную емкость можно определить с точностью плюс-минус пол слоновьей филейной части. Лишняя точность АЦП будет действительно лишней.
Если уж ставить дополнительный корпус, то есть спец микросхемы для контроля (в том числе) заряда батареи.
Google(«battery monitor IC»)
Беда в том, что почти нет fuel gauge в удобных для Arduino-поделок корпусах.
И правильно, что нет — там порог входа высокий.
Эх, жаль не универсально (ваш код будет работать только с вашим типом аккумуляторов).
У меня в домашних поделках примерно такой-же код, строго завязанный на литий (3.0-4.2В).
Ваша схема будет выжирать из аккумулятора 120мА*ч каждые сутки. Номиналы резисторов можно легко сделать 100кОм без особого ущерба точности. Я в своих схемах устанавливал даже мегаомные резисторы на делитель, но тут уже надо учитывать входное сопротивление АЦП. На нижнее плечо можно поставить конденсатор номиналом 1 мкФ, шумы уменьшатся.

Также, ваше предположение, что заряд(количество энергии в аккумуляторе в процентах) пропорционален напряжению, неверно. Для определения на глазок — сойдёт, а вообще точность будет, думаю, процентов 30. При использовании литий-ионных аккумуляторов уровень заряда у вас опустится до 50 процентов, зависнет на этом уровне некоторое время, и дальше резко уйдёт в ноль. См. google://"li-ion discharge graph".
Можно еще буферный операционный усилитель поставить в теории. Чтобы точно не отъедать энергию при измерении и не влиять на напряжение.
И сам делитель в данном случае имеет смысл делать 10:1 и использовать внутренний Vref атмеги (1.1v для 328'ой).
Можно измерять напряжение раз в минуту, скажем, поставив на цепь измерения запирающий полупроводник. Тогда можно использовать лубой номинал сопротивлений. Естественно, следует учесть падение напряжения на полупроводнике для точности.
А смысл городить лишние элементы? Выше уже подсказали как нужно правильно делать. Внутренний опорник и делитель на резисторах большого сопротивления.
Еще замечу, что называть деление на 1024 «переводом в десятеричную систему» неверно («десятичную», кстати). По сути это перевод в проценты (вы делите полученное значение на максимально возможное). Далее нужно просто умножить на 10, т.к. в вашем случае 100% — это 10 вольт. Ну, а потом поправочные коэффициенты добавить. Желательно несколько (по всей длине рабочего диапазона), с учетом нелинейной зависимости емкости от напряжения, как уже заметили выше.
Таким методом об уровне заряда аккумулятора не узнать ничего… и, как правильно сказали выше этот делитель потребляет энергию постоянно(и в конце концов испортит батарею). Если хотите измерять уровень заряда, то ищите по словам GasGauge/FuelGauge ic. Пост полная чушь(не завидую тому, кто не подумав повторит).

FuelGauge ic — крутая тема. В ноутбучных аккумуляторах стоит. По каким только параметрам не считает ёмкость. Даже саморазряд учтён, температурные зависимости, падение ёмкости в зависимости от цикла заряда-разряда. И много чего ещё. Не один день надо сидеть, чтобы понять
UFO just landed and posted this here
Посмотрите график разряда любого современного АКБ. Он выглядит примерно так http://img.fcenter.ru/imgmat/article/cases/Ni_MH_batteries/128780.png
То есть просадка напряжения будет в самом конце, когда емкости уже не осталось. А до этого, емкость будет уменьшаться, а напряжение — нет.
Это если совсем уж простым языком.
UFO just landed and posted this here
Ну не то, что бы совсем ничего, но точность будет невысока.
1) Зависимость нелинейна.
2) Ни у одного серьезного производителя я не встречал один «график зависимости напряжения от заряда». В даташитах присутствуют графикИ зависимости напряжения от заряда для различных температур/разрядных токов.
UFO just landed and posted this here
Линейно и не нужно. Важно, что монотонно убывающая.

Точность «полностью заряжен»/«севший в ноль» обеспечить получится.
устройство делается на один конкретный тип аккумуляторов

у одного конкретного аккумулятора будут разные кривые в зависимости от условий эксплуатации.
Уже правильно ответили + еще можно добавить, что кривая в графике смещается от температуры и поэтому дома будет 70%, а на улице 0%...
UFO just landed and posted this here
UFO just landed and posted this here
Пожалуйста...bq34z100-G1
4 диода + необходимость программирования и обучения(для одного типа АКБ можно делать единожды) + отсутствие балансировки и защиты + уже не 2,5 бакса. Но в этих задачах такой ценник это нормально(не стоит забывать цену датчика тока).
для ардуинщиков:
http://www.seeedstudio.com/wiki/Energy_Shield
Чтобы определить процент по напряжению, надо хотя-бы примерно учитывать далеко не линейную разрядную кривую и делать замеры при том токе нагрузки, для которого эта кривая задана (в идеале при нулевом). Потому что под заметной нагрузкой некоторому напряжению может соответствовать, например, уровень заряда в 70%, а без нагрузки — 30%. Можно, конечно, измерять еще и ток и делать поправку на внутреннее сопротивление аккумулятора, но оно плавает от температуры сильно, это костыли. И да, это справедливо для лития, для никеля по напряжению вообще почти нереально определить уровень заряда на участке от 20 до 80%, кривая очень плоская.

Для точности в три палки кое-как пойдет, если делать замеры только при минимальном потреблении.
Если хочется точнее, то можно, как уже говорили выше, взять спец-микросхему или, интегрируя в реальном времени потребляемый ток, считать непосредственно ампер-часы. С точностью до погрешности измерений (специальная микруха в общем-то так и делает).
Показания будут сильно врать в зависимости от температуры, деградации ёмкостей и тока разряда. Для проверки аккумуляторов на работе делал похожее устройство, считал через определённые промежутки времени протекающий во время зарядки ток, интегрировал показания и получал текущую ёмкость аккумулятора. На разряде также интегрировал ток и в совокупности с информацией о мгновенном напряжении получал более-менее достоверную информацию о заряде.
Если необходимо измерить напряжение питания самого МК, можно поступить еще изящнее и обойтись без делителя совсем: за опорное напряжение принять напряжение питания (неизвестное), а измерить относительное напряжение на внутреннем опорном источнике (известное заранее, обычно 1.1, как указали выше). Затем не хитрыми математическими операциями получить напряжение питания контроллера AVR.
Теперь подбираем при помощи вольтметра коэффициент, при котором voltage будет примерно равно реальному напряжению:
Так делать нельзя!

Реальное значение напряжения в Вольтах будет = (Полученное значение) * (Опорное Напряжение)/(дискретность АЦП)
Sign up to leave a comment.

Articles