November 20, 2024

디바이스마트 미디어:

[66호] 원하는 색상으로 제어가 가능한 아두이노 IoT 스마트 무드등 키트 -

2021-06-25

★2021 ICT 융합 프로젝트 공모전 결과 발표! -

2021-05-12

디바이스마트 국내 온라인 유통사 유일 벨로다인 라이다 공급! -

2021-02-16

★총 상금 500만원 /2021 ICT 융합 프로젝트 공모전★ -

2021-01-18

디바이스마트 온라인 매거진 전자책(PDF)이 무료! -

2020-09-29

[61호]음성으로 제어하는 간접등 만들기 -

2020-08-26

디바이스마트 자체제작 코딩키트 ‘코딩 도담도담’ 출시 -

2020-08-10

GGM AC모터 대량등록! -

2020-07-10

[60호]초소형 레이더 MDR, 어떻게 제어하고 활용하나 -

2020-06-30

[60호]NANO 33 IoT보드를 활용한 블루투스 수평계 만들기 -

2020-06-30

라즈베리파이3가 드디어 출시!!! (Now Raspberry Pi 3 is Coming!!) -

2016-02-29

MoonWalker Actuator 판매개시!! -

2015-08-27

디바이스마트 레이저가공, 밀링, 선반, 라우터 등 커스텀서비스 견적요청 방법 설명동영상 입니다. -

2015-06-09

디바이스마트와 인텔®이 함께하는 IoT 경진대회! -

2015-05-19

드디어 adafruit도 디바이스마트에서 쉽고 저렴하게 !! -

2015-03-25

[29호] Intel Edison Review -

2015-03-10

Pololu 공식 Distributor 디바이스마트, Pololu 상품 판매 개시!! -

2015-03-09

[칩센]블루투스 전 제품 10%가격할인!! -

2015-02-02

[Arduino]Uno(R3) 구입시 37종 센서키트 할인이벤트!! -

2015-02-02

[M.A.I]Ahram_ISP_V1.5 60개 한정수량 할인이벤트!! -

2015-02-02

MoonWalker Series Motor Controllers User’s Manual 09. I/O 신호 처리

MW001

MW001

MoonWalker Series

Motor Controllers

User’s Manual

MW-MDC24D100S / MW-MDC24D100D

MW-MDC24D200S / MW-MDC24D200D

MW-MDC24D500S / MW-MDC24D500D

 ※ 사용자 매뉴얼에 포함된 정보는 정확하고 신뢰성이 있는 내용입니다. 그러나 출판 당시 발견되지 않은 오류가 있을 수 있으니 사용자는 자신의 제품 검증을 수행하시기 바라며, 전적으로 사용자 매뉴얼에 포함된 정보에 의존하지 마시기 바랍니다.

 

09.  I/O 신호 처리

제어기의 디지털, 아날로그, 펄스 입력과 디지털 출력은 다양한 용도로 이용 될 수 있습니다. 아래 표는 제어기에서 사용되는 I/O 형태와 기능 그리고 연결되는 센서와 액츄에이터를 보여줍니다. 제어기 모델별 포트의 개수, 전압 또는 전류 사양, I/O 커넥터의 위치 등은 데이터시트를 참조해야 합니다.

표 9‑1 제어기에 사용되는 I/O의 기능과 장치 연결

I/O Type Function Sensor, Actuator
Digital Output - Motor Power ON
- Motor is Reversed
- High Voltage Warning
- High Temperature Warning
Buzzer, LED, Light,
Brake, Shunt Load,
Cooling Fan, Relay, Valve, Motor, Solenoid
Digital Input - Emergency/Declaration/Quick Stop
- Run Script
- Forward/Reverse Limit Switch
- Invert Direction
- Load Home Counter
Switch류
Analog Input - Motor Command: Voltage, Current,
Velocity, Position
- Motor Feedback: Position, Velocity
Joystick, Potentiometer,
Tachometer, Thermistor,
Voltage source
Pulse Input - Motor Command: Voltage, Current,
Velocity, Position
- Motor Feedback: Position, Velocity
RC Radio,
Absolute Encoder

아래 그림 9-1은 제어기의 I/O 입출력 신호의 전체 흐름을 단순화 된 블록 선도로 보여줍니다.

MW042
그림 9‑1 I/O 입출력 신호의 전체 흐름을 보여주는 블록 선도

아날로그 입력과 펄스 입력 채널로부터 캡처된 신호는 처리 순서를 따라 조정되어 모터제어기에 입력됩니다. 캡처된 신호는 캡처 방법에 따라 값의 범위가 서로 다릅니다. 이 신호는 단위 변환(Unit Conversion) 블록에서 -1과 1사이의 정규화된 값으로 조정됩니다. 이후, 디지털 입력 신호와 함께 매핑, 믹싱, 중재(Mapping, Mixing, Arbitration) 과정을 거쳐 최종적으로 모터제어기에 입력됩니다.

아날로그 입력이나 펄스 입력이 완전히 처리된 후에는 모터 명령으로 사용될 수 있습니다. 만일 모터제어기가 위치제어 모드나 속도제어 모드로 동작하는 경우는 피드백(속도, 위치)으로 사용될 수도 있습니다.
모터제어기의 디지털 출력 신호는 매핑(mapping) 과정만을 거치고 제어기의 디지털 출력 채널로 나갑니다.

9.1 공통 설정

아날로그 입력, 펄스 입력, 디지털 입력, 디지털 출력의 사용 여부와 반전 여부는 다음 구성 파라미터들로부터 결정됩니다:

·  ai_enable – AI Enable
·  ai_invert – AI Invert
·  pi_enable – PI Enable
·  pi_invert – PI Invert
·  di_enable – DI Enable
·  di_invert – DI Invert
·  do_enable – DO Enable
·  do_invert – DO Invert

9.1.1 I/O 채널의 사용 여부 설정

아날로그 입력, 펄스 입력, 디지털 입력, 디지털 출력의 각 채널 별로 사용 여부(Enable 혹은 Disable)를 설정할 수 있습니다. 이는 4종류의 I/O에 대해 각각 32bit 구성 파라미터인 ‘AI Enable’, ‘PI Enable’, ‘DI Enable’, ‘DO Enable’를 사용하여 설정됩니다. 구성 파라미터의 각 비트는 해당 I/O 채널의 사용 여부를 나타냅니다:

·  Bit0 – 채널 1의 사용 여부
·  Bit1 – 채널 2의 사용 여부
·  Bit2 – 채널 3의 사용 여부
·  Bit3 – 채널 4의 사용 여부
·  …

해당 비트가 0인 경우 채널은 사용 불가능합니다. 1인 경우 채널은 사용 가능합니다.
디지털 출력 채널에 기능이 매핑되지 않은 경우, 스크립트 혹은 사용자가 직접 디지털 출력 채널을 제어할 수 있습니다.
아날로그 입력, 펄스 입력, 디지털 입력 채널에 센서가 연결되지 않으면 입력 포트가 플로팅(floating) 상태가 됩니다. 이러한 상태에서 채널을 활성화하고 값을 읽으면 쓰레기 값이 읽히게 됩니다.

9.1.2 I/O 채널의 반전 여부 설정

4종류의 I/O에 대해 각 채널의 반전 여부도 설정할 수 있습니다. 각각 32bit 구성 파라미터인 ‘AI Invert’, ‘PI Invert’, ‘DI Invert’, ‘DO Invert’를 사용하여 설정됩니다. 구성 파라미터의 각 비트는 해당 채널의 반전 여부를 나타냅니다:

·  Bit0 – 채널 1의 반전 여부
·  Bit1 – 채널 2의 반전 여부
·  Bit2 – 채널 3의 반전 여부
·  Bit3 – 채널 4의 반전 여부
·  …

해당 비트가 1인 경우, 입출력 값의 극성이 반전됩니다. 디지털 입출력의 경우 0은 1로 바뀌고 1은 0이 됩니다. 아날로그/펄스 입력의 경우 -1은 1로 바뀌고 1은 -1로 바뀝니다. 0의 값은 그대로 유지됩니다.
I/O의 종류에 따라 반전이 적용되는 시점이 다르다는 것에 주의해야 합니다(그림 9-1에서 기호가 반전 여부가 적용되는 위치를 표시함). 디지털 출력 채널의 경우, 반전 여부는 디지털 출력 포트로 신호가 나가기 직전에 적용됩니다. 디지털 입력 채널의 경우, 반전 여부는 디지털 입력 포트에서 신호를 읽고 나서 바로 적용됩니다. 아날로그와 펄스 입력의 경우, 포트에서 읽은 값이 정규화된 후 반전 여부가 적용됩니다.

9.2 디지털 출력 매핑

모터제어기의 디지털 출력 버퍼 값은 매핑 경로를 따라 제어기의 디지털 출력 채널로 나갑니다.
디지털 출력 채널의 매핑과 관련된 구성 파라미터는 다음과 같습니다:

·  do_function – DO Function

사용자는 ‘DO Function’ 파라미터를 설정하여, 제어기의 디지털 출력 채널을 모터제어기의 디지털 출력 버퍼의 기능으로 매핑할 수 있습니다. 아래의 그림 9-2는 사용 가능한 기능을 매핑 한 예를 보여줍니다. 여기서 검은색 화살표는 신호의 흐름이고 파란색 화살표는 매핑의 방향입니다.

MW043
그림 9‑2 디지털 출력 채널의 매핑 예

매핑의 설정은 디지털 출력 채널을 기준으로 모터제어기의 디지털 출력 버퍼의 기능을 선택하게 됩니다. 디지털 출력의 매핑은 출력 신호의 충돌을 만들지 않습니다. 즉, 하나의 소스를 여러 출력 채널로 내보내는 것은 문제가 되지 않습니다.

Motor Control UI 유틸리티를 사용하여 디지털 출력 채널의 매핑을 쉽게 할 수 있습니다.

9.3 아날로그 입력 캡쳐

아날로그 입력은 제어기에서 가장 간단하고 일반적인 입력 수단입니다. 보통 포텐셔미터나 포텐셔미터를 내장한 조이스틱을 연결하여 로봇을 조종하는데 사용됩니다.
아날로그 입력 채널은 0과 5V 사이의 전압을 읽습니다. 전압은 12bits AD 컨버터에 의해 디지털로 변환되어 마이크로컨트롤러가 읽게 됩니다. 읽은 값은 0과 4095 사이의 원시 값(raw value)이 됩니다.

9.4 펄스 입력 캡쳐

펄스 입력은 보통 RC 조종기와 수신기를 연결하여 로봇을 원격 조종하는데 사용됩니다. 그리고 모터의 회전각을 측정하는 절대 엔코더를 펄스 입력에 연결할 수도 있습니다.

MW044
그림 9‑3 펄스 신호 캡쳐

펄스 입력 캡쳐와 관련된 구성 파라미터는 다음과 같습니다:

·  PI Capture Type

9.4.1 펄스 신호의 캡쳐
다음 그림 9-4과 같이, 펄스에서 ON 상태는 High time으로 OFF 상태는 Low Time으로 측정됩니다. Pulse Period는 High Time과 Low Time을 더한 시간입니다.

MW045
그림 9‑4 펄스 신호의 구성

사용자가 ‘PI Capture Type’ 파라미터의 설정에 의해, 다음과 같이 Frequency, Duty Cycle, Pulse Width 중 하나를 캡쳐 할 수 있습니다:

·  Pulse Width = High Time X 1,000,000 (단위: µs)
·  Frequency = 1 / Pulse Period (단위: Hz)
·  Duty Cycle = 1000 X High Time / Pulse Period (단위: ‰)

Pulse Width는 펄스의 주기에 관계없이 펄스의 ON 시간(High Time)을 측정합니다. Frequency 캡쳐는 펄스 주기(Pulse Period)의 역수로부터 계산합니다. Duty Cycle은 펄스의 주기에 대해 상대적으로 펄스의 ON 시간을 측정합니다. Duty Cycle은 PWM 발진기의 주파수 유동을 보상함으로 일반적으로 Pulse Width 측정에 비해 좀 더 정확합니다.
펄스 캡쳐(Pulse Width, Frequency, Duty Cycle) 값은 펄스 입력이 최소 20Hz에서 최대 20kHz 사이의 주파수를 가져야 합니다. 그리고 펄스 폭은 최소 10us 이상이 되어야 합니다. 그렇지 않으면 캡쳐가 정상적으로 수행되지 않거나 캡쳐 값을 무효한 값으로 판단하고 원시 값(Raw Value)은 0이 출력 됩니다.
각각의 캡쳐 타입에 대한 값의 유효한 범위를 다시 한번 정리해 보면 다음과 같습니다:

·  Pulse Width: 10µs ~ 50000µs
·  Frequency: 20Hz ~ 20kHz
·  Duty Cycle: 0‰ ~ 1000‰

9.5 아날로그/펄스 입력의 정규화

아날로그/펄스 입력의 원시 값(Raw Value)은 캡쳐 타입에 따라 다양한 스케일의 값을 가집니다. 모터제어기에서 이 값을 범용으로 사용하기 위해, -1과 1사이의 값을 가지는 정규화 과정을 거치게 됩니다. 그리고 입력 값의 Min/Max Safety, Center Safety를 검사합니다.
원시 값은 아래 그림 9-5와 같이 순차적으로 처리되어 변환된 값(Converted Value, Normalized Value)을 출력합니다.

MW046
그림 9‑5 아날로그/펄스 입력 값의 단위 변환

아날로그/펄스 펄스 입력의 정규화와 관련된 구성 파라미터는 다음과 같습니다:

·  center_safety – Center Safety
·  min_max_safety – Min/Max Safety
·  ai_linearity – AI Linearity
·  pi_linearity – PI Linearity
·  ai_input_min – AI Input Min
·  ai_input_max – AI Input Max
·  ai_input_center – AI Input Center
·  ai_input_deadband – AI Input Deadband
·  pi_input_min – PI Input Min
·  pi_input_max – PI Input Max
·  pi_input_center – PI Input Center
·  pi_input_deadband – PI Input Deadband

9.5.1 정규화된 값으로의 캘리브레이션

센서로 측정하고자 하는 물리량의 값을 정확하게 측정하기 위해 센서를 연결한 후 반드시 캘리브레이션 해야 합니다.
만일 조이스틱의 움직임이 0V(Raw Value: 0)와 5V(Raw Value: 4095)에 도달하지 못하는 경우 또는 조이스틱의 중심점이 정확히 2.5V(Raw Value: 2047)를 출력하지 않는 경우, 아날로그 입력은 이를 보상하기 위해 캘리브레이션할 수 있습니다.
다음 그림 9-6과 같이, 원시 값은 사용자가 설정한 최소(‘AI Input Min’, ‘ PI Input Min’)와 최대(‘AI Input Max’, ‘ PI Input Max’), 센터(‘AI Input Center’, ‘ PI Input Center’) 값을 사용하여 -1에서 1까지의 실수로 조정됩니다.

MW047
그림 9‑6 아날로그 입력 값의 정규화

데드밴드(‘AI Input Deadband’, ‘ PI Input Deadband’)는 중심 부근의 움직임에 대해 0의 값을 가지도록 하는 영역을 지정합니다. 이는 조이스틱이나 RC 조종기의 중심 부근에서 약간의 움직임을 허용하게 합니다.

