아두이노와 CNC Shield를 사용한 Plotter 및 EggBot 제작기 By hulk
그럼 이번 도전의 핵심인 CNC 쉴드를 살펴 보자. 4개의 모터 드라이버 칩을 장착할 수 있도록 지원한다. 노란색은 X, Y, Z 축을 빨간색은 Z축과 동기화하여 사용가능 하며 점퍼로 사용여부를 설정 할 수 있다. 모터 드라이버 칩으로는 Pololu A4988 과 DRV8825 가 많이 사용되고 있다. 열이 나는 부품이라 방열판이 추가로 제공 되고 있는 경우가 대부분이다.
펌웨어 업로드
Grbl version 1.1을 사용하는 https://github.com/cprezzi/grbl-servo 는 https://github.com/gnea/grbl 의 스페셜 버전이다.
이 버전에서는 CNC의 spindle 대신 RC Servo를 사용할 수 있는 버전이다. $M03 $M05 명령어 이후 S0~ S255 값으로 서보 모터의 위치를 조절 할 수 있다. $30 = 255로 S-값의 최대치를 설정 할 수 있다. PWM 신호 폭을 0.5ms에서 2.5ms로 조절 가능한데 사용하는 서보의 특성을 보고 cpu_map.h 파일에서 수정하면 된다.
MG90S 모델의 경우 그 값은 아래와 같다.
#ifdef SPINDLE_IS_SERVO
#define SPINDLE_PWM_MAX_VALUE 38 // 2.5ms
#ifndef SPINDLE_PWM_MIN_VALUE
#define SPINDLE_PWM_MIN_VALUE 7 // 0.5ms
#endif
#else
이것으로 그림을 그리게 하기 위해서는 먼저 Inkscape라는 프로그램을 이용해서 도안을 그려야 한다. 그림을 읽어서 하는 방법을 설명해 본다. 비트맵 따오기를 한 후 객체를 경로를 한 후 CNC Eggbot Tool를 사용하여 G-code로 변환한다. M03 변수를 서보 동작에 사용하므로 M03 S0과 M03 S150 이라는 G-Code를 생성하도록 하여 그림의 선과 선을 이동할 때 펜을 들어서 움직이고 내려서 그리게 된다.
그외 필요한 화일은
- Eggbot software 2.5: https://github.com/evil-mad/EggBot/ 에서 Eggbot extension을
- Plotink: https://github.com/plex3r/plotink 에서는 모션과 시리얼
- https://pypi.org/project/pyserial/#files 에서는 pyserial을 받아서
C:\각자의 설치 경로\inkscape-0.92.2-x64\inkscape\share\extensions과
G:\각자의 설치 경로\inkscape-0.92.2-x64\inkscape\share\extensions\serial에 복사해 준다.
USB로 연결된 아두이노 우노가 Inkscape에서 잘 인식이 되어야 하는데 필자도 어려움을 겪어 포기할뻔 했다. 끈질긴 검색의 결과 성공했다 ^.^. eggbot_scanwin32.py에 보면 아래와 같이 USB 인식 ID가 있다. 그 부분을 다음과 같이 수정하면 된다. CH340 칩을 사용하는 경우이므로 다른 칩을 사용하는 UNO 보드일 경우 상황에 맞게 시스템 정보창에서 VID와 PID 값을 찾아 수정하면 될것이다.
오리지널 hKey = _winreg.OpenKey( hReg, r"SYSTEM\CurrentControlSet\Enum\USB\VID_04D8&PID_FD92" )
수정 후 (CH340일 경우) hKey = _winreg.OpenKey( hReg, r"SYSTEM\CurrentControlSet\Enum\USB\VID_1A86&PID_7523" )
멋진 그림들을 많이 그려보자. 계란에도 멋진 그림을 넣어 보자.
Posted by 헐크