ROBOT ENGINEERING NOTES

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

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

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

【회로-전장 실무】 MCU 모터 제어 보드 설계 | Encoder, PWM, ADC, Current Sensor 구성

 

 

【회로 실무】 포토커플러 선정 방법 / CTR, 입력저항, 24V Digital Input 회로

【회로-전장 실무】 DC/DC 컨버터와 레귤레이터 선정 방법 | LDO, Buck, TI WEBENCH 설계【회로 실무】 포토커플러 선정 방법 / CTR, 입력저항, 24V Digital Input 회로【ROBOT】페라이트 코어 조사 (표 첨부)페

terrypack.tistory.com

 

 

【회로-전장 실무】 DC/DC 컨버터와 레귤레이터 선정 방법 | LDO, Buck, TI WEBENCH 설계

【회로 실무】 포토커플러 선정 방법 / CTR, 입력저항, 24V Digital Input 회로【ROBOT】페라이트 코어 조사 (표 첨부)페라이트 코어 로봇의 EMC 테스트를 진행하며, 제조사별 페라이트 코어 표를 정리하

terrypack.tistory.com

EMBEDDED MOTOR CONTROL
모터 제어 보드는 MCU를 고르는 것보다, Feedback과 Power Path를 먼저 설계해야 한다.

실제 델타로봇에서 Encoder DC Motor 3축을 제어하기 위해 구성했던 Main Board를 기준으로 PWM, DIR, Encoder A/B, ADC Current Sensor, Limit Switch와 전원 구조를 설명한다.

모터 제어 보드를 처음 만들 때는 MCU Pin 수와 Clock부터 보기 쉽다. 하지만 실제 Board가 해야 하는 일은 훨씬 단순하게 정리할 수 있다.

Motor에 명령을 보내고, Motor가 실제로 어떻게 움직였는지 Feedback을 받고, 이상상태를 감지하는 것이다.

필자가 델타로봇 Main Board를 설계했을 때도 핵심 기능은 ADC, Encoder, Motor PWM/DIR, I/O였다. Motor Driver는 Power Stage를 담당하고 Main MCU는 Control과 Feedback 처리를 담당하도록 역할을 분리했다.

보드 설계 핵심 구조
Command는 PWM/DIR로 나가고, Position은 Encoder A/B로 들어오며, Torque에 대응하는 Motor Current는 Current Sensor → ADC로 들어온다. Limit Switch는 Homing과 기구 보호를 위한 Digital I/O로 사용했다.

1. 먼저 System Architecture를 블록으로 그린다

Schematic을 바로 그리기보다 MCU가 어떤 Signal을 주고받는지 Block Diagram부터 그리는 것이 좋다.

3축 DC Motor Control Board의 기본 구조
MCU OUTPWMMotor Voltage Command
MCU OUTDIRRotation Direction
FEEDBACKEncoder A/BPosition Count
FEEDBACKADCMotor Current
DIGITAL INLimit SwitchHome / Limit
COMUARTPC / UI Interface

프로젝트 자료에서도 Main MCU를 중심으로 세 Motor Driver에 PWM/DIR을 보내고, 각 Motor Encoder의 A/B Pulse를 받고, Current Sensor를 ADC로 읽는 구조가 사용됐다.

2. MCU 선정은 Pin 개수보다 Peripheral 구성이 중요하다

3축 Motor를 제어하려면 Timer, Encoder Interface, ADC Channel과 Interrupt Resource가 필요하다.

기능 필요 MCU Peripheral 설계 포인트
Motor PWM Timer PWM Output 축 수, Frequency, Resolution
Direction GPIO Fault 시 Default State
Encoder A/B Encoder Timer 또는 External Interrupt 최대 Pulse Frequency
Current Sensor ADC Sampling Rate, Resolution, Trigger
Limit Switch Digital Input Debounce, Pull-up/down
PC 통신 UART 등 Bandwidth와 Protocol

당시 Board에서는 32-bit 180MHz급 MCU를 사용했고 주요 기능을 ADC, Encoder, Motor PWM/DIR, I/O로 정리했다. 여기서 중요한 건 MCU 이름보다 필요한 Peripheral 수와 Timing Requirement다.

3. PWM은 Motor를 직접 구동하는 전력신호가 아니다

MCU의 PWM Pin은 Motor에 직접 연결하지 않는다. MCU는 Logic Level의 Command를 만들고 Motor Driver가 실제 Motor Current를 공급한다.

