MoonWalker Series Motor Controllers User’s Manual 08. 모터제어기 인터페이스
MoonWalker Series
Motor Controllers
User’s Manual
MW-MDC24D100S / MW-MDC24D100D
MW-MDC24D200S / MW-MDC24D200D
MW-MDC24D500S / MW-MDC24D500D
※ 사용자 매뉴얼에 포함된 정보는 정확하고 신뢰성이 있는 내용입니다. 그러나 출판 당시 발견되지 않은 오류가 있을 수 있으니 사용자는 자신의 제품 검증을 수행하시기 바라며, 전적으로 사용자 매뉴얼에 포함된 정보에 의존하지 마시기 바랍니다.
08. 모터제어기 인터페이스
이번 장에서는 모터제어기에 전달되는 명령과 피드백 신호의 처리를 다룹니다. 다음 그림 8-1은 모터제어기의 입출력과 관련된 내부와 외부 인터페이스 구조를 보여주고 있습니다.
그림 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 피드백 선택 스위치
여러 소스로부터의 피드백 값은 서로 믹싱 되지 않고 스위치에 의해 하나의 소스만 선택되어 폐루프 위치/속도/전류 제어기의 피드백 값으로 사용됩니다.
선택된 소스가 엔코더나 포텐셔미터와 같이 모터의 위치를 측정하는 센서라면, 모터의 속도는 위치를 차분하여 계산됩니다. 만일 타코미터와 같이 속도를 측정하는 센서라면, 모터의 위치는 속도를 증분하여 계산됩니다.
보통 포텐셔미터와 타코미터는 해상도가 높지 않고 측정값에 노이즈를 포함하고 있습니다. 오차가 조금이라도 있는 속도를 계속해서 위치에 증분하면 결과적으로 오차가 누적되어 모터의 실제 위치를 잃어버리게 됩니다. 또한, 작은 오차를 가지는 위치를 차분하여 속도를 계산할 때도 오차가 증폭되어 제대로 된 속도를 계산하지 못하게 됩니다.
※ 제어기는 다양한 종류의 센서를 피드백 센서로 사용할 수 있도록 하고 있습니다. 하지만 엔코더를 제외한 다른 센서(홀 센서, 포텐셔미터, 타코미터)를 모터의 위치와 속도 피드백 센서로 사용하는 것은 여러 가지 문제를 유발할 수 있기 때문에 권장하지 않습니다.