Category (Click)
개발보드 덕질하기

[AiMate] 3. PCB 설계 : 두뇌 풀가동2

 차완기 - @7/2/2023, 6:46:00 PM
team-androino AiMate 프로젝트
AiMate 프로젝트는 한국방송통신대학교 대구경부지역대학 컴퓨터과학과 androino 동아리에서 진행중인 2023년 스터디 및 메이킹 프로젝트입니다.
이 프로젝트에서 프로그래밍을 처음 접하는 팀원들을 대상으로 펌웨어 개발(아두이노 프로그래밍) 멘토 역할을 수행하고 있으며, 하드웨어 설계를 담당하고 있습니다. 아래 포스팅을 통해 프로젝트를 진행하며 겪은 여러 시행착오 과정을 소개합니다.
프로젝트가 한번 엎어지는 바람에 2~4편은 실제 결과물에 반영되지 않았습니다

쉬어가기..

지난 포스팅에서 디자인의 컨셉을 확정하였기 때문에 3D 설계의 이후 작업은 순조롭게 진행되리라 생각하였습니다. 따라서 이번에는 조금 쉬어가자는 느낌으로 회로 설계를 진행해볼까 합니다.

회로 요구사항

지난 포스팅에서 언급했듯이 메인 회로는 라즈베리파이 위의 공간에 들어가게 됩니다. 쉽게 보자면 라즈베리파이 제로의 쉴드를 만든다고 생각하면 되겠네요.
메인 회로에 필요한 요구사항은 아래와 같습니다.
전원부
스위치로 주전원 제어, 대기전력 최소화
5 V, 4 A 출력 x2 (라즈베리파이, 액추에이터)
3.3 V, 1 A 출력 x1 (MCU)
제어회로
RP2040 MCU, 2 MB Flash
리셋 스위치
BOOT 스위치 (부팅 모드 선택)
상태 LED x1
배터리 잔량 측정 기능
배터리 커넥터
배터리 충전 커넥터
전원 스위치 커넥터
프로그래밍용 USB Type-C 커넥터
40 핀 커넥터 x2
서보모터 커넥터 x7 (3 * 7 = 21 핀)
네오픽셀 커넥터 x1 (3 * 1 = 3 핀)
초음파 센서 커넥터 x1 (4 * 1 = 4 핀)

진행 과정

저는 E-CAD 프로그램으로 Autodesk의 EAGLE을 사용하고 있습니다. 회로 설계 이외의 외형선 설계에는 그다지 편리한 프로그램이 아니다 보니 외형선 설계를 위해 Fusion360과의 연동을 자주 활용하고 있습니다. 주로 아래 과정을 거칩니다.
1.
대략적인 외형 작업
하드웨어 설계 과정에서 대략적인 PCB 크기 제한을 정하고 Fusion360에서 EAGLE로 넘김
2.
PCB 패턴 디자인
크기 제한에 맞추어 PCB 패턴을 설계한 후 Fusion360으로 넘겨 크기가 올바른지 확인
3.
PCB 외형 디자인
Fusion360에서 PCB에 실장(부착)될 부품의 간섭을 확인하며 PCB 외형선 및 마운팅 홀 작업해 EAGLE로 넘김
EAGLE에서 외형선을 불러와 반영하고 변경이 필요한 일부 패턴을 수정함
4.
완성
최종적으로 Fusion360에서 간섭 여부 확인

Schematic

여기서 설계한 PCB의 전체 Schematic은 아래와 같습니다. 각 부위를 하나하나 살펴보도록 하겠습니다.
우선 회로 특성상 여러 전원이 사용되어 아래와 같이 전원을 구분하였습니다.
Vbat: 배터리 전원
VCC: 버튼에 의해 제어된 배터리 전원
VCC_1: SBC용 5 V 전원
VCC_2: 서보모터 전용 5 V 전원
VCCIO: MCU용 3.3 V 전원 (VCC_1에서 강압)

