크리에이티브 커먼즈 라이선스
Creative Commons License

Home 명령으로 엔드스톱 체크시까지 이동시키는 부분을 설정하는데 며칠이 걸렸네요


계속 뭔가 생각했던 방향하고 맞지 않아서 반대로 설정했다가 정상으로 설정했다가 


그래도 뭔가 또 안맞고 기타등등 이것저것 수정하느라 시간이 오래 걸렸습니다. 





어이없게도 원인은 이 부분이었습니다. default 값이 [INVERT_Y_DIR true] 로 되어 있었습니다. 


저는 위에서부터 하나씩 체크하면서 펌웨어를 수정하고 있었는데


이 부분이 700번대 라인에 있어서 원인을 모르고 다른 곳을 수정하기만 했네요


다시 원본을 다운받아봤는데 기본 github 소스에 이렇게 되어 있었습니다. 










위 문제때문에 COREXY 로 제작했는데도 제대로 움직이려면 COREYX로 설정해야 했고요









HOME_DIR 방향도 바꿔야 했습니다. 


Z축 방향도 반대였는데 펌웨어 문제가 아니고 제 착각이었습니다. 


베드를 움직이게 만들었기에 베드가 내려가는 것이 Z+인데 


기존 델타 쓰던 버릇에 이걸 Z- 로 생각하고 있었습니다. 



지금은 

INVERT_Y_DIR false

#define COREXY  

#define X_HOME_DIR -1

#define Y_HOME_DIR -1  

#define Z_HOME_DIR 1 

이렇게 해서 깔끔하게 모두 해결되었습니다. 



XY 축은 min 방향에 엔드스톱이 있고 Z축은 max 방향에 엔드스톱이 있어서 


#define Z_HOME_DIR 1 입니다. 




이제 익스트루더 스텝 설정과 익스트루더 설정을 수정해야 합니다. 





저작자 표시 비영리 동일 조건 변경 허락
신고

'Making > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 8  (0) 2017.07.26
CoreXY - 조립중 7  (0) 2017.07.20
CoreXY - 조립중 6  (0) 2017.07.07
CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
CoreXY - 조립중 4  (0) 2017.06.21
크리에이티브 커먼즈 라이선스
Creative Commons License


한동안 진행못한 이유 1. 


새끼고양이 한마리를 구조했습니다.  그냥 두었다고 꼭 죽지는 않았겠지만


일단은 병원 치료가 필요한 것 같아 포획해서 치료후 보호중입니다.  








지금은 건강해졌고 입양 알아보고 있는 중입니다. 


제가 고양이를 좋아해서 키우고 싶긴 하지만 가족중에 고양이알러지가 심한 사람이 있습니다. 












지난번에 라벨링이 잘못되었고 리밋 스위치 제작이 잘못되었다고 했는데 아니었습니다. 


이 부분 원인 찾느라 시간이 더 걸렸네요. 








원인은 회로제작 실수였습니다. 제가 처음 만들었던 회로를 그냥 썼는데


당시에 왜 저항값을 47로 지정해 놓았는지는 모르겠지만 


이번에 저 회로를 사용하면서 그대로 47옴을 납땜하는 바람에 센서에 과전류가 흘렀습니다. 











데이터쉬트를 기반으로 5v 입력시 저항값을 계산해보니 750옴을 사용해야 하네요


센서를 꽂았을 때 잠시 동안은 회로가 정상적으로 동작했고


그러다가 센서가 탔고 그 이후로는 제대로 동작하지 않았는데


저는 그걸 모르고 되다 말다 하니까 계속 펌웨어 설정이랑 핀아웃만 건드리고 있었습니다. 


그러다가 센서가 문제있나 하고 새 센서(47옴)을 연결하면 또 잠시 동작하다가 타버리고.. 












하여간 전부 다시 제작했습니다. 











제대로 되는지 확인.










이제 배선은 거의 끝났습니다. 


리밋센서 작동여부 다시 확인하고 나머지 진행할 계획입니다. 

저작자 표시 비영리 동일 조건 변경 허락
신고

'Making > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 8  (0) 2017.07.26
CoreXY - 조립중 7  (0) 2017.07.20
CoreXY - 조립중 6  (0) 2017.07.07
CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
CoreXY - 조립중 4  (0) 2017.06.21
크리에이티브 커먼즈 라이선스
Creative Commons License


ramps 보드 두개 태워먹고 원인을 찾느라 시간이 걸렸습니다. 


일단 ramps 보드의 리밋 스위치 라벨이 반대로 되어 있더군요. 


Signal, (-), (+) 순이 아니라  (+), (-), Signal 순으로 프린트되어 있어서 리밋 스위치만 꽂으면 보드가 먹통이 되었습니다. 



->알고보니 라벨이 반대로 된 게 아니라 자체제작 리밋센서 문제였네요








두번째 원인으로 자체제작 리밋 스위치중 1개가 납땜실수로 배선끼리 닿아 있었습니다. 


두가지 원인이 복합적으로 얽혀 보드를 두개나 태워먹고도 원인찾느라 시간이 많이 걸렸네요. 


일단 태워먹은 보드 중 한개는 AMS1117 칩만 교체해서 살아났는데, 


한개는 아예 내부까지 태워먹은 듯 하여 폐기처분했습니다. 









Marlin 펌웨어 기능이 많이 업그레이드되었는데 


수정하다가 부팅 로고를 집어넣어 봤습니다. 


나중에 포토샵으로 적당하게 하나 만들어 넣을 생각입니다만 제 디자인 실력이 문제로군요









현재 노즐 히팅, 온도센서, 리밋 센서, 스텝모터 작동까지 테스트 마쳤습니다. 


1/16 마이크로 스텝 설정으로 속도나 토크 최적화는 운용하면서 조정할 생각입니다. 



앞으로 베드 히팅과 Z축, 익스트루더까지 확인되면 출력 테스트가 가능할 것 같습니다. 


저작자 표시 비영리 동일 조건 변경 허락
신고

'Making > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 8  (0) 2017.07.26
CoreXY - 조립중 7  (0) 2017.07.20
CoreXY - 조립중 6  (0) 2017.07.07
CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
CoreXY - 조립중 4  (0) 2017.06.21
크리에이티브 커먼즈 라이선스
Creative Commons License


파워를 24V로 교체했습니다. 











그래서 홀을 새로 뚫었습니다. 














히팅베드 스위칭용 릴레이 PCB를 잘못 만든 것이 발견되어 배선을 수정했고요.











           


시험삼아 베드를 가열해봤습니다. 


정가운데가 100도면 가장자리는 90도, 모서리 부분은 80도 나오네요... 


사용시에 문제가 생기면 열선을 더 넓은걸로 바꿔야 할 듯 합니다. 










전원 스위치를 시험해 보는 중입니다. 













220V 푸쉬 스위치를 눌러 임시 전원이 공급되면 릴레이에 다시 DC 전원이 공급되어


ON 상태가 유지되는 개념입니다. 









한번만 누르면 계속 켜집니다. 그리고 다시 눌러도 꺼지진 않습니다;;












일단 넘겨두고 RAMPS 보드에서 TB6560 스텝 드라이버로 선을 연결하기 위한 커넥팅 보드를 만들었습니다. 









방향을 알아보기 쉽게 색을 다르게 했습니다. 

























기본 Marlin 펌웨어를 올리고 Configuration.h 파일을 훑어가며 한줄씩 수정&업로드를 반복하고 있습니다. 


LCD 설정을 바꾸고 power supply 를 ATX 로 설정해서 파워 on/off 신호를 쓸 수 있도록 했습니다. 













기본적으로 ramps 보드가 켜지면 PS 커넥터에서 5V 출력이 나오더군요.


SSR 이 연결되어 자동으로 파워 서플라이가 켜지게 됩니다. 












M81을 입력하면 LCD에 꺼졌다는 표시가 나오고 SMPS 가 OFF 됩니다. 


전면에 푸쉬 스위치는 의미가 없어졌네요.


기본 동작은 잘 하는데 전면에 전원 스위치를 넣는게 편할 듯도 해서 고민을 해 봐야겠습니다. 


넣어야 한다면 ATtiny85를 이용해서 Ramps의 신호와 전면 스위치의 입력을 처리하도록 하면 될 것 같습니다. 


일단은 메모만 해 두고 넘어갑니다. 









