Перейти к содержанию
    

Померять батарейку.

On 8/15/2020 at 12:18 AM, Сергей Борщ said:

Вы принципиально не читаете ответы на свои вопросы

...

Я так думаю, что ничего страшного нет. Ну поставит он делитель, потом уберёт.

Изменено пользователем Oymyacon

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/13/2020 at 9:32 AM, jenya7 said:

Мне нужно измерять состояние батарейки.

Тоже давно такой вопрос был и у меня.

Вот тема Xmega ADC , там в конце ILYAUL дал мне ценный совет.

Может и Вам подойдёт...

9 лет прошло! О ужас! :ireful3:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Полезно бы было ещё и среднюю точку между батарейками измерять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Oymyacon said:

Полезно бы было ещё и среднюю точку между батарейками измерять.

Любопытно, но бесполезно: батарейки все равно менять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я что то не совсем понимаю. по документации

Quote
  • 0 dB attenuation (ADC_ATTEN_DB_0) gives full-scale voltage 1.1 V

  • 2.5 dB attenuation (ADC_ATTEN_DB_2_5) gives full-scale voltage 1.5 V

  • 6 dB attenuation (ADC_ATTEN_DB_6) gives full-scale voltage 2.2 V

  • 11 dB attenuation (ADC_ATTEN_DB_11) gives full-scale voltage 3.9 V (see note below)

если я выбираю ADC_ATTEN_DB_11 я буду мерять full-scale voltage то есть VCC. Но в таком случае я всегда получу 4096(12-бит) на аналоговом входе так как референс всегда будет равняться VCC.

то есть мне надо выбрать скажем ADC_ATTEN_DB_6 и подать на аналоговый вход через делитель. я как то не вижу другого способа.

 

 

погуглив эту тему я вижу все ставят делитель. и на ESP32 форуме сказали нужен делитель. не знаю что Сережа так разнервничался.

 

 

Voltage-Divider.thumb.png.27b83ae3a6cb1219b27b3335b7f4a461.png

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, jenya7 said:

погуглив эту тему я вижу все ставят делитель. и на ESP32 форуме сказали нужен делитель. не знаю что Сережа так разнервничался.

В этом-то и проблема. Надо было не гуглить, а узнать из документации, можно ли измерить напряжение внутреннего ИОН с питанием в качестве опоры. Вы же принципиально нагугливаете готовые решения разной степени корявости. На картинке как раз такое - запредельно корявое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, aaarrr said:

В этом-то и проблема. Надо было не гуглить, а узнать из документации, можно ли измерить напряжение внутреннего ИОН с питанием в качестве опоры. Вы же принципиально нагугливаете готовые решения разной степени корявости. На картинке как раз такое - запредельно корявое.

у ESP32 нет внешнего референса, только внутренний который выбирается ADC_ATTEN_DB_0 - ADC_ATTEN_DB_11. вы не можете померять напряжение большее чем референс. или как?

это их решение

volt_mon.png.9bb5a087aa0f497abac9f6d64636ca5f.png

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quote

ESP32 integrates two 12-bit SAR ADCs. They are managed by five SAR ADC controllers, and are able to
measure signals from one to 18 analog pads. It is also possible to measure internal signals, such as vdd33.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 минут назад, jenya7 сказал:

референс всегда будет равняться VCC

Откуда такие фантазии? Опорное там 1,1 В и никакое другое, а "аттенюатор" — это переключаемый делитель на входе АЦП.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Plain said:

Откуда такие фантазии? Опорное там 1,1 В и никакое другое, а "аттенюатор" — это переключаемый делитель на входе АЦП.

аааа....а я понял это по другому.

то есть мне нужно учитывать этот делитель в вычислениях?

adc_reading = adc1_get_raw((adc1_channel_t)channel);

результат нужно умножать на делитель?

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 minutes ago, jenya7 said:

результат нужно умножать на делитель?

Ну вы, блин, даёте) Итак:

1. Вы не можете померить с помощью АЦП напряжение больше, чем его опорное. В идеале, лучше, чтобы максимальная амплитуда измеряемого напряжения была на 10 - 20% ниже, чем напряжение опорное. 

2. Вы понижаете амплитуду измеряемого напряжения (вашей батарейки) согласно пункту 1. Делаете с помощью резистивного делителя (два резистора).

3. Измеренное напряжение в кодах АЦП вы можете преобразовать, зная опорное и количество разрядов, в напряжение в вольтах.

4. Результат из п. 4 вы умножаете на величину, обратную коэффициенту делителя. Делитель ведь делит, т.е. уменьшает. А вам нужно результат математически увеличить до исходного, того. который мы поделили.

Пример.

1. Пусть опорное у АЦП (это просто пример, конкретное значение вычитываете в документации, обычно оно называется reference voltage) будет 2.7 В. Его разрядность 14 бит.

2. Ваша батарейка, если хорошо зарядилась (один li-po) элемент может иметь напряжение 4.2 В. Это больше почти в полтора раза, чем 2.7 В. Нужен делитель. Берём верхний резистор делителя 10 кОм, нижний 12 кОм. Такой делитель даст на выходе 2,3 В из 4.2 В. Т.е. его коэффициент передачи 0,54. У нас остаётся запас по шкале АЦП примерно 15%.

3. Допустим, после измерения мы получили код 8544, а 16383 это будет максимальный код, когда входное напряжение равно опорному. Здесь, конечно не всё так идеально, ведь у АЦП есть погрешности смещения, полной шкалы и т.п. Но пусть для простоты примера это будет так. Полученный код преобразуем в напряжение 1,4 В.

4. Но ведь перед АЦП у нас делитель, поэтому реальное входное будет 2,6 (оно может быть и близко к опорному и даже больше него).

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, haker_fox said:

2. Вы понижаете амплитуду измеряемого напряжения (вашей батарейки) согласно пункту 1. Делаете с помощью резистивного делителя (два резистора).

я так понял что делитель у этого камня внутрений.

как писал Plain

Quote

Откуда такие фантазии? Опорное там 1,1 В и никакое другое, а "аттенюатор" — это переключаемый делитель на входе АЦП.

и потом я покопался в документации

Quote

ADC attenuation parameter. Different parameters determine the range of the ADC. See adc1_config_channel_atten.

Values:

ADC_ATTEN_DB_0 = 0

The input voltage of ADC will be reduced to about 1/1

ADC_ATTEN_DB_2_5 = 1

The input voltage of ADC will be reduced to about 1/1.34

ADC_ATTEN_DB_6 = 2

The input voltage of ADC will be reduced to about 1/2

ADC_ATTEN_DB_11 = 3

The input voltage of ADC will be reduced to about 1/3.6

 

так шо, я делитель на PCB не ставлю?

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, aaarrr said:

Любопытно, но бесполезно: батарейки все равно менять.

Да нет, всё-таки кое-какая польза может быть, т.к. 1,5-Вольтовые батарейки имеют разброс по напряжению и заряду, который будет тем заметнее, чем ближе батарейки к издыханию.

Но упор делать на это конечно же не стоит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, jenya7 said:

так шо, я делитель на PCB не ставлю?

Вы документацией не пользуетесь? Что говорит datasheet на аналоговый пин? На него можно подать напряжение больше Vref и понизить? Если да, то попробуйте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, haker_fox said:

Вы документацией не пользуетесь? Что говорит datasheet на аналоговый пин? На него можно подать напряжение больше Vref и понизить? Если да, то попробуйте.

в этом то и суть attenuation. если я правильно понял.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...