본문 바로가기

Make It Yourself

초저가형CNC조각기 제작기 1



자작CNC조각기 What to Make Machine!



지난 번에 올렸던 초저가형CNC 자작도전의 결과를 올린다. 그러나 역시 한번의 제작으로는 원하는 수준의 설계를 얻어내기는 어려웠다. 어렵사리 어느 정도의 정밀도를 달성하긴 했으나 수많은 수정작업의 결과이지 제작이 쉬운 설계는 절대 아니었다.


아무튼 이번 작업으로 개선안은 나오게 되어 버전2의 도면까지 올리긴 하겠지만 그건 검증이 되지 않은 것이니 혹시라도 그걸 보고 만드는 사람이 있다면 그 점을 확실히 감안하고 제작에 들어갈 것을 당부한다. 당연히 오픈소스 프로젝트의 소스를 보고 하는 제작의 결과는 전적으로  제작자 본인의 책임이다. 그래도 확실히 해두는것이 좋으니까 그점 분명히 밝힌다.


보통 CNC라고 많이 부르지만 그것은 정확한 명칭은 아니고 그 뒤에 밀링이나 선반, 혹은 조각기 등의 말이 더 붙어 줘야 제대로 된 기계 종류의 이름이 된다. 공작기계들은 여러가지가 있기 때문에 CNC라고만 해서는 컴퓨터로 자동제어 된다는 의미만 있을뿐 밀링머신인지 선반인지 조각기인지 3D프린터 인지에 대해서는 아무 말이 없는 것이기 때문이다. 일반적으로 그냥 CNC라고 하면 CNC밀링이나 조각기를 말한다. 


내가 이번에 만든것은 그 중에 CNC조각기로 플라스틱류나 목재 등 상대적으로 무른 재료의 가공을 주 목표로 하는 것이다. 금속도 무른 알루미늄정도는 이송속도만 줄여주면 느리게나마 가공은 가능할 것으로 본다. 


그리고 CNC는 제어할 수 있는 축의 수도 매우 중요하다. 이번에 만든 것은 3축까지 제어할 수 있다. 추가로 한축 정도를 더 달 수도 있긴 하다. 그러려면 모터 컨트롤러도 추가해야 하고 패럴렐포트 인터페이스에도 변경이 필요하다. 


애초의 설계목표에는 3D프린터도 겸하겠다는 원대한 포부(?)가 있었으나 작동해본 결과 상대적으로 고속일 필요가 있는  3D프린터에 대비해 속도가 너무나 느리기 때문에 3D프린터로 쓰다가는 프린팅 시간이 너무나 오래 걸려서 별로 쓸만하지가 못하다는 생각이 들어서  3D프린터는 별도로 제작하기로 했다. 그래서 3D프린터를 겸하기 위해 설정한 Z축 이동거리 150mm는 과도한 설정이 되어 괜히 정밀도만 떨어뜨리는 결과를 가져왔다. 하지만 다행히 실수로 Z축 이동거리가 130mm로 줄어 드는 바람에 실수가 오히려 정밀도 하락을 줄여주는 의외로 좋은 결과를 가져오기도 했다. 새옹지마란게 딱 이런걸 두고 하는 말이 되겠다. 


그나마 모터를 중간에 토크 3.7kg-cm 짜리에서 토크 9Kg-cm 짜리로 바꿨는데도 최고 이송속도가 23mm/s정도 밖에 안나온다. 모터를 바꾸기 전에는 5mm/s가 최고 이송 속도 였다. 작은 모터로는 가속을 적용하지 않은채 테스트를 해서 최고 속도는 좀 더 나올수도 있었을지 모르지만 애초에 쓰려던 작은 모터는 이정도 크기의 CNC에 적용하긴 너무 작은 모터였다.


최고 이송속도는 공구가 절삭을 하고 있지 않은 상태에서 단지 전후 좌우 상하로 이동하기만 할 때의 속도인데 이 속도가 빨라야 그만큼 작업 시간을 줄일수 있다. CNC에서는 어차피 절삭 이동속도가 느리기 때문에 비절삭시의 이송속도가 좀 느려도 전체 속도에 큰 차이가 없지만  3D프린터는 가느다란 노즐로 녹은 플라스틱을 쏴주는 방식이기때문에 이송에 대해 부하가 적어서 고속이동이 가능하고 또 노즐이 가늘기 때문에 한 층을 쌓는데도 상당히 여러번의 왕복이송이 일어나야하기 때문에 이송 속도가 느리게 되면 하나 만드는데 뻥조금 섞어서 3박4일(?)이 걸릴수도 있기 때문에 빨라야 한다. 


그래서 이송 메카니즘도 스크류방식보다 벨트드라이브 방식을 주로 쓰고 있다. 벨트 드라이브 방식은 모터 축 한 회전당 이송거리가 스크류 방식에 비해 비약적으로 늘어난다. 이번에 사용한 10mm 굵기의 사다리꼴나사는 한회전당 이송거리인 피치가 2mm이나 타이밍벨트를 쓰면 지름이 30mm인 풀리를 쓴다해도 한 회전에 30x3.14 이니까 대충봐도 초당 100mm는 움직인다. 대신 정밀도가 떨어지게 되는데 스테핑 모터의 마이크로 스테핑과 풀리크기 등을 적절한 수준에서 결정해서 정밀도와 속도에서 최적의 조합을 찾아야할 것이다.


