Например TDA7294

Форум РадиоКот • Просмотр темы - Atmega88pa и ёмкость питающей батареи
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт апр 19, 2024 01:53:37

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 00:18:44 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 30, 2017 23:56:40
Сообщений: 27
Рейтинг сообщения: 0
Здравствуйте.
Перекопировал тут себе термометр.
Хочу добавить процент заряда питающей батарейки
От чего именно будет питаться еще пока не решил - крона, пальчиковые, дисковая.

МК на частоте 0-8мгц питается от 1.8-5.5V
Добавил вольтметер на основе внутренней опорной частоты 1.1V

экран питается от 5 вольт, мк 1,8-5,5 - как мне рассчитывать процент батарейки ? ( как понял экран будет тухнуть первым чем мк

atmega процент заряда батарейки, atmega 88pa заряд питающего элемента


Последний раз редактировалось kakawkin Вт янв 31, 2017 18:10:50, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 07:09:46 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 1
%_батарейки = К * измеренное_напряжение,
где К подберите нужное.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 08:56:13 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
pyzhman писал(а):
%_батарейки = К * измеренное_напряжение,
%_батарейки = К * (измеренное_напряжение-Umin)

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 15:59:55 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 30, 2017 23:56:40
Сообщений: 27
Рейтинг сообщения: 0
Z_h_e писал(а):
pyzhman писал(а):
%_батарейки = К * измеренное_напряжение,
%_батарейки = К * (измеренное_напряжение-Umin)

Первое решение, неверное
СпойлерА если поступить так:
1) в начале программы измеряем напряжение, к пример 5V
2) Устанавливаем минимальное
Т.к. у меня ватчдог по прерыванию будет, а не резет, значит эти значения будут сохраняться. А не будут только при полном обесточивании батарейки - при замене.
ВОзможно ли как-то указать по типу: max=read_adc(0); min=3.

Если простым математическим соотношением то между максимальной 5V и минимальным 3V не будет 100%
Или думаю можно каким-то образом реализовать к примеру такое:
1) Vmax - напряжение измеренное при старте программы ( к примеру 5 )
2) Vmin - минимальное рабочее напряжение ( у меня мой экран на какой-то микрухе, надо будет через резисторы самому посмотреть на скольки вольтах отключаться будет ) к примеру 3V
3) Curr=Vmax-Vmin - узнаём что запас напряжения для работы всей схемы имеем в 2 вольта
Массив volt[100]
Массив perc[100]
4) в цикле разбиваем число на 100 равных
Код:
a=Vmax-Vmin/100; // получаем из моего примера что 0,02 вольта будет 1 процент.
volt[0]=Vmin+a;// Получаем что при напряжение 3.002 будет равняться 1% заряда батарейки. Данный расчёт будет производиться
for (i=1;i<=100;i++)
{
    volt[i]=volt[i-1]+a; // прибавляем наш шаг к предыдущему значению.
}

Таким образом записываем массив из напряжения.
Запишем так же массив из процентов:
Код:
for (i=0;i<=100;i++)
{
    perc[i]=i; // забиваем весь массив от 0 до 100
}


В итоге имеем 2 массива: один с таблицей напряжений исходя из максимального и минимального и имеем таблицу процентов.

Т.е. эти расчёты будут производиться единожды при старте МК ( как пока это сделать не понимаю )
А в прерывании ватчдога указать что-то вида:
Код:
vdd=read_adc(0); // считываем вольтаж батарейки с 0 ноги PC0
for (i=0;i<=100,i++)
{
    if (vdd=volt[i]) { percent=perc[i]; break; } // А тут методом подбора сравнивается текущий вольтаж и вольтаж из батарейки. И если искомый вольтаж в 56 ячейки то собственно 56%
}



Но пока не понимаю как моя писанина будет вообще выполняться. Ведь основное тело программы выполняется всегда - а значит просто разместив это всегда будет показывать 100%/
Т.к. у меня ватчдог по прерыванию то резета не будет - мои данные сохраняться до тех пор пока я не замению батарейку обесточив микрокотроллер, либо не сядет батарейка.
Т.е. нужен на что-то упор что бы запускать мои вычисления при первом старте, но не последующем. Может в МК есть счётчик тактов - что бы до скольки-то работ тактов он запускался ( при первом включении ) а потом просто игнорировал.
Заранее всем большое спасибо, заранее извеняюсь - и не гоните ссаными тряпками

