Шум на пьезо-аналоговом чтении из-за источника питания Arduino
Я делаю устройство, которое измеряет температуру и вибрации и записывает значения на SD-карту. Это будет отдельное устройство.
Используемое оборудование: - Ардуино Уно -Часы реального времени PCF8523 - MAX3186 + датчик температуры RTD PT100 - Экран регистратора данных Adafruit - Типичный голый пьезодатчик
Для вибрации используется пьезодатчик. Поскольку он может генерировать сигнал в двух направлениях, я решил использовать делитель напряжения для смещения сигнала от GND. Два резистора 5.1K подключены от пьезоотрицательной клеммы к 5V и GND. Резистор 1 МОм подключен параллельно пьезодатчику. Положительная клемма подключается к аналоговому входу 0.
Датчик считывается 100 раз для каждой точки данных, максимальное и минимальное значения сохраняются, а окончательное значение устанавливается как разница между ними (удвоенная амплитуда).
USB
Настенный адаптер 9 В
Когда питание системы подается через USB-порт ноутбука, значение в состоянии покоя имеет дрожание в несколько бит. Когда ардуино питается от настенного адаптера 9 В, джиттер составляет +/- 30 бит. Любые мелкие вибрации исчезают в шуме.
USB с пьезоэлементом
9В с пьезоэлементом
9В без пьезоэлемента
Мне нужна помощь, чтобы найти лучший путь вперед.
edit 29-10 17:53 Добавлены лучшие графики
edit 30-10 17:53 Добавлены графики для линий 2,5 В и 3,3 В
2 ответа
Лучший ответ:
Настенный адаптер 9 В в большинстве случаев представляет собой импульсный регулятор мощности с высокой частотой. Это как радиопередатчик рядом с проводом. Так что нет ничего мистического, когда плавный USB Voltage показывает не проблемы, а "радиопередатчик" делает.
Есть два способа воздействия источника питания: по радиоволне или в виде пульсаций по регулируемому напряжению вашего Arduino.
Я спросил себя, какой из них (или даже оба)? Если вы используете дополнительное регулируемое аналоговое опорное напряжение (AREF) в качестве + 5 В на вашем делителе напряжения, более вероятно, что проблема возникнет по воздуху. Тогда будет полезно, если вы активируете экран провода, подключив его к GND.
Если проблема связана с пульсациями напряжения питания, их необходимо сгладить. Возможно с ФНЧ (большой элко между Vcc и GND).
Возможно, у вас железный сердечник соленоида. Затем вы можете несколько раз обернуть провод к пьезодатчику вокруг него (возле контакта A0). Этот метод часто используется в блоках питания компьютеров, чтобы предотвратить выход частот переключения в линии электропередач общего пользования.
Чтобы было ясно, я использую обычный 5V Vcc для делителя напряжения. Есть ли лучшее регулируемое напряжение, которое я могу использовать на плате? У меня сложилось впечатление, что вывод Aref можно использовать только для подачи внешней ссылки. Могу ли я использовать этот контакт для получения регулируемого напряжения 5 В, или я неправильно понял? Как насчет использования 3,3 В?, @YouKnowNothingJohn
Из моих измерений я знаю, что обычный Vcc плохо стабилизирован. Если в источнике питания есть пульсации, я часто обнаруживал затухающие пульсации и в Vcc. VREF — это специальный вывод, который программируется для обеспечения опорного напряжения для АЦП. см. https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/. Я имел в виду подключение VCC к VREF и установку аналоговой ссылки на EXTERNAL. Чем опорное напряжение и VCC имеют пульсации. Поскольку цифровое значение получается путем сравнения обоих напряжений, ошибка может быть устранена. Но это всего лишь идея. ;-), @Peter Paul Kiefer
Вы также можете построить внешнее стабилизированное напряжение, добавить его к VREF и установить опорное напряжение на EXTERNAL. И вы должны использовать это напряжение для вашего пьезо эталона. Но это необходимо только в том случае, если проблема вызвана пульсациями на VCC. Если проблема вызвана электромагнитными помехами, вы должны попытаться отфильтровать пьезоэлектрическое напряжение до того, как оно достигнет входа A0. Я занят этим утром, поэтому я добавляю только два комментария. Вечером отредактирую свой ответ, чтобы упорядочить информацию. Мой английский не очень хорош, поэтому я могу быть довольно неясным. ;-), @Peter Paul Kiefer
Питер, не проблема, ты мне очень помог! Теперь я понимаю, что вы имеете в виду под поставкой Vref с Vcc. Я провел несколько тестов напряжения, подключил 5 В к A1 и 3,3 В к A2 и провел те же измерения. Я взял 100 образцов и показываю двойную амплитуду (разница между минимальным и максимальным значениями). USB https://imgur.com/rmhgnRB 9В https://imgur.com/MQEMvc9. Я думаю, что потенциальным решением может быть использование 3,3 В от щита регистрации данных, поскольку оно выглядит очень стабильным! Как ни странно, графики 5 В не показывают огромной разницы между двумя источниками питания..., @YouKnowNothingJohn
На самом деле, я снова сделал графики, и теперь они выглядят так. USB: https://imgur.com/ImOdHyC. 9В: https://imgur.com/JWyaxo2. Я не уверен, откуда взялась разница, но это, кажется, имеет смысл. Итак, судя по этим графикам, у меня не должно возникнуть проблем с запуском пьезоэлемента с 5 В через делитель напряжения. Я посмотрю, смогу ли я также измерить напряжение после делителя., @YouKnowNothingJohn
Вот несколько графиков линии 2,5 В с пьезоэлементом и без него. USB с пьезо: https://imgur.com/mIbWWd4. 9В с пьезо: https://imgur.com/JoxX7BS. 9В без пьезо: https://imgur.com/buD1Fc0. Странный..., @YouKnowNothingJohn
Последние графики определенно являются намеком на то, что проблема связана с длинным проводом к пьезоэлементу. Если убрать, то сигнал ровный. Вы пробовали заземлить экран?, @Peter Paul Kiefer
Новый сюжет дает еще больше понимания... 9V с пьезоэлектрическим и без него: https://imgur.com/qEnOS7T. Я вручную подключил новый пьезоэлемент с коротким проводом (40 мм) к цепи, а затем снова отключил его. Вы можете увидеть эффект на 2,5 В ..., @YouKnowNothingJohn
Другой сюжет, где я подключаю и отключаю длинный проводной пьезоэлемент, выглядит очень похоже. источник 9В. https://imgur.com/TK63aF7, @YouKnowNothingJohn
Извините, что уже поздно, и я слишком устал, чтобы редактировать ответ, как и обещал. Но меня немного раздражает то, что я вижу в новых сюжетах. Укорочение проводов увеличивает эффект. Похоже, что источник питания посылает волны, а пьезоэлемент их принимает. Возможно, он действует как кварцевый осциллятор, я никогда не слышал о таком эффекте. Возможно, это хорошо известное поведение, или я неправильно его истолковал, но это точно, мы за пределами моих возможностей. Из того, что мы знаем сейчас, это вопрос для форума электроники в SE., @Peter Paul Kiefer
Петр, большое спасибо за терпение и помощь. Я наконец-то нашел решение своей проблемы и оказалось, что достаточно было подключить экран от пьезопровода к GND Arduino. Я чувствую себя глупо из-за того, что не пробовал это раньше, я нацелился на пульсации напряжения, потому что при USB-соединении не было проблем с шумом. На самом деле я ошибся с короткозамкнутыми участками, переделал их как следует с коннектором и джиттера не увидел...., @YouKnowNothingJohn
Пожалуйста. Я ожидаю, что вы опробовали заземление, потому что вы больше не упомянули об этом. Так что это тоже немного моя вина. Я должен был спросить тебя еще раз. В начале это решение было моим любимым. Но беседа была очень интересной, и у меня появилось несколько новых идей о том, как использовать, например, второй UNO для моделирования очень низкочастотного осциллографа. Я многому научился, и теперь моя очередь благодарить вас., @Peter Paul Kiefer
Помимо того, что предлагает Питер Пол Кифер, вы также можете разместить RC фильтр нижних частот между пьезопреобразователем и аналоговым входом.
Вы упомянули, что будете выбирать это значение 100 раз в секунду. Таким образом, частота среза для фильтра должна быть установлена на 50 Гц (частота Найквиста).
Я не думаю, что ОП берет семплы с частотой 100 Гц. Он только сказал, что берет 100 выборок, чтобы выбрать из них максимальное и минимальное значения. Я полагаю, что он принимает это с максимально возможной скоростью. Я тоже думал о фильтрах нижних частот, но, поскольку он использовал пьезоэлемент для обнаружения ударов, я ожидаю, что часть частотного спектра (пьезоимпульсов) будет в том же диапазоне, что и электромагнитные помехи. Так что попробовать определенно стоит, но я не ожидаю хороших результатов., @Peter Paul Kiefer
- Считанное значение не меняется при вращении потенциометра в Arduino?
- Не получая никакого выхода от датчика ЭКГ AD8232
- Почему чтение на ESP32 читает max, когда чтение на UNO читается точно?
- Нестабильные показания аналогового датчика
- Помогите совместить цифровой и аналоговый код в программировании ардуино
- Какова работа pulseIn?
- Сколько датчиков может поддерживать один модуль Arduino?
- Получение BPM из данного кода
У вас есть osci, чтобы проверить, является ли 5 В от Arduino Vcc плавным или «рифленым»? Вы использовали опорное напряжение AVRef? Это должно быть стабильно. Какой длины ваши провода? Можете укоротить их для датчика и резисторов, чтобы антенна была минимальной? Схема и фото вашей установки были бы полезны. ;-), @Peter Paul Kiefer
@PeterPaulKiefer Извините, у меня нет осциллографа, чтобы проверить. Я использую аналоговое чтение по умолчанию, я не менял эталонные настройки. Провод к пьезо примерно 75 см и экранирован, экран на данный момент не подключен к GND. Странно то, что вся настройка абсолютно одинакова для обоих графиков, но при питании Arduino от 9 В я получаю огромную проблему с дрожанием. Добавил схему пьезо., @YouKnowNothingJohn