보통 스틱을 가만히 두어도 완전한 중립 위치로 복귀하지 않게 되는데, 사용자가 눈으로 보기에 스틱이 중간에 있는 것처럼 보여도 제어기에서는 마치 송신기의 스틱을 미세하게 움직이고 있는 상태로 인식하게 됩니다. 데드밴드 설정으로 이러한 문제를 해결합니다.

9.5.2 Min/Max 안전 검사

사용자가 ‘Min/Max Safety’ 파라미터의 설정을 통해, Min/Max 안전 검사 기능을 켜면, 정규화된 값이 -1과 1을 벗어날 때 입력 값을 비정상으로 판단합니다. 그리고 이후 처리 블록에는 0이 입력되는 것처럼 처리합니다. 벗어나는 값에는 5%의 허용 범위를 둡니다. 즉, 1에서 1.05까지는 1로 간주합니다. 그리고 -1에서 -1.05까지는 1로 간주합니다. 하지만 -1.05와 1.05 범위를 벗어나면 0으로 간주합니다(그림 9-7 참조).
Min/Max 안전 검사는 포텐셔미터의 결선이 끊어진 경우를 감지하는데 유용하게 사용할 수 있습니다. 이를 위해 포텐셔미터 양단에 직렬로 두 개의 저항을 삽입하여, 출력 범위를 0V ~ 5V보다 조금 좁히게 됩니다. 만약 체크 기능이 켜진 상태라면, 포텐셔미터에 연결된 하나 이상의 결선이 절단되는 경우 전압은 실제로는 0V 혹은 5V가 되고 입력 값은 0이 됩니다.

MW048
그림 9‑7 Min/Max 범위 제한

※ Min/Max 안전검사 기능은 아날로그 입력 또는 펄스 입력이 모터의 속도명령이나 전류 명령, 전압 명령으로 매핑된 경우에만 사용 가능합니다.

9.5.3 지수/로그 변환

사용자는 ‘AI Linearity’와 ‘PI Linearity’ 파라미터의 설정을 통해, 아날로그/펄스 입력 값에 선택적으로 지수 혹은 로그 변환을 수행할 수 있습니다. 지수 보정은 조이스틱의 중앙에서는 적게 변하도록 하고 양 끝에서는 크게 변하도록 합니다. 로그 보정은 조이스틱의 중앙에서는 크게 변하도록 하고 양 끝에서는 적게 변하도록 합니다. ‘Linear’를 선택하면 입력 값이 변하지 않고 바로 출력 값이 됩니다. 또한, 약, 중, 강 등 3가지의 지수/로그 선택이 가능합니다.
아래 그림 9-8의 그래프는 지수(실선), 로그(점선) 변환에 의한 입력과 출력의 변화를 보여줍니다.
지수/로그 변환에 선택 가능한 옵션은 다음과 같습니다:

·  linear – Output = Input
·  exp weak – Output = exp(Input, 1.4)
·  exp medium – Output = exp(Input, 2)
·  exp strong – Output = exp(Input, 3)
·  log weak – Output = exp(Input, 1/1.4)
·  log medium – Output = exp(Input, 1/2)
·  log strong – Output = exp(Input, 1/3)

MW049
그림 9‑8 Exponent 함수의 적용

 

9.5.4 센터 안전 검사

사용자가 ‘Center Safety’ 파라미터의 설정을 통해, 센터 안전 검사(Center Safety Check) 기능을 켜면, 아날로그 입력이나 펄스 입력이 0이 될 때까지 명령이 실행되지 않도록 합니다.

이는 조이스틱이나 RC 조종기로 로봇을 조종하는 경우 유용하게 사용됩니다. 스틱이 중앙에 있지 않은 상태에서 제어기가 켜지면 로봇이 갑자기 움직여 위험한 상황을 초래할 수 있습니다. 이러한 상황을 방지하기 위해, 센터 안전 검사 기능은 조이스틱의 스틱이 중심에 올 때까지 모터가 구동하지 않도록 합니다. 중심 위치는 설정된 중심 주변의 데드밴드 영역 내가 됩니다.

모터에 전원이 공급되거나 조이스틱이나 RC 조종기가 연결될 때 속도 명령의 값이 100ms 동안 0에 머무른 후 입력 값을 받아들이기 시작합니다. 그리고 모터의 전원이 차단될 때까지 센터 안전 검사를 다시 수행하지는 않습니다.

※ 센터 안전 검사 기능은 아날로그 입력 또는 펄스 입력이 모터의 속도명령이나 전류 명령, 전압 명령으로 매핑된 경우에만 활성화됩니다.

9.6 입력 값의 매핑, 중재, 믹싱

아날로그/펄스 입력으로부터의 정규화 된 입력 값과 디지털 입력으로부터의 입력 값은 매핑, 중재, 믹싱(Mapping, Arbitration, Mixing) 과정을 거쳐 특정 모터에 구동 명령을 내리거나 피드백 값을 전달하고 액션을 트리거 하기 위해 사용됩니다.
아날로그, 펄스, 디지털 입력 채널의 매핑, 믹싱과 관련된 구성 파라미터는 다음과 같습니다:

·  AI Function, PI Function, DI Function
·  Control Mixing

그리고 다음 아날로그/펄스 입력 값

·  AI Value
·  PI Value

은 매핑, 중재, 믹싱 과정을 거쳐 다음의 변환된 값을 만들어냅니다:

·  AI Converted Value
·  PI Converted Value

MW050
그림 9‑9 아날로그/펄스/디지털 입력 신호의 흐름

매핑(Mapping)은 입력 채널을 모터의 특정 기능으로 연결합니다. 상기 그림에서 파란색 실성으로 매핑이 표시되어 있습니다. 검은색 실선은 데이터의 흐름을 표시합니다. 만일 매핑 과정에서 둘 이상의 입력이 하나의 모터 기능으로 연결되어 있다면, 두 충돌하는 입력 데이터에 대해 중재(Arbitration) 과정이 적용됩니다.

믹싱(Mixing) 기능은 듀얼 채널 제어기에서 유효합니다. 이 기능은 조이스틱 혹은 RC 조종기로 이동로봇을 조종할 때 유용하게 사용됩니다. 조이스틱으로부터 전진속도와 회전속도를 입력 받아 이를 좌우 모터의 속도로 믹싱하여 분배하는 기능입니다.

9.6.1 매핑

제어기의 아날로그나 펄스 입력 채널의 입력 값(‘AI Value’, ‘PI Value’)은 사용자가 ‘AI Function’, ‘PI Function’ 파라미터에 설정한 매핑 경로를 따라 모터제어기의 명령이나 피드백 값으로 전달됩니다. 그리고 디지털 입력 채널의 입력 값 또한 사용자가 ‘DI Function’ 파라미터에 설정한 매핑 경로를 따라 모터제어기의 액션을 트리거 합니다.

매핑의 설정은 아날로그/펄스/디지털 입력 채널을 기준으로 모터제어기의 입력 기능(명령, 피드백, 디지털 입력) 중 하나를 선택하게 됩니다.
아날로그 입력이나 펄스 입력은 모터의 명령이나 피드백 버퍼로 연결되거나 디지털 입력 버퍼로 연결 가능합니다. 하지만 디지털 입력은 모터의 명령이나 피드백 버퍼로는 연결될 수 없고 디지털 입력 버퍼로만 연결 가능합니다.
Motor Control UI 유틸리티를 사용하여 I/O 입출력 채널의 매핑을 쉽게 할 수 있습니다.

9.6.2 중재

둘 이상의 아날로그, 펄스, 디지털 입력이 하나의 모터제어기 입력 버퍼로 매핑된 경우, 입력 신호의 충돌을 유발합니다. 이때, 중재(Arbitration) 과정에서 미리 정해진 규칙에 따라 여러 입력 소스의 값을 적절하게 섞게 됩니다.

제어기는 그림 9-9와 같이 모터와 기능에 따라 중재를 위한 메모리 버퍼를 가지고 있습니다. 이 버퍼에 하나 이상의 값이 입력될 때 다음 규칙에 따라 중재됩니다:

·  명령(command)이나 피드백(feedback) 버퍼의 경우, 입력되는 값의 절대값으로 크기를 비교하여 제일 큰 값을 선택함
·  디지털 입력(digital input) 버퍼의 경우, OR 조건으로 병합

만일 정규화 된 아날로그 입력이나 펄스 입력이 디지털 입력 버퍼로 매핑될 경우, 0보다 크면 1이 되고, 0보다 같거나 작으면 0이 됩니다.
만일 아날로그나 펄스 입력 값으로 0.5, -0.2, 0의 세 값이 하나의 버퍼로 입력되었다면, 이 버퍼의 값은 절대값이 가장 큰 0.5 값을 가지게 됩니다. 이러한 상황은 조이스틱과 RC 조종기를 이동로봇에 연결하여 동시에 조종하는 경우 발생할 수 있습니다. 이때, 조이스틱은 조종에 사용되지 않아 입력이 0이고 RC 조종기로 조종하고 있는 상황이라 입력이 0이 아니라면 로봇은 RC 조종기에 의해 움직이게 됩니다.

9.6.3 신호의 믹싱

제어기의 믹싱 기능을 사용하려면, 듀얼 채널 제어기여야만 합니다. 싱글 채널 제어기에서는 믹싱 기능을 사용할 수 없습니다. 그리고 두 개의 아날로그 혹은 펄스 입력이 동시에 Enable 되어 있어야 하고 두 입력이 동일하게 전압 혹은 속도 명령으로 매핑되어 있어야 합니다.
다음 그림 9-10과 같이 일반적인 이동로봇은 두 개의 모터가 좌우 바퀴에 연결되어 구동됩니다. 이때 조이스틱이나 RC 조종기를 통해 내려지는 로봇의 구동 명령(전진 속도, 회전 속도)을 좌우 바퀴의 속도로 믹싱하여 분배해야 합니다.

MW051
그림 9‑10 신호의 믹싱에 의한 이동 로봇의 좌우 바퀴 제어

두 채널의 입력을 전진속도(V)와 회전속도(W)로 보고 이동로봇의 좌우 바퀴의 속도(Vl, Vr)로 믹싱할 때, 사용자는 ‘Control Mixing’ 파라미터 설정을 통해 다음과 같이 4가지 믹싱 모드를 선택하여 사용할 수 있습니다:

·  Separate
·  Mixing Mode 1
·  Mixing Mode 2
·  Mixing Mode 3
·  Mixing Mode 4

Separate:
믹싱 기능을 사용하지 않습니다.

Mixing Mode 1:
최대값을 넘어가는 믹싱 결과에 대해 단지 최소 최대값 범위 내로 제한합니다.

Cap 2014-02-25 09-49-17-171
Cap 2014-02-25 09-49-22-296

여기서 Limit (x) 함수는 다음과 같이 정의됩니다:

Cap 2014-02-25 09-55-40-453

Mixing Mode 2:

최대값을 넘어가는 믹싱 결과에 대해 최대값을 넘어간 비율대로 줄여줍니다.

Cap 2014-02-25 09-55-49-500
Cap 2014-02-25 09-55-55-281

여기서 r은 다음과 같이 결정합니다:

Cap 2014-02-25 09-56-23-265

Mixing Mode 3:
최대값을 넘어가는 믹싱 결과에 대해 전진속도를 우선 적용합니다.

Cap 2014-02-25 09-56-33-125
Cap 2014-02-25 09-56-40-531
Cap 2014-02-25 09-56-46-703

Mixing Mode 4:
최대값을 넘어가는 믹싱 결과에 대해 각속도를 우선 적용합니다.

Cap 2014-02-25 09-56-55-187
Cap 2014-02-25 09-57-01-234
Cap 2014-02-25 09-57-07-078

※ 아날로그/펄스 입력 신호의 믹싱은 속도 명령과 전압 명령에만 사용 가능합니다.

MoonWalker Series Motor Controllers User’s Manual 08. 모터제어기 인터페이스

MW001

MW001

MoonWalker Series

Motor Controllers

User’s Manual

MW-MDC24D100S / MW-MDC24D100D

MW-MDC24D200S / MW-MDC24D200D

MW-MDC24D500S / MW-MDC24D500D

 ※ 사용자 매뉴얼에 포함된 정보는 정확하고 신뢰성이 있는 내용입니다. 그러나 출판 당시 발견되지 않은 오류가 있을 수 있으니 사용자는 자신의 제품 검증을 수행하시기 바라며, 전적으로 사용자 매뉴얼에 포함된 정보에 의존하지 마시기 바랍니다.

 

08. 모터제어기 인터페이스

이번 장에서는 모터제어기에 전달되는 명령과 피드백 신호의 처리를 다룹니다. 다음 그림 8-1은 모터제어기의 입출력과 관련된 내부와 외부 인터페이스 구조를 보여주고 있습니다.

MW041
그림 8‑1 모터제어기와 외부 I/O의 연결

 

8.1 모터 구동 명령

모터제어기는 다음 소스 중 하나에서 모터의 구동 명령을 받아들입니다:

·  통신 포트(RS-232, USB, CAN)
·  스크립트
·  펄스 입력 채널(조이스틱, RC수신기)
·  아날로그 입력 채널(조이스틱)

모터제어기는 상기 모든 명령 입력 소스를 통해 동시에 하나 이상의 모터 구동 명령을 받아들일 수 있습니다. 여러 명령이 동시에 입력되면, 제어기는 명령이 들어온 순서대로 실행하게 됩니다. 이때 서로 다른 소스들로부터 들어오는 명령 간에 충돌하지 않도록 주의해야 합니다.

8.1.1 통신으로 명령 전달

통신(USB 또는 RS-232, CAN) 포트를 통해 명령이 동시에 내려지기도 합니다. 이때는 도착한 순서대로 큐(queue)에 명령이 들어갑니다. 그리고 매 1ms마다 큐를 검사하여 큐에 명령이 있다면 도착한 순서대로 명령을 실행합니다.
명령을 실행하는 것은 모터제어기의 명령 버퍼(Command buffer)에 명령의 인수를 쓰는 것과 같다고 볼 수 있습니다. 명령 버퍼에는 위치와 속도, 전류, 전압 명령을 받아들일 수 있는 4개의 버퍼 메모리가 있습니다. 만일 사용자가 통신 포트로 2번 채널의 모터를 500rpm으로 구동하라는 명령을 내렸다면, 속도 명령 버퍼에 500이라는 값을 쓰고 모터제어기를 속도모드로 바꿔 주게 됩니다.

8.1.2 스크립트에 의한 명령 전달

명령은 스크립트에 의해 생성되기도 하는데, 스크립트에 의해 생성된 명령도 통신 포트로 수신되는 명령과 같은 방법으로 처리됩니다. 스크립트에 의해 보내진 명령은 큐에 들어가고 이후 통신 포트를 통해 수신된 명령과 같게 처리됩니다.
만일 통신 포트로부터 들어온 명령과 스크립트가 생성한 두 명령이 같은 채널의 모터와 관련되어 있을 때는 충돌이 발생할 수 있습니다. 이러한 상황이 발생하지 않도록 주의가 필요합니다. 예를 들자면, 스크립트 명령이 모터를 특정 위치로 이동할 것을 명령하고 반면 통신 포트의 명령은 다른 위치로 이동할 것을 명령하는 것입니다.
만일 두 명령 소스가 각각 다른 채널의 모터를 향하고 있을 때는 문제가 되지 않습니다. 예로, 사용자가 USB 포트로 1번 채널의 모터에 위치 명령을 내리는 상황에서 스크립트가 2번 채널의 모터에 속도 명령을 내리는 상황입니다. 이러한 상황에서는 각각의 모터에서 명령이 올바르게 수행될 것입니다.

