민감도가 자동으로 변하는 MAX9814 microphone amplifier with automatic gain control 을 이해할 수 있다.
▶ 이 가이드를 따라하면
- AGC(Automatic Gain Control) 기능이 달린 마이크 증폭 센서를 다룰 수 있다.
▶ 기존 읽어보면 좋을 강의
- 마이크 증폭 센서 MAX4466 : https://bbangpan.tistory.com/23
▶ 부품 설명 및 회로 구성
이미 소리의 정도를 예측하는 센서는 MAX4466을 먼저 다뤄본 적이 있어서 간단한 소리 검출은 해당 센서로 하면 충분하다. 그러면 이 MAX9814 센서는 어떻게 다를까?
먼저 AGC(Automatic Gain Control/자동 게인 제어)를 이해해보자. 생각외로 소리는 입력의 크기의 범위가 매우 달라진다. 따라서 너무 큰 소리가 들어오면 오히려 큰 소리가 잘려나가거나 이상하게 입력되고, 너무 작은 소리는 없어져버리는 현상이 일어나기 쉽다. 이것을 해결하기 위한 방식이 바로 AGC다. 바로 민감도를 소리의 크기에 따라 조절하는 방식이다. 정확한 내부 메커니즘은 모르겠으나(이 모듈 안에 내장된 Maxim 9814 칩이 해준다) 이렇게 하면 센 소리도 모두 뭉게지지 않게 잘 처리할 수가 있다고 한다. 오디오를 처리하는 엔지니어는 아주 익숙한 개념이며, 음향 장비에도 AGC를 켜면 해당 원리에 의해 음질이 더 좋아진다.
따라서 사실은 이렇게 개선된 음질을 얻을 정도의 작업이 언제 필요할지 의문인 점도 있지만, 해당 특성으로 시끄러운 곳이나 조용한 곳이나 어느정도 보정된 소리의 정도를 감지할 수 있다.
또한 이 모듈은 Gain(음향의 민감도로 이해 가능)을 40db, 50db, 60db로 조절할 수 있는데, Gain 핀을 각각 5V/GND/개방 함으로써 가능하다. 여기서는 민감도를 올리고자 40db 선택, 즉 Gain핀을 아두이노의 5V에 연결하였다. 실제로 50db정도로 선택(Gain핀을 GND에 연결시)되어도 거의 중간 음들은 감지되지 않고 큰 소리들만 감지된다. 60db(Gain핀을 개방)를 선택할 시는 더 큰 소리에만 반응할 것으로 본다 AR핀(Attack/Release)을 통해 Attack/Release Rate를 조절할 수 있다고 하는데(역시 5V, GND 연결 등 함으로써), 여기서는 그냥 개방으로 두었고 대부분의 목적에 차이가 없다고 한다.
상기 모듈 구동 소스는 특이하게 이전에 소개한 MAX4466과 동일한 소스를 사용하면 된다. 이전 강의나 https://learn.adafruit.com/adafruit-microphone-amplifier-breakout/measuring-sound-levels 에 해당 소스를 볼 수 있다)
그리고 이해를 돕기 위해, 코드 맨 마지막에 volt를 출력할 때 min과 max값도 같이 출력하도록 살짝만 바꾸었다
(아래 그림 하단을 참조한다)
로그 추가를 위해 추가한 코드
Serial.print(volts);
Serial.print(" :");
Serial.print(signalMin);
Serial.print("/");
Serial.println(signalMax);
마이크에 소리를 내거나 바람을 불어주면 아래와 같이 값 변화를 관측할 수 있다.
자세히 보면 0~1.25V를 출력하는 것을 알 수 있는데, 특이하게 max값은 모두 513정도가 나온다. Gain을 자동 조절하여 최종 출력은 1.25V로 조절하는 것으로 보인다. 즉, Min 값만 최소 256정도가 되어 1.25V 정도를 해당 모듈의 Out으로 출력해주고 있음을 알 수 있다.
Gain핀의 연결을 5V->GND->개방으로 가져갈수록, 중간단계의 값이 사라지고 큰 소리가 났을 때 256근처의 값만 가진다. 따라서 이 MAX9814모듈은 특수하게 주변의 소음의 정도에 따라 적응형의 센서를 구현하고 싶을 때 쓸 수도 있겠다.
흥미로운 것은 Adafruit의 MAX9814용 예시인데, 아예 직접 주변의 소리를 증폭시키고 이어폰으로 전송해주는 장치이다(Arduino경유 없이). 소리를 더 듣기 좋게 증폭하는 데에는 MAX4466보다 훨씬 나은 것으로 보인다. 직접 귀로 듣는 오디오 신호를 만들어 내기 위해 이 센서를 사용한다면, 따라서 Adafruit의 강좌를 참고하도록 하자(이어폰의 오동작을 막기 위해 커패시터가 같이 사용되었다)
https://learn.adafruit.com/adafruit-agc-electret-microphone-amplifier-max9814/wiring-and-test
▶ 구매 가이드
MAX9814 : https://ko.aliexpress.com/af/MAX9814.html?d=y&origin=n&SearchText=MAX9814&catId=0&initiative_id=SB_20200724082714 ($1전후)
▶ 강의 키워드
MAX9814, AGC, Automatic Gain Control, 자동 게인 제어, 마이크 증폭, 아두이노
'아두이노 센서' 카테고리의 다른 글
[센서/UV디지털센서] VEML6075 자외선 센서, UVA/UVB/UV index 측정 (0) | 2020.07.21 |
---|---|
[센서/소리감지센서] FC-04, 소리 검출 센서, 사운드 센서로 소리 발생 유무를 탐지 (0) | 2020.07.16 |
[센서/레이저 장애물 센서] Waveshare laser sensor , 레이저 장애물 센서 (0) | 2020.07.15 |
[센서/온습도센서] SHT30,SHT31,SHT35,SHT3X 로 온습도를 측정해보자 (4) | 2020.07.13 |
[센서/먼지센서] PM7003 plantower 먼지센서 (0) | 2020.07.11 |
[센서/VL53L0X] 레이저 기반의 거리 센서 (0) | 2017.06.09 |
[센서/BME280] 습도, 온도, 기압, 고도 통합 센서 (2) | 2017.06.08 |
[센서/조도,움직임] GY-9960LLC, APDS-9960 RGB and gesture sensor, 조도 및 움직임 센서 (0) | 2017.06.08 |
[센서/컬러센서] TCS34725 센서를 통해 RGB 값을 읽어보자 (6) | 2017.02.12 |
[센서/전압측정] 전압 센서(Voltage Sensor)를 통해 전압을 측정하자 (4) | 2016.05.06 |