Search Results for 'G-code'

ATOM Icon

1 POSTS

  1. 2018/03/26 [자동 저장 문서] by 헐크

[자동 저장 문서]

아두이노와  CNC Shield를 사용한 Plotter EggBot 제작기 By hulk

아두이노에는 다양한 쉴드(Shield)가 판매되고 있는데 이번에 도전할 대상은 CNC 쉴드이다.  CNC 쉴드를 구동하는 라이브러리가 있는데 Grbl이라는 것이다. Grbl은 현재 ver 1.1 까지 나와있다. 이  Grbl 라이브러리 개발자에 한국계인 사람이 있는것 같다. Sungeun K. Jeon라는 분인데 유트브에서 이 분을 인터뷰 하는 것을 찾아 보기도  했다. Grbl이 저가형 3D 프린터의 원형인 Prusa 모델의 구동 라이브러리로 소개되어 있어 그 역사와 인지도는 아주 높다고 할 수 있다. 또한 안정성도 어느 정도 인정할 만 하다. DIY용 CNC 머신이나 Laser Engraver 에는 다 이것을 사용한다고 보면 된다.

그럼 이번 도전의 핵심인 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 = 255S-값의 최대치를 설정 할 수 있다.  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에는 Gbrl 대신 Eggduino라는 펌웨어 프로그램을 다운로드 하고, Inkscape의 확장 툴인 Eggbot Tool을 사용하여 직접 G-Code를 전송할 수 있는데, 시리얼 접속시 아두이노가 리셋되는 것을 막아야 파이선에서 시리얼 포트를 빠르게 찾게 된다. 리셋이 안되게 하는 방법은 Reset 핀과 GND 사이에 100uF 정도의 전해 콘덴서를 꽂아 주면 잘 작동 하였다.  
그외 필요한 화일은 
- 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 헐크

2018/03/26 15:59 2018/03/26 15:59
, , ,
Response
0 Trackbacks , 0 Comments
RSS :
http://trivis.cafe24.com/rocket/rss/response/25


블로그 이미지

공개할 만한 것은 공개합시다. 學問如逆水行舟 不進則退. 학문은 물을 거슬러 오르는 배와 같아 나아가지 않으면 뒤로 물러난다.

- 헐크

Notices

Archives

Authors

  1. 헐크

Recent Trackbacks

Calendar

«   2024/03   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

Site Stats

Total hits:
56245
Today:
9
Yesterday:
7