8.1.3 아날로그/펄스 입력 채널로부터 명령 전달

아날로그나 펄스 입력 채널 또한 명령을 수신하는 용도로 사용될 수 있습니다. 예를 들자면, 아날로그 입력 포트에 조이스틱을 연결하여 로봇을 조종하는 경우입니다. 이때도 아날로그 입력 채널로부터 입력되는 명령과 통신 포트에서 수신되는 명령 간에 충돌하지 않도록 주의해야 합니다. 만일 조이스틱으로 로봇을 조종하고 있을 때는 USB나 RS-232, CAN으로 연결된 마스터 PC에서 명령을 내리지 않도록 조치하여야 합니다.
아날로그나 펄스 입력 채널로부터의 명령은 큐를 통해 입력되는 명령과 차이가 있습니다. 큐를 통하는 명령과 달리, 이 명령은 연속적으로 입력되는 명령이라 볼 수 있습니다(실제로 아날로그나 펄스 입력도 주기적으로 샘플링 되는 이산 신호지만, 여기서는 다른 명령과 비교하기 위해서 연속 신호로 봄).
연속적인 명령이 스케일 변환(Scaling)을 거쳐 명령 버퍼에 지속적으로 입력되면 큐를 통해 입력되는 명령은 처리될 수 없게 됩니다. 그래서 연속적인 명령은 값이 변할 때만 명령 버퍼에 입력되도록 이산 명령으로 바뀌게 됩니다. 이산 형태로 바뀐 명령이 명령 버퍼에 입력되면 이후 처리 과정은 통신 포트나 스크립트에 의한 명령과 같아집니다.

8.2 센서 피드백

제어기에 연결된 위치 혹은 속도 센서는 모터의 실제 위치나 속도를 측정하고 이를 원하는 위치나 속도와 비교합니다. 위치와 속도가 부하의 변화로 인해 바뀌는 경우, 모터제어기의 위치나 속도 제어기는 자동으로 모터에 공급되는 전력 출력을 보상합니다.
모터제어기는 다음 소스 중 하나에서 피드백을 받아들이게 됩니다:

·  엔코더 카운터
·  홀센서 카운터
·  펄스 입력 채널(PWM출력 위치센서, PWM출력 속도센서)
·  아날로그 입력 채널(포텐셔미터, 타코미터)

제어기는 내부적으로 전류를 측정하여 피드백으로 사용합니다. 그림 8-1에서는 전류 피드백에 관한 구성은 생략되어 있습니다.

8.2.1 엔코더 피드백

증분 엔코더는 모터의 위치와 속도를 측정하는데 사용될 수 있습니다. “광학식 증분 엔코더 광학식 증분 엔코더”를 참고하십시오.

8.2.2 홀센서 피드백

BLDC모터의 홀센서는 모터의 위치와 속도를 측정하는데 사용될 수 있습니다.

8.2.3 외부 속도, 위치 센서 피드백

아날로그 입력이나 펄스 입력 채널에 포텐셔미터나 타코미터를 연결하여 모터의 위치나 속도를 감지하는데 사용할 수 있습니다. 이 경우, 피드백 값은 명령의 전달과 같은 과정을 거쳐 모터제어기의 피드백 버퍼에 입력됩니다.
피드백 버퍼에 입력된 값은 -1과 1 사이의 정규화된 값으로 모터제어기의 명령 및 다른 운용 파라미터들과 단위의 일치가 필요합니다. 피드백 버퍼의 값이 스케일 변환(Scaling) 과정을 거쳐 모터제어기의 피드백 값으로 사용될 수 있습니다.

8.2.4 피드백 선택 스위치

여러 소스로부터의 피드백 값은 서로 믹싱 되지 않고 스위치에 의해 하나의 소스만 선택되어 폐루프 위치/속도/전류 제어기의 피드백 값으로 사용됩니다.
선택된 소스가 엔코더나 포텐셔미터와 같이 모터의 위치를 측정하는 센서라면, 모터의 속도는 위치를 차분하여 계산됩니다. 만일 타코미터와 같이 속도를 측정하는 센서라면, 모터의 위치는 속도를 증분하여 계산됩니다.
보통 포텐셔미터와 타코미터는 해상도가 높지 않고 측정값에 노이즈를 포함하고 있습니다. 오차가 조금이라도 있는 속도를 계속해서 위치에 증분하면 결과적으로 오차가 누적되어 모터의 실제 위치를 잃어버리게 됩니다. 또한, 작은 오차를 가지는 위치를 차분하여 속도를 계산할 때도 오차가 증폭되어 제대로 된 속도를 계산하지 못하게 됩니다.

※ 제어기는 다양한 종류의 센서를 피드백 센서로 사용할 수 있도록 하고 있습니다. 하지만 엔코더를 제외한 다른 센서(홀 센서, 포텐셔미터, 타코미터)를 모터의 위치와 속도 피드백 센서로 사용하는 것은 여러 가지 문제를 유발할 수 있기 때문에 권장하지 않습니다.

MoonWalker Series Motor Controllers User’s Manual 07. 모터제어기

MW001

MW001

MoonWalker Series

Motor Controllers

User’s Manual

MW-MDC24D100S / MW-MDC24D100D

MW-MDC24D200S / MW-MDC24D200D

MW-MDC24D500S / MW-MDC24D500D

 ※ 사용자 매뉴얼에 포함된 정보는 정확하고 신뢰성이 있는 내용입니다. 그러나 출판 당시 발견되지 않은 오류가 있을 수 있으니 사용자는 자신의 제품 검증을 수행하시기 바라며, 전적으로 사용자 매뉴얼에 포함된 정보에 의존하지 마시기 바랍니다.

 
7. 모터제어기

이번 장에서는 설명하는 모터제어기는 제어기의 마이크로컨트롤러 상에서 실행되는 소프트웨어 알고리즘으로 하드웨어를 배제한 부분입니다. 모터제어기의 구성은 다음 그림 7‑1과 같이 폐루프 위치, 속도, 전류 제어기와 프로파일 생성기(Profile Generator), 각종 오브젝트, 외부와 데이터 교환을 위한 입출력 버퍼로 구성됩니다.

MW035
그림 7‑1 모터제어기의 구조와 입출력 인터페이스

모터제어기의 오브젝트는 모터의 특성(Motor Properties), 제어기 이득(Controller Gains), 센서 측정(Sensor Measured)값 등 여러 오브젝트로 구성됩니다. 자세한 내용은 “11 모터제어기 오브젝트”을 참조하기 바랍니다.

모터제어기의 명령은 USB, RS-232, CAN, 스크립트를 통해 직접 명령 버퍼(Command buffers)에 들어오기도 하고 Joystick이나 RC radio에서 입력된 신호가 스케일 변환(Scaling) 과정을 거쳐 명령 버퍼에 들어오기도 합니다.
모터제어기의 피드백은 두 가지 경로를 사용하는데, 첫 번째 경로는 엔코더, 홀센서, 전류센서에서 측정한 값을 저장하는 오브젝트(Position, Velocity, Current)를 거치는 경로입니다. 두 번째 경로는 아날로그/펄스 입력 포트에 연결된 센서로부터 측정한 값을 저장하는 피드백 버퍼(Feedback buffers)를 거치는 경로입니다. 모터제어기는 사용자가 선택한 피드백 센서의 종류에 따라 어느 피드백을 사용할 지 결정하게 됩니다.

모터제어기는 모터가 Power ON 상태에서만 동작합니다. 모터가 Power OFF 상태일 때는 먼저 모터를 Power ON 상태로 변경해야 합니다. . “11.2.1 command – Command”를 참조하기 바랍니다.

 

7.1 모터제어기의 입출력 기능

소프트웨어 알고리즘으로 구현된 모터제어기가 제어기의 통신포트와 I/O 포트를 통해 센서, 액츄에이터, 스위치, 부저, LED 등과 데이터를 주고받기 위해 입출력 버퍼를 거치게 됩니다.
입출력 버퍼는 모터제어기가 가지고 있는 가상의 I/O입니다. 입출력 버퍼는 명령 버퍼(Command buffers)와 피드백 버퍼(Feedback buffers), 디지털 입력 버퍼(Digital Input buffers), 디지털 출력 버퍼(Digital Output buffers)로 구성됩니다.

7.1.1 명령 입력 기능

구동 명령은 명령 버퍼(Command buffers)를 통해 모터제어기에 전달됩니다. 명령 버퍼에는 시리얼 통신(USB, RS-232, CAN)이나 외부 아날로그/펄스 입력 포트, 스크립트에 의해 내려지는 위치, 속도, 전류, 전압 명령을 저장합니다. 명령의 종류는 다음 표를 참고하십시오.

표 7‑1 모터제어기의 명령 버퍼의 기능

Buf. #

Function(Command)

Description

1

Voltage Command

모터제어기에 전압 명령을 내림
모터제어기는 전압출력 모드가 됨
2

Current Command

모터제어기에 전류 명령을 내림
모터제어기는 전류제어 모드가 됨
3

Velocity Command

모터제어기에 속도 명령을 내림
모터제어기는 속도제어 모드가 됨
4

Position Command

모터제어기에 위치 명령을 내림
모터제어기는 위치제어 모드가 됨

상기 표에서와 같이, 4종류의 명령이 있지만 둘 이상의 명령이 동시에 수행될 수는 없습니다. 모터제어기는 한 순간에 오직 한 가지 명령만 수행 가능합니다. 명령의 수행 도중 다른 종류의 명령이 들어오면, 모터제어기는 마지막으로 내려진 명령에 따라 동작모드를 결정합니다.

만일 시리얼 포트로 “voltage_command = 12″와 같은 명령이 내려졌다면, 명령 버퍼 1번에 12가 쓰여지고 제어기의 동작모드는 전압출력 모드가 됩니다. 그리고 다른 명령이 내려지기 전까지 모터에 12V 전압을 지속적으로 출력합니다.
다른 예로, “velocity_command = 500″과 같은 명령이 내려졌다면, 명령 버퍼 3번에 500이 쓰여지고 제어기의 동작모드는 속도제어 모드가 됩니다. 그리고 속도제어기와 전류제어기가 동작하여 모터의 속도가 500RPM이 되도록 제어합니다.

7.1.2 피드백 입력 기능

센서 측정 값은 피드백 버퍼(Feedback buffers)를 통해 폐루프 위치 혹은 속도 제어기에 전달됩니다. 피드백 버퍼는 외부 아날로그 입력이나 펄스 입력 포트에 연결된 포텐셔미터/타코미터로부터 측정한 위치/속도 값을 저장합니다. 피드백의 종류와 기능은 다음 표를 참고하십시오.

표 7‑2 모터제어기의 피드백 버퍼의 기능

Buf. # Function(Feedback) Description
1 Position Feedback 위치 센서의 피드백 값
2 Velocity Feedback 속도 센서의 피드백 값

 

‘Buf. 1 – Position Feedback’은 포텐셔미터와 같은 모터의 회전각을 측정하는 센서로부터의 정규화된 위치 입력 값을 저장합니다.
‘Buf. 2 – Velocity Feedback’은 타코미터와 같은 모터의 회전속도를 측정하는 센서로부터의 정규화된 속도 입력 값을 저장합니다.

피드백 기능을 사용하기 위해서는 ‘Feedback Sensor’로 해당 피드백 센서가 선택되어 있어야 합니다. “11.9.1 feedback_sensor – Feedback Sensor”를 참조하기 바랍니다.

7.1.3 디지털 입력 기능

외부 디지털 입력이나 아날로그 입력, 펄스 입력 포트에 연결된 스위치나 센서는 디지털 입력 버퍼(Digital Input buffers)를 통해 모터제어기의 기능을 실행합니다. 디지털 입력 버퍼는 모터제어기의 특정 동작(Action)과 연결되어, 입력 버퍼에 특정 값을 씀으로 연결된 동작을 트리거 할 수 있습니다. 동작의 종류와 기능은 다음 표를 참고하십시오.

표 7‑3 모터제어기의 디지털 입력 버퍼의 동작

Buf. #

Function(Action)

Description

1 Emergency Stop 모터에 공급되는 전원을 차단함,
입력이 1인 동안 모터 Power ON 불가능
2 Quick Stop 모터를 빠르게 정지함,
입력이 1인 동안 모터의 구동은 불가능
3 Slowdown Stop 모터를 감속하여 정지함,
입력이 1인 동안 모터의 구동은 불가능
4 Run Scrip 스크립트의 실행과 중단
5 Forward Limit 정방향 리미트 센서가 감지됨,
입력이 1인 동안 정방향 구동 명령은 수행 불가능
6 Reverse Limit 역방향 리미트 센서가 감지됨,
입력이 1인 동안 역방향 구동 명령은 수행 불가능
7 Invert Direction 입력이 1인 동안 모터의 회전 방향을 반대로 바꿈
8 Load Home Counter 모터의 홈 위치 센서가 감지됨,
home_position의 값을 현재 위치(position)로 로딩

액션들은 보통 입력이 0에서 1로 트리거 될 때 해당 동작을 수행하고 1이 유지되는 동안 활성화 상태를 유지합니다. 입력이 0이 되면 비활성화 됩니다.

‘Buf. 1 – Emergency Stop’은 제어기가 가진 다른 동작들에 비해 우선 순위가 가장 높으며(“7.1.5 입력 기능의 우선순위” 참조) 어떠한 상황에서도 우선적으로 실행됩니다. 이 동작이 트리거 되면 모터를 Power OFF 한 후, 입력이 1인 동안 모터 구동에 관련된 모든 명령과 동작의 수행을 차단합니다. 0이 될 때 모터는 자동으로 Power ON 되지 않습니다.

‘Buf. 2 – Quick Stop’이 트리거 되면 모터를 가능한 빠르게 정지합니다. 그리고 입력이 1인 동안 위치, 속도, 전류, 전압 명령은 차단됩니다.

‘Buf. 3 - Slowdown Stop’이 트리거 되면 모터를 감속하여 정지합니다. 그리고 입력이 1인 동안 위치, 속도, 전류, 전압 명령은 차단됩니다.

‘Buf. 4 - Run Script’는 스크립트의 실행과 중단을 결정합니다. 입력이 0에서 1로 바뀔 때 스크립트의 실행을 시작하고 1인 동안 스크립트는 계속 실행됩니다. 이때 스크립트의 실행이 종료되더라도 스크립트를 다시 시작하지는 않습니다. 입력이 1에서 0으로 바뀔 때 스크립트가 실행 중이라면 실행을 중단합니다.

‘Buf. 5/6 - Forward/Reverse Limit’은 모터의 구동 범위 양단에 설치된 리미트 센서의 입력을 모터제어기에 알려줍니다. 입력이 트리거 되면 ‘Buf. 2 – Quick Stop’이 실행된 것과 같이 동작합니다. 그리고 입력이 1인 동안 리미트 센서를 벗어나는 방향으로의 위치, 속도, 전류, 전압 명령을 차단합니다.

‘Buf. 7 - Invert Direction’은 모터의 회전 방향을 반대로 바꿉니다. 이는 모터에 내려지는 명령의 부호를 바꿈으로 실행됩니다. 즉, 입력이 1인 동안 모터에 내려지는 명령의 부호는 반대가 됩니다.

