【雕爷学编程】Arduino动手做(190)---MAX4466声音模块3

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百九十:MAX4466声音传感器 驻极体话筒放大器 麦克风可调功放模块 microphone

在这里插入图片描述
在这里插入图片描述
知识点:MAX4466芯片
是微功率运算放大器,经过优化,可用作麦克风前置放大器。它们提供了优化的增益带宽产品与电源电流的理想组合,以及超小型封装中实现低电压工件环境。 MAX4466具有增益稳定特性,仅需24μA的电源电流即可提供200kHz的增益带宽。经过解压缩,可实现+5V/V的最小稳定增益,并提供600KHZ增益带宽。此外这些放大器具有轨到轨输出,高 AVOL ,以及出色的电源抑制和共模抑制比,适合在嘈杂环境中工作。广泛应用于蜂窝电话、数字复读装置、耳机、助听器、麦克风前置放大器、便携计算机和语音识别系统中。

在这里插入图片描述
主要特性
1、+2.4V 至 +5.5V 电源电压运行版本,
2、可提供 5nA 完全关断(MAX4467/MAX4468)
3、出色的电源抑制比:112dB
4、出色的共模抑制比:126dB
5、高 AVOL:125dB (RL= 100kΩ)
6、轨到轨输出
7、低 24μA 静态电源
8、电流增益带宽积:
200kHz (MAX4465/MAX4467/MAX4469)
600kHz AV≥5 (MAX4466/MAX4468)
9、采用节省空间的封装
5-Pin SC70 (MAX4465/MAX4466)
8 引脚 SOT23 (MAX4467/MAX4468/MAX4469)

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
项目之六:测量噪音水平(简化版本)
模块接线:
MAX4466 Arduino
VCC 5V
GND GND
OUT A0

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
  项目之六:测量噪音水平(简化版本)
  模块接线:
  MAX4466  Arduino
  VCC        5V
  GND        GND
  OUT         A0
*/

const int MIC = 0; //麦克风放大器输出连接到引脚 A0
int adc;
int dB, PdB; //将保存每次从麦克风读取的值的变量

void setup() {
    
    
  Serial.begin(9600); 
}

void loop() {
    
    
  PdB = dB; //在此处存储 dB 的前一个
  adc = analogRead(MIC); //从放大器读取 ADC 值
  //Serial.println (adc);//打印 ADC 用于初始计算
  dB = (adc + 83.2073) / 9.8; //使用回归值将 ADC 值转换为 dB
  if (PdB != dB)
  Serial.print ("dB=");
  Serial.println (dB);
  delay(10);
}

实验串口返回情况

在这里插入图片描述

实验串口绘图器返回情况(尖峰为咳嗽声)

在这里插入图片描述
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
项目之七:高灵敏度的声级波形测试(人声与拍手声)

实验开源代码

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
  项目之七:高灵敏度的声级波形测试(人声与拍手声)
  模块接线:
  MAX4466  Arduino
  VCC        5V
  GND        GND
  OUT         A0
*/

#define MIC_IN A0

// 以毫秒为单位的采样窗口宽度(50 ms = 20Hz)
int sampleWindow = 50;

void setup(){
    
    
  Serial.begin(9600);
  pinMode( MIC_IN, INPUT );
}

void loop(){
    
    
  //将模拟传感器读取为声级的数值
  double soundSensed = sampleSoundPeak();

  // 转换为声级数值
  double volts = (soundSensed * 3.3)/1.83; //系数是自定的实验值

  // 打印出来
  Serial.println(volts);
}

/**
    Sense 最大输入差异是从模拟 MIC 传感器输入
    在某个“时间窗口”内。
    返回值在 0 - 1024 范围内。
**/

double sampleSoundPeak(){
    
    
  // 记录开始时间
  double startMillis = millis();

  // 这将是最高峰,所以从很小开始
  int signalMax = 0;

  // 这将是最低峰,所以从高处开始
  int signalMin = 1024;

  // 将保持麦克风的当前值
  int sample;

  // 收集 50 毫秒的数据
  while ( (millis() - startMillis) < sampleWindow ){
    
    
    // 从 mic 读取一个值并将其记录到示例变量中
    sample = analogRead( MIC_IN );

    // 丢弃虚假读数
    if (sample < 1024)
    {
    
    

      // 如果当前样本大于最大值
      if (sample > signalMax)
      {
    
    
        // 这是新的最大值——保存它
        signalMax = sample;
      }
      // 否则,如果当前样本小于最小值
      else if (sample < signalMin)
      {
    
    
        // 这是新的数值——保存它
        signalMin = sample;
      }
    }
  }

   // 现在我们已经收集了我们的数据,
   // 确定峰峰值幅度为最大值 - 最小值
  int peakDifference = signalMax - signalMin;

  // 将其返回给此方法的调用者
  return peakDifference;
}

实验串口绘图器返回情况之一
半米处低声讲话,幅度变化可有4倍以上

在这里插入图片描述

实验串口绘图器返回情况之二
三米处拍手声,幅度变化可达18倍

在这里插入图片描述
实验串口绘图器返回情况之三
测试各种情况下声级变化,最高动态幅度变化达到25倍

在这里插入图片描述
实验场景图

在这里插入图片描述
【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
项目之八:打开串行绘图仪窗口以观察平均音频幅度(简化版本)
程序说明:将 3.3V 连接到 AREF 输入以使用 3.3V 进行 ADC 操作

实验开源代码

/*
  【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)
  实验一百八十五:MAX4466声音传感器 低功耗驻极体话筒放大器 麦克风可调功放模块 microphone
  项目之八:打开串行绘图仪窗口以观察平均音频幅度(简化版本)
  程序说明:将 3.3V 连接到 AREF 输入以使用 3.3V 进行 ADC 操作
  模块接线:
  MAX4466  Arduino
  VCC        5V
  GND        GND
  OUT         A0
*/

int const SAMPLE_WINDOW = 50; // 以毫秒为单位的采样窗口宽度(50 毫秒 = 20Hz)
int const PREAMP_PIN = A0;      // 前置放大器输出引脚连接到A0
unsigned int sample;

void setup() {
    
    
  analogReference(EXTERNAL); // 将 3.3V 连接到 AREF 以提供参考电压
  Serial.begin(9600);
}

void loop() {
    
    
  unsigned long startMillis = millis(); // 示例窗口的开始
  unsigned int amplitude = 0;   // 峰峰值

  unsigned int soundMax = 0;
  unsigned int soundMin = 1024;

  // 收集 50 毫秒的数据,然后绘制数据
  while (millis() - startMillis < SAMPLE_WINDOW) {
    
    
    sample = analogRead(PREAMP_PIN);
    if (sample > soundMax) {
    
    
      soundMax = sample;  // 保存最大级别
    }
    else if (sample < soundMin) {
    
    
      soundMin = sample;  // 保存最低级别
    }
  }
  amplitude = soundMax - soundMin;  // 最大值 - 最小值 = 峰峰值幅度
  Serial.println(amplitude);
}

实验串口绘图器返回情况之一
实测环境噪音波形

在这里插入图片描述
实验串口绘图器返回情况之二
断续讲话声波形

在这里插入图片描述

实验串口绘图器返回情况之三
播放背景音乐的波形

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/132132144