ROBOT ENGINEERING NOTES

로봇과 AMR의
전장 설계부터 인증까지

회로 실무, 산업자동화, Functional Safety, ISO 규격과 로봇 인증을 실제 설계 관점에서 정리합니다.

회로 실무 AMR / AGV Functional Safety ISO 13849 EMC / CE
AMR ENGINEERING GUIDE →

【회로-전장 실무】 ADC란? | 분해능, 샘플링, 기준전압과 전류센서 실무

 

【회로-전장 실무】 24V Digital Input 회로는 어떻게 설계할까? | PLC, 포토커플러, 입력저항

산업용 로봇과 AMR에서는 3.3V나 5V MCU Logic만 사용하는 것이 아니라 24V Digital Signal을 매우 많이 사용한다. E-STOP 상태, Sensor, Relay Feedback, Charger Interface, PLC I/O 등이 대표적이다.핵심24V Digital Input은 단

terrypack.tistory.com

 

 

【인증】 로봇 / AMR EMC 시험이란? 적용 규격과 시험 항목 정리

내 장비가 주변 장비를 방해하지 않아야 하고, 주변에서 전자파가 들어와도 내 장비가 정상적으로 동작해야 한다.이 두 가지를 모두 확인하는 것이 EMC의 핵심이다.특히 로봇과 AMR에는 모터 드라

terrypack.tistory.com

ADC PRACTICAL BASIC

ADC는 전압을 숫자로 바꾸는 회로지만, 분해능보다 더 중요한 것은 무엇을 어떻게 샘플링하느냐다.

12-bit ADC가 왜 4096단계인지부터 VREF, LSB, Sampling, Noise와 Motor Current Sensor 측정까지 회로설계 관점으로 설명한다.

MCU Datasheet를 보면 ADC 12-bit, 2Msps 같은 숫자가 나온다. 처음에는 숫자가 높을수록 무조건 좋은 것처럼 보이지만 실제 측정에서는 Resolution, Reference Voltage, Sampling Time, Source Impedance와 Noise가 모두 함께 작동한다.

필자가 Motor Control Board를 설계했을 때도 ADC는 단순한 Monitoring 기능이 아니었다. Motor Current Sensor의 Analog Output을 읽어 Current PI Controller의 Feedback으로 사용했기 때문에 ADC의 품질이 Control Loop 성능과 직접 연결됐다.

한 문장으로 설명하자면,
ADC는 Analog Voltage를 Digital Code로 바꾸는 회로다.
하지만 실제 정확도는 "몇 bit인가" 하나로 결정되지 않는다.

1. ADC는 무엇을 하는 회로인가?

ADC는 Analog-to-Digital Converter의 약자다. 연속적으로 변하는 Analog Voltage를 MCU가 계산할 수 있는 Digital Number로 바꾼다.

SENSORPhysical ValueCurrent, Temperature
ANALOGVoltageSensor Output
FILTERRC / BufferNoise 조정
ADCSamplingAnalog to Code
MCUDigital Code0 to Full Scale
CALCEngineering UnitA, V, °C

2. 12-bit ADC가 4096단계라는 뜻

N-bit ADC는 이상적으로 2의 N승개의 Digital Code를 표현할 수 있다.

Number of Codes = 2^N

따라서 10-bit는 1024, 12-bit는 4096, 16-bit는 65536개의 Code를 가진다.

3. LSB는 실제로 몇 V일까?

이상적인 Unipolar ADC를 단순화해서 보면 한 Code에 해당하는 전압은 다음처럼 생각할 수 있다.

Ideal LSB Size
LSB ≈ VREF / 2^N

3.3V를 기준으로 하는 12-bit ADC라면 약 0.806mV가 한 LSB다.

3.3V / 4096 ≈ 0.806mV

실제 ADC의 Transfer Function과 Full Scale 정의는 사용하는 MCU Datasheet를 우선한다.

4. ADC Code를 Voltage로 바꾸는 방법