У меня в программе есть такой кусок:
Код:
ADCSRA=(1<<ADEN)

Т.е. можно сделать наверное так что бы проверял какая цифра установлена в ADEN - если 0 то выполнить ( по стандарту он ноль ). А потом уже забьётся единица - и выполняться не будет, до обесточивания мк


Второе, более правильное решение:
СпойлерИмеем входное напряжение - 10V
Имеем минимальное для МК - 5V

Сокращяем обе отняв 5 - получаем 2V и 1V ( отнимаем 1 вольт что бы стало ноль ), получаем 2V и 0V

2/100=0.02 - это 1%

1V/0.02=50%
1.5V/0.02=75%
2V/0.02=100%

Если подаваемый ток равен 7,5 вольта - надо отнять 5V ( т.к. мы отнимали выше ) получаем 2,5V и отнимает так-же еденицуб 1,5V/0
А 1.5V/0.02=75%


Добавлено after 5 hours 16 seconds:
Зделал таким способом:

Код:
adc=read_adc(0); // получаем значение
      Vcurr=((adc*1.1)/1023)*10; // вычесления на основе опорного напряжения 1,1V умсножив на делитель х10
      Vmax=5.5;
      a=(Vmax-Vmin)/100; //Узнаем сколько будет 1 процент
      rez_adc=(Vcurr-Vmin)/a;

Vmin=1.8 для моего МК
Vmax=5.5 для примера, надо как-то 1 разобъявить что-бы Vmax был равен вольтажу батарейки при старте


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 17:07:28 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
И какой размер кода на данные операции?

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 17:12:24 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 30, 2017 23:56:40
Сообщений: 27
Рейтинг сообщения: 0
Z_h_e писал(а):
И какой размер кода на данные операции?

имеешь ввиду сколько занимает места на самом мк ?


Program size: 1306 words (2612 bytes), 31,9% of FLASH - без кода
Program size: 1626 words (3252 bytes), 39,7% of FLASH - с кодом

А если математические операции совершить на ассемблере - станет ли код компактнее ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 18:25:40 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
kakawkin писал(а):
А если математические операции совершить на ассемблере - станет ли код компактнее ?
Как сделаешь. Но в принципе да, компактнее. Но тут асм не требуется. Достаточно работать с целыми числами и не делать лишних мат. операций. Например, если Вам нужны только проценты, зачем сначала переводить код АЦП в напряжение, а затем его в проценты.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 19:13:07 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 30, 2017 23:56:40
Сообщений: 27
Рейтинг сообщения: 0
Z_h_e писал(а):
kakawkin писал(а):
А если математические операции совершить на ассемблере - станет ли код компактнее ?
Как сделаешь. Но в принципе да, компактнее. Но тут асм не требуется. Достаточно работать с целыми числами и не делать лишних мат. операций. Например, если Вам нужны только проценты, зачем сначала переводить код АЦП в напряжение, а затем его в проценты.

Не совсем понимаю о чём ты. Хочу просветления.


Vmax=5.5; - тут я устанавливаю максимальное напряжение, дальше сделаю что бы при включение бралось напряжение ( при первом ) это и будем максималкой, ил иисходным
adc=read_adc(0); // получаем значение получаю значение с 0 ноги в переменную adc
Vcurr=((adc*1.1)/1023)*10; // обычный перевод цифр [0-1023] в напряжение
a=(Vmax-Vmin)/100; //Узнаем сколько будет 1 процент для последующего расчёта
rez_adc=(Vcurr-Vmin)/a; // сам расчет

Работаю не с целыми числами - т.е. и напряжение то может быть как минимум с одним знаком после запятой (3.6,3.5 и т.д.)

Просто лично я другой реализации вообще не вижу для моего случая.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 19:24:36 
Грызет канифоль

