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

Вопрос Странные значения, получаемые от аналогового входа.

Andrey L

Member
Приветствую.

Тестирую очередной пример от espressif (ADC) - espressif/esp-idf

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

Вот только вывод мне совсем не нравится.

При старте модуль выдаёт
eFuse Two Point: NOT supported
eFuse Vref: Supported
Characterized using eFuse Vref
Потом он мерит лишь два значения
"Raw: 4095 Voltage: 1039mV" - если входящий пин связан с 3,3V, но при этом не влияет соединяю ли я его с "GND" или нет. (Т.е. ограничивающий резистор или делитель напряжения.)
"Raw: 0 Voltage: 75mV" - если входящий пин не связан с 3,3V.

Я что-то не так делаю?

P.S. У меня подделка под DOIT Esp32 DevKit v1.
 

Andrey L

Member
В поисках ответов нашёл на ютубе код от Колбана.
Код:
#include <driver/adc.h>
#include <esp_log.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include "sdkconfig.h"

static char tag[] = "adc1";

void app_main() {
    ESP_LOGD(tag, ">> adc1");
    adc1_config_width(ADC_WIDTH_12Bit);
    adc1_config_channel_atten(ADC1_CHANNEL_0, ADC_ATTEN_0db);
    while (1)
    {
        int value = adc1_get_voltage(ADC1_CHANNEL_0);
        ESP_LOGD(tag, "value: %d", value);
        printf ("value: %d  \n", value);
        vTaskDelay(1000/portTICK_PERIOD_MS);
    }
    vTaskDelete(NULL);
}
Но нормальные результаты я пока не получил.
 

Юрий Ботов

Moderator
Команда форума
ацп 8266 мерит 0...1В. Этим все сказано. Подавая на него 3.3 вольта вы его тупо перегружаете.
 

Andrey L

Member
@Юрий Ботов В "Readme" к примеру было написано следующее: "In this example, we use ADC_UNIT_1 by default, we need to connect a voltage source (0 ~ 3.3v) to GPIO34."

Т.е. у меня не ЕSP32, а перекрашенная ESP8266?
 

nikolz

Well-known member
@Юрий Ботов В "Readme" к примеру было написано следующее: "In this example, we use ADC_UNIT_1 by default, we need to connect a voltage source (0 ~ 3.3v) to GPIO34."

Т.е. у меня не ЕSP32, а перекрашенная ESP8266?
Какой у Вас модуль?
ESP32 или ESP8266?
Какой номинал резисторов
Куда вы их подключаете
Что показывает тестер на пине когда туда подключаете резистор
 

sharikov

Active member
Теперь я запутался. Документация "Analog to Digital Converter", первый пример с "ADC_ATTEN_DB_0": "The input voltage in above example is from 0 to 1.1V (0 dB attenuation)."

Но почему на Github они при этом же "ADC_ATTEN_DB_0" написали, что можно подавать до 3,3V?
В idf ведь все написано:
[inline]components/driver/include/driver/adc.h :
ADC_ATTEN_DB_0 = 0, /*!<The input voltage of ADC will be reduced to about 1/1 */
...
ADC_ATTEN_DB_11 = 3, /*!<The input voltage of ADC will be reduced to about 1/3.6*/[/inline]
Если у вас на вход Adc подается 3.3 V следует настраивать ADC_ATTEN_DB_11
 
Сверху Снизу