이상적인 단순 환산
Vin ≈ ADC_Code × VREF / (2^N - 1)

예를 들어 12-bit ADC에서 Code가 2048이고 VREF가 3.3V라면 입력은 약 1.65V 부근이라고 볼 수 있다.

5. VREF가 흔들리면 측정값도 흔들린다

ADC는 절대적인 Voltage를 혼자 아는 것이 아니라 Reference Voltage와 입력을 비교해 Code를 만든다. 따라서 VREF에 Noise나 Drift가 있으면 입력이 안정적이어도 ADC Code가 변할 수 있다.

ST의 ADC Accuracy Application Note도 Reference Voltage와 측정 Signal Range를 잘 맞추는 것이 ADC Dynamic Range를 효과적으로 사용하는 데 중요하다고 설명한다.

3.3V Rail을 VREF로 쓴다고 항상 3.300V인 것은 아니다.Regulator Tolerance, Load Transient, Digital Switching Noise와 Temperature에 따라 변할 수 있다. 정밀 측정이라면 Dedicated Reference 또는 내부 Reference 보정방법을 검토한다.

6. Resolution과 Accuracy는 같은 말이 아니다

항목 의미 실무에서 보는 문제
Resolution 표현 가능한 Code 단계 수 LSB 크기
Offset Error 0점이 밀리는 오차 0A인데 Current가 표시됨
Gain Error Scale이 틀어지는 오차 10A가 9.5A로 계산됨
INL / DNL Code 선형성 오차 구간별 측정왜곡
Noise 같은 입력에서 Code가 흔들림 평균값과 ENOB 저하

7. Sampling은 무엇을 의미할까?

Analog Signal은 시간에 따라 계속 변한다. ADC는 그 Signal을 특정 시점마다 찍어서 Digital Sample을 만든다. Sampling Frequency가 너무 낮으면 빠른 변화가 느린 다른 Signal처럼 보이는 Aliasing이 생길 수 있다.

이론적인 최소조건
fs > 2 × fmax

이것은 Nyquist 조건의 출발점이다. 실제 회로에서는 Anti-alias Filter와 Signal Bandwidth, Control Loop 요구조건 때문에 더 높은 Sampling Frequency를 사용한다.

8. Sampling Time이 짧으면 무조건 좋은가?

MCU ADC 내부에는 Sample-and-Hold 구조가 있고 입력 Signal이 내부 Sampling Capacitor를 충분히 충전해야 한다. Sensor Output Impedance가 높거나 Series Resistor가 크면 Sampling Time이 너무 짧을 때 목표 Voltage까지 충전되지 못해 오차가 생길 수 있다.

실무 포인트ADC Conversion이 빠른 것과 외부 Signal을 정확히 Sample하는 것은 다른 문제다. Sensor Output Impedance와 RC Filter를 넣었다면 Sampling Time을 같이 검토해야 한다.

9. 전류센서를 ADC로 읽는 예

가상의 Current Sensor가 0A에서 1.65V Offset을 가지고 Sensitivity가 100mV/A라고 해보자.

Current 환산
I = (Vsensor - Voffset) / Sensitivity

3.3V, 12-bit ADC의 LSB가 약 0.806mV이므로 이상적으로 한 Code는 약 8.06mA에 해당한다.

0.806mV / 100mV/A ≈ 0.00806A = 8.06mA

하지만 실제 Current Resolution은 Sensor Noise, ADC Noise와 Offset Drift 때문에 이보다 나빠질 수 있다.

10. Motor Control에서는 ADC Sampling Timing이 중요하다

PWM으로 Motor를 구동하면 Current와 Ground에 Switching Noise가 생긴다. 아무 시점에서 ADC를 읽으면 Switching Edge 근처의 Spike를 그대로 Sample할 수 있다.

그래서 Motor Control MCU에서는 Timer Trigger를 이용해 PWM과 동기화된 시점에 ADC를 Sample하는 방법을 많이 사용한다.

