Чтение отрицательного напряжения Arduino с положительным заземлением

Я пытаюсь измерить напряжение и ток от контроллера солнечного заряда от панели, аккумулятора и нагрузки одновременно с моим Arduino. Мне удалось добиться этого, соединив все минусы вместе и используя их как GND, однако, когда я делаю это, контроллер заряда не работает должным образом, и когда я переключаюсь в выключенный режим, нагрузки продолжают работать. Проверив руководство по эксплуатации, я обнаружил, что положительные стороны являются общими для Pan, Bat, Load. Это было подтверждено мультиметром.

Итак, теперь я думаю о том, чтобы использовать положительный аккумулятор в качестве эталона GND, а затем измерить все остальные напряжения (через делители напряжения по отношению к GND). Затем напряжения должны находиться в диапазоне от -17 В до 0 В.

Однако я читал, что аналоговые входные контакты не могут считывать отрицательные напряжения, а относительно положительного GND все аналоговые входы будут отрицательными.

РЕДАКТИРОВАТЬ: я думал об использовании усилителя для инвертирования положительной земли на отрицательную, что означает, что я мог измерить все положительные стороны напряжений. Но после получения ответов от вас, ребята, кажется, что мне, возможно, не придется использовать усилитель, и делителя напряжения может быть достаточно. В настоящее время я включил делитель напряжения с 2 резисторами между каждым аналоговым входом, источником +5 В, Vmeasure, который вы можете увидеть на диаграмме ниже.

По моим расчетам, если это сработает, при -17 В я должен увидеть 0,6 В при аналоговом входе. @0V Я должен видеть 4V на аналоговом входе.

Я был бы признателен за отзывы об этой схеме, и ниже на втором изображении я также включил фрагмент другого метода, предложенного @jonk (спасибо), и мне было бы интересно узнать, в чем преимущества метода B) перед методом A. )

Спасибо!

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

Метод А)

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Метод B (EDIT: этот метод сработал, мне еще предстоит протестировать метод A) спасибо @Jonk))

схематический

смоделируйте эту схему

Я так понимаю схемы нет?
@jonk, похоже, это для меня. Вы видите это сейчас? Если нет, я просто скину скриншот :)
Являются ли эти резисторы вашей попыткой обеспечить делитель напряжения для ваших аналоговых входов? Или они требуются вашим контроллером заряда по какой-то странной причине?
Кроме того, является ли -12 В самым большим значением, которое вам нужно измерить? Или это напряжение может быть еще более отрицательным?
Моя попытка предоставить делитель напряжения. Падение напряжения на каждом из двух резисторов должно быть таким же, как напряжение панели, нагрузки и батареи соответственно, поэтому я использовал делитель, чтобы снизить напряжение до уровня, который может вводить Arduino.
Я бы подозревал, что максимум до -17 В от панели. около -14 от батареи и нагрузки. Спасибо!
Можете ли вы позволить себе потреблять немного тока от нагрузки, или вам нужен вход с высоким Z (подобный цифровому мультиметру)?
Может позволить себе потреблять ток, нужно вывести его как можно скорее. Так что все, что может сделать работу. А потом оптимизировать буду :)

Ответы (1)

Если вы хотите измерить входные напряжения, которые могут быть как отрицательными, так и положительными, используя АЦП Arduino, где аналоговые входные контакты не могут считывать отрицательные напряжения, вы можете рассмотреть следующий стиль делителя с тремя резисторами, показанный слева (справа). сторону, к которой мы будем двигаться):

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

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

Ваш АЦП Arduino должен видеть входное сопротивление меньше 10 к Ом , общий. При указанном выше расположении делителя это р я Н "=" р я + р п | | р г . Грубо говоря, поскольку р п или р г будет больше, чем р п | | р г , нам просто нужно сделать р я + р п < 10 к Ом .

Но принимая во внимание ваш худший случай В я "=" 17 В и электропитание В С С "=" 5 В , также должно быть так, что р п < 5 17 р я . Еще одно соображение, которое следует из решения отдельного уравнения для р г предполагает, что р п < 2 9 р я . Так р я < 10 к Ом 1 + 2 9 . Так что это наше более важное ограничение. р я 8.2 к Ом . Это стандартное значение р я "=" 8.2 к Ом и я тогда просто выбрал р п "=" 1,8 к Ом как соответствующее стандартное значение, а также.

Отсюда можно вычислить р г "=" В о р я р п ( В С С В о ) р я ( 17 + В о ) р п , где вы можете выбрать В о когда В я "=" 17 В . Однако это не линейно. Глядя на кривую, я думаю р г "=" 2,7 к Ом выглядит неплохо.

Входное сопротивление теперь 9.3 к Ом , что соответствует необходимым критериям для АЦП. И в В я "=" 17 В ты получишь В о "=" 670 мВ и в В я "=" 10 В ты получишь В о "=" 1490 мВ и в В я "=" 0 В ты получишь В о "=" 2650 мВ .

В приведенном выше случае, я предполагаю, что вы, конечно, можете разделить основания.