‘Buf. 8 - Load Home Counter’는 홈 센서가 감지되었음을 모터제어기에 알려줍니다. 입력이 트리거 되면 모터의 위치에 홈 위치를 로드 합니다.

정지와 관련된 액션들(‘Buf. 2 – Quick Stop’, ‘Buf. 3 – Slowdown Stop’, ‘Buf. 5 – Forward Limit’, ‘Buf. 6 – Reverse Limit’)은 AND 조건으로 적용됩니다. 예를 들자면, ‘Buf. 5 – Forward Limit’과 ‘Buf. 6 – Reverse Limit’ 액션이 동시에 ON 되면 모터는 ‘Buf. 2 – Quick Stop’ 액션과 같이 어떠한 방향으로도 움직일 수 없게 됩니다.

7.1.4 디지털 출력 기능

모터제어기의 상태(Status)는 디지털 출력 버퍼(Digital Output buffers)를 통해 외부 디지털 출력 포트로 전달됩니다. 외부 디지털 출력 포트에는 Buzzer, LED, 냉각 팬 등이 연결되어 모터제어기의 상태를 물리적으로 표현할 수 있습니다. 상태의 종류와 기능은 다음 표를 참고하십시오.

표 7‑4 모터제어기의 디지털 출력 버퍼의 상태

Buf. # Function(Status) Description
1 Motor Power ON 모터에 전원이 공급되는 상황
2 Motor is Reversed 모터가 역방향으로 회전하는 상황
3 High Voltage 모터제어기에 과전압이 걸린 상황
4 High Temperature MOSFET와 방열판이 과열된 상황

디지털 출력 버퍼의 값은 0이나 1의 상태를 가집니다. 보통 1이면 제어기 외부에 연결된 장치를 enable 시키고 0이변 disable 시키도록 동작합니다.

‘Buf. 1 - Motor Power ON’ 기능은 모터에 전원이 공급되는 상황을 표시합니다. 이 기능은 모터의 브레이크를 해제하거나 모터의 Power ON/OFF 상황을 표시하는 램프를 켜고 끄는데 사용될 수 있습니다.

‘Buf. 2 - Motor is Reversed’ 기능은 모터가 역방향으로 회전하는 상황을 표시합니다. 이 기능은 차량에서 후진 경고 표시등이나 알람을 켜고 끄는데 사용될 수 있습니다.

‘Buf. 3 - High Voltage’ 기능은 모터의 역기전력으로 인해 전원의 전압이 높아진 상황을 표시합니다. 이 기능은 역기전력을 열로 소모하기 위한 제동저항(Brake Resistor)을 켜고 끄는데 사용될 수 있습니다.

‘Buf. 4 - High Temperature’ 기능은 제어기 방열판의 온도가 높아진 상황을 표시합니다. 이 기능은 방열판을 냉각하기 위한 냉각 팬을 켜고 끄는데 사용될 수 있습니다.

7.1.5 입력 기능의 우선순위

모터제어기에는 여러 명령이나 액션들이 동시에 내려질 수 있습니다. 이때 명령이나 액션이 적용되는 우선 순위는 표 7‑5와 같습니다. 여기서 숫자가 적을수록 우선 순위가 높습니다. X로 표시된 것은 우선순위가 적용되지 않는 입력 입니다.
‘Emergency stop’ 액션이 우선 순위가 가장 높으며, 두 번째로는 모터의 정지와 관련된 액션들입니다. 위치, 속도, 전류, 전압 명령이 우선 순위가 가장 낮습니다. 즉, 긴급 정지 기능은 어떠한 경우에도 동작하며, 모터 속도 명령이 내려지는 중이라도 정지와 관련된 액션들로 언제든 모터를 정지할 수 있습니다.

표 7‑5 명령 및 액션이 적용되는 우선 순위

Priority Function
1 Emergency stop
2 Quick stop,
Slowdown Stop,
Forward Limit,
Reverse Limit
3 Voltage Command,
Current Command,
Velocity Command,
Position Command
X Run Scrip,
Invert Direction,
Load Home Counter,
Position Feedback,
Velocity Feedback

 

7.2 명령과 피드백의 스케일 변환

스케일 변환(Scaling)은 조이스틱이나 RC수신기를 아날로그/펄스 입력 포트에 연결하여 모터제어기를 구동하거나 포텐셔미터나 타코미터를 아날로그/펄스 입력 포트에 연결하여 모터의 위치와 속도를 모터제어기에 피드백 할 때 필요합니다.
외부 아날로그 입력이나 펄스 입력 포트를 통해 캡쳐 되는 데이터는 변환 과정을 거쳐 -1과 1사이의 정규화 된 값입니다. 이 값을 모터제어기의 명령이나 피드백으로 사용하기 위해서는 모터제어기 내부에서 사용하는 변수(위치, 속도, 전류, 전압) 단위와 일치시켜야 합니다(표 7‑6 참조).

표 7‑6 모터제어기의 위치, 속도, 전류, 전압 단위

Object Class Unit
Position pulse
Velocity RPM
Current A
Voltage V

스케일 변환에 사용되는 모터 속성과 위치센서 속성은 다음과 같습니다:

max_position – Max Position
min_position – Min Position
max_velocity – Max Velocity
max_current – Max Current
max_voltage – Max Voltage
encoder_ppr – Encoder PPR

7.2.1 위치 명령 스케일 변환

외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 위치 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 위치 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 위치 명령으로 사용하기 위해 다음과 같이 변환되어 위치 명령 버퍼에 저장됩니다.

Position Command =
0.5 x ((Max Position – Min Position) x Position Input + Max Position + Min Position)

여기서 ‘Position Input’은 위치 입력 값이고 ‘Position Command’는 위치 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [pulse]입니다.

7.2.2 속도 명령 스케일 변환

외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 속도 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 속도 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 속도 명령으로 사용하기 위해 다음과 같이 변환되어 속도 명령 버퍼에 저장됩니다.

Velocity Command = Max Velocity x Velocity Input

여기서 ‘Velocity Input’은 속도 입력 값이고 ‘Velocity Command’는 속도 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [RPM]입니다.

7.2.3 전류 명령 스케일 변환

외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 전류 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 전류 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 전류 명령으로 사용하기 위해 다음과 같이 변환되어 전류 명령 버퍼에 저장됩니다.

Current Command = Max Current x Current Input

여기서 ‘Current Input’은 전류 입력 값이고 ‘Current Command’는 전류 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [A]입니다.

7.2.4 전압 명령 스케일 변환

외부 아날로그 입력이나 펄스 입력 포트에 연결된 조이스틱이나 RC수신기가 모터제어기의 전압 명령 버퍼에 연결된 경우, 모터제어기에 전달되는 전압 입력 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 전압 명령으로 사용하기 위해 다음과 같이 변환되어 전압 명령 버퍼에 저장됩니다.

Voltage Command = Max Voltage x Voltage Input

여기서 ‘Voltage Input’은 전압 입력 값이고 ‘Voltage Command’는 전압 명령 버퍼에 저장되는 값입니다. 변환된 값의 단위는 [V]입니다.

7.2.5 위치 피드백 스케일 변환

외부 아날로그 입력이나 펄스 입력 포트에 연결된 포텐셔미터가 모터제어기의 위치 피드백 버퍼에 연결된 경우, 모터제어기의 위치 피드백 버퍼에 저장되는 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 위치 피드백으로 사용하기 위해 다음과 같이 변환됩니다.

Position =
0.5 x ((Max Position – Min Position) x Position Feedback + Max Position + Min Position)

여기서 ‘Position Feedback’는 위치 피드백 버퍼의 값이고 ‘Position’는 변환된 위치 값입니다. 변환된 값의 단위는 [pulse]입니다.
위치 피드백 값으로부터 모터의 회전 속도는 다음과 같이 계산됩니다.

Velocity = 60 x ΔPosition / (Encoder PPR x Δt)

여기서 ‘ΔPosition’는 현재 시각에서의 위치 값과 Δt 이전 시각에서의 위치 값의 차입니다. Δt는 위치를 샘플링 하는 주기로 0.001[sec] 입니다. 계산된 회전 속도의 단위는 [RPM] 입니다.

7.2.6 속도 피드백 스케일 변환

외부 아날로그 입력이나 펄스 입력 포트에 연결된 타코미터가 모터제어기의 속도 피드백 버퍼에 연결된 경우, 모터제어기의 속도 피드백 버퍼에 저장되는 값은 -1과 1사이의 정규화 된 값입니다. 모터제어기의 속도 피드백으로 사용하기 위해 다음과 같이 변환됩니다.

Velocity = Max Velocity x Velocity Feedback

여기서 ‘Velocity Feedback’는 현재시각에 위치 피드백 버퍼의 값이고 ‘Velocity’는 변환된 속도 값입니다. 변환된 값의 단위는 [RPM]입니다.
속도 피드백 값으로부터 모터의 회전 위치는 다음과 같이 계산됩니다.

ΔPosition = (Velocity x Encoder PPR x Δt) / 60
Position ← Position + ΔPosition

여기서 ‘Position’는 현재 시각에서의 위치 값이고 Δt는 위치를 샘플링 하는 주기로 0.001[sec] 입니다. 계산된 회전 속도의 단위는 [RPM] 입니다.

7.3 모터제어기 구조

만일 모터가 Power ON 상태라면, 제어기는 다음 표와 같이 전압출력, 전류제어, 속도제어, 위치제어 모드 중 하나의 모드로 동작합니다.

표 7‑7 제어기의 동작모드

동작모드 명령 제어 방식 전류 제어기 속도 제어기 위치 제어기
전압출력 모드 전압 명령 개루프 제어 X X X
전류제어 모드 전류 명령 폐루프 제어 O X X
속도제어 모드 속도 명령 폐루프 제어 O O X
위치제어 모드 위치 명령 폐루프 제어 O O O

* O-사용, X-사용 안함

모터가 Power OFF 상태에서는 전압출력 모드가 되지만, 모터에 공급되는 전력이 차단되기 때문에 아무런 의미가 없습니다. 모터가 Power ON 된 후에는 전압출력 모드가 되고 출력되는 전압은 0V로 설정됩니다.

동작모드는 모터제어기에 마지막으로 내려진 명령으로 결정됩니다. 모터제어기에 다른 명령이 내려지기 전까지 동작모드는 유지됩니다. 모터가 Power ON 상태라면, 전압/전류/속도/위치 명령에 의해 동작모드는 언제나 바뀔 수 있습니다. 하지만 모터가 구동중인 상황에서는 동작모드를 바꾸지 않는 것이 좋습니다. 제어기 구조가 갑자기 바뀜으로 인해 모터와 제어기에 전기적 기계적 충격을 유발할 수 있습니다.

개루프 제어(Open-loop Control)는 전압 명령을 PWM 듀티비로 변환하여 모터에 직접 인가하는 제어 방법입니다. 이러한 방법에서는 오차가 제어 입력 값에 반영되지 않기 때문에 모터의 출력이 원하는 목표와 달라질 수 있습니다.

폐루프 제어(Closed-loop Control)는 원하는 목표(위치, 속도, 전류 명령) 값과 센서의 피드백 값을 비교하여 오차가 작아지도록 모터의 출력을 제어하는 방법입니다. 이를 위해 위치/속도나 전류를 측정하는 센서가 필요한데, 전류 센서로는 제어기 내부의 션트(Shunt) 저항이 사용되고 위치/속도 센서로는 일반적으로 제어기 외부의 엔코더가 사용됩니다.

7.3.1 전체 제어기 구조

모터제어기의 전체 구성은 다음 그림 7‑2에서 보이는 바와 같이 위치, 속도, 전류 제어를 위한 여러 제어기들이 직렬(Cascade)로 연결된 구조입니다.

MW036
그림 7‑2 내부에 설계된 제어기의 전체 구성도

이 제어기들 중 전류 제어기가 가장 내부 루프에 위치하고 있으며, 10KHz의 주파수로 동작합니다. 전류 제어를 통해 토크, 속도, 위치 등이 제어될 수 있기 때문에 전류 제어 응답이 가장 빠릅니다. 전류 제어기의 바깥에는 속도 제어기가 위치하며, 1KHz의 주파수로 동작합니다. 위치제어기는 루프의 가장 바깥에 위치하며, 100Hz의 주파수로 동작합니다. 위치제어기와 속도 제어기 사이에는 속도 프로파일을 생성하는 프로파일 생성기(Profile Generator)가 위치하고 있습니다.

7.3.2 개루프 전압 출력
전압출력 모드에서, 개루프 제어는 전압 명령에 비례하는 전압을 전력단(Power Stage)을 통해 모터에 공급합니다. 모터에 부하가 일정하다면 모터에 가해지는 전압은 모터의 회전속도와 비례합니다. 하지만 모터의 부하가 변할 때는 모터의 속도가 느려지거나 빨라집니다. 이 모드는 운전자가 모터의 구동 상황을 파악하면서 직접 제어하는 응용에 적합합니다.
제어기에 위치 센서(엔코더, 홀 센서, 포텐셔미터)가 연결되어 있다면, 실제 모터의 전류와 속도, 위치는 연결된 센서를 통해 측정됩니다. 하지만 측정된 값이 개루프 제어에 사용되지는 않습니다.

MW037
그림 7‑3 개루프 전압 프로파일

프로파일 모드는 폐루프 위치제어와 속도제어 모드에서 그리고 개루프 전압출력 모드에서 사용가능 합니다. 만일 개루프 전압출력 모드에서 프로파일 모드가 사용되면, 다음 관계에 의해 사다리꼴 모양의 속도 프로파일이 전압 프로파일로 변환됩니다:

·  속도 프로파일의 ‘Max Velocity’는 전압 프로파일의 ‘Max Voltage’가 됨
·  이때 변환 비율 r은 Max Voltage/Max Velocity로 계산
·  전압 증가율은 r*Acceleration으로 계산
·  전압 감소율은 r*Aeceleration으로 계산

7.3.3 폐루프 전류 제어기

전기 모터에서 토크는 직접적으로 전류에 관련됩니다. 따라서 전류를 제어하는 것은 토크를 제어하는 것과 같습니다.

전류 제어기는 위치제어 모드, 속도제어 모드, 전류제어 모드에서 동작합니다.

그림 7‑4에서 전류 제어기의 블록선도를 보여줍니다. 모터의 속도(Velocity Feedback), 모터에 흐르는 전류(Current Feedback), 속도 제어기 또는 사용자가 내린 전류 명령(Current Command)이 입력으로 인가되며, 동작 주파수는 10KHz입니다. 또한, PI 제어기로 구현되어 있으며 제어기의 출력(Voltage output)은 모터에 공급되는 전압이 됩니다.

MW038
그림 7‑4 제어기 내부에 설계된 전류 제어기

PI제어기의 비례 이득(Proportional gain)은 전류 명령과 모터에 흐르는 전류 간의 오차에 비례하여 전압을 조절합니다. 오차가 크다면 높은 전압이 공급되고 모터에 흐르는 전류가 전류 명령에 다가갈수록 전력은 점차 낮아지게 됩니다. 비례 이득을 높이게 되면, 측정 오차로부터 더 높은 전압을 공급하도록 함으로 모터가 명령 및 모터 부하의 변화에 더 신속하게 대응합니다. 하지만 너무 높으면 오버슈트와 진동이 발생합니다.

