[김성민의 삼디 Life - 출력 표면 품질 향상]
"문제의 근본원인을 찾지 않고 해결안을 찾으려고 하는 것은
병을 진단하기 전에 수술부터 하려는 의사와도 같다"
이 말은 문제해결과정에서 '참원인'을 찾는 것의 중요성을 이야기하며 자주 언급하는 문장입니다.
저는 이번 주 초에 문제해결을 위한 참 원인을 찾는 퀴즈를 하나 카페 게시판에 출제를 했습니다. 퀴즈라는 형태를 취하게 된 것은 순간적으로 떠오른 것이었는데, 곰곰히 생각해보니 이런 속마음이 있었던 듯 합니다. 첫째로 삽질해가면서 문제의 원인을 찾아 해결방법을 알게 되었는데 다른 분들도 이미 알고 계셨을까? 하는 호기심이었습니다. 두번째로는 퀴즈에 답을 달아주시는 분들을 통해 제가 알지 못했던 정보도 얻을 수 있겠다. 나아가서는 내가 답이라고 생각했던 것보다 더 근원적인 문제점을 어쩌면 찾을 수도 있지 않을까 하는 기대감도 있었습니다. 셋째로는 재미였습니다. 단순한 사진 한장을 시작으로 각자가 겪었던 경험치를 바탕으로 다양한 관점에서 의견들을 내고 들어보는 시간은 게임과 같지 않을까 했습니다. 혹시나 단도직입적으로 '답은 뭐다' 라고 하지 않고 이런 퀴즈를 내고 하는 등의 방식을 불편해하시는 분도 계시지 않을까 조심스럽습니다. 그저 호기심과 기대감 그리고 재미의 관점으로 해보는 것이니 너그럽게 이해부탁드립니다.
1. 문제 정의 및 의견들
두어달 전에 저는 베이비 그루트 피규어를 출력하다가 출력표면에 거친것을 보면서 해결해보고 싶은 마음이 있었습니다. 그래서 그 첫번째 시도에 대한 글을 올렸습니다.
http://bookledge.tistory.com/882?category=718609
그 당시 온도와 압출조건.. 노즐교체, 출력속도와 순서 변경 등의 실험을 하면서 아주 조금의 개선을 할 수 있었습니다. 그러나 근본적인 해결은 하지 못한 채 미완의 프로젝트로 남겨놓은 상태였습니다.
그리고 두달이 지났습니다.
저는 위의 사진을 올려놓고 어떻게 해결할 수 있었는지에 대한 퀴즈를 냈습니다.
그랬더니 정말 많은 분들의 퀴즈 참여가 있었습니다.
이 퀴즈의 정답자에게는 작은 선물이 증정되기 때문에 처음에 단순히 생각하고 퀴즈를 냈다가 엄청나게 많은 분들이 답글을 달아주시는 것을 보면서 매우 조심스러워졌습니다.
그래서 처음에 제가 가진 답은 매우 단순했는데, 답변들을 보니 정말 맞는 것 같고.. 그것이 근본원인일 가능성이 크다는 생각이 드는 댓글도 있었습니다.
어떻게 해야 퀴즈 정답자의 공정성을 확보하면서 정답을 공개할 수 있을까 생각을 하다가 조금 글이 길어질 수 있겠지만 일단 제가 경험하고 실험했던 history 를 그대로 나열해보자는 생각이 들었습니다. 아마도 각자의 답변들이 접목되는 부분이 등장하지 않을까 싶습니다.
먼저 언급드리고 싶은 것은 참여한 분들의 답변들 모두가 실제로 특정문제의 해결책이 될 수 있다는 것입니다. 답변을 주신 분들의 글을 보면 5년 넘게 3D 프린터 업계에서 산전수전 다 겪으셨던 분들의 통찰력있는 관점도 볼 수 있고, 저는 미처 생각지 못했던 내용으로 해결책을 접근하신 분도 계셨습니다. 그래서 출력물 표면 불량에 접근하는 방법은 하나가 아니라 위에 나와 있는 여러가지 요소가 복합적으로 작용할 수 있음을 이 글을 읽으시는 분은 참조하셔서 본인의 문제 해결에 이용하실 수 있길 바랍니다.
다만 이번 퀴즈는 어쩌면 저의 특수한 상황 때문에 규정되는 것으로서 보편적인 해결안이 아닐 수 있음을 전제로 하고 읽어주시면 좋겠습니다.
그럼 이제 시작하겠습니다.
2. 하드웨어 교체
지난번 글의 말미에서 저는 보드쪽을 문제의 원인이거라고 예상하며 글을 맺었습니다. 게다가 확인하기 전에는 알 수 없다는 입장이었지만 저는 그게 거의 확실하지 않을까 하고 마음을 굳히고 있었습니다.
그러던 중 주문한지 6주가 되던 설이 지난 어느날 드디어 아두이노 메가 보드가 도착했습니다.
지난 번 글에서 제가 표현이 부족했었던 모양입니다. 저는 그 당시 온도가 출렁이는 부분을 언급하면서 보드 쇼트 발생시 어딘가 신호불안정이 발생하였고 이것이 모터컨트롤에도 노이즈로 작용했을 것이라 생각했던 것입니다. 노즐온도가 5~7도 정도 변하는 것으로 빠르게 지나가는 노즐에 의해 형성된 출력 표면이 그렇게 심하게 흔들릴 것으로는 생각되지 않았습니다. 그리고 온도의 센싱이 5~7도 가량 흔들렸지 실제 노즐 온도는 상당히 안정적으로 유지되고 있다고 생각했습니다. 온도 시그널에 노이즈가 섞여 출렁거렸다면 동일한 보드에서 제어해주고 있는 스텝모터도 그럴 수 있을거라고 짐작했던 것이죠.
1) 아두이노 보드 교체
그 당시 ramps 보드가 도착하지 않고 아두이노 메가만 온 상태였지만, 아두이노만 교체를 해보니 온도 프로파일이 노이즈가 없이 정상으로 나오기 시작했습니다. "아! 이제 되었다" 라며 출력을 해보았지요.
그러나 결과는 해결되지 않음이었습니다. ㅠㅠ
2) RAMPS 1.4 교체
2주 정도 뒤에 배송이 되어온 ramps 보드를 한달 정도 묶혀놓고 있다가 (다른 출력에서는 큰 이상 없이 뽑고 있었기 때문에) 교체를 해주었습니다. 그게 지난주였네요.
아두이노 교체시 효과가 없었기 때문에 저는 ramps 교체로 드디어 해결을 보겠다고 생각하며 엄청난 기대를 가지고 아이 그루트를 출력을 했지요.
해결이 역시 안되었습니다. ㅠㅠ
어쩜 그렇게 하나도 안바뀌고 똑같은지 얄미웠습니다.
3) 프린터 교체
갑자기 황당하시겠지만 아두이노 교체와 ramps 교체 사이에 프린터를 바꿔 시도해보았었습니다. 지금으로 부터 약 한달전인 3월 3일, 국내 3D 프린터 업체의 대표님으로 부터 델타 프린터를 한대 받아서 집으로 가져오게 되었습니다. 처음에 동작 방식 때문에 적응이 안되어 한참을 헤매다 큐브를 뽑고 나서 자신감이 붙은 다음 가장 처음 출력했던 것이 바로 베이비 그루트였지요. 그 사진을 보여드리겠습니다.
아.. 이 정도면 게임 끝난거라고 할 수 있겠죠? 물론 델타 방식이어서 큐라 설정이 직교형과 아주 동일하지는 않겠지만 속도 설정을 제외하고 나머지는 대략적으로 같게 맞춰놓고 진행했었습니다. 속도는 델타가 더 낮은 속도로 셋팅이 되었지만 실제 노즐의 움직임 속도는 직교방식과 비교해서 낮지 않은 값이라 생각되는 정도로 했기 때문에 거의(?) 동일한 조건에서 진행했다고 생각이 들었습니다.
이 출력의 결과물을 보고 나서 저는 이런 생각이 들었습니다.
'내 프린터의 하드웨어적인 부분이 문제구나.'
그리고 나서 ramps 보드 교체를 했는데 개선이 안되는 걸 보고 망연자실일 수 밖에 없었죠.
여기서 많은 분들이 말씀하신 유격이라던가 축의 강성, 벨트 텐션 등등 생각해보지 않은 것은 아닙니다. 그런데 그게 근본원인일 수 있을까? 하는 생각이 들었습니다.
물론 하드웨어적으로 제 프린터가 아주 완벽한 상태는 아님을 인정합니다. 그러나 200만원 넘는 고가의 프린터는 흔들림이나 유격이 없는가? 하면 그렇게 생각되진 않았습니다. 하드웨어가 문제라고 하면 하드웨어를 바꾸어야 하는데 LM 가이드로 바꾸고 더 비싼 노즐과 특수재질의 연마봉을 사용하는 등 진동과 백래쉬도 잡을 수 있는 것으로 계속 업그레이드를 하다보면 3D 취미생활자로서의 범위를 넘어선다는 판단이 들었습니다. 경제적 여유가 있다면 못할것도 없겠습니다만 안해님의 눈치를 보면서 허락받고 사야하는 공처가 남편으로서는 감히 접근할 방법이 아니었던것도 이유입니다.
그리고 테스트를 안해본것도 아닙니다. 문제가 있던 제 프루사 타입 장비에다가 백래쉬 측정을 해준다고 하는 출력물을 걸어서 확인해보았습니다. 이것이 그 결과입니다.
<https://www.thingiverse.com/thing:2256550>
디자인을 올려놓은 분의 설명에 따라 분석해보니 X, Y 방향 둘다 이 정도면 양호하다는 생각이 들었습니다.
물론 안정적인 조립과 강성, 흔들림, 진동 등의 하드웨어는 정말 기본중의 기본이라고 할 수 있을 것입니다. 그런데 제 경우에 그루트가 아닌 다른 출력물에서 아래 사진처럼 나와주면 하드웨어는 괜찮다고 봐도 되지 않을까요?
이와 같이 '하드웨어 문제는 아닐꺼야' 라는 스스로의 확신에 빠져 있다보니 더이상 어떻게 하지 못하고 막막함에 빠졌습니다. 일본 추리만화중에 "탐정이 포기하면 사건은 미궁에 빠진다" 라는 말이 나오는데 정말 미궁에 빠진 사건처럼 이유를 알 수가 없는 상태였습니다.
그러던 중 우연한 기회에 해결의 실마리를 발견하게 되었습니다.
3. 슬라이서 교체
어느날 제가 존경하는 유느님(유튜브)께서 맞춤영상이라며 제가 좋아할 만한 영상을 보여주는데 왠지 흥미가 돋는 영상이어서 보다가 놀라운 장면에 숨이 멎는 것만 같았습니다. 'Simplify3D를 사용해야 하는 이유' 라는 제목을 달고 있었는데요.
이것이 제가 엄청 흥분했던 영상장면입니다.
<https://youtu.be/ctqvCpXRCpM>
오른쪽에 산타할아버지인가요? 그 턱수염 부위에 나 있는 것이 제가 해결하고자 하는 '여드름' 이라고 이름 붙인 것과 정확히 동일하다고 느껴졌습니다. '아 그런거였어?' 라고 생각하며 집에 돌아와 큐라가 아닌 다른 슬라이서로 출력을 해볼 마음을 먹었습니다. 심플리파이가 있다면 더 좋겠지만 당장 이거 테스트를 하기 위해 15만원이 넘는 프로그램을 구입한다는 것도 그렇고, 아마 대한민국 남편들은 대부분 저의 상황을 이해하시지 않을까 싶습니다. 돈은 제가 벌더라도 함부로 마구 쓸 수는 없다는 것을요 ㅠㅠ
제가 가지고 있는 슬라이서는 다음과 같습니다. 'Slic3r, Ideamaker, Kisslicer, Cubicreator, Z-suite' 이 중에 뒤에 두개는 전용 슬라이서라서 제외하고 나머지 중에서 얼마전에 델타 프린터 업체 대표님으로 부터 노즐 이동이 자연스럽다고 써보라며 추천 받았던 Kisslicer 를 적용해서 해보기로 하였습니다.
참고로 Kisslicer 는 출력조건 설정방법이 그동안 계속 메인으로 사용해왔던 Cura 와는 전혀 달라서 엄청 해맸습니다. 사용하는 용어도 다르고 메뉴가 배치된 방식과 슬라이싱해서 저장하는 순서등도 달랐습니다. 하다못해 출력물의 위치를 배드에서 조정하고 싶더라도 내 마음대로 안되더군요. 나중에야 방식의 차이가 있을 뿐 다 가능하다는 사실을 알게 되었지만요. 직관성은 좀 떨어지지 않나 하는 생각이 들었습니다.
어쨋든 대략적인 셋팅을 해서 Gcode 변환 후 출력을 걸었습니다.
아래 사진이 출력 직후 베드위에 나타난 아기 그루트 입니다.
이게 아까전까지 여드름 덕지덕지 붙은 그루트를 뽑던 동일한 프린터가 맞나 싶을 정도로 광택이 나는 결과물이 나왔습니다. 첫 느낌은 .. 그런거 있잖아요 성인들 뒤에 후광이라고하나 그런것이 비치는 듯 했습니다. 제 예상이 맞았습니다. 하드웨어 문제는 아니었던것이죠.
비록 턱 밑에 흘러내린듯 보이는 선이 있지만 이건 출력 순서나 쿨링팬 조절등으로 해결할 수 있을 것 같았습니다. 거미줄이 좀 보이는 것도 리트랙션 조건을 손보면 될거구요. 이 정도면 성공이라는 생각이 들었습니다.
그러나 여기서 글을 마칠 수는 없습니다. 왜냐하면 근본원인을 찾지 못했으니깐요.
슬라이서를 바꿔서 해결이 되었는데, 왜 슬라이서를 바꾸면 해결이 되었는지는 아직 모르는 상황이었습니다.
만약 여기까지 글을 보신 분은 Cura 를 버리고 다른 슬라이서로 갈아타야겠구나. 라는 결론을 내릴 수도 있겠다는 생각이 들었습니다. 그래서 더욱 근본원인을 찾아야겠다는 생각이 들었습니다. 왜? Kisslicer 에서는 표면에 여드름이 나지 않았던 것일까요? 어떻게 하면 Cura 에서도 좋은 표면을 가질 수 있을까요?
4. 근본 원인을 찾다
제가 Kisslicer 라는 답에 머물지 않고 질문을 던지며 근본원인이 더 있을거라며 찾았던 이유에는 그동안 Cura 라고 하는 직관적인 손에 익은 프로그램을 버리기 아쉬웠던 이유가 크다고 여겨집니다. 그리고 베이비그루트 같은 형상 말고 다른 출력물에서는 나름 문제 없이 잘 나와주기도 하였고, 또 큐라 관련 활용영상만 20개 정도 올렸던 사람으로서 이 문제도 큐라에서 해결해보고 싶다는 아무 근거 없는 책임감 같은 것도 느껴졌기 때문입니다. 그리고 Kisslicer 를 써보니 표면은 좋아졌지만 모델링에는 없는 이상한 선을 형성시킨다거나 infill 형성이 마음에 안든다거나 하는 단점도 보았기 때문에 무조건 슬라이서 교체만이 답은 아닐거라는 마음이 있었던 것이죠.
1) 가속도?
고민에 빠졌습니다. 혹시 가속도의 문제는 아닐까 하는 생각도 했습니다.
Kisslicer 프로그램의 출력설정에 익숙치 않아 가속도 값은 장비 설정을 그대로 썼기에 Cura 에서 가속도 값을 높여보자고 생각이 들었습니다.
그루트의 표면을 보면 상당히 울퉁불퉁한데 이것을 하나씩 움직여가며 그릴 때, 가속도 값이 현재 소음/진동이나 tmc 적용 탈조를 방지하기 위해 설정해둔 400mm/s2 은 너무 낮지 않을까 하는 생각으로 정리가 되었습니다. 퀴즈 답글에도 한분이 노즐의 흘러내림과 속도 가속도, 혹은 저크 값의 상관관계가 직선적이지 않고 시간차가 있음을 보고 가속도와 저크 조정을 답으로 써주셨는데 저도 정확히 일치하는 생각을 했었습니다. 외국의 다양한 사례들을 통해 Jerk 값도 조정할 실험 계획도 가지고 있었는데 먼저 가속도 부터 해봤습니다.
많이 출력하다보니 이제는 그루트의 발 부분 나오는 것만 봐도 여드름 현상이 있을지 없을지가 눈에 보이더군요. 이렇게 말이죠.
결과는 가속도에 의한 유의차가 없다는 것이었습니다.
2) 속도?
속도 자체도 의심이 되었습니다. Kisslicer 의 속도 조정 방식은 매우 특이합니다. 처음에 이 부분 때문에 매우 헷갈렸었죠. 일단 Kisslicer 의 출력 속도가 구간별로 어떻게 달라지는지를 gcode analyser 라는 사이트를 통해 알아보았습니다. 여러분도 자신의 Gcode 에 대해 분석을 해보려고 하실 때 알아두면 유용한 곳이니 기억해두시면 좋을 듯 합니다. (http://gcode.ws)
먼저 Kisslicer 로 만들어진 Gcode 의 속도를 보았습니다.
아주 흥미롭게도 Kisslicer 는 내부 infill 과 내벽, 외벽 이렇게만 속도 구분을 하는 것이 아니라 동일한 외벽인데도 그 안에서 계속해서 속도를 조절하며 출력하고 있음을 알 수 있었습니다. 어쩌면 이 부분이 출력물 표면 개선에 도움이 되었던 것은 아닌가도 생각이 듭니다.
속도는 빠른 곳은 60mm/s 로 되어 있고, 낮은 부분은 30mm/s 근처에 포진해 있었습니다.
이것은 Cura 의 프린팅 속도를 60mm/s 으로 맞췄을 때 외벽이 자동으로 30mm/s 로 바뀌는 것과 흡사했습니다. 이미 지난번에 40mm/s 로 테스트를 진행해보았던 결과를 기억하시는 분이 계시다면 알겠지만 속도를 Kisslicer 와 맞춘다고 해서 해결이 되는 것은 아니라는 사실을 알 수 있습니다. 지난번 40mm/s 에서는 외벽은 20mm/s 로 진행되는데도 불구하고 여드름이 완전히 없어지진 않았으니깐요.
그래도 혹시 몰라 60mm/s 로 진행해보았지만 결과는 '개선사항 없음' 이었습니다.
3) 이상한점 발견
그렇게 원인을 찾지 못한 채 이리저리 고민만 빠져 있다가 문득 이상한 점을 발견하게 되었습니다. 큐라에서 슬라이싱 한 것과 키슬라이서에서 슬라이싱한 Gcode 의 파일크기가 차이가 많이 난다는 것이었습니다.
응? 이게 뭐지? 같은 크기에 infill 도 거의 비슷, 벽 두께도 3바퀴, 출력 속도도 비슷한 수준, layer height 도 0.2mm 로 동일... 그런데 파일 용량이 2배 가까이 차이가 나? 뭐지? 허겁지겁 Gcode 를 열어서 line 수를 확인해보았습니다.
파일 용량을 보면 당연한 결과였겠지만 마지막 End code 를 적어놓은 부분에 이르기 까지 Cura 가 2배 가량이 많았습니다.
이게 무슨 말을 뜻할까요? Cura 가 개별 레이어당 Gcode 를 더 많이 작성했다는 것입니다. 이것을 이해하기 위해서는 Gcode가 어떻게 원을 그리는지를 보면 되는데, 우리가 원을 던져주면 슬라이서는 이것을 원으로 그리지 않고 다각형으로 그립니다. 원에 아주 가까운 다각형으로 말이죠.
찾아보니 CNC 에서 사용하는 Gcode 에는 G2/G3 코드라는 것이 있어서 곡선을 그릴 때 사용하는 코드가 따로 있고 그 코드 하나로 부드럽게 원이나 호를 그릴 수 있다고 합니다. 반면에 3D 프린터에서 사용하는 Gcode 는 G1 코드 하나만으로 노즐이 이동합니다.
G1은 직선으로 움직이기 때문에 원을 그리려면 위의 그림과 같이 꺾인 여러개의 직선을 그려서 원처럼 보이게 한다는 것이죠.
당연히 선이 짧으면 짧을 수록, 더욱 촘촘히 선을 그리면 그릴 수록 원에 가깝게 될 것입니다. 그러나 그럴 수록 데이터는 많아지는 것이죠.
각 레이어를 보다 자세히 표현을 한 Cura 와 어느정도 선에서 효율을 따진 Kisslicer 의 차이라고 보였습니다. 무엇이 더 좋거나 옳은지는 판단이 서지 않았습니다. 중요한 것은 Cura 의 Gcode 가 현재로서는 상대적으로 더 무겁다라는 것이었죠.
이때부터 문제의 근본원인에 한발자국 더 다가간듯 싶었습니다.
이 시점에서 저는 제 프린터에 달려 있는 Octoprint가 유력 용의자로 의심 되었습니다.
5. 문제의 근원 Octoprint ?
Octoprint 는 예전에 포스팅한 글에도 있지만 프린팅 생활을 정말로 쉽고 편리하게 게다가 Timelapse 영상도 만들어주어 재미까지 선사하는 기뜩한 녀석입니다. 가장 큰 장점은 SD 카드를 매번 빼었다 꼽았다 하지 않아도 된다는 점이었죠.
그런데, 이게 문제였습니다. 라즈베리파이와 Octoprint 와의 통신 속도는 엄청나게 느립니다. 아마 Octoprint 에서 곧바로 보드 SD 카드로 gcode 를 upload 해보았던 분은 알고 계시리라 생각합니다. 수십분을 기다려야만 파일 하나 올라가는 그런 상황을요. 그래서 Octoprint 를 쓸 때는 gcode 를 보드의 Sd 카드로 막바로 올려서 진행하는 것이 아닌, Octoprint 가 설치된 라즈베리파이에 올려놓고 출력을 진행합니다. 이건 순식간이죠. 10초도 안걸립니다.
이후 출력을 걸게 되면 라즈베리파이에 있는 gcode 는 실시간으로 한줄씩 한줄씩 보드에 명령을 내리면서 진행이 되는 방식입니다. 아래에 간단히 도식으로 표현해보았습니다.
그냥 보내는 것만이 아니라 보내진 코드를 프린터 보드가 해석해서 스텝모터와 노즐과 온도 장치등에 명령을 내려주는 작업도 내부적으로 병행이 되는거죠.
그런데, 이때 마치 설 명절 고속도로가 정체 되듯이 데이터가 너무 많이 몰리게 되면 어떤일이 벌어질까? 상상을 해보는 순간 제가 겪고 있는 문제가 바로 이 문제가 아닐까 하는 생각에 다다릅니다.
그래서 Octoprint 와 표면 불량의 키워드를 함께 묶어서 구글링을 시작해보았습니다.
그랬더니 많지는 않지만 정확히 제가 여드름 치료 라고 명명한 그 문제를 겪고 있는 사람들의 글들이 발견되었습니다.
문제를 겪은 사람들은 모두 평소에는 괜찮다가 라운드가 진 물체를 출력할 때면 표면이 울퉁불퉁하게 나온다는 말이었고 그것의 원인으로 Octoprint 를 지목하고 있었습니다.
그런데 좀더 살펴보니 이 문제는 Octoprint 가 개발되고 초창기부터 있었던 문제였던가 봅니다. github 의 토론방에 들어가보니 이미 4년전에 이 문제를 제기했던 사람이 있었고 이에 대해 개발자가 다음과 같은 답변을 했었습니다.
요약해보자면 "라운드 형태를 만들 때는 아주 작은 선을 수없이 만들어서 노즐을 움직여야 하는데 라즈베리파이에서 보드로 전송시 문제가 생길 수 있다. 그럴 때는 SD 카드에 옮겨담아 진행을 하던지, 출력속도를 낮춰라" 라는 것이었습니다. 제가 의심했던 바로 그 말을 하고 있었습니다.
이렇게 보면 그동안 경험했던 모든 것이 앞뒤가 다 맞아 떨어집니다. 출력속도를 낮췄을 때 개선되는 효과를 보인것은 낮은 속도에서는 데이터 전송을 천천히 보내도 되니 보틀넥이 적었을 것이고, 외벽우선으로 했던 것이 개선된 것 또한 외벽의 낮은 속도에서 먼저 형성시키고 내벽의 보틀넥 구간으로 들어가니 굳어있는 외벽에 이후 출력물이 적게 영향을 미쳤을 것이었습니다.
또한, 출력시간도 이상했던게 생각이 나네요. 큐라의 설정에서는 1시간 45분을 예상하고 있는데 (저는 가속도 셋팅을 통해 출력시간과 실제 출력시간을 10% 미만으로 맞춰놓은 상태였습니다.) 이상하게 그루트만 출력하면 80mm/s 속도로 2시간 30분이 넘어가니 뭔가 찜찜했었더랬죠. Kisslicer 는 60mm/s 인데 1시간 8분에 출력이 완료가 되었으니 뭔가 말이 안되었던 것입니다. 나중에 확인한 사항으로는 큐라에서 출력속도 40mm/s 로 진행해도 2시간 30분이 걸렸습니다. 뭔가 다른게 있었다는 뜻이죠.. bottle neck 현상이라면 자연스럽게 다 설명이 됩니다.
그러나 4년전에는 라즈베리 2 였을 것이고, 저는 지금 라즈베리 3를 쓰고 있는데 그 말이 맞을까? 그동안 octoprint 도 버전업이 되었으니 그 부분은 해결되었고 이건 다른 문제일 수 있지는 않을까? 하는 합리적 의심도 해보게 되었습니다. 만약 이 문제가 확실한지를 알려면 어떻게 하면 좋을까요? 답은 간단합니다. 동일한 gcode 를 Octoprint 를 통해서가 아니라 SD 카드로 출력을 해보면 되는거죠. 그런데, 제게는 그게 불가능 했습니다. 저는 보드를 기존의 Anet A8 전용 보드에서 ramps 보드로 옮겨가면서 SD 카드 슬롯을 만들지 않았던 것입니다. 보드 사면서 lcd2004 다이얼식 디스플레이를 장착했더라면 이런 문제는 없었을 텐데 돈아낀다고 버튼식 기존 디스플레이를 이용했던게 문제였었죠.
그래서 저는 다른 방식으로 우회해서 그 문제에 접근해보고자 했습니다.
1) 원활한 통신이 이루어는 출력 속도를 찾는다.
이말은 속도를 낮춘다는 것을 뜻합니다. 좀더 구체적으로는 Kisslicer 와 동일한 데이터 통신량을 기준으로 속도로 내리는 것을 의미합니다. 물론 속도를 낮추는 것은 모든 프린터의 출력 품질을 올리는 방법이 됩니다. 그러나 앞서 언급했던 바와 같이 속도 80mm/s 로 평소 진행함에 있어서 품질이 떨어진다고 느꼈던적은 없기에 제게 있어서는 속도를 낮춘다는 것이 하드웨어적인 진동을 줄여 출력품질을 개선한다고 볼 수 없다는 판단을 했습니다. (속도에 의한 영향이 없다는 말이 아니라 여드름 개선에 주요 원인은 아니라는 뜻입니다)
지난번에도 40mm/s 까지 테스트를 해보았었는데 이번에 얼마나 내리면 될까를 고민했습니다. 키슬라이서가 큐라의 거의 절반 정도의 Gcode 를 생성시켰던것에 착안하여 단위시간당 동일한 데이터 전송량을 얻으려면 Kisslicer 속도의 절반으로 내리면 될것으로 판단했습니다. 그래서 속도 30mm/s 로 진행해보았습니다. 외벽은 15mm/s 였겠죠. (지금까지 했던 속도 테스트가 최저 40mm/s 였으니 이 값은 파격적이라 할 수 있습니다)
결과는 예상대로 큐라에서 만든 Gcode 만으로 환상적인 표면을 얻을 수 있었습니다.
그러나 속도를 낮춤으로 인한 진동개선의 영향으로 생각될 수도 있습니다. 그래서 다음 방법을 써봅니다. Gcode 는 동일한 것을 이용해서 출력해보는 것이죠. 속도를 전혀 내리거나 바꾸지 않은 상태의 진행입니다.
2) 옥토프린터가 아닌 방식으로 출력 진행
가장 좋은 것은 SD 카드로 하는 것이겠지만 그게 안되는 상황에서 제가 떠올린 것은 Klipper 라고 하는 펌웨어였습니다. 두달전에 klipper firmware 를 설치하고 리뷰할 당시에는 온도 센싱에 문제가 있는 상황이어서 불편함이 많았는데, 그 문제가 해결되었기에 한번 이걸 통해 Cura 에서 생성된 Gcode 를 돌려보면 어떻게 될까 궁금했습니다.
속도는 80mm/s 로 그대로 두고요. 키슬라이서보다 2배가량의 용량을 차지하는 Gcode 그대로를 사용했습니다.
키슬라이서는 라즈베리파이가 직접 프린터의 모터를 제어하기 때문에 움직임이 훨씬 원활하다고 평가되고 있는데, 저의 목적은 (옥토프린터 - 보드 - 스텝모터) 로 이어지는 통신상의 보틀넥을 (옥토프린터 - 스텝모터) 라는 직접 제어를 하게 하면 좋아지지 않을까 하는 가설이었습니다. 생각해보니 여기도 옥토프린터가 들어가긴 하네요. 하지만 Klipper 라는 펌웨어를 써주기 위한 보조도구로서 옥토프린터이지 이전과는 다를 거라고 생각이 들었습니다.
그리고, 결과입니다.
동일한 Gcode 를 이용했음에도 불구하고 기존에 marlin 펌웨어가 설치된 보드에서 연산처리를 하는게 아니라 직접 Klipper 가 프린터를 컨트롤 하니 달라진 것 같지 않습니까?
그런데 왠지 Kisslicer 에서 보는 것처럼 광택이 날 정도는 아니더군요. 그리고 확대해서 보면 아직 약간의 여드름이 존재하는 부분도 있습니다.
이것은 어쩌면 직접제어에 의해 상당부분의 보틀넥은 제거했지만 시리얼 통신을 통해 신호를 보내는 방식 자체는 바뀌지 않은 상태에서의 최선의 결과가 아니었을까 하는 생각이 듭니다.
하지만, 이것을 다른 식으로 해석할 가능성도 있습니다. Klipper 가 모터를 32비트로 컨트롤해주면서 속도 가속도 저크 등이 이전과는 다르게 좋아졌기 때문에 품질이 나아진 것이다. 이 결과만 보고 옥토프린터의 통신문제가 근본원인이라고 단정할 수는 없지 않은가. 퀴즈를 내고 답변들을 살펴보다가 이런 의견도 있을 가능성에 대해 생각하게 되었습니다. 좀더 확실한 증거가 필요했지요.
그런데, 당장은 SD 카드가 없으니 (실은 외장 SD reader 를 이미 오래전 구입해 두었지만, 어떻게 연결하고 펌웨어 핀 설정을 하면 나올지 몰라 적용을 못하고 있었습니다.) 어떤 방법이 있을까 생각하다가. 문득 아이디어가 떠올랐습니다.
3) SD 카드 방식와 옥토프린터 방식 비교
현재 베이비 그루트의 얼굴 여드름이 옥토프린터와 보드와의 실시간 통신이 원활하지 않았던 것이 근본 원인이라면.. 반대로 정상적으로 SD 카드로 출력이 되는 것을 Octoprint 로 출력해보면 되지 않겠는가.
다시 풀어써보자면.. 앞서 말씀드렸던 델타 프린터 기억하시죠. 환상적인 피부를 처음 맛보게 했고, 제가 가지고 있던 프린터의 하드웨어가 문제라고 생각하게 만들었던 그 델타 말이에요. 그걸 이번에는 SD 카드가 아닌 Octoprinter 를 연결해서 출력해보면 어떨까 하는 접근이었습니다.
그래서 동일한 gcode 를 그냥 SD 카드와 옥토프린터로 각각 출력해보았습니다.
만약 둘다 정상이라면 제 가설은 잘못된 것이고, 여전히 근본원인은 못찾은 것이며
가설이 맞다면 옥토프린터를 이용한 델타 출력물의 베이비 그루트는 여드름이 생기게 되겠죠.
두둥...
아기 그루트의 얼굴이 여드름이 아니라 아얘 곰보자국이 나버렸습니다. 도무지 봐주지 못할 만큼 변해버린 그루트에 실망스러웠습니다. 왼쪽 SD 카드로 한 것은 1시간 12분 걸려 출력된데 반해 오른쪽 octoprint 는 2시간 19분이 걸렸습니다. 보틀넥에 의한 영향을 톡톡히 본것이죠. 그리고 출력 소리도 달랐습니다. 압출을 하는 모터가 연속적이고 부드럽게 돌아가는게 아니라 찔끔찔끔 쥐어짜듯이 진행이 되었으니깐요. 그러나 곰보자국의 그루트가 출력되는 것을 보고 제 입가에는 묘한 미소가 지어졌습니다.
5. 종합결론
이제 결론을 맺고 글을 마무리하고자 합니다.
결론은 문제의 근본원인은 하드웨어나 소프트웨어 문제가 아니라 '통신' 문제라고 정리해봅니다. 그 부분에 대한 답변은 찾을 수 없었기에 정답자는 없는 것으로 하겠습니다.
그러나 선물은 받지 못했지만 새로운 정보를 알게 된 것으로 의미를 삼아주시면 어떨까 싶습니다.
만약 Octoprint 를 사용하면서 라운드 형태의 출력물 표면 품질에 이상이 있다고 한다면 다음 4가지 방법이 해결방안이 될 것으로 생각합니다.
1) 출력속도를 현재의 1/4 로 떨어뜨린다.
- (어차피 그동안 보틀넥 때문에 제대로된 출력속도를 내지 못하고 있었을 것이다.) 아무리 좁은 길도 차들의 통행량이 많지 않으면 막히지 않는 것처럼 속도를 낮추면 보틀넥 현상이 없이 좋은 품질의 출력물을 얻을 수 있을 것이다.
2) 슬라이서를 변경한다.
- 제가 다 테스트를 해본 것은 아니기에 무엇이 더 좋다라고 말할 수는 없지만, 동일한 모델링을 슬라이싱 하더라도 곡면을 해석하고 Gcode 를 형성하는 방식에 따라 gcode 파일 사이즈가 달라짐을 보게 된다. 좀더 사이즈가 작은 파일을 만들어내는 슬라이서를 쓴다면 통신속도 한계에 의한 문제를 어느정도 피해갈 수 있을 것이다.
3) Klipper firmware 를 적용해본다.
- Klipper 펌웨어는 아직 버전 0.6 인가 밖에 나오지 않은 상태로 발전할 여지가 많은 것 같습니다. 그만큼 아직 완성형은 아니라는 것이죠. 하지만 제가 몇차례 테스트를 통해서 느껴본바로는 스텝모터 컨트롤이 상당히 부드러웠습니다. 해외영상에보면 속도 300mm/s 로 출력을 진행하는데도 안정적인 것을 보이는 만큼 매력이 있는게 분명합니다. 여전히 모터제어를 해주기 위해 신호를 전달하는 선이 바뀌지 않은 만큼 한계는 있겠지만 기존 문제를 없애주기에는 충분하지 않은가 싶습니다.
4) SD 카드를 이용해 출력한다.
- 앞서 세가지 방법은 Octoprint 를 놓지 않는 방법이었다고 하면, 이건 가장 확실한 방법이면서도 불편을 감수하여야 하는 방법입니다. SD 카드와 보드와의 통신은 SPI 라는 통신방법을, 라즈베리와 연결된 USB통신은 serial 통신을 사용하는데 이 통신방식의 속도차이가 10배이상 난다고 하더군요. 더 말할 필요가 없을 듯 합니다.
이상으로 베이비그루트 여드름 치료에 대한 결과 보고를 마치고자 합니다.
마지막으로 그동안 출연했던 아기 그루트들의 합동 인사를 드립니다.
즐거운 3D 라이프 되세요..
꾸벅~
김성민의 북리지 - 함께 성장하는 책 리더십 지혜
'▶3D 프린팅 > 삼디강좌' 카테고리의 다른 글
[김성민의 삼디 Life] Anet A8 사지말아야 할 10가지 / 사면 좋은 10가지 이유 (8) | 2018.04.20 |
---|---|
[김성민의 삼디 Life] 취미생활자의 3D 프린터 선택 (2) | 2018.04.13 |
[김성민의 삼디 Life] 3D 프린터 전기요금 얼마나 나올까? (1) | 2018.03.26 |
[북리지의 삼디 Life] 출력시간을 줄여주는 10가지 방법 (6) | 2018.03.12 |
[김성민의 삼디 Life] LCD 메뉴 순서를 바꾸다 (Marlin 펌웨어 수정) (2) | 2018.03.05 |