DIY

[mk030](7) D4TRG VU Meter 3편

요즘 시간이 없네요.
딱 집중해서 하고 싶은데 자꾸 나가야 할 일정이 생깁니다. ㅠ

저번에 볼륨 부분을 만졌으니 이제 주파수에 따라 반응하는 걸 만들어야 하는데요.
기존의 회로로 구현하기에 많이 복잡해져서 좀 뜯어고쳤습니다.

각 회로의 부분에 대한 역할은 다음과 같습니다.

  1. 직류 성분을 차단하고 중심값을 0V로 맞춥니다. (오실로스코프 1번 채널)
  2. 입력 임피던스는 크게, 출력 임피던스를 작게 하여 회로 양단간 변화에 따른 영향을 줄입니다. OP AMP의 전원 전압이 0~5V이기 때문에 0V보다 낮은 전압은 0V로 출력됩니다(오실로스코프 2번 채널). 입력 전압이 다이오드의 순방향 전압강하인 약 0.6V 이상 역전압으로 들어오면 오작동하니 입력 전압 수준을 최대 0.3V 수준으로만 입력하도록 합니다.
  3. 아두이노에서 읽을 수 있도록 전압을 10배정도 증폭시켜줍니다. (오실로스코프 3번 채널)




(스크린샷 하면 왜 메뉴까지 같이 찍히는가…)
이게 위에서 설명했던 2번 부분의 오작동입니다.
입력 전압이 -0.6V 아래로 떨어지면 0V를 유지하던 출력이 순식간에 최대치로 치솟아 오릅니다.
이거 찾는데 오실로스코프가 없었으면 해결하지 못했을 겁니다. ㅎㅎ
따라서, 오디오 입력을 안전하게 0.3V가 넘어가지 않도록 조절하여 입력해야겠죠.




위 회로도에 나와있던 오실로스코프 단자의 파형입니다.
1번 채널의 하위 부분이 제거된 것이 2번 채널에 확인됩니다.
MATH 채널(보라색)은 1번 채널에서 2번 채널을 뺀 결과입니다. 윗 부분의 파형은 같기 때문에 0V가 정상적으로 나오는 것을 확인하였습니다.
3번 채널은 이를 10배정도 증폭하였습니다. 저거 찍을 당시에는 20배였는데 클리핑이 좀 일어나서 10배로 줄였습니다.(아래 영상 참조)

주파수를 분석하려면 여러개의 ADC 값을 이용해야합니다.
각 채널별로 128개의 값을 샘플링하여 이산 푸리에 변환(DFT) 연산을 하면 파형이 주파수 데이터로 변환됩니다.
푸리에 변환은 아두이노에게 어마어마한 메모리와 연산 시간을 사용하게 되니 메모리 관리와 처리 시간을 최적화 하도록 프로그래밍하는 게 중요합니다.





동작 영상입니다.
주파수 확인하는 LED가 제대로 작동하는지 잘 모르겠네요?
하지만 음악에 따라 반응하는 것 같으니 여기까지 일단 해놓으렵니다.







끝.

Share