Выход звукового датчика застревает на высоких значениях, когда я включаю задержку в функцию цикла
Я использую модуль датчика звука Waveshare.
Я использую этот простой код для тестирования модуля:
Как видите, проблема в том, что когда у меня есть задержка в программе, как только AnalogRead становится больше 10 (слегка постукивая пальцем по микрофону), "звук" печатается, а выход звукового датчика не не возвращается к нормальным значениям, и «звук» продолжает повторяться. Если я не использую задержку, все работает нормально, но мне нужна эта задержка.
*ПРИМЕЧАНИЕ. В этом тесте я использую отладочную плату STM32 Nucleo, но я не думаю, что это усугубляет проблему.
@BrainTrance, 👍-1
Обсуждение1 ответ
Вывод AOUT этого устройства представляет собой не более чем усиленный аудиосигнал. Он связан по переменному току, а это означает, что это небольшой сигнал, варьирующийся около 0 В. Он не подходит для подачи непосредственно в АЦП.
Конденсатор связи по переменному току будет заряжаться за счет смещения постоянного тока, которое он должен удалить, и отсутствие какой-либо утечки на этом конденсаторе, когда АЦП не производит выборку, означает, что он никогда не разряжается должным образом. Увеличивая скорость выборки, вы увеличиваете нагрузку, и поэтому она может несколько разряжаться.
Чтобы правильно прочитать этот контакт AOUT, вам нужно добавить собственное смещение постоянного тока к половине напряжения VCC вашей платы Arduino, что можно сделать, добавив два резистора 10k. Один от VCC (5 В) к аналоговому входу, а другой от аналогового входа к земле.
Тогда сигнал, который вы читаете, будет "холостой" около 2,5 В (показание АЦП 512 В) и будет варьироваться в зависимости от этого по мере улавливания звука.
Обратите внимание, что вы не можете просто сэмплировать один раз в секунду и надеяться: не предусмотрено условие "происходил ли звук в последнюю секунду". Вместо этого вам действительно нужно делать выборки все время.
Если все, что вас волнует, это какой-то звук выше порогового значения, вам лучше использовать DOUT, подключенный к цифровому входу или даже контакту прерывания, и использовать потенциометр настройки порога на плате.
- Проблема с датчиком температуры и влажности DHT11
- Почему dtostrf() не работает для этого значения?
- Проблема с открытием нескольких текстовых файлов одновременно/по порядку с использованием <SD.h>
- Считанное значение не меняется при вращении потенциометра в Arduino?
- hx711 и датчик нагрузки показывают 0 для калибровки
- Не получая никакого выхода от датчика ЭКГ AD8232
- Почему чтение на ESP32 читает max, когда чтение на UNO читается точно?
- Нестабильные показания аналогового датчика
Что такое «модуль датчика звука Waveshare»? Мы не экстрасенсы. Нет ссылок, нет ответа., @Majenko
пожалуйста, напечатайте фактические значения ... не используйте график, @jsotola
Я загрузил отпечатки монитора, @BrainTrance
Является ли [это](https://www.waveshare.com/product/modules/sensors/fingerprint-sound/sound-sensor.htm) вашим таинственным устройством? Если да, то как вы его подключаете? Вы пытаетесь прочитать вывод AOUT или DOUT?, @Majenko
Маженко не нужны сверхспособности. Вам нужно всего 5 секунд, чтобы погуглить и найти всю информацию по первой появившейся ссылке. Если тратить 5 секунд слишком много времени, не стесняйтесь отклонить вопрос и сэкономить свое время., @BrainTrance
Да. Подключил в соответствии с инструкцией по эксплуатации. Я читаю АУТ., @BrainTrance
@BrainTrance ВЫ знаете, что первая ссылка — правильная, потому что ВЫ знаете, какое у вас устройство. МЫ нет. Если вы не даете четкой информации, то мы барахтаемся в темноте и не можем дать хороший ответ. Будьте точны в своей информации., @Majenko