[김성민의 삼디 Life - 미니타노스 완장제거 프로젝트(미완)]
"틀린 가정은 잘못된 결과를 남긴다."
살면서 가장 위험한게 무엇일까? 생각을 해본 적이 있다.
나는 그것의 답을 '확신' 이라고 생각했다.
특히 잘못된 가정과 전제를 기반으로 한 '확신' 만큼 위험한 것은 없다.
마치 게르만 민족을 최고로 우월한 인종이라고 생각한 히틀러의 확신이 홀로코스트를 만들었던것처럼 말이다.
나는 최근 발견하게 된 3D 프린팅 출력물의 불량에 대해 잘못된 확신속에 수많은 시간을 허비했다.
때론 맞는 방향으로 가는듯도 했다. 그러나 그것 역시 실증하지 않고 막연한 '카더라'를 기반으로 생각했기에 옳은 방향은 아니었다. 부끄러운 실수를 벌인것이다.
오늘은 그 실수와 실패담, 아직 미완의 프로젝트인 '미니타노스 완장 제거'에 대한 현재까지의 상황을 이야기하고자 한다.
1. 문제 발견
카페에 한 회원님의 글을 보면서 디자인이 귀엽기도 하고, 나는 과연 어떤 출력결과를 얻을 수 있을까 하는 호기심에 '미니 타노스'를 출력해보았다.
이것이 그 첫 결과이다.
작게 출력한 것 치고는 나쁘지 않은 결과인듯 하지만
예민한 내 성격상 신경이 거슬리는 부분이 있었다.
바로 타노스 오른팔에 선명하게 그어진 두줄, 내가보기에 두줄이 그어져 있는 완장이다.
저 부분은 왜 저렇게 나온 것일까?
나는 그때부터 무한 삽질을 하기 시작했다.
2. 문제 원인 찾기
저런 불량이 나타났을 때 나는 늘상 gcode 를 분석해 본다.
출력 진행상에 다른 레이어와 차이가 있을 수 있다는 생각에서이다.
내 예상은 적중했고 안으로 들어가있는 레이어는 다른 레이어와 달랐다.
사진과 같이 정상layer 는 내벽(빨간색)을 그리고 나서 '곧바로 이어' 외벽(하얀색)을 출력한다. 그러나 문제가 있는 레이어는 다음과 같았다.
문제의 오른팔을 출력하기 직전에 ② 의 travel(이동)이 발생하는 것이었다.
이것을 이동 발생여부와 실제 완장의 형태와 비교를 해보았다.
그랬더니 다음처럼 외벽 직전 이동여부와 완장 발생결과가 일치하는 것을 볼 수 있었다.
이제 1차 원인은 Travel 이라고 결론이 났다. 그러나 무엇이 문제였기에 이동시 압출불량이 발생하는 것일까?
3. 참원인 찾기 실험
하나씩 그 원인을 찾는 실험을 진행하기 시작했다.
가장 먼저는 리트랙션을 의심했고, combing 을 체크하며, 노즐 이동 시퀀스를 바꿔보기도 하였다. 그러나 근본적인 해결은 아니었고 그렇기에 참원인도 아니었다.
마구잡이로 하다가 이렇게 해서는 안되겠다는 생각이 들어 다음과 같이 문제의 원인을 3가지 부류로 나누고 그에 속하는 세부 사항들을 하나씩 체크해나가기 시작했다.
작전이 실패했을 때 책임을 물어야 한다.
작전계획 자체가 잘못되었을지도 모른다.
어쩌면 지휘부의 멍청함이 작전을 실패하게 만들었지도 모르고
실행요원들의 기민하지 못함이 문제였을 수도 있다.
나는 이를 이번 출력과 연관지어 다음과 같이 정리하였다.
결론을 말하자면 모두 실패했다.
아니, 경우에 따라서 조금 괜찮은 결과를 본 것도 있었다.
재봉선 발생 방식을 바꾸었을때가 그랬고, 슬라이서를 바꾸었을때도 조금 나아지는 모습을 볼 수 있었다. 그러나 이건 문제해결이라고 할 수 없었다. 왜냐하면 두개가 바뀌었을 때 travel 이 달라졌었기 때문이다. 즉, 문제의 상황을 맞닥뜨리지 않았기에 문제현상이 나타나지 않았을 뿐이지, 참원인을 제거한 것은 아니었던 것이다. 수학여행가다가 문제가 발생했다고 수학여행을 없애서는 안되는 것이다. 눈에 보이는 현상을 제거하는 것은 1차원적인 문제해결이다. 그건 아무나 할 수 있을 뿐만 아니라 제대로 된 문제해결일리도 없다.
그러다가 OC 카페의 강변어부님께서 gcode 를 보내주면 자신의 프린터에서 출력을 해봐주겠다는 제안을 해주셨다. 만약 내가 만든 gcode 로 다른 프린터에서 정상적으로 나온다면 더 이상 '작전계획' 자체의 문제는 아니게 되는 것이다. 결과는 다음 사진과 같다.
매우 깨끗하다. 약간 빛의 반사 정도가 다른 부분이 있지만 들쑥날쑥한 완장의 형태는 보이질 않는다. 이제 Cura 슬라이싱은 더 이상 신경쓰지 않아도 되겠다. (사실, 이 결론에 이르기 이전에 왠만한 할 것들은 다 해본 상황이었다.)
그런데, 하드웨어적인 문제라고 생각이 될 즈음에서 내가 뭔가 잘못 생각하고 있는 것은 아닐까 하는 불안감이 엄습했다.
4. 옳은 가정 vs 잘못된 가정
지휘부와 실행요원들에 대한 실험도 거의 다 해본 상황이고, 몇가지 교체 건수가 남아 있기는 했지만 그거 교체한다고 과연 문제가 해결이 될까? 하는 부정적인 마음이 들때즈음이었다.
나는 지금까지 문제를 '이동후 압출부족 현상' 이라고 정의내리고 원인을 찾고 있었다. 그런데 문득 과연 그럴까? 하는 의문이 들었다. 내가 그린 '작전계획' - '지휘부' - '실행요원' 그림은 철저히 압출불량에 영향을 미치는 요소들만 추출한 것이다. 따라서 노즐/익스투르더를 제외하고는 그 어떤 하드웨어적인 부분도 표시하지 않았고, 그렇기에 프린터의 다른 부분은 나의 관심밖에 있었다.
그런데, 만약 문제가 '이동후 압출부족현상' 이 아니라 '이동에 따른 레이어 흔들림' 이라면 어떨까?
이동(travel)이라는 것은 속도와 가속도를 갖는다. F=ma 라는 유명한 공식을 만들어 놓으신 뉴턴 할아버지는 우리에게 질량이 있는 모든 움직이는 물체는 힘을 받는다라는 사실을 말해주고 있다. 그리고 운동량 충격량 등의 물리법칙도 떠올랐다.
내가 관찰한 사실은 '최외곽벽 압출 직전 이동이 있을 때에는 레이어가 움푹 들어가는 현상' 이 나타난다는 것이었다. 그것을 나는 압출불량이라고 해석했지만, 그게 아닐 수도 있지 않은가. 그게 이동 후 흔들림에 의해 레이어 형성이 안쪽으로 들어간 것이라면?
그때부터 카페에 고수님들의 조언을 참조삼아 하드웨어적인 부분을 분해하고 재조립하는 작업을 진행했다.
1) Z 축의 리드스크류를 뽑아 뒤집어 꼽기
2) 익스트루더 모터 부분을 다 해체한 다음에 노즐부터 모든 부분을 다시 조립
3) 구동부의 볼트너트 다시 조임.
4) X, Y 구동이 문제일 수 있다는 생각에 모터드라이버도 교체 테스트
5) 있어보이려고 출력해 걸어둔 벨트 홀더 제거
어떻게든 지푸라기라도 잡는 심정으로 주말저녁내내 프린터를 다 뜯은 다음 교체하는 삽질을 진행했는데
그러나 모두 실패였다.
확신을 가지고 시도했기 때문인지 모두 실패로 끝나자 허탈한 심정이 더 커짐을 느꼈다.
이후 마음이 차분해졌을 때 생각을 해보니
나는 이 또한 잘못된 가정과 확신을 가지고 덤벼든 것이었다.
5. 가정과 전제에 대한 검증
잘못된 확신의 오류에 빠지지 않기 위해서는 내가 확신한 가정이 맞는지 실증할 필요가 있다.
그래서 초심으로 돌아가 다시 생각하기 시작했다.
지금 문제는 '압출부족' 일까? '레이어 흔들림' 일까?
지금까지 이것을 알기 어려웠던 까닭은 미니타노스의 팔에 있는 완장을 옆에서 보고 있기 때문이라는 생각이 들었다.
만약 압출부족이라면 실제로 해당 부분의 압출량이 줄어 있을 것이고,
레이어 흔들림이라면 압출량은 동일한데 레이어만 안쪽으로 시프트 되어 있을 것인데
그것은 옆에서만 봐서는 알 수 없는 노릇이었다.
"그렇다면 위에서 볼 수 있게 실험을 구성하면 되겠구나!"
너무 늦은 판단이었지만 그래도 지금부터라도 제대로 하자는 생각이 들어서 다음과 같이 테스트 gcode 를 만들었다.
총 1 layer 로 구성되어 있고, 외벽만 존재하는 사각형 2개의 모델링이다.
왼쪽의 사각형을 출력하고 나서 노즐은 '이동' 하고 오른쪽의 사각형을 출력한다.
만약 이동 후 압출부족이 맞다면 이런 형태에서도 압출부족은 나타나야만 한다!
라는 것이 나의 가설이었다.
출력 환경과 동일하게 조건을 맞추기 위해서 외벽 출력 40mm/s, 이동속도 120mm/s , retraction 2mm, 리트랙션속도 40mm/s 로 한 다음에 출력을 진행했다.
결과는 다음과 같았다.
아... 세상에서 가장 아름다운 출력물인 것 같았다.
진작 이 생각을 했다면
그 수많은 미니 타노스는 출력하지 않아도 되었을텐데 말이다.
출력 진행 순서는 다음과 같다.
왼쪽 사각형도 skirt 이후에 이동 후 출력을 진행하고 있어서 그 부분을 봐도 좋겠지만
앞으로 나는 오른쪽 사각형만을 통일해서 보려고 한다. 내가 가장 관심이 있는 선은 "5"번이다.
사이즈를 측정키 위해 Fusion360 의 canvas 기능을 이용해서 dimension 을 측정했더니 다음과 같이 나왔다. 절대적 수치는 베드 레벨링 이슈로 인해 크게 의미있는 값은 아닐 것이다. 중요한 것은 5번 위치와 6,7,8번 위치의 선폭의 상대적 비교인 것이다.
빙고!!!
결과가 나왔다.
내가 직면한 문제는 '압출부족' 이 맞았던 것이다.
6. Linear Advance 적용 결과
분명히 gcode 상으로는 이동 직후 정상적으로 압출을 하고 있다. 그리고 강변어부님께서 나의 gcode 를 이용해 출력한 것이 정상으로 나오는 것으로 보아 gcode 가 그부분만 압출을 낮게 만들어진 것은 아니라고 판단된다.
그래도 혹시 몰라 gcode 상의 압출량을 확인해보니 네변이 모두 같은 것으로 나와 있었다.
gcode 상의 압출량은 동일한데 실제 압출량이 차이나는 이유는 무엇일까?
그 이유를 일전에 읽었던 글로부터 그대로 가져와보면
근본적으로 압출은 유체를 다루기 때문이었다.
x,y,z 모터의 움직임은 고체를 다루기 때문에 움직임의 값을 입력하면 곧바로 반응하고
해당 움직임의 값이 그대로 적용이 된다.
그러나 유체는 그렇지 않다.
대표적인 것이 '거미줄'이다.
분명히 이동시 압출은 멈췄지만 이동하는 동안에 필라가 새어나오면서 없던 선이 만들어진다.
그래서 우리는 그것을 제거하기 위해서 인위적으로 압출을 다시 빨아들이는 방법을 사용하고 있던 것이다.
조금 정리해서 말하자면, X/Y/Z 는 선형적으로 변화하지만, E 는 비선형적이다. 라고 할 수 있다. 비선형적인 것을 선형적인 것처럼 만들어주는 펌웨어의 기능이 있으니 그것이 바로 Linear Advance 라는 기능이었다.
나는 혹시 그것이 나의 현재 문제를 해결해 줄 수 있지 않을까 하는 생각에 곧바로 테스트에 들어갔다.
펌웨어에서 Linear advance 기능을 enable 시킨다.
그리고, Marlin 사이트에 있는 Linear Advance Factor 값 테스트 gcode 생성기를 돌린다. (http://marlinfw.org/tools/lin_advance/k-factor.html)
이렇게 생성된 gcode 를 다운로드 받아서 출력을 진행하면
다음과 같은 출력이 나오게 된다.
속도를 상단 적층 속도를 기준으로 만들었더니 안착상태가 좋지 않았다.
하지만, 세차례 정도 진행하면서 K-factor 값을 좁혀갔고
나의 프린터에 맞는 값이 0.08 정도 임을 알게 되었다.
위의 K-factor generator 를 통해서 볼 수 있는 것은 Linear Advance 를 하게 되면 속도 변화 구간에 굵기를 달리 할 수 있다는 사실이다.
혹시, 내 문제도 이걸로 해결될 수 있을까?
다음이 테스트 출력을 진행한 결과이다.
K-factor 에 따라 나타나는 양상에 대해 여러가지 정보를 얻을 수는 있었지만,
결과적으로 Lin_advance 적용을 통한 문제 해결에는 실패하였다.
7. 이후 진행 예정사항
현재까지 나온 Fact 만을 정리해보면 다음과 같다.
1. 외벽 직전 travel 존재시 미니타노스에 완장이 나타난다.
2. 이 현상은 슬라이서의 문제는 아니다.
3. 이 문제는 레이어 흔들림이 아니라 압출부족 문제이다.
4. Lin_advance 로는 해결이 안된다.
이제 내 머리속에 남은 선택지는 보드교체와 extruder 자체의 변경이다.
보드 교체 이전에 보드에 의한 문제가 맞는지는 Klipper firmware 를 적용해서 확인해볼 예정이다.
그러나 대부분의 조립식 컴퓨터에서 적용하고 있는 ramps + Arduino Mega 조합이 그정도로 허술하진 않을 것 같다는 생각이 있어서
익스트루더 쪽에 희망을 볼 수 있을것 같다는 생각이 드는데,
또 모를 일이다. 직접 해보면 다른 결과가 나올지도.
현재 내가 눈독을 들이고 있는 녀석이다.
하지만, 돈 조금 아껴본다는 생각에서 저가의 e3d v6 clone 구입해놓은 상태이다.
배송이 3주에서 2달까지 보고 있으니 한참이 지나서야 테스트해볼 수 있을 듯 하다.
과연 이걸로 해결이 될까?
솔직히 해결이 되었으면 좋겠다.
하지만.. 혹시 해결이 안된다고 하더라도 너무 실망하지 않기로 마음을 먹었다.
인생도 그렇듯이 늘 성공만 있는 것은 아니고,
또 늘 실패만 있는 것도 아니기에.. 이번의 배움이 언젠가 쓸모있는 도움이 될 것이라고 믿는다.
더 나은 '미니 타노스'를 꿈꾼다.
김성민의 북리지 - 함께 성장하는 책 리더십 지혜
'▶3D 프린팅 > 삼디강좌' 카테고리의 다른 글
[김성민의 삼디 Life] 미니타노스 완장제거 (완결) (9) | 2018.10.09 |
---|---|
[김성민의 삼디 Life] 리트랙션에 영향을 주는 5가지 조건 (6) | 2018.09.12 |
[김성민의 삼디 Life] Anet A8 익스트루더 스프링 장력 조절할 수 있게 만들기 (2) | 2018.08.31 |
[김성민의 삼디 Life] 압출불량 경험기 (2) | 2018.08.24 |
[김성민의 삼디 Life] 큐라 영상 강좌 - (입문) 설치에서 기초활용까지 (0) | 2018.07.10 |