Карма: 9
Рейтинг сообщений: 80
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 251
Рейтинг сообщения: 1
Я чего-то не понимаю, о чем Вы. Например, если устройство питается от 6-ти последовательных аккумуляторов NiMH (грубо: полностью заряженные 1.4V * 6 = 8.4V), при напряжении 1V на банку (1V * 6 = 6V), аккумулятор уже разряжен практически полностью.

kakawkin, зависимость напряжение на батарейке (аккумуляторе) от остаточной емкости сильно не линейна, к тому же сильно зависит от температуры, от "старости" (если про аккумуляторы), от потребляемого тока.
Для примера: DURACELL Ni-MH Rechargeable Batteries
В данном примере видно, что (грубо) от 75% до 25% остаточной емкости напряжение практически не меняется. ИМХО выходов два:
1) Упрощенный "показометр", немного градаций (например три) практически "полная" батарея, нормально, разряженная (скоро устройство отключится). Достаточно задать несколько порогов напряжений, эти пороги зависят от типа батарей, которые Вы будете применять. Если окружающая температура может сильно "плавать", то ввести простую температурную коррекцию.
2) Более "честный" режим, т.е. оценивать остаточную емкость более точно - тут в двух "ассемблерных" командах объяснить не получится. К тому же Вы с химией еще не определились. И вообще, а может оно и нафиг не нужно :-)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 19:39:39 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 30, 2017 23:56:40
Сообщений: 27
Рейтинг сообщения: 0
viiv писал(а):
Я чего-то не понимаю, о чем Вы. Например, если устройство питается от 6-ти последовательных аккумуляторов NiMH (грубо: полностью заряженные 1.4V * 6 = 8.4V), при напряжении 1V на банку (1V * 6 = 6V), аккумулятор уже разряжен практически полностью.

kakawkin, зависимость напряжение на батарейке (аккумуляторе) от остаточной емкости сильно не линейна, к тому же сильно зависит от температуры, от "старости" (если про аккумуляторы), от потребляемого тока.
Для примера: DURACELL Ni-MH Rechargeable Batteries
В данном примере видно, что (грубо) от 75% до 25% остаточной емкости напряжение практически не меняется. ИМХО выходов два:
1) Упрощенный "показометр", немного градаций (например три) практически "полная" батарея, нормально, разряженная (скоро устройство отключится). Достаточно задать несколько порогов напряжений, эти пороги зависят от типа батарей, которые Вы будете применять. Если окружающая температура может сильно "плавать", то ввести простую температурную коррекцию.
2) Более "честный" режим, т.е. оценивать остаточную емкость более точно - тут в двух "ассемблерных" командах объяснить не получится. К тому же Вы с химией еще не определились. И вообще, а может оно и нафиг не нужно :-)

Я обязан! :))
И в правду, сильные изменения напряжения происходят только на отрезках [0-20][80-100].
Т.е. из-за нелинейности напряжения и ёмоксти по вольтажу смысла нету ( эх.... а строчки уже готовые :cry: )

А акими методами можно измерить оставшеюся ёмкость батареи не подскажешь ? Или данный метод требует именно "заточки" под определённый вид батареи


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Вт янв 31, 2017 20:03:58 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 1
Медали: 1
Получил миской по аватаре (1)
kakawkin писал(а):
Просто лично я другой реализации вообще не вижу для моего случая.
Код:
#define ADCmin 167 //код АЦП для 0%
#define ADCmax 512 //для 100%
#define ADCRange (ADCmax-ADCmin)
volatile uint8_t Procent;

.....

uint16_t ADCcurr=ADC;
if (ADCcurr<=ADCmin)Procent=0;
   else
if (ADCcurr>=ADCmax)Procent=100;
   else   
Procent = (uint16_t)(ADCcurr-ADCmin)*100/ADCRange;//%_батарейки = К * (измеренное_напряжение-Umin)

.....

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Ср фев 01, 2017 08:21:57 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2804
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18079
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 1
Медали: 1
Лучший человек Форума 2017 (1)
kakawkin писал(а):
Или данный метод требует именно "заточки" под определённый вид батареи
да. и причем, не путем умножения на некоторый коэффициент, а построение таблички на несколько точек. и чем больше точек, тем точнее.
и более того, при старении батареи табличка начнет давать ошибку.
тут будет более разумным сделать по этому варианту:
viiv писал(а):
1) Упрощенный "показометр", немного градаций (например три) практически "полная" батарея, нормально, разряженная (скоро устройство отключится).

