안녕하세요, 서보민입니다 👋

하드웨어와 소프트웨어를 함께 다루는 임베디드 / 펌웨어 개발자입니다. STM32, ESP32 기반 시스템 개발, 논문 리뷰, 알고리즘 공부를 기록합니다.
STM32 ESP32 AVR Android C / C++ Java

HBOT 챔버 PCB 전원부 설계: 24V→5V→3.3V와 절연

들어가며 고압산소챔버(HBOT) 제어 PCB를 설계하면서 전원 구조를 먼저 정리했다. 시스템에는 여러 전압 레벨이 공존한다. 24V: 솔레노이드 밸브, 비례제어 밸브, 센서류 5V: ADC 아날로그 전원(AVDD), OP-AMP 3.3V: 디지털 아이솔레이터(ADUM VCC), ADC 디지털 전원(DVDD) 여기에 Tinkerboard(SBC)가 상용 전원 어댑터로 독립 동작하고, 밸브·센서 측은 챔버 제조사의 의료용 SMPS에서 24V를 공급받는다. 두 측의 GND가 달라 신호 연결 시 절연이 필요하다. 모든 회로는 하나의 PCB에 올라간다. 24V → 5V: VR10S05 ...

2026년 6월 13일 · 3 min · 서보민

DRV110으로 솔레노이드 밸브 전력 낭비 줄이기

들어가며 고압산소챔버(HBOT)를 제어하면서 챔버 내 압력 경로는 다음과 같이 구성했다. 비례제어 밸브가 압력을 정밀하게 조절하는 동안, 앞뒤의 솔레노이드 밸브(solenoid valve, 이하 솔밸브)는 경로 자체를 열고 닫는 역할을 한다. 치료가 시작되면 솔밸브가 열리고, 치료가 끝날 때까지 계속 열린 상태를 유지해야 한다. 문제는 솔밸브가 열린 상태를 유지하기 위해 코일에 전류를 계속 흘려야 한다는 것이었다. 일반적인 ON/OFF 구동 회로는 밸브가 열려 있는 내내 정격 전력을 소비한다. 밸브 2개가 120분짜리 HBOT 세션 동안 계속 켜져 있으면, 낭비되는 전력이 꽤 된다. ...

2026년 6월 12일 · 5 min · 서보민

PID 제어 이론 기초: 고압산소챔버 압력 제어로 이해하기

들어가며 에어컨을 26도에 맞춰두면, 실내 온도가 26도에 닿는 순간 딱 멈출까? 좋은 에어컨은 26도에 가까워질수록 슬슬 출력을 줄이다가 부드럽게 안착한다. 반대로 어설픈 온도 조절은 24도까지 확 떨어뜨렸다가 다시 28도로 올렸다가 출렁거린다. 이 “부드럽게 안착하느냐, 출렁거리느냐"의 차이를 만드는 게 바로 PID 제어다. 알게 모르게 우리는 하루 종일 PID를 쓴다. 오르막에서도 속도를 유지하는 자동차 크루즈 컨트롤, 바람 속에서 제자리에 떠 있는 드론, 3D 프린터 노즐 온도, 보일러… 전부 PID다. 세상에서 가장 널리 쓰이는 제어 알고리즘인데, 핵심 아이디어는 의외로 한 줄로 끝난다 — “목표랑 얼마나 차이 나는지 보고, 그만큼 조절한다.” ...

2026년 6월 12일 · 7 min · 서보민

AD5420 Daisy Chain 출력이 안 나온 이유 — 오실로스코프로 쓰레기값을 잡기까지

AD5420 두 개를 Daisy Chain으로 연결했는데 출력이 아예 안 나왔다. 오실로스코프로 MISO를 확인했더니 쓰레기값이 보였다. 데이터시트에는 이미 UNDEFINED라고 적혀 있었다.

2026년 6월 10일 · 3 min · 서보민

만능기판 테스트 중 계속 발열이 생긴 이유

AD5420을 TSSOP 변환기판으로 만능기판에서 테스트하려다 전원 넣으면 발열이 심하게 생겼다. 원인은 배선이 아니라 칩 바닥 exposed pad였다.

2026년 6월 10일 · 3 min · 서보민

임베디드 기초 7편 - 클럭 심화: 보드레이트와 SPI 속도는 어떻게 계산되는가

들어가며 UART 보드레이트 계산 BRR 레지스터 STM32 UART는 BRR(Baud Rate Register)로 분주비를 설정한다. 기본 16배 오버샘플링(OVER8=0) 기준: RM0383 19.3.4 — Fractional baud rate generation: BRR 레지스터와 USARTDIV 관계 1 Baud Rate = f_PCLK / (16 × USARTDIV) USARTDIV는 정수부(12비트)와 소수부(4비트)로 구성된다. 소수점 이하 4비트이므로 1/16 단위까지 설정 가능하다. 계산 예시 UART2, APB1 = 50 MHz, 목표: 115200 bps 1 2 3 4 5 6 USARTDIV = 50,000,000 / (16 × 115,200) = 27.127... 정수부: 27 소수부: 0.127 × 16 = 2.03 → 반올림 → 2 BRR = (27 << 4) | 2 = 0x01B2 실제 보드레이트 역산: ...

2026년 6월 9일 · 3 min · 서보민

상하지 재활 자전거 모니터링 시스템 — 프로젝트를 돌아보며

전자공학회 구두 발표까지 이어진 상하지 재활 자전거 모니터링 시스템 개발 과정을 연구 배경부터 시스템 설계, 기술적 선택, 한계까지 정리했다.

2026년 6월 5일 · 5 min · 서보민

Wi-Fi, WebSocket, 실시간 UI와 데이터 저장

ESPAsyncWebServer로 웹 서버를 올리고, WebSocket으로 센서 데이터를 실시간 전송하고, 측정이 끝나면 수백 KB의 바이너리 데이터를 브라우저로 내려받는 과정을 정리했다.

2026년 6월 5일 · 5 min · 서보민

GPIO 12에 외부 회로를 연결했더니 부팅이 안 됐다

ESP32 Feather V2에서 GPIO 12에 외부 회로를 연결했더니 부팅이 안 됐다. 원인은 코드나 회로 문제가 아니라 스트래핑 핀이었다.

2026년 6월 4일 · 3 min · 서보민

임베디드 기초 6편 - 클럭 트리와 RCC: 주파수는 어디서 오는가

들어가며 UART 보드레이트를 설정할 때 115200을 입력한다. SPI 속도를 설정할 때 분주비(prescaler)를 고른다. 이 숫자들의 근거가 뭘까. 전부 클럭(Clock) 에서 나온다. MCU 안의 모든 주변장치는 클럭 신호를 기반으로 동작하고, 그 클럭이 얼마인지에 따라 통신 속도가 결정된다. 클럭 소스 (Clock Source) MCU는 기준 클럭을 어딘가에서 공급받아야 한다. STM32F4의 주요 클럭 소스는 두 가지다. HSI (High Speed Internal) MCU 내부 RC 오실레이터 16 MHz 고정 외부 부품 불필요 정밀도 낮음 — 온도와 전압에 따라 ±1% 수준의 오차 리셋 직후 기본으로 사용되는 클럭 소스 오차가 있는데도 HSI를 쓰는 이유가 있다. ...

2026년 6월 3일 · 4 min · 서보민