주 전원 제어, 배터리 잔량 측정

배터리로부터 공급되는 전원이 가장 먼저 거치는 부분입니다. 라즈베리파이를 사용하다 보니 전원을 MCU에서 제어할 수 있어야 했습니다.
어떻게 하면 좋을지 고민하다가 아주 좋은 레퍼런스를 발견하게 되었습니다. 버튼을 이용해 전원을 켜고, MCU를 이용해 전원 유지 및 전원 종료를 모두 할 수 있는, 그러면서도 대기전력이 없는 회로였습니다.
몇몇 부품을 SMT Capa에 맞게 적절히 바꾸어 설계해 보았습니다.
이렇게 제어된 전원(Vcc)이 실제 전원부에서 사용하는 배터리의 전압인데요, 이를 MCU에서 모니터링할 수 있도록 전압분배회로를 만들어 MCU의 ADC에 입력시켜주었습니다.
3S 배터리를 사용하기 때문에 최대 12.6 V의 전압이 입력될 수 있으며, 이를 고려해 저항을 선정하였습니다.

DC-DC 컨버터

각 부위의 전원을 공급하는 컨버터 파트입니다. 5 V로의 강압은 벅-컨버터, 3.3 V로의 강압은 리니어 레귤레이터를 사용하였습니다.
TPS564201 데이터시트 중 일부
라즈베리파이와 같은 SBC들은 정확히 5 V의 전원을 공급하는 것보다는 약 5.2 V로 올려 공급하는것이 좋습니다. 전압 강하에 대응하기 위함입니다.
따라서 데이터시트의 공식을 참고해 약간 높은 전압이 공급될 수 있도록 저항을 선정하였습니다. SMT를 맞길 때 최대한 기본 부품(확장 부품 사용 시 비용 발생)만을 사용하기 위해 두 저항을 직렬로 연결하였습니다.

MCU

RP2040은 이전에도 여러 번 설계해본 적이 있어 그때의 회로를 그대로 가지고왔습니다. MCU의 디자인 가이드라인을 참고하였습니다.

Type-C 커넥터

USB 커넥터는 오직 MCU의 프로그래밍 용도로만 사용합니다. 커넥터를 설계할 때 고민하게 만든 부분이 두 가지 있었습니다.
독립전원 사용 시 Vbus 처리
USB는 Vbus를 통해 디바이스의 전원을 공급합니다. 만약 디바이스가 독립 전원을 사용하는 경우 Vbus를 그냥 사용하지 않으면 된다고 생각하였는데요, 관련한 내용을 찾아보았더니 그렇게 간단한 것은 아니었습니다.
문제는 USB의 통신과 관련된 부분이었습니다. USB 스펙에서는 장치가 연결되지 않을 경우에는 D+/D-에 풀업이 걸리지 않도록 강제하기 때문에 MCU에서 USB의 연결 여부를 확인할 필요가 있었습니다.
라즈베리파이 피코 Schematic 중 전원부
실제로 라즈베리파이 피코의 USB 부위를 확인해보면 Vbus가 분배저항을 통해 GPIO24와 연결되어 MCU에서 USB의 연결 여부를 확인할 수 있도록 되어있었습니다.
따라서 저도 동일한 방법으로 회로를 설계하였습니다.
USB 쉴드와 그라운드 처리
AiMate는 기본적으로 배터리 전원으로 동작하지만, 어댑터를 이용해 배터리를 충전할 수 있습니다. 문제는 이렇게 배터리를 충전하며 PC와 USB로 연결하는 상황인데요, USB 쉴드를 잘못 처리하게 되면 어댑터의 누설전류가 PC로 타고 흐르거나 둘 다 접지된 경우 Ground loop가 발생할 수 있다고 합니다.
이전에 비슷한 회로를 설계했다가 지적을 받았던 적이 있어 많은 검색을 하였으나, 명확한 해답을 얻을 수 없었습니다.
그러다가 쉴드와 GND 사이에 1 MΩ 저항을 연결하는 케이스가 많아 위와 같이 설계해보았습니다.

