Как сэмплировать аналоговый сигнал от -2 В до +2 В с помощью микроконтроллера PIC?

10

Я использую микросхему PIC с 10-битным АЦП для считывания аналогового сигнала с частотой менее 300 Гц. Однако этот аналоговый сигнал находится в диапазоне -2 В и +2 В. Как я могу подготовить сигнал, чтобы он оказался в рабочем диапазоне (при условии, что вход на АЦП должен быть положительным)? Также у меня нет положительного и отрицательный источник питания.

user2200
источник
3
Возможный дубликат: electronics.stackexchange.com/questions/3105/…
Томас О
@Kellenjb - вопросы, на которые вы ссылаетесь, не относятся к расчетам для этого конкретного случая, когда входное напряжение выходит за пределы рельсов.
Стивенвх
Следующие вопросы были закрыты как дубликаты этого вопроса, и на них есть полезные ответы: electronics.stackexchange.com/questions/15985/… , electronics.stackexchange.com/questions/15940/…
Кевин Вермеер

Ответы:

14

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

Вам нужно будет масштабировать напряжение с помощью резисторного делителя, чтобы получить напряжение от -2,5 В до + 2,5 В и добавить 2,5 В. (Я предполагаю, что 5V блок питания для вашей PIC).

Следующий расчет выглядит длинным, но это только потому, что я подробно объясняю каждый шаг. На самом деле это так просто, что вы можете сделать это в своей голове в кратчайшие сроки.

Сначала это:

R1 представляет собой резистор между и V O U T , R2 представляет собой резистор между + 5 V и V O U T , и R3 представляет собой резистор между V O U T и G N D . VINVOUT
+5VVOUT
VOUTGND

Сколько у нас неизвестных? Три, R1, R2 и R3. Не совсем, мы можем свободно выбирать одно значение, а два других зависят от этого. Давайте выберем R3 = 1k. Математический способ найти другие значения - создать набор из двух уравнений одновременно из двух пар ( , V O U T ) и найти неизвестные значения резисторов. Подойдут любые пары ( V I N , V O U T ), но мы увидим, что мы можем значительно упростить вещи, тщательно выбрав эти пары, а именно предельные значения: ( + 20 В , + 5 В ) и ( -ВяNВОUTВяNВОUT+20В+5В , 0 В ). -20В0V

Первый случай: , V O U T = + 5 В Обратите внимание, что (и это ключ к решению!) Оба конца R2 видят + 5 В , поэтому падения напряжения нет, и, следовательно, нет тока через R2. Это означает, что I R 1 должен быть таким же, как I R 3 (KCL). I R 3 = + 5 В - 0 ВVIN=+20VVOUT=+5V
+5VIR1IR3
. Мы знаем ток через R1, а также напряжение над ним, поэтому мы можем рассчитать его сопротивление:R1=+20В-5ВIR3=+5V0V1kΩ=5mA=IR1
. Найден наш первый неизвестный! R1=+20V5V5mA=3kΩ

Второй случай: , V O U T = 0 В То же самое, что и с R2, теперь происходит с R3: без падения напряжения, поэтому без тока. Опять же согласно KCL, теперь I R 1 = I R 2 . I R 1 = - 20 В - 0 ВVIN=20VVOUT=0V
IR1IR2
. Мы знаем ток через R2, а также напряжение над ним, поэтому мы можем рассчитать его сопротивление:R2=+5В-0ВIR1=20V0V3kΩ=6.67mA=IR2
. Найден наш второй неизвестный! R2=+5V0V6.67mA=0.75kΩ

Таким образом, решение: . R1=3kΩ,R2=0.75kΩ,R3=1kΩ

Как я сказал , что это только соотношение между этими величинами , которые имеют важное значение, так что я мог бы также выбрать . Мы можем сравнить это решение с другой ( V I N , V O U T ) парой, например ( 0 В , 2,5 В ). R1 и R3 теперь параллельны (они оба имеют + 2.5V-0V над ними, поэтому, когда мы вычисляем их объединенное значение, мы находим 0.75R1=12kΩ,R2=3kΩ,R3=4kΩ
VINVOUT0V2.5V , точно значение R2 и значение, которое нам нужно было получить + 2,5 В от + 5 В ! Так что наше решение действительно правильное. [КК штамп идет здесь]0.75kΩ+2.5V+5V

Последнее, что нужно сделать, это подключить к АЦП PIC. АЦП часто имеют довольно низкое входное сопротивление, поэтому это может нарушить наше тщательно рассчитанное равновесие. Не о чем беспокоиться, однако, нам просто нужно увеличить R3 так, чтобы R 3 / / R A D C = 1 k Ω . Предположим, что R A D C = 5 k Ω , тогда 1VOUTR3//RADC=1kΩRADC=5kΩ Отсюда находимR3=1,25KОм. 11kΩ=1R3+1RADC=1R3+15kΩR3=1.25kΩ


редактировать
ОК, это было умно и очень просто, даже если я сам так говорю. ;-) Но почему это не сработает, если входное напряжение остается между рельсами? В описанных выше ситуациях у нас всегда был резистор, через который не проходил ток, так что после KCL ток, поступающий в узел через один резистор, уходил через другой. Это означало, что одно напряжение должно быть выше, чем V O U T , а другое - ниже. Если оба напряжения ниже, ток будет течь только от этого узла, и KCL запрещает это.VOUTVOUT