USB 케이블을 빼고 SMPS 전원으로만 켜면 부팅이 되지 않아 이상하게 생각했는데


선을 하나씩 빼보니 리밋 센서쪽에 문제가 있는 것 같습니다. 


다음번에는 리밋 센서에서 뭐가 잘못됐는지 확인해 봐야 겠네요

저작자 표시 비영리 동일 조건 변경 허락
신고

'Making > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 7  (0) 2017.07.20
CoreXY - 조립중 6  (0) 2017.07.07
CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
CoreXY - 조립중 4  (0) 2017.06.21
CoreXY - 조립중 3  (0) 2017.06.17
크리에이티브 커먼즈 라이선스
Creative Commons License


CoreXY 조립이 거의 끝나서 이제 펌웨어 살펴보려고 Github 들어갔더니 홈페이지가 있더군요.

옛날(2015년)에 델타 펌웨어 수정할때는 정말 코드 한줄한줄 읽어보고

코멘트 번역해서 일일이 이게 뭔지 체크하곤 했는데 

이제는 홈페이지에 설명이 다 되어있네요. 

좀 읽어보니 기능도 엄청 다양해져서 별의별 기능 다 들어가있고..
 


저작자 표시 비영리 동일 조건 변경 허락
신고

'Making > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 6  (0) 2017.07.07
CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
CoreXY - 조립중 4  (0) 2017.06.21
CoreXY - 조립중 3  (0) 2017.06.17
CoreXY - 조립중 2  (2) 2017.06.14
크리에이티브 커먼즈 라이선스
Creative Commons License


케이블 체인 작업에 들어갑니다. 


원래 여기에 쓰려고 알리에서 사놓은게 있었는데 대체 어디로 사라졌는지 


결국 새로 샀네요









Y축에서 X축으로 넘어가는 부분에 케이블 체인을 고정할 부품입니다. 


원래 아크릴로 만들었는데 작업하다 보니 화살표 부분의 접착면이 좁아 


자꾸 떨어지더군요









그래서 힘들게 알루미늄으로 다시 깎았습니다. 


이번에는 운이 따르지 못했는지 탭 낼 구멍 뚫다가 자꾸 드릴이 부러져 박히는 바람에


3번이나 힘들게 재작업을 했습니다만 저 화살표 부분의 볼트가 문제를 일으키더군요











자꾸 걸립니다..













결국 다시 원래 아크릴 부품에 보강재를 대서 해결했습니다. 


알루미늄 부품 작업하느라 3일은 까먹었는데 헛수고였네요










델타 쓰면서 히터선이나 센서선 등 각종 케이블의 트러블로 너무 귀찮은 일이 많았기 때문에


이번에는 유지보수를 최대한 줄이고 싶었습니다. 


모든 축에 케이블 베어를 사용해 전선에 최대한 문제가 없도록 했습니다. 









Z축은 손으로 돌리지 않으면 움직이지 않는데 전동드릴 물려서 휙 내려버리니 편하네요









전력소모가 많은 히터와 히팅베드에는 RC용 고전류 커넥터(60A) 를 사용했습니다. 










어느정도 됐다고 생각했지만 이후에도 리밋센서선 빼먹고 냉각팬 케이블 빼먹고 하느라


추가로 선 집어넣느라 손이 많이 갔습니다. 











제가 구매한 스티커형 히팅베드에는 센서가 없기에 별도로 100K NTC 온도센서를 집어넣었습니다. 












그리고 베드의 보온을 위해 펠트지 스티커를 그 위에 붙였습니다.  


화방에서 스티커가 붙어있는 펠트지를 팔더군요. 


효과 좋으라고 2장을 겹쳐 붙였습니다. 















전선이 복잡해져서 라벨링을 하고 작업하는 중입니다. 















센서핀들 크림핑해서 전부 연결해주고요














선은 일단 순서 상관없이 대충 끼워만 놨습니다. 









마지막으로 커넥팅 작업이 잘 됐는지 테스터로 전부 확인했습니다. 


펌웨어 작업중에 문제 생기면 찾기 힘들기 때문에 미리 해두는 게 편하지요.


다행히 케이블은 전부 잘 연결되었더군요.


저작자 표시 비영리 동일 조건 변경 허락
신고

'Making > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 5  (0) 2017.06.29
Marlin 펌웨어 찾다보니 Document 가 엄청 좋아졌네요  (0) 2017.06.21
CoreXY - 조립중 4  (0) 2017.06.21
CoreXY - 조립중 3  (0) 2017.06.17
CoreXY - 조립중 2  (2) 2017.06.14
CoreXY - 조립중 중간사진들.  (0) 2017.06.10
크리에이티브 커먼즈 라이선스
Creative Commons License


가공영역에 맞춰 베드 테이프를 붙이기 위해 마스킹 테잎으로 위치를 표시해보는 중입니다. 









어째 틀어졌네요. 


확인해 보니 타이밍 벨트를 조일 때 균형있게 당겨 조이지 않으면 저렇게 틀어지더군요











프린터 크기는 370*450*550 이고


프린팅 영역은 250*260*260 정도 됩니다. 


프린팅 영역을 최대한 확보하느라고 설계를 타이트하게 했는데


다른 프린터와 비교할수가 없으니 잘 된건지 모르겠습니다. 















타오바오에서 공수한 베드 스티커와 히팅 시트 스티커를 붙였습니다. 


히터 스티커는 크기가 270mm정도면 좋겠는데 아무리 찾아도 그런 사이즈는 없더군요












베드 레벨링 조절너트는 아크릴 깎아서 만들었습니다. 


이소프로필 알콜을 절삭유로 썼더니 저렇게 가공면이 허옇게 뜨거나 가끔은 깨지더군요. 


다음부턴 아크릴엔 쓰지 말아야겠습니다. 




















벨트 고정클립은 조일때마다 휙휙 돌아가고 잘 고정도 안돼서 퇴출했습니다. 









이젠 고정 잘 되고 조절하기도 훨씬 편하네요


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


일단 프로파일을 다 맞춰서 조여봤습니다. 


이럴때 작업용 정반이 있으면 좋겠는데 그런게 없어서 그냥 테이블에 놓고 


직각자로 맞춰보며 조였습니다. 







정확하게는 스텝모터부분과 상면 프레임을 먼저 맞춰서 조이고,


볼스크류와 리니어 베어링이 있는 후면 프레임을 맞춰서 조인 다음 나머지를 조였습니다. 


이것도 은근히 시간 걸리네요








기초부품만 조립했는데도 거의 다 된듯한 느낌.










... 은 착각이었습니다. 연마봉과 달리 LM 가이드는 정말 죽어라 안 잘리네요. 


이거 그냥 탄소강이 아니라 HSS인듯.. 생각해보면 당연한 일인데


연마봉은 그나마 쉽게 잘랐지만 


고속절단기도 없이 DC 스핀들 모터로 저걸 자르려니 정말 진도가 안나갑니다. 


연마봉은 0.1mm 씩 밀고 가면 됐는데 LM 가이드는 그랬다간 바로 멈춰버리고


0.01mm 씩 밀어야 하더군요. 수동으로는 도저히 답이 안나와서


Gcode 생성해서 자동으로 돌렸습니다. 


그리고 하루에 서너시간씩 이틀 걸려서 간신히 절단에 성공했습니다...








인생에 이걸 또 자를날이 오지 않기를 바랄뿐입니다. 











일부 가공이 안 된 부분은 수공구로 해결합니다. 


매번 느끼는 거지만 드릴링 머신이 있으면 좋겠어요.









수공구로 해결하다 보니 특히나 탭핑 부분이 직각이 안맞아서


조립하고 보면 약간 틀어져 있는 경우가 꽤 있네요









그래도 설계에 큰 실수는 없어서 천천히 조립 진도를 빼고 있습니다. 










타이밍 벨트 조이는 부품은 작은 핀 같이 생겼는데


조립성이 너무 안좋아서 아무래도 다시 설계해야 할 듯 합니다. 










아무리 설계를 잘 해도 처음 조립하다 보면 문제가 생길 수 밖에 없는데


그래도 생각보다 큰 문제 없이 조립이 되고 있네요. 










벨트 홀 부분은 생각보다 1mm 정도씩 옆으로 밀려나긴 했는데


그래도 여유를 두고 설계해서 걸리지 않고 잘 통과합니다. 









조립중 발견된 한가지 문제.


Z 축 베드 위에 열선베드가 있는데 두 베드간의 간격을 너무 넓게 잡는 바람에


Z축을 베드 끝까지 올려도 노즐이 베드에 닿질 않습니다. 











베드 끝에 걸리는 부분은 리니어 베어링이라 리니어 베어링을 약간 내려주면


그만큼 베드가 올라가겠죠. 


그래서 다시 알루미늄을 깎아 스페이서를 만들어 줬습니다. 


바로 풀어서 끼울 수 있게 장공처럼 깎아놓고 맞춰봤더니 역시나 잘 맞는군요









실제로는 이 위치에 들어가겠지요


스페이서가 3mm라 베드가 3mm 올라가면 문제는 해결될 것 같습니다. 





그나저나 케이블 베어를 미리 사다둔게 있는데 


조립하려고 찾아보니 어디에 처박아뒀는지 영 찾을수가 없네요...


저작자 표시 비영리 동일 조건 변경 허락
신고

'Making > 3D Printer - CoreXY' 카테고리의 다른 글

CoreXY - 조립중 4  (0) 2017.06.21
CoreXY - 조립중 3  (0) 2017.06.17
CoreXY - 조립중 2  (2) 2017.06.14
CoreXY - 조립중 중간사진들.  (0) 2017.06.10
CoreXY 진행상황 - 설계와 가공완료, 부품 점검중.  (0) 2017.06.08
CoreXY 부품 만들기 - 매일 하나씩  (0) 2017.06.08
  1. 갤리스 2017.06.15 19:18 신고

    응원하고 있습니다.
    알루미늄 판재 가공 가능한 환경이 너무 부럽네요

    • pashiran 2017.06.16 14:24 신고

      개인적으론 3D 프린터보다 CNC가 더 유용한 것 같습니다.
      문제는 소음과 진동, 분진이 엄청나서 일반 가정에선 사용하기 매우 어렵죠.

크리에이티브 커먼즈 라이선스
Creative Commons License





부품을 체크하느라 스텝모터를 꺼냈습니다. 


몇번째 다시 말하는건지 모르겠지만 재고부품을 최대한 재활용중인데, 


그중 가장 오래된 물건인 것 같습니다. 20년도 더 전에 생산된 스텝모터입니다. 


그중 상태가 안 좋은 편이긴 하지만 알루미늄인데도 부식이 다 있을 정도입니다. 









이제서야 깨달았는데 20teeth 6mm bore 타이밍 풀리를 끼우려고 하니 안들어가더군요....;;








외경이 6.35mm 입니다. 사진은 6.37이지만 6.35mm 가 표준굵기입니다. 


이거 또 해외주문해야하나 하고 살짝 놀라서 찾아보니 다행히 3D 프린터 부품 취급업체 중 한곳에


6.35mm 내경 타이밍 풀리 재고가 있네요











Z 축 스텝모터는 거꾸로 장착 예정이라 원래 볼트를 빼고 


더 긴 볼트로 고정부에서 관통해 조립할 생각입니다. 










타오바오에서 구매한 연마봉 절단중입니다. 


자잘한 부품 구매할 때 같이 주문한거라 1M 짜리 봉 그대로 받았습니다. 


어차피 LM 가이드도 절단해야 하는지라 테스트겸 CNC에 물려서 잘라봤습니다. 









위에서 CNC에 물린 회전날은 요런 식으로 생긴 톱날 어댑터에 


그라인더용 절단석을 끼웠습니다. 










이렇게 그라인더용 톱날을 전동 드릴 같은 회전공구에 물려서


임시로 사용할 수 있게 해 주는 어댑터입니다. 


그라인더를 쓰는 것보다 위험하고 회전수도 모자라서 제대로 쓰기엔 부족하지만


임시로 잠깐씩 쓸때는 나쁘지 않습니다. 











회전을 높이면 진동이 심해질 뿐더러 토크도 회전수도 다소 부족한 편이라


천천히 자르느라 시간이 오래 걸리네요










처음 자르고 분리할 때 손 데이는 줄 알았습니다. 


두번째 자를땐 알콜을 뿌려주면서 조금씩 식혀줬습니다. 





익스트루더 가운데에 5T 알루미늄판이 들어가기 때문에 


방열판을 끼우면 볼트 길이가 모자라 조립이 안되네요. 


당장 더 긴 볼트는 없어서 임시로 방열판은 제거하고 조립해뒀습니다. 














슬슬 기존 델타도 분해처리하고 있습니다. 


저 부분은 위로 당겼더니 그냥 뚝 부러지네요. 


그냥 썼어도 어차피 오래 못 갔을듯 합니다. 




저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


제 CNC에서 감당이 안되는 사이즈의 판재들은 어쩔 수 없이 외주를 맡겼습니다. 








Z축 베드를 5T를 사용했는데... 생각보다 너무 묵직해서 괜히 5T 썼나 싶은 마음이 듭니다. 


이제와서 변경할수도 없고 어차피 그냥 쓰긴 해야 하는데...


최악의 경우엔 CNC에 넣고 살을 깎아봐야겠습니다. 












프로파일의 결합은 부품을 사용하는 방식이 아니라 


프로파일에 구멍을 내서 직결하도록 설계했습니다. 


여러개의 카운터보어 구멍을 내야 하는데 


원점이 틀어지지 않도록 포맥스 쪼가리를 잘라 틀을 만드는 중입니다. 











총 18개의 카운터보어를 뚫었습니다. 













임시로 조립해봤습니다. 


프로파일 가로대를 5개 시켰는데 3개밖에 안왔네요.


주문서를 기술자에게 넘길 때 5를 흘려써서 3으로 보였다거나 하는게 아닐까 상상을 합니다. 


통화 후 다시 보내주기로 했으니 주말까진 거의 준비가 될 듯 합니다. 











조립하면서 손봐야 할 부분도 많지만 그래도 이제 설계와 가공은 거의 끝났습니다. 


조립하고 세팅하는데도 많은 시간이 걸리겠지만 


그래도 이제부턴 완성도가 눈에 보이기 시작하니 더 즐겁게 할 수 있을 것 같습니다. 

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


LED 바를 만들었습니다. 


LED를 가끔 쓸 때마다 전압 맞추기 애매했는데 이번에 아예 AMC7135 LED Driver 칩을 구매했습니다. 


Voltage Regulator 로 전에 사놓은 7805를 많이 사용했는데 


사실 7805는 전류가 스펙상 1~1.5A 까지지만 이 경우 발열이 엄청나고 실제로는 200mA 만 넘게 사용해도


열이 은근히 심해서 방열판이 필수로 들어가야 하기 때문에 회로의 크기가 커지는 문제가 있습니다. 


그래서 LM1117 시리즈 칩을 구매해서 써봤는데 크기도 작고 발열도 적고 해서 쓰기가 좋네요


LM1117 칩은 3.3V, 5V, Adjustable 등 서브모델이 여러개 있는데 가격도 싸니 종류별로 사 놓으면 유용합니다. 



 












12V 입력으로 LED는 4개씩 직렬입니다. 
















LED 간격을 잘못 맞추긴 했지만 잘 나오니 이대로 사용할 예정입니다. 













남는 시간에는 CNC로 알루미늄 부품을 하나하나 깎고 있습니다.


절삭유 공급기를 만들어 단 이후로는 알루미늄 3T 까지는 쉽게 깎을 수 있어 좋습니다. 


5T는 진동과 소음이 심하고 결과도 좋지 않은데 반면에 3T는 결과도 매우 좋게 나오고 잘 깎이네요.


물론 가공속도는 매우 낮게 줘야 하기 때문에 위의 부품 하나 깎는데 30분이 넘게 걸리기 때문에 


틈나는 대로 하나씩 하나씩 깎고 있습니다. 


프로파일은 결국 재활용 실패하고 새로 주문했는데 주말까지는 일단 필요한 부품이 완비될 것 같습니다. 



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License



<시끄럽습니다. 볼륨에 주의>


지난번에 제작한 절삭유 컨트롤러를 이용해서 


3D 프린터에 들어갈 부품들을 가공하는 중입니다. 












아직 가공조건을 잘 맞추지 못했고


CNC가 소형이라 가공면이 좋질 못합니다. 


사진은 비교적 잘 나왔지만 사포로 어느정도는 마감해주지 않으면 안될 정도네요









그래도 오랫동안 알미늄 가공은 엄두를 못내고 있었는데 생각보단 잘 되는 것 같습니다. 










5T 판재가 너무 커서 CNC 베드에 들어가질 않아 잘라냅니다. 









직소로 잘라낼 때는 꼭 기름칠을 많이 하고 저속으로 천천히 잘라내야 하는데요









안 그러면 이렇게 톱니 사이에 알미늄이 녹아붙어서 톱날을 버리게 되기 때문입니다. 


커터칼로 한참 긁어서 간신히 재생시키고 나머지를 조심스럽게 잘라냈습니다. 









이 부품들은 측면가공이 들어가기 때문에 CNC에 개조작업을 했습니다. 











베드 앞면에 펀칭을 하고 










드릴로 뚫고.. 











탭 드릴을 낼 때는 사이즈 조견표를 보고 맞는 드릴을 골라야 합니다. 


M6 탭을 낼 거라서 5mm 드릴을 사용했습니다. 




 







이때도 wd-40을 계속 충분히 뿌려주면서 작업해야 합니다. 


그리고 탭이 뻑뻑하다 싶을 때는 꼭 역회전으로 빼내고 다시 천천히 들어가기 반복. <-중요.










측면 홀을 뚫기 위해 클램프를 장착한 모습입니다. 










원점을 잡고 드릴링을 합니다.  wd-40 필수. 


싸구려 벤치드릴 하나만 있어도 되는 일을 CNC로 하고 있네요











아까도 말했듯... 탭은 조심해야 합니다.


약간만 힘주면 저렇게 박힌채로 부러지는데


저 경우는 잡을곳이 있어서 천천히 펜치로 잡고 돌려빼면 되지만


튀어나온 곳도 없이 박힌채로 부러져 버리면 수습이 매우 힘들죠.















일단 판재 가공은 부품 하나만 빼고 전부 끝났습니다. 


X축 고정판은 알루미늄 판을 새로 주문해서 가공할 예정입니다. 

















3T는 그럭저럭 나오는데







5T는 무슨 톱질한것 마냥 면이 안좋습니다. 


가공조건을 여러번 바꿔가며 실험해 봤지만


그냥 CNC 구조 자체의 정밀도 및 강성 부족이 원인인 것으로 판단이 됩니다. 


가공중 소음도 엄청나서 귀를 막고 작업했네요










저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


완성했습니다. 5월초 연휴 이후 늘어지는 마음이 강해서 손도 안대고 있었는데 하루이틀 집중하니 끝났네요


FET를 뒤집어 끼우는 실수가 있었고 


출력 타이밍을 아무리 짧게 잡아도 펌프의 토출량이 강한 것 같아 


모터 출력 핀을 2번 핀에서 pwm 출력이 가능한 5번 핀으로 옮기고 


analogWrite(pin,120) 정도를 써서 출력을 절반 가까이 줄였더니 적당합니다. 










전체 타이밍은 2초이고 가변저항의 움직임에 따라 


0.02초 단위로 ON 시간과 OFF 시간이 나눠집니다. 


처음 제작시에는 ON/OFF 타이밍을 delay를 썼더니 LCD가 그 시간동안 먹통이 되는 문제가 있어


millis() 명령을 이용해 프로그램이 실행된 시간과 


지나간 시간을 체크하여 비교하는 예제를 참조하여 수정했습니다. 





eagleCad와 아두이노 스케치 첨부합니다. 


 

CNC Coolant Coltroller.zip



저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 갤리스 2017.05.23 13:08 신고

    펌프 구입처나 자세한 정보좀 얻을 수 있을까요?

    • pashiran 2017.05.23 16:49 신고

      회로나 아두이노 스케치는 하단에 첨부해놨고요. 펌프는 https://goo.gl/KdE0Sc 구매하시면 되고 실리콘 호스는 옥션에서 검색해보면 나오는데 굵기 4mm 짜리로 쓰시면 됩니다.

크리에이티브 커먼즈 라이선스
Creative Commons License


기구부는 거의 손대지 않고 전자부품들을 정리하고 있습니다. 












외부 스텝 드라이버(TB6560)을 쓸 예정입니다. 












추가로 Heat Bed ON/OFF 용 릴레이와 SMPS OFF용 SMPS 를 1개 보드에 몰아넣어서 제작했습니다. 










RAMPS 보드에서는 Heat Bed 와 연결된 전원부가 잘 나가기고 하고


보다 빠른 가열을 위해 24V Heat Bed를 쓴다던가 하는 경우가 있기 때문에 위와 같은 제품도 판매를 하더군요.


저는 항상 그렇듯 보유중인 오래된 부품들 처리용으로 제 전용 PCB를 만들었습니다. 













RAMPS 보드에서 위의 하늘색 화살표로 가리키는 부분에 선을 연결하면 


M80 / M81로 파워 서플라이를 제어 가능합니다. 








http://www.thingiverse.com/thing:619576



사실 릴레이만 있으면 바로 보드와 파워 연결해서 써도 됩니다. 


저는 히트베드용 릴레이도 있고 하다보니 부품 고정이 지저분해지는게 싫어서 


별도로 보드를 만들었습니다.  











RAMPS 보드에서 신호가 제대로 나오는지 확인해 봤습니다. 




저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

직접 설계를 하며 델타에 없었던 편리한 기능들을 이것저것 넣고 있습니다. 





스텝 드라이버는 CNC에 쓰이고 남은 TB6560 드라이버입니다. 


기존에 쓰던 A4988은 편리하긴 하지만 2A 까지만 드라이빙이 가능하고


그나마도 최대출력 연속사용은 매우 불안합니다만


TB6560은 3A 드라이빙이 가능하고 아차하면 쇼트나는 A4988보다 안정성이 있습니다. 


사실 저소음의 TB6600을 쓰고싶긴 한데 최대한 소지중인 부품들 소모하는 걸 목적으로 했습니다. 








요건 접이식 스풀거치대고요. 가운데 튀어나온 두줄은 베어링입니다. 


대충 아무 스풀이나 걸기 쉽고 부드럽게 풀리도록. 









케이블 체인도 넣었습니다. 


프린터 2년 정도 열심히 쓰다보면 한 3~4번쯤은 케이블 끊어짐 문제가 있었던 것 같아요






추가로 LED 등도 넣을 생각이고요.




이런 생각들을 하다가 프린팅이 완료되면 


자동으로 전체 시스템을 셧오프 해주는 기능이 있으면 좋겠더라고요.




그래서 서칭을 해봤습니다. 



Attiny 칩을 이용해서 자동으로 스위치가 꺼지도록 한 사람이 있더군요







리밋 스위치를 만들고 출력후 베드를 끝까지 내려서 스위치가 일정시간 이상 눌러지면


SSR에 신호를 보내 전원을 off 하는 방식인 듯 합니다. 









찾아보니 오픈크리에이터 카페에도 같은 작업을 하신 분이 있었고요






이대로 하면 되겠거니 하다가도 왠지 뭔가 더 간단하게 될것만 같은 생각이 자꾸 들어서 


계속 찾아봤습니다. 







출처 : http://www.tridimake.com/2012/11/auto-shutoff-at-end-of-print.html


역시나 말린 펌웨어에서 자체적으로 지원하는군요


컴퓨터용 파워 서플라이를 쓰는 경우 


ATX의 녹색 선이랑 GND 신호를 연결하면 파워가 on되고 떼면 off 되죠.


그 신호를 줄 수 있는 명령어가 존재합니다. 


M80 은 A0 핀을 HIGH 로 올려주고

M81 은 A0 핀을 LOW 로 내려줍니다. 


3D 프린팅 프로그램에서 End Gcode 마지막에 M80 이나 M81을 넣어주면 되겠네요



하지만 저는 컴퓨터용이 아닌 일반 SMPS를 사용할 예정이므로


SSR 과 푸쉬 스위치 1개가 필요합니다. 



간단하게 개념을 스케치해봤습니다.


1. 일단 SSR에 병렬로 220V 푸쉬 스위치를 달고


2. 푸쉬 스위치를 누르면 일시적으로 220V 전원이 공급됩니다. 


3. 그러면 SMPS에서 DC 12V** 가 나오므로 SSR에 신호를 공급해 줄 수 있습니다. 


4. 푸쉬 스위치를 떼도 SSR은 계속 ON 상태여서 전원을 공급하게 됩니다. 


5. 프린팅이 완료되면 RAMPS 보드에서 LOW 신호를 줍니다. 


6. 일시적으로 SSR이 off 되면서 전원이 꺼집니다. 



**신호 레벨 때문에 5V 로 다운시켜야 할 것 같습니다. 



일단 간단하게 테스트를 한번 해 봐야 할것 같네요





푸쉬 스위치를 하나 사야하나 하고 쇼핑몰을 뒤지다가


문득 생각이 나서 부품박스에서 찾아냈습니다. 


10년도 전에 구했던 부품인데 얼마전에 테스트해보니 


내부에 귀여운 꼬마전구(6V) 가 들어있습니다만 시대에 맞춰 LED로 업그레이드해뒀던 물건입니다. 


여기에 쓰면 딱이겠네요







테스트를 위해 임시로 연결해봤습니다. 



동영상을 급하게 찍었는데 카메라 오류로 날아갔네요



생각했던 대로 잘 움직입니다. 


푸쉬 스위치 누르면 전원 켜지고 SSR에 전원이 공급되니 자체적으로 계속 켜져있다가


SSR 입력 끄면 SMPS가 꺼지네요



그냥 RAMPS 에 직결하긴 좀 불안하고 TR이나 FET 로 스위칭 회로 만들어서 연결하면 딱일 듯 합니다. 




연결과 펌웨어 설정은 

https://github.com/foosel/OctoPrint/wiki/Control-your-printer's-ATX-PSU-through-a-RAMPS-board-using-OctoPrint#atx-psu-to-ramps-14-wiring 


http://www.thingiverse.com/thing:619576

참조

저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 갤리스 2017.04.29 00:02 신고

    스풀에 베어링있어서 너무 잘풀리는것도 문제가 되더라구요...
    보우덴이라면 별 문제 없겠지만, 다이렉트 같은 경우엔 헤드가 팍팍 움직이면서 스풀을 확 잡아당길때 이게 쫙 풀려버리니까 오히려 필라멘트가 꼬이고 하는 문제가 발생합니다...

    • pashiran 2017.04.29 10:26 신고

      그런 문제도 있군요. 일단 제작하고 난 뒤 가이드 호스를 끼울 생각이긴 한데 조립하고 난 뒤 상황을 보고 결정해야 겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

여전히 CNC용 쿨런트 제어기 만들고 있습니다. 


동작은 간단하게 1개의 수동 on/off 스위치로 CNC 입력 모드와 메뉴얼 모드를 전환하고


수동조작시는 1개의 아날로그 입력으로 제어하도록 하고 있습니다


그런데 수동on/off 스위치를 입력하면 


자꾸 리셋되는 현상이 일어나 원인을 찾지 못해 한동안 고생했는데요






알고보니 그게 리셋핀입니다;;







리셋핀을 입력으로 지정해서 쓰는 바람에 입력신호가 GND로 떨어지면 리셋이 되던거였습니다. 


다른 핀과 바꾸고 테스트해보니 여전히 작동이 잘 안되는 부분이 있더군요.


순서대로 하나씩 테스트해보니 


i2c LCD 용으로 사용하는 0번,2번핀을 제외하고


1,3번핀은 입력 사용시 이상없음


4,5번핀은 입력 사용시 리셋됩니다. 


입력핀마다 풀업 저항을 연결해놓은 상태라 변수가 있을수도 있겠습니다.



하여간 현재는 일단 아날로그 입력을 5번 핀으로, 모터 출력을 4번으로 잡고


입력 두개를 1,3번 핀으로 할당했더니 괜찮아졌네요









생각보다 시간이 좀 걸리는군요


저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 하얀마음 2017.04.19 09:39 신고

    디스플레이를 tft-lcd를 사용하면 어떨까요?
    국내에서 1.8inch가 1만원정도하고 알리에서는 3.96불정도 합니다.
    좋은 글 잘보고 갑니다.

    • pashiran 2017.04.19 17:07 신고

      아두이노 쓰면 더 편한데 효율적으로 자원을 쓰고 싶어서 Attiny85 쓰는거라서요.
      Character LCD도 이번에 타오바오에서 저렴하게 10개쯤 샀습니다.
      사진에 나오는 LCD와 i2c 모듈 합쳐서 1500원 정도 합니다. :)

크리에이티브 커먼즈 라이선스
Creative Commons License

절삭유 컨트롤러를 일단 조립해놔야 알미늄 가공을 할 수 있으니


슬슬 가공테스트도 해 볼겸 해서 마무리를 급히 지었는데요





회로 마련하고


이제 그냥 스케치만 업로드해서 최종 테스트만 하면 되는 상황


그런에 이 Digispark 보드가 드라이버가 이상한건지 업로드가 되다말다.. 


최초 업로드는 정상으로 되고 두번째부터는 제대로 안되고 하는 현상이 자주 벌어집니다


아예 보드를 분리한채로 깨끗하게 연결해봐도 되는 경우보다 안되는 경우가 더 많네요.


그럴때 제어판 장치관리자를 보면 드라이버에 [?] 마크가 떠있어서 재설치해봐도 되다말다..


원인도 못찾겠고 며칠간 이걸로 골치아파서 어차피 Attiny85 칩 사용하는거니 


그냥 아두이노 부트로더 올려서 쓰면 되겠지 했습니다. 







hardware 폴더에 attiny.zip 파일만 압축풀어주면 된다고 해서 했는데










 


보드 리스트에 안뜨네요. 



지금 이걸 먼저 해결해야 할지 다시 아두이노 미니 보드를 쓸지 이것도 고민입니다. 

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


현재 상황입니다. 기구부의 디테일을 잡고 있습니다. 









간단한 설계할때는 볼트같은건 귀찮아서 잘 넣지 않지만


이렇게 제대로 설계할때는 전부 넣어주지 않으면 제작할 때 간섭이 생기기도 하니 신경써주는게 좋죠.











BOM 작성하면 어떤 부품이 얼마나 쓰이는지도 알 수 있어 더 좋고요












익스트루더랑 XY베이스 잡을 때 케이블 체인은 나중에 넣을 생각이었는데


너무 타이트하게 설계를 잡아서 공간이 살짝 모자라더군요


꼭 어딘가 전선이 끊어져 문제가 생기죠. 


결국 Y축방향 프로파일은 20mm 늘렸습니다. 


저게 없어도 당장 문제가 생기는건 아니지만 실제로 프린터를 몇년 써보면


미리미리 설계당시에 대비해주는게 좋습니다. 



사실 블로워팬 자리도 애매해서 지금 고민중입니다...

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License


이정도쯤 진행됐습니다. 










저런 브라켓들은 모두 CNC 가공 예정입니다. 











프로파일에도 CNC 가공으로 카운터보어를 넣고 볼트로 직접 결합할 생각이고요









LM가이드에 볼스크류를 쓰지만 전부 재활용입니다. 


볼스크류는 오륙년전에 CNC 만들겠다고 중고로 사놓은 것을 이번에 사용하려고 합니다. 

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License




아두이노로 대충 만들어놓은 기존것은 별도로 전원의 제어장치는 달지 않았습니다.


하지만 알루미늄을 가공하게 된다면 상당히 긴 시간동안 가공을 해야 하고


가공을 한 이후에 바로 달려가서 끄지 않으면 절삭유가 계속 공급된다는 문제가 있죠







 



CNC 컨트롤러에서 제어 신호를 넘기면 on/off 가 가능합니다.


기존 보드에는 이 신호를 생각하지 않고 만들었기 때문에


어차피 보드도 프로그래밍도 새로 해야하는 상황이라 얼마전에 사두었던 Attiny85 보드를 사용해볼까 합니다. 


계산해보니 핀을 다 쓰면 아슬하게 사용이 가능할 것 같더군요.










일단 LCD만 예제로 테스트해봤는데


기존의 I2C 라이브러리(LiquidCrystal_I2C.h)는 사용이 불가능하고 


digispark에서 변경한 LiquidCrystal_I2C.h 를 써야합니다. 


그런데 파일명이 같다보니 라이브러리 폴더에서 기존 라이브러리를 자꾸 참조하는 바람에 


