본문 바로가기

▶3D 프린팅/삼디강좌

[김성민의 삼디 Life] 3D 프린팅을 위한 수학 - 익스트루더 속도

[김성민의 삼디 Life - 3D 프린팅을 위한 수학 / 익스트루더 속도]


3D 프린터를 조립하고 불량을 만들어내고 

그걸 해결하는 실험을 하면서 조금씩 개선해나간지 한달여가 지났다.


지난 한주간만 따져도 불량을 잡으려다 나온 필라 찌꺼기들만 모아봤더니 

이정도 나왔다. 

엄청 말아먹었다는 뜻이다. 



그래도 이런 과정속에서 수확도 있었다. 

지속적으로 발생했던 베드 안착문제와

레이어 중에 출력이 없이 비는 공간이 발생하는 문제의 원인을 찾아냈다.

그리고 이를 계기로 그 전에 있었던 출력시 모호함까지 해결할 수가 있었다. (이는 별도로 시간이 되면 포스팅을 하도록 하겠다)


이제 프린터 개선의 막바지에 접어든듯 하였다. 

마지막으로 딱 한가지만 해결한다면 중국산 저가 조립식 프린터를 가지고는 기대이상의 출력을 하게 될걸로 생각된다. 



근데 이 마지막이 항상 문제다. 

여러가지 테스트를 진행해보았지만 무엇이 문제의 원인인지 아직 찾지 못했다.

까페 게시판에 의견을 구하는 글을 올렸었는데

한분이 익스트루더 속도가 너무 낮은 건 아니냐 하는 댓글을 달아주셨다. 

자신은 최대속도 설정을 x,y,z,e = 200,200,5,200 의 값을 준다고 하였으니

익스트루더 속도 최대설정값은 200mm/s 가 된다. 

나의 Marlin 펌웨어의 configuration.h 설정값을 보니 다음과 같았다.


DEFAULT_MAX_FEEDRATE {400, 400, 10, 50}


Extruder 속도가 50mm/s 

과연 저 값이 너무 낮은 것인가? 

이전부터 필라멘트를 내보내주는 Extruder 모터 속도에 대해 궁금해했었다.

그래서 나름 그 속도 설정이 어떻게 될지 궁금해서 고민을 해보았는데

그 결과를 잠시 공유하도록 하겠다. 




아주 간단히 3D 프린트 노즐 주변에서 일어나고 있는 모습을 그려보았다.

각각의 그림이 나타내는 것은 이미 대략 무엇을 의미하는지 알 것으로 여겨지지만 명확히 하고자 정리를 해보았다.


D : filament 직경 (PLA 1.75mm - 실측값 1.68 ~ 1.72 mm)

W : 출력 layer 의 Width (통상 노즐 hole size 와 동일 - 0.4mm)

l : 슬라이서의 layer height 설정값 (0.2mm)

Ve : 필라멘트 feed 속도 ( Extruder motor feed rate : ??)

Vf : 출력 속도 (나의 경우는 80mm/s)



계산의 편의를 위해서 두가지 가정을 해놓도록 하겠다.

물론 이 가정에 의해서 오차가 발생할 수 있지만 그 오차는 그리 크지 않을 것으로 여겨진다. 

첫째. 필라멘트가 노즐을 통과하더라도 체적변화는 없다. (실제로는 열에 의해 녹았다가 다시 굳는 과정에서 연결구조등의 변화로 달라질 가능성도 있다.)

둘째. 출력 layer 의 단면은 직사각형이다 (실제로는 옆면이 round 가 있는 형태이다) 



이렇게 가정을 해두면 프린터 속도에 따라 extruder 의 속도가 어느정도 값을 갖는지를 계산해 볼 수 있다.  이렇게 하는 이유는 Gcode 설정시 슬라이서 프로그램에서 그 어디에도 별도로 Extruder 모터 스피드를 지정해두는 곳이 없다는 점에서 착안이 되었다. 

왜 없을까?   생각을 거듭한 끝에 오히려 있어서는 안된다는 결론에 다다랐다. 

왜냐하면 익스트루더의 속도는 출력속도가 어떤지에 따라 연동되어 달라지게 될 것이기 때문이다. 

이 말을 당연한 말로 듣는 사람도 있지만 출력속도가 단지 x, y 축 모터 회전에 의한 움직임 정도로 이해하고 있던 나와 같은 왕초보는 새로운 눈으로 익스트루더를 보게 될 것이다. 

G code 를 메모장에서 열어 보면 다음과 같이 X, Y 위치값에 따라 Extruder 의 위치값이 지정이 되어 있는 것을 알 수 있다. 

즉 feedrate 을 정해주면 extruder 의 값은 슬라이서 프로그램이 알아서 매칭해주는 것이다. 



이제 본론으로 들어가서 아까전에 하던 이야기를 이어가도록 하겠다.

노즐을 통과하기 전의 체적과 통과한 후의 체적에 변화가 없다고 했으니

둘 사이의 동일한 시간동안 출력된 부피는 같아야만 한다. 

이제 가로x세로x높이 의 부피공식을 대입해서 등호로 놓기만 하면 되는 것이다. 

그게 아래 써 놓은 것이다. 