stevenvh
источник
Выход -20В приведет к выходу чуть ниже 0В.
Олин Латроп
(и, возможно, Олин Латроп): Я пытался выяснить, как вы находите значение резистора 7К. Я заметил, что когда входное напряжение составляет 2,5 В, ток не будет течь к узлу, независимо от значения резистора, потому что нет разности напряжений. Но это 2,5 В на входе не в среднем диапазоне, в то время как 2,5 В на выходе тоже. Не значит ли это, что в делителе должно быть два разных резистора? Если вы понимаете, о чем я.
Федерико Руссо
Может быть, это также объясняет комментарий @Olin Lathrop.
Федерико Руссо
@ Фредерико: Да, это не будет полностью симметрично. Я обсуждаю это в своем ответе. Можно настроить три резистора таким образом, чтобы они соответствовали от -20 до +20 вольт от 0 до 5 вольт, но и Стивен, и я продемонстрировали более простые случаи, когда вы получаете небольшую ассиметрию.
Олин Латроп
6

Самый простой способ - использовать «резисторный делитель».

Вы не сказали, какое напряжение работает на этом ПИК, и, следовательно, диапазон входного АЦП, так что давайте использовать 5V для примера. Ваш диапазон входного напряжения составляет 40 В, а выходной 5 В, поэтому вам нужно что-то, что ослабляет минимум на 8. Вам также нужно, чтобы результат был центрирован на 1/2 Vdd, что составляет 2,5 В, тогда как ваше входное напряжение центрировано на 0 В ,

Это можно сделать с помощью 3 резисторов. Один конец всех трех резисторов соединен вместе и с входным выводом PIC A / D. Другой конец R1 поступает на входной сигнал, R2 - на Vdd, а R3 - на землю. Резисторный делитель образован R1 и параллельной комбинацией R2 и R3. Вы можете отрегулировать R2 и R3, чтобы центрировать результирующий диапазон на уровне 2,5 В, но для простоты объяснения этого мы будем жить с небольшим количеством ассиметрии и ослаблять немного больше, чтобы убедиться, что оба конца ограничены диапазоном Vss-Vdd.

Скажем, PIC хочет, чтобы аналоговый сигнал имел полное сопротивление 10 кОм или меньше. Опять же, для простоты, давайте сделаем R2 и R3 20 кОм. Импеданс, питающий PIC, будет не более, чем параллельная комбинация из них, которая составляет 10 кОм. Чтобы получить ослабление 8, R1 должно быть в 7 раз больше R2 // R3, что составляет 70 кОм. Однако, поскольку результат не будет точно симметричным, нам нужно немного больше ослабить, чтобы убедиться, что -20 В не приведет к менее чем 0 В в PIC. Это на самом деле требует ослабления 9, поэтому R1 должно быть не менее 8 раз R2 / R3, что составляет 80 кОм. Стандартное значение 82 кОм учитывает некоторое отклонение и запас, но вы все равно получаете большую часть диапазона АЦП для измерения исходного сигнала.

Добавлено:

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

