직접 CNC 머신을 만들 계획이거나 제작 중이라면 GRBL이라는 용어를 접하게 될 것입니다. 이 튜토리얼에서는 GRBL이 무엇인지, 어떻게 설치하고 아두이노 기반 CNC 머신 제어에 어떻게 사용하는지 배우겠습니다.
또한 인기 있는 오픈소스 GRBL 컨트롤러 소프트웨어인 Universal G-code Sender 사용법도 익히겠습니다.
GRBL이란?
GRBL은 CNC 머신의 모션 제어를 가능하게 하는 오픈소스 소프트웨어 또는 펌웨어입니다. GRBL 펌웨어를 아두이노에 쉽게 설치하면 저비용, 고성능 CNC 컨트롤러를 즉시 얻을 수 있습니다. GRBL은 G-코드를 입력으로 받아 아두이노를 통해 모션 제어 신호를 출력합니다.
더 나은 이해를 위해 다음 다이어그램을 살펴보겠습니다:
다이어그램에서 CNC 머신 작동 원리의 "큰 그림"에서 GRBL이 어디에 위치하는지 볼 수 있습니다. 아두이노에 설치/업로드해야 하는 펌웨어로, CNC 머신의 스테퍼 모터를 제어합니다. 즉, GRBL 펌웨어의 기능은 G-코드를 모터 움직임으로 변환하는 것입니다.
필요한 하드웨어
아두이노 – 앞서 말했듯 GRBL을 설치할 아두이노가 필요합니다. 구체적으로 ATmega 328 기반 아두이노 보드, 즉 아두이노 우노(UNO)나 나노(Nano)가 필요합니다.
스테퍼 모터 – 당연히 스테퍼 모터가 머신의 움직임을 제공합니다.
드라이버 – 스테퍼 모터 구동을 위해 드라이버가 필요하며, 소형 DIY CNC 머신(NEMA 14 또는 17 스테퍼 사용)에서는 A4988이나 DRV8825 드라이버가 일반적인 선택입니다.
아두이노 CNC 쉴드 – 스테퍼 드라이버를 아두이노에 연결하는 가장 쉬운 방법은 아두이노 CNC 쉴드를 사용하는 것입니다. 모든 아두이노 핀을 활용하며 스테퍼 모터, 스핀들/레이저, 리미트 스위치, 냉각 팬 등을 쉽게 연결할 수 있게 해줍니다.
이것들은 CNC 머신이 어떻게 작동하는지 이해하는 데 필요한 기본 전자 부품들일 뿐입니다.
실제로 모든 것을 어떻게 연결해야 하는지 제 DIY CNC 폼 커팅 머신을 예로 들어보겠습니다.
이 CNC 머신을 만들기 위한 주요 전자 부품들은 여기서 확인하고 구매할 수 있습니다:
스테퍼 모터 – NEMA 17
A4988 스테퍼 드라이버
아두이노 CNC 쉴드 Amazon / Banggood / AliExpress
아두이노 우노
이 CNC 머신의 주 도구는 스티로폼을 쉽게 녹이거나 잘라 원하는 모양을 만들 수 있는 열선(hot wire)입니다. 머신을 어떻게 만들었고 모든 것이 어떻게 작동하는지 자세한 내용은 별도 튜토리얼을 참조하세요.
어쨌든 이 머신을 예로 들어 설명하겠습니다. 밀링 머신이든 레이저 커터든 모든 CNC 머신에 같은 작동 원리가 적용되기 때문입니다.
GRBL 설치 방법
먼저, GRBL을 아두이노에 설치/업로드하려면 아두이노 IDE가 필요합니다.
그런 다음 github.com에서 GRBL 펌웨어를 다운로드합니다.
.ZIP 파일로 다운로드한 후 다음 단계를 따릅니다:
grbl-master.zip 파일을 열고 파일 압축 해제
아두이노 IDE에서 스케치 → 라이브러리 포함 → .ZIP 라이브러리 추가… 선택
압축 해제된 "grbl-master" 폴더로 이동, 거기서 "grbl" 폴더를 선택하고 열기 클릭. 이제 GRBL이 아두이노 라이브러리로 추가됨.
파일 → 예제 → grbl → grblUpload 선택. 새 스케치가 열리며 이를 아두이노 보드에 업로드해야 합니다. 코드가 한 줄로 되어 있어 이상하게 보일 수 있지만 걱정하지 마세요, 모든 것이 라이브러리 내부에서 백그라운드로 처리됩니다. 아두이노 보드, COM 포트를 선택하고 업로드 버튼을 누르면 완료됩니다.
GRBL 설정
이 시점에서 우리 머신에 맞게 GRBL을 설정하거나 조정해야 합니다. 아두이노 IDE의 시리얼 모니터를 통해 할 수 있습니다. 시리얼 모니터를 열면 "Grbl 1.1h ['$' for help]" 같은 메시지가 나타납니다. 이 메시지가 안 보이면 보드레이트를 115200으로 변경했는지 확인하세요.
"$$"를 입력하면 명령어 목록이나 현재 설정이 나타나는데, 대략 다음과 같습니다:
$100=250.000 (x, step/mm)
$101=250.000 (y, step/mm)
$102=3200.000 (z, step/mm)
$110=500.000 (x max rate, mm/min)
$111=500.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
이 모든 명령어들은 우리 CNC 머신에 맞게 조정할 수 있거나 조정해야 합니다. 예를 들어 첫 번째 명령어 $100=250.000 (x, step/mm)으로 우리 머신의 mm당 스텝 수를 조정하거나, X축이 1mm 이동하기 위해 모터가 몇 스텝을 해야 하는지 지정할 수 있습니다.
하지만 이 설정들은 그대로 두는 것을 권장합니다. 컨트롤러 소프트웨어를 사용하여 우리 머신에 맞게 더 쉽게 조정하는 방법을 다음 섹션에서 설명하겠습니다.
GRBL 컨트롤러
GRBL 펌웨어를 설치했으니 이제 아두이노는 G-코드를 읽고 그에 따라 CNC 머신을 제어하는 법을 알게 되었습니다. 하지만 G-코드를 아두이노로 보내기 위해 어떤 인터페이스나 컨트롤러 소프트웨어가 필요합니다. 이 목적에는 오픈소스와 상용 프로그램이 많이 있습니다. 물론 오픈소스를 고수하며, 예제로 Universal G-code Sender(UGS)를 사용하겠습니다.
Universal G-code Sender 사용법
이 예제에서는 2.0 Platform 버전을 사용하겠습니다. 다운로드 후 압축을 풀고 "bin" 폴더로 가서 "ugsplatform" 실행 파일 중 하나를 엽니다. 이는 자바 프로그램이므로 실행하려면 먼저 자바 런타임 환경을 설치해야 합니다.
Universal G-code Sender를 열면 먼저 머신을 설정하거나 앞서 본 GRBL 매개변수들을 설정해야 합니다. 이를 위해 UGS 설정 마법사를 사용하는데, 아두이노 IDE의 시리얼 모니터로 수동 명령어를 입력하는 것보다 훨씬 편리합니다.
첫 단계는 보드레이트 선택(115200)과 아두이노가 연결된 포트 선택입니다. Universal G-code Sender가 아두이노와 연결되면 다음 단계에서 모터 이동 방향을 확인할 수 있습니다.
필요하면 마법사에서 방향을 반전시키거나, 아두이노 CNC 쉴드에서 모터 연결을 수동으로 뒤집을 수 있습니다.
다음 단계에서는 앞서 언급한 steps/mm 매개변수를 조정할 수 있습니다. 여기서는 설정 마법사가 계산하여 매개변수를 어떤 값으로 업데이트해야 할지 알려주므로 훨씬 이해하기 쉽습니다.
기본값은 250 steps/mm입니다. 즉, "x+" 이동 버튼을 클릭하면 모터가 250 스텝을 움직입니다. 모터의 물리적 스텝 수, 선택된 스테핑 해상도, 전달 방식에 따라 머신이 일정 거리를 이동합니다. 자로 머신이 실제로 이동한 거리를 측정하여 "Actual movement" 필드에 입력합니다. 이를 바탕으로 마법사가 steps/mm 매개변수를 어떤 값으로 변경해야 할지 계산해 줍니다.
제 경우 만든 DIY CNC 머신에서 3mm 이동했습니다. 이에 따라 마법사는 steps/mm 매개변수를 83으로 업데이트할 것을 제안했습니다.
이 값으로 업데이트하면 소프트웨어상 1mm가 실제 CNC 머신에서도 1mm가 됩니다.
UGS 콘솔에서 각 동작마다 실행된 명령어들을 볼 수 있습니다. steps/mm 매개변수 업데이트 시 UGS 프로그램이 아두이노, 즉 GRBL 펌웨어에 앞서 언급한 명령어를 보냈음을 알 수 있습니다. 기본값 $100=250.000 (x, step/mm)이 83 steps/mm로 업데이트되었습니다: $100=83.
다음 단계에서는 리미트 스위치를 활성화하고 제대로 작동하는지 테스트할 수 있습니다.
노멀리 오픈(Normally Open)인지 노멀리 클로즈드(Normally Closed) 연결인지에 따라 여기서 반전시킬 수도 있습니다.
여기서 주목할 점은 때때로 Z축 리미트 스위치를 비활성화해야 할 수 있다는 것입니다. 제 DIY CNC 폼 커팅 머신에서는 Z축 리미트 스위치가 필요 없어서 머신을 제대로 호밍하려면 비활성화해야 했습니다. 이렇게 하려면 아두이노 라이브러리 폴더(또는 Documents\Arduino\libraries)에 있는 config.h 파일을 편집해야 합니다.
여기서 호밍 사이클 관련 줄을 찾아 3축 CNC 머신 기본 설정을 주석 처리하고 2축 머신 설정을 주석 해제합니다. 변경사항이 적용되려면 파일을 저장하고 grblUpload 스케치를 아두이노 보드에 다시 업로드해야 합니다.
다음 단계에서는 CNC 머신 호밍을 활성화하거나 비활성화할 수 있습니다.
"Try homing" 버튼을 사용하면 머신이 리미트 엔드 스위치 쪽으로 이동을 시작합니다. 반대 방향으로 가면 쉽게 방향을 반전시킬 수 있습니다.
마지막으로 설정 마법사의 마지막 단계에서 CNC 머신의 소프트 리미트를 활성화할 수 있습니다.
소프트 리미트는 머신이 설정된 작업 영역을 넘어 이동하는 것을 방지합니다.
결론
GRBL 펌웨어와 아두이노 덕분에 DIY CNC 머신을 쉽게 설정하고 가동할 수 있습니다. 이 튜토리얼에서는 기초만 다뤘지만, 것들이 어떻게 작동하는지 이해하고 첫 CNC 머신을 가동시키는 데 충분했다고 생각합니다.
물론 GRBL은 정말 강력한 CNC 컨트롤러 펌웨어이므로 더 많은 설정과 기능이 있습니다. GRBL 문서에서 모든 것을 자세히 설명하니 github.com의 위키 페이지에서 확인할 수 있습니다.
Universal G-code Sender 외에도 많은 오픈소스 GRBL 컨트롤러 프로그램이 있습니다: GRBLweb(웹 브라우저), GrblPanel(Windows GUI), grblControl(Windows/Linux GUI), Easel(브라우저 기반) 등. 이것들을 탐색해 보고 자신에게 가장 잘 맞는 것을 찾아보세요.