Перейти к содержанию

Микрофоны для микроконтроллера: аналоговые и цифровые MEMS, PDM и I²S

MEMS-микрофон бывает аналоговым, с выходом PDM или сразу с I²S, и от этого зависит, что стоит между ним и программой — усилитель с АЦП, дециматор или ничего. Разбираем по документам TDK InvenSense, как читать чувствительность в дБВ и дБFS, чем шум и перегрузка ограничивают динамический диапазон, как подключить I²S-микрофон ICS-43434 и пересчитать его отсчёты в децибелы звукового давления.

Обновлено Редакция GAW

Микрофон превращает звуковое давление в электрический сигнал. В устройствах на микроконтроллерах теперь почти всегда ставят MEMS-микрофоны: чувствительный элемент — по сути переменный конденсатор с выходным сопротивлением порядка гигаом, за ним в том же корпусе — предусилитель, который понижает сопротивление и формирует выход (InvenSense, Design Considerations). Выход бывает трёх видов: аналоговый — напряжение звука, PDM — однобитный поток высокой частоты, I²S — готовые цифровые отсчёты.

Коротко

  • Чувствительность меряют синусом 1 кГц при 94 дБ SPL — это звуковое давление 1 Па.
  • Аналоговые микрофоны указывают чувствительность в дБВ (относительно 1 В/Па, среднеквадратичное), цифровые — в дБFS (относительно полной шкалы, по пику).
  • У цифрового микрофона чувствительность = 94 дБ − уровень перегрузки: ICS-43434 с перегрузкой 120 дБ SPL имеет −26 дБFS.
  • ICS-43434: I²S, 24 бита, 1,65–3,63 В, 490 мкА при 23–51,6 кГц и 230 мкА при 6,25–18,75 кГц, SNR 65 дБА.
  • На кадр I²S нужно 64 такта SCK: при 48 кГц SCK = 3,072 МГц.
  • Уровень звука по отсчётам ICS-43434: дБ SPL = дБFS + 120.

Децибелы, чувствительность и шум

Звуковое давление выражают в децибелах относительно порога слышимости; опорный уровень для микрофонов — 94 дБ SPL, давление 1 Па. Входной уровень в дБ SPL всегда среднеквадратичный (Understanding Microphone Sensitivity). Пересчёт децибелов в разы удобно делать в калькуляторе децибел.

Аналоговый микрофон. Чувствительность — выходное напряжение при 1 Па, в логарифмической форме:

SдБВ=20lg⁡SмВ/Па1000 мВ/Па.S_\text{дБВ} = 20 \lg \frac{S_\text{мВ/Па}}{1000\ \text{мВ/Па}}.

Например, у ADMP504 из примера InvenSense −38 дБВ — это 10−38/20 ≈ 12,6 мВ ср. кв. при 94 дБ SPL (наш расчёт). Усиление перед АЦП подбирают так, чтобы пиковый выход микрофона на максимальном уровне совпал с полной шкалой АЦП: в том же примере 0,25 В микрофона на АЦП с полной шкалой 1,0 В требуют усиления 4, то есть 12 дБ.

Цифровой микрофон. Чувствительность — уровень выхода в дБFS при 94 дБ SPL. Полную шкалу цифрового слова сопоставляют максимальному уровню, который микрофон пропускает, поэтому

SдБFS=94 дБ−AOP,S_\text{дБFS} = 94\ \text{дБ} - \text{AOP},

где AOP (acoustic overload point) — уровень перегрузки. При AOP = 120 дБ SPL получается −26 дБFS; поднять чувствительность, не понизив перегрузку, нельзя. Цифровые уровни — пиковые: 0 дБFS — синус, пики которого касаются полной шкалы, а прямоугольник полной шкалы имеет среднеквадратичный уровень +3 дБFS (ICS-43434, Digital Microphone Sensitivity). −26 дБFS — это пики 0,05 от полной шкалы.

Расхождение в трактовке. White paper InvenSense 2013 года (Understanding Microphone Sensitivity) пишет, что синус 94 дБ SPL при чувствительности −26 дБFS даёт пик −26 дБFS и среднеквадратичный уровень −29 дБFS — там среднеквадратичное значение отнесено к полной шкале как к пиковой величине. Даташит ICS-43434 называет «−29 дБFS ср. кв.» распространённым заблуждением: если 0 дБFS — это синус полной шкалы, то и среднеквадратичный уровень синуса с пиками 0,05 FS равен −26 дБFS. Числа не противоречат друг другу, но опорные уровни разные; формулы ниже построены по определению даташита.

