Самый эффективный делитель напряжения для Arduino?

analogread voltage-divider

Мне нужно сделать делитель напряжения, чтобы я мог считывать напряжение батареи до 14,4 В. Могу ли я использовать для этого резисторы с очень высоким сопротивлением, чтобы ток был очень низким (чтобы не разряжать батарею)?

В интернете есть примеры с резисторами 500-2000 Ом, но могу ли я использовать сотни тысяч, чтобы уменьшить ток до минимума? Будет ли аналоговый вход Arduino по-прежнему считывать значение?

, 👍4

Обсуждение

Я думаю, что я видел ввод-вывод управления питанием, который мог измерять ток, напряжение и передавать его показания через линию I2C. Так что, возможно, это правильный способ сделать это. ИНА3221?, @KIIV

Это звучит как проект, который не собирается делать то, что вы думаете. Вы пытаетесь создать тестер заряда батареи? Чтобы сообщить вам, исправны ли батарейки вашего инструмента?, @J...


6 ответов


-2

Я не вижу никаких проблем с достаточно высокими резисторами (однако см. Ниже). Вы правы в том, что они будут меньше разряжать аккумулятор.

Будет ли аналоговый вход Arduino по-прежнему считывать значение?

Конечно, если бы там было напряжение для чтения. Почему бы и нет? Действительно высокое сопротивление может повлиять на показания из-за паразитных напряжений.

Возможным обходным путем было бы снимать показания только время от времени, скажем, каждые 10 секунд. Вы могли бы сделать это, установив показания между парой выводов Arduino и оставив один "плавающим", пока вы не будете готовы его прочитать.

Однако это не очень хорошая идея для считывания показаний аккумулятора 12 В. Вам нужно, чтобы делитель напряжения был "активным", чтобы у вас не было 12 В на входном выводе Arduino. Предложение Маенко в этом отношении звучит лучше.

У меня есть продолжительная дискуссия об АЦП на ATmega328P. В ответе № 5 на этой странице обсуждается, как он проводит измерения. Это делается путем зарядки конденсатора типа "проба и удержание". При слишком высоком входном сопротивлении конденсатор будет заряжаться слишком медленно, и, следовательно, последующая выборка даст неверные показания. В техническом описании рекомендуется использовать импеданс исходного сигнала 10 ком, поэтому для этих линий был бы уместен делитель напряжения.

Предложение Майенко о 20k + 10k потребовало бы только постоянного тока 0,4 мА через делитель напряжения, что для батареи 12 В, вероятно, не имеет большого значения (даже без всей этой коммутационной схемы).

,

Каков фактический входной импеданс (постоянный ток)?, @Peter Mortensen