Олин Латроп
источник
+1, потому что по количеству деталей это самый простой способ построить то, что требуется. Некоторые примечания: Можно позаботиться об асимметрии в коде uC, и, добавив один конденсатор параллельно резистору, который идет на GND, сигнал можно сгладить (фильтр нижних частот). Угловая частота равно 1 / (2 * pi R C), где R - это параллельное значение всех трех резисторов, а C - это значение добавляемого ограничения (в любом случае АЦП требуется ограничение.). Пожалуйста, рассчитайте точность этой установки с учетом всех допусков (R, ошибка АЦП в +/- макс. LSB, ошибка Ref., ...) - она ​​может быть хуже, чем ожидалось.
зебонавт
@zebonaut - я снова сделал расчет и подробно объяснил каждый шаг в своем обновленном ответе (гораздо менее сложным, чем кажется!). Это дает вам точное сопоставление (-20 В .. + 20 В) с (0 В .. + 5 В)
stevenvh
@zebonaut: конденсатор может быть полезен в качестве фильтра сглаживания, но он ничего не делает с ассиметрией. Я не думал, что маленькая ассиметрия была большой проблемой. Это достаточно просто, чтобы позаботиться в прошивке, как вы сказали.
Олин Латроп
Если вы хотите компенсировать асимметрию в программном обеспечении, вам придется рассчитать точную передаточную функцию. Если вы все равно должны это сделать, почему бы не использовать правильные значения резисторов в первую очередь (а не те, которые
указаны в
@stevenvh: Нет ничего плохого в использовании «правильных» значений резисторов. Я понял, что точное отображение возможно (как я уже упоминал в своем ответе), но решил не вдаваться в сложность расчетов и ответить на концептуально более простой случай, который приводит к небольшой ассиметрии. В любом случае, вам нужно немного ослабить, чтобы учесть отстой, и, вероятно, все равно придется калибровать в прошивке.
Олин Латроп
2

Это стандартная схема для этого. Вам необходимо масштабировать значения резистора для требуемого импеданса.

Леон Хеллер
источник
Вам нужно убедиться, что импеданс источника относительно низок при использовании этого?
Ник Т
Леон, почему бы не использовать конденсатор вместо резистора 1 кОм?
Stevenvh
Это DC-связанное решение. Последовательный резистор необходим для правильной работы.
Леон Хеллер
3
@ Леон Хеллер: Я думаю, что это был бы лучший ответ, если бы вы объяснили, как найти правильные значения для резисторов.
Федерико Руссо
2

Если сигнал не постоянный ток, или если ссылка постоянного тока не имеет значения, сигнал может быть соединен с емкостным входом АЦПА.

В качестве альтернативы, если ваше заземление для PIC является плавающим, вы можете привязать свое заземление сигнала к 1/2 VDD PIC.

W5VO
источник
Если вы используете емкостную связь, вы избавляетесь от компонента постоянного тока, но отрицательная часть сигнала все равно будет опускаться ниже уровня земли, если вы не обеспечите смещение на входном выводе резистивным делителем, как в схеме Леона.
Stevenvh
Напряжение питания не указано - оно будет работать с 5 В АЦП. Если бы вы использовали меньший Vdd, то вам нужно было бы масштабировать ввод. В этот момент он превратился бы в цепь Леона с конденсатором.
W5VO
2

Следующая схема должна сделать работу:

3.3V
 +
 |
 \
 / 1k
 \
 |
 +-- ADC input
 |
 \
 /  1k
 \
 |
 +-- Signal input (-2V to +2V)

Это потенциальный разделитель. При -2 В выход будет 0,65 В; при + 2В, 2,65 В.

Все шум на 3.3V железной дороге будет получить переданы на вход, поэтому использовать ссылку на хорошее напряжение, чтобы уменьшить эту проблему.

Это будет работать и с другими материалами, но смещение сместится.

Томас О
источник
Да, это работает, но было бы неплохо использовать полный диапазон АЦП :-)
stevenvh
@stevenh Вы можете сделать это, используя эталонные значения 0,65 В и 2,65 В, хотя тогда вы также можете использовать свою схему.
Томас О
AFAIK PIC имеют только ВрЕF+ вход, вы не можете установить ВрЕF-, Как и для большинства контроллеров, это всегда связано сгND,
Стивенв
@stevenh PIC24, dsPIC и PIC32 определенно имеют Vref-. Я думаю, что некоторые 18F тоже.
Томас О
Да, хорошо, я не знаю их всех (их много ). ОП не говорит, какую часть он использует, и он, кажется, исчез, поэтому бесполезно спрашивать его.
Стивенв
1

Сумматор напряжения Томаса с двумя одинаковыми резисторами действительно прост, но имеет недостаток в том, что диапазон входного сигнала в АЦП уменьшается, а это означает, что шум будет оказывать большее влияние. Также нижний предел составляет 0,65 В. Если ваш микроконтроллер не имеетВADСрЕF-На вход (большинство контроллеров этого не делают) эта часть входного диапазона останется неиспользованной.
Это легко исправить: выберите соотношение резисторов, чтобыВADCбудет 0В, если вход -2В. ДляВDD5 В это означает, что входной резистор должен составлять 2/5 от нагрузочного резистора. На входе 2 ВВADСбудет 2,86 В. УстановленВADСрЕF+ до этого уровня, и от -2 В до + 2 В охватит весь диапазон АЦП.

Если ваш ВDD = 3,3 В входное сопротивление должно быть 61% (2В3,3В) подтягивания. При + 2ВВADС будет 2,49 В.

stevenvh
источник