• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь ESP-07 + уровень заряда аккумулятора

chiffa

New member
Всем доброе время суток. стала задача контролировать уровень аккумулятора, по которому питается модуль.
Модуль: ESP-07
IDE: Arduino
Батарея: 3.7 LiPo

Подключил по схеме:
upload_2017-2-27_17-52-56.png

а дальше, какие только варианты не перепробывал - в сети тьма примеров, но что то не один не завелся...

Выдержки из скетча:

Код:
float readADC() {
     float ad = 0;
     float LSB = 0.005105113; //calibrate based on your voltage divider AND Vref!
     float adcr = analogRead(A0);
      ad= adcr*LSB ;     
      return ad;
}

extern "C" {  
  #include "user_interface.h"
  uint16 readvdd33(void);
}

float readVdd()
{
  char buf[6];                              
  float  vdd = readvdd33()/1000.0;
  return vdd;
}


void loop() {

uint32_t getVcc = ESP.getVcc();
Serial.println(getVcc);


  Serial.print ("readVdd: ");
  Serial.println(readVdd());

float vdd = readADC();

  Serial.print("Vdd: ");
  Serial.println(vdd);

}
в порт получаю следующие данные:

65535
readVdd: 4.09
Vdd: 5.23

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

Подскажите, как правильно получать информацию о уровне батареи. Спасибо!
 

Сергей_Ф

Moderator
Команда форума
@chiffa вы все в один скетч смешали. Если внешний делитель то только analogRead, getVcc не нужен. И возвращает он int.
 

Сергей_Ф

Moderator
Команда форума
@chiffa и делитель на 3 всего, а аналоговый вход до 1 вольта всего меряет, вот и не меняется. У вас всегда больше 1 вольт.
 

Сергей_Ф

Moderator
Команда форума
@chiffa сделать правильный делитель, считать значение через analogRead и скорректировать его значение. По ссылке есть кое что, я не просто так не дал.
 

chiffa

New member
п
@chiffa сделать правильный делитель, считать значение через analogRead и скорректировать его значение. По ссылке есть кое что, я не просто так не дал.
а разве делитель не правильный?... такую схему находил в разных источниках...
 

Сергей_Ф

Moderator
Команда форума
@chiffa в каких пределах у вас меняется входное напряжение? 4.2-3.5 вольт. Так?
На вход АЦП нужно иметь не более 1 вольт. Посчитайте сами. Vadc=R2*Vin/(R1+R2)
При 4.2 в получается 4.7*4.2/(10+4.7)=1.34 вольт
При 3.5 будет 1.1 вольт
Во всем диапазоне превышает максимум, значит показывать будет всегда одно и тоже.

такую схему находил в разных источниках...
хоть одну ссылку приведите.
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
аккумулятор 3.7
Вы так уверены? Зарядите полностью и померьте вольтметром. Это будет ваша точка отсчета. Делитель нужно подобрать так, что бы при полностью заряженном аккумуляторе на АЦП приходило 1 В. Это обеспечит наибольшую точность.
Если Ваши данные попробовать подставить, то получится 3.7*4.7/(20+4.7)=0,7 вольт. Работать будет, но точность Вы потеряете около 30%.
 

chiffa

New member
Вы так уверены? Зарядите полностью и померьте вольтметром. Это будет ваша точка отсчета. Делитель нужно подобрать так, что бы при полностью заряженном аккумуляторе на АЦП приходило 1 В. Это обеспечит наибольшую точность.
Если Ваши данные попробовать подставить, то получится 3.7*4.7/(20+4.7)=0,7 вольт. Работать будет, но точность Вы потеряете около 30%.
таки да... Вы правы, при максимальной зарядке показывает 4,2....

получает, что резисторы нужны на 10к и 32к.....
 

Encrypt

Member
Еще пожалуйста расскажите, как при всем этом оставить возможность использовать единственный аналоговый пин?
 

Сергей_Ф

Moderator
Команда форума
@Encrypt для чего? Он ни на что другое не годен, по большому счёту. Нужен АЦП - подключайте внешний по i2c.
 

tretyakov_sa

Moderator
Команда форума
Еще пожалуйста расскажите, как при всем этом оставить возможность использовать единственный аналоговый пин?
А вот никак. Если вы хотите мерить и батарею и питание придется ставить внешний АЦП. Я взял такие: 10 шт./лот ADS1015IDGSR ADS1015I ADS1015 BRPI MSOP 10 подлинный и новый IC лучшее качество бесплатная доставка купить на AliExpress
 

tretyakov_sa

Moderator
Команда форума
Ну почему... два мосфета переключающие вход и вполне можно использовать
Можно, но два мофсета будут использовать минимум одну ногу GPIO, и останется очень тупой АЦП. Пробовал я это делать, все же удобнее ADS1015. 12 разрядов всего за 2 GPIO + другие i2c устройства вешай если нужно, 4 аналоговых входа или 2 дифференциальных, что очень удобно для измерения батареи.
 
Сверху Снизу