PI제어기의 적분 이득(Integral gain)은 시간에 따른 오차의 합에 비례하여 전압을 조절합니다. 오차가 0으로 접근할수록 제어기가 원하는 전류에 정확히 도착하고 유지하는데 도움을 줍니다.

전류 제어기에는 안티와인드업(Anti-Windup) 제어기가 설계되어 있습니다. 와인드업(Windup) 현상은 적분 제어기에 누적된 값이 제어기의 제한 폭을 넘어서 제어입력이 쌓이게 되는 경우를 말합니다. 와인드업 현상이 발생하면 제어기의 입력 부호가 바뀌어도 누적된 적분 제어기로 인해 실제 모터의 방향이 바뀌지 않는 현상이 생기게 됩니다. 그래서 적분기에 누적된 수치가 제어기 출력의 제한 값에 따라 포화되지 않도록 제한하는 기능이 필요하며 이것을 안티와인드업 제어기라고 합니다. 제어기의 안티와인드업 이득(Anti-windup gain)은 비례 이득의 역수를 사용하도록 설정되어 있으며 사용자가 설정할 수는 없습니다.

전류 제어기에서는 전향 보상 이득(Feed forward gain)을 이용해서 역기전력에 의한 모터 토크의 감쇠를 보상하고 있습니다. 모터는 회전속도에 비례하는 역기전력(Back EMF)을 생성합니다. 역기전력은 모터의 토크를 감소하게 만듭니다. 그래서 모터가 고속으로 회전하고 있을 때는 역기전력을 보상해 줌으로 모터 토크의 감쇠를 보상할 수 있게 됩니다.

표 7‑8에는 전류 제어기의 오브젝트들이 정리되어 있습니다. 여기서 구성 파라미터(Configuration Parameter)는 사용자가 설정할 수 있는 값들입니다.

표 7‑8 전류 제어기에서 사용되는 오브젝트들 정리

Name Unit Object Type Object Name
Velocity Feedback rad/sec Status velocity
Current Feedback A Status current
Current Command A Command current_command
Voltage output V Variable voltage
Proportional gain(KP) - Configuration Parameter cc_kp
Integral gain(Ki) - Configuration Parameter cc_ki
Anti-windup gain(Ka) - nternal Value, Cap 2014-02-24 17-41-23-484 -
Feed forward gain(Kff) V/(rad/sec) Configuration Parameter cc_kff
max velocity V Configuration Parameter max_velocity

Motor Control UI 유틸리티에서 제어기의 속도관련 구성 파라미터를 설정할 때는 [RPM] 단위를 사용하지만 모터제어기 내부에는 [rad/sec] 단위로 변환되어 계산에 사용됩니다.

※ 구성 파라미터들 중 속도와 관련된 값들이 모터제어기 내부에서 사용될 때는 속도의 단위가 [RPM]에서 [rad/sec]로 변환되어 계산에 사용됩니다.

※주의※
전류제어기의 전향보상 이득을 설정하려면 모터의 역기전력 상수를 알아야 합니다. 시중에서 쉽게 구할 수 있는 저렴한 모터들은 역기전력 상수가 표기되지 않은 제품들이 많습니다. 모터의 역기전력 상수를 모를 때는 전향보상 이득을 0으로 설정하기 바랍니다.

또한, 역기전력 상수는 모터마다 다양한 단위로 표기됩니다. 역기전력 상수가 전향보상 이득으로 사용되려면 역기전력 상수의 단위를 [V/(rad/sec)]로 변환해야 합니다. 그리고 제어기 내부에서 사용하는 속도의 단위가 [rad/sec] 임에 주의해야 합니다.

7.3.4 폐루프 속도 제어기

속도 제어기는 위치제어 모드, 속도제어 모드에서 동작합니다.
그림 7‑5에서 속도 제어기의 블록선도를 보여줍니다. 모터의 속도(Velocity Feedback)와 위치 제어기 또는 사용자가 내린 속도 명령(Velocity Command)이 입력으로 인가되며, 동작 주파수는 1KHz입니다. 전류 제어기와 같이 속도 제어기도 PI 제어기로 구성되어 있으며 제어기의 출력(Current ref.)은 전류 값이고 전류 제어기의 전류 명령으로 입력됩니다.

MW039
그림 7‑5 제어기 내부에 설계된 속도 제어기

PI제어기의 비례 이득(Proportional gain)은 속도 명령과 모터의 속도 간의 오차에 비례하여 전류(Current ref.)를 조절합니다. 오차가 크다면 높은 전류가 출력되고 모터의 속도가 속도 명령에 다가갈수록 전류는 점차 낮아지게 됩니다.

PI제어기의 적분 이득(Integral gain)은 시간에 따른 오차의 합에 비례하여 전류를 조절합니다. 오차가 0으로 접근할수록 제어기가 속도 명령에 정확히 도착하고 유지하는데 도움을 줍니다.

속도 제어기에도 전류 제어기와 같이 안티와인드업 제어기가 설계되어 있습니다. 제어기의 안티와인드업 이득(Anti-windup gain)은 비례 이득의 역수를 사용하도록 설정되어 있으며 사용자가 설정할 수는 없습니다.

제어기는 내부적으로 속도 명령을 적절한 단위변환을 거쳐 바로 전류 제어기의 전류 명령(Current ref.)으로 인가하는 일종의 스케일 팩터(Scale Factor) 역할을 수행하는 이득을 가지고 있습니다. 위치 센서로 사용하는 엔코더의 해상도가 너무 낮거나 위치 센서로 포텐셔미터가 사용될 경우, 위치 센서로부터 계산된 속도는 양자화되거나 노이즈를 포함하여 부정확합니다. 이러한 상황에서는 속도 제어기의 PI제어기를 바이패스 하는 것이 좋습니다. PI제어기의 비례 이득과 적분 이득을 ’0′으로 두고, 속도 명령이 전류 명령 이 되도록 스케일(단위변환을 포함)만 변경하여 사용하면 됩니다.

표 7‑9에는 속도 제어기의 오브젝트들이 정리되어 있습니다. 여기서 구성 파라미터(Configuration Parameter)는 사용자가 설정할 수 있는 값들입니다.

표 7‑9 속도 제어기에서 사용하는 오브젝트들 정리

Name Unit Object Type Object Name
Velocity Feedback rad/sec Status velocity
Velocity Command rad/sec Command velocity_command
Current ref. A Internal Value -
Proportional gain(Kp) - Configuration Parameter vc_kp
Integral gain(Ki) - Configuration Parameter vc_ki
Anti-windup gain(Ka) - Internal Value,Cap 2014-02-24 17-41-23-484 vc_ka
Scale factor(Ks) A/(rad/sec) Configuration Parameter vc_ks
Max Current [A] Configuration Parameter max_current

Motor Control UI 유틸리티에서 제어기의 속도관련 구성 파라미터를 설정할 때는 [RPM] 단위를 사용합니다. 하지만 제어기 내부에는 [rad/sec] 단위로 변환되어 계산에 사용됩니다.

※ 모터의 속도(Velocity Feedback)와 속도 명령(Velocity Command)이 제어기 내부에서 계산에 사용될 때는 단위가 [RPM]에서 [rad/sec]로 변환됩니다.

7.3.5 폐루프 위치 제어기

위치 제어기는 위치제어 모드에서만 동작합니다.
그림 7‑6에서 위치 제어기의 블록선도를 보여줍니다. 모터의 위치(Position Feedback)와 사용자가 내린 위치 명령(Position Command)이 입력으로 인가며, 동작 주파수는 100Hz 입니다. 위치 제어기는 PID 제어기로 구성되어 있으며, 제어기의 출력(Velocity ref.)은 속도 값이고 프로파일 모드의 설정 여부에 따라 프로파일 생성기(Profile Generator)로 입력되거나 속도 제어기의 속도 명령으로 입력됩니다.

MW040
그림 7‑6 제어기 내부에 설계된 위치 제어기

PID제어기의 비례 이득(Proportional gain)은 위치 명령과 모터의 위치 간의 오차에 비례하여 속도를 조절합니다. 오차가 크다면 높은 속도가 출력되고 모터의 위치가 위치 명령에 다가갈수록 속도는 점차 낮아지게 됩니다.

PID제어기의 적분 이득(Integral gain)은 시간에 따른 오차의 합에 비례하여 속도를 조절합니다. 오차가 0으로 접근할수록 제어기가 원하는 위치에 정확히 도착하고 유지하는데 도움을 줍니다.

PID제어기의 미분 이득(Differential gain)은 오차에 대한 변화를 계산합니다. 이러한 변화는 원하는 위치 또는 측정된 위치 값이 급격하게 변할 때마다 상대적으로 높은 수치가 됩니다. 이 부분의 효과는 원하는 위치 값의 변경으로 인해 모터를 구동하기 시작할 때 추가적인 속도를 더해줍니다. 미분 이득은 크게 오버슈트와 진동을 감소하는 데 도움이 됩니다.

위치 제어기에도 전류나 속도 제어기와 같이 안티와인드업 제어기가 설계되어 있으며, 제어기의 안티와인드업 이득(Anti-windup gain)은 비례 이득의 역수를 사용하도록 설정되어 있으며 사용자가 설정할 수는 없습니다.

표 7‑10에는 위치 제어기의 오브젝트들이 정리되어 있습니다. 여기서 구성 파라미터(Configuration Parameter)는 사용자가 설정할 수 있는 값들입니다.

표 7‑10 위치 제어기에서 사용하는 오브젝트들 정리

Name Unit Object Type Object Name
Position Command pulse Status position_command
Position Feedback pulse Command position
Velocity ref. rad/sec - -
Proportional gain(Kp) - Configuration Parameter pc_kp
Integral gain(Ki) - Configuration Parameter pc_ki
Differential gain(Kd) - Configuration Parameter pc_kd
Anti-windup gain(Ka) - Internal Value,Cap 2014-02-24 17-41-23-484 pc_ka
Max Velocity rad/sec Configuration Parameter max_velocity

 

7.3.6 프로파일 생성기

프로파일 생성기(Profile Generator)는 사용자의 속도 명령이나 위치 제어기의 속도 출력을 받아 급가감속을 하지 않도록 사다리꼴로 속도 프로파일을 만드는 기능을 수행합니다. 그리고 속도 제어기와 같은 1KHz의 동작 주파수를 가집니다. 사용자는 ‘Profile Mode’ 구성 파라미터 설정에 따라 프로파일 생성기를 사용 여부를 선택할 수 있습니다.
프로파일 생성기에 대한 자세한 내용은 “5.1.2 가속도와 감속도”를 참조하기 바랍니다.

 

7.4 모터제어기 이득 조정

제어기의 이득은 모터 전원, 기어 비율, 부하, 관성 등 많은 기계적인 파라미터를 모델링 하기 어렵기 때문에 기본적으로 실험을 반복하면서 수작업으로 동조하게 됩니다.
동조 과정은 먼저 전류 제어기의 PI 이득을 설정하고 다음으로 속도 제어기의 PI 이득을 설정합니다. 마지막으로 위치 제어기의 PID 이득을 설정합니다.
Motor Control UI 유틸리티는 위치/속도/전류 제어기의 Proportional(P), Integral(I), Differential(D) 이득을 설정하기 위한 구성 화면을 제공합니다. 또한, 모터를 구동하고 모니터링할 수 있는 또 다른 화면을 제공하여 이러한 실험적인 과정을 쉽게 할 수 있도록 합니다.

7.4.1 전류 제어기 PI 이득 조정
전류제어기는 직렬로 연결된 제어기 구조에서 모터와 직결된 제어기로 가장 먼저 동조되어야 합니다.
전류제어 모드를 사용하는 대부분의 응용(application)들은 제어기의 응답 특성이 너무 빠를 것을 요구하지 않습니다. 그래서 넓은 범위의 PI 이득 조정이 가능하고 좋은 결과도 얻을 수 있습니다. 전류 제어기에서는 P와 I 이득을 조정합니다. 제어기에 설정된 기본 이득(P=0.1, I=50)을 사용하여 첫 테스트를 수행하고, 필요에 따라 만족스러운 결과에 도달 할 때까지 I와 P 이득 조정을 반복합니다.
만일 제어기에 설정된 기본 이득을 사용하지 않고 제로 상태(P=0, I=0)에서 이득을 조정할 수 있습니다. 이와 같이 이득을 조정하려면 다음 절차를 따르도록 합니다:

1. P와 I 이득을 0으로 설정합니다.
2. I 이득을 50정도의 값에서 시작하여 20%정도의 오버슈트(overshoot)가 발생할 때까지 올립니다. 올릴 때는 50, 100, 200, 400, 800 과 같이 2배씩 증가시킵니다.
3. P 이득을 0.1에서 시작하여 오버슈트가 없어질 때까지 올립니다. 올릴 때는 0.2, 0.5, 1, 2, 5 와 같이 2배씩 증가시킵니다.
상기 조정 과정에서 적분 이득이 가장 중요하고 먼저 조정되어야 합니다. 다음으로 응답 시간 및 제어 안정성을 향상시키도록 비례 이득을 조정합니다.

※ 전류 제어기의 이득을 변경하고 응답성을 테스트할 때는 모터 회전축을 고정한 상태에서 진행하여야 합니다. 모터가 회전하는 상태에서는 모터의 역기전력으로 인해 전류의 흐름을 방해하게 됩니다.

7.4.2 속도 제어기 PI 이득 조정

속도 제어기를 동조하기에 앞서 전류 제어기의 이득이 동조되어 있어야 합니다. 그렇지 않은 경우, 앞 절을 참고하여 전류 제어기의 이득을 먼저 동조하기 바랍니다.

속도 제어기는 PI 제어기가 기본 구조이며 P와 I 이득을 조정합니다. 조정의 최종 목표는 모터가 오버슈트나 진동 없이 빠르게 원하는 속도에 도달하는 것입니다.

모터에 의해 움직이는 부하가 결정되지 않은 경우, PI를 예상되는 최소 부하에 대해 조정한 후 예상되는 최대 부하에서 다시 조정합니다. 그런 다음 두 조건에서 작동하는 값을 찾습니다. 최소 및 최대 부하간의 차이가 큰 경우에는 만족스러운 동조 값을 찾을 수 없는 경우도 있습니다.
속도 제어기를 동조할 때 최종적인 제어 대상이 위치인지(위치제어 모드) 혹은 속도인지(속도제어 모드)에 따라 방법이 조금 다릅니다.
위치제어 모드에서 사용되는 속도제어기를 동조해야 한다면, 속도제어기를 아주 세밀하게 동조할 필요는 없습니다. 속도제어기는 지정된 속도를 오버슈트 없이 빠르게 추종하는 정도로만 설정하고 위치제어기를 세밀하게 동조해야 합니다. 이런 경우 속도제어기에서는 P 이득만 설정하고 I 이득은 사용하지 않도록 합니다. I 이득을 사용하지 않을 경우 시스템의 응답성은 빨라지지만, 정상상태 오차가 발생합니다. 이 오차는 위치제어기를 통해 극복하면 됩니다.

먼저, 위치제어 모드에 사용되는 속도제어기의 동조 방법입니다:

1. I 이득은 0으로 설정합니다.
2. P 이득을 0.01부터 시작하여 오버슈트가 발생하기 전까지 올립니다. 올릴 때는 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2 와 같이 2배씩 증가시킵니다.

