### 0.0.1 I2C 버스를 통한 외부 자기장 센서(IST8310, BMM150 등) 데이지 체인(Daisy Chain) 연결 및 Pull-up 저항 설계
PX4-Autopilot 기반의 무인기 시스템 환경에서, 비행 제어기(FC)에 내장된 지자기 센서(Compass)는 기체 내부의 고전류 전원선(Power Wire) 및 변속기(ESC)에서 발생하는 맹렬한 전자기 간섭(EMI)에 무방비로 노출된다. 이러한 이유로 고정밀 항법을 요하는 기체는 GPS 돔 내부에 실장된 외부 지자기 센서(External Compass) 데이터를 최우선(Primary) 방위각 레퍼런스로 사용하며, 이 외부 센서와의 연결은 대부분 I2C(Inter-Integrated Circuit) 버스를 통해 이루어진다.
본 절에서는 iSentek의 IST8310이나 Bosch의 BMM150과 같은 대표적인 아날로그 지자기 센서들이 단일 I2C 버스망 안에서 어떻게 공존하며, 안정적인 데이터 전송을 위해 전기적으로 어떠한 풀업 저항(Pull-up Resistor) 설계 지침이 적용되는지 분석한다.
0.1 I2C 버스의 물리 계층 구조와 데이지 체인(Daisy Chain) 토폴로지
I2C 버스는 단 두 가닥의 신호선, 즉 **SDA(Serial Data Line)**와 **SCL(Serial Clock Line)**만을 사용하여 마스터(비행 제어기)와 다수의 슬레이브(지자기 센서, 기압계 등) 기기를 연결하는 반이중(Half-Duplex) 동기식 통신 프로토콜이다.
- 어드레싱(Addressing) 메커니즘: PX4는 부팅(Booting) 체인의 초기 단계에서 I2C 버스에 등록된 7-bit 혹은 10-bit 주소를 순차적으로 스캔(Scan)한다. 예컨대 IST8310은
0x0E, BMM150은0x10과 같은 고유한 공장 출고 주소를 지니며, 마스터 코어(MCU)는 충돌 없이 원하는 칩셋을 정확히 다중 접속 제어할 수 있다. - 병렬 연결(Daisy Chain)의 구현: 복합 센서 보드 설계상 GPS(UART 통신) 칩과 달리 I2C 센서 장치들은 동일한 두 가닥의 SDA, SCL 라인에 나뭇가지처럼 줄줄이 매달리는 멀티 마스터-슬레이브 구조(데이지 체인)를 형성한다. 따라서 기체 배선을 구성할 때 FC의 물리적 포트 하나(
I2C 1또는I2C 2)에 스플리터(Splitter/Hub) 버스를 물려 여러 개의 외장 나침반을 물리적으로 연결해도 소프트웨어적으로 완벽하게 분기 처리된다.
0.2 오픈 드레인(Open-Drain) 구조와 풀업 저항(Pull-up Resistor)의 필수성
I2C 버스는 전기적으로 오픈 드레인(Open-Drain/Open-Collector) 구동 방식을 채택하고 있어, 기기 스스로 논리 레벨 ‘High(통상 3.3V)’ 전압을 능동 배출(Push)할 수 없다는 근본적인 한계가 존재한다.
I2C 라인상의 어떤 칩도 신호를 내리지 않을 때(Idle) 버스 전압을 ‘High’ 상태로 띄워두기 위해(Pull-up), 반드시 VCC(3.3V) 라인과 SDA, SCL 각각의 선 사이에 저항을 연결해야 하는데 이것이 바로 풀업 저항이다.
- 저항값 산정 한계치: 만약 풀업 저항값이 너무 크면(10k\Omega 초과) 기생 정전용량(Parasitic Capacitance)에 의한 신호의 상승 시간(Rise Time)이 길어져 래그(Lag)가 발생하고, 최악의 경우 파형이 뭉개져 400kHz(Fast Mode) 통신 속도를 따라가지 못하는 I2C Timeout에 직면하게 된다. 역으로 너무 작으면(1k\Omega 미만) 칩 내부의 트랜지스터가 논리 ’Low’를 만들 때 감당해야 할 발열과 전류 소모(Current Sink)가 허용치를 초과하여 소자 소손으로 이어진다.
- PX4 하드웨어 생태계의 규범: Pixhawk FC 메인보드 단에는 기본적으로 VCC(3.3V)를 향한 2.2k\Omega \sim 4.7k\Omega 수준의 풀업 저항이 기본 내장되어 있다. 그러나 I2C 스플리터를 통해 여러 대의 GPS 보드나 외장 나침반 칩셋을 주렁주렁 병렬로 연결하다 보면, 각 모듈 기판에 내장된 자체 풀업 저항들이 병렬 산술 연산되면서(1/R_{total} = 1/R_1 + 1/R_2 \dots) 전체 등가 저항값이 1k\Omega 이하로 곤두박질치는 치명적 위험이 발생한다.
0.3 I2C 노이즈 및 병렬 연결 문제 대처 방안 설계
야외 현장에서 엔지니어들이 종종 마주하는 “I2C Compass Sensor Missing” 에러나 QGroundControl 상의 MAG0 FAIL 컴퍼스 이탈 현상의 8할은 위의 등가 저항 붕괴 조짐이거나 I2C 꼬임선의 전자기 간섭 노출에 기인한다.
- 저항 중복 제거 설계: 고품질의 복합 센서 벤더는 외장 나침반 모듈 내에 점퍼(Jumper Pad) 회로를 삽입하여, 시스템 통합 개발자가 풀업 저항을 연결할지 끊을지(Disconnect) 직접 선택할 수 있도록 설계한다. PX4 생태계에서는 이미 FC 보드가 기본 Pull-up을 지니고 있으므로 주변기기(Peripheral) 단에서의 무분별한 저항 부가를 지양해야 한다.
- 클락 스피드(Clock Speed) 스케일링: 통신거리 연장과 노이즈 극복을 위해, PX4 시스템 구성을 담당하는 시스템 엔지니어는 굳이 필요 이상의 400kHz(Fast) 통신을 고집하지 않고
SENS_EXT_I2C_PRM과 같은 파라미터를 수정하여 클락(Clock) 주파수를 100kHz(Standard Mode)로 고의로 하향시킨다. 이를 통해 파형 무너짐에 대한 용인(Tolerance) 대역폭을 넓히는 것이 현장에서의 가장 전통적 시스템 안정화 노하우이다. - 물리적 전송선로 한계점 회피: I2C는 본래 PCB 보드 내부의 10cm 이하 단거리 소자 간 칩-투-칩(Chip-to-Chip) 통신을 전제로 만들어진 취약한 규격이다. 따라서 케이블이 30cm 이상으로 길어져야 하는 대형 드론 마스트 설계에 봉착할 경우, 직렬 I2C 노드를 강제로 배제하고 곧바로 DroneCAN(UAVCAN)이라는 차동 버스 융합 토폴로지로 과감히 아키텍처를 갈아타는 것이 PX4 비행 제어 설계의 궁극적 권장 사항이다.