Как уменьшить шум аналогового считывания?
В настоящее время пытаюсь считывать значения с фотодиода с помощью analogread. Он постоянно такой шумный, и я подумал, что, возможно, что-то не так с моим фильтром нижних частот, но я решил просто подключить батарею 1,5 В к аналоговому контакту, и у меня было столько же шума (колебания более 10 мВ). Есть ли способ обойти весь этот шум? Потому что это делает собранные данные непригодными для моего проекта.
Код для считывания аналоговых значений:
int diodePin = A0;
int sensorValue = 0;
int sensorVoltage = 0;
void setup() {
Serial.begin(57600);
}
void loop() {
sensorValue = analogRead(diodePin);
sensorVoltage = sensorValue*(5000/1024);
Serial.println(sensorVoltage);
delay(10);
}
@Yousuf , 👍3
Обсуждение1 ответ
Я всегда делаю две вещи, когда "считываю" аналоговые данные с помощью Arduino.
Измерение напряжения питания платы arduino с помощью ее внутреннего эталона и калибровка с помощью другого" хорошего"вольтметра ("4 1/2 "цифры-20000 точек или" 3 3/4 " цифры-6000 точек). ( Полезная ссылка https://www.instructables.com/Secret-Arduino-Voltmeter/ )
Выборка большего количества аналоговых данных для вычисления "среднего значения" ... Это может удалить некоторый "шум" и добавить "некоторые биты". 16 образцов добавят "4" бита при ваших "показаниях". Конечно, глобальная частота дискретизации будет ниже.
Не забудь, заземляющая звезда проводов !!!
Имейте в виду, что усреднение выборок увеличит разрешение, но **может не** повысить точность. Только случайный шум может быть "усреднен"...системная неточность останется., @Elliot Alderson
Верно. Только в том случае, если "линейность" лучше, чем 1/16 LSB мин... что очень "редко". Некоторые случаи 1/4 LSB очень хороших преобразователей., @Antonio51
- Отправка значения с одного Arduino на другой
- Использование аналогового входа для чтения кнопки
- Как работать с аналоговыми контактами в цикле?
- Arduino непрерывно считывает значение АЦП с помощью прерывания
- Распиновка аналога Arduino Pro Micro
- analogRead всегда 1023 на Arduino Due
- Чтение частоты ввода в цифровых выводах
- ошибка: 'analogRead' was not declared in this scope
Без схемы это будет невозможно, хотя это может быть более актуально для электроники SE. 0,01 В из 3,3 В/5 В звучит не так уж плохо, но это зависит от контекста и аппаратного обеспечения., @Dave Newton
являются ли показания шумными, если датчик подвергается воздействию только солнечного света?, @jsotola
никаких шумных показаний в любое время. как я уже сказал, даже если я буквально просто попытаюсь считывать напряжение батареи типа АА с аналогового входа, это не даст мне ровного считывания вообще., @Yousuf
конечно: возьмите 3 показания, отсортируйте, оставьте только среднее., @dandavis
Мне нужны непрерывные хорошие показания, чтобы я мог выполнить преобразование Фурье собранных данных, @Yousuf
Пожалуйста, опубликуйте схему, а не что-нибудь завитое. Ваш вопрос сложный, и, не будучи там, следующая лучшая вещь-это схема, которую вы нарисовали, когда подключали ее. Ссылки на техническую информацию об аппаратных устройствах облегчают работу всем нам. На данный момент все, что мы можем сделать, это только догадываться., @Gil
Просто чтобы убедиться, что я понимаю: вы вводите 1,5 В в аналоговый вывод (5 В считывает 1024, поэтому 1,5 В будет ~307), это 10-разрядный АЦП, поэтому ~5 мВ с аналоговой ссылкой по умолчанию. Вы видите значения от 306 до 308. Что вы используете для питания Arduino? Вы пробовали использовать другую ссылку или стабильный ввод AREF? Вы проверяли такие вещи, как [это] (https://forum.arduino.cc/t/help-with-weird-analog-input-problem-unstable-analog-reference/82011)? Без надежного опорного напряжения это все еще не кажется таким уж необычным. У аналога было много движущихся частей., @Dave Newton
В соответствии с вашей завитой штукой вы должны получить ноль, так как у Arduino нет питания, а A+ и заземление соединены вместе на клемме+. Размещение схемы очень помогло бы, Дэйв Ньютон предположил это несколько дней назад., @Gil