그리고 미스미라는 회사의 온라인샵에서 구입한 샤프트는 치수보다 거의 0.1mm가 가늘어서 부싱이 헐렁헐렁할 정도 였다. 샤프트와 부싱은 각 축이  움직일때 가이드레일 역할을 하는 것인데 부싱은 정확한 치수였으나 샤프트가 예상보다 오차가 너무 커서 Z축과 X축의 흔들림이 너무 심했다. 미스미는 일본회사이고 부품 제작도 직접 일본에서 해서 주문하면 직접 일본에서부터 배송절차가 시작되는데, 정밀하기로 소문났'던' 일제가 이정도라니 너무 실망이었다. 일본은 정말 기울어가고있는게 확실한 듯 하다. 

게다가 엔드밀을 돌려주는 스핀들을 만들 부품으로 리지드 커플링을 샀는데 한쪽 구멍은 6mm이고 반대편엔 3mm구멍이 뚫린금속봉의 모양으로써 양쪽의 구멍은 정확히 외경과 동심을 이룰 필요가 있는 부품인데 3mm 짜리 구멍이 중심에서 어긋나있어서 엔드밀을 끼우고 돌리기엔 불가능할 정도였다. 동심이 맞는 구멍은 선반을 이용해야 하는데 그냥 드릴링 머신으로 뚫은듯 싶다. 샤프트 굵기 보다 더 실망 스러운 부분이 아닐 수 없다.

결국 샤프트 문제는 폴리아세탈 수지로 된 플라스틱 부싱을 한쪽을 잘라서 굵기를 가늘게 하는 방법으로 해결했으나 다시하고 싶은 작업은 절대 아니고 누구에게도 권하고 싶지 않은 방법이다. 

스핀들은 그래서 결국 사용중이던 조각기를 끼워서 일단 쓰다가 나중에 업글하던지 하기로했다. 며칠 써본 바로는  조각기는 너무 시끄러워서 아파트에선 못쓰겠어서, 밀링용 척 저렴한걸로 하나 사서 베어링이랑 파이프랑 조합해서 RC용 브러쉬리스 모터로 돌리는 걸 하나 만들어봐야겠다는 생각이다.

이 CNC는 컴퓨터에서 돌아가는 CNC제어 프로그램이 패럴렐포트를 통해서 스텝모터 드라이버를 돌려주는 방식으로 제어가 된다. 이것말고도 대부분의 자작 CNC들이 다 그런방식을 쓰고 있다. USB를 통해서 제어되는 것은 드물다. 근래에 아두이노를  G코드 해석기로 써서 CNC를 돌리는 rStep이라는 프로젝트가 진행되고 있기는 하다. 

PC에서 돌아가는 CNC제어 프로그램으로는 윈도우즈용으로 Mach3가 있고 리눅스용으로 EMC2가 있다. 마하3는 공짜로 다운로드는 받을 수 있으나 제한이 걸린 프로그램이고 EMC2는 오픈소스라서 완전 무료다. 이 프로그램들은 패럴렐포트를 통해서 각 모터에 들어갈 펄스와 회전방향 스핀들 속도 등을 제어해주고 리미트 스위치 서버모터를 사용한다면 인코더 입력등을 받아들이게 된다. 

모터는 서버모터와 인코더를 쓰는 피드백 방식과 스텝모터를 쓰는 피드백 없는 방식 두가지가 보통인데 요즘엔 스텝모터와 인코더를 쓰는 방식의 상용CNC도 있다. 인코더 들어간 CNC자작했다는 사람은 아직 못봤다.  내가  프린터에서 뜯어낸 스트립 쿼드러플 인코더를 써보려고 했으나 패럴렐포트가 두개는 있어야 입력을 여섯개 이상 쓸 수 있어서 일단 이번엔 포기했고 나중에 시간나면 시도해보고는 싶다.

패럴렐포트는 25개의 핀으로 이루어져 있지만 그중에 뒷번호 핀 중 8개나 GND로 쓰고 입력이 다섯개 밖에 안되기 때문에 인코더 당 두개가 필요한 피드백 방식을 쓰려면 두개의 패럴렐포트가 필요하다. 어떤놈인지 참 지랄맞게 해놨다. 에잇
 참고로 패럴렐포트 그러니까 병렬포트는 입력모드와 출력모드 두 가지로 세팅이 가능한데 각각의 모드에 따라 입출력핀 매핑이 바뀐다. 

