깨끗하게 증폭 된 마이크 아날로그를 디지털로 변환하는 방법은 무엇입니까?


12

지난 며칠 동안이 프로젝트와 관련하여 몇 가지 질문을했지만 모두 함께 묶을 수는 없습니다.

일렉 트릿 마이크를 opamp에 연결하여 arduino 마이크로 컨트롤러에 출력했습니다. 마이크로 컨트롤러의 ADC는 0 ~ 5 vV 범위를 10 비트 숫자 (0 ~ 1023)로 변환합니다.

3 가지 앰프 칩을 사용해 보았습니다.

  • LM386-이 칩은 opamp가 아니기 때문에이 목적에 적합하지 않다는 의견을 받았으며 예상대로 올바르게 작동하지 않았습니다.
  • LM358-작품
  • UA741-작동, LM358 이상 증폭

나는 이 회로도를 정확하게 따랐다 (좋은 이득을 얻기 위해 저항 값으로 엉망이 된 것을 제외하고) : R5에는 50k 옴을, R2에는 10 옴을 사용했습니다. 여기에 이미지 설명을 입력하십시오

문제는 후자의 두 칩의 출력이 "깨끗하지 않다"는 것입니다. Arduino의 analogRead ()는 마이크에 노이즈가 없어도 항상 0이 아닌 값을 읽습니다. 노이즈를 만들 때 판독 값이 올바르게 반응하지만 "0"값은 0이 아닙니다. 때때로 "제로"값이 깜박 거리면서 항상 판독 값을 버립니다. 잘만되면 그것은 의미가 있었다.

이걸 정리 해줄 수 있습니까?

중요하지 않은 추가 정보와 마찬가지로, 나는 결국 이와 같은 것을 만들려고합니다 .


당신은 C2가 제자리에 있다고 확신합니까? C2 이후의 무소음 DC 전압은 무엇입니까?
Majenko

예, C2가 있습니다. 약 2 볼트입니다. 이것이 의미가 있는지 모르겠습니다. 핀 2와 6 사이의 루프에 출력과 반전 입력이있는 전류가 갇혀있을 수 있습니까?
Shubham

Arduino 입력 핀에서 분리 한 C2 이후의 자동 DC 전압은 어떻습니까?
Majenko

C2의 존재는 프리 앰프의 출력이 내부에서 작동하는 2.5V가 아닌 0V 주위에서 스윙한다는 것을 의미합니다.
Majenko

프리 앰프 C2와 Arduino 입력 사이에 약간의 쇼트 키 다이오드를 넣고 싶을 수도 있습니다. 내가 한 또 다른 일은 신호를 조금 부드럽게하기 위해 아날로그 입력과 접지 사이에 다른 커패시터를 추가하는 것이 었습니다. VU 미터를 약간 덜 깜박입니다.
Majenko

답변:


17

출력 커패시터를 제거하십시오. 이 회로는 아마도 제로 주위에 신호를 생성하기위한 것이므로 커패시터는 1/2 Vdd 오프셋을 차단합니다. 그러나 마이크로 컨트롤러는 1/2 Vdd 정도의 신호를 중심으로하기 때문에 커패시터를 제거하면됩니다.

마이크로폰에는 많은 이득이 필요합니다. 일렉 트릿은 민감 할 수 있지만 여전히 1000의 전압 게인이 필요할 수 있습니다. 회로의 게인은 R5 대 R2의 비율이지만 opamp가 수행 할 수있는 범위 내에서만 작동합니다.

위에서 언급 한 값은 5000의 이득을 제공합니다. 이는 단일 opamp 단계에서 얻는 것보다 훨씬 더 많은 것입니다. 오프셋 전압에이 게인을 곱할뿐만 아니라 opamp는 전체 주파수 범위에서이를 제공 할 수 없습니다. 1MHz 게인 대역폭에서는 200Hz 미만의 게인 만 얻을 수 있습니다. 5000m 증폭 후 1mV 입력 오프셋도 5V가됩니다.

R2는 또한 입력 커패시터 다음에 마이크에 표시되는 임피던스입니다. 풀업 및 관심있는 최저 주파수에서 입력 커패시터가있는 마이크의 임피던스보다 약간 더 커야합니다. 10Ω은 너무 작습니다. 10kΩ이 더 좋은 값입니다.

초보자를 위해 30 단계 정도의 이득을 가진 두 단계를 시도해보십시오. 그것은 피드백이 작동하기에 충분한 헤드 룸이 남아있는 합리적인 주파수를 처리 할 수있는 이득입니다. 또한 입력 오프셋 전압이 모든 단계를 통해 누적되지 않도록 두 단계를 용량 적으로 결합해야합니다.

