Page 1 of 1

Problem with deep sleep in ESP32

Posted: Fri Jul 05, 2019 4:58 am
by quangminh.le0701
i'm currently measure battery and send it to master using nrf24l01 module. but the first time after reset the battery measure always incorrect value. it's the same if wake up from deep sleep. i dont know how to fix. anyone help me?

Code: Select all

void setup() {
  esp_adc_cal_value_t val_type =
  esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_0, ADC_WIDTH_BIT_11, REF_VOLTAGE, adc_chars);
}
float battery_read(uint8_t channel, adc_atten_t attenuation) {
  float voltage = 0.0;           // calculated voltage
  float output = 0.0;            //output value
  const float battery_max = 4.2; //maximum voltage of battery
  const float battery_min = 3.0; //minimum voltage of battery before shutdown
  float R1 = 100000; // resistance of R1 (100K)
  float R2 = 27000;  // resistance of R2 (27K)
  adc1_channel_t channelNum;
  switch (channel) {
    case (36):
      channelNum = ADC1_CHANNEL_0;
      break;

    case (39):
      channelNum = ADC1_CHANNEL_3;
      break;

    case (34):
      channelNum = ADC1_CHANNEL_6;
      break;

    case (35):
      channelNum = ADC1_CHANNEL_7;
      break;

    case (32):
      channelNum = ADC1_CHANNEL_4;
      break;

    case (33):
      channelNum = ADC1_CHANNEL_5;
      break;
  }
  adc1_config_channel_atten(channelNum, attenuation);
  voltage = esp_adc_cal_raw_to_voltage(analogRead(channel), adc_chars);
  Serial.println(voltage);
  return output = voltage*(R1+R2)/R2;
}
Image