본문 바로가기

▶3D 프린팅/범블비 자작기

[범블비 델타 18] 센서리스 호밍(sensorless homing) 문제의 원인을 찾고 첫 큐브를 출력하다.

[범블비 델타 18 - 센서리스 호밍 문제의 원인을 찾고 첫 큐브를 출력하다]


바로 아침까지만해도 센서리스 호밍은 믿을게 못된다고 생각하여 포기하려고 했었다. 

그런데 다시 살려서 사용할 수 있게 되었다. 



센서리스 호밍을 이용해서 오토홈만 하면 거리가 1mm 가량이 틀어지는 바람에 제대로 활용을 못할 것으로 여겨졌으나 0.1mm 가량의 오차내로 줄이는게 가능하였다. 


나의 능력으로는 이 문제를 도무지 해결할 수 없었을 것이다. 

카페에 글을 올렸는데 '서른즈음에' 라는 아이디를 쓰시는 분께서 내게 정확히 필요한 정보를 공유해주셨다. 



생각해보니 서른즈음에 님이 그 유명한 베드인 서른님 베드를 만드신 분이 아니신가 싶다.  그분이 올려주신 링크의 영상은 다음과 같았다. 



결론적으로 말하자면 내가 가지고 있던 문제중 하나가 오토호밍시에 모터가 한번 쿵~하면서 프레임을 치는 순간이 있었는데,  그것이 센서 정확도를 떨어뜨리는 상황이었던 것이다.  그래서 쿵 하면서 치는 문제를 해결하게 된다면 심하게 높이 센싱이 차이가 나는 문제는 없어지게 된다는 이야기였다.  본 영상의 아래에 코멘트에는 아주 상세하게 해결법이 적혀 있었다.  내게는 그야말로 보물섬의 숨겨진 황금을 발견한것만 같았다. 


mariln2.0 기준입니다. marlin\source\module\delta.cpp 에서 251번째 라인 부근쯤에 endstops.validate_homing_move(); 구문이 있습니다. 이 아래에 아랫쪽 내용을 삽입하시면 됩니다. #if ENABLED(SENSORLESS_HOMING) //add shareparts destination[Z_AXIS] = destination[Z_AXIS] - 10; buffer_line_to_destination(homing_feedrate(X_AXIS)); planner.synchronize(); #endif 오토홈 동작 원리 1. 세 기둥중에 하나의 스위치가 눌릴때까지 위로 이동. 2. 하나가 눌리면 다시 x,y,z 축 스위치가 순서대로 눌림 하지만 센서리스 호밍을 할 경우에 3축이 동시에 닿게 되면, 이미 닿아있는 기둥에 다시한번씩 트리거를 하게 되면서 소리가 발생합니다. 이걸 해결하는 가장 간단한 방법은, 첫번째 트리거가 발생 된 후에(1번동작) z축을 일정거리 다시 내려주는 코드를 넣어주면 간단히 해결됩니다.


그래서 말씀해주신 코드를 해당하는 위치에 넣어 펌웨어 업데이트를 하였다. 


그게 다였다.  그리고 나선 1mm 씩 차이가 나는 문제가 말끔하게 사라져버렸다.  1mm 씩이 차이가 나고 있었기 때문에 Auto calibration 이든 그냥 수동 캘리브레이션이든 endstop 위치가 매번 달라져 있기 때문에 정확한 calibration 이 안되고 있었던 것이다. 그러니 원래 사이즈보다 작으면서 tower angle 이 뒤틀린채 결과가 나왔던것이 아닌가 싶다. 


여전히 sensorless homing 을 가지고도 0.1mm 정도의 오차가 있기는 하다. 이 오차는 쉽게 잡힐 것 같지는 않다. 하지만 1mm 에서는 보이지 않던 희망이 보였다. 0.1mm 라면 완벽하진 않겠지만 그래도 출력을 진행해볼 수는 있는 것이었다. 그리고 바닥에 라프트 등으로 어느정도 범퍼영역을 주면 나쁘지 않을 듯 했다. 


이 문제는 나의 능력으로는 어떻게 할 수 없는 부분이었는데 아주 운좋게도 한달전에 미리 테스트를 해서 내부 코딩까지 아무 문제 없게 만들어놓으신 sparepart 님과 그걸 알려주신 서른즈음에님이 있었기에 해결할 수 있었다. 이자리를 빌어 감사의 말씀을 드린다. 


이걸 기반으로 해서 auto calibration 을 다시 하니 iteration 을 통해 좀더 근접하게 캘리브레이션이 되는듯한 느낌이 들었다.  이제 되었어! 라고 생각하고 그 상태에서 큐브를 출력해보았다. 



그런데 뭐가 이렇게 뚱뚱한거야? 

이제는 제대로 될 줄 알았는데 그게 아니었다. 

xy 사이즈가 맞질 않는 것이다. 


이것의 문제는 계속해서 의심되던 것이었다.  오토레벨링 센서라고 만들어놓은 것이 접촉방식이다 보니 오토캘리브레이션을 진행할 때 센터의 경우는 마그네틱볼이 세군데에서 균등하게 밀어주기에 틀어질 염려가 없지만 외곽으로 나가서 측정할 때에는 접촉식 센서를 인식시키기 위해 누르는 힘에 의해 볼이 살짝 밀려나는게 눈으로도 관찰이 되었다. 크게 잡아서 1mm 가량을 들썩거리는 상황을 볼 수 있었는데, 이게 영향을 주었음이 틀림 없다고 보았다. 