PWM Command가 Motor Torque로 이어지는 과정
MCUPWM DutyDigital Command
DRIVERPower StageSwitching
MOTORVoltageAverage Applied V
MOTORCurrentElectrical Response
MOTORTorqueKt x I
MECHMotionPosition / Speed

PWM Frequency는 Motor Driver 요구조건과 Current Ripple, Audible Noise, Switching Loss를 함께 봐야 한다. 무조건 높일수록 좋은 것은 아니다.

4. DIR Signal은 단순하지만 전환조건을 정해야 한다

Direction GPIO 한 개면 회전방향을 바꿀 수 있지만, 큰 Current가 흐르는 상태에서 즉시 Direction을 반전시키면 Driver와 Gear에 큰 Stress가 생길 수 있다.

일반적인 Firmware에서는 Direction Change 전에 PWM을 줄이거나 Current가 충분히 낮아진 것을 확인한 뒤 전환하는 방법을 검토한다.

이것은 당시 자료에 명시된 구현내용이 아니라 일반 설계 권장사항이다.
사용한 Motor Driver의 Truth Table과 Brake/Coast 동작을 확인하고 그에 맞춰 Direction Sequence를 정해야 한다.

5. Encoder A/B 입력은 GPIO 두 개로만 보면 안 된다

Quadrature Encoder는 A상과 B상의 위상관계를 이용해 Count와 Direction을 판단한다.

저속에서는 Count Resolution이 중요하고, 고속에서는 MCU가 최대 Pulse Frequency를 놓치지 않아야 한다.

Encoder Input에서 확인할 것
  • Encoder PPR과 실제 4체배 Count
  • 최대 Motor RPM에서 Pulse Frequency
  • MCU Timer의 Encoder Mode 지원 여부
  • Input Voltage Level과 Pull-up 조건
  • Cable Length와 Noise
  • Digital Filter 또는 Input Filter 설정

실제 프로젝트에서는 Encoder Resolution이 Velocity Loop 성능을 제한하는 문제가 있었기 때문에 Encoder Interface는 단순 Position Count 이상의 의미를 가졌다.

6. Current Sensor는 ADC Channel 하나가 아니라 Control Loop의 일부다

세 Motor 각각에 Current Sensor를 두고 MCU ADC로 읽었다. 이 Current Feedback은 단순 보호용이 아니라 Current PI Control에 사용됐다.

ADC로 읽은 Current Sensor Voltage를 Current로 바꾸는 일반적인 형태
I = (Vadc - Voffset) / Sensitivity

실제 설계에서는 Current Sensor의 Zero Offset, Sensitivity, ADC Reference, Noise를 Calibration해야 한다.

항목 문제가 생기면 확인 방법
Offset 0A인데 Current가 흐르는 것으로 계산 Motor OFF 상태 ADC 평균값 측정
Gain 실제 A와 계산 A가 다름 Known Current로 Calibration
Noise Current PI Output 흔들림 Waveform와 FFT 또는 분산 확인
Sampling Switching Noise를 잘못 샘플링 PWM Trigger와 ADC Timing 조정

7. ADC는 Resolution만 보면 안 된다

12-bit ADC라면 4096단계로 나눈다는 설명만으로 Motor Control 설계가 끝나지 않는다. Current Loop에서는 Sampling Timing과 Conversion Time이 더 중요할 수 있다.

Motor Control ADC에서 중요한 질문
PWM Switching Noise가 가장 큰 순간에 Sample하고 있지 않은가? Current Loop 주기마다 충분히 새로운 Sample이 들어오는가? ADC Full Scale을 Current Sensor Range에 효율적으로 사용하고 있는가?

ADC 자체의 기초는 별도 글에서 Resolution, Quantization, Sampling Frequency, Reference Voltage를 중심으로 확장하는 것이 좋다.

8. Limit Switch는 Homing과 초기조건을 만든다

프로젝트에서는 각 Motor의 Init Position을 설정하기 위해 Base에 Limit Switch를 설치했다.

Incremental Encoder는 전원이 꺼지면 절대 위치를 잃을 수 있기 때문에, 부팅 후 기준점을 다시 잡는 Homing 과정이 필요할 수 있다.

01Power ON

Encoder Count 기준 없음

02Slow Move

Home 방향 이동

03Limit ON

Reference 감지

04Count Reset

Zero Position 설정

05Ready

Motion 시작

9. Power Tree는 Motor Power와 Logic Power를 나눠서 본다

당시 Control Board는 12V, 360W SMPS에서 전원을 받고 Board 내부에서 5V와 3.3V를 만들어 Logic에 사용했다.

