본문 바로가기

▶3D 프린팅/삼디강좌

[김성민의 삼디 Life] 원격제어 고급 3D 프린터를 지향하다

[김성민의 삼디 Life - 저렴한 고급 업그레이드 / 원격제어를 완성하다] 



Anet A8 이라는 중국산 저가 3D프린터를 그 말도 안되는 가격에 혹해서 구입을 한지 이제 두달이 조금 지났다. 

그 기간동안에 안정된 완성형 프린터를 구입하였더만 알 수 없었을 정말 많은 것들을 배우게 되었던 것 같다. 

다른 말로는 그 만큼 피곤했었다는 뜻이기도 하다. 




동호회카페에 보면 3D 를 취미삼아 구입하려고 하는 사람 중에 프린터를 추천해달라고 하는 사람의 질문글이 많이 올라오고 있다. 

만약 피규어나 출력물을 통해 무언가 하려고 하는 사람이라면 A8 은 비추라고 할 수 있겠다.  부품의 편차가 큰 이유로 인해 원하는 출력물을 얻기까지 수 많은 시행착오를 해야하기 때문이다. 물론 뽑기 운이 좋은 사람도 있겠지만 내게 그런 운이 올것을 확신하는 금손이 아니라면 삼가해야할 제품이라고 본다. 

그러나 3D 프린터의 작동원리를 알고 싶거나 형편없던 출력물이 조금씩 나아지는 경험을 하는데 호기심과 인내를 가지고 덤벼들려고 하는 사람에게는 A8 만큼 배우기 좋은 프린터도 없을 것이라는 생각이 든다. 그 이유는 말도 안되는 저렴한 가격 때문에 그 만큼 전 세계적으로 사용자가 많고, 문제가 생겼을 때나 업그레이드를 하고 싶을 때 접근할 수 있는 정보가 정말 많다는 점 때문이다. 

위에 올려놓은 지금 현재 내 프린터의 사진은 처음 구매했을 때의 A8 하고는 전혀 다른 프린터로 보일 것이다. 하지만 3D 프린터의 핵심이라고 할 수 있는 히팅베드와 모터 및 익스트루더, Z축 스크류, 축별 연마봉, LCD 패널등은 A8 원래 있던 그대로를 사용하고 있다.  나는 요즘 만약 그 부품들만 따로 구입을 한다고 하면 내가 원하는 크기의 3D 프린터를 만드는 것도 가능하겠다는 생각을 갖는데 그런 말을 할 정도로 3D 프린터의 원리에 대해 알 수 있도록 나를 고생시킨 프린터가 A8 이다. 


어쨋든, 오늘 이야기는 최근 진행한 업그레이드 몇가지에 대한 내용이다.

가능하면 저가 프린터라는 정체성을 유지하기 위해서 

비용은 최대한 저렴한 것으로 구입하여 장착했다. 


1. 옥토프린터 + 릴레이  => 프린터 전원 On/Off
                                        출력이 마치면 프린터 전원 자동 차단

2. 옥토프린터 + 모스펫 + 리본 led => 어두운 프린터에 빛을 
                                        Timelapse 영상시에 필요

3. 아두이노 메가 + Ramps 1.4 + tmc2100 => 소음 진동 감소
                                        프린터를 베란다에서 방으로 옮기다

4. 보드 케이스 + 모스펫 + 쿨링팬 => 열과 화재로 부터 보험

5. 기존 A8 lcd 를 Ramps 보드에 연결 => 돈 아끼려다 쌩고생



본격적으로 이야기를 시작하기 전에 영상한편 준비했다. 






1. 출력 끝나면 프린터 전원 자동 OFF

 (옥토프린터 + 릴레이)


옥토프린터는 일전에 포스팅에서 한번 소개했던 녀석을 사용하였다. (http://bookledge.tistory.com/856)


옥토프린터라고 하는 것은 라즈베리파이나 오렌지 파이에다 설치하여 무선으로 프린터를 제어해줄 수 있는 역할의 호스트프로그램이라고 보면 될 것이다. 

기본이 라즈베리파이라고 하는 메이커들이 많이 사용하는 작은 컴퓨터를 이용하기 때문에 이를 이용해서 단지 프린터를 제어하는 것 뿐만 아니라 다양한 활용을 할 수가 있게 된다. 그것은 GPIO 핀이라고 하는 외부의 신호를 받거나 내보내는 역할의 핀이 보드 주변에 주렁주렁 달려 있기 때문이다. 



별것 아닌것 처럼 보이는 저기 나온 핀들이 알고보면 상상하는 모든 것을 가능케 만들어주는 마법과도 같은 단자였다. 

어렸을 때 초등학교에선가 꼬마전구 실험이라고 해서 버튼을 누르면 불이 들어오는걸 했었는데 GPIO 핀에 선을 연결해놓으면 물리적 버튼을 누르지 않고도 명령어 만으로 불이 들어 올 수 있게 만들 수 있다는 걸 알게 되었다. 


그러면 간단하지 않은가. 그냥 GPIO 에 프린터 전원을 연결시켜놓고 라즈베리파이로 신호를 주면 프린터 전원이 켜지는 것을 만들면 되는 것이다. 그런데, 조금더 알아보니 라즈베리파이가 낼 수 있는 전기는 얼마되지 않기 때문에 릴레이라는 것을 써서 연결해주면 된다고 한다.


그래서 구입했다. 


https://ko.aliexpress.com/item/1-Channel-Relay-Module-Interface-Board-Shield-For-Arduino-5V-Low-Level-Trigger-One-PIC-AVR


가격은 우리돈으로 700원 정도에 무료배송.. 두달 정도까지 기다릴 수 있는 마음이 있다면 비용은 거의 무시할정도이다. 


그리고 설치는 인터넷에 존재하는 무수한 고수님들이 이미 방법을 다 올려놓고 있어서 그대로 따라만 하면 되었다. 



간략히 보자면 저기 전구가 있는 자리에 프린터의 플러스와 마이너스를 연결하면 끝나는 것이다. 

그래서 아래 사진처럼 연결을 완료했다. ^^v



프린터 조립하고 가동 15분만에 파워서플라이가 운명하셨기 때문에 smps 를 별도로 구입해 달아놓았다. 그래서 싱기버스에 올라와 있는 A8 파워서플라이 개조 커버는 맞지를 안아서 내가 쓰는 용도에 맞는 위의 디자인을 출력해서 장착했다. 

그리고 그 아래에 있는 것이 릴레이와 케이스이다.  어디다 묶어둬야 하나 고민을 했는데 역시 싱기버스에는 없는것 빼고 다 있는 것 같다. 저것도 그냥 받아 출력해서 장착했다. 


파워 커버 : https://www.thingiverse.com/thing:40377

릴레이 서포터 : https://www.thingiverse.com/thing:2736682


이것들 외에도 수많은 디자인이 있으니 자신의 환경에 맞춰 출력해 장착하면 될 것이다. 



하드웨어 장착이 마쳤으면 이제 소프트웨어에서 제어만 해주면 되는데

그것도 손쉽게 할 수 있도록 누군가가 다 만들어 놨다. 

옥토프린터에는 여러가지 다양한 플러그인이 제공되고 있는데 그중에 라즈베리파이의 GPIO 핀을 제어하는 플러그인이 여러종류가 있었다. 이것저것 사용해봤는데, PSU Control 이라는 것이 가장 사용이 편리하고 UI 도 세련되다는 느낌을 받아서 그것으로 최종 결정하였다. 


옥토프린터의 PSU control 을 설치하고 나면 아래와 같은 설정창을 띄울 수 있는데 거기에 선택을 다음과 같이 하고 자신이 연결한 Gpio 핀번호만 입력해 놓으면 끝이 난다. 



그러고 나면 옥토프린터 상단바에 번개 모양의 전원 버튼이 생성되어 프린터를 쉽게 끄고 켤 수 있게 된다. 



물론 물리스위치를 장착을 할까도 생각했는데, 내가 쓰는 환경에서는 저렇게 소프트웨어적으로 구동을 해도 상관없겠다는 판단이 들었다. 왜냐하면 전원을 켜야할 때는 프린터 출력을 하고자 할 때이고 그때는 Gcode 생성을 한다던가 해서 무조건 컴퓨터를 앞에 놓고 진행할 경우이기 때문이다. 그런 환경에서는 단순히 옥토프린터를 이용해 전원을 제어하는 것이 뭔가 더 스마트해 보인다. (순전히 내 개인적 취향이다)

아마도 문제가 발생하는 순간은 네트워크가 안되는 상황에서일 것이다. 그럴때는 SD 카드로 출력을 하고자 하더라도 옥토프린터와 접속이 안되고 그말은 곧 옥토프린터를 이용한 전원 켜고 끔을 못한다는 뜻이다. 이 부분에 대해서는 아직 별다른 해결책을 내지 못하고 있다. 네트워크가 끊어지는 일이 없길 바랄 뿐이다. 혹시 이 글을 읽고 계신 분 중에 좋은 아이디어가 있으신 분은 글을 남겨주시길 바랍니다.


내가 전원 on/off 기능을 이용해서 궁극적으로 원하는 것은 프린터를 걸어놓고 출력을 했을 때, 출력을 마치고 나면 알아서 전원을 끄게 만드는 것이다. 어떻게 가능하게 할까? 

인터넷에는 일단 릴레이 연결만 되어 있다면 라즈베리파이의 아주 복잡한 프로그래밍을 통해 (물론 내가 보기에 그렇다는 말이다. 실은 그리 어려운게 아닐 수도 있다) 프린터 완료후 전원 차단을 할 수 있는 방법이 나와 있다. 그런데 아까 소개한 PSU control 플러그인에서는 그런 걱정 할 필요 없이 이미 기능을 가지고 있었다. 




이렇게 안하더라도 Gcode 의 Start / end code 로 M80, M81 코드를 넣어주면 될 것 같기도 하다.  그러나 제공하는 기능이 있어 간단히 체크해주고 숫자만 넣어주면 되니 이 방법을 택하였다. 


그리고 결과는 영상으로 공유했던 바와 같이 원격으로 전원을 켜고 끌 수 있게 되었다. 



2. 어두울 때 불을 밝히는 LED 장착

 (옥토프린터 + 모스펫 + 리본타입 LED)


옥토프린터에 장착한 카메라를 통해서 원격으로 출력상황 보고자 할 때 프린터가 있는 그 공간이 밝아야만 된다.  프린터 한대를 보기 위해 현광등을 다 켜놓고 다닐 수 없기 때문에 프린터만을 위한 불빛이 필요했었다.  그래서 그전까지는 외장배터리에 usb led 를 장착해서 사진처럼 놓고 다녔다. 



그러나 매번 외장 배터리를 충전해주는 것도 그렇고 해서 이것도 아까전의 전원과 연결해서 출력시에만 불이 들어오고 출력이 끝나면 자동으로 불빛을 끌 수 있도록 구현을 하였다. 


내가 구입한 재료는 2가지이다. 



가격은 두개 합해서 1500원 정도


내가 구입한 링크는 다음과 같다.  그러나 잘 찾아보면 더 낮은 가격도 존재할 것이다. 


led 스트립 : https://ko.aliexpress.com/item/NEW-1M-2M-3M-5M-LED-Strip-Light-SMD2835-RGB-TV-Led-12V-DC-pull-LED/32827758280.html

모스펫 : https://ko.aliexpress.com/item/1pcs-0-24V-Top-Mosfet-Button-IRF520-MOS-Driver-Module-For-Arduino-MCU-ARM-Raspberry-pi/32787568247.html


두번째 모스펫은 내가 왜 샀는지 기억에 잘 나진 않는다. 프린터 관련한 영상들을 보다가 문득 사놓으면 어딘가 쓸 것 같다는 생각이 들었던 것으로 여겨진다. 이름이 모스펫이어서 히팅베드 작업을 할 때 흔히 연결하는 것과 같은 이름인데 그것보다 용량은 작은 데에 쓰이는 것 같다.  기능은 릴레이와 다를게 없어 보인다. 릴레이가 교류와 직류 모두 사용가능하다고 하면 이 녀석은 내 예상에는 직류의 낮은 전류에만 사용한게 아닐까 싶다.  


연결 방법은 인터넷에 상존하시는 고수님들의 방법을 참고하였다. 



저 연결도의 모터자리에 LED 만 플러스 마이너스 맞춰 연결해주면 되겠다 싶었다.  모터파워서플라이라고 써 있는 연결은 12V 의 smps 출력선을 그대로 쓰면 되는 것이었다. 



라즈베리파이의 GPIO 의 vdd 는 3.3V 에 연결하고 signal 은 Gpio 27 에 연결을 하였다. 


사용한 LED 스트립은 그야말로 최저가 묻지마 제품을 구입해 연결했다. 가격은 1m 만 사는데 $0.84 로 900원 정도였다. 

처음에 led 를 받았을 때 12V 를 연결했는데 불이 들어오지 않는 불량이었다.  혹시나 해서 내가 멀티메터로 연결지점에 전압을 측정해보았는데 12V 가 인가 되어 있는데도 led 는 아주 조금의 빛도 내지 않는 상태였던 것이다. 




그런데 알고 보니 전원 플러스 마이너스를 반대로 연결하니 불이 들어오는 것이었다. 

내가 구입한 led 끝단에는 빨간색과 검은색으로 10cm 가량의 전선이 납땜이 되어 있었는데 빨간색을 마이너스에 검은색을 플러스에 연결이 되어 있었기 때문이었다.  하여튼 별 경험을 다하게 되는 것 같다.  

중국에서 저가에 물건을 구입하게 되면 이런 상황을 염두해 두는게 좋겠다. 


하드웨어는 이렇게 대략 하였고 소프트웨어에서 설정만 해두면 되는데 딱 2가지만 하면 되었다. 


1) 27번 gpio out 으로 지정

 ; 아두이노나 라즈베리파이에 기기와 연결할 수 있게 나온 핀들을 Gpio 핀이라고 하였는데, 이 핀들은 입력으로 쓰일 수도 있고 출력으로 쓰일 수도 있다. 그래서 어떤 것으로 쓰일지 사전에 설정을 해두는 작업이 필요한데,  이걸 안하고 해보니 제대로 작동이 안되었다.  이미 지나갔지만 위에 power 원격제어를 위한 장치가 17번 핀을 사용했는데 그것도 이 작업을 진행했다. 

octoprint 를 설치했다면 이미 ssh 설정은 되어 있을 것으로 알고 설명을 이어가겠다. 

먼저 옥토프린터가 설치된 라즈베리파이나 오렌지파이에 터미널이나 putty 를 이용해 연결한다. 

그리고 다음의 명령어를 쳐서 그림에 나온 것처럼 한줄만 추가해주면 된다. 


sudo nano /etc/init.d/octoprint



gpio export 27 out


이게 라즈베리파이에서 27번의 활용을 설정하는 것이라서 꼭 octoprint 파일에 들어가야만 하는지는 의문이다. 그러나 그렇게 해두면 문제 없이 되니 자세한 것은 다른 고수님들께 맡기도록 하겠다. 



2) 옥토프린터에 기능 탑재


옥토프린터에 LED 를 켜고 끄는 스위치를 넣도록 한다. 

이를 위한 여러가지 방법이 있다. 플러그인도 제공하는게 있기도 하지만 플러그인을 통하지 않고 좀더 접근이 좋은 방법을 찾다가 나는 이 방법을 선택했다. 


역시 터미널로 라즈베리파이를 접속한 상태에 다음 명령어를 입력한다.


sudo nano ~/.octoprint/config.yaml


그러고 나면 나오는 내용에 아래 내용을 찾아서 추가해주면 된다. 



system:

  actions:

  - action: ledon

    command: gpio -g write 27 1

    name: LED ON

  - action: ledoff

    command: gpio -g write 27 0

    name: LED OFF



이렇게 두가지를 해주고 나면 끝이다.  (라즈베리파이를 껏다가 켜자)

이제 옥토프린터 화면 상단바에 전원 버튼에는 위에 설정한 메뉴가 나오고 그것을 누르면 LED 를 켜고 끌 수 있게 된다. 





3. 층간소음 발생으로 부터 자유롭자

 (tmc2100 적용)


tmc2100 을 적용하면 소음 진동이 엄청나게 줄어든 다는 것은 이미 많이 알려진 사실이다. 

하지만 베란다에 놓고 출력속도를 30정도로 두면 거의 신경이 쓰이지 않을 정도의 소리를 내주고 있어서 그렇게 사용할까도 계속 생각하고 있었다. 멀쩡한 녀석을 바꿔가면서 돈들이고 그러고 싶지는 않은 마음이었다. 그리고 현재 TL-smoother 도 장착했고 케이스도 A8 기본 보드에 맞춰 어렵게 출력해 장착해놓은 상태이니 그 귀찮음을 무릅쓰고 바꾸고 싶지는 않았다. 하지만 몇가지 상황이 벌어지면서 점점 tmc2100 으로 바꿔야겠다는 지름신으로 나는 이끌리게 되었다. 

계기가 된 것은 영하의 가장 추운 날씨가 연이어 계속 되면서 베란다에 내놓은 프린터가 마를린에 설정된 최저 온도 이하로 떨어지면서 출력 자체가 진행이 안되고 오류메시지를 띄우는 상황 때문이었다. 물론 마를린의 Min 작동 온도 조건을 더 낮춰도 보았지만, 추워도 너무 추운 날씨에 출력이 되다보니 PLA 인데도 불구하고 수축이 일어나는 것은 어쩔 수 없었다. 그리고 베드 온도조건을 유지하기 위해서 베드를 계속 전기 써가면서 덥혀야 하는 것도 뭔가 좋아보이지 않았던 것이다. 


그리고 tmc2100 으로 바꾸면 출력 결과가 더 좋아지지 않을까? 하는 기대감도 있었고, 방안으로 프린터를 들고 들어올 수 있겠다라는 생각까지 하였다.  하여튼 지를려고 하니깐 이것저것 다 정당화를 하는 것이었겠다. 



결국 구입하였다. 의외로 배송도 빨랐다. 



가격은 둘 합해서  약 3만원 정도 들었다. 

(TMC2100 으로 모터드라이버를 교체하려면 A8 기본보드는 일체형이라서 교체가 안된다. 따라서 ramps 1.4 와 같은 모터드라이버를 교체해 장착할 수 있는 보드를 구입하여야 하는데 가장 무난한 것이 ramps1.4 이지 이게 가장 좋은 것은 아닌 것 같다)

기존에 있던 A8 기본 보드는 얼마전 A8 조립하고 전원 넣자 보드가 나가 버렸다고 하시는 분에게 TL-smoother 와 그동안 제작했던 케이스와 함께 중고판매를 했기에 실제로는 1만정도 비용이 들었다고 생각된다. 


혹시 궁금하신 분도 계실까 하여 링크를 남기지만 수시로 가격이 변하는 인터넷 세상에서 여기 남기는 곳보다 더 좋은 조건의 물건이 올라와 있을 수 있다는 점 기억해주길 바란다. 그리고 앞서서 led strip 과 같은 경우처럼 무조건 싼게 좋은 건 아닐 수 있다는 것도 함께 말이다. 


아두이노메가 + ramps1.4 + A4988모터드라이버 세트
 ; https://ko.aliexpress.com/item/1pcs-Mega-2560-R3-for-arduino-1pcs-RAMPS-1-4-Controller-5pcs-A4988-Stepper-Driver-Module/1721792680.html

TMC2100 
 ; 
https://ko.aliexpress.com/item/1pc-3D-Printer-Parts-MKS-TMC2100-V1-3-Stepstick-Stepper-Motor-Driver-Module-with-Heat-Sink/32825315441.html






TMC2100 을 떠나서 아두이노 메가와 ramps1.4 로 보드를 변경하게 되면 기존에는 신경쓰지 않아야 할 것들을 고민하게 된다. 그것은 바로 모터드라이버의 전류 설정문제였다. 

A4988 모터드라이버는 그다지 고민되지 않지만

TMC2100 은 문제였다. 저마다 후기를 읽어보면 호불호가 있었다. 

장착하면 무조건 소음이 말도안되게 없어진다는 이야기는 같으나 부작용으로 자꾸만 탈조가 나고 모터드라이버와 모터가 엄청 뜨겁게 달궈진다는 이야기가 나왔다. 이 문제의 원인이자 해결책은 모터드라이버의 폰텐시오메터를 조정하여 모터에 공급되는 전류값을 바꿔줘야 한다는 내용이었다. 

나는 한번에 짜잔 하면서 완벽하게 작동하길 바랬기 때문에 이 부분에 대한 글들을 가지고 미리 공부를 했다. 

근데 전기 개념을 V = IR 말고 아는게 제대로 없기 때문인지 이해하기가 어려웠다. 그리고 Vref 설정에 대한 기준과 방법도 글마다 다른 것처럼 느껴지고 해서 혼란스럽고 했는데 여기선 내가 이해한 바를 통해 간략히 어떻게 설정했는지를 공유하도록 하겠다. 


reprap 이나 Polulu 에 올라와 있는 전압 조절방법을 제외하고

다음 2개의 글을 가장 많이 참조하였다. 


http://cafe.naver.com/makerfac/33539

http://cafe.naver.com/3axis/5222


두 글을 읽어보면 헷갈리기 시작한다. 어떤 글에서는 모터 스펙의 전류값을 Imax 로 이야기하는가 하면 다른 글에서는 Irms 로 보고 정리를 하고 있다.  나는 전기나 모터에 대해서는 모르기 때문에 순전히 비교분석과 논리적 판단에 의해서만 살펴보았는데 누가 옳은지 모를 정도로 헷갈리는 내용이었다. 


결론은 내가 스텝모터의 작동방식에 대해서 이해를 못하고 있었기 때문에 두 글이 서로 다르게 보였던 것이다. 적어도 지금은 그렇게 이해하고 보니 두 분의 내용이 다르게 보이지만 다른 내용은 아니었다고 정리를 했다. 


요는 스텝모터의 전류값이 Full step 값이 70%값이기 때문에 Imax 는 설정된 전류치를 0.7로 나눠야 한다는 부분에서 벌어졌다. 

A8 의 모터 전류값은 1.68A 이기 때문에 0.7을 나누면 2.4A 가 나와서 뭔가 딱 떨어지는 값이니깐 이게 맞는 것 같다. 그러나 생각해보면 2.4A 를 기준으로 Vref 값을 설정하게 되면 엄청 큰 값을 내게 되는 결과가 나온다. 혹시 내가 잘못알아서 너무 높은 전류를 가해주게 된다면 곧바로 모터 과부하로 가게 될 것임은 불보듯 뻔하였다. 


외국 자료도 한참 뒤지면서 보다보니 뾰족한 답을 못얻다가 'Full Step' 이라고 하는 조건이 어느 순간 눈에 들어왔다. 

기본적으로 A4988 이든 TMC2100 이든 우리가 사용할 때는 Full step 이 아니라 16분주의 micro step 을 사용한다.  Full step 때는 1/1.414 의 값으로 70% 가 rms 인 것은 분명한데 16분주가 되어 micro step 이 되었을 때는 어떻다라고 하는 명시는 없었다. 그리고 모터드라이버 데이터시트에 보면 Full step 에서는 71% 전류를 내게 되지만 다른 분주에서는 0% 에서 100%까지 다 쓰고 있었다. 그렇다면 모터에 명시된 1.68A 를 micro step 에서는 I max 로 보고 계산하는게 맞는게 아닐까? 

여기까지 생각이 미치니깐 아까전의 두 글이 같은 것을 말한다고 보이기 시작했고 이렇게 마음을 정하고 다음과 같이 Vref 값을 설정하였다. 


이 값은 각 모터 드라이버의 Vref 값에다가 추가적으로 온도와 토크에 가장 좋다고 하는 70% 값을 다시 얻은 것이다. 


Z / E : A4988 Vref = 0.47V

X / Y : TMC2100 Vref = 1.176V


위의 값으로 모터드라이버의 포텐시오미터를 조절하고 셋팅을 마친후 떨리는 마음으로 출력에 들어갔다. 

프린터가 미친것 아니야? 싶을 정도로 조용하게 움직였다. 

놀라왔고 그래서 영상을 찍어 게시판에 글도 올리고 했다. 

그런데 몇차례 출력을 하다보니 알게 된 사실이 하나가 생겼다.

모터드라이버는 방열판과 팬을 달아 식혀 주어서 안심하고 있었는데

모터를 만져보니 손을 데일정도로 엄청나게 끓어오르고 있었던 것이다. 

이러다가 문제가 생기겠다 싶을 정도였다. 


어떻게 해야할까 고민을 했는데 다른 분들처럼 모터에다가도 방열판 붙이고 팬까지 달아야 하나 생각을 하다가 동호회 카페에서 만난 고수님 한분의 응원에 힘입어 tmc2100 의 Vref 값을 낮춰보기로 하였다. 


이미 70%라는  충분히 낮은 값으로 셋팅했다고 생각했기 때문에 더 낮췄다가는 그 무시무시한 탈조가 발생할지 모른다는 생각이 들어서 주저하고 있었는데... 출력시마다 라면물 끓일 정도까지 뜨거워지는 모터에 더이상 놔두면 안되겠다 싶어 강행하게 되었다. 


최종적으로 내가 설정한 값은 다음과 같다. 


X / Y : TMC2100 Vref = 0.8 V


모터에 끓어오르던 열은 이제 만지면 미지근할 정도로 바뀌었다. 물론 장시간 출력물을 걸으면 손대면 부담스러울 정도가 되긴 하지만 이전처럼 손이 데일 정도까지는 아니었다. 


그리고, 탈조.  ㅠㅠ

탈조가 발생했다.  평소에 load 가 많이 가해진다고 느껴진 Y 축 방향의 탈조가 발생했다. 80mm/s 출력에 120mm/s 이동속도로 했었는데 너무 과했다 싶었다. 아마 120mm/s 속도에서 이동시 가속도를 버티지 못하고 탈조한게 아닐까 추측이 되었다. 

그래서 60mm/s 출력에 80mm/s 이동속도로 바꾸었는데 변경한지 약 1주 가량 동안 한번도 탈조가 없었다.  부디 이대로 쭈욱 가기를...


근데, 이렇게 낮은 Vref 값에도 탈조가 나지 않은 것은 X 축과 Y 축에 부하가 많이 가지 않게 하드웨어적으로 조정을 해놓은 결과가 아닐까 생각한다.  단순하게 벨트장력이 조금 과하게 쎄진다고만 해도 모터에 부하가 많이 걸려서 탈조가 일어날 가능성이 높아질 것이다. 


여기에 나의 Vref 를 공유하지만 참고를 위해 제시할 뿐이고 실제로는 자신의 프린터의 상태에 따라 맞는 값으로 조정할 필요가 있다고 생각된다. 



4. 깔끔한 바디를 위해 케이스를 장착


이 부분은 AM8 사용자를 위한 보드 장착 출력물에 대한 정보 공유 차원에서 글을 써본다. 


기존에 AM8 로 업그레이드를 하면서 나와 있는 메뉴얼대로 파트 출력을 했는데 거기에 있던 보드 거치대는 다음과 같았다. 



왼쪽에 있는 smps 거치대는 조립 후 15분 출력하다가 운명하신 파워에 맞는 거라서 거의 써보지 못한 것이었고 오른쪽의 보드 거치대는 그나마 오래 사용해왔다. 그런데 형태가 오픈형이고 생뚱맞은 자리에 위치한 쿨링팬 장착 부위는 사용하기 꺼려졌다.  쿨링팬 없이도 열이 나는 것 같지도 않고 해서 한동안 써어도가 그럴듯한 케이스 형태로 중간에 바꾸었고, 이번에 tmc2100 모터보드를 장착하면서 쿨링까지 생각을 해야했기에 싹 바꾸게 되었다. 



ramps 1.4 보드와 mosfet 2 개가 장착이 되는 케이스이고, 덮개는 tmc2100 이 장착된 위치에 바람을 불어주기 위해 팬을 장착할 수 있는 놈으로 구했다. 그리고 팬 뒤에 그릴은 80mm 팬으로 검색을 하니 나온것 중에 제일 마음에 드는 것으로 하였다. 내가 선택한 팬 덮개는 볼트가 없이도 팬에 뚫려 있는 구멍에 끼워 넣으면 되는 방식이어서 설치가 간편한게 특징이다. 


보드 케이스 (덮개제외) : https://www.thingiverse.com/thing:2330654 

팬장착가능 케이스 덮개 : https://www.thingiverse.com/thing:2513692

80mm 팬 그릴 (볼트 없어도 되는것) : https://www.thingiverse.com/thing:2714057



아직 보드 케이스가 없는 AM8 사용자라면 이용해보면 좋을 것 같아 추천한다.  참고로 보드케이스는 ramps 보드만이 아니라 기존 A8 보드 용도 있으니 자신의 상황에 맞춰 출력하면 되겠다. 

한가지 알아둘 것은 케이스의 길이가 210mm 라는 아주 큰 크기이기 때문에 베드 센터링을 먼저 해두어야만 출력물이 베드 밖으로  튀어나가지 않을 수 있다. 그리고 skirt 나 Brim을 넣게 되면 220mm 를 넘게 되기 때문에 슬라이서 프로그램에서 gcode 생성이 안되는 걸로 나올 것이다. 무조건 그 기능들을 꺼놓고 하면 된다. 

어딘가 선이 너덜너덜 한게 싫어서 나름 정성껏 선정리까지 하니 이제는 마치 하나의 제품처럼 느껴진다. 제일 좋은 것은 프린터를 코드만 뽑아서 어디든 들고 다닐 수 있는 형태가 되었다는 것이다. 



5. 돈아끼려다 삽질한 5 button LCD 장착기


글도 너무 길어졌고, 이 부분은 나와 같은 삽질을 하실 분은 없으실 거라는 생각에 ramps 보드 업그레이드 분들을 위한 주의사항 공유의미에서 간략히 적어본다. 


A8 에는 5 button 으로 메뉴를 선택해서 출력을 진행시킬 수 있는 2004LCD 라고 하는 Lcd 패널이 붙어 있다. (아마도 2004라는 이름은 20개의 글자를 4줄 표현할 수 있는 거라고 해서 붙여진듯 하다)


보드에 이녀석과 연결하기 위한 연결포트가 나와 있어서 그냥 꼽아주기만 하면 작동이 되게 되어 있다. (A8 의 장점 중 하나는 어디하나 납땜을 하거나 해주는 것 없이 그저 레고조립하듯 꼽아만 주면 연결이 되기 때문에 전기에 대해 잘 모르는 나와 같은 문외한도 조립을 할 수 있다는 점이었다.)  그런데 가만히 살펴보니 ramps 보드에는 lcd 를 어디다 연결해야 할지 좀체 알 수가 없게 되어 있었다.  그래서 찾아보다 보니 이런게 있었다. 2004 lcd 를 검색해보니 다음 사진과 같이 A8 에 있던 5 button 과는 다르게 다이얼로 돌리는 녀석과 그 옆에 뭔가 끼울 수 있는 것이 있었다. 



