Как использовать аналоговый вывод ESP12F для считывания напряжения батареи?
Я использую микроконтроллер ESP12F, работающий от батареи 3,7 В.
Я хочу получить фактическую информацию о состоянии заряда аккумулятора. Чтобы знать, когда аккумулятор необходимо подзарядить.
Чтобы добиться этого, я создал падение напряжения от 3,7 В до 0,94 В (потому что я прочитал, что вывод АЦП esp12f работает в диапазоне от 0 В до 1 В) с помощью резисторов 3 кОм и 1 кОм и подключил V out
падения напряжения к выводу АЦП. Но аналоговое считывание постоянно 1024
и не меняется. Когда я понижаю напряжение до 0,54 В, аналоговое считывание снова 1024
. Я попробовал со вторым esp12f, и результат тот же. Когда я пытаюсь считать аналоговое значение с разных компонентов, таких как датчик температуры, все кажется в порядке - аналоговое значение составляет ~500, а при повышении температуры значение увеличивается до ~650. Я следовал этой статье о том, как считать напряжение батареи, но безуспешно. Я попробовал сделать ту же задачу с Arduino Uno вместо esp12f, и все работает отлично.
Итак, основываясь на этих тестах и наблюдениях, я думаю, что нет проблем со схемой, потому что на Arduino Uno все работает нормально, нет проблем с выводом АЦП esp12f, потому что с датчиком температуры аналоговое значение является точным.
Подведем итог: Моя проблема в том, что аналоговое значение от батареи постоянно равно 1024
, и я не могу получить фактическую информацию об оставшемся напряжении батареи через esp12f.
На изображении ниже показано, как выглядит моя схема:
А это код того, как я считываю аналоговое значение:
const int analogPin = A0;
void setup()
{
Serial.begin(115200);
}
void loop()
{
int sensorValue = analogRead(analogPin);
Serial.print("sensorValue: ");
Serial.print(sensorValue);
delay(1000);
}
@stanimirsp, 👍-1
1 ответ
Лучший ответ:
Как вы подтверждаете в комментарии, вы поменяли местами резисторы. Поэтому на вход АЦП подавалось слишком высокое напряжение, и АЦП всегда возвращал максимальное значение.
С помощью этой принципиальной схемы мы можем рассчитать приблизительное напряжение:
Вы использовали R1 = 1 кОм и R2 = 3 кОм, это дает V_ADC = 3,7 В * R2 / (R1 + R2) = 3,7 В * 3 кОм / (1 кОм + 3 кОм) = около 2,8 В.
При правильных значениях R1 = 3 кОм и R2 = 1 кОм V_ADC = 3,7 В * R2 / (R1 + R2) = 3,7 В * 1 кОм / (3 кОм + 1 кОм) = около 0,9 В.
- AT-команда не отвечает на последовательный монитор
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- Arduino выводит значения мусора на serial monitor с ESP8266
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
- Как подключить Wi-Fi Shield ESP-12E-ESP8266-UART-WIFI-Wireless-Shield к Arduino
- Получить данные с сайта с помощью ESP8266 с помощью AT-команд
- Захват изображений с OV7670 (без FIFO) с использованием Arduino Uno?