3d 프린팅 중 큰 출력물을 출력할 때나 필라멘트 보빈에 남아있는 필라멘트가 적을 경우 출력 중 필라멘트를 교체해야 하는 시점이 온다. 이럴 때 유용하게 사용할 수 있는 필라멘트 센서가 있다.하지만 기본적인 멀린 펌웨어로는 활성화되어 있지 않기 때문에 펌웨어를 수정해야 하고 센서 장착 위치도 고려해야 하기 때문에 하루하루 미루고 그냥 눈으로 보고 Pause 눌러서 교체하고… 귀찮은 것이 문제다.. 한번은 회사 프린터에 주말에 출력을 걸어놓고 월요일에 와보니 출력초기에 필라멘트가 보빈으로 엉켜 끊기는 바람에 하늘에 이틀동안 진흙탕 싸움을 하고 있는 프린터를 목격하고.. 더 이상 미루면 안 된다고 생각했다.
센서라는 것은 대단한 것이 아니다. 신기버스에 찾아보면 마이크로스위치와 출력물로 만든 필라멘트 센서가 넓게 흩어져 있어 실제로 마이크로스위치 끝의 롤러를 통해 충분히 필라멘트 감지가 가능하다. 전에 한번 만들어봤는데 그냥 귀찮아서 기성품을 구입해서 썼다. 몇 천원 정도 들여서 깨끗한 사출물로 쓰니까 차라리 낫겠다는 생각도 들어..

Flsun Cube에 사용된 보드는 MKS Gen1 v1.0 보드, 아두이노 메가+램스 보드 세트보다 확실히 보드도 심플하고 커넥터 처리도 잘 되어 있다. 앞으로 집에 있는 프린터 보드도 MKS 보드로 모두 바꿔야 한다.구입한 필라멘트 센서는 흰색 사출물로 돼 있고 선은 3개가 나와 있다. 선단은 MKS 보드엔드스톱 커넥터 소켓에 딱 맞게 준비되어 있으며 선의 스펙은 아래와 같다.. (적색, 흑색이 전원이라는 규칙따윈 지키지 않는다;;) 5V : 흑색GND : 녹색신호 : 적색 아마도 중국산이고 제조도 중구 남방이어서 저색이 옳다고 보장할 수 없고, 커넥터 모양을 보고 순서를 보는 게 맞다.5v가 공급되는 것은 필러가 있을 때 센서에서 파란색 LED가 켜지도록 회로가 추가됐기 때문이다.
엔드스톱 센서선이 하나씩 꼽히고 있는 자리는 MIN위치, 즉 각 축의 시작위치 엔드스톱이며 그 옆에 비어있는 곳은 MAX위치 엔드스톱 소켓이지만 MAX위치는 잘 사용하지 않아 비어있다.이 중 맨 아래 Z_MAX 측을 필라멘트 센서 검지 목적으로 사용하는 것으로 한다. 그냥 센서 커넥터를 꽂으면 돼. 전술한 바와 같이 MKS 보드는 이미 규격화(?)된 커넥터가 준비되어 있어 편하다.이제 펌웨어를 손질할 차례다.적용된 펌웨어는 Marlin 1.1.2이지만 이후 버전도 크게 다르지 않을 것이다.
<먼저 configuration.h의 내용을 수정한다.>
필라멘트 런아웃 센서를 사용하기 위해서는 FILAMENT_RUNOUT_SENSOR의 앞 주석을 지운다.그 후 센서가 NO(Normal Open) 타입이므로 true로 바꾼다. Normal Open이란 스위치가 눌리지 않은 기본 상태가 접점이 열려(끊어져) 있는 상태를 말한다.

인쇄 정지 시 노즐을 파킹 위치로 이동하기 위해 NOZZLE_PARK_FEATURE도 주석을 끄고 활성한다.
<두 번째로 Configuration_adv.h 파일을 수정한다>

여기서도 파킹 위치 및 상세 옵션을 제어하지만 사용 중인 펌웨어로 인해 이곳이 활성화됐을 수도 있고 아닐 수도 있다. ADVANCED_PAUSE_FEATURE를 활성화하면 프린팅 중 PAUSE_PRINT 메뉴에서 일시 정지할 경우 파킹 위치로 가기 때문에 편리한 옵션이다. 파킹 위치로 가지 않으면 정지 위치에 머물며 출력물이 노즐 열로 무너져 내리는 것을 경험하게 된다.
<센서를 접속할 핀을 찾아 정의하다 >제일 먼저 configuration.h 파일을 열고 #defineMOTHERBOARD를 찾는다.

MOTHERBOARD를 정의한 이름이 BOARD_RAMPS_14_EFB라는 의미인데 pins.h라는 파일을 열고 RAMPS_14_EFB를 찾는다. (앞의 BOARD_는 생략됨)
RAMPS_14_EFB는 다시 pins_RAMPS.h라는 파일로 정의됨을 알 수 있다.드디어 실제로 핀을 정의하는 진짜 파일을 찾았으니 열어보자, pins_RAMPS.h라는 파일을 연다.

대부분의 프린터는 각 축의 0점 위치에 MIN 엔드 스톱을 검출할 뿐이다. 그래서 MAX는 거의 비어 있다.거기서 노는 Z_MAX_PIN을 사용해 보자, 용도 변경을 위해 Z_MAX_PIN 정의 부분은 주석 처리하고 지운다.조금 아래쪽을 보면 FIL_RUNOUT_PIN에 대한 정의가 나오는데 여기에 정의된 원래 핀 번호는 지우고 아까 Z_MAX_PIN으로 정의되었던 번호(여기서는 19)로 바꾼다.이에 앞서 MKS 보드에 Z_MAX 커넥터에 센서를 이미 꽂았기 때문에 사용 준비가 완료됐다.아두이노 IDE에 멀린 펌웨어 프로젝트를 업로드하고 컴파일 후 업로드한다.필라멘트와 엑스트루더 사이에 센서를 통과하도록 위치시키면 된다.기성품 센서는 보는 것처럼 필라멘트가 있으면 파란색 LED가 켜져 감지 중임을 알려준다.이제 편하게 작업을 걸어두었다가 삐삐 소리가 나면 가서 교체하도록 하자…