Шум и динамический диапазон. SNR — разница между 94 дБ SPL и собственным шумом микрофона; эквивалентный входной шум EIN = 94 дБ − SNR. У ICS-43434 SNR 65 дБА, EIN 29 дБА SPL, а динамический диапазон от шума до перегрузки — 120 − 29 = 91 дБ. SNR и AOP выражены в акустических единицах, поэтому по ним можно сравнивать аналоговые, PDM- и I²S-микрофоны между собой.

Аналоговые MEMS-микрофоны

Аналоговый микрофон проще всего по выводам (обычно три) и меньше по размеру, но требует аккуратной аналоговой части (Design Considerations):

  • Выходное сопротивление — несколько сотен ом. Нагрузка с малым входным сопротивлением ослабляет сигнал: вход 2 кОм после выхода 200 Ом — почти на 10 %.
  • Смещение по постоянному току. Выход сидит где-то между нулём и питанием, чтобы громкие пики не обрезались, поэтому микрофон подключают через разделительный конденсатор. Он с входным сопротивлением следующего каскада образует фильтр высоких частот: 1 мкФ и 10 кОм дают 16 Гц — ниже собственного спада типичного микрофона на 100 Гц.
  • Усилитель. Сигнал в десятки милливольт усиливают до шкалы АЦП, например неинвертирующим каскадом на ОУ со смещением в середину питания.

Для микроконтроллера аналоговый путь означает ещё и АЦП с выборкой не меньше удвоенной верхней частоты звука и аналоговый фильтр перед ним — а линия от микрофона до АЦП ловит наводки от радиомодулей.

PDM и I²S: цифровые MEMS-микрофоны

Цифровой микрофон переносит АЦП внутрь корпуса, и по плате идёт уже цифровой сигнал. InvenSense выделяет главное достоинство: цифровые линии меньше страдают от радиопомех Wi-Fi, Bluetooth и сотовой связи, поэтому микрофон можно ставить далеко от процессора. На длинных линиях полезны последовательные согласующие резисторы 20–100 Ом.

АналоговыйPDMI²S
Выходнапряжение звукаоднобитный поток, такт около 3 МГц24-битные отсчёты на частоте выборки
Что нужно в МКАЦП, усилитель, фильтринтерфейс PDM и децимационный фильтринтерфейс I²S
Два микрофона на одной линиинетда, на разных фронтах тактада, в левом и правом каналах
Сигналывыходтакт и данныетакт бита, такт слова, данные

PDM — самый распространённый цифровой интерфейс микрофонов: два микрофона делят одну линию такта и одну линию данных, каждый выдаёт бит на своём фронте, поэтому каналы синхронны. Но однобитный поток нужно отфильтровать и проредить до частоты звука, и это работа процессора или кодека. I²S-микрофон содержит ту же цифровую часть, что и PDM, плюс децимационный фильтр и последовательный порт, и подключается к интерфейсу I²S микроконтроллера напрямую.

I²S-микрофон ICS-43434

ICS-43434 — микрофон TDK InvenSense с нижним звуковым портом в корпусе 3,50 × 2,65 × 0,98 мм. Режим он выбирает сам по частоте такта слова (WS), то есть по частоте выборки:

Параметр по даташиту DS-000069Высокая производительностьМалое потребление
Частота выборки fS23–51,6 кГц6,25–18,75 кГц
Ток при 1,8 В490 мкА, до 550 мкА230 мкА, до 300 мкА
Чувствительность−26 дБFS ± 1 дБ−26 дБFS ± 1 дБ
SNR, EIN65 дБА, 29 дБА SPL64 дБА, 30 дБА SPL
Перегрузка (10 % THD)120 дБ SPL120 дБ SPL
Нелинейные искажения при 105 дБ SPL0,2 %, до 1 %0,2 %, до 1 %

Общие параметры: питание 1,65–3,63 В, ниже fS = 3,125 кГц — сон с током 12 мкА, частотная характеристика 60 Гц – 20 кГц, встроенный фильтр высоких частот на 24 Гц убирает постоянную составляющую. Полоса децимационного фильтра — 0,417 · fS (20 кГц при 48 кГц) с неравномерностью ±0,3 дБ, групповая задержка — 2/fS. Допуск чувствительности ±1 дБ позволяет собирать решётки из нескольких микрофонов без калибровки каждого.