Спасибо за ответ @jonk Все это имеет смысл в отношении импеданса и того, как рассчитать правильные значения резисторов. Вскоре я проверю на своем Arduino — просто хотел сначала подтвердить, какова цель резистора Rg между общим плюсом -> v0? Можно ли получить такой делитель напряжения, используя только Ri и Rp? Кроме того, + 5 В, предоставляемый Arduino, предоставляется ли он со ссылкой на arduino GND? Итак, если мы поставим, скажем, +12 на GND Arduino, Arduino все равно сможет подавать +5 В относительно GND (а не на самом деле -7 В), я прав? Спасибо друг!
@КенХ р г и р п составить резисторный делитель, разделив +5 В источника питания Arduino на что-то еще -- +3 В. Но теперь у него сопротивление Thevenin около 1.1 к Ом , против которого р я работает. Я предполагаю, что вы настроите общий провод Arduino на общий провод контроллера заряда, но НЕ будете соединять какие-либо другие части источников питания вместе. НЕ подключайте +12 к земле Arduino. Это не цель здесь!!
Прежде всего, большое спасибо за ваше время, приятель! Я опубликовал пару правок на свой вопрос, чтобы сделать то, о чем я думаю, немного более ясным. Пожалуйста, смотрите схемы. Во-первых, мне интересно, будет ли работать делитель напряжения первой схемы без Rg? Во-вторых, в ответ на ваше предупреждение +12В, я планировал подключить общий провод контроллера заряда (который ~ +12 относительно отрицательной стороны). Однако я думаю, что это была проблема с терминологией от моего имени, поэтому безопасно ли для меня подключать общий контроллер положительного заряда к GND? Спасибо!
@KenH Я так понимаю, вы используете блок питания +9 В постоянного тока для подачи питания на регуляторы напряжения Arduino, которые затем могут обеспечивать +5 В для работы Arduino. И тогда у вас есть доступ к шине питания +5 В Arduino для резисторных делителей. Это верно? (Или та батарея +9 В, которую я там вижу, случайность?)
Вы правы @jonk, я использую источник питания 9 В постоянного тока. В идеале я хотел бы питать Arduino от батареи (от контроллера заряда) через понижающий преобразователь. Но я подумал, что будут проблемы при использовании его в качестве источника питания, а также GND. Я прав? Или вы тоже знаете обходной путь?
@KenH Трудно понять, что лучше, без подробностей. А пока давайте просто сосредоточимся на этом и посмотрим, что из этого получится. Учитывая то, что вы сказали, да, я думаю, что это создаст читаемые напряжения, учитывая вашу последнюю схему. Прежде чем вы на самом деле подключите входной провод АЦП... подключите вольтметр от общей земли (используйте там вывод [-]) к точке, где соединяются все три резистора (используйте здесь вывод [+]), и посмотрите, какое значение вы доберетесь туда. НЕ подключайте вход АЦП к этой точке, пока ПОСЛЕ того, как вы не проверите его с помощью вольтметра. Просто чтобы быть в безопасности. Это должно быть положительное значение, если подключено так, как я сказал.
большое спасибо за помощь. Теперь я измеряю напряжение и ток, и контроллер заряда работает нормально, все измерения панели, летучей мыши, нагрузки работают нормально. Спасибо! Последний вопрос, если вы знаете, могу ли я каким-либо образом питать Arduino от той же батареи, которая измеряется в схеме, которую мы обсуждали/создавали. - Также я создал таблицу Excel, чтобы помочь мне выбрать значения сопротивления, которые максимизируют диапазон напряжения, сохраняя импеданс ниже 10 кОм. Я выбрал 2.2k для Rp, 8.2k и 8.2k для Rg и ​​Ri. Что поддерживает импеданс чуть ниже 10 кОм и увеличивает диапазон от 2 В до 3 В.
@KenH Спасибо, что нашли время, чтобы сообщить мне, что все в порядке, как обсуждалось вначале. Что касается простого питания Arduino? Можно ли принимать источник 12 В непосредственно на вход Vcc? Насколько варьируется это предложение? Может ли он когда-нибудь превзойти спецификации ввода Vcc?
напряжение батареи будет варьироваться от 12 до 14 В, могу ли я использовать понижающий преобразователь, а затем подключить положительный вывод к Arduino Vin и отрицательный к Arduino Gnd, а затем все еще подключить весь + общий контроллер заряда к GND? Кроме того, к сожалению, у меня сейчас проблемы со схемой. Здесь ночь, и когда панель расположена лицевой стороной вниз, а Arduino не подключена, она измеряет около 0,4 В на клеммах с помощью мультиметра (отлично). Когда Arduino подключен, он измеряет около -2 В. Таким образом, опорное напряжение +5 В влияет на Vpanel, даже когда панель обращена лицевой стороной вниз. Буду исследовать больше!
@KenH Да, доллар может быть разумным использовать. Стоит протестировать. Приносим извинения за новые выпуски! По крайней мере, входной резистор, р я , может обеспечить некоторую защиту вашего входного контакта Arduino! Это хороший побочный эффект. Ждем новой информации.
Я настроил схему в соответствии со схемой B в моем OP. Поскольку я регистрировал положительное напряжение на Vx около +2 В (т. е. Vpanel было -2 В), я решил, что некоторое напряжение от Vy падает на R3, что приводит к нежелательному положительному напряжению на Vx. Итак, насколько я понимаю, если бы мы могли уменьшить i2, мы могли бы уменьшить напряжение Vx. После замены резистора 2,7 кОм на резистор 68 Ом (что позволяет большему току течь на землю, но снижает входное разрешение Arduino A1 до 0,13 В). Vx остается отрицательным, т.е. Vpanel остается положительным (то, что мы хотим).
Пс. @jonk, предыдущий комментарий касается отключения панели. Кроме того, я думаю, что если я могу заблокировать i2 от прохождения, когда Vx = 0. т. е. в вашей настройке резистора, если Vy > 2,65 В, то я могу ограничить Vx диапазоном -17 -> 0. И не допустить, чтобы Vx переходил в положительный. Я ищу использование стабилитронов, чтобы помочь мне в этом, любой совет будет оценен - ​​внесу свой вклад, когда у меня будет решение!