정확한 Sampling 위치는 Topology에 따라 다르다.Low-side Shunt, Inline Current Sensor, Hall Sensor, PWM Mode에 따라 유효한 Measurement Window가 다르므로 Motor Driver와 MCU Application Note를 기준으로 정해야 한다.

11. RC Filter는 Noise를 줄이지만 응답도 느리게 만든다

ADC Input 앞에 RC Low-pass Filter를 넣으면 High-frequency Noise를 줄이는 데 도움이 된다. 하지만 Cutoff Frequency를 너무 낮추면 실제 Signal 변화도 같이 늦어진다.

fc = 1 / (2πRC)

Monitoring용 Temperature Sensor와 Current Control용 Current Sensor는 필요한 Bandwidth가 다르므로 같은 RC값을 그대로 사용하면 안 된다.

12. Oversampling과 Averaging은 언제 도움이 될까?

여러 Sample을 평균내면 Random Noise를 줄일 수 있다. 일부 MCU는 Hardware Oversampling을 지원하기도 한다. 하지만 평균을 많이 낼수록 Update가 느려질 수 있기 때문에 빠른 Current Loop와 느린 Temperature Monitoring은 다른 설정이 필요하다.

13. ADC Input Protection도 필요하다

MCU ADC Pin의 Absolute Maximum보다 높은 Voltage가 들어오면 MCU가 손상될 수 있다. 외부 Sensor와 긴 Cable을 연결한다면 Series Resistor, Clamp, TVS, RC Filter를 검토한다.

단 Protection 부품이 Source Impedance를 높여 ADC Sampling Error를 만들 수 있으므로 보호와 정확도를 같이 본다.

14. 실제 Motor Control Board에서 ADC를 어떻게 사용했나?

과거 3축 DC Motor Control Board에서는 각 Motor의 Current Sensor Output을 MCU ADC로 읽고 Current PI Loop의 Feedback으로 사용했다.

이 구조에서는 ADC가 틀리면 단순 Display가 틀리는 것이 아니라 Controller가 잘못된 Current를 기준으로 PWM을 조절한다. 그래서 Zero-current Offset, Gain과 Noise를 먼저 확인한 뒤 Control Loop를 닫는 것이 중요했다.

15. ADC Troubleshooting 순서

ADC Debug Checklist
  • Multimeter로 실제 Sensor Output Voltage를 먼저 측정한다.
  • 0입력에서 ADC Raw Code가 안정적인지 확인한다.
  • VREF 또는 VDDA가 실제로 얼마인지 측정한다.
  • Known Voltage를 넣어 25%, 50%, 75% 구간의 Code를 확인한다.
  • Sensor Offset과 Gain을 Calibration한다.
  • Sampling Time을 늘렸을 때 값이 바뀌는지 확인한다.
  • PWM ON/OFF에서 Noise 수준이 달라지는지 확인한다.
  • 필요하면 Oscilloscope로 ADC Pin의 실제 Waveform을 본다.

16. ADC를 선정하거나 설정할 때 보는 5가지

KEY 01Input Range

Sensor Output과 ADC Full Scale을 최대한 효율적으로 맞춘다.

KEY 02Resolution

필요한 최소 변화량이 LSB보다 충분히 큰지 본다.

KEY 03Sampling

Signal Bandwidth와 Control Period에 맞는 주기로 읽는다.

KEY 04Reference

VREF Accuracy와 Noise가 측정값에 직접 들어간다.

마무리

ADC를 이해할 때 "12-bit니까 4096단계"에서 멈추면 실제 측정 문제를 해결하기 어렵다. ADC는 VREF, Sensor Range, Sampling, Input Impedance, Filter와 PCB Noise가 모두 연결된 시스템이다.

특히 Motor Control에서는 ADC가 Current Feedback을 만드는 핵심 Sensor Interface이기 때문에 Raw Code를 읽는 단계부터 PWM Timing과 Control Loop까지 연결해서 보는 것이 중요하다.

같이 보면 좋은 TerryPack 글

반응형
LIST