Контроль аккумуляторной батареи от которой питается плата Arduino и остальная нагрузка!

Тема в разделе "Силовая электроника", создана пользователем issaom, 10 дек 2016.

  1. Unixon

    Unixon Оракул

    Может тогда стоит поставить ОУ и трансформировать им 10..20V -> 0..5V, а на AREF повесить TL431 (1431) с емкостями... правда придется для ОУ делать шины питания за пределами измеряемого диапазона.
     
  2. Не нужно вам городить никаких дополнительных схем, ОУ, TL431 и прочей зауми. В Ардуино всё есть "с завода".

    Просто используйте внутренне стабилизированное напряжение, но не как опорное, а как эталонное для обратного вычисления реального опорного Vcc. Вот, например, всё расписано подробно: http://tim4dev.com/arduino-secret-true-voltmeter/ или поищите оригинал Scott Daniels Secret Arduino Voltmeter – Measure Battery Voltage, на английском, но там код пограмотнее.

    Проверял для Uno, Mega, 32u - работает.
     
  3. Unixon

    Unixon Оракул

    Вы точно прочитали всю ветку и правильно поняли все, что здесь было написано?
     
  4. Да вроде прочитал.

    Чел хочет измерять напряжение батареи, при этом стабилизируют подачу питания 5V, потом, зачем-то, вешает на эти стабилизированные 5V нагрузку, удивляется неточности показаний, и вешает еще один аппаратный стабилизатор чтобы использовать внешний Vref. Подход странный, вам не кажется?

    На нарисованной схеме достаточно одного стабилизатора, который на вход 5V, и использовать Vcc как Vref.

    По моим экспериментам при, питании Arduino напряжением более 5V Vcc у нее чуточку выше 5V, при питании менее 5V Vcc будет равно Vin. В моём, например, случае, при питании от USB - 4,6В

    Я всего-то утверждаю, что можно использовать заниженное Vcc как Vref, калибровать показания "обратным счетом" через измерение внутреннего источника 1.1В, и получать нормальные показания напряжения без дополнительной аппаратуры.
     
  5. Unixon

    Unixon Оракул

    Ничуть не странный подход, он вынужденный исходя из ограничений задачи. Про 1.1V это очевидное решение, но при использовании встроенного бандгапа там другие проблемы возникают, которые портят точность измерений. Поэтому более правильное решение - использовать полную шкалу напряжений до Vcc и привести измеряемое напряжение к ней не просто пропорционально (делителем), что снижает точность, а со смещением и с меньшим сжатием шкалы, чтобы самый важный диапазон измеряемых напряжений оказался подальше от шин питания и с максимальным разрешением. Это само по себе уменьшает требование к стабильности и точности Vref.
     
  6. VladislavSum

    VladislavSum Нуб

    А что если и правда подключить через делитель (на 5в) напряжение с батареи на Vref а потом с его помощью измерить внутреннее опорное напряжение, предварительно вычислив точное значение внутреннего опорного напряжения?
     
  7. mcureenab

    mcureenab Гуру

    Вот о чем я и говорил. В АЦП есть дифференциальный режим измерений, когда он определяет разность напряжений на двух пинах. Мне вот только не понятно, можно на эти пины подать, например опорное напряжение 13 вольт и напряжение с аккумулятора. Или оно ограничено Vcc.
     
  8. Unixon

    Unixon Оракул

    Ограничено.
     
  9. mcureenab

    mcureenab Гуру

    Хм. А если это напряжение отвязано от GND. Т.е. там батарейка подключена или устройство, не связанное по GND.
     
  10. VladislavSum

    VladislavSum Нуб

    тогда ты просто сравнить не сможешь, земля общая обязательно
     
  11. issaom

    issaom Гик

    Как по итогу выяснилось проще всего решить данную задачу на INA219 - наверное в исходный вариант конструкции этот датчик и затолкну....

    ina219_Схема.jpg

    Код:
    Код (C++):
    // библиотека для работы с дисплеем
    #include <LiquidCrystal.h>
    // пины для работы дисплея
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    //библиотека для работы с интерфейсом I2C
    #include <Wire.h>
    //библиотека для работы с датчиком
    #include <Adafruit_INA219.h>
    //создаем экземпляр для работы с датчиком
    Adafruit_INA219 ina219;

    void setup(void)
    {
      ina219.begin();     //инициализируем плату
      lcd.begin(16, 2);   //инициализируем дисплей
      lcd.print("Vbat!");
    }

    void loop(void)
    {
      float busvoltage = 0;
      //функция считывает напряжение между GND и Vin-
      busvoltage = ina219.getBusVoltage_V();
      lcd.setCursor(0, 1);
      //печатаем результат измерения на экране
      lcd.print(busvoltage);
      delay(2000);
    }
    Краткая демонстрация работы:

     
  12. mcureenab

    mcureenab Гуру

    Параллельно аккумулятору включить цепочку из диода Зенера на 12 Вольт и токоограничивающего резистора на сотню кОм.

    Если напряжение аккумулятора U, на резисторе получим напряжение U - 12 Вольт. Таким образом Ардуиной сможем измерить напряжение от 12 до 17 Вольт.

    Фактическое напряжение стабилизации диода Зенера может отличаться от номинала на несколько процентов. Для более точных измерений потребуется калибровка.
     
  13. Arkad_snz

    Arkad_snz Гик

    Отлично! Задача решается просто и изящно!
    Каверзный вопрос - В Амперке сей чудо-прибор есть?
     
  14. issaom

    issaom Гик

    а в Амперке он зачем - она на конструкторах специализируется мне кажется "модули в шилд в шилд в шилд в структор и енжой" - каждому свое. Но мне кажется на форуме поди не одни любители "бутербродов" сидят. Обзоров INA219 вообще много по интернету валяется - но никто не юзал её конкретно для этой задачи. В основном на Арудуине свое питание и меряют ей какие-нибудь батарейки....
     
  15. Arkad_snz

    Arkad_snz Гик

    Померять Ардуиной что-то внешнее - да, не проблема, но бутерброд-конструктору, обвешанному датчиками было бы не лишне иметь и средство самоконтроля.
    Собираешь такой супербутер, и запитываешь от АКБ без самоконтроля, а БОТ потом в луже где-нить застрянет.
    Хорошо если это не коптер, и не грохнется на грешную..., а если водоплавающий, то отправится рыб веселить светодиодиками.
    Вообще, грустно это - Контроль питания - приделывай к своему приборчику еще один. С температурой - та же история.
    Фото1 - Прибор на Ардуино.
    Фото2 - прибор на Ардуино, обеспечивающий работоспособность первого (см. фото1).
    Баня. Раздевалка - через дорогу.
     
    Последнее редактирование: 23 янв 2017
  16. mcureenab

    mcureenab Гуру

    Ардуино это прежде всего платформа для прототипирования.

    Импульсный стабилизатор напряжения без контроля питания еще поискать надо. Разве что разработчик модуля игнорировал эту функцию.