Easyelectronics.ru

Электроника для всех
Текущее время: 27 сен 2020, 01:40

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Индикатор заряда батареи
СообщениеДобавлено: 09 апр 2015, 15:09 
Только пришел

Зарегистрирован: 21 фев 2014, 14:02
Сообщения: 28
Есть устройство, которое питается от двух элементов типа АА (аккумуляторы или батарейки). Хочу показывать пользователю уровень заряда батареи значками (у меня, например, 8 значков с индексами от 0 до 7). Контроллер измеряет напряжение на батареях в вольтах и процедура считает "индекс" заряда.
Сейчас используется следующая процедура:

Код:
#define LOWLEVEL_VOLTAGE_WARNING   2.1f // напряжение, минимально допустимое для батареи
#define NORMAL_VOLTAGE         3.0f // напряжение 100% заряда
#define BATTARY_LEVELS_COUNT      7

void ShowBattaryLevel(float bat_voltage)
{
      int battary_index = BATTARY_LEVELS_COUNT * (bat_voltage - LOWLEVEL_VOLTAGE_WARNING) / (NORMAL_VOLTAGE - LOWLEVEL_VOLTAGE_WARNING);
      
      if (battary_index > BATTARY_LEVELS_COUNT) battary_index = BATTARY_LEVELS_COUNT;
      if (battary_index < 0) battary_index = 0;

      DrawBattaryLevel(battary_index);
}


Хотелось бы её улучшить по следующим причинам:
1. Если вставить полностью заряженные аккумуляторы, то напряжение будет где-то 2,6 вольта, и индикатор показывает, что батарея наполовину разряжена, хотя это не так.
2. Если дефайн NORMAL_VOLTAGE уменьшить до 2,6 вольта, то при использовании батареек значек будет бОльшую часть времени показывать полную зарядку и потом за короткое время пройдет все этапы разрядки.
3. В связи с нелинейностью процесса разрядки первые несколько делений значка убывают быстро, потом на середине напряжения держится долго и под конец снова быстро убывает до полной разрядки.

Может кто-нибудь уже подбирал апроксимацию зависимости няпряжение/"время работы в попугаях"? Подскажите какую использовать функцию для более точного приближения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Индикатор заряда батареи
СообщениеДобавлено: 09 апр 2015, 15:26 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2880
Ставят специальные контроллеры, которые по умным алгоритмам, усреднениям, фильтрам,некоторые по скушанным Ваттам, рассчитывают остаток. Все остальное - показометры, которые лишь оценочно, основываясь на напряжении, показывают уровень заряда. Подключили что-либо мощное, напруга просела условно на 0.2В - разве аккум разрядился? Вовсе нет. Либо вам надо калибровать каждую батарейку, снимать калибровочную кривую, на основании которой уже брать значения для ваших 7-ми делений. Еще желательно ввести гистерезис для переключений, небольшой, где-нибудь 0.1-0.2В, чтобы значения не прыгали когда напряжение может чутка подняться, или просесть. Посмотреть специальные микры от TI можно здесь http://www.ti.com/lsds/ti/power-managem ... ducts.page . Подобные стоят в каждом планшете/телефоне. Для примера, когда я перевел планшет в машине на питание от стабилизированных 4.1В, он у меня все равно "разряжался" - т.е. он реально не отслеживал напругу, а считал именно потребленные Ватты. Перезагружаешь - опять 78%. По мере работы заряд падает, хотя там реально всегда 4.1В.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Индикатор заряда батареи
СообщениеДобавлено: 09 апр 2015, 15:38 
Только пришел

Зарегистрирован: 21 фев 2014, 14:02
Сообщения: 28
Для "палок" на дисплее сильно высокой точности и не особо надо. Думаю чуть подправить его чуть более точной, чем линейной функцией и уже будет достаточно. Нагрузка в момент измерения примерно одинаковая и постоянная, т.к. замер происходит каждый раз в одну фазу цикла работы.
За ссылки спасибо, но данный подход требует применение встроенного аккумулятора с известной емкостью и напряжениями, мне наверное не подойдет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Индикатор заряда батареи
СообщениеДобавлено: 09 апр 2015, 15:59 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2880
И, лучше вместо вычислений, задать жесткие дефайны, которые всегда можно подправить. К чем ненужные умножения?) Даже напряжение можно не считатать, а задавать дефайном именно значение АЦП - быстрее будет. Нечто вроде:
Код:
#define VREF            3.3F            //опорное
#define ADC_RESOLUTION      1024.0F            //разрядность АЦП
#define RES_DIVIDER         (130.0F/100.0F)      //Резисторный делитель

#define ADC_FACTOR         (ADC_RESOLUTION/(VREF*RES_DIVIDER))               //коэффициент


#define BATT_EMPTY         ((unsigned int)(3.0F*ADC_FACTOR))      //   0%


Ну и можете добавить свои:

#define BATT_20 ((unsigned int)(3.4F*ADC_FACTOR)) // 20%

и затем, уже в коде:
Код:
if (ADC < BATT_EMPTY)
{
    //аккум разряжен, что-то делаем
}

где ADC - прочитанное значение с АЦП


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Индикатор заряда батареи
СообщениеДобавлено: 09 апр 2015, 17:52 
Только пришел

Зарегистрирован: 21 фев 2014, 14:02
Сообщения: 28
Обработка низкого уровня напряжения и так на уровень выше, до прочих вычислений. Я данный момент не привел. Выигрыш можно получить только отбросив вычисление напряжения в вольтах, но это экономия всего на одном умножении. Не настолько ощутимо, чтобы стоило заморачиваться, но спасибо за подсказку. Подскажите, по вашему мнению сколько вольт должно быть на двух элементах АА неизвестного типа, чтобы говорить о факте "батарея полностью заряжена"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Индикатор заряда батареи
СообщениеДобавлено: 10 апр 2015, 07:09 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2880
У щелочных батареек - одно напряжение, у NiMh - другое, у NiCd - опять другое. Универсального не будет. Смотрите, что будет чаще использоваться, все остальное будет слегка подвирать. Я бы сделал для обычных батареек, у которых выше 1.5 считается заряженным.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB