elsa in mac

Marlin 펌웨어 - LIN_ADVANCE v1.5 업데이트 본문

3D 프린터/3D 프린터 관련 정보

Marlin 펌웨어 - LIN_ADVANCE v1.5 업데이트

elsa in mac 2018. 2. 27. 16:52

현재 Marlin 펌웨어의 최신버전은 지난 2017년 12월 26일자로 Release된 1.1.8인데요, 현재 BugFix 1.1.xBugfix 2.0.x 버전에서 Linear Advance의 1.5 버전이 테스트 되고 있습니다.  아마, 차기 버전에서 정식으로 업데이트가 될 것 으로 보이는데요..

Linerar Advance의 알고리즘이 대폭 변경되면서, 기존에 사용하시던 분들은 향 후, marlin 업데이트와 관련하여 새롭게 변경된 내용을 파악하실 필요가 있습니다.  

Marlin Linear Advance
3D프린터는 기본적으로 X/Y/Z 이렇게 3축의 Motion으로 Melting된 필라멘트를 적층해서 3D모델을 출력하는 것이 기본 컨셉입니다. X/Y/Z은 나름 모션 동기화가 맞춰져 있습니다. 속도와 가속도에 따라 필라멘트 압출량도 동기화되어 변화되어야 하므로 기본적으로는 Extruder도 X/Y와 동기화가 되어있기는 하지만, 물리적으로는 그렇치 못한 것이 한계 입니다. 이유는 단위시간당 압출 변화량이 X/Y의 속도변화량을 따라갈 수 없기 때문입니다. 단위시간당 필라멘트 용융량이 제한 적이며, 미세한 압력이 변화가 실제 프린팅의 결과에 반영되기까지는 시간이 걸립니다. 따라서, 엄밀히 말하면 "동기화를 따르고 있지만, 동기화 되지는 않는다"라고 말하는 것이 맞습니다. 

또한 이러한 특성때문에 비교적 저속에서 출력 시, 프린팅 품질이 좋은 이유가 되기도 합니다. 고속 출력 시 보다 동기화의 괴리 현상이 줄어 들기 때문입니다.   

이러한 한계상황을 타계하기 위해 3D프린터의 펌웨어들은 저마다 특별한 솔루션을 제공하고 있습니다. 대표적인 것인 RRP의 Pressure Advance와 Marlin의 Linear Advance가 그것이죠. 때로는 Slicer에서 기능을 제공하기도 합니다. 

Marlin의 Linear Advance 기능은 출력 속도(X/Y의 속도)변화 시 이에 준하여 일정한 step 만큼의 압출량을 강제로 그리고 신속하게 조정을 하는 방법의 일종으로 retraction/unretraction 혹은 압출 중지/개시의 방법을 사용합니다. 즉, 속도가 줄어드는 가속의 차 만큼 특정 비율의 압출을 빠른 속도로 제어 함으로써, 실제 출력에 나타나는 under extrusion(압출 부족) 또는 over extrusion(압출 과다)를 제거하는 것입니다.  특별히 방향 전환 시에 나타나는 over extrusion을 제거하는 것이 대표적이기 때문에, 방향 전환에 따른 품질 저하를 막는 방법으로 알려져 있습니다 만, 모든 출력에서 속도의 변화가 있더라도 Extrusion Width를 유지하는 것에 목표가 있다고 할 수 있습니다.  

Linear Advance 1.5
기존의 1.0버전에서는 Linear Advance의 기능을 활성화 시키면, K 값에 따라 Extruder의 기어가 미친듯이 드르륵~ 거리는 바람에, 좋은 취지에도 불구하고 이 기능을 사용하기에 꺼리는 분들도 계셨을 겁니다. 

