Open MicroManipulator - 서브마이크로미터 3D 모션 제어 플랫폼
요약
Open Micro-Manipulator는 광학 정렬, 프로빙 등 서브마이크로미터 정밀도가 필요한 작업을 위한 저비용 오픈소스 XYZ 모션 제어 플랫폼입니다. 병렬 기구 구조와 자기 기어링을 활용하여 높은 분해능(최소 50nm)과 넓은 이동 범위를 확보했습니다. G-Code 통합, Python API, GUI를 제공하며, FreeCAD 및 KiCAD로 설계되어 제작 용이성이 높습니다.
핵심 포인트
- 서브마이크로미터 정밀도의 XYZ 모션 제어 플랫폼입니다.
- 자기 기어링으로 저가 엔코더의 분해능을 30배 향상했습니다.
- G-Code, Python API 등 다양한 인터페이스를 지원합니다.
- FreeCAD/KiCAD 기반 설계로 제작 및 수정이 용이합니다.
Open Micro-Manipulator 는 광학 정렬, 전자 부품 프로빙, 현미경 작업을 위한 저비용 오픈소스 전동 XYZ 미세 조작 플랫폼으로, 쉽게 제작할 수 있도록 설계됨
병렬 기구 구조 와 소형 볼 조인트로 기계적 강성과 넓은 이동 범위를 확보하며, 기성 스테퍼 모터를 30kHz 폐루프 제어기로 구동함
자기 기어링(magnetic gearing) 으로 저가 자기식 회전 엔코더의 분해능을 30배 높여 최소 50nm 스텝을 지원함. 다만 이는 분해능이며, 절대 정확도는 이보다 상당히 낮음
USB 시리얼의 G-Code 로 다른 프로젝트에 통합할 수 있으며, 선행 탐색 기반 경로 계획과 Python API, 카메라 영상을 함께 보여주는 GUI를 제공함
하드웨어 v4.0 은 원점 복귀 중 자체 충돌과 볼 조인트 관련 문제를 개선함. FreeCAD 설계는 수정과 제작이 가능하지만, 3D 프린팅 부품에는 열 드리프트가 발생할 수 있음
기구 구조와 미세 이동 제어
Open Micro-Manipulator 는 서브마이크로미터 정밀도의 전동 XYZ 모션 제어 플랫폼으로, 광학 정렬과 전자 부품 프로빙, 현미경 작업을 대상으로 함
장치 구조와 제작 과정은 소개 영상 에서 확인할 수 있음
병렬 기구 구조 와 소형 볼 조인트를 사용해 기계적 강성과 넓은 이동 범위를 확보함
기성 스테퍼 모터 를 30kHz 폐루프 제어기와 정밀한 PWM 신호로 구동함
자기 기어링 은 저가 자기식 회전 엔코더의 분해능을 30배 높여 최소 50nm 스텝을 가능하게 함
분해능과 정확도는 다르며 , 절대 정확도는 이 수치보다 상당히 낮음
하드웨어 v4.0의 변경과 제작 조건
하드웨어 v4.0 은 이전 설계의 원점 복귀 중 자체 충돌과 볼 조인트 구조 문제를 수정함
FreeCAD 모델 을 재구성하고 모든 핀과 체결 부품을 추가해 필요한 기계 부품의 기준으로 사용할 수 있게 함
모든 CAD 모델은 유료 독점 CAD 구독 없이 열람하고 수정할 수 있도록 FreeCAD 로 제작함
대부분의 부품은 3축 CNC 밀링으로 가공하기 쉽도록 설계됨
3D 프린팅도 가능하지만 열 드리프트 가 발생하며, 탄소 충전 필라멘트로 이를 줄일 수 있음
CAD 모델 은 FreeCAD 1.2.0dev 에서 제작해 이전 버전에서 작동하지 않을 수 있으며, 별도 STL 파일 도 제공함
제작한 장치의 치수는 기구학 모델 의 설정값과 일치해야 하며, 특히 암 길이를 확인해야 함
전자 회로와 주의할 PCB 결함
전자 회로는 KiCAD 로 설계했으며, 흔히 구할 수 있는 모터 드라이버와 MCU 보드를 단순한 PCB로 연결함
조립에 SMD 납땜이 필요하지 않으며 , PCB 제조업체에 바로 제출할 수 있는 제작 파일도 저장소에 포함됨
일반적인 모터 권선 저항을 기준으로 전류와 발열을 적정 수준으로 유지하려면 5~6V, 2A 전원 을 사용해야 함
PCB v1.2 에는 다이오드 D1의 잘못 배치된 비아가 5V 전원과 접지를 단락시키는 결함이 있어, 해당 비아를 드릴로 제거해야 함
펌웨어 구조와 버전별 변화
펌웨어는 C++ 로 작성했으며 SimpleFOC에서 일부 영감을 얻음. 프로젝트의 하드웨어에 집중해 간결하고 읽기 쉬운 구성을 지향함
선행 탐색(look-ahead) 을 포함한 전체 모션 계획 스택으로 부드럽고 정확한 경로 추종을 지원함
XYZ 장치와 별개로 펌웨어는 6자유도 자세 보간과 경로 계획 도 지원해 헥사포드 모션 플랫폼 구동에 대비함
헥사포드가 프로젝트의 다음 단계가 될지는 확정되지 않음
펌웨어 v1.0.4 는 레이저 각인 같은 도구 사용을 위해 PCB J5의 GPIO 핀 2개에 도구 출력을 지원함
도구 동작을 경로 계획기에 통합해 G-Code 실행 시 빠르고 정확한 타이밍으로 처리함
소프트웨어 PWM 대신 PIO 로 추가 PWM 채널을 확보함
도구 출력 설정은 다음 이동 또는 대기 명령에서 실제로 적용됨
v1.0.4는 엔코더 정렬 등의 문제를 더 잘 알리도록 보정 오류 검사 를 추가하고, 기구학 초기화 코드와 매개변수 주석을 정리했으며 소규모 버그를 수정함
펌웨어 v1.0.1 은 병렬 원점 복귀, 반복 정밀도와 기하학적 기준 개선, 더 명확한 로그를 추가함
관절 보정 절차를 개선하고 결과를 플래시에 저장해 재부팅 후 재보정할 필요가 없도록 함
직접 자세 설정, 모터 활성화/비활성화, 엔코더 조회, 서보 매개변수 설정, 보정 및 장치 상태 조회용 G-Code를 추가함
모터를 활성화할 때 엔코더에서 현재 자세를 복구함
G-Code, Python API와 GUI
USB 시리얼 G-Code 로 장치를 제어할 수 있지만, 펌웨어는 G-Code의 일부 명령만 지원함
직선 이동, 대기, 직접 자세 설정, 원점 복귀, 도구 출력, 모터 제어, 상태 조회와 보정 등을 지원함
각 명령에는 ok
또는 error
응답 이 돌아오며, 추가 정보가 있으면 ok
보다 먼저 전송됨
클라이언트는 이전 명령의 응답을 기다린 뒤 다음 명령을 보내야 하며, 이를 지키지 않으면 동작이 정의되지 않음
회전은 3D 벡터 로 전달하며, 벡터 방향은 회전축, 길이는 해당 축 주위의 회전각을 나타냄
경량 Python API 는 시리얼 통신 과 명령 실행, 디버그 메시지 출력을 처리함
원점 복귀, 이동, 보정, 장치 정보 조회를 위한 함수를 제공함
Python 기반 Open Micro-Manipulator GUI 는 이동 조작과 실시간 카메라 영상 을 함께 제공함
현미경 카메라 등의 영상을 표시할 수 있으며, 간단한 G-Code 실행기와 생물학 응용 등에 사용할 수 있는 실시간 마우스 제어를 포함함
제작과 프로젝트 참여
제작 시 부품과 전자 회로를 조립하고, 실제 구성에 맞게 hw_config.h 의 핀 번호와 모터 종류 등 하드웨어 설정 을 확인한 뒤 펌웨어 업로드와 축 보정을 진행함
펌웨어 빌드와 업로드에는 Visual Studio Code와 PlatformIO 사용을 권장함
별도 설정 가이드 와 질문 및 제작 논의를 위한 Discord 서버 를 운영함
프로젝트는 제작 가이드 개선과 제작 경험 피드백 , 여러 Nema-17 스테퍼 모터의 축 반경 방향 오차 운동 측정에 대한 기여를 요청함
댓글과 토론
AI 자동 생성 콘텐츠
본 콘텐츠는 RSS: GeekNews (한국어)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기