이를 우리가 알고자 하는 extruder 모터의 속도를 구하는 식으로 바꾸고 계산해보면 다음과 같다. 



이제 알게 된다. 만약 속도 80 mm/s 로 출력시에 extruder 모터의 속도는 2.66 mm/s 라는 것을 ..

처음에 몇가지 가정을 하였기 때문에 조금 변한다고 하더라도 4 mm/s 이상의 값은 나오기 힘들것으로 예상된다. 


그런 의미에서 앞서 나에게 extruder 값이 너무 작은게 아니냐고 했던 분의 200 mm/s 값 설정은 어떤가? 

사실 별 상관이 없다. 

왜냐하면 슬라이서 프로그램이 정상적으로 작동된다면 200 mm/s 근처까지 절대 갈일이 없기 때문이다.  물론 지금에 와서 보니 너무 크게 설정해놓은 것 같긴 하다. 하지만 그렇다고 문제될것은 없다. 내가 설정해 놓은 50 mm/s 도 마찬가지일 것이다. 


여기서 한가지 더 생각해볼 수 있는 것이다. 


우리가 필라멘트의 Steps per Unit 값을 calibration 해줄 때 보통 120 mm 위에 표시를 해두고 100 mm 의 필라멘트를 extrude 시킨 후 그 남은 길이를 통해 step 값을 보정해주는데, 이때 장력에 따라서 extruder 모터 스피드에 따른 feed 길이가 달라지기도 한다. 

가장 좋은 것은 나의 일상적인 출력속도에 따라 테스트시에도 그 속도를 사용해주면 좋겠다. 

G1 F300 E100  이라고 하는 값에서 E100 은 100mm 의 필라멘트를 압출하라는 것이고 F300 이 속도값이다. 

근데 여기서 300 은 분당 속도값이다. 초당으로 하면 5 mm/s 가 되겠다. 

만약 평소 출력속도가 40mm/s 로 한다면 앞선 공식에 넣었을 때 extruder 모터의 속도는 80mm/MIN 이 될 것이고

steps per unit 을 캘리브레이션 할 때 다음의 코드를 넣어서 해주는게 더 낫지 않을까? 


G92 E0

G1 F80 E100

G92 E0


이렇게 해도 저렇게 해도 대세에 지장이 없을 수도 있으나 나의 편집증적인 집착에 따르면 왠지 그 값을 맞춰주는게 낫지 않을까 싶다. 


...


마지막으로 이 작업을 통해서 우리가 알 수 있는 것 한가지만 더 공유하겠다. 


필라멘트는 공장에서 만든다. 

모든 만들어진 것에는 공차(오차)라는 것이 있다. 

tolerance 라고 하는 오차값을 필라멘트 스펙에 들어 있는데

이 값이 어떤 것은 0.05mm 라고 되어 있고, 어떤 것은 0.02mm 라고 되어 있다. 표시가 안된 제품이 많지만 대부분 ± 값인 것으로 여겨진다. 

그러면 필라멘트 굵기가 들쭉날쭉 할텐데 그에 따라서 출력물의 width는 어떻게 변할까? 

이것도 순전히 단순화 해서 생각해보았다. 

인터넷에서 찾은 사진 중에 가장 상황을 잘 설명해주는 그림 같아서 가져와봤다. 




만약 델타 W 값이 크다면 출력물 레이어의 층이 무척 거칠게 나올 것임에 분명하다. 그 값이 얼마나 될까? 


가장 극단적으로 tolerance 0.05mm 를 기준으로 계산해보았다. 

여기서 한 가지 가정을 해보자면, 일단 노즐에서 나오는 필라가 출력이 진행될때 layer height 는 변하지 않고 (z축 height 는 정밀하다고 가정) width 값은 출력양에 따라서 달라진다고 해보자. 즉 위 사진처럼 출력양이 필라의 굵기에 따라 들쭐날쭉해진다고 생각하는 것이다. 그것이 곧 W 로 나타나고 그 변화양의 정도를 계산해보았다. 


DL = 1.70mm (가장 얇은 곳의 필라 굵기)

DH = 1.80mm (가장 굵은 곳의 필라 굵기)

WL : (얇을 때의 출력물 width)

WH : (굵을 때의 출력물 width)





필라멘트의 공차값이 큰 것을 사용할 때에는 대략 그 공차값 만큼의 출력물 표면의 거칠기가 발생할 수 있음을 생각해보게 된다. 


따라서 내가 사용하고 있는 필라멘트가 어떠한 상태인지를 잘 아는 것이 좋은 품질의 출력을 위해 중요하지 않을까 싶다. 



이렇게 계산도 해보고 했으나 여전히 나의 문제는 해결을 하지 못했다 .


출력물의 표면 울퉁불퉁함을 단지 필라멘트의 공차 탓으로 돌리기에는 그 정도가 심하다고 보였다. (약 0.1mm 의 오차)

어쩌면 내가 알지 못하는 하드웨어 상의 유격이 있어서 그럴지도 모르겠다.  하나씩 찾다보면 언젠가는 해결하겠지 싶은 희망을 가지고 오늘도 취미활동을 하고 있다. 







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