Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Работа с ADC esp8266

Тема в разделе "Общие вопросы по esp8266", создана пользователем funny59, 16 мар 2018.

Метки:
  1. nikolz

    nikolz Гуру

    Сообщения:
    3.979
    Симпатии:
    426
    максимальное значение на выходе однополярного АЦП - это число со всеми единицами в разрядах.
    Если взять число размером в байт т е 11111111 (255,0xFF) и преобразовать в short через арифметическое расширение то преобразование будет выполнено путем расширения знака т е получим 1111111111111111 или ,в формате unsigned short 65535 а long - это 4 байта т е в формате unsigned long 4294967295
     
  2. Zhenya88

    Zhenya88 Новичок

    Сообщения:
    30
    Симпатии:
    0
    Спасибо за разъяснения.
    Тогда не понятно, как вы в ESP функцию Esp.vcc используете, если она по умолчанию максимальное значение возвращает. Просто смотрю примеры и не виде там функций map или иных для перевода. Просто вызывают все esp.vcc и получают миливольты. У меня получается тоже выход в воздухе висит без фоторезистора
     
  3. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.127
    Симпатии:
    226
    @Zhenya88 для работы Esp.vcc аналоговый вход должен висеть в воздухе. Вы вывпаяли только фоторезистор или резистор делителя тоже? Скорее всего резистор делителя оставили - вот показания и врут. Ну и инициализация ADC_MODE(ADC_VCC) обязательна.
     
  4. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.127
    Симпатии:
    226
    "ESP.getVcc ()
    Чтобы прочитать напряжение питания, вход АЦП должен быть отключен физически от любых цепей. Кроме того, следующая строка должна быть добавлена к скетчу:
    ADC_MODE (ADC_VCC);
    Эта строка должна появиться вне всяких функций, например сразу после #include строк скетча."
     
  5. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.127
    Симпатии:
    226
  6. Zhenya88

    Zhenya88 Новичок

    Сообщения:
    30
    Симпатии:
    0
  7. Zhenya88

    Zhenya88 Новичок

    Сообщения:
    30
    Симпатии:
    0
    выпаял резистор (теперь ни обычного, ни фоторезистора). Питание через микроюсб (т.е. через стаб ams).
    фото (раскрыть)

    IMG_20190522_181855_HDR.jpg
    IMG_20190522_181916.jpg

    код в скетче
    код (раскрыть)

    ADC_MODE (ADC_VCC);
    double vcc = (double)ESP.getVcc()/1000; //измерение напряжения питания
    String msg = "Battery_Vin = "+String(vcc);
    void setup() {
    Serial.begin(115200); // initialize serial communications at 115200 bps:
    }
    void loop() {
    // msg = "Battery_Vin = "+String(vcc);
    Serial.println(msg);
    delay(5000);
    }
    даёт
    Код (Text):
    1. Battery_Vin = 4.47
    2.  
    я правильно понимаю, что должно быть 3.3?
    т.е. достаточно просто коэффициент/множитель 0,7382 использовать или функцию map необходимо?
     

Поделиться этой страницей