상기 과정에서, P 이득이 낮으면 모터의 속도가 속도 명령을 느리게 따라갑니다. P 이득을 올리게 되면 속도 명령에 도달하는 시간도 짧아지고 정상상태 오차도 줄어들게 됩니다. 계속해서 P 이득을 높여가면 오버슈트가 발생합니다. 하지만 정상상태 오차는 여전히 존재하게 됩니다. 정상상태 오차를 없애기 위해 P 이득을 더 올리면 결국 진동이 발생하고 제어기는 불안정해집니다.

※ 위치제어에 사용되는 속도제어기의 이득을 설정할 때는 오버슈트가 없는 상태에서 이득 조정을 중단합니다.

이전 단계에서 속도제어기의 P 이득을 조정하여 정상상태 오차는 있지만 오버슈트가 없는 상태로 이득을 조정해 둔 상태입니다.
다음으로 속도제어 모드에 사용되는 속도제어기의 동조 방법입니다:

3. I 이득을 0.01부터 시작하여 정상상태 오차가 없어질 때까지 올립니다. 올릴 때는 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2 와 같이 2배씩 증가시킵니다.

4. I 이득을 조정하여 정상상태 오차가 없어지지 않는다면 P 이득을 낮추고 과정을 반복해 봅니다.

정상상태 오차를 좀 더 빨리 극복하기 위해 I 이득을 더 높이게 되면 오버슈트가 커지게 되며, 여기서 I 이득을 더 높이게 되면 결국 진동이 발생하게 됩니다. 그러니 오버슈트와 정상상태 오차를 상황에 따라 절충하여 I 이득을 설정해야 합니다.

7.4.3 위치 제어기 PID 이득 조정

위치 제어기를 동조하기에 앞서 전류 제어기의 이득과 속도 제어기의 이득이 동조되어 있어야 합니다. 그렇지 않은 경우, 앞 절을 참고하여 속도 제어기와 전류 제어기의 이득을 먼저 동조하기 바랍니다.
위치 제어기에서는 P 이득을 기본적으로 조정하고 필요에 따라 D와 I 이득을 조정합니다. 조정의 최종 목표는 모터가 오버슈트나 진동 없이 빠르게 원하는 위치에 도달하는 것입니다. 만일 약간의 오버슈트나 정상상태 오차를 허용하는 응용이라면, P 이득을 세밀하게 조정하고 I와 D 이득은 작거나 0으로 설정합니다.

다음은 위치 제어기의 이득 동조 방법입니다:

1. 먼저 I 이득과 D 이득을 0으로 설정합니다.
2. P 이득을 0.01부터 시작하여 오버슈트가 발생하기 전까지 올립니다. 올릴 때는 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5와 같이 2배씩 증가시킵니다.

오버슈트를 없애거나 응답 속도를 개선하려면 다음 과정을 따릅니다:

3. 이전 과정에서 오버슈트 없이 목표 위치에 도달하였다면, 20% 정도의 오버슈트가 나타날 때까지 P 이득을 올립니다.
4. D 이득을 0부터 시작하여 조금씩 증가하면서 오버슈트가 없어지도록 합니다.

상기 과정에서 D 이득을 더 늘이게 되면 목표 위치에 도달하는 시간이 지연됩니다.
위치 제어기에서 일반적으로 I 이득은 잘 사용되지 않습니다. 위치제어에서는 P 이득만으로도 정상상태 오차가 나타나지 않으며, I 이득은 모터제어의 응답 특성을 전반적으로 느리게 하기 때문입니다. 하지만 특별한 이유로 I 이득을 설정해야 한다면, P 이득 조정 → D 이득 조정 → I 이득 조정 순서로 이득을 조정하면 됩니다.

 

7.5 모터제어기의 동작 이상 감지

이 절에서는 모터제어기 동작 중 발생할 수 있는 에러 상황을 감지하고 모터의 전원을 차단하는 모터제어기의 안전 기능에 대해 설명합니다.

7.5.1 스톨 상황 감지

스톨(stall)이란 모터에 전력이 공급되지만, 부하를 움직이기에는 힘이 부족하여 모터가 멈추는 상황을 의미합니다.
스톨 상황 감지는 모든 모드(전압출력, 전류제어, 속도제어, 위치제어 모드)에서 사용됩니다. 이 기능을 사용하기 위해서는 엔코더나 홀 센서, 포텐셔미터와 같은 위치 센서가 제어기에 연결되어야 합니다.
모터제어기는 일정 시간 동안 주어지는 전력에 대해 아무런 회전이 감지되지 않을 경우 모터의 전원을 차단하는 안전 기능을 설정할 수 있습니다. 스톨 상황 감지에서는 다음과 같은 전력과 시간의 조합을 사용할 수 있습니다:

100ms at 10% PWM duty ratio
200ms at 20% PWM duty ratio
400ms at 30% PWM duty ratio
700ms at 40% PWM duty ratio
1s at 50% PWM duty ratio

만일 지정된 시간 동안 지정된 값보다 높은 전력이 모터에 공급되는데도 움직임이 감지되지 않는다면, 폴트를 발생하고 모터를 Power OFF 합니다.

7.5.2 폐루프 속도제어 오차 감지

폐루프 속도제어 오차 감지는 위치제어와 속도제어 모드에서 사용 됩니다.
모터제어기는 기계나 센서 고장으로 인한 큰 속도 오차를 감지하고 문제가 발생한 경우 모터의 전원을 차단하는 안전 기능을 사용할 수 있습니다. 속도 오차란 폐루프 속도 제어기에서 명령 속도(원하는 속도)와 피드백 속도(실제 속도) 간의 오차를 말합니다. 속도제어 오차 감지에는 다음과 같은 시간과 에러의 크기 조합을 사용할 수 있습니다:

100ms and error > 100 RPM
200ms and error > 200 RPM
400ms and error > 500 RPM
700ms and error > 1500 RPM
1s and error > 3000 RPM

만일 지정된 시간 동안 속도 오차가 지정된 값 이상이라면, 폴트를 발생하고 모터를 Power OFF 합니다.

※ 만일 속도 명령이 드문드문 불연속적으로 내려지는 경우에는 Velocity Error Detection 기능을 사용하지 않는 것이 좋습니다. 명령이 내려질 때 큰 속도오차가 발생하여 폴트가 발생하게 됩니다.

7.5.3 폐루프 위치제어 오차 감지

폐루프 위치제어 오차 감지는 위치제어 모드에서 사용 됩니다.
모터제어기는 기계나 센서 고장으로 인한 큰 위치 오차를 감지하고 문제가 발생한 경우 모터의 전원을 차단하는 안전 기능을 사용할 수 있습니다. 위치 오차란 폐루프 위치 제어기에서 명령 위치(원하는 위치)와 피드백 위치(실제 위치) 간의 오차를 말합니다. 위치제어 오차 감지에는 다음과 같은 시간과 에러의 크기 조합을 사용할 수 있습니다:

100ms and error > 100 pulse
200ms and error > 500 pulse
400ms and error > 2000 pulse
700ms and error > 5000 pulse
1s and error > 20000 pulse

만일 지정된 시간 동안 위치 오차가 지정된 값 이상이라면, 폴트를 발생하고 모터를 Power OFF 합니다.

※ 만일 위치 명령이 드문드문 불연속적으로 내려지는 경우에는 Position Error Detection 기능을 사용하지 않는 것이 좋습니다. 명령이 내려질 때 큰 위치오차가 발생하여 폴트가 발생하게 됩니다.

 

MoonWalker Series Motor Controllers User’s Manual 06. 제어기의 구조

MW001

MW001

MoonWalker Series

Motor Controllers

User’s Manual

MW-MDC24D100S / MW-MDC24D100D

MW-MDC24D200S / MW-MDC24D200D

MW-MDC24D500S / MW-MDC24D500D

 ※ 사용자 매뉴얼에 포함된 정보는 정확하고 신뢰성이 있는 내용입니다. 그러나 출판 당시 발견되지 않은 오류가 있을 수 있으니 사용자는 자신의 제품 검증을 수행하시기 바라며, 전적으로 사용자 매뉴얼에 포함된 정보에 의존하지 마시기 바랍니다.

 

06.  제어기의 구조

이 장에서는 제어기의 내부 구조에 대하여 다룹니다. 제어기의 내부 구조를 파악하는 것은 제어기를 올바르게 운용하는데 꼭 필요한 내용이므로, 사용자는 본 장의 내용을 숙지하기 바랍니다.
제어기 하드웨어의 논리적인 구조는 다음 그림 6‑1과 같습니다. 제어기에 공급되는 전원(Power Source)은 전력단(Power Stage)을 통해 모터(Motor)를 구동하는데 사용됩니다. 또한, DC/DC 컨버터(Converter)를 거쳐 마이크로컨트롤러(Microcontroller)에 전원을 공급합니다.

MW098
그림 6‑1 제어기의 내부 구조

제어기의 마이크로컨트롤러에서 실행되는 프로그램은 모터제어기(Motor Controller)와 가상머신(Virtual Machine)으로 구성됩니다. 듀얼 채널 제어기는 모터제어기와 전력단이 각각 2개씩 존재합니다. 그리고 오브젝트들(Objects)을 저장하는 메모리 공간을 가집니다.

제어기에는 PC와 연결하기 위한 통신 포트가 있습니다. 그리고 각종 센서와 액츄에이터를 연결하는 I/O(Digital Outputs, Digital Inputs, Analog Inputs, Pulse Inputs, Encoder Counter)를 가집니다. I/O 포트는 제어기 모델에 따라 지원되거나 지원되지 않기도 합니다. 따라서 제어기 모델의 데이터시트를 참조하여 지원하는 I/O 포트를 확인해야 합니다.
6.1 모터제어기

제어기에서 가장 핵심이 되는 부분은 모터제어 알고리즘을 수행하는 모터제어기입니다. 여기서 모터제어기란 모터의 출력이 원하는 목표 값이 되도록 모터에 공급되는 전력을 적절히 조절하는 소프트웨어 알고리즘을 말합니다. 사용자는 모터제어기에 위치나 속도, 전류 명령을 내리고 모터제어기는 모터가 명령에 따르도록 속도나 전류, 전압을 출력합니다.
모터제어기에 대한 자세한 사항은 “7 모터제어기”를 참고하기 바랍니다.
모터제어기는 모터가 Power ON 상태에서만 동작합니다. 모터가 Power OFF 상태일 때는 먼저 모터를 Power ON 상태로 변경해야 합니다. “11.2.1 command – Command”를 참조하기 바랍니다.

6.2 전력단

전력단(Power Stage)은 DC모터의 구동을 위해 직류 전력을 가변할 수 있는 전력 변환 장치로서, 다음 그림 6‑2과 같이 4개의 고전류 MOSFET로 구성되는 H-bridge 회로입니다. 이 회로는 높은 주파수의 펄스폭 변조(PWM; Pulse Width Modulation) 기술을 사용하여 MOSFET를 빠르게 ON/OFF 스위칭하여 모터에 공급되는 전력 출력을 조절합니다.

MW099
그림 6‑2 DC모터 구동을 위한 전력단 구조

전력단은 Power ON/OFF 신호로 켜고 끌 수 있습니다. Power ON 상태에서는 PWM A와 B 채널로 입력되는 신호로 MOSFET를 스위칭합니다. 이때 모터에 전력이 공급되고 모터는 스위칭 신호에 따라 구동합니다. Power OFF 상태에서는 PWM A와 B 채널로 입력되는 신호는 무시되고 전력단의 모든 MOSFET는 꺼지게 됩니다.

전력단과 관계있는 구성 파라미터는 다음과 같습니다:

·  pwm_switching – PWM Switching
·  pwm_frequency – PWM Frequency

 

6.2.1 PWM 주파수

전력 MOSFET는 기본적으로 18kHz에서 스위칭합니다. 사용자는 ‘PWM Frequency’ 파라미터를 설정하여 18kHz에서 40kHz 사이의 다른 주파수 값으로 변경할 수 있습니다. 주파수를 증가시키면 스위칭 손실로 인한 효율이 감소됩니다. 반대로 주파수를 낮추면 가청 잡음을 발생시키고 낮은 인덕턴스 모터에 비효율적 일 수 있습니다.
제어기는 제품 초기 설정 값(Factory Default Value)으로 PWM 주파수가 18kHz로 설정되어 있습니다. 이 파라미터는 Motor Control UI 유틸리티에 의해 다른 주파수로 변경 가능합니다.

※ PWM 주파수를 변경하는 것은 모터의 동작에 있어 큰 차이를 만들지는 않습니다. 되도록 설정 기본값을 사용하는 것이 좋습니다.

6.2.2 유니폴라와 바이폴라 구동

유니폴라(Unipolar)와 바이폴라(Bipolar) 구동 방식은 H-bridge 형태로 스위칭 소자들을 구성하여 운용하는 대표적인 방법입니다.
제어기는 ‘PWM Switching’ 파라미터 설정을 통해 두 구동 방식 중 하나를 선택적으로 사용할 수 있습니다. 제어기는 제품 초기 설정 값으로 유니폴라 구동 방식으로 설정되어 있습니다. 이 파라미터는 Motor Control UI 유틸리티에 의해 바이폴라 구동으로 변경 가능합니다.
유니폴라 구동에서 모터를 정회전 하고자 할 때는 H-Bridge를 다음과 같이 운용합니다: MOSFET A는 고속으로 ON/OFF 스위칭하여 PWM 듀티비에 따라 모터의 속도를 결정합니다. MOSFET B는 항상 OFF 상태입니다. 역회전하고자 할 때는 A와 B의 역할을 바꾸면 됩니다.

MW100
그림 6‑3 DC모터의 유니폴라 구동

유니폴라 구동에서는 MOSFET A와 B 둘 중 하나에만 PWM 클럭을 가하게 되며, A와 B 모두 OFF 상태일 때 모터는 정지합니다. 만일 B가 OFF 상태고 A에 공급되는 PWM 듀티비가 50%라면 모터는 최고 속도의 50%로 정회전 합니다. 반대로 A는 OFF 상태고 B에 공급되는 PWM 듀티비가 50%라면 모터는 최고 속도의 50%로 역회전 합니다.

바이폴라 구동에서 모터를 정/역회전 하고자 할 때는 H-Bridge를 다음 그림과 같이 운용합니다: MOSFET A는 ON, B는 OFF 상태를 만듭니다. 다음에는 MOSFET B는 ON, A는 OFF 상태로 만듭니다. 즉, B가 A의 역상으로 동작하도록 합니다. 그리고 이 두 상황을 반복합니다.

MW101
그림 6‑4 DC모터의 바이폴라 구동

MOSFET B는 A의 역상으로 동작하며, A에 공급되는 PWM 듀티비가 50%일 때 모터는 정지합니다. 만일 A에 공급되는 PWM 듀티비가 75%가 되면 B에는 25%가 되면 모터는 최고 속도의 50%로 정회전 합니다. 반대로 A에 공급되는 PWM 듀티비가 25%가 되고 B에는 75%가 되면 모터는 최고 속도의 50%로 역회전 합니다.

또한 바이폴라 구동은 저속에서 속도제어 특성을 좋게 하지만 모터의 인덕턴스가 낮은 경우 대기 전류(Idle current)가 높아 전력을 낭비(모터는 돌지 않는데 전류는 계속해서 흐름)하고 모터 발열을 일으킬 수 있습니다. 이런 경우에는 PWM 주파수를 높이거나 PWM 스위칭 방법을 유니폴라로 바꾸거나 모터와 제어기 배선에 직렬로 인덕턴스가 큰 코일을 달아 해결할 수 있습니다.

