Понадобилось мне замерять фоновый уровень звука для проекта умного дома и оказалось, что это не простая задача, даже имея специальный модуль звука с аналоговым выходом. Для начала я просто подключил аналоговый выход датчика на аналоговый вход WiFi-контроллера, который раз в две минуты передавал значения со входа в интернет на мой сайт. На сайте я лицезрел график изменения этого сигнала. Его уровень зависел только от положения движка подстроечного резистора и от шума в помещении не зависел.
И не удивительно, ведь на выходе аналогового датчика звука получаем колебания относительно какой-то постоянной составляющей, которая подстраивается резистором. И, чтобы замерять уровень шума, необходимо найти размах колебаний исключив постоянную составляющую.
Схема подключения
Здесь показана схема подключения любого датчика звука с аналоговым выходом, который вам попадется. У меня был датчик с дискретным и аналоговым выходами в одном. Дискретный выход висел в воздухе.

Программа контроллера
Здесь в цикле измерений делается столько замеров, сколько контроллер успеет за 50 мс и из них находятся максимальное и минимальное значение. После чего размахом считаем разницу этих значений, а это и есть искомый уровень звука.
const int sampleWindow = 50; // время выборки значений mS (50 mS = 20Hz)
unsigned int sample;
void setup()
{
Serial.begin(9600);
}
void loop()
{
unsigned long startMillis= millis();
unsigned int peakToPeak = 0; // размах колебаний
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
// собираем данные на протяжении 50 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(0);
if (sample < 1024)
{
if (sample > signalMax)
{
signalMax = sample; // сохранение максимального значения
}
else if (sample < signalMin)
{
signalMin = sample; // сохранение минимального значения
}
}
}
peakToPeak = signalMax - signalMin; // max - min = размах колебаний
Serial.println(peakToPeak);
}
Вывод
Просматривая открытый монитор порта, получаем уровень звука в относительных величинах от 0 до 1023, Которые можно преобразовать или в напряжение или в проценты или в децибеллы. Я себе для умного дома собираюсь использовать преобразование в проценты.
Похоже, что мой датчик звука рассчитан на достаточно громкий шум и возможно для увеличения чувствительности к негромким шорохам придется использовать, что-то самодельное.
Набор транзисторов 10 х 10 шт.TO-92
В наборе следующие биполярные транзисторы по 10 штук каждого типа:BC337 BC327 2N2222 2N2907 2N3904 2..
138.35грн.
Двойная шестерня для зубчатого ремня на 20 зубьев под ось 8 мм
Сдвоенная шестерня для передачи крутящего момента с одного вала на другой.Применяется для разделения..
78.53грн.
ESP32: Высокоточные измерения сигналов с помощью таймеров
ESP32: Высокоточные измерения сигналов с помощью таймеров ESP32 оснащён мощными аппаратными тайме..
Arduino многомерные массивы
Привет друзья! Это уже второе видео о массивах. В первом я рассказал, что знаю об одномерных массива..
Инфракрасный датчик движения HC-SR505
Миниатюрный экономичный датчик движения.Напряжение питания 4,5 ... 20 ВТок покоя < 60 мкАВыходные..
76.78грн.





