LabHub
배우기 러닝패스 코스

Electronics Foundations — Validating Sensor Inputs

Create a Sensor Input Design Review

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

분압기 입력을 Python 표준 라이브러리로 계산하고 부하·공차·시간·ADC·고장 가설을 검증합니다. SPICE나 실물 보드가 아니라 명시된 저항과 1차 RC 모델입니다.

왜 중요한가

전압 하나만 맞추면 충분하지 않습니다. 부하를 연결한 뒤의 전류, 소비 전력, 공차 끝값, 획득 시점까지 검토해야 측정값이 왜 바뀌는지 설명할 수 있습니다. 실제 측정과 합성 관측을 구분하는 것도 검증의 일부입니다.

단계

  1. 무부하 5 V, 10 kΩ 두 저항을 계산해 /root/circuit-review/01-unloaded.json에 저장합니다.
  2. 10 kΩ 부하를 추가하고 /root/circuit-review/02-loaded.json에 전압·전류·감소율을 저장합니다.
  3. /root/circuit-review/03-power.json에 세 소비 전력과 공급 전력을 W로 저장합니다.
  4. 전원 ±5%, 세 저항 각각 ±1%의 16개 끝값 조합을 비교해 /root/circuit-review/04-corners.json에 개수와 범위를 저장합니다.
  5. 명목 회로에 100 nF를 추가해 /root/circuit-review/05-settling.json에 시간상수·1 ms 전압·1% 정착 시간을 저장합니다.
  6. 단계 카드의 가상 ADC 규약으로 /root/circuit-review/06-adc.json에 두 코드와 입력 유효성을 저장합니다.
  7. 2.49±0.02 V 합성 관측과 세 고장 후보를 비교해 /root/circuit-review/07-diagnosis.json에 예측·후보·다음 확인을 저장합니다.

참고

단계 카드에 모든 필드명이 있습니다. JSON 수치는 문자열이 아니며 NaN·무한대를 허용하지 않습니다. 수치 허용오차는 상대 0.00001 또는 절대 0.00000001 중 큰 값입니다. 가상 ADC 코드는 정수여야 합니다. 표준 라이브러리 json·math·itertools만 쓰므로 추가 설치가 없습니다. 셸과 Python이 처음이면 리눅스 기초 코스를 먼저 보세요. 세션 종료 전에 산출물을 복사해 보관하세요. 장비 연결, 납땜, 실제 전압 인가는 하지 않습니다.

계측기를 연결하기 전

이상적인 5 V 전원에 10 kΩ 상단 저항과 10 kΩ 하단 저항을 직렬 연결한 무부하 모델의 vout_v와 current_a를 계산하세요.

직렬 전류는 두 저항 합으로 정합니다. 출력은 하단 저항 양단 전압입니다.

부하가 회로의 일부가 된다

같은 회로의 출력과 접지 사이에 10 kΩ 부하를 연결하세요. vout_v, 상단 전류 top_a, 하단과 부하 전류의 합 return_a, 무부하 대비 전압 감소율 drop_fraction을 계산하세요.

하단 저항과 부하는 병렬입니다. 전류의 합이 맞는지도 별도로 확인하세요.

전력 장부를 맞춘다

02의 부하 회로에서 상단 top_w, 하단 bottom_w, 부하 load_w, 전원이 공급하는 supply_w를 W 단위로 계산하세요. 세 소비 전력 합과 공급 전력이 일치해야 합니다.

각 저항의 양단 전압이 다릅니다. 상단에 출력 전압을 그대로 넣는 실수를 피하세요.

공차의 최악 조합을 찾는다

전원 5 V ±5%, 세 저항 각각 10 kΩ ±1%의 끝값 조합 16개를 모두 계산하세요. case_count, min_v, max_v를 기록하세요. 각 오차는 독립이며 통계 분포는 가정하지 않습니다.

네 변수가 각각 끝값 두 개를 가지므로 2⁴개입니다. 모든 저항을 동시에 키우는 것만으로 최악 조건이 되지는 않습니다.

1 ms 뒤에도 아직 움직인다

02의 명목 회로 출력에 100 nF를 접지로 연결합니다. 초기 전압 0 V, t=0에 전원을 5 V로 올리는 이상적인 1차 모델입니다. tau_s, 1 ms 시점 v_at_1ms, 최종값 대비 오차 1% 이하에 처음 도달하는 t_1pct_s를 구하세요.

전압원을 0 V로 만들면 세 저항이 병렬입니다. 최종값은 부하가 있는 출력 전압이며, 잔여 오차 비율은 exp(-t/τ)입니다.

코드가 포화돼도 안전한 입력은 아니다

가상 12비트 ADC는 code=min(4095,max(0,floor(v/3.3*4096)))입니다. 정상 범위는 0~3.3 V로 정의합니다. 02의 정상상태 출력 code_loaded, 5 V 입력의 표시 code_overrange, 5 V가 정상 입력 범위 안인지 input_valid를 기록하세요.

코드 계산 규약을 4095로 나누는 보정식과 섞지 마세요. 포화 코드를 반환한다는 것은 물리 핀이 과전압을 견딘다는 뜻이 아닙니다.

고장 후보와 다음 측정을 구분한다

교육용 합성 관측은 2.49 V ±0.02 V입니다(실제 계측 아님). 명목 부품만 사용하고 후보를 normal, bottom_open(하단 저항만 단선), load_short(부하만 이상적 단락) 세 개로 제한합니다. predicted_v에 후보별 전압을, consistent에 관측 구간 안의 후보 이름 목록을 적으세요. 다음 확인 next_check는 전원을 끈 뒤 하단 저항을 분리해 저항을 확인한다는 뜻의 power_off_isolated_resistance로 기록하세요.

하단이 끊겨도 10 kΩ 부하가 남습니다. 후보가 하나 남았다는 것과 현실의 모든 고장 원인을 입증했다는 것은 다릅니다.