본문 바로가기

ESP32

Iridium 9603N 전원 인가 시 BOD 리셋 이슈

반응형


name: Iridium 9603N 전원 인가 시 BOD 리셋 이슈


description: POWER_GPIO→TPS61022 EN 구조에서 4700µF 충전 인러시로 배터리 전압 강하 → ESP32 BOD. 영구 해결은 P-FET 로드 스위치 추가.
type: project
---

## 증상
POWER_GPIO(38) HIGH 직후, AT 명령 전송 전에 BOD 트리거 → ESP32-S3 리셋.

```
[IRD]  ── 이리듐 송신 시작 ──
E BOD: Brownout detector was triggered
=== geo-iridium-mon start ===
```

## 회로 구성 (확인된 사항)
- 전원: SAFT LSP 33600 (Li-SOCl₂ + 슈퍼캐패시터, 3.6V, 17Ah)
- 부스트 컨버터: TPS61022 (스위치 4A, 출력 2A급)
- **POWER_GPIO 38 → TPS61022 EN 핀 직접 제어**
- TPS61022 출력 캐패시터: 4700µF 전해 + 100µF 전해 (추가됨)
- ESP32도 동일 배터리에서 전원 공급

## 확정된 원인
POWER_GPIO 38 HIGH → TPS61022 소프트스타트 시작 → 출력 캐패시터(4700µF+) 를 0V에서 충전 → 배터리에서 대전류 인출 → 배터리 전압 순간 강하 → ESP32 VCC도 강하 → BOD.

**4700µF이 악화 요인:** 충전 용량이 클수록 배터리에서 더 오래, 더 많은 전류를 인출하기 때문.

```
POWER_GPIO HIGH
      ↓
TPS61022 EN 활성 → 소프트스타트
      ↓
4700µF을 0V에서 충전 → 배터리 대전류 인출
      ↓
배터리 전압 순간 강하
      ↓
ESP32 VCC 강하 → BOD
```

## 시도했으나 효과 없었던 조치
- TPS61022 출력단 100µF 전해 캐패시터 추가 → BOD 동일 (용량 문제가 아님)

## 영구 해결책 — 회로 변경 필요
TPS61022는 항상 켜두고, 9603N 전원은 별도 P-FET 로드 스위치로 제어.

```
현재 (문제):
Battery → TPS61022(EN=GPIO38) → [4700µF] → 9603N

변경 후:
Battery → TPS61022(EN=VCC, 항상 ON) → [4700µF, 항상 충전 유지]
                                              ↓
                                       P-FET 로드 스위치 (GPIO38 제어)
                                              ↓
                                            9603N
```

효과: TPS61022 출력과 캐패시터가 항상 충전 상태 → 로드 스위치 ON 시 캐패시터가 인러시 공급 → 배터리 부하 없음.

## SBDIX 송신 시 BOD 이슈 (2026-04-12)

### 증상
CSQ≥2 통과 후 SBDIX 1/5 시도 시점에 BOD 리셋.

### 원인
9603N RF 버스트 피크 ~1.5A + ESP32-S3 240MHz ~150mA = TPS61022 2A 한계 초과.
4700µF 캐패시터가 충전 상태여도 RF 버스트 지속 시간 동안 공급 에너지 부족.

### 소프트웨어 임시 조치
SBDIX 직전 ESP32 CPU 클럭을 240MHz → 80MHz로 낮춰 ~90mA 여유 확보.
SBDIX 완료(성공/실패) 후 240MHz로 복원.

```cpp
setCpuFrequencyMhz(80);
// SBDIX 시도
setCpuFrequencyMhz(240);
```

### 결과
BOD 시점 1/5 → 5/5로 이동. 완전 해결 아님.

## SBDIX 재시도 중 BOD (5/5) 이슈 (2026-04-12)

### 증상
CPU 80MHz 적용 후에도 SBDIX 5/5 시도 시 BOD 발생.

### 원인
RF 버스트 × 4회 + 30초 대기 × 4회 동안 배터리 내장 슈퍼캐패시터 점진적 소진.
30초 대기로는 슈퍼캐패시터 회복이 불충분 → 5/5 시도 시 잔량 부족 → BOD.

### 소프트웨어 조치
재시도 간격 30초 → 60초로 연장. 슈퍼캐패시터 회복 시간 확보.

```cpp
if (!sent && attempt < 5) delay(60000UL);  // 60초 대기 (슈퍼캐패시터 회복)
```

**Why:** 슈퍼캐패시터가 Li-SOCl₂ 셀에서 재충전되는 데 시간이 필요. 30초로는 부족.
**How to apply:** 소프트웨어 한계 도달. 근본 해결은 P-FET 하드웨어 변경 필수.

## 임시 소프트웨어 조치 (원인 확인용)
setup() 최상단에서 POWER_GPIO를 먼저 HIGH로 올리고 5초 대기.
캐패시터가 천천히 충전되며 배터리 부하 분산 → BOD 해소되면 원인 확정.

```cpp
void setup() {
  pinMode(IRIDUM_POWER_GPIO, OUTPUT);
  pinMode(IRIDUM_ONOFF_GPIO, OUTPUT);
  digitalWrite(IRIDUM_ONOFF_GPIO, HIGH);
  digitalWrite(IRIDUM_POWER_GPIO, HIGH);
  Serial.begin(115200);
  delay(5000);  // 캐패시터 충전 + 안정화 대기
  // ... 이후 나머지 초기화
```

**Why:** POWER_GPIO가 TPS61022 EN을 직접 제어하는 구조적 문제. 캐패시터 추가로는 해결 불가.
**How to apply:** 회로 재설계(P-FET 로드 스위치 추가) 전까지 소프트웨어 임시 조치 적용. 신규 보드 설계 시 TPS61022 EN은 VCC에 고정하고 로드 스위치로 9603N 전원 제어할 것.

 

 

다음 포스팅 참고 - 글 https://fishpoint.tistory.com/12999

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