Подключение I²S-микрофона ICS-43434 к микроконтроллеруПитание 1,8–3,3 В подаётся на вывод 5 (VDD) микрофона ICS-43434, рядом стоит конденсатор C1 0,1 мкФ на общий провод. Вывод 2 (LR) соединён с общим проводом — микрофон передаёт левый канал. Выводы 1 (WS), 4 (SCK) и 6 (SD) идут к интерфейсу I²S микроконтроллера; линия SD подтянута к общему проводу резистором R1 100 кОм. Вывод 3 — общий провод.ICS-43434I²S, 24 битаVDD5LR2WS1SCK4SD6GND3МКI²SWSSCKSD1,8–3,3 ВC10,1 мкФR1100 кОмLR = 0 — левый каналWS = fSSCK = 64 · fSпри fS = 48 кГц SCK = 3,072 МГц; без тактов (SCK ниже ~200 кГц) микрофон уходит в ожидание
Моно-подключение ICS-43434 по рис. 8 и табл. 8 даташита TDK InvenSense: VDD с конденсатором 0,1 мкФ, LR на общий провод (левый канал), WS, SCK и SD — к интерфейсу I²S, SD подтянут к общему проводу резистором 100 кОм

Выводы: 1 — WS, 2 — LR, 3 — GND, 4 — SCK, 5 — VDD, 6 — SD.

  • LR выбирает канал: низкий уровень — левый (данные после спада WS), высокий — правый (после фронта WS). Для стерео два микрофона ставят на одну линию SD, у одного LR на общий провод, у другого — на питание. Оба делают выборку одновременно, в начале кадра по спаду WS.
  • SD в промежутках между своими словами переходит в Z-состояние, и линию разряжает резистор 100 кОм на общий провод; если нужно быстрее — 10 кОм. Выход рассчитан на нагрузку до 85 пФ, вход каждого отключённого микрофона на линии добавляет около 6 пФ.
  • WS внутри подтянут к общему проводу резистором 100 кОм: если держать WS в единице в режиме ожидания, через него течёт VDD/100 кОм.
  • Питание развязывают керамическим конденсатором 0,1 мкФ X7R у самых выводов VDD и GND, дорожки — короткие, на одном слое, без переходных отверстий.

Кадр. Формат — стандартный I²S: 24 бита в дополнительном коде, старшим битом вперёд, старший бит задержан на один такт SCK от начала полукадра. На кадр (левый плюс правый канал) нужно ровно 64 такта SCK:

fSCK=64⋅fS,64⋅48 кГц=3,072 МГц.f_\text{SCK} = 64 \cdot f_S, \qquad 64 \cdot 48\ \text{кГц} = 3{,}072\ \text{МГц}.

Период SCK по даташиту — от 303 до 2500 нс, то есть 0,4–3,3 МГц: при 64 тактах на кадр это и даёт частоты выборки до 51,6 кГц. В интерфейсе I²S микроконтроллера ставят 32-битный слот на канал и забирают из него старшие 24 бита.

Запуск, сон и ожидание. Ниже 3,125 кГц микрофон засыпает за 1 мс и переводит SD в Z-состояние. Проснувшись, он начинает выдавать данные через 32 768 тактов SCK — 10,7 мс при 3,072 МГц, а на уровень в пределах 1 дБ от установившегося выходит не дольше чем за 20 мс. Если частота SCK падает ниже примерно 200 кГц, микрофон уходит в режим ожидания; TDK советует для этого остановить SCK и WS и притянуть их к нулю. Подавать такты на обесточенный микрофон нельзя: постоянно открытые защитные диоды снижают его надёжность.

Уровень звука по отсчётам

Для ICS-43434 из чувствительности −26 дБFS при 94 дБ SPL следует простой пересчёт (наш вывод из определения чувствительности):

LSPL=LдБFS+120 дБ,LдБFS=20lg⁡2 Uср.кв223,L_\text{SPL} = L_\text{дБFS} + 120\ \text{дБ}, \qquad L_\text{дБFS} = 20 \lg \frac{\sqrt{2}\, U_\text{ср.кв}}{2^{23}},

где Uср.кв — среднеквадратичное значение 24-битных отсчётов за окно. Множитель √2 нужен потому, что 0 дБFS — синус с амплитудой полной шкалы, у которого среднеквадратичное значение в √2 раз меньше амплитуды. Пример: среднеквадратичное значение 297 000 даёт √2 · 297 000 / 8 388 608 ≈ 0,050 → −26 дБFS → 94 дБ SPL.

// Sound level from ICS-43434 samples (24-bit two's complement in the top bits of a 32-bit slot)
#include <math.h>

