February 27, 2021

디바이스마트 미디어:

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

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

[디웰전자] 전류센서 파격할인!! 50% 할인이벤트!! -

2015-02-02

[에스엔에스] 신상품 대량 입고기념 할인이벤트!! -

2015-02-02

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

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 광학식 증분 엔코더”를 참조하기 바랍니다.

 

 

Leave A Comment

*