핀 헤더

서보모터, 네오픽셀, 초음파센서 등을 연결하기 위해 핀 헤더를 사용합니다. 납땜할 때 조금 편할까 싶어 SparkFun의 삐뚤삐뚤한 커넥터 라이브러리를 사용해보았습니다.

적층 커넥터

여기까지 설계하고 부품을 확인해봤는데요, 쌓여있는 부품이 심상치가 않습니다.
보드의 크기를 늘리자니 공간이 부족해 전원 회로를 분리해 두 PCB를 적층하기로 했습니다.
따라서 이를 위해 위와 같이 동일한 커넥터를 2개씩 만들어주었습니다.

기타

이외에도 라즈베리파이와 연결하기 위한 40핀 커넥터 2개(겹쳐져있어요), 디버깅할 일이 없어야겠지만 혹시나 싶어 추가한 SWD 패드가 있습니다.

패턴 디자인

지난번에 설계한 케이스 안의 공간을 오른쪽에 그려두었습니다. 이 공간 안에 1층의 MCU부와 2층의 전원회로가 모두 들어가야합니다.
자...이제 시작입니다.
데이터시트를 참고해 필요없는 몇몇 부품은 지우고.. 합리화
여러 번 디자인을 수정한 끝에 모든 부품을 집어넣었습니다. 이게 되네요 세상에
패턴 디자인에서는 주요 부분만 집고 넘어가겠습니다.

크리스탈 그라운드 분리

MCU의 클럭 소스를 제공하는 크리스탈의 아래로는 전류가 흐르지 않는것이 좋다 하여 그라운드를 분리해보았습니다.
폴리곤(그라운드)을 지울 부위를 폴리곤으로 그려준 후 ‘Polygon Pour’를 ‘cutout’으로 설정하면 되었습니다.
각 부품의 그라운드는 via를 통하도록 하고 아랫면에서 얇은 와이어로 GND와 연결해주었습니다.

핀 헤더

헤더 핀 사이로 배선을 집어넣는것을 별로 좋아하지 않는데, 이번에는 공간이 너무 부족해 어쩔 수 없이 배선을 집어넣었습니다.

40핀 커넥터

라즈베리파이, 그리고 음성인식 모듈을 연결하는 커넥터입니다. 라즈베리파이는 뒷쪽에서 연결되기 때문에 핀의 방향을 돌려준 후 윗쪽 IDC커넥터와 연결되도록 하였습니다.

ESD

적층 커넥터

벅 번버터

벅 컨버터는 최대한 데이터시트의 가이드라인대로 배치해 설계하였습니다.

보드 디자인

패턴 설계는 완료되었고, 이제 남은 것은 PCB의 외형 설계입니다.
위에서 설계한 보드를 제어회로부와 전원부로 분리해 각각의 파일로 만든 후 Fusion360에 불러와 이전에 설계했던 로봇 몸체에 넣어보았습니다.
크기는 문제가 없는 것 같네요. 보드의 외형선과 마운팅 홀을 그릴 차례입니다.
외형선을 그리고..
EAGLE에서 불러온 후
부품 배치까지 완료하였습니다.
마운팅 홀의 경우 나사가 반정도만 결합되도록 했고 나사와 결합되는 부위에는 패턴과 솔더마스크를 밀어주었습니다.
다음으로 전원회로입니다. 전원회로는 제어회로와 결합만 되고 볼트로 결합되지는 않기 때문에 제어회로의 마운팅 홀 위치는 크게 잘라주었습니다.
동일한 방법으로 EAGLE에 넘겨 패턴을 약간 손봤습니다.
완성된 PCB 랜더링 이미지입니다.
Fusion360에서 확인했을 때 잘 들어맞네요.