Выход звукового датчика застревает на высоких значениях, когда я включаю задержку в функцию цикла

Я использую модуль датчика звука Waveshare.

Я использую этот простой код для тестирования модуля:

Как видите, проблема в том, что когда у меня есть задержка в программе, как только AnalogRead становится больше 10 (слегка постукивая пальцем по микрофону), "звук" печатается, а выход звукового датчика не не возвращается к нормальным значениям, и «звук» продолжает повторяться. Если я не использую задержку, все работает нормально, но мне нужна эта задержка.

*ПРИМЕЧАНИЕ. В этом тесте я использую отладочную плату STM32 Nucleo, но я не думаю, что это усугубляет проблему.

, 👍-1

Обсуждение

Что такое «модуль датчика звука 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


1 ответ


1

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

Конденсатор связи по переменному току будет заряжаться за счет смещения постоянного тока, которое он должен удалить, и отсутствие какой-либо утечки на этом конденсаторе, когда АЦП не производит выборку, означает, что он никогда не разряжается должным образом. Увеличивая скорость выборки, вы увеличиваете нагрузку, и поэтому она может несколько разряжаться.

Чтобы правильно прочитать этот контакт AOUT, вам нужно добавить собственное смещение постоянного тока к половине напряжения VCC вашей платы Arduino, что можно сделать, добавив два резистора 10k. Один от VCC (5 В) к аналоговому входу, а другой от аналогового входа к земле.

Тогда сигнал, который вы читаете, будет "холостой" около 2,5 В (показание АЦП 512 В) и будет варьироваться в зависимости от этого по мере улавливания звука.

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

Если все, что вас волнует, это какой-то звук выше порогового значения, вам лучше использовать DOUT, подключенный к цифровому входу или даже контакту прерывания, и использовать потенциометр настройки порога на плате.

,