컴퓨터의 병렬포트에서 나온 신호는 곧바로 스텝모터 드라이버로 들어갈 수 있는 디지탈 신호이다. 스텝모터 드라이버에는 펄스를 하나 넣어주면 스텝모터가 제조시 정해진 각도 만큼 돌아가는데 보통 CNC용으로는 펄스당 1.8도 짜리 스텝모터를 많이 쓴다. 그런 모터는 200펄스에 한 바퀴를 돌게 되는 것이다. 스텝모터 드라이버는 중요한 스펙이 전류다. 몇 암페어(A)까지 전류를 줄 수 있으냐로 능력을 가르는 것이다. 전류량이 커지면 더 강한 스텝 모터를 돌릴 수 있는 것이다. 모터에도 정해진 전류치가 있어서 드라이버와 서로 맞춰서 써주면 된다.  정확히 말하자면,  스텝모터 드라이버에는 전류 제한 조절회로가 있어서 모터에 맞는 전류까지만 제공하도록 조절을 해주니까 모터에 맞도록 드라이버를 조절해 주어야한다. 요거 조절 잘못해주면 모터 돌아가신다.

스텝모터드라이버는 디바이스마트나 엘레파츠등의 온라인샵에서도 살수 있지만 페럴렐포트와 연결되는 부분은 팔지 않는다. CNC용 모터컨트롤러를 사려면 CNC자작 카페의 공구를 이용하거나 diycnc.net같은 곳에 가야 한다. 나는 애초3D프린터와의 겸용을 목표로 했던 터라 오픈소스 3D프린터인 reprap.org 의 USB포트를 통한 아두이노를 이용한 방식을 겸하겠다는 생각으로 자작을 시작했으나 결국 중간에 그게 어렵다는 걸 깨닫고 그냥 PC 병렬포트 전용으로 만들어 버렸다. PCB도 직접 뜨려고 했으나 막판에 빵판에 회로 꾸며서 테스트하다가 헤메이느라고 진이 빠져서 그냥 만능기판에 땜질해서 만들어 버렸다.

컨트롤러 만들다 헤멘사연은 정말 생각만해도 미칠것같은 당시의 기분이 떠올라 가슴이 갑갑해진다. 뭐 새로울 것도 없고 어렵울것도 없는 뻔히 되어야 하는게 안되서 2주간 붙들고 있다보니  나중엔 이러다 사람 미치는게 아닌가도 싶었다. 당시에도 그 문젠 한가지가 원인이 아닐꺼랑 생각은 했지만 나중에 알고보니 정말 서너가지의 원인들이 번갈아가며 겹쳐서 일어난 인재였다. 원인제공자는 바로 나. 

애초에 페럴렐포트 주소를 매뉴얼에 나온대로 '웬만하면 다 이 주소다'라는 말을 믿고 바꾸지 않은데서 문제는 시작됐다. 내 패럴렐포트카드는 웬만한 분이 아니셨고 내 윈도우즈에선 메뉴얼과 달리 어딜봐도 포트 주소를 볼수가 없었고 리눅스에서도 주소보는 명령어를 치면 하나가 아니라 여러 개가 나오는 바람에 제대로된 주소를 찾는데 시간이 걸렸었고, 그 사이에 결선실수로 칩 하나를 태워먹었고 그 후에 페럴렐포트 주소를 제대로 세팅한 후에는 태워먹은 칩과 멀쩡한칩을 혼동했으며 심지어 칩 태울때 페럴렐포트의 핀3개도 함께 맛이간걸 나중에 알게 되었다.

그리고 아두이노로 만들어낼 펄스로도 테스트해볼때도 모터는 돌지 않았었는데, 나중에 실수로 아두이노의 출력 신호에 손을 댔더니 모터가 도는것이다. 그래서 손을 흉내내어 아주큰 저항을 신호선에 붙어서 GND에 붙여주니 마찬가지로 모터가 돈다.  이건 아직도 왜 그런지 이유를 모르겠다. 

게다가 rStep프로젝트에서 하는 대로 아두이노를 이용해서 컨트롤 하는 방식도 시도해봤으나 마침 내 맥에서는  당시의 rStep용 아두이노와 연동해서 돌리는 PC용 자바 프로그램이 오류로 돌지 않았다.

위에 말한 다섯가지 이유 정도가 복합적으로 섞이니까 뻔한 스텝모터 드라이버로 2주를 머리 쥐어 뜯으며 보낼 수 있었다. 내 평생 그런 고행은 처음 해본듯싶다.  다시는 겪고 싶지 않은 경험이다. 그 2주동안 나이들면서 약간이나마 부드러워졌던 내 까칠함이 다시 원상복구되고 심지어 악화되지 않았을까 심히 걱정이다.  고등학교때 기술선생님이 말해준 오토매틱기어 설계하다가 미쳐버린 어떤 엔지니어 이야기가 남이야기 같지 않았다.

첫 자작기는 이렇게 횡설수설만 하다가 끝난다. 자세한 제작방법에 대해서는 차차 써나가기로 하겠다.

끝으로 가느다란 3mm엔드밀로 힘겹게 베드 평탄작업을 하는 동영상과 함께 초저가형CNC조각기 제작기1을 마친다.




아래는 라이노로 그린 도면입니다. 모터 마운트 홀도 없고 전산볼트를 박은 구멍도 없군요 참고만 하시기 바랍니다.

WTM3_18_rhino4.3dm

부품목록보기