Как точно померить напряжение arduino?

Тема в разделе "Arduino & Shields", создана пользователем grigoriy5, 1 май 2015.

  1. grigoriy5

    grigoriy5 Нуб

    Как точно померить напряжение arduino?
    Дело в том что вольтметр выдает 0.24 вольта, а arduino выдает 0.22 вольта.
    Дело в том что у меня стоит делитель напряжения который делит напряжение в 21 раз, и это вызывает погрешность в 0.4 вольта при конечном измерении.
    Как это исправить?
     
    Последнее редактирование: 1 май 2015
  2. Moguta

    Moguta Нуб

    "Кто на ком стоял? Потрудитесь выражаться яснее!" (с)
    Что там у вас амперметр выдаёт? Вольты?
     
  3. grigoriy5

    grigoriy5 Нуб

    Тогда по-другому.
    Как избежать погрешности измерения напряжения arduino?
     
  4. Unixon

    Unixon Оракул

    1) Какой точности резисторы в делителе?
    2) Откуда берется AREF?
     
  5. Unixon

    Unixon Оракул

    Не буду тянуть кота за хвост.

    1) Не используйте резисторы хуже 1%, а еще лучше купите прецизионные с точностью 0.1%.
    2) Делите напряжение до вольта и используйте внутренний источник опорного напряжения 1.1V.
    3) Перед началом измерения переводите МК в "бесшумный" режим (см. даташит на атмегу, раздел про АЦП)
     
  6. grigoriy5

    grigoriy5 Нуб

    1)Резисторы достаточно точные, судя по моим расчетам и показаниям вольтметра.
    2) Ниоткуда
    То есть мне надо в AREF подключить батарейку 1.1V?
    можно поподробнее?
    Вот скетч:
    Код (Text):
    float voltage = analogRead(A0) / 1024.0 * 5.0;
     
    Последнее редактирование: 1 май 2015
  7. Unixon

    Unixon Оракул

    Вольтметра?! А номинальная точность какая?

    Нет конечно. Используйте analogReference(INTERNAL);
     
  8. grigoriy5

    grigoriy5 Нуб

    Да, именно врльтметра, я измерил напряжение 5v вольтметром через делитель напряжения, вольтметр выдал 0.24V.
    По формуле тоже получилось 0.24V, показания сошлись.
    Можно скетч?
     
  9. Unixon

    Unixon Оракул

    Ну так тоже можно конечно :)
    А точность у самого вольтметра и на какой шкале?

    Код (Text):

    void setup()
    {
     // initialization
     // ...
     // switching ADC to internal 1.1V bandgap reference
     analogReference(INTERNAL); // mega48/88/168/328
     //analogReference(INTERNAL1V1); // mega1280/2560
    }

    void loop()
    {
     int x = analogRead(A0); // reading 1023 is 1.1V
     float voltage = ((x+1.0)*1.1/1024.0);
     // do something useful
    }