Пересчет данных analogRead в реальные значения

Тема в разделе "Arduino & Shields", создана пользователем Spell, 14 май 2017.

  1. Spell

    Spell Нерд

    Добрый день.
    Делаю простейшую схемку для контроля напряжения батареи.
    На входе аналогового контакта стоит делитель 1/2 (2 резистора по 22К).
    Батарея - 4 аккумулятора по 1,5 В. На данный момент дают 5В.
    Когда проверяю напряжение вольтметром, то на выходе делителя четко показывает 2,5В.
    Когда проверяю из программы, то идет 2.7 - 2.8В. Т.е. завышение аж на 0.3В.
    Не понимаю, почему. Может чего подскажете? С чем это связано?
    Вот скетч. Ничего экстраординарного.
    Код (C++):

    #define pinPWR A6 //Номер вывода датчика заряда батареи
    float DCcost = 5.0/1023.0;

    void setup() {
      Serial.begin(9600);
      while(!Serial){
      };
      Serial.println("Ready");
    }

    void loop() {
        int val = analogRead(pinPWR);
        float PWRval = val*DCcost;
     
        Serial.print("Power: ");
        Serial.print(val);
        Serial.print(" / ");
        Serial.print(DCcost, 6);
        Serial.print(" = ");
        Serial.println(PWRval, 1);
     
    }
     
  2. rkit

    rkit Гуру

    Опорное напряжение низкое.
     
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

  4. Spell

    Spell Нерд

    Спасибо за ссылку. Читал запоем.
    Заработало. Несколько расстраивает необходимость подгонки константы для конкретного устройства.
    Хочу попробовать с внешним опорным напряжением.