편집 : 추가 회로

지난 밤에 위의 답변을 썼을 때 회로를 그릴 시간이 없었습니다. 이를 수행해야하는 회로는 다음과 같습니다.

이것은 약 1000의 전압 게인을 가지며, 합리적인 일렉 트릿 마이크에 충분해야합니다. 나는 조금 너무 많을 지 모르지만 약간의 감쇠를 쉽게 추가 할 수 있습니다.

토폴로지는 회로와 다소 다릅니다. 주목해야 할 가장 중요한 것은 한 단계에서 전체 게인을 생산하려고 시도하지 않는다는 것입니다. 각 단계의 게인은 약 31입니다. 피드백을 위해 최대 오디오 주파수 20kHz에서 충분한 게인 헤드 룸을 남겨 두므로 MCP6022는 일반적인 게인 대역폭을 갖기 때문에 오디오 주파수 범위에 따라 게인을 멋지게 예측하고 평탄하게 만들 수 있습니다. 10 MHz의 생성물. 제한 요인은 아마도 마이크 일 것입니다.

이전에 말한 것과 달리, 두 단계는 오프셋 전압이 이득과 함께 누적되는 것을 방지하기 위해 용량 성 결합 될 필요가 없습니다. 이는이 회로에서 각 스테이지의 DC 게인이 1이므로 최종 오프셋은 opamp 오프셋의 두 배에 불과하기 때문입니다. 이 opamp는 500µV 오프셋 만 가지므로 opamp로 인해 최종 오프셋은 1mV에 불과합니다. R3과 R4의 불일치로 인해 더 많은 것이있을 것입니다. 어쨌든, 출력 DC는 A / D 범위로 의미있는 방식으로 먹지 않을 정도로 공급의 1/2에 충분히 가깝습니다.

스테이지 당 1의 DC 이득은 피드백 분배기 경로를 접지에 용량 적으로 결합함으로써 달성됩니다. 커패시터는 DC를 차단하므로 각 단계는 DC의 단일 팔로워입니다. 커패시터 (1 단계의 C3) 임피던스가 하위 분배기 저항 (1 단계의 R7)에 비해 작아짐에 따라 전체 AC 게인이 실현됩니다. 이것은 약 16Hz에서 발생하기 시작합니다. 이 접근법의 한 가지 단점은 정착하는 시간 상수가 단지 R7이 아니라 C3에 R7 + R5라는 것입니다. 이 회로는 전원을 켠 후 stabalize하는 데 몇 초 정도 걸립니다.


출력에서 캡을 꺼내면 arduino는 약 3 볼트의 입력을 봅니다. 미안하지만 오프셋 전압의 의미를 설명 할 수 있습니까? R2가 10k Ohm 인 1000의 이득을 얻으려면 R5에 10M 옴이 필요합니까? 이거 확실하니? 이득은 R5와 R2 사이의 비율입니까?
Shubham

@Shubham : 회로가 opamp의 오프셋 전압에 5000을 곱하려고 시도하므로 출력이 하나의 레일에 고정되는 것은 놀라운 일이 아닙니다. 완벽한 opamp는 없습니다. 입력 오프셋 전압은 출력이 중간 범위에있을 때 두 입력 사이의 전압입니다. 이론적으로 두 입력은 동일합니다. 입력 오프셋 전압 사양은이 이상에서 얼마나 멀리 떨어져 있는지 알려줍니다.
Olin Lathrop

@Shubham : 한 단계에서 모든 게인을 생성하려면 피드백 저항에 10 MOhm이 필요합니다. 내가 말했듯이, 그것은 나쁜 생각입니다.
Olin Lathrop

여기에서 많은 것을 배우고 모든 도움을 주셔서 감사합니다. 따라서 각각 30 단계의 게인을 두 단계로 설정하면 총 900의 게인을 얻을 수 있습니다. 나는 LM358을 사용하여 이것을 시도하고 (그것이 내가 거짓말을 한 것) 다시보고
Shubham

마침내 작동했습니다! 그 회로도를 제공해 주셔서 감사합니다! 그러나 ADC 범위는 약 200입니다. 조용한 ADC 값은 중간 점 (512)을 약간 상회하지만 마이크에서 얼마나 많은 노이즈가 발생하더라도 ADC 값은 200을 초과하지 않습니다. 조용한 가치. 아마도 이것을 제한하는 것은 캡과 저항의 설정일 것입니다.
Shubham

5

당신이 말했듯이, 디지털 값은 0에서 1023 사이입니다.이 범위의 중간은 0이 아니며 512입니다 (약 2.5의 전압에 해당). 침묵을 위해, 당신은 이와 같은 범위의 중간에 무언가를보아야합니다. 정확히 512 일 필요는 없지만 가까이 있어야합니다. 이것을 "DC 오프셋"이라고합니다. 신호가 위쪽으로 이동하고 약 2.5V를 중심으로합니다.

