여러분은 가만히 계세요 제가 모두 고장낼게요

IT 지식, PC 모바일 문제 해결 그리고 종종 애니 게임 일상생활 근황을 종종 올리고 있어요!

냐.한국 자세히보기

임베디드/SlimeVR

SlimeVR 트래커 PCB 제작하기 1월 6일 (외부 I2C 포트 만들기)

Kamilake 2022. 1. 6. 09:08

 

위에서 봤듯이 짧은 부분에 배치하면 배터리 납땜 난이도가 헬로 변하기 때문에 긴 옆부분에 배치해야 합니다. 아래 크레딧을 작성했던 부분이 남아 글씨를 이동하고 그 부분에 포트를 배치하도록 하겠습니다.

커넥터를 연결하기 쉽게 TP4056 부산물들을 이동한 다음 옆으로 밀어줬습니다.

1.5mm 정도 살짝 앞으로 튀어나온 이유는 3D 출력물 등으로 하우징을 설계하면 포트가 하우징으로 하중을 전달하도록 구성해 보려는 것도 있고 무엇보다 뽑거나 끼우기 더 수월할 것으로 보여요.

외장 센서를 연결하기 위한 케이블 순서는 통용되는 표준과 같도록 배치했습니다.

커넥터는 그냥 가장 저렴한 제품입니다.(JST PH 시리즈 4극 S4B) 외부 확장모듈을 항상 사용하는 게 아니기에 필요한 경우에만 직접 손 납땜 조립할 생각이에요.

남은 건 케이블의 품질 문제인데, 배송이 와야 확인할 수 있을 것 같아요.

50센티미터 정도의 케이블을 사용할 예정이고 저속 I2C의 경우 큰 신호 손실은 없을 것입니다.

그래도 사용할 케이블이 상당히 두껍기에 캐패시턴스를 줄이기 위해 강력한 풀업 저항을 걸어줬습니다.

(2.2k는 시중에도 평범하게 통용되는 풀업 저항이기에 이상할 건 없습니다. 1k 풀업이 적용되는 회로도 있는걸요)

케이블의 누화 방지를 위해 4가닥의 케이블을 각각 SCL/GND와 SDA/VCC로 꼬아줘야 합니다. 여기서 VCC는 양쪽 끝에서 잘 분리되어 AC GND를 형성합니다.

케이블로 연결되는 I2C는 접촉 불량에 민감할 수 있습니다.

예를 들어 I2C가 데이터를 읽는 동안 케이블이 흔들리면 슬레이브 장치는 접촉 불량이 일어나는 아주 미세한 시간 동안 0비트(LOW신호)를 보입니다.

그러면 풀업 저항이 있는 마스터쪽 I2C는 HIGH 상태에 머물게 되어 "nACK"(not acknowledge) 신호를 받았다고 생각하고 데이터 수신을 중단하고 케이블이 빠진 슬레이브 쪽 역시 SCL(클럭 사이클)을 수신하지 못해 데이터 전송을 기다리고 있는 동안 SDA 라인을 낮게 유지합니다.

그러면 다시 연결되었을 때 마스터 장치는 SDA 라인이 낮게 유지되고 있으므로 새로운 프레임을 생성할 수 없기 때문에 아무 말도 하지 못하고 기다리게 됩니다.

이런 문제에 대한 해결책으로는 타임아웃을 만들거나 오류를 검사해 슬레이브를 리셋하는 강력한 내구성의 I2C를 만드는 방법이 있겠지만... 많은 코드를 수정해야 하기 때문에 범용 하드웨어를 만들 때는 최대한 노이즈 또는 접촉 불량이 없도록 만드는 게 중요하다고 생각하는 바입니다.

이제, 외부 전원포트도 만들러 가 보도록 해요 :)