Wave Shield 장착 부품 자세히 보기

Wave 쉴드 장착 부품 자세히 보기

웨이브 쉴드에 장착됭어 있는 부품에 대해 자세히 알아보도록 하겠습니다.

전압 레귤레이터

웨이브쉴드상의 3.3V 레귤레이터는 아두이노로부터 받은 5V 전압을 안정적인 3.3V로 변환하여 주는 부품입니다. 이 레귤레이터가 필요한 이유는 SD/MMC카드가 3.3V에서만 동작하기 때문입니다. SD/MMC카드에 5V를 주면 부품이 타거나 망가집니다.

MCP1700-330이 전압 레귤레이터로 사용이 되었는데, 이 부품은 250mA까지의 전류를 제공할 수 있습니다. 4개의 캐패시터가 레귤레이터에 연결되어 있는데, C1, C2는 입력 캐패시터로 5V입력을 안정화시키는 역활을 하며, C3, C4는 출력 캐패시터로 3.3V 출력을 안정화 시키는 역활을 합니다.

레귤레이터를 바이패스하는 점퍼가 있기는 하지만 사용하는 것은 추천하지 않습니다.

SD/MMC 카드 홀더

sdholder_t.jpg
SD/MMC 카드는 작고 저렴하여 많이 사용되는 저장매체 입니다. 웨이브쉴드에는 SD/MMC카드를 위한 홀더가 있습니다. 홀더의 핀세개는 CD, WP, COMMON_SW이 있는데, CD는 card detect를 의미합니다. CD는 기계적인 스위치로 카드가 삽입되면 연결됩니다. WP는 Write Protect로 카드 홀더 옆면의 lock 스위치에 연결된 역시 기계적인 스위치 입니다. COMMON_SW는 언급한 두개 스위치의 공통 연결로 보통 단순히 그라운드에 연결합니다. 그렇기때문에 CD와 WP는 활성화 될때 그라운드 되게 됩니다.


파워서플라이는 바닥쪽에 있는데 두개의 물리적인 그라운드 연결부와 로직 그라운드가 있습니다. 로직파워 연결도 있어 3.3V 레귤레이터에 연결되어 있습니다.

Multi_Media_Card_back.jpg
중간부에는 데이터 연결부가 있습니다. DAT1과 DAT2는 advanced/high-speed SD카드 인터페이스입니다. 여기서는 사용하지 않으므로 연결되지 않은 상태로 놓아 둡니다. DATA_OUT은 카드로부터의 시리얼 데이터로 아두이노의 SPI포트로 연결되어 있습니다. DATA_IN은 입력이며, SCLK는 클럭 입력입니다. MMC카드는 3.3V를 사용하여야 하기 때문에 아두이노의 5V데이터를 사용하기 위해서는 voltage divider(R2, R3, R4, R5)를 사용하여 입력을 낮춰야 합니다.

CS 는 chip select라인으로 MMC를 사용할 것임을 알려줍니다. 카드로 데이터를 보낼때는 CS는 그라운드로 pulled low되어 있어야 합니다. R6은 풀업저항으로 사용되며, 제너다이오드 D1은 전압을 3.3V로 유지하는데 사용됩니다. R1은 아두이노가 cs핀을 high로 만들때 다이오드가 적절하게 bias하는것을 허용합니다.

마이크로컨트롤러/아두이노

라이브러리에는 많은 전문화된 코드들을 포함하고 있습니다. 첫번째로 FAT16 라이브러리가 그러한데, 이 라이브러리에는 MCU가 SD카드를 일고 파일을 찾아내고 파일의 내용을 읽기 위한 함수들이 포함되어 있습니다. 이 라이브러의 구체적인 내용에 대해 흥미가 있다면 다음의 링크를 참고 하십시오. SD/MMC, FAT16 manual
fncc02.gif
일단 파일을 오픈하게 되면 파일을 읽을 준비가 되게 됩니다. 오픈한 파일이 wave파일이라면, 파일의 헤더에는 채널(모노/스테레오등), 샘플당 비트, 샘플링 레이트 등의 정보가 저장되어 있습니다. 헤더에 대한 자세한 정보는 다음 링크를 참고하십시오. header format
기본적으로 펌웨어는 웨이브파일이 모노인지, bit per sample이 16이하인지, 그리고 샘플레이트가 22Khz이하인지 체크합니다. 그런 다음 오디오 인터럽트를 셋업하게 됩니다. 이 인터럽트는 일초에 샘플레이트만큼 동작하게 되는데 예를 들면 22Khz 오디오 샘플의 경우 인터럽트는 초당 22,000번 동작하게 됩니다.