계속 에러를 뿜었는데 일단 기존 라이브러리를 아예 지우고 덮어씌워서 해결봤습니다. 



나중에 다시 문제가 되는게 아닌가 싶은데 그때는 도로 바꿔야겠죠

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

슬슬 델타 세팅하고 수리해가면서 쓰는것도 피곤하고 


좁은 출력영역때문에 중대형 이상 프린트시엔 문제도 많고 해서 


CoreXY 아이디어 스케치를 해봤습니다. 



그런데 일단 갖고있는 부품으로 견적을 내보다 보니


일부 부품들은 갖고 있고 델타에서 유용할 수 있는 부품들도 있고 해서


거의 무비용으로 제작이 가능하다는 예상이 나와 문득 욕심이 나더군요



처음에 만들던 모습인데 델타에 쓰인 LM가이드가 400mm 짜리라


전체 크기가 각변 500mm가 넘습니다. 


출력영역이 큰것도 좋지만 저정도 대형을 출력할 일은 거의 없고


덩치가 커서 걸리적거리는 부분은 계속 영향을 끼칠 것이라 생각하니 안되겠더군요







LM가이드를 100mm 정도 잘라서 맞춰본 모습입니다. 


20mm 알루미늄 프로파일과 알루미늄 판재 등은 


모두 갖고있는 재료를 CNC 가공하여 조립할 예정입니다. 



소형 CNC인지라 알루미늄 가공이 쉽지 않지만 


0.3mm 정도씩 야금야금 깎아나가면;; 어느정도 괜찮게 가공이 되더군요.



절삭유가 꼭 필요한지라 저번에 만든 절삭유 펌프 컨트롤러(링크) 를 붙여야 하고


가공시간이 오래 걸릴 일이라 스핀들 모터와 절삭유 펌프를 둘다 G 코드로 on/off 할 수 있게


업그레이드를 해야 할 것 같고요. 


그야말로 하나하나 깎아만드는 프린터가 되겠습니다.


설계도 설계지만 부품 가공까지 하면 꽤 오랜 프로젝트가 될 것 같습니다. 


저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License



회로는 이제 거의 손댈 부분이 없습니다. 


나중에 케이스 만들때 완성형 보드는 새로 만들어야 겠지만 스키메틱은 바뀌지 않을 듯 합니다.


중간에 DC 모터펌프를 사용한 버전을 만들어 보았다가 


취소하고 다시 스텝모터로 돌아오는 바람에 시간이 많이 걸렸네요



수정사항은 몇개 없지만 전원을 넣을 때마다 일정 확률로(?) 스텝 드라이버가 터지는 바람에


한 4개쯤 날려먹고.. 컨덴서를 몇개 추가하고 전원 스위치를 더했습니다. 








정량펌프는 전에 못보던 깔끔한 물건이 나왔길래 구매해봤는데


꽤 괜찮습니다. 크기도 적당하고 그냥 이걸로 가야겠네요








드라이빙 전류는 0.2A 정도가 적당하더군요










이제 최종적으로 코드를 마무리해야 합니다.


그러려면 펌프가 회전하는 수에 비해 펌프질되는 유량이 얼마나 되는지 측정해야 하므로


간단한 코드로 800ml 정도 물을 펌프질해봤습니다. 


OLED에 나오는 숫자는 모터의 회전 수입니다. 


3079회전 = 물 605g

4000회전 = 물 778g

(물 1g = 1ml)

7079회전 - 1383ml 이므로

1ml 당 5.12회전
1회전당 0.195ml


모터 70회전에 물방울은 355방울이 떨어졌고


마이크로스텝 1/16 이므로


3200스텝 = 1회전= 5.07방울 = 0.195ml 입니다


-> 고속과 저속에서 유량이 달라지더군요; 주로 쓰는 속도 기준으로 재측정할 예정입니다. 



스텝 딜레이는 40us 정도가 최하이며 그 이하로 내리면 가감속 코드 없이는 탈조가 납니다. 



코드를 최종적으로 수정한 다음 케이스를 씌워야 하는데


이럴땐 같이 작업하는 디자이너 한명 있으면 좋겠다 싶네요. 


매번 어떻게든 더 이쁜모양 만들어 보려고 발버둥 칩니다.

저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License




인코더 스위치를 넣어서 회로를 짜놓고


코딩을 하려니 어렵더군요.. 


일단 간단한 입력은 되는데 


인코더의 입력을 놓치지 않고 받아들이기 위해선 인터럽트가 필요하고


이제 간신히 u8glib 조금씩 이해가 가는 와중에 


인터럽트 집어넣으려니 머리가 뱅글뱅글 도네요.




스킬업한 다음에나 생각해볼 일인 것 같아 제거하고


토글 스위치 3개(up,down,select) 넣고 약간 생각해 보니


이것도 디바운스나 동시입력에 대한 부분을 처리해야 해서 뭔가 골치아파지는것을 느꼈습니다.









인스트럭터블스에서 본 기억을 찾아내서 다시 자료를 검색해보고


단순히 아날로그 입력 1핀만으로 여러개의 스위치 사용이 가능한 방법을 썼습니다. 


위와 같이 직렬 저항 사이에 스위치 입력을 넣으면 


5V 입력이 분배가 되어 스위치를 누를때마다 0-1023 에서 특정한 범위의 값으로 들어오게 되고


그걸 확인해서 스위치 입력을 확인하는 방법입니다. 




써보니 많은 장점이 있더군요.


1.여러개의 스위치를 1핀으로 간편하게 확인 가능하다.

2.디바운스 처리가 쉽다

3.여러개의 스위치를 동시입력하는 경우도 처리 가능하다

4.입력값 처리에 따라 스위치를 둔감하게 혹은 민감하게 조정 가능하다







처음 만들었던 회로 뒷면에 다시 납땜해서 수정했습니다. 







원하는 값을 스위치로 변경해서 입력하고 메뉴를 전환하면 단계별로 메뉴가 바뀌는 부분까지 마쳤습니다. 


화면 바뀔때마다 구성이 다른데 기본동작이 완료되면 수정할 계획이고요


이제 입력된 값을 바탕으로 스텝모터를 돌리는 부분을 진행할 차례군요







저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 하얀마음 2016.09.19 08:36 신고

    좋은 글 잘 보고 있습니다.
    바운스현상은 1uF이하의 콘덴서 추가하시면 해결하실 수 있습니다.

    좋은 하루 되세요.

    아래글 참고...
    http://m.blog.naver.com/cubloc/220597232293

크리에이티브 커먼즈 라이선스
Creative Commons License

화면에서 일단 간단한 로고나 메세지를 보여준 후


메뉴로 넘어가고 그 다음 메뉴로 넘어가는 등의 구성을 생각했습니다.


그래서 일단 텍스트로 꾸며봤는데



