MoonWalker Series Motor Controllers User’s Manual 09. I/O 신호 처리
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 입출력 신호의 전체 흐름을 단순화 된 블록 선도로 보여줍니다.
그림 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는 사용 가능한 기능을 매핑 한 예를 보여줍니다. 여기서 검은색 화살표는 신호의 흐름이고 파란색 화살표는 매핑의 방향입니다.
그림 9‑2 디지털 출력 채널의 매핑 예 |
매핑의 설정은 디지털 출력 채널을 기준으로 모터제어기의 디지털 출력 버퍼의 기능을 선택하게 됩니다. 디지털 출력의 매핑은 출력 신호의 충돌을 만들지 않습니다. 즉, 하나의 소스를 여러 출력 채널로 내보내는 것은 문제가 되지 않습니다.
Motor Control UI 유틸리티를 사용하여 디지털 출력 채널의 매핑을 쉽게 할 수 있습니다.
9.3 아날로그 입력 캡쳐
아날로그 입력은 제어기에서 가장 간단하고 일반적인 입력 수단입니다. 보통 포텐셔미터나 포텐셔미터를 내장한 조이스틱을 연결하여 로봇을 조종하는데 사용됩니다.
아날로그 입력 채널은 0과 5V 사이의 전압을 읽습니다. 전압은 12bits AD 컨버터에 의해 디지털로 변환되어 마이크로컨트롤러가 읽게 됩니다. 읽은 값은 0과 4095 사이의 원시 값(raw value)이 됩니다.
9.4 펄스 입력 캡쳐
펄스 입력은 보통 RC 조종기와 수신기를 연결하여 로봇을 원격 조종하는데 사용됩니다. 그리고 모터의 회전각을 측정하는 절대 엔코더를 펄스 입력에 연결할 수도 있습니다.
그림 9‑3 펄스 신호 캡쳐 |
펄스 입력 캡쳐와 관련된 구성 파라미터는 다음과 같습니다:
· PI Capture Type
9.4.1 펄스 신호의 캡쳐
다음 그림 9-4과 같이, 펄스에서 ON 상태는 High time으로 OFF 상태는 Low Time으로 측정됩니다. Pulse Period는 High Time과 Low Time을 더한 시간입니다.
그림 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)을 출력합니다.
그림 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까지의 실수로 조정됩니다.
그림 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이 됩니다.
그림 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)
그림 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
그림 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 조종기를 통해 내려지는 로봇의 구동 명령(전진 속도, 회전 속도)을 좌우 바퀴의 속도로 믹싱하여 분배해야 합니다.
그림 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:
최대값을 넘어가는 믹싱 결과에 대해 단지 최소 최대값 범위 내로 제한합니다.
여기서 Limit (x) 함수는 다음과 같이 정의됩니다:
Mixing Mode 2:
최대값을 넘어가는 믹싱 결과에 대해 최대값을 넘어간 비율대로 줄여줍니다.
여기서 r은 다음과 같이 결정합니다:
Mixing Mode 3:
최대값을 넘어가는 믹싱 결과에 대해 전진속도를 우선 적용합니다.
Mixing Mode 4:
최대값을 넘어가는 믹싱 결과에 대해 각속도를 우선 적용합니다.
※ 아날로그/펄스 입력 신호의 믹싱은 속도 명령과 전압 명령에만 사용 가능합니다.