본문 바로가기

TQFP32 어뎁터용 아두이노 제작

by rudals.kim 2023. 1. 4. 댓글 개
반응형

저는 ATmega328p를 주로 사용하는데 DIP 타입보다는 TQFP 패키지 타입을 선호합니다. 이유는 작은 사이즈의 무언가를 만들기에는 TQFP 타입이 유리하기 때문입니다. 그런데 간혹 ATmega328p 칩이 먹통이 되거나 불량이 난 경우 분석을 하려면 칩을 기판에서 떼어낸 후 다른 보드에 이식해야 하고 이식한 후에도 ISP나 기타 라인들을 납땜해야 하는 불편한 점이 있습니다. 이러한 불편한 점을 줄이기 위해 아래 TQFP32 어뎁터를 알리익스프레스에서 구매하였습니다.

칩이 정상적으로 동작되는지 확인해 보려면 ISP와 UART 정도는 확인이 되어야 펌웨어를 ISP 또는 아두이노 IDE로 업로드할 수 있기 때문에 이 2가지는 필수로 확인해 보아야 합니다. 그런데 이왕 만드는 김에 아두이노 우노 형태로 보드를 만들면 2가지 목적뿐만 아니라 다른 것도 쉽게 테스트해 볼 수 있을 것 같아 아두이노 프로 미니 회로를 기본으로 하여 아래와 같은 회로를 그려 보았습니다.

제가 사용하는 이글 캐드를 사용하여 미리보기를 하여 잘못된 곳은 없는지 확인해 본 후 거버 파일을 생성하였습니다.

 

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

 

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

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

jlcpcb.com

이번에는 파란색 PCB를 선택해 보았고 주문번호 표시 해제 옵션만 선택 후 주문을 하였습니다.

잘못된 부분은 없는지 JLCPCB 사이트에서 제공되는 거버 뷰어로 최종 주문 전에 다시 한번 더 PCB를 살펴보았습니다.

PCB 색상이 기본 녹색이 아니면 제작에 3일이 추가되며 배송 3일이 더해져 6일 만에 배송되어 왔습니다.

뒷면입니다. AVR 칩을 제조하던 Atmel 회사가 Microchip에 인수가 되어서 Microchip 로고를 넣어봤습니다.

ATmega328p DIP 타입을 꽂을 수 있는 소켓과 TQFP32 어뎁터를 꽂을 수 있는 핀헤더를 위치해 보았습니다.

기본 동작 테스트를 위한 기본 소자, 각종 핀헤더 및 스위치를 납땜하였습니다.

TQFP32 어뎁터를 꽂고 ISP를 연결하여 칩 ID를 읽어보니 정상적으로 읽힙니다. ISP가 정상 동작되는 것을 확인되었으니 아두이노에서 제공되는 아두이노 우노용 펌웨어를 업로드 후 Fuse 세팅을 하였습니다.

이제 Usb2Serial을 꽂은 후 아두이노 IDE를 사용하여 기본 blink 예제를 업로드해 봅니다. 아두이노 IDE에서 정상적으로 빌드가 되고 시리얼 포트를 통해 예제 바이너리가 에러 없이 업로드되었습니다. 

재활용한 하얀색 LED를 달았더니 너무 밝아 눈이 아프네요.

지난 게시글의 'AD9833을 사용한 신호발생기 및 IR 수신기 PCB 제작'시 사용한 ATmega328p 칩이 UART가 동작이 안되어 ISP로 업로드하여 사용하였는데 이 불량 시료를 분석해 보았습니다.

 

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

AD9833의 데이터 시트를 보면 Low Power, 12.65 mW, 2.3 V to 5.5 V, Programmable Waveform Generator라고 적혀있습니다. 외부 MCU를 사용하여 임의의 주파수로 동작되는 파형을 생성할 수 있습니다. 기본적으로 둘 사

rudalskim.tistory.com

지난번의 불량 시료에서 ATmega328p 칩을 분리하여 어뎁터에 꽂아 넣었습니다.

이 칩이 ISP는 연결이 되었기 때문에 ISP를 통해 아두이노 우노 펌웨어를 업로드하였습니다.

위에서 한 테스트와 마찬가지로 Usb2Serial를 꽂은 후 아두이노 IDE를 통해 Blink 예제를 업로드해 보니 아래와 같은 에러가 발생되며 시리얼 포트로 업로드가 되지 않습니다.

Sketch uses 924 bytes (2%) of program storage space. Maximum is 32256 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xc6
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xc6
Problem uploading to board.  See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions.

아무래도 ATmega328p 칩의 시리얼쪽 포트가 죽은 것 같습니다. 이 칩은 불량 표기 후 시리얼 포트를 사용하지 않아도 되는 경우에 재활용 용도로 사용해야 할 것 같습니다. 이번에 만든 TQFP32 어뎁터용 아두이노를 사용하면 좀 더 쉽게 TQFP 패키지를 테스트해 볼 수 있어서 편리할 것 같습니다.

반응형

댓글