_________________
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Ср фев 01, 2017 11:41:45 
Первый раз сказал Мяу!

Зарегистрирован: Пн янв 30, 2017 23:56:40
Сообщений: 27
Рейтинг сообщения: 0
Starichok51 писал(а):
kakawkin писал(а):
Или данный метод требует именно "заточки" под определённый вид батареи
да. и причем, не путем умножения на некоторый коэффициент, а построение таблички на несколько точек. и чем больше точек, тем точнее.
и более того, при старении батареи табличка начнет давать ошибку.
тут будет более разумным сделать по этому варианту:
viiv писал(а):
1) Упрощенный "показометр", немного градаций (например три) практически "полная" батарея, нормально, разряженная (скоро устройство отключится).

Спасибо - просто как-то не учёл нелинейность заряда относительно напряжению. А если по силе тока ? Как понимаю и сама схема будет простая и вроде поточнее


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Atmega88pa и ёмкость питающей батареи
СообщениеДобавлено: Ср фев 01, 2017 15:59:12 
Грызет канифоль

Карма: 9
Рейтинг сообщений: 80
Зарегистрирован: Чт ноя 06, 2014 13:09:06
Сообщений: 251
Рейтинг сообщения: 1
kakawkin, интерес чисто академический? Или для реального применения?

Если для реального применения, то проценты, "нарисованные" на экране, не сильно то и нужны. Например, есть у меня китайский термометр. Я не помню, когда я менял в нем батарейку то ли год назад, то ли два года назад. Если я увижу "осталось 30%" - это мне ровным счетом ничего не скажет:
1) я не помню 70% емкости "сожралось" за год или за два года. Т.е. я не смогу ответить на вопрос сколько еще устройство проработает (может около года, может полгода). А какая разница? Мне ведь только надо знать, что батарею пока менять рановато.
2) параметры батарей разных производителей могут "плавать". Мне что покупать только рекомендованные производителем устройства батареи?
3) В мой термометр вставляется элемент AAA, я мог поставить туда NiMH (мог поставить свежекупленный, мог поставить полудохлый), мог щелечную батарейку - разрядные характеристики у них различаются. Работает и ладно, когда скажет, что пора менять - заменю.

Если есть желание дать пользователю больше информации, нарисуй на экране напряжение батареи - пусть он сам решает, сколько ей жить осталось :-)

Если интерес чисто академический, то как подсказал Starichok51, приближайся к реальной характеристике:
СпойлерИзображение

Зеленая линия - линейный закон. Видно, что получиться именно "показометр", причем очень плохой "показометр".
Синяя (три линейных отрезка) - намного лучше, можно и на этом остановиться. По разрядным графикам видно, что температуру учитывать обязательно, иначе опять получится "показометр".
Можно добавлять точек, можно даже сплайнами апроксимировать. Только надо прикинуть-посчитать будет ли иметь эффект такое усложнение:
1) батареи разных производителей имеют разброс характеристик, если найти в интернете разрядные характеристики для батарей различных производителей - можно прикинуть, как они согласуются с типовой.
2) Вы считаете что опорное напряжение у Вас 1.1V, резисторы в делителе напряжения точные. А в даташите: Internal Voltage Reference Vref,min=1.0V, Vref,max = 1.2V, Vref,typ=1.1V (т.е. точность опоры примерно 9%). Резисторы в делителе у Вас 5%, 1% или еще какие? Как-то калибровать Ваш измеритель напряжения батареи собираетесь? Без специальных мер вы сможете измерить напряжение батареи с точностью порядка 10%-15%. Ваши проценты остаточной емкости батареи опять оказываются "показометром".
3) Если в батарее несколько последовательных элементов, то напряжение батареи - плохой показатель. Пример: устройство питается от 3xNiMH, пользователь установил два только что заряженных (1.4V) и один "дохлый" 1V. Такая батарея долго не проживет, а напряжение батареи 3.8V (1.27V на банку) - устройство покажет, что батарея практически полная.
4)...


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

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


Кто сейчас на форуме

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


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y