6.2.3 전류 측정 방식
H-bridge를 통해 모터에 흐르는 전류는 다음과 같이 4가지 경로가 만들어집니다. 빨간색 실선은 스위치 A가 ON, B가 OFF 되었을 때 배터리에서 공급되는 전압에 의해 흐르는 전류의 경로입니다. 주황색 실선은 스위치 A가 OFF, B가 ON 되었을 때 배터리에서 공급되는 전압에 의해 흐르는 전류의 경로입니다. 파란색 실선은 스위치 B가 ON 되었을 때 모터의 역기전력에 의해 흐르는 전류의 경로입니다. 역기전력의 방향이 반대인 경우, A가 ON 되었을 때 흐르게 됩니다. 초록색 실선은 스위치 A가 OFF 되었을 때 모터의 역기전력에 의해 흐르는 전류의 경로입니다. 역기전력의 방향이 반대인 경우, B가 OFF 되었을 때 흐르게 됩니다.

MW102
그림 6‑5 H-bridge 회로에서 전류의 흐름과 전류 측정 포인트

상기 그림과 같이 모터에는 여러 전류 경로가 존재하기 때문에, 그림과 같이 C0 위치에서 측정이 가장 바람직합니다. 하지만 C0에서는 양방향 전류를 측정해야 하기에 전류 측정 회로가 복잡해집니다.

제어기는 C1과 C2 위치에서 각각 흐르는 단방향 전류를 측정합니다. 그러면 모터에 흐르는 전류는 C2 – C1로 계산 가능합니다. 이 경우 바이폴라 구동에서 파란색 경로의 전류를 측정할 수 없는 문제점이 있습니다. 파란색 경로의 전류는 바이폴라 구동 방식에서 모터가 회전하다가 멈추고자(또는 역방향으로 회전하고자) 할 경우 흐르게 됩니다.
C3 위치에서 측정하는 전류는 파란색과 초록색 전류를 모두 측정하지 못하는 문제가 있습니다. 단지 배터리에서 공급되어 흐르는 전류만 측정하기 때문에 실제 파워서플라이에서 표시되는 전류와 C3에서 측정된 전류가 일치하게 됩니다. 하지만 모터에 실제 흐르는 전류가 아니므로 일정 범위 내로 전류제어를 하더라도 모터의 역기전력에 의한 전류로 MOSFET가 손상될 수 있습니다.
DC 모터제어기는 C3에서 측정하는 방식은 사용하지 않고 있습니다. 현재는 C1과 C2에서 측정하는 방식을 사용하고 있습니다.

6.2.4 배터리 전류와 모터 전류

제어기는 배터리에서 공급하는 전류가 아닌 모터를 통해 흐르는 전류를 측정하고 제어합니다. 일반적으로 모터를 통해 흐르는 전류는 배터리 전류보다 높습니다. 이러한 현상은 모터의 인덕턴스에 의한 플라이백(Flyback) 전류 때문이며, 배터리 전류가 낮게 흐르더라도 모터 전류는 극단적으로 높게 흘러 제어기의 잠재적인 손상을 가져올 수 있습니다.
그림 6‑6과 같이 모터 전류는 플라이백 효과로 인해 PWM 스위칭에 의해 MOSFET가 OFF 되었을 때에도 ON 되었을 때와 같은 수준의 전류 양이 연속으로 흐릅니다.

MW103
그림 6‑6 PWM 스위칭에 따른 모터 전류와 배터리 전류

배터리 전류(Battery Current)와 모터 전류(Motor Current) 사이의 관계식은 다음과 같습니다:

Battery Current = Motor Current x PWM Duty Ratio
만약 제어기가 20% PWM 듀티비(Duty Ratio)에서 배터리 전류가 10A로 측정되면 모터에 흐르는 전류는 50A가 될 것으로 예상할 수 있습니다.

 

6.3 가상 머신

가상머신(Virtual Machine)이란 어떤 기계 구조나 하드웨어 플랫폼을 모방한 환경, 또는 이것에 의해 실현된 가상적인 기계 환경을 의미합니다. 제어기는 사용자가 작성한 스크립트를 해석하여 실행하는 가상머신을 가지고 있습니다.
사용자가 스크립트 언어로 작성한 소스코드는 컴파일러에 의해 바이트코드로 컴파일 됩니다. 그리고 바이트코드는 제어기에 다운로드 되어 플래시 메모리에 저장됩니다. 이때 최대 60Kbyte까지 저장 가능합니다. 이후, 가상머신은 플래시 메모리에서 바이트코드를 읽어와 해석하여 실행합니다.

6.3.1 스택 기반 연산

가상머신은 스택을 기반으로 동작합니다. 먼저 스택에 피연산자를 넣고 연산자가 스택의 피연산자를 꺼내 연산하고 결과는 다시 스택에 넣습니다. 하나의 수식문에 대한 연산이 끝날 때까지 이 과정을 반복하게 됩니다.
스택에는 최대 32개의 4byte 정수형 혹은 8byte 실수형 피연산자를 저장할 수 있습니다. 스택의 용량은 일반적인 수식문의 연산에 충분한 크기입니다. 하지만 너무 긴 수식문을 작성하게 되면 프로그램 실행 중 스택 오버플로우가 발생할 수 있습니다.

6.3.2 데이터 메모리
가상머신은 또한 프로그램 내의 전역 변수를 저장하기 위한 데이터 메모리를 가지고 있습니다. 데이터 메모리에는 최대 256개의 4byte 정수형 혹은 8byte 실수형 전역 변수를 담을 수 있습니다.
가상머신에서 프로그램이 실행될 때 사용되는 전역 변수 값은 Motor Control UI 유틸리티에서 읽어올 수 있습니다. 프로그램의 전역 변수를 읽는 것은 프로그램의 실행 상태를 모니터링하고 프로그램을 디버깅하는 것은 쉽게 합니다.
제어기의 전원을 켜거나 리셋 후 프로그램이 한 번도 실행되지 않았다면 모든 전역 변수는 0의 값을 가집니다. 프로그램의 실행이 종료되었다면, 전역변수에는 프로그램에서 마지막으로 저장한 값이 남아있습니다.

 

6.4 오브젝트

제어기에 명령(Command)을 내리거나 제어기의 구성 파라미터(Configuration Parameter)를 설정하는 것은 제어기 내부의 오브젝트(Object)에 값을 쓰는 것을 말하며, 제어기의 상수나 상태를 모니터링하는 것은 제어기 내부의 오브젝트에서 값을 읽는 것을 말합니다. 이처럼 제어기가 가진 각종 오브젝트는 제어기와 통신으로 연결된 다른 장치와 데이터를 교환하는 기본 단위가 됩니다.

 

6.4.1 오브젝트의 종류

제어기 내부의 오브젝트들(Objects)은 다음과 같이 5가지 속성을 가지는 그룹으로 나뉘어 집니다:

·  상수(Constant) 오브젝트: 읽기 전용, 제어기 실행 도중 변하지 않음
·  명령(Command) 오브젝트: 쓰기 전용, 제어기가 수행할 명령 전달
·  상태(Status) 오브젝트: 읽기 전용, 제어기의 구동 상태를 표시
·  구성 파라미터(Configuration Parameter) 오브젝트: 읽고 쓰기 가능, 플래시 메모리 저장
·  변수(Variable) 오브젝트: 읽고 쓰기 가능, 플래시 메모리에 저장 안됨

상수 오브젝트는 제어기에서 고정된 값으로 변하지 않는 오브젝트입니다. 제어기의 소프트웨어/하드웨어 버전, 모델 번호와 같은 것들이 여기에 해당합니다. 보통 마스터 PC가 제어기를 처음 연결할 때, 필요한 상수 오브젝트들을 한꺼번에 읽어옵니다.

명령 오브젝트는 제어기가 지정된 동작을 실행하도록 하는 명령 코드 값을 쓰거나 명령 인자(argument)를 쓰는 오브젝트입니다. 명령 코드를 쓰는 것은, 명령 오브젝트가 이미 개별 코드에 대해 ’1-모터 정지, 2-모터 전원 차단, 3-모터 전원 공급’과 같이 기능이 부여된 상태에서 한 가지 기능을 선택하는 것과 같습니다. 예를 들면, 모터 정지 명령을 ‘command = 1′과 같이 사용하는 것입니다.
명령 인자를 쓰는 것은, 특정 기능을 수행하도록 구성된 명령 오브젝트에 인자와 함께 실행 명령을 내리는 것과 같습니다. 예를 들면, 모터를 50RPM의 속도로 구동하라는 명령을 ‘velocity_command = 50′과 같이 사용하는 것입니다.

상태 오브젝트는 제어기의 내부 상태를 저장하고 있는 오브젝트로 마스터 PC는 읽기만 가능합니다. 이 값은 제어기가 실행되면서 계속 바뀌게 됩니다. 보통 마스터 PC가 제어기의 구동 상태를 알기 위해 상태 오브젝트를 주기적으로 읽기 됩니다.

구성 파라미터는 오브젝트는 제어기의 구동과 관련된 여러 파라미터를 설정하는데 사용됩니다. 제어기가 가진 대부분의 오브젝트가 구성 파라미터이며, 이 오브젝트를 어떻게 설정하는지에 따라 제어기를 다양한 방식으로 동작시킬 수 있게 됩니다.

6.4.2 오브젝트의 저장과 읽어오기

그림 6‑7에서와 같이 통신 포트를 통해 엑세스 되는 오브젝트들은 대부분 RAM(Random Access Memory) 영역에 존재합니다. RAM 영역에는 수시로 값이 바뀔 수 있는 구성 파라미터(Configuration Parameter)와 명령(Command), 상태(Status), 변수(Variable) 오브젝트가 저장됩니다. 하지만 제어기의 전원이 꺼지더라도 사용자가 설정한 값이 유지되어야 하는 구성 파라미터의 경우 플래시 메모리(Flash Memory)에 저장되어야만 합니다. ROM(Read Only Memory) 영역에는 값이 변하지 않는 상수(Constant) 오브젝트가 저장됩니다. 그리고 제품 초기 설정 값(Factory Default Value)도 저장되어 있어, 필요에 따라 제어기의 모든 구성 파라미터를 초기값으로 재설정할 수 있게 합니다.

MW104
그림 6‑7 오브젝트가 저장된 영역과 통신 포트를 통한 오브젝트의 엑세스

제어기가 시작되면서 플래시 메모리에 저장된 구성 파라미터(Configuration Parameters) 오브젝트들을 RAM 영역으로 읽어옵니다. 또한 RAM 영역의 다른 오브젝트들은 모두 0으로 초기화 됩니다.

사용자가 Motor Control UI 유틸리티를 사용하여 구성 파라미터의 값을 변경하면 RAM 영역에서만 반영됩니다. 만일 변경한 값이 제어기에 영구적으로 반영되어야 한다면, RAM 영역의 구성 파라미터 값을 플래시 메모리 영역으로 복사해야 합니다. 이는 제어기에 ’1 – Save properties in Flash Memory’ 명령을 내림으로 가능합니다. 자세한 설명은 “10.2.2 system_command – System Command”를 참고하시기 바랍니다.
제어기가 시작된 후에도 플래시 메모리에 저장된 구성 파라미터들을 RAM 영역으로 다시 읽어올 수 있습니다. 이는 제어기에 ’2 – Load properties from Flash Memory’ 명령을 내림으로 가능합니다.

Motor Control UI 유틸리티를 사용하면 제어기의 구성 파라미터 값을 변경하고 명령을 내리는 것을 쉽게 할 수 있습니다.

6.4.3 제어기의 모든 설정 리셋

제어기의 구성 파라미터가 엉켜 제어기가 의도치 않게 동작할 때는 제어기의 구성 파라미터를 제품 초기 설정 값(Factory Default Value)으로 되돌리고 새로 설정하는 것이 좋습니다. 이는 제어기에 ’98 – Reset to Factory Default’ 명령을 내림으로 가능합니다.
또 다른 방법으로는 제어기의 전면부나 상판에 있는 리셋(Reset) 버튼을 사용하는 것입니다. 다음은 이를 사용하는 절차입니다:

1. 먼저 제어기의 전원을 끕니다.
2. 리셋 버튼을 누른 상태에서 제어기 전원을 켭니다.
3. 버튼을 5초 이상 누르고 대기합니다. 이때 제어기의 모든 LED는 켜져 있는 상태가 유지됩니다.
4. 5초 후, RAM과 플래시 메모리 영역에 있는 구성 파라미터 오브젝트에 제품 초기 설정 값이 적용됩니다. 이때 제어기의 Run LED만 깜박이면서 정상적인 구동을 알리게 됩니다.

 

6.5 통신 포트

마스터 PC는 제어기의 USB, RS-232, CAN 포트로 연결이 가능합니다. 자세한 사항은 “3.4 통신 포트의 기능”을 참조하기 바랍니다.

 

6.6 입출력 포트
제어기는 각종 센서와 액츄에이터를 연결하는 입출력(Digital Outputs, Digital Inputs, Analog Inputs, Pulse Inputs) 포트를 가집니다. I/O에 대한 자세한 사항은 “9 I/O 신호 처리”를 참조하기 바랍니다.
그리고 엔코더와 홀센서 연결 포트를 가집니다. 이에 대한 세부 사항은 “4.6 광학식 증분 엔코더”를 참조하기 바랍니다.

 

 

MoonWalker Series Motor Controllers User’s Manual 05.모터의 안전한 사용을 위한 기본설정

MW001

MW001

MoonWalker Series

Motor Controllers

User’s Manual

MW-MDC24D100S / MW-MDC24D100D

MW-MDC24D200S / MW-MDC24D200D

MW-MDC24D500S / MW-MDC24D500D

 ※ 사용자 매뉴얼에 포함된 정보는 정확하고 신뢰성이 있는 내용입니다. 그러나 출판 당시 발견되지 않은 오류가 있을 수 있으니 사용자는 자신의 제품 검증을 수행하시기 바라며, 전적으로 사용자 매뉴얼에 포함된 정보에 의존하지 마시기 바랍니다.

 

5. 모터의 안전한 사용을 위한 기본설정

이 장에서는 모터의 제어 앞서 모터를 정격 범위 내에서 안전하게 구동하기 위한 구성 파라미터들을 올바르게 설정하는 것에 대해 설명합니다.

5.1 모터 특성
모터의 주요 특성은 다음 그림 5‑1에서와 같이 모터의 데이터시트로부터 얻을 수 있습니다.

MW028
그림 5‑1 특정 모터의 주요 특성 표시 예

모터의 데이터시트에는 일반적으로 정격 전압, 정격 전류, 정격 토크, 정격 회전수 등이 표시됩니다. 또한, 무부하 전류와 무부하 회전수가 표시되며, 기동 시 전류와 토크도 표시됩니다.

모터를 정격에 따라 안전하게 구동하기 위해서는 모터의 특성들이 모터제어기에 적합한 범위 내에서 설정되어야 합니다. 다음 모터제어기 구성 파라미터들은 모터의 주요 특성을 설정하는데 사용됩니다:

max_current – Max Current
max_voltage – Max Voltage
max_velocity – Max Velocity
acceleration – Acceleration
deceleration – Deceleration