Входное сопротивление составляет [100 Мом, но существуют и другие considerations](https://electronics.stackexchange.com/questions/107741/required-output-impedance-for-adc-input/107755#107755)., @Peter Mortensen

Одна из причин, по которой он может быть не в состоянии считывать напряжение, заключается в том, что аналоговый вход Auduino создает нагрузку на делитель напряжения. Предполагая, что вход Auduino действует как резистор, подключенный к земле (что является только предположением для целей аргументации), тогда он будет подключен параллельно с "нижним" резистором делителя напряжения. Это изменит сопротивление и приведет к тому, что Auduino будет считывать более низкое напряжение, чем ожидалось., @David42

@David42 Это верно. На самом деле у меня есть подробное обсуждение этого (слишком длинное, чтобы публиковать здесь) на [моей странице об АЦП] (http://gammon.com.au/adc ) в ATmega328P. Я отредактирую эту ссылку в своем ответе., @Nick Gammon

@NickGammon Читая ваш ответ и сообщение об ADC, мне кажется, что простое решение, предложенное Адриано, должно отлично работать. Это означало добавление конденсатора параллельно резистору, подключенному к земле. В чем будет проблема?, @Camilo Rada

Я не уверен, почему Адриано говорит, что readanalog() выполняет 10 операций чтения. В Uno используется функция AnalogRead(), и она выполняет только одно чтение. Я думаю, что лучшее решение — отключить делитель напряжения до тех пор, пока он не понадобится, как предложили Маженко и Шеймус., @Nick Gammon


3

Да, вы можете использовать очень мощные резисторы для вашего делителя напряжения. Но рекомендуемый максимум составляет 10 Ком для выводов АЦП. Таким образом, суммарное сопротивление ваших двух резисторов должно составлять не более 10 Ком.

рекомендуется, чтобы все, что вы подключаете к A / D, имело выходное сопротивление 10 Ком или меньше для достижения наилучшей точности. Это делается для того, чтобы позволить входному аналого-цифровому конденсатору на образце и удержании зарядиться за время, отведенное ему между переключением входного мультиплексора и началом преобразования.

От: Входное сопротивление A0-A5

,

Обратите внимание, что вычислить выходное сопротивление не так просто, как сложить резисторы вместе. Резисторы фактически рассчитываются параллельно, а не последовательно, поэтому два резистора по 20 Ком будут давать выходное сопротивление 10 ком., @Majenko

Более подробная информация содержится в [другом source](https://electronics.stackexchange.com/questions/107741/required-output-impedance-for-adc-input/107755#107755)., @Peter Mortensen


11

Наиболее эффективным является вообще не иметь делителя напряжения. Или, по крайней мере, иметь делитель напряжения только тогда, когда он вам действительно нужен.

Моя предпочтительная схема такова:

schematic

При этом M1 обычно остается выключенным с помощью R3. Когда вы хотите произвести измерение, вы включаете M2, устанавливая высокий уровень D3 (или любой другой штифт, к которому вы его прикрепили), который опускает затвор M1, включая его. Затем он подключает тестомес к делителю напряжения R1/R2 и позволяет считывать напряжение на A0.

Делитель напряжения 20k / 10k позволяет считывать напряжение до 15 В на батарее и обеспечивает выходное сопротивление 6,67 Ком, что находится в пределах рекомендуемого максимума 10 Ком для АЦП ATmega.

Во время "простоя", когда M1 и M2 оба выключены, единственным протекающим током является незначительный ток утечки через M2, смягчаемый большим резистором R3 100 Ком (который сам по себе меркнет по сравнению с "выключенным" сопротивлением M2 в любом случае).

Выбор M1 таким образом, чтобы сопротивление включения было очень маленьким (<0,1 Ом), позволяет вам по существу игнорировать его в своих расчетах, поскольку в любом случае это будет перекрыто допуском R1 и R2. M2 необходимо выбрать так, чтобы он был "логическим уровнем" (т.е. с порогом затвора V_GS значительно ниже 5 В).

Эта схема с двумя полевыми транзисторами должна использоваться вместо простого использования N-канального полевого транзистора в заземлении делителя, потому что, когда эта более простая схема отключена, Arduino будет видеть 12 В, напрямую подключенный к A0, что действительно нехорошо - вы убьете Arduino, поэтому важно, чтобы вы переключите "высокую" сторону сети, а не "низкую" сторону, и для этого требуется два полевых транзистора.

,

Каковы некоторые полевые транзисторы jellybean для этой цели?, @Peter Mortensen

@PeterMortensen Я бы, вероятно, использовал BSS138P (n-канал) и IRLML5203 (p-канал) в пространстве sot-23., @Majenko


1

Я смог реализовать это с помощью резисторов 3 МОМ. Проблема в том, что функция readanalog() выполняет 10 операций чтения. Таким образом, первое - это правильное значение, и тогда вы больше не будете измерять правильное значение.

Решение: Делитель напряжения с 2,5 Мом и 500 Ком с конденсатором 470 нФ на резисторе 500 Ком. Решение с МОП-транзистором лучше. Это проще, и это работает (но только в течение 20 лет).

,

0

Это вариация на тему дизайна Маенко, описанного выше. Это была такая хорошая идея, что я не смог удержаться и представил эту версию с уменьшенным количеством компонентов:

schematic

TPS22810 - это переключатель нагрузки, который включает или отключает Vout (2,7 В ≤ Vin ≤ 18 В; Iout ≤ 3A). Выходной сигнал определяется входом EN / UVLO, который может управляться выходом GPIO напряжением 1,8 В, 3,3 В или 5 В. Этот компонент и байпасный колпачок C1 заменяют 2 полевых транзистора и 2 резистора. Стоимость TPS22810 составляет $ 0.50 ea. в небольших количествах.

TPS22810, вероятно, найдет свое наиболее полезное применение в качестве высокочастотного переключателя, но, похоже, он также служит для удовлетворения потребности операционной системы в управлении делителем напряжения.

,

0

Здесь все упускают из виду главное. Нижним пределом последовательного сопротивления делителя напряжения является скорость саморазряда аккумулятора. Например, литий-ионный аккумулятор теряет около 10% своего заряда в месяц. Для ячейки 18650 емкостью 3000 мАч это составляет около 300 мАч в месяц, что означает около 300 / (30X24) = постоянный расход 0,42 мА. Итак, для стека 8 В, состоящего из 2 последовательных ячеек 18650, мы получаем общее последовательное сопротивление 8 В / 0,42 около 19 Ком. Да, если я подключу резистор 19 Ком к 8-вольтовому стеку, я получу примерно такой же разряд батареи, какой был бы у батареи, если бы я оставил ее в покое. Пока последовательное сопротивление намного больше этого, это никак не повлияет на срок службы батареи. Таким образом, если я использую резисторы 2ea 50K при общем последовательном сопротивлении 100K, это очень мало повлияет на срок службы батареи. резисторы 2ea 50K будут обеспечивать эффективное выходное сопротивление около 25 Ком на входной порт АЦП на микроконтроллере, и это достаточно низкое значение, поэтому искажение измеряемого напряжения будет незначительным или вообще не будет, а любое смещение можно легко компенсировать программным обеспечением. Более того, если вы хотите перейти к более высокому коэффициенту деления (скажем, 4: 1 вместо 2: 1), эффективное выходное сопротивление снижается, потому что это параллельная цепь от POV АЦП, но все же последовательная цепь от POV батареи. Если я использую делитель 75/25 Ком для соотношения 4: 1, параллельное выходное сопротивление составляет 18,75К.

Таким образом, нет необходимости в сложных схемах переключения - просто выберите последовательный делитель с удобным соотношением и с общим последовательным сопротивлением в диапазоне 100 Ком, и все готово.

,