본문 바로가기

AD9833을 사용한 신호발생기 및 IR 수신기 PCB 제작

by rudals.kim 2022. 11. 13. 댓글 개
반응형

AD9833의 데이터 시트를 보면 Low Power, 12.65 mW, 2.3 V to 5.5 V, Programmable Waveform Generator라고 적혀있습니다. 외부 MCU를 사용하여 임의의 주파수로 동작되는 파형을 생성할 수 있습니다. 기본적으로 둘 사이의 인터페이스는 SPI 인터페이스를 사용하는데 사용자에 의해 설정된 주파수를 가지는 사인파, 구형파, 삼각파 등의 파형을 출력할 수 있습니다.

 

아래는 제가 2년 전에 AD9833 모듈을 구매하여 동작시켜본 게시글입니다. 

 

[아두이노] AD9833 사용하기

지난번에 DSO138 Mini 오실로스코프를 구매하여 휴대용으로 만들었습니다. 2020/11/16 - [Hardware/기타] - DSO138 Mini Oscilloscope (Ver. J)구매 2020/11/16 - [Hardware/기타] - DSO138 Mini 투명 케이스 구매 2020/11/22 - [Hard

rudalskim.tistory.com

이전에는 AD9833과 아두이노를 연결하여 시리얼통신으로 command를 보내어 기본 테스트를 하였습니다. 매번 이렇게 사용하기는 매우 번거로워 이번에는 LCD와 Rotary 인코더를 사용해서 보기에도 좋고 사용하기도 쉽게 PCB로 만들어 볼 예정입니다.

 

먼저 PCB를 제작하기에 전에 아래와 같이 기본 동작 테스트를 해 보았습니다. TFT-LCD를 사용하여 주파수와 파형을 보여주고 로터리 스위치를 사용하여 출력 ON/OFF와 주파수 및 파형을 변경할 수 있도록 하였습니다.

아두이노를 사용하여 테스트해 보니 잘 동작되어 이글 캐드를 사용하여 아래와 같은 회로도를 작성 후 거버 파일을 생성하였습니다. 아두이노는 사용하지 않고 ATmega328p 칩을 바로 적용하여 PCB를 제작하였습니다.

아래 JLCPCB 사이트에 접속하여 생성된 거버 파일을 업로드하였습니다.

 

PCB 프로토타입; PCB 제조 업체

JLCPCB, 더 빠른 PCB & SMT 어셈블리를 위한 것이다 모든 단계에서 시간과 비용 절감한다. 클릭하시면 동영상을 볼 수 있습니다.

jlcpcb.com

현재(2022년 11월) 국내 신규 고객의 회원가입시 $54 쿠폰을 제공하고 있으니 참고하시기 바랍니다.

다른 옵션은 모두 기본값을 사용하였고 PCB 색상과 Remove Order Number 옵션 2개만 변경하였습니다.

카트에 저장하기 전에 Gerber Viewer를 사용하여 3D로 미리 PCB를 확인해 보았습니다.

실크에 핀 정보가 틀린 곳은 없는지 한 번 더 확인 후 주문을 넣었습니다.

이번에는 공휴일이 없어서인지 주말이 끼어 있음에도 불구하고 주문을 넣고 5일(제작 3일 + 배송 2일)만에 PCB를 수령할 수 있었습니다.

이전과 다른 스티커가 동봉되어져 왔습니다.

아래는 이번에 배송된 PCB인데 JLCPCB 사이트의 Gerber Viewer에서 미리보기 한 것과 동일하게 출력되었습니다.

우선 가장 기본이 되는 ATmega328p와 주변 소자들을 붙이고 UART와 ISP 커넥터를 연결하였습니다.

UART는 MCU와 바로 연결되어 문제가 없을 거라 생각되었는데 업로드가 되지 않고 있습니다. 원인을 디버깅해 봐야 할 것 같은데 나중에 해 보기로 하고 먼저 usbasp를 ISP 커넥터에 연결하여 칩 signature를 읽어보았습니다. ISP 커넥터를 통한 칩 인식 및 바이너리 업로드가 정상적으로 동작되어 우선은 ISP를 사용하여 PCB 동작 테스트를 해 보았습니다.

TFT-LCD 커넥터, AD9833 모듈, Reset 스위치, 로터리 인코더를 연결하였습니다. 원래는 이렇게만 동작시키려고 하였는데 펌웨어의 용량이 많이 남았습니다. 그래서 추가적으로 PCB의 아래 부분에 IR 수신 모듈을 넣어 리모컨의 IR값을 출력하는 코드를 더 적용하여 대략 86% 정도를 사용하도록 구성하였습니다.

TFT-LCD를 꽂은 후 전원을 넣으면 AD9833과 IR Receiver 2개의 메뉴가 나옵니다. 로터리 인코더를 사용하여 좌우 회전을 하여 메뉴를 선택 후 로터리 스위치를 눌러 해당 메뉴를 선택할 수 있습니다.

1번 메뉴인 AD9833을 선택 시 아래와 같은 화면이 나옵니다.

로터리 인코더로 Wave form, Frequency 설정 및 Wave form On/Off를 변경할 수 있습니다.

2번 메뉴인 IR Receiver를 선택 시 아래와 같은 화면이 나옵니다.

아래는 NEC 리모컨을 동작시킨 후 Protocol, Raw data, Address, Command 데이터가 출력된 화면입니다.

아래는 AD9833 메인 화면에서 1KHz의 사인파를 설정 후 출력해 보았습니다. DSO138 Mini에서 1KHz로 측정됩니다.

로터리 인코더로 파형을 변경하여 1KHz의 삼각파를 출력해 보았습니다.

로터리 인코더로 파형을 변경하여 1KHz의 구형파를 출력해 보았습니다. 

로터리 인코더로 주파수를 3KHz로 변경하여 사인파를 출력해 보았습니다. DSO138 Mini에서 3KHz로 잘 측정되네요.

번거롭게 아두이노와 AD9833 모듈을 연결하지 않고 단일 형태의 PCB로 제작하여 심플하면서도 한 개의 로터리 인코더로 주파수, 파형 및 출력 ON/OFF를 컨트롤할 수 있어서 편리하게 사용할 수 있을 뿐만 아니라 IR 수신 코드를 덤프 할 수 있어서 간단하게 IR 코드를 확인하는 용도로 사용하기 좋을 것 같습니다. 이번에 제작한 PCB는 빨간색으로 설정하여 의도치 않게 DSO138 Mini와 깔맞춤이 되었습니다.

반응형

댓글