float ics43434_db_spl(const int32_t *slot, int n) {
    double sum = 0.0;
    for (int i = 0; i < n; i++) {
        int32_t s = slot[i] >> 8;              // keep the 24 data bits, arithmetic shift
        sum += (double)s * (double)s;
    }
    double rms = sqrt(sum / n);
    if (rms < 1.0) rms = 1.0;                  // avoid log of zero
    double dbfs = 20.0 * log10(sqrt(2.0) * rms / 8388608.0);   // 0 dBFS = full-scale sine
    return (float)(dbfs + 120.0);              // -26 dBFS at 94 dB SPL
}

Это невзвешенный уровень в полосе микрофона. Шумомер показывает уровень с частотной коррекцией (обычно A) и с нормированным временем усреднения, а погрешность чувствительности ±1 дБ и неравномерность характеристики остаются — для измерений прибор калибруют по эталонному источнику звука.

Монтаж MEMS-микрофона с нижним портом

  • Отверстие в плате под звуковым портом делают больше самого порта, не меньше 0,5 мм в диаметре, и не наносят на него паяльную пасту.
  • Пайка — оплавлением, не превышая профиль из даташита (пик 260 °C для бессвинцового припоя).
  • Отмывка. Вода не должна попадать в порт; продувка и ультразвуковая отмывка запрещены. Нельзя продувать порт и откачивать из него воздух, в том числе вакуумным пинцетом снизу корпуса.
  • Толщина и тип платы на работу не влияют; гибкую плату с микрофоном можно приклеить прямо к корпусу прибора — это хорошо уплотняет звуковой канал.

Типичные ошибки

  • Неверный формат кадра. Интерфейс настроен на 16-битные слоты или формат с выравниванием влево — данные сдвинуты на бит или обрезаны. ICS-43434 нужен стандартный I²S и 64 такта на кадр.
  • Читают не тот канал. LR на общем проводе — данные в левом канале; в правом микрофон линию не ведёт, и программа получает нули от подтяжки SD.
  • Нет резистора на SD. Между словами микрофон отпускает линию, и без подтяжки 100 кОм на общий провод, которую требует TDK, её уровень ничем не задан.
  • Частота выборки ниже 3,125 кГц. Микрофон спит и данных не выдаёт; самая низкая рабочая частота — 6,25 кГц, режим малого потребления.
  • Забыт множитель √2. Если среднеквадратичное значение отсчётов делить на полную шкалу без умножения на √2, уровень в дБFS и дБ SPL выходит на 3 дБ ниже: опорный 0 дБFS по даташиту — синус с амплитудой полной шкалы, а не постоянный сигнал.
  • Аналоговый микрофон напрямую на АЦП. Без усиления сигнал в десятки милливольт занимает несколько младших разрядов, а без разделительного конденсатора постоянное смещение съедает шкалу.

Другие датчики — в разделе «Датчики», о шине — в статье «I²S», о децибелах — в статье «Децибел».

Частые вопросы

Чем I²S-микрофон отличается от PDM-микрофона?

PDM-микрофон выдаёт однобитный поток с частотой около 3 МГц, и децимационный фильтр, превращающий его в отсчёты звука, должен работать в микроконтроллере или кодеке. I²S-микрофон, например ICS-43434, делает децимацию сам и выдаёт готовые 24-битные отсчёты на частоте выборки. Оба позволяют посадить два микрофона на одну линию данных: PDM — на разные фронты такта, I²S — в левый и правый каналы.

Как перевести отсчёты ICS-43434 в децибелы звукового давления?

У ICS-43434 синус 94 дБ SPL даёт пики −26 дБFS, то есть уровень в дБ SPL равен уровню в дБFS плюс 120. Уровень в дБFS для синуса — 20 · lg(A/FS), где A — амплитуда, FS — полная шкала 2²³. Если считать по среднеквадратичному значению отсчётов, его сначала умножают на √2, потому что 0 дБFS — это синус с амплитудой FS. Для точных измерений нужны ещё частотная коррекция (например, A) и калибровка по эталонному источнику.

Что значит чувствительность −26 дБFS?

Что синус 1 кГц с уровнем 94 дБ SPL (давление 1 Па) даёт на выходе сигнал, пики которого на 26 дБ ниже полной шкалы цифрового слова, то есть 0,05 от неё. Для цифрового микрофона чувствительность жёстко связана с перегрузкой: −26 дБFS = 94 дБ − 120 дБ, где 120 дБ SPL — уровень, при котором выход достигает полной шкалы.