void loop() {


  u8g.firstPage();  //OLED 루프

  do {

    switch(draw_state){

      case 0:StartPage();delay(500)break;

      case 1:SecondPage();delay(500);break;    

    }

    }

  while( u8g.nextPage() ); 


이렇게 u8glib 함수 사이에 딜레이를 넣어봤습니다. 








첫번째 화면을 뿌리고 잠시 후에 두번째 화면으로 바뀌어야 하는데


두 화면을 동시에 뿌리려는 듯 겹친 화면이 나옵니다. 




void StartPage(){

   u8g.drawStr(0,10,"ColdBrewSystem 0.9");

   u8g.drawStr(0,25,"pashiran's");

   u8g.drawStr(0,40,"workspace");

   delay(500);


그래서 위와 같이 호출하는 화면함수에 딜레이를 넣었습니다. 





그랬더니 화면 자체에 딜레이가 걸려버립니다. 



여기저기 딜레이 위치를 바꿔봤지만 해결이 안되었는데







void loop() {


  u8g.firstPage();  //OLED 루프

  do {

    switch(draw_state){

      case 0:StartPage();break;

      case 1:SecondPage();break;    

    }

    }

  while( u8g.nextPage() );



if(draw_state==0){

  draw_state++;

}

else{

  draw_state=0;

}

delay(500);


} //loop의 끝 


이렇게 해야 하니 정상적으로 나옵니다. 


기본적으로는 u8glib이 함수 호출하면 메모리에 디스플레이 할 정보를 불러들이고서 


메모리를 읽어서 화면에 뿌려주는 방식이라  


그 과정 사이에 명령어를 사용할 때는 주의해야 하더군요.






저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

다들 더위때문에 고생하시겠네요.


더위에 약한 체질이라 정말 올 여름은 지옥같았습니다. 


시원한 곳에서도 머리가 멍해 뭘 하기가 힘들더군요. 


전기자전거고 뭐고 할 여력이 없었습니다.


더위가 조금 가시는 듯 해 작업을 해 봤는데, 여전히 덥군요.


기상청은 양치기소년도 저리가라 할 정도로 


번복에 번복을 반복해 8월 말까지 더운게 아닐까 걱정이 될 정도네요.





 




OLED 버전은 천천히 진행할 생각이라 일단 구동계가 완성된 


아두이노 나노에 간단히 프로그래밍하고 커넥터들을 달았습니다. 


기본 서보모터 커넥터는 연결이 간편하지만 


기분상 불안한 면이 있어 커넥터를 교체했습니다. 


ESC에서 5V 출력이 나오기 때문에 배선이 편했습니다




스케치는 다음과 같습니다. 


// 스로틀과 서보를 연계시키고 

// 스로틀의 이동폭을 제한하는 스케치


#include <Servo.h>


Servo servocontrol;  // 서보를 제어할 서보 오브젝트

Servo bldcmotorcontrol;     // 모터를 제어할 서보 오브젝트       

int servopos;    // 서보 위치를 저장할 변수

int motorspeed;  // 모터 속도를 저장할 변수

int throttlePin = A0; // 쓰로틀핀을 A0 로 선언

int throttleValue;  // 쓰로틀의 수치



void setup() 

  servocontrol.attach(9);  // 핀 9의 서보신호를 컨트롤서보에 연결

  bldcmotorcontrol.attach(8);     // 핀 8의 서보신호를 모터에 연결

 

 

void loop() 

  throttleValue=analogRead(throttlePin);  // 쓰로틀의 입력값을 아날로그로 읽음

  throttleValue=map(throttleValue,0,1023,0,179); //서보모터의 각도에 맞게 매핑함

  bldcmotorcontrol.write(throttleValue);

  if(throttleValue>50){

  throttleValue = 90;

  }

  servocontrol.write(throttleValue);

  delay(15);

  } 


throttleValue=map(throttleValue,0,1023,0,179); 명령어로 


스로틀에 따라 서보의 PWM 신호를 매핑했기 때문에 


ESC의 모터 출력은 스로틀을 따라갑니다만 서보모터는 일정 각도 이상 올라가면 안됩니다. 


50보다 큰 값이 들어오면 90으로 고정하도록 했습니다. 


마지막에 딜레이는 지우는걸 잊었군요







일단 원하던 대로 작동하는군요.


본체는 수치를 약간 수정했기 때문에 출력을 다시 해야 합니다.


좀 시원해지면 한번에 몰아쳐 끝내려고 했는데 여전히 더워서 맥을 못추겠네요




저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 하얀마음 2016.08.20 11:58 신고

    제가 좋아하는 나노가 보여서 반갑고 정감에 가네요. 아직도 덥네요. 건강유의하세요.

    • pashiran 2016.08.22 00:39 신고

      내년이나 내후넌이 어떨지 벌써부터 걱정일 정도로 더운 여름이었네요.

  2. 2016.09.15 09:32

    비밀댓글입니다

    • pashiran 2016.09.15 18:18 신고

      궁금한게 있으시면 이메일 보내주세요 PASHIRAN@NAVER.COM 입니다.

  3. 전병학 2016.10.31 20:00 신고

    지금까지 올리신게시물 얼마정도 돈이 들어가셨는지 알수있을까요 ??

    • pashiran 2016.11.01 00:18 신고

      순수재료비만 따지면 모터에 배터리에 기타 잡자재 정도라 20만원은 안되겠습니다만
      3D 프린터와 CNC 등의 특수공구(?)를 사용했고 이런 부분은 비용을 계산하기 애매하네요

  4. 2017.06.28 14:19

    비밀댓글입니다

크리에이티브 커먼즈 라이선스
Creative Commons License


저희 집 식구들은 커피를 많이 마시는 편인데


빨대로 간이 더치커피 기계를 만들어 사용해왔습니다만


물조절도 불편하고 공간도 차지하고 여러모로 불편한 부분이 있습니다. 



전에 정량펌프를 알리 익스프레스에서 구매하여 사용해봤지만 


DC 모터를 이용한 싸구려 펌프라서 토츌량도 적당하지 않고 금방 고장나버리더군요.



최근에 더워서 커피 소비량이 늘다보니 다시 한번 마무리해봤는데


저기다가 아두이노+스텝드라이버+파워+LCD를 추가할 생각하니


덩치가 좀 큰듯 하네요.  




시제품 만들어보고 수정할지 말지 생각해봐야겠습니다. 



저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

기구부 출력은 부품 하나에도 몇 시간이 걸리므로, 


틈날때마다 계속 아두이노 스케치를 수정하는 중입니다.



제대로 끝까지 스케치를 완성해본 건 처음이라 삽질을 하고 있지만


그래도 기본적인 부분은 어느정도 알고 있으니


레퍼런스나 인터넷을 참조해서 조금씩 진도가 나가고 있습니다.





이 책 강추. 








현재 OLED에 보여주는 정보는


1. 배터리전압

2. 크루즈 모드 or PAS level - pas는 추후 추가 예정

3. 스로틀 레벨 

4. 속도

5. 최고속도

6. 평균속도

7. 이동거리

8. 누적 이동거리



1. 전압 디스플레이 - 이건 쉬웠음. 전압분배로 해결하면 되고 찾아보면 인터넷에 예제도 많음. 


2. 크루즈 or PAS - 아직 계획 없음 


3. 스로틀 레벨 - 아날로그 입력을 그냥 변환해서 보여주면 됨


4. 속도 - 속도센서 필요. 기성제품 분해하자니 돈이 아깝고 리드스위치로 자작하자니 성가시고 


(5,6,7,8번은 속도만 제대로 체크되면 거기서 계산하면 되는거라 따로 뭘 할 필요는 없음)





@OLED 화면 디스플레이되는 한 사이클의 시간이 은근 길어서


스피드 센서 입력은 인터럽트를 필요로 하겠더군요.




인터럽트 발생시마다 1바퀴 만큼 이동한 것으로 확인하고 


millis() 를 이용해 시간을 체크하면 1바퀴 회전시간을 알 수 있습니다. 


이걸로 속도를 계산하고 최고속도나 이동거리 계산 등을 하면 되죠. 



위 OLED 사진에서 맨 아랫줄이 millis 로 계산된 인터럽트 간 타임입니다. 


수동으로 on/off 해보니 인터럽트 타임이 제대로 계산되는데 


그 값을 loop로 넘기는 부분이 잘 안되고 있네요. 





@이동거리는 EEPROM에 저장하지 않으면 리셋됩니다.


EEPROM의 저장한도가 10000번 정도라 하는데 


주행중에 이동거리가 1킬로 증가할 때마다 기록한다고 치면 


1만 킬로 정도가 한계고


적어도 0.1킬로마다 저장하고 싶은데 그러면 1000킬로에 수명이 다 되겠네요


수명을 생각하면서 기록하는 방법을 고민해 봐야할듯







 

기구부 설계와 출력 및 후가공이 끝났습니다. 


볼트로 조이는 부분은 인서트 너트를 사용했는데


꽉 조였을때는 통째로 빠지는 경우가 있어 적당히 조이는게 중요.



설계중 좋은 자전거가 공짜로 생길 뻔한 일이 있어 


부랴부랴 마운트를 착탈식으로 바꿔 새 자전거에 대비하려 했으나 


무산되어버렸습니다..



그래도 마운트 착탈식 구조는 마음에 들어 그대로 사용 예정. 









옆으로 끼운 후 손나사를 돌리면 고정됩니다.  작동도 잘 되는군요.






스로틀은 그냥 오른손 핸들에 끼울 생각이었으나 


변속기와 겹치는 위치를 어떻게 조정할지 생각


스로틀 스위치는 윗부분을 들어내고 


OLED 까지 내장하는 구조로 해야 편할 것 같습니다(후가공 엄청 해야할듯)




스로틀에 OLED와 스위치를 일체형으로 만들고


뒷부분 안장 밑에 나머지 전장부가 들어가면 될 듯 합니다.



저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 하얀마음 2016.07.22 08:21 신고

    조그만 더 기다리면 완성된걸 볼수있겠네요.
    기대하겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

처음 OLED 에 표시될 부분은 배터리의 전압입니다. 


아두이노는 5V 까지의 입력을 아날로그로 읽을 수 있지만


그 이상의 전압은 전압분배회로를 이용해 분압된 전압을 읽은 후 


분압된 만큼 다시 역으로 계산해서 원래 전압을 표시하면 됩니다. 



RC용 LiPo 배터리를 사용할 생각이고


3셀~6셀 정도의 배터리를 사용한다고 할 때


1셀의 전압은 3.6V 부터 4.3V 까지이므로 


4.3*6셀 = 25.8V 까지를 측정범위로 잡으면 되겠군요 




Vin = Vout / ( R2 / ( R1 + R2)) 를 계산하면 되는데



귀찮으니 그냥 앱을 사용합니다. 





18K 와 4.3K 저항을 사용하면 됩니다. 





그런데 저항박스를 뒤져보니 해당 저항이 없군요...







저항을 쓰기 편하게 Vin 30v, Vout 5V 입력하니 R1 10K, R2 2K 가 나왔습니다. 


입력전압은 1/6 되어 계산이 됩니다. 



  voltValue = analogRead(vinPin);

  batVoltage = voltValue*30/1024;   // Vout 5V * 전압분배비 6 = 30 을 곱한 후 1024로 나눔.



여기서 1024로 나누니 약간 오차가 있어 1080으로 조정해서 맞췄습니다. 



이렇게 한 후 





전압(왼쪽 위)이 제대로 표시가 됩니다. 




저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 하얀마음 2016.07.22 08:22 신고

    저도 이앱 구매했는데 제대로 사용을 못하고 있네요.

  2. 2016.08.05 15:19

    비밀댓글입니다

    • pashiran 2016.08.05 15:28 신고

      네 맞습니다. 저항을 이용해 전압을 1/N 으로 나눠줄 수 있기 때문에 원래 전압을 아두이노가 읽을 수 있게 저항으로 N 만큼 나눠서 입력하고, 아두이노에서 다시 N을 곱해서 계산하면 되는 것입니다.

  3. 2016.08.05 16:32

    비밀댓글입니다

    • pashiran 2016.08.05 16:35 신고

      1k를 직렬연결해도 되고 2k/10k 또는 1k/5k 이렇게 비율만 맞아도 됩니다. 저항 가운데를 아두이노의 아날로그 입력으로 연결하고 배터리의 (-)극과 아두이노의 gnd를 같이 연결해주시면 됩니다

크리에이티브 커먼즈 라이선스
Creative Commons License

별 생각없이 화면구성을 짜며 스케치 업로드를 하다가 보니



메모리 용량이 88%? 아직 제대로 스케치 시작도 못했는데 


화면구성만으로 이정도 차지하면 메인 스케치는 어떻게 할것인가 놀랐습니다만



생각해보니 폰트 데이터 용량을 생각해보지 않아 u8glib wiki에 들어가 봤습니다. 








처음 사용했던 속도표시용 폰트의 용량









같은 폰트인데 특수문자들이 제거된 다이어트(?) 폰트









그냥 작은 폰트의 용량






이렇게 심한 차이가 나는군요. 


생각해보면 당연한 것이 폰트 데이터를 전부 메모리에 집어넣지 않으면 출력도 할 수 없으니


쓰건 안쓰건 폰트를 포함시키는 순간 그만큼 스케치 용량이 늘어날 수 밖에 없습니다.





같은 크기인데 다른 폰트(u8g_font_fur30r)를 넣어봤더니 용량 차이가 저렇게 납니다. 


87% -> 58%











크기가 절반인 u8g_font_fur14r 폰트를 사용하고 u8g.setScale2x2(); 명령어로 2배 뻥튀기해봤습니다. 


87% -> 45%









다만 이 경우는 폰트 크기가 두배가 된 만큼 계단현상이 일어납니다. 




큰 폰트는 속도 디스플레이용이라 


아예 0-9까지 비트맵을 넣어 사용하면 더 용량을 줄일 수 있을 것 같습니다만


그건 나중에 정말 용량이 모자랄때나 해보면 될 것 같네요.




저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 하얀마음 2016.07.22 08:24 신고

    저는 무슨 이유인지 oled를 사용하면 다른 부품과 i2c통신에 에러가 나서 oled전용으로 아두이노 1개를 사용했습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

기구적으로는 이제 95% 정도 된듯. 






사실상 마운트 부분만 맞추면 됩니다만 이것도 기초적인 치수는 다 나왔는데


아예 고정시켜버리느냐 분리가 쉽게 하느냐 고민하다가


계속 달고다니긴 좀 불편할 듯 해서 분리형을 고민하는 중인데


어떤 형태로 해야 편할지 



뭐 이런 자잘한 고민들을 하고 있습니다. 


볼트류 고정 때문에 인서트 너트를 주문해 놨는데 그것들만 도착하면 최종 수정하고 조립하면 될듯. 






일단 서보 테스터로 구동할 수는 있지만


볼륨조정으로 속도를 조정하는건 너무 불편할 것 같아


전에 올렸듯 


전기자전거용 스로틀 - 아두이노 - 서보 로 연결해서 서보/스로틀 컨트롤을 최적화할 생각이고요.




그러다 보니 왠지 아두이노를 기왕 집어넣는 김에 서보 컨트롤러만 쓰기엔 아까울 듯 하여


전에 사서 처박아 두었던 OLED를 꺼내들었습니다. 



ADAFRUIT의 라이브러리를 좀 뒤적여 봤지만 메모리를 너무 많이 차지하고 깜박임도 심해서


U8GLIB으로 변경. 구동방식을 이해하는 데 좀 더 어렵긴 했는데


반응이 빠르고 메모리도 좀 더 적게 차지하네요






0.9인치 OLED는 너무 작아서 가시성이 안좋더군요. 


1.3인치 화이트로 바꾸니 심플하고 가시성도 괜찮습니다. 



아직 아두이노 프로그래밍엔 왕초보지만 U8GLIB WIKI와 


일부 인터넷의 소스코드들을 뚫어져라 봤더니 어느정도 이해는 가능했습니다. 



직접적으로 입출력를 디스플레이하기 전에 화면 구성만 짜보는 중입니다. 


배터리 전압과 속도, 스로틀 출력 등을 화면에 보여주기 위해 조금씩 옮겨보는 중입니다. 


화면에는 그냥 랜덤으로 디스플레이됩니다. 


스로틀 바는 특수문자 폰트를 사용해 디스플레이하려 했더니 


폰트 추가할때마다 메모리를 상당히 소모하더군요.


현재는 기본폰트와 대형폰트 2종류를 사용하고 있습니다. 



좌표가 왼쪽 위부터 0.0으로 시작하기에 숫자가 한자리수일때는 왼쪽으로 붙었다가


두자리수일때 오른쪽으로 왔다갔다 하는 문제가 있어 


숫자를 표시할때마다 두자리수 이상의 숫자는 


글자의 가로픽셀만큼 이동해서 디스플레이하는 식입니다. 



OLED를 붙이려 생각했더니 당연히 속도계를 생각하게 되고 


추가로 몇몇 센서도 붙여보고 싶고


그러다보니 프로그래밍 내용도 점점 복잡해질게 뻔해서


일단 인서트너트와 같이 주문한 아두이노 미니 도착하면 


스로틀제어만 하는 기본형으로 제작을 하고,


추가로 업그레이드를 하는 방식으로 갈 생각입니다. 




저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 하얀마음 2016.07.15 08:37 신고

    거의 완성이 되어 가는군요.
    기대가 되네요.
    날씨가 덥습니다.
    건강 유의 하세요.

    • pashiran 2016.07.16 01:54 신고

      아두이노 프로그래밍 부분은 완성이 되려면 한참 멀은 것 같습니다.
      벌려놓고 보니 인터럽트며 셋업이며 처음 제대로 프로그래밍을 하는데 큰 산이 많네요
      일단 움직이게만 만들어 놓고 OLED 디스플레이 부분은 추가로 할 생각입니다.

+ Recent posts

', 'auto'); ga('send', 'pageview');

티스토리 툴바