5.1.1 최대 전류와 최대 전압
‘Max Current’는 보통 정격 부하가 있을 때 허용되는 전류입니다. 모터제어기의 폐루프 전류제어기는 최대 허용 전류를 넘어가지 않도록 모터에 흐르는 전류를 제어합니다.
DC 모터에 흐르는 전류는 발생하는 토크와 비례 관계에 있습니다. 그리고 모터의 토크는 보통 회전 속도에 반비례합니다. 모터 기동 시 많은 전류가 흐르면서 큰 토크가 가해집니다. 모터가 최고 속도로 회전하면 모터에 가해지는 전압과 역기전력이 비슷해지고 모터에 흐르는 전류는 낮아집니다. 이때 모터가 낼 수 있는 토크는 작아집니다.
‘Max Voltage’는 모터에 가장 높게 가해질 수 있는 정격 전압입니다. 부하가 일정할 때, 모터의 회전속도는 모터에 가해지는 전압에 비례합니다. 만일 모터에 정격 전압 이상을 가하게 되면 모터의 속도가 정격 속도 이상으로 증가합니다. 하지만 모터에서 열이 발생하고 수명을 단축하게 됩니다. 극단적으로는 모터가 탈 수도 있습니다.
모터의 최대 허용 전류와 전압은 Motor Control UI 유틸리티를 통해 제어기에 연결된 각각의 모터에 설정할 수 있습니다. 모터의 손상을 방지하기 위해, 모터의 데이터시트를 참고하여 올바른 값을 설정해야 합니다.

5.1.2 가속도와 감속도
모터 제어에 속도 프로파일을 사용하는 것은 모터의 급격한 속도 변화를 방지하고 모터의 서지 전류 및 기계적 피로를 최소화하는데 필요합니다.
그림 5‑2와 같이 제어기는 모터를 일정한 토크로 구동하기 위해 사다리꼴 모양의 속도 프로파일을 사용합니다. 여기서 사용되는 ‘Max Velocity’, ‘Acceleration’, ‘Deceleration’은 속도 프로파일을 만드는 주요 요소입니다.

MW029
그림 5‑2 속도 프로파일과 위치 변화

보통 모터의 최고 속도는 부하나 마찰에 따라 달라집니다. ‘Max Velocity’는 모터의 부하를 고려하여 설정해야 합니다. 만일 폐루프 위치제어나 속도제어에서 모터가 설정된 최고 속도에 도달하지 못하게 되면 PID 제어기의 적분기에 속도오차가 누적됩니다. 이 속도오차에 의해 제어기는 폴트 상황이 되고 모터가 Power OFF 될 수 있습니다. 이러한 모터의 구동 오류를 감지하는 것에 대해서는 “11.7.2 vel_error_detection – Velocity Error Detection”을 참고하기 바랍니다.

속도 명령을 내리면, 컨트롤러는 사용자가 설정한 ‘Acceleration’과 ‘Deceleration’으로 현재 속도에서 원하는 속도로 이동합니다. 위치 명령도 속도 명령과 마찬가지로 속도 프로파일을 생성하여 원하는 위치까지 이동하게 됩니다.
최고 속도, 가속도, 감속도는 Motor Control UI 유틸리티를 사용하여 변경할 수 있습니다. 가속도와 감속도는 각각 다른 값으로 설정할 수 있습니다. 최고 속도는 RPM 단위로, 가속도/감속도는 초당 RPM 단위로 입력합니다. 감속은 음의 값을 의미하지만, 감속도는 양의 값을 사용해야 합니다. 이 구성 파라미터들은 모터가 적용된 시스템과 부하를 고려하여 올바른 값을 설정해야 합니다.

5.2 홈 위치와 이동 범위

제어기에 위치 센서(엔코더, 홀 센서, 포텐셔미터)가 연결되어 있다면, 1ms마다 모터의 위치를 측정하고 속도를 계산합니다. 이 값은 모터의 초기위치를 찾고 구동 범위를 제한하는데 사용될 수 있습니다. 이와 관련되어 다음 구성 파라미터들이 사용됩니다:

home_position – Home Position
min_position – Min Position
max_postion – Max Position
use_soft_limit – Use Soft Limit

5.2.1 이동 범위 설정
제어기의 운용 환경으로 다음 그림 5‑3과 같이 긴 레일 위를 바퀴에 연결된 모터가 이동하는 것을 생각해 볼 수 있습니다.

MW030
그림 5‑3 홈 위치와 모터의 이동 범위 한계

상기 시스템에서 모터의 이동 범위를 제한하는 것은 다음과 같이 물리적, 전기적, 소프트웨어적인 3단계로 구성될 수 있습니다(이 중 하나 이상의 방법을 사용하여 모터의 이동 범위를 구속하게 됩니다):

1. 레일의 양 끝에 스토퍼(Stopper)를 설치하여 모터가 구동 범위를 벗어나지 못하도록 물리적으로 막습니다.
2. 모터가 스토퍼에 다다르기 전에 Forward/Reverse Limit Sensor가 이를 감지하고, 리미트 센서 위치를 벗어나지 못하도록 제어합니다.
3. 모터에 내려지는 위치 명령을 사용자가 설정한 ‘Min Position’과 ‘Max Position’ 범위 내로 제한합니다. 그리고 모터의 위치가 ‘Min Position’과 ‘Max Position’을 벗어나면, 이 방향으로 움직이는 명령을 차단합니다.

모터가 어떠한 이유로 스토퍼에 막히게 되면 폐루프 위치/속도 제어기는 원하는 위치 혹은 속도에 도달하기 위해 모터에 공급하는 전력을 점점 증가시키게 됩니다. 하지만 모터의 위치는 변하지 않습니다. 모터제어기는 이러한 상황을 감지하고 모터를 Power OFF 할 수 있습니다. 이 설정을 위해서 “11.7.1 stall_detection – Stall Detection”을 참고합니다.
만일 모터가 Forward Limit Sensor나 Reverse Limit Sensor를 켜면, 모터제어기는 다음 그림 5‑4와 같이 모터제어기에 내려지는 명령을 제한합니다.

MW031
그림 5‑4 리미트 범위와 이동 가능한 방향

모터가 Reverse Limit Sensor를 켜면 모터를 음(-)의 방향으로 이동하는 위치, 속도, 전류, 전압 명령은 실행되지 않습니다. 하지만 양(+)의 방향으로 이동하는 명령은 실행됩니다. 만일, Forward Limit Sensor를 켜면 모터를 양의 방향으로 이동하는 명령은 실행되지 않습니다. 하지만 음의 방향으로 이동하는 명령은 실행됩니다. 이러한 동작을 구성하기 위해서는 디지털 입력에 근접 센서나 리미트 스위치가 연결되어야 하고 적절한 I/O 설정이 필요합니다.

모터의 이동 범위를 ‘Min Position’과 ‘Max Position’ 값으로 설정하고 소프트웨어적으로 이동 범위를 제한하는 것은 가장 쉽게 사용할 수 있는 이동범위 제한 방법입니다. 이는 Forward/Reverse Limit Switch를 사용하는 것과 같은 방법으로 운용됩니다. 이 방법을 사용하기 위해서는 ‘Use Soft Limit’의 설정이 켜져 있어야 합니다. “11.4.5 use_soft_limit – Use Soft Limit”를 참고하기 바랍니다.
‘Min Position’과 ‘Max Position’은 모터가 이동 가능한 최소/최대 위치를 말합니다. 일반적으로 이 위치는 스토퍼와 Reverse/Forward Limit Switch에 도달하기 전에 여유를 두고 설정하는 것이 좋습니다.

5.2.2 홈 위치 설정
일반적으로 모터에는 증분 엔코더가 사용되기 때문에, 제어기 전원이 꺼졌다가 켜지면 카운트 위치를 잃어버립니다.
위치제어에 사용할 경우, 모터를 홈 위치로 이동하고 모터의 위치를 리셋 하는 과정이 우선되어야 합니다. 이 과정은 다음과 같이 구현될 수 있습니다:

1. ‘Home Position’에 모터의 홈 위치를 설정합니다.
2. 전압 명령으로 모터를 천천히 홈 센서가 설치된 방향으로 움직입니다.
3. 홈 센서가 트리거 되면 모터의 위치(‘Position’)에 ‘Home Position’ 값이 적재 됩니다.
4. 마지막으로 0V 전압 명령으로 모터를 정지합니다.

이후, 모터는 홈 위치를 기준으로 자신의 현재 위치를 파악하게 됩니다.

5.3 모터와 제어기 보호

모터제어기는 1ms마다 전원 전압, 방열판 온도를 읽습니다. 그리고 0.1ms마다 모터에 흐르는 전류를 읽습니다. 이 값들은 모터의 피크 전류와 과전류, 과전압, 저전압 등 제어기 보호와 관련된 상태를 체크하는데 사용됩니다.
모터제어기의 안전과 관련된 파라미터들은 다음과 같은 것들이 있습니다:

overvoltage_limit – Overvoltage Limit
undervoltage_limit – Undervoltage Limit
high_voltage – High Voltage
overcurrent_limit – Overcurrent Limit
overcurrent_delay – Overcurrent Delay
peak_current_ratio – Peak Current Ratio
overheat_limit – Overheat Limit
high_temperature – High Temperature

만일 측정된 모터 전류와 전원 전압, 방열판 온도 값들이 상기 리미트를 벗어나게 되면 폴트를 발생하고 모터를 Power OFF 합니다. 이때 측정값이 다시 리미트 범위 내로 들어오더라도 모터는 자동으로 Power ON 되지 않습니다.

5.3.1 과전압 보호
제어기에는 전원의 전압 모니터링 회로가 포함되어 있습니다. 전원의 전압이 설정된 ‘Overvoltage Limit’ 값을 초과하면 과전압 폴트를 발생하고 모터를 Power OFF 합니다. 이 값은 제어기 모델에 따라 기본 값이 설정되어 있으며 사용자가 Motor Control UI 유틸리티를 사용하여 변경할 수 있습니다. 기본 값과 설정 가능한 범위는 제어기 모델의 데이터시트를 참조하기 바랍니다.

MW032
그림 5‑5 전원의 전압에 따른 제어기 동작 트리거

모터에 공급되는 전원보다 전압이 높아지는 현상은 모터가 생성한 전압을 스위칭 회로가 증폭하여 발생합니다. 그리고 높아진 전압을 전원이 흡수하지 못하면 과전압 보호가 작동합니다.

과전압 보호로 모터가 Power OFF 되는 상황을 방지하기 위해, 전압이 사용자가 설정한 ‘High Voltage’에 다다르면 디지털 출력을 트리거 하도록 설정 할 수 있습니다. 이 디지털 출력은 회생 제동에 의해 생성된 에너지를 흡수하기 위해 전원의 +와 -간에 설치된 션트 저항을 켜게 됩니다. 과전압 보호는 전원으로 배터리 대신 전원공급장치를 사용할 때는 필수적으로 사용되어야 합니다.

5.3.2 저전압 보호
배터리 전압이 설정된 ‘Undervoltage Limit’ 값 이하로 떨어질 경우 저전압 폴트를 발생하고 모터를 Power OFF 합니다. 이 값은 제어기 모델에 따라 기본 값이 설정되어 있으며, 제어기 하드웨어 회로의 특성을 반영하고 있기 때문에 변경하지 안는 것이 좋습니다.

모터에 공급되는 전원의 전압이 갑자기 떨어지는 현상은 보통 모터의 가감속 구간에서 전원의 정격 전류보다 높은 전류를 끌어다 씀으로 발생합니다. 측정 된 전압이 다시 ‘Undervoltage Limit’ 위로 올라가더라도 모터는 Power ON 되지 않습니다.

저전압 보호로 모터가 Power OFF 되는 상황을 방지하기 위해, 제어기에 연결된 모터의 정격 파워보다 높은 전원의 배터리나 파워서플라이를 사용해야 합니다. 이것이 불가능할 때는, 모터의 ‘Max Current’ 설정 값을 낮추거나 ‘Acceleration’, ‘Deceleration’ 설정 값을 낮춰야 합니다.

“11.5.1max_current – Max Current”와 “11.5.4 acceleration, deceleration – Acceleration, Deceleration”을 참고하기 바랍니다.

5.3.3 과전류 보호
제어기는 모터에 흐르는 전류를 측정하기 위해 전력단 내부에 전류 센서를 가지고 있습니다. 전류센서는 매 0.1ms 마다 전류를 측정하고 지정된 시간(‘Overcurrent Delay’) 동안 설정된 ‘Overcurrent Limit’ 값을 초과하면 과전류 폴트를 발생하고 모터를 Power OFF 합니다. 이 파라미터는 제어기 모델에 따라 기본 값이 설정되어 있으며 사용자가 Motor Control UI 유틸리티를 사용하여 변경할 수 있습니다. 기본 값과 설정 가능한 범위는 제어기 모델의 데이터시트를 참조하기 바랍니다.

MW033
그림 5‑6 모터의 전류에 따른 제어기 동작 트리거

‘Overcurrent Limit’ 값은 모터의 ‘Max Current’보다 120% 이상 높게 설정하는 것이 좋습니다. 모터의 전류 측정 값에는 정류자에서 발생하는 아크 및 MOSFET 스위칭시 발생하는 전압 스파이크에 의해 노이즈가 포함됩니다. 만일 이 두 값의 차이가 미소하다면 전류 노이즈로 인해 과전류 보호가 작동할 가능성이 높습니다.

또한, 제어기는 전력단 및 모터 결선의 단락 상황을 판단하는 매우 높은 서지 전류를 감지합니다. 모터에 흐르는 전류가 한 순간이라도 Peak Current 값을 넘어가면, 과전류 폴트를 발생하고 모터는 Power OFF 상태가 됩니다. Peak Current는 직접 설정되지 않고 ‘Peak Current Ratio’ 설정에 의해 다음과 같이 계산됩니다:
Peak Current = Peak Current Ratio x Overcurrent Limit
‘Peak Current Ratio’는 모든 제어기에 공통적으로 200%의 값이 설정되어 있으며 사용자가 Motor Control UI 유틸리티를 사용하여 변경할 수 있습니다.

5.3.4 과열 보호
제어기에는 방열판의 온도 모니터링 회로가 포함되어 있습니다. 매 1ms마다 온도를 측정하고 방열판의 온도가 설정된 ‘Overheat Limit’ 값을 초과하면 과열 폴트를 발생하고 모터를 Power OFF 합니다. 온도가 다시 설정 값 아래로 떨어지더라도 모터는 자동으로 Power ON 되지 않습니다. 이 값은 제어기 모델에 따라 기본 값이 설정되어 있으며 사용자가 Motor Control UI 유틸리티를 사용하여 변경할 수 있습니다. 기본 값과 설정 가능한 범위는 제어기 모델의 데이터시트에 나와있습니다.

MW034
그림 5‑7 방열판의 온도에 따른 제어기 동작 트리거

온도는 MOSFET 근처 방열판에서 측정되고 제어기 외부 표면보다 온도가 더 빨리 오르거나 떨어집니다. 방열판의 온도가 상승하는 데 걸리는 시간은 출력 전류와 주위 온도 및 냉각 팬의 사용 여부에 따라 달라집니다.

과열 보호로 모터가 Power OFF 되는 상황을 방지하기 위해, 온도가 사용자가 설정한 ‘High Temperature’에 다다르면 디지털 출력을 트리거 하도록 설정 할 수 있습니다. 이 디지털 출력은 제어기의 방열판을 냉각하도록 설치된 냉각 팬을 켜게 됩니다.