Почему I²S-микрофон молчит или выдаёт нули?

Частые причины: неверный формат кадра (ICS-43434 нужно 64 такта SCK на кадр и стандартный I²S с задержкой старшего бита на один такт), микрофон в другом канале, чем читает программа (вывод LR), частота выборки ниже 3,125 кГц — микрофон уходит в сон, нет подтяжки SD к общему проводу, а также первые 32 768 тактов после включения — около 10,7 мс при 3,072 МГц, когда данных ещё нет.

Источники

  1. TDK InvenSense. ICS-43434 Multi-Mode Microphone with I2S Digital Output: Datasheet (DS-000069, Revision 1.2, 08/29/2016) — General Description — MEMS-элемент, АЦП, фильтры, 24-битный I²S, нижний звуковой порт, режимы высокой производительности, малого потребления и сна, AOP 120 дБ SPL, допуск чувствительности ±1 дБ, 3,50 × 2,65 × 0,98 мм; Features — −26 дБFS ± 1 дБ, SNR 65/64 дБА, ток 490/230 мкА, частота выборки 23–51,6 и 6,25–18,75 кГц, 60 Гц – 20 кГц; табл. 1 — 1,65–3,63 В, сон 12 мкА; табл. 2 — EIN 29 дБА SPL, динамический диапазон 91 дБ, THD 0,2 % при 105 дБ SPL; табл. 4 — групповая задержка 2/fS, неравномерность ±0,3 дБ, подавление 58 дБ; табл. 5 — пробуждение 20 мс, SCK 303–2500 нс, нагрузка SD до 85 пФ; табл. 6 — 160 дБ SPL, удар 10 000 g; табл. 8 — выводы 1 WS (внутренняя подтяжка 100 кОм к GND), 2 LR, 3 GND, 4 SCK, 5 VDD с 0,1 мкФ, 6 SD (100 кОм на GND); Theory of Operation — запуск меньше 20 мс, ожидание при SCK ниже ~200 кГц, не подавать такты без питания, синхронизация по спаду WS, I²S 24 бита, дополнительный код, 64 такта SCK на кадр, левый канал после спада WS, правый после фронта, SD в Z-состоянии; Digital Microphone Sensitivity — 0 дБFS — синус, пики которого касаются полной шкалы, прямоугольник полной шкалы — 3 дБFS, 94 дБ SPL дают пики 0,05 полной шкалы; фильтр высоких частот 24 Гц, полоса 0,417 · fS; Sleep Mode — ниже 3,125 кГц, выход через 32 768 тактов SCK (10,7 мс при 3,072 МГц); Power Supply Decoupling — 0,1 мкФ X7R у выводов; PCB — отверстие в плате больше порта, не меньше 0,5 мм, без пасты; Handling — не продувать порт, не мыть порт, без ультразвука
  2. InvenSense. Lewis J. Understanding Microphone Sensitivity (WP, Revision 1.0, 12/18/2013) — чувствительность измеряют синусом 1 кГц при 94 дБ SPL (1 Па); у аналоговых — дБВ относительно 1 В/Па; пример ADMP504: максимальный выход 0,25 В на АЦП с полной шкалой 1,0 В — усиление 4 (12 дБ), −38 дБВ и SNR 65 дБ; у цифровых — дБFS, чувствительность = 94 дБ − максимальный уровень, 120 дБ SPL → −26 дБFS; входной уровень всегда среднеквадратичный, выход цифрового — пиковый, для синуса среднеквадратичный на 3 дБ ниже
  3. InvenSense. Lewis J. Analog and Digital MEMS Microphone Design Considerations (WP, Revision 1.0, 12/31/2013) — MEMS-элемент — переменный конденсатор с выходным сопротивлением порядка гигаом и предусилитель; аналоговый выход, PDM и I²S, рис. 1–3; выходное сопротивление аналогового — несколько сотен ом, вход 2 кОм после 200 Ом ослабляет почти на 10 %; выход смещён по постоянному току, нужен разделительный конденсатор: 1 мкФ и 10 кОм дают 16 Гц при собственном спаде микрофона на 100 Гц; цифровые микрофоны устойчивее к радиопомехам; согласующие резисторы 20–100 Ом на длинных линиях; PDM — общий такт около 3 МГц и общая линия данных для двух микрофонов на разных фронтах; I²S — децимация внутри микрофона, два микрофона на одной линии данных, такт слова и такт бита

Нашли ошибку?