가격이 만원 내외로 그리 비싼 편은 아닌것 같았다. 다이얼로 돌리니깐 엄청나게 편할 것 같았다. 그런데 내 눈에 띄인것이 그것과 함께 보내주는 어댑터였다. 사진과 같이 ramps board 에 꼽고 lcd 와 연결하면 되는 것 같았다. 



나는 아주 영리한생각이 하나 들었다. 저기 어댑터만 있으면 기존 5 button 2004 Lcd 를 연결해 쓸 수 있지 않겠는가. 물론 다이얼 방식이 편하겠지만 octoprint 를 사용하기 때문에 Lcd 조작이 그리 많지는 않은 편이고 기능향상이 아닌 단순 편의를 위해 멀쩡한 것을 놔두고 바꾸고 싶지는 않은 마음에서 어댑터만 따로 샀다. 가격은 대략 700원 정도.. 우와 싸다.



이렇게 돈 절약해가면서 최적의 것을 선택하는 나 자신의 영리함에 뿌듯해하고 있었다. 3주 정도가 지나서 몇일전 도착한 어댑터를 끼우고 lcd 를 장착했는데 오른쪽 혹은 왼쪽 어디를 꼽아도 안된다. 당황스러웠지만 뭔가 설정을 해줘야 되는 건가 해서 그때부터 폭풍 구글링에 들어갔더니 황당하게도 어댑터로는 아날로그 입력핀과는 연결이 안되어 있기 때문에 기존 5 button 2004 는 사용이 안된다는 것이었다.  ㅠㅠ


결론은, 돈아끼려고 하지 말고 ramps 보드로 바꿀 때 lcd 도 함께 바꾸면 편하다는 것이다. 


그런데, 거의 포기하려던 참에 5button 을 ramps 1.4 에 연결한 사례가 발견되었다. 


https://github.com/MarlinFirmware/Marlin/pull/7016



어댑터가 없이 보드에 5button 을 연결해 성공시킨 아름다운 사진을 보고 글을 읽어보았더니 케이블 첫번째와 두번째를 서로 엇갈려 꼬아주고 marlin 의 pin 설정을 바꿔주는 작업만 하면 된다는 것이다. 


그대로 했다.

실패했다. 안된다. 

marlin 의 보드별 pin 배치와 lcd 연결 설정에 대해 공부를 했다.

우와 이렇게 해서 작동을 하는 거구나.. 하는 배움의 시간


근데도 안된다. 

마지막이다 싶어서 기존에 사용하는 skynet3d 펌웨어이 아닌 marlin 새거 받아서 한번 펌웨어를 업로드 해보았다. 

된다.  ㅡ.ㅡ;


몇시간 뻘짓 다했는데도 안되었던 것은 skynet3d 펌웨어에 내가 아직 알지못하는 설정이 있어서 그랬다는 것이다. 

skynet3d가 marlin 을 약간 A8 에 맞춰 바꿔놓은 것이라지만 내가 보기에는 구성항목들이 거의 같았기 때문에 의심하지 못했다. 

그래서 내가 사용하던 configuration.h 에 있는 skynet3D 값들을 marlin 으로 옮기고 다시 lcd 를 해보니 된다.  너무 잘된다. 

그리고 10mm 를 이동하면 100mm 가 이동되고 하던 문제도 아주 깔끔하게 해결되었다. 쾌적하다. 괜히 skynet3d 를 그동안 썼었나하는 생각도 든다. marlin 에도 example configuration 에 A8 것도 제공하고 있어서 간단히 바꿔만 주면 되는거였는데 말이다. 


지금은 Octoprint 를 쓰고 있긴 하지만 프린터 중간에 LCD 가 불빛을 발하고 있어서 뭔가 있어보이는 상태이다. 




시행착오는 많이 했지만 이렇게 좋은 결과를 내고 나면 뭔가 하나 배웠다는 점에서 보람이 느껴진다. 


다음번 포스팅에서는 이런 과정을 통해서 알게 된 marlin 펌웨어 속에서 LCD 창의 메뉴 수정에 대한 이야기를 해볼까 한다. 


즐거운 프린팅 생활 되시기를 




김성민의 북리지 - 함께 성장하는 책 리더십 지혜