2V를 측정하고 약 400의 ADC 값을 보는 경우 기본적으로 정상적으로 작동합니다.

음파는 음에서 양의 압력으로 이동합니다. 중심점이 0이고 신호를 0과 1023 사이에서만 측정 할 수 있으면 음압 값 (-1023)이 차단됩니다.

또한 ADC의 노이즈 플로어로 인해 항상 약간 변동합니다. (그리고 당신이 아무리 조용해도 실내에는 항상 약간의 오디오 노이즈가 있습니다.)


"DC 오프셋"에 대한 설명은 다른 답변에서 계속 볼 수 있습니다. DC 오프셋을 제거하지만 캡을 어딘가에 두는 방법이 있습니까?
Shubham

@Shubham : 당신은 WANT 직류 오프셋. ADC 프로세스가 없으면 ADC 프로세스가 작동하지 않습니다. 캡 C2는 당신이 가지고있는 것을 보장합니다. 이 경우 U1의 출력이 이미 오프셋되어 있기 때문에 큰 차이는 없을 것입니다. C2의 양쪽에서 DC 값을 측정 할 수 있습니까?
endolith

@Shubham : 디지털 측정 값이 512 대신 0의 중앙에 오도록하려면 소프트웨어에서 오프셋을 빼거나 소프트웨어에서 디지털 고역 통과 필터를 구현하면됩니다.
endolith

3

해당 마이크에 사양 시트를 게시 할 수 있습니까? 내부 FET가없는 베어 유닛이없는 경우 일렉 트릿 마이크로 5000의 이득이 필요한 이유는 없습니다. 이 경우 프리 앰프는 훨씬 다르게 보일 필요가 있습니다.

또한 사용한 회로는 일렉 트릿 마이크의 프리 앰프로 사용되는 데 크게 도움이되지 않습니다.

나는 추천한다 :

여기에 이미지 설명을 입력하십시오

R5 / R4는 게인을 설정하며 회로의 입력 임피던스로 조이지 않고도 조정할 수 있습니다. R3은 2k-> 10k ish 일 수 있습니다. 10k는 왜곡 성능을 향상시키는 경향이 있습니다. 너무 낮게 조정하면 R1 및 R2의 값을 다시 생각하여 입력 임피던스를 수정해야합니다.

또한 소음이 마이크에 공급되므로 전원 공급 장치가 적절히 분리되어 있어야합니다.

다른 답변에서 언급했듯이 ADC를 읽을 때 "제로"점은 ~ 512가되고 어떤 일을하든 약간 변동합니다.

목표가 레벨에 따라 깜박이는 경우 arduino를 사용하여 순간적으로 읽지 말아야합니다. 아주 잘 반응하도록 충분히 빨리 샘플링 할 수 있을지 의심 스럽기 때문입니다. 대신 아날로그 도메인에서 피크 또는 평균 레벨 감지를 수행하고 샘플링주기에 비례하여 평균주기를 설정하십시오.

편집 : 피크 검출기 로이 작업을 수행하는 방법에 대한 추가 정보

여기서 문제는 arduino의 샘플링 속도가 상대적으로 제한되어 있다는 것입니다. 최대 값은 약 10khz라고 생각합니다. 이는 최대 5khz 오디오 신호 만 해결할 수 있음을 의미합니다. ADC를 실행하는 것을 제외하고는 arduino가 거의 수행하지 않는 경우가 있습니다. 실제 작업을 수행해야하고 레벨을 얻기 위해 일부 작업을 수행 해야하는 경우 샘플링 속도가 낮아집니다.

당신이 복용 기억 이산 샘플을 당신이 ADC에서 0의 측정 값을받지 않습니다 의미하지 않는다 ADC로 전체 범위 사인파 공급을해서, 원시 신호, 당신은 파도의 다양한 지점에서 시료를 얻을 수 있습니다 . 실제 음악을 사용하면 결과 신호가 매우 복잡해져 모든 곳에서 샘플을 얻을 수 있습니다.

이제 측정하려는 모든 것이 입력 신호의 레벨이고 실제로 신호의 디지털 표현에 신경 쓰지 않는다면이 프리 앰프 다음에 간단한 피크 검출기를 사용하면됩니다.

이것이하는 일 오디오 신호를 피크 레벨을 나타내는 전압으로 변환합니다. ADC로이 전압을 측정하면 판독 시점의 신호 레벨을 나타내는 값이 즉시 나타납니다. 소리는 복잡하고 항상 변하는 파형이기 때문에 여전히 약간의 흔들림이 있지만 소프트웨어에서는 쉽게 처리 할 수 ​​있습니다.