이 구조를 설계할 때는 Motor Current가 만드는 Voltage Drop과 Switching Noise가 MCU 전원과 ADC Reference에 영향을 주지 않도록 Power Return Path를 주의해야 한다.

실제 PCB에서는 "GND는 다 같은 GND"라고 생각하면 문제가 생길 수 있다.
Motor Power Return과 Sensitive ADC Return은 큰 Current Path가 겹치지 않도록 배치하고, Ground Plane과 Current Flow를 PCB Layout 단계에서 확인하는 것이 좋다.

10. PCB Layout에서는 PWM보다 Current Path를 먼저 본다

Power Stage가 별도 Driver에 있더라도 Main Board에는 Motor Driver Interface, Current Sensor, Regulator와 Connector가 존재한다. 높은 di/dt Signal과 Analog Feedback이 가까워지면 Noise 문제가 생길 수 있다.

PCB Layout 실무 포인트
  • ADC Signal과 PWM Line을 가능한 분리한다.
  • Current Sensor Output Trace를 짧게 유지한다.
  • Decoupling Capacitor를 MCU와 ADC Reference 근처에 배치한다.
  • Encoder Cable Connector 주변에 Noise 경로를 검토한다.
  • Motor Driver Return Current가 Analog Ground를 통과하지 않게 한다.
  • Regulator의 Input/Output Capacitor를 Datasheet 권장대로 배치한다.

11. Firmware도 Hardware Architecture에 맞춰 주기를 나눈다

모든 기능을 하나의 Main Loop에서 처리하면 Timing Jitter가 커질 수 있다. Motion Control은 주기성이 중요하므로 기능별 Update Rate를 나누는 것이 좋다.

Task 상대적 주기 예
Current Sampling / Current PI 가장 빠름 Timer Interrupt 기반
Position Control Current Loop보다 느림 고정 주기 Control Task
Encoder Monitoring Control 주기와 연계 Timer Count Read
UI / UART 느려도 됨 Background Task

정확한 Frequency는 Motor Dynamics와 MCU 성능에 따라 다시 설계해야 한다. 표는 상대적인 우선순위를 보여주는 예다.

12. Board Bring-up은 한 번에 Motor를 돌리지 않는다

PCB 제작 후 바로 3축 Motor를 연결하는 것보다 기능을 단계적으로 검증하는 편이 빠르고 안전하다.

01Power

12V, 5V, 3.3V 확인

02GPIO

DIR, Limit 확인

03Encoder

수동회전 Count 확인

04ADC

0A Offset와 Current 확인

05PWM

Low Duty부터 Motor Test

13. 내가 다시 Motor Control Board를 만든다면

설계 Checklist
  • 축 수와 Motor Interface부터 Block Diagram으로 정리한다.
  • PWM Timer, Encoder Timer, ADC Channel 수를 먼저 계산한다.
  • Current Sensor Range를 Motor Peak Current에 맞춘다.
  • ADC Full Scale과 Sensor Output Range를 맞춘다.
  • Encoder Maximum Pulse Frequency를 계산한다.
  • Limit Switch와 Emergency Stop을 같은 개념으로 혼동하지 않는다.
  • Power Ground와 Analog Feedback Return을 Layout에서 검토한다.
  • Connector Pinout에 전원과 Signal Return을 명확히 정의한다.
  • Firmware Control Period를 Timer 기반으로 고정한다.
  • Bring-up Test Point를 PCB에 남긴다.

14. 이 프로젝트에서 배운 핵심

KEY 01MCU보다 Interface가 먼저다

몇 축을 어떤 Feedback으로 제어할지 정하면 필요한 Peripheral이 보인다.

KEY 02ADC는 Control Sensor Interface다

Current Sensor를 읽는 ADC 품질이 Current Loop 성능에 직접 연결된다.

KEY 03Encoder는 최대 Pulse Frequency까지 본다

Resolution만 높이고 MCU가 Count를 놓치면 의미가 없다.

KEY 04Power와 Signal Return을 함께 설계한다

PCB에서 큰 Motor Current와 작은 Analog Signal이 같은 Return Path를 공유하지 않게 한다.

마무리

Motor Control Board는 MCU가 빠르다고 좋은 보드가 되는 것이 아니다. Motor Command를 안정적으로 내보내고 Encoder와 Current Feedback을 정확히 받아오는 구조가 먼저다.

당시 델타로봇 Board도 결국 PWM/DIR, Encoder, ADC, Limit Switch라는 기본 Interface의 조합이었다. 중요한 것은 각 Signal이 어떤 Control Loop에 사용되는지 알고, Timing과 Noise까지 포함해 설계하는 것이다.

반응형
LIST