압력 전송기·온도 변환기 같은 센서는 값을 4–20 mA 나 0–10 V 로 내보냅니다. 이것을 MCU 의 ADC, PLC 아날로그 입력 모듈, 패널 미터가 숫자로 바꾸고, 그 숫자를 다시 bar·°C 로 되돌리는 것이 «스케일링» 입니다. 단계는 늘 같습니다: 신호 → ADC 입력 전압 → ADC 코드 → 공학값. 각 단계가 일차식이라 양 끝 두 점만 알면 됩니다.
1. 신호를 ADC 입력 전압으로
전류 신호는 션트 저항 하나로 전압이 됩니다(V = I × R). 0–10 V 같은 전압 신호는 ADC 기준 전압보다 크면 분압으로 줄입니다. 어느 쪽이든 상한 신호의 전압이 기준 전압보다 조금 낮게 고르는 것이 요점입니다.
| 션트 저항 | 4 mA | 20 mA | 기준 전압 | 결과 |
|---|---|---|---|---|
| 150 Ω | 0.6 V | 3.0 V | 3.3 V | 위로 약 9 % 여유 — 코드 끝(4095)은 약 22 mA |
| 165 Ω | 0.66 V | 3.3 V | 3.3 V | 20 mA 가 정확히 풀스케일 — 그 위는 잘림 |
| 250 Ω | 1 V | 5 V | 5 V | 20 mA 가 정확히 풀스케일 — 그 위는 잘림 |
상한에 여유가 없으면 20 mA 를 조금만 넘는 값도 코드 끝에 붙어, «딱 상한» 과 «상한 초과» 를 구별할 수 없습니다. 0–10 V 를 3.3 V ADC 로 받을 때는 분압비 0.3(10 V → 3.0 V)처럼 같은 여유를 둡니다. 분압 저항의 표준 값은 분압 저항 계산기로 고릅니다.
2. 전압을 코드로
1 LSB = V_REF ÷ 2^N (Microchip AN693) 코드 = ⌊V_IN × 2^N ÷ V_REF⌋, 최댓값 2^N − 1 (ATmega328P §23.7 을 N비트로) 12비트, 3.3 V → 1 LSB = 0.806 mV 0.6 V → 744.7, 3.0 V → 3723.6 ← 쓰는 코드 약 2979 개
12비트라고 4096 단계를 모두 쓰지는 않습니다. 4 mA 아래(0~0.6 V)와 20 mA 위(3.0~3.3 V)를 빼면 약 2979 개이고, 0–10 bar 라면 1카운트는 약 0.0034 bar 입니다. 이것이 이 회로의 실제 분해능입니다. Microchip AN693 은 이상적인 변환기도 양자화 오차가 최대 ±½ LSB 이고, 실제 변환기는 오프셋·이득 오차와 비직선성(DNL·INL)이 더해진다고 설명합니다 — 1 LSB 는 «구별할 수 있는 단계» 이지 정확도가 아닙니다.
3. 코드를 공학값으로 — 두 점 직선
공학값 = 하한 + (코드 − 코드_하한) ÷ (코드_상한 − 코드_하한) × (상한 − 하한) 코드 2234 → 0 + (2234 − 744.7) ÷ (3723.6 − 744.7) × 10 = 5.00 bar (12 mA)
| 코드 | 신호 | 공학값 (0–10 bar) |
|---|---|---|
| 0 | 0 mA | −2.50 bar (단선·전원 없음) |
| 745 | 4.00 mA | 0.00 bar |
| 1489 | 8.00 mA | 2.50 bar |
| 2234 | 12.00 mA | 5.00 bar |
| 2979 | 16.00 mA | 7.50 bar |
| 3724 | 20.00 mA | 10.00 bar |
| 4095 | 22.0 mA | 11.25 bar (코드 끝) |
- 코드_하한·상한은 소수 그대로 둡니다(744.7, 3723.6). 반올림하면 끝 값이 조금씩 어긋납니다.
- 정수만 쓰는 MCU 에서는 0.01 bar 단위 정수로 계산하는 식으로 곱셈을 먼저, 나눗셈을 나중에 합니다. 정수 나눗셈은 소수를 버리므로 나눗셈을 먼저 하면 0 이 되기 쉽습니다.
- 션트·기준 전압의 오차와 ADC 의 오프셋·이득 오차는 위 식의 «코드_하한·상한» 을 두 점에서 정한 값으로 바꾸면 함께 보정됩니다. AN693 도 이득 오차는 디지털로 쉽게 보정된다고 적습니다.
4. 범위 밖과 단선
4–20 mA 는 0 이 아니라 4 mA 에서 시작하므로, 하한보다 한참 낮은 값(위 표의 코드 0 근처)은 «0 bar» 가 아니라 단선이나 전송기 전원 문제입니다. 상한 위 값도 «측정 범위 밖» 으로 따로 보여 주는 편이 좋습니다. 어디부터를 고장으로 볼지(NAMUR NE 43 경계 등)는 4–20mA 환산 계산기에 정리돼 있습니다.
5. 노이즈와 입력 필터
ATmega328P 데이터시트(§23.6.1)는 ADC 가 출력 임피던스 약 10 kΩ 이하의 신호에 맞춰져 있고, 나이퀴스트 주파수(f_ADC/2)보다 높은 성분은 입력 전에 저역 필터로 없애라고 권합니다. 션트 전압에 RC 필터를 두면 τ = R × C 만큼 응답이 늦어지므로, 필요한 응답 속도와 함께 RC 시정수 계산기로 고릅니다. 소프트웨어에서 여러 번 읽어 평균하는 방법도 흔합니다.
장비가 이미 바꿔서 주는 값
- PLC 아날로그 입력 모듈은 비트·기준 전압 대신 정해진 범위의 정수를 냅니다 — SIMATIC S7-1500 은 하한~상한을 0~27648, MELSEC iQ-R 은 0~32000(각 제조사 매뉴얼). 이때도 3단계의 두 점 직선을 그 범위로 씁니다.
- Modbus 장비는 소수점 없는 정수를 주고 배율이나 소수점 위치를 따로 정하는 경우가 많습니다. 예를 들어 오토닉스 MT4W 패널 미터의 측정값은 정수로 오고, 소수점 위치는 다른 입력 레지스터에 있습니다(PortDock 장비 맵).
- PortDock Modbus Master 화면의 값은 원시 값입니다. 장비 프로필을 고르면 칸 이름에 «(×0.01 Hz)» 처럼 배율이 붙으므로 그만큼 곱해 읽습니다.
PortDock 에서는
- 웹 도구 «ADC 분해능·스케일링 계산기»: 비트·기준 전압·션트(또는 분압비)·공학값 범위를 넣으면 1카운트의 값, 코드 ↔ 공학값, 상한 잘림을 보여 줍니다.
- 웹 도구 «4–20mA 환산 계산기»: PLC 카운트(0–27648 등)와 NE 43 경계. «분압 저항 계산기» 와 «RC 시정수 계산기» 는 입력 회로 값 고르기에.
- Plot: 채널마다 배율을 거는 기능은 없으므로, MCU 가 환산한 값을 «press:5.00» 처럼 보내면 바로 bar 로 그려집니다. 원시 코드를 보내면 코드 그대로 그려지니 계산기로 대조합니다.
- Modbus Master: 장비 프로필로 패널 미터·온도 지시계 칸을 채우고, 원시 값에 배율·소수점을 적용해 읽습니다.
작성 2026-10-23