하지만, 이번 1.5 버전에서는 앞서 언급해 드린데로.. K값의 의미가 바뀌면서 알고리즘도 변경된 것으로 알려져 있습니다.  일단, K 값의 의미가 Extruder의 단위(1mm/s) 압출속도에 대한 필라멘트 압축량(compression)으로 mm/(mm/s)라는 단위를 갖게 되었으며, Extruder 속도의 고정된 보정값으로 작동하기 때문에 프린팅 시, 기존과는 달리 실 시간으로 extruder step값을 얻기 위해 복잡한 내부 계산을 하지 않아, 이전 대비 CPU 부하를 줄일 수 있음은 물론, 고속 프리팅 시 보다 빠르고 부드럽게 대응할 수 있게 되었습니다.  

 또한, 사용자가 설정한 jerk 값의 제한을 받기 때문에, 고속 프린팅 시 LIN_ADVANCE 동작에 따른 extruder skip 현상이 발생하지 않는 것도 장점이라고 합니다.  

간단히 정리하면, 기존 버전 대비, 매우 부드럽고 신속하게 대응하며, 탈조나 시끄러운 소리를 내지 않습니다. 

K 값의 의미가 변경되었기 때문에, K값의 입력 범위도 바뀌게 되는데. 기존에는 수십에서 수백에 이르는 큰 값을 사용했지만, V1.5에서는 0 ~ 2.0의 작은 값이 사용되며, 해상도는 0.01 입니다.   참고로 펌웨어를 업그레이드 하고, K값을 기존의 큰 값으로 그대로 적용한 경우 프린트가 매우 매우 느리게 동작합니다. 

기존 LIN_ADVANCE 1.0 에서는 CPU 부하가 높기 때문에, 통신 속도를 115200 이상 올리지 말것을 권고 했었고, linear advance 동작으로 인해 extruder에 부가적인 동작이 발생 하면서, extruder gear가 갈리거나 깨지는 등 손상될 수 있었지만, 1.5 버전에서는 이러한 문제점들이 더 이상 발생하지 않습니다. 

Linear Advance는 변속/방향 전환 구간에서 최적의 압출 압력을 제어하는 기능이기 때문에, 이상적(ideal)으로는 Retraction 값을 을 0 에 가깝게 설정할 수 있지만, 이는 어디까지나 Direct Drive 방식에서 대부분 효과가 있으며, 상당히 긴 PTFE 튜브를 사용하는 Bowden 방식에서는 Direct Drive 방식에 비해 retraction 값을 줄이는 효과를 보기는 힘듭니다. (Retraction 값은 Extruder의 방식차이 이외에도 많은 부분에서 차이가 날 수 있습니다.) 그럼에도 불구하고 Linear Advance 기능을 사용하지 않았을 때 보다 사용할 때의 품질 향상을 얻을 수 있는 것은 분명하지요.... 

실제, 펌웨어를 업데이트 하고, 적절한 K값을 찾은 후,  20mm Test Cube를 출력해 보았습니다. 

K Factor Calibration Pattern Generator로 패턴을 출력한 모습, K=0.9가 가장 좋아 보인다.

시범 출력한 20mm 큐브

3D프린터 : ELSA-1(가칭) (DIY Frame Kit, cartesian FDM)
Extruder : Bowden
Hotend : CR-10
Nozzle : MK9, 0.4mm
필라멘트 : eSun PLA+
Nozzle/Bed 온도 : 198도 / 65도
Retraction : 3.8 mm
Slicer : S3D
Marlin 버전 : Bugfix 1.1.x (최신버전)
Linear Advance K-Factor : 0.1
출력속도 : 70mm/s
(outline : 50%, Infil : 100%, X/Y movement : 90mm/s, Z movement : 12 mm/s)


프린터의 튜닝이 완벽하게 이뤄지지는 않은 상태이지만 70mm/s의 다소 빠른 출력임에도 불구하고, 매우 정숙한 반응에 놀라웠고, 예상보다 출력이 잘된 것을 확인할 수 있었습니다.  Marlin 차기 정식 버전이 기대가 됩니다. ^^  


공유하기 링크
Comments