홀드가없는 피크 검출기는 실제로 출력에 필터가있는 정류기 일뿐입니다. 이 경우 낮은 레벨의 신호를 처리하고 정확도를 유지해야하므로 평균 정류기 회로에서 수행하는 것보다 약간 더 많은 작업을 수행해야합니다. 이 회로 제품군을 "정밀 정류기"라고합니다.

여기에 이미지 설명을 입력하십시오

이 작업을 수행하는 방법은 약 10 억 가지가 있지만이 회로를 사용하면 단일 전원 공급 장치를 사용할 때 가장 잘 작동하는 것 같습니다. 이것은 이미 논의 된 프리 앰프 회로 이후에 발생하며 입력은 AC 커플 링되거나되지 않을 수 있습니다. 단일 공급 장치에서 실행 되더라도 가용 피크를 초과하지 않는 한 실제로 마이너스 입력 전압으로 잘 작동합니다. 연산 증폭기의 피크 전압.

OP1은 정류 할 때 다이오드에서 일반적인 전압 강하 문제를 해결하는 (거의) 이상적인 다이오드 역할을합니다. 거의 모든 소형 신호 다이오드가 D1에서 작동 할 것입니다. 순방향 전압 강하가 낮은 것이 정확도를 높일 수 있지만 사용에 문제가 될 것 같지는 않습니다.

C1 및 R4는 저역 통과 필터 역할을하여 출력을 평활화합니다.이 값을 사용하여 수행하려는 작업 (및 샘플링 속도)과 성능을 일치시킬 수 있습니다.

프리 앰프에서 사용하는 것과 동일한 연산 증폭기 모델을 사용할 수 있지만이 회로에 Rail-to-Rail 및 높은 슬 루율이 이상적입니다. 안정성 문제가있는 경우 R1, R2 및 R3을 100k 옴으로 늘리십시오.


마이크는 표준 일렉 트릿 콘덴서 마이크입니다. R3을 10K로 만들고 Vcc는 5.9V이므로 R1과 R2도 10K이면 괜찮습니까? LM358 또는 741 중 어떤 opamp를 추천 하시겠습니까? "0"지점을 0 또는 0 근처로 가져올 수있는 방법이 있습니까? "대신 아날로그 도메인에서 피크 또는 평균 레벨 감지를 수행하고 평균 샘플링주기를 샘플링 속도에 비례하여 설정하십시오." -이것에 대해 좀 더 자세히 설명해 주시겠습니까? 흥미롭게 들리고 정말 조사하고 싶습니다. 많은 질문이있어서 죄송합니다. 저는 아직도 대학에서 배우는 EE 학생입니다.
Shubham

나는 당신의 권장 회로를 시도했다 (내가 사용했던 것보다 훨씬 깨끗하고 출력의 무작위성이 적다). R5에 1M Ohm을 사용하고 R4에 1k Ohm을 사용하여 1000의 증폭을 제공했습니다. DMM으로 일부 측정을 수행하면 opamp는 약 3V의 무음 출력을 제공하며 C3은 약 1.5V로 줄입니다. 또한 R5를 제거해도 출력에 아무런 영향을 미치지 않습니다 ... 게인이 R4 / R5입니까?
Shubham

1
R3은 마이크 내부의 FET의 바이어스 포인트를 설정합니다 (R1 || R2) || R3은 마이크에 표시되는 AC 입력 임피던스를 설정합니다. "제로"포인트를 0으로 설정하는 것은 아날로그 도메인의 어떤 것도 해결할 수 없으며, 이는 단일 전원 공급 장치가있는 아두 이노에서 ADC의 기능입니다. 소리가 0이 아닌 경우 각 샘플에서 ~ 512를 빼기 만하면됩니다 (음수 값이 가능하므로 부호있는 데이터 유형을 사용해야합니다)
Mark

R4 / R5는 이득이지만, 1000의 이득은 테스트 한 주파수에서 opamp의 한계를 초과 할 수 있습니다. 회로의 C2는 피드백의 출력에서 ​​DC 오프셋을 완화하고 이득에 영향을 미치지 않도록하기위한 것입니다.
Mark

마크, R1 // R2에 대한 C1은 1.3kHz 고역 통과 필터 롤오프 주파수를가집니다. 이는 음성 주파수의 좋은 비율보다 훨씬 높고 "HiFi"하한보다 6 옥타브 높습니다. 사운드 활성화 트리거를 만들려는 경우에는 문제가 없지만 일반 디지털 사운드를 원하는 경우에는 좋지 않습니다.
Olin Lathrop
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.