Khác biệt giữa các bản “Cảm biến âm thanh tích hợp MAX9814 + AGC”
Từ ChipFC Wiki
(→Sơ đồ chân) |
(→Sử dụng) |
||
Dòng 56: | Dòng 56: | ||
| 5 || AR || | | 5 || AR || | ||
|} | |} | ||
− | |||
* Chúng tôi sử dụng mức âm thanh từ 20Hz - 20kHz để test. [https://www.youtube.com/watch?v=e8c5Zd79_iA tại đây] | * Chúng tôi sử dụng mức âm thanh từ 20Hz - 20kHz để test. [https://www.youtube.com/watch?v=e8c5Zd79_iA tại đây] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* Source code mẫu: | * Source code mẫu: | ||
− | + | <syntaxhighlight lang="cpp"> | |
− | |||
const int sampleWindow = 50; // lấy mẫu 50ms (50 mS = 20Hz) | const int sampleWindow = 50; // lấy mẫu 50ms (50 mS = 20Hz) | ||
Dòng 79: | Dòng 70: | ||
Serial.begin(9600); | Serial.begin(9600); | ||
} | } | ||
− | |||
void loop() | void loop() | ||
Dòng 110: | Dòng 100: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− |
Bản hiện tại lúc 11:53, ngày 2 tháng 3 năm 2018
Bài viết này đang được phát triển hoặc chỉnh sửa lớn. |
Mục lục
Giới thiệu
- Cảm biến âm thanh tích hợp MAX9814 với khả năng tự động điều chỉnh độ khuếch đại (AGC- Automatic Gain Control), điều này có nghĩa là các âm thanh lớn khi qua mạch sẽ tự động giảm tới mức ấn định và cũng tương tự các âm thanh nhỏ khi qua mạch sẽ tự động tăng tới mức ấn định.
Đặc điểm
- Three Gain Settings (40dB, 50dB, 60dB)
- Programmable Attack Time
- Programmable Attack and Release Ratio
- Nguồn cấp 2.7V - 5.5V
- Low Input-Referred Noise Density of 30nV/√Hz
- Low THD: 0.04% (typ)
- Low-Power Shutdown Mode
- Internal Low-Noise Microphone Bias, 2V
Sơ đồ chân
Thứ tự chân | Tên gọi | Mô tả |
---|---|---|
1 | GND | mass |
2 | Vdd | Nguồn từ vi điều khiển |
3 | Gain | Nguồn từ vi điều khiển |
4 | Out | tín hiệu đầu ra |
5 | AR |
Sử dụng
- Sơ đồ kết nối
Thứ tự chân | Tên gọi | chân tại Arduino |
---|---|---|
1 | GND | GND |
2 | VDD | 5V |
3 | OUT | chân A0 |
4 | Gain | |
5 | AR |
- Chúng tôi sử dụng mức âm thanh từ 20Hz - 20kHz để test. tại đây
- Source code mẫu:
const int sampleWindow = 50; // lấy mẫu 50ms (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;
// collect data for 50 mS
while (millis() - startMillis < sampleWindow)
{
sample = analogRead(0);
if (sample < 1024)
{
if (sample > signalMax)
{
signalMax = sample; // lưu lại giá trị max
}
else if (sample < signalMin)
{
signalMin = sample; // lưu lại giá trị min
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
double volts = (peakToPeak * 5.0) / 1024; //chuyển sang volts
Serial.println(volts);
}