오토캘리브레이션 장치는 문제가 없다고 여겨진다 상당히 잘 작동한다. 문제는 접촉압력식 센서인데 그것이 마그네틱 볼 조인트와 궁합이 맞질 않아서라고 본다. 만일 유니버설 조인트 방식의 일반적인 델타 로드암을 사용하는 분이라면 60원 스위치 오토레벨링 방식도 나쁘지 않다고 권해줄 수 있다.  하지만 마그네틱 볼 조인트는 이 문제뿐만 아니라 여러가지로 신경쓰이는 부분이 많은게 사실이다. 뭔가 산뜻한 모습이어서 추진해보았지만 다른사람들에게 추천해주고 싶은 마음은 들지 않는다. 


어쨋든, 이것을 해결해야 한다.  그래서 어쩔 수 없이 나는 수동 델타캘리브레이션을 하기로 하였고, 예전에 델타에 대해 잘 모를 때 작성해놓은 오토레벨링 방법을 가져다 쓰게 되었다.  (참고 : https://youtu.be/IwFsjf8DLDM ) 그 당시는 오토레벨링과 캘리브레이션의 차이도 모른채 영상을 남겼으니 말 다했다고 본다. 그러나 그 영상의 내용은 1년이 지난 지금 내겐 매우 유용한 정보가 되었다.  나는 영상에 나온바와 같이 escher 3D 라고 하는 사이트의 로직을 이용해 수동으로 한땀한땀 위치를 이동해 측정을 하여 delta radius 와 endstop 의 값을 정하였다. (escher 사이트 : https://escher3d.com/pages/wizards/wizarddelta.php) 한번에 잘 안되고 자꾸만 바뀌는 바람에 (아마도 높이 센싱의 0.1mm 차이가 계속 영상을 주지 않나 싶다) 대략 20번 이상 캘리브레이션을 진행했다.  매번 할 때마다 수동으로 7개의 점을 이동하며 종이를 가져다 대고 했으니 정말 진이 빠지는 일이었다.  그래도 끝내 대각선 방향의 특정 위치는 도무지 맞출 수가 없어서 그냥 어느정도 선에서 타협하기로 하였다. 


그리고 나서 큐브를 출력했더니 다음과 같은 결과가 나왔다. 


왼쪽의 회색은 제대로 캘리브레이션을 진행하기 전의 문제가 참 많던 녀석이고 오른쪽이 새롭게 수동 캘리브레이션을 마치고 출력한 결과이다. 

아직 완벽하진 않지만 수없이 고생하면서 낸 결과여서인지 이게 출력을 마칠때즈음에는 정말 감격스러웠다. 

버니어 캘리퍼스로 사이즈를 측정하니 약 19.8~20.0 정도 나오는걸 확인했다. 나는 FDM 방식에서 이 정도면 양호한 거라고 생각한다. 

이전에 쿨링이 약해서 패턴이 무너졌었는데 쿨링팬을 교체하고 나니 많이 개선이 되었다. 특히 쿨링팬이 직접 바람을 불어주고 있는 Y 쪽은 거의 무너지지 않고 패턴이 잘 나왔으며, X 쪽은 여전히 무너짐이 있으나 팬을 그쪽에 추가로 장착할 예정이니 조만간 이것도 해결이 될 수 있지 않을까 싶다. 


참고로, 이 큐브가 나오기 전에 삽질한 결과도 공유를 해본다. 



계속 탈조가 나는 상황을 겪었다. tmc 드라이버보드의 전매특허인 Stealthchop 모드가 원인인가 싶어서 spreadcycle 모드 전용으로 바꾸었더니 문제는 해결되었다. stealthchop 모드는 정말 매력적인 방식이다. 프린팅을 하고 있는데 바람소리 말고는 출력소리가 전혀 나지 않는 수준이었다.  하지만, 내가 잘 다루지 못하는지 속도가 높은 구간 이동속도가 120mm/s 로 지정해둔채 출력해서인지 계속해서 탈조가 발생하였다. 향후에 다시 stealthchop 기능을 사용하게 된다면 이동속도만이라도 줄여서 진행해볼까 생각이 든다. 



Spreadcycle 모드이지만 그래도 상당히 정숙한 편이다. 바람소리가 거슬릴정도이니 말이다.  처음 적용한 bmg dual gear 익스트루더도 상당히 만족하고 있다. 처음에는 필라 넣고 빼는게 수동으로 하던게 익숙해서인지 불편했었는데 마를린 펌웨어의 기능을 찾아서 해결할 수 있었다.


이번 범블비 델타 프로젝트를 진행하며 32비트 보드적용, tmc2130 spi 모드 적용, 발열을 막을 모터 선정고민, 센서리스 호밍 적용, 마그네틱 볼 조인트 방식 적용, LM 가이드 적용 등 새롭게 도전한 부분이 많은 것 같다. 하나의 델타 프린터이지만 나름 배운게 많은 듯 하다.  그 부분에 대해서도 앞으로 하나씩 공유할 기회가 있을 거라 생각하며 이번 범블비 델타 자작 프로젝트를 마무리 하고자 한다. 



모두들 즐거운 happy printing 되시길 바랍니다. 





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