MoonWalker의 스크립트 기능을 이용한 역진자 제어
위 사진에 이번에 출시 예정인 MoonWalker가 있습니다. 응? 근데 왜 펜들럼[바로가기]과 연결되어 있냐구요? 원래 모터 제어기를 펜들럼 같은 장비랑 물리면 하나의 보드가 더 필요합니다. 바로 펜들럼의 제어입력을 계산하기 위한 보드인데요. 저희가 이번에 야심차게 출시할 예정인 MoonWalker가 저 사진에는 딸랑… 딸랑 하나만 연결되어 있자나요? 이번글에서는 MoonWalker가 지원하는 아~주 많은 멋진 기능중에서 SCRIPT 언어에 대해 자랑하기 위해 저렇게 연결해 두었습니다.
이번 MoonWalker에는 바로 [바로가기]에서 언급했던 스크립트 기능이 포함되어 있습니다. 이 기능은 뭐 일종의 매크로 보다는 더 강력하다고 생각하시면 됩니다. 간단히(사실 좀 복잡해도 됩니다.^^) 몇몇 기능들을 조합해서 프로그램을 짜야하는데 그것때문에 모터 제어기와 함께 별도의 보드를 쓰기는 불편하자나요.
몇몇 예를 들어보죠.
버튼 스위치를 이용해서 누를때마다 모터 RPM을 10씩 증가시키다가 50RPM이 되면 다시 10씩 감소하는 것을 계속하고 싶다. 이때, 모터의 RPM은 속도제어가 되어서 부하가 바뀌더라도 지령된 RPM을 잘 유지해야하며, 버튼을 1~3초안에 여러번 누르는 것은 오류로 보고 인식하지 않아야한다.
1. 속도 제어가 잘 되는 모터 제어기를 모터와 엔코더와 연결한다.
2. 별도이 MCU가 장착된 보드를 만들어서 버튼을 결선한다.
3. 2에서 만든 MCU 보드에 모터 제어기를 연결한다.
4. 아차~ 모터 제어기는 MCU와 통신으로 연결되는 방식이어야 한다.
5. 더 슬픈건, MCU 보드에 프로그램을 컴파일 하기위해 잘 쓸일이 없는 컴파일러를 구해야하고
6. 더더더 슬픈건, 이 컴파일러의 사용법 마저 익혀야한다…ㅠㅠ
7. 그나마 다행인건, 난 C는 그래도 좀 할 줄 안다…ㅠㅠ
1. 속도 제어가 잘 되는 모터 제어기는 MoonWalker이다.
2. 별도이 MCU가 장착된 보드 따위 구할 생각하지 말고, 그냥 MoonWalker의 Digital Input 단자에 버튼을 연결한다.
3. miniUSB단자에 USB케이블을 꼽고, 편하게 내 PC에 연결한다.
4. 더 편한건, 제공되는 UI 컨트롤러 프로그램을 다운 받아서 실행하고 스크립트를 조건대로 작성한다.
5. 그냥 실행한다.
난 제어를 공부하는 학생인데 교수님이 역진자 시스템을 제어해보라고 숙제를 줬다. 난 제어만 공부해서 MCU의 환경따위 구축할 줄 모른다.ㅠㅠ 그러나 역진자를 제어하기 위한 제어 알고리즘은 어떻게든 C 문법으로 작성할 수 있을 듯 하다.
1. 역진자는 폴과 암으로 구성되어 있으니, 두 개의 엔코더를 받아들이고, 하나의 모터를 구동할 수 있는 2채널형 모터 제어기를 구한다.
2. 모터 제어기만으로는 안된다. 별도의 보드를 가지고 역진자를 제어할 수 있는 코드를 작성할 수 있어야한다.
3. 그나마 다행인건 C로는 역진자 제어 코드를 짤 수 있을 것 같다.
4. 근데 젠장… 이놈의 MCU는 뭘 하지? DSP? CORTEX? 난 그냥 역진자만 간단히 제어할 수 있으면 좋겠다..ㅠㅠ
1. 그냥 MoonWalker…. 하나면 된다.
히히… 과대 광고인가요? 아닙니다. 이제부터 보시면 됩니다.
MoonWalker의 MW-MDC24D200D 모델은 2채널형 모델입니다. 즉, 구동하고 싶은 모터는 하나지만 엔코더를 읽어야하는게 두 개니 2채널형으로 선정합니다. 그리고 모터 연결, 엔코더 연결, 그리고 PC와 시리얼 통신을 연결합니다. 추가적인 보드 따위 필요없습니다. 그냥 MoonWalker면 됩니다^^
그리고 살짝, 엔코더의 한 바퀴당 펄스 숫자를 저희가 제공해 드릴 모터 컨트롤 UI 프로그램을 통해 설정해 둡니다.
그리고, 펜들럼을 제어하기 위한 코드를 짜서 넣어둡니다. 역진자는 처음보는분은 어려울 수도 있지만, 지금은 역진자 정도의 제어 조차도 저희 MoonWalker 모터 제어기에서 제공하는 스크립트 기능으로 구현할 수 있다는 걸 보여드리는 것입니다. 모터 제어기 내부의 변수들을 읽어와서 위치와 속도를 알고, 그걸 가지고
제어 입력도 계산하는 것이 가능하다는 것입니다. 모터제어기 하나만 썼을 뿐인데 말이죠. 그리고, 저희 스크립트 기능은 문법은 C 문법을 따라가지만, 별도의 변수 선언 과정은 생략됩니다. 또하나더… 저희 MoonWalker의 스크립트는 사용하는 변수를 위 그림 우측처럼 실시간으로 관찰할 수 있게 해줍니다.^^
이제 펜들럼 기구부(모터 포함)와 모터제어기인 MoonWalker만 딱.. 사용해서 MoonWalker가 지원하는 스크립트로 코드를 작성하고, 펜들럼을 제어하는 것을 동영상으로 보시죠^^
MoonWalker.. 기대되죠? Comming Soon… 입니다^^