Как мне измерить аналоговый сигнал на моем Arduino Mega, который имеет как положительное, так и отрицательное напряжение?
У меня есть сигнал, который колеблется от -70 мВ до 50 мВ. Как мне заставить Arduino прочитать это? В конечном итоге я пытаюсь построить график данных в реальном времени, чтобы это выглядело так.
https://i.stack.imgur.com/a8zIE.jpg
@Bennis, 👍1
Обсуждение2 ответа
Вам необходимо усилить сигнал и добавить 2,5 В в качестве «виртуальной земли» для усиления. Это немного сложнее, поскольку вам нужен источник VCC/2 с низким импедансом, чтобы питать усилитель в качестве виртуальной земли. Для этого потребуется буфер с единичным коэффициентом усиления, питаемый от делителя напряжения:
Теперь вы используете это для питания усилителя:
Усиление устанавливается на 1+(RF/RG) или в данном случае на 11, что дает от -0,77 В до +0,55 В.
Хотя есть более простой вариант. (Есть еще один промежуточный вариант, но редактор его упустил, и мне не терпится тратить время на его воссоздание).
Однако этот метод имеет свою цену: он инвертирует сигнал. -0,07 становится 0,07, а 0,05 становится -0,05, умножается на коэффициент усиления и добавляется к смещению:
Здесь вы получаете преобразование от -0,07 В – +0,05 В до +0,7 В – –0,5 В. Это означает, что в программном обеспечении вам необходимо инвертировать значение (просто вычесть его из 0 после удаления смещения постоянного тока).
По сути, вы переносите часть сложности из схемы в программное обеспечение.
Лично я использую инвертирующий усилитель (последняя схема), поскольку ток виртуальной земли близок к нулю, поэтому вам не нужен источник напряжения с низким импедансом VCC/2. Также проще добиться более ощутимого усиления (например, 10-кратного), чем в неинвертирующем усилителе, у которого к коэффициенту усиления всегда добавляется 1.
Ваша вторая схема не имеет четко определенной рабочей точки постоянного тока., @Edgar Bonet
Вполне возможно, что нет. Мне приснился кошмар, проведенный с редактором. Он продолжал стирать что-то, давать сбои и удалять схемы., @Majenko
@EdgarBonet На неинвертирующем втором каскаде операционный усилитель был перевернут… упс…, @Majenko
Вот моя попытка: если ваш источник напряжения не против утонуть что-то вроде 150 мкА, вы можете попробовать что-то вроде этого:
Это должно сопоставить входной диапазон [-70 мВ, +50 мВ] с [0,04 В, 4,06 В].
- Чтение частоты ввода в цифровых выводах
- Аналоговое считывание не дает правильной формы сигнала, как у осциллографа
- Использование аналогового входа для чтения кнопки
- Безопасное включение делителя напряжения на аккумуляторе 12 В
- Датчики Lolin NodeMCU V3 и 5V
- SPI с преобразователем уровня на другом конце соединения
- Пороговые напряжения цифрового ввода-вывода для ATmega32u4
- Выход 3,3 В при установке вывода на высокий уровень
я не думаю, что у Arduino есть большая чувствительность (точность) между такими близкими значениями. Я бы использовал операционный усилитель, чтобы усилить его до ~0–5 В, после того, как он прошел через схему суммирования напряжений, двойной операционный усилитель, такой как 358, позволит вам сделать и то, и другое с помощью одного чипа., @dandavis