250px-Pcmsvg.png

오디오는 PCM format 으로 인코딩 되어 있습니다. 웨이브파일을 16비트 22khz라고 할때, 오디오 파일은 초당 22,000번까지 얇게 잘라지게 되고 해당 값(16비트일 경우 0에서 65,653)을 waveform에서 읽은 후 파일에 저장하게 됩니다.

샘플된 값은 고유값이며 파일은 압축되지 않아 파일 크기가 매우 커질 수 있지만 오디오 품질은 매우 매우 좋게 됩니다.

SD카드는 한번에 512바이트를 제공할 수 있습니다. 512바이트는 아두이노의 램에 버퍼되기때문에 부드럽게 연주 할 수 있습니다. 기술적으로 이것은 더블버퍼라고 하는데 256바이트에서는 읽고, 256바이트는 플레이한 후, 두 버퍼를 스왑합니다. 오디오 인터럽트는 한번에 하나의 샘플을 집어 그 데이터를 DAC에 보내게 됩니다.


DAC

DAC는 매우 간단한 장치입니다. DAC로 데이터를 보내면 DAC는 디지털정보를 아날로그 신호로 변경하여 줍니다.

180px-Zeroorderhold.signal.svg.png
DAC를 이용하여 디지털 신호를 아날로그로 변환하였을때 원래의 오리지날 웨이브폼 형태로 완벽하게 변환이 되는 것은 아닙니다. 디지털 데이터가 많으면 많을 수록 오디오를 되살릴때의 품질은 높아집니다. CD의 경우 16비트 샘플입니다. 16비트 DAC를 이용한다면 훌륭한 선택이겠지만 12비트 DAC를 이용하여도 매우 좋은 품질을 자랑합니다.

마이크로컨트롤러/아두이노는 DAC_CS(chip select), DAC_CLK(data clock), DAC_DI(data), DAC_LATCH(디지털에서 아날로그로 변환) 핀을 사용하여 샘플데이터를 전송합니다. DAC는 Vref 입력또한 가지고 있는데, 이 리퍼런스 전압은 DAC가 생성할 수 있는 최대전압을 정하는데 사용이 됩니다. 로우 패스 필터가 연결되어 있어(C6, R8) 디지털 노이즈가 오디오 신호로 들어갈 수 없게 합니다.

DAC의 출력(R7, C8)에는 또다른 로우 패스필터가 연결되어 있는데, 이것은 재생산된 오디오파일에서의 'squre wave' 요소를 필터링하는데 사용이 됩니다. 노이즈가 신호의 1/4096(약 1.2mV)뿐이 안되더라도, 이것은 노이즈이며 이러한 두개의 필터는 11khz이상의 노이즈를 필터링합니다. 필터의 cut-off 주파수를 22khz가 아닌 11khz로 설정하는 것은, 만약 22khz로 샘플링하였다면 그 절반인 11khz로만 주파수를 재생할 수 있기 때문입니다. (나이퀴스트 정리에 의함)

아날로그 출력

마지막으로 볼륨제어와 출력 스테이지가 있습니다. 포텐셔미터로 볼륨을 제어할 수 있습니다. 포텐셔미터는 5Vpp에서 0Vpp의 아날로그 신호를 나누어 줍니다. 전압이 로그형태로 변화하는 audio 타입이지만 우리귀는 선형으로 듣게 됩니다.

아날로그 신호는 그다음에 고출력, rail to rail opamp로 가게 됩니다. 이 op-amp는 채널당 100mA를 공급할 수 있습니다. 두개의 채널이 병렬로 연결되어 200mA출력(5V에서)을 공급할 수 있습니다. 이 말은 8ohm스피커에 1/8W 혹은 4ohm스피커에 1/4W를 공급할 수 있다는 말입니다. 이정도의 출력이 매우 큰 출력은 아니지만 헤드폰이나 작은 스피커에는 충분히 좋은 출력입니다. 출력은 바이패스 캐패시터 C9를 통하여 필터되어 스피커를 망가 트릴 수 있는 DC전압이 스피커로 가는것을 필터하여 줍니다.


헤드폰 잭은 스테레오로 두개의 모노채널이 병렬로 연결되어 있어 가장 힘센 출력을 낼수 있게 합니다. 잭안에는 내부 스위치가 있어 헤드폰이 제거되면 오디오 신호는 잭옆의 스피커로 흐르게 됩니다.

가치창조기술
Comments