'Making'에 해당되는 글 67건

  1. 2017.05.22 알루미늄 가공 시작.
  2. 2017.05.20 CNC용 절삭유 펌프 컨트롤러 완성 (2)
  3. 2017.04.29 CoreXY 설계 진행상황
  4. 2017.04.22 CoreXY 설계 진행상황 - 자동 전원 OFF 기능 추가예정 (2)
  5. 2017.04.19 ATTINY85 Digispark 보드 트러블 - 해결. (2)
  6. 2017.04.11 가공준비중 아두이노에서 생긴 트러블.
  7. 2017.04.06 0406 CoreXY 설계 진행상황
  8. 2017.03.31 설계 진행상황
  9. 2017.03.30 Attiny85로 CNC 절삭유 제어장치를 만들어보려 합니다.
  10. 2017.03.29 CoreXY 설계중.
  11. 2016.11.17 더치커피머신 90%쯤 완료.
  12. 2016.09.18 OLED 스위치 입력과 수치변경 (2)
  13. 2016.08.22 u8glib 화면 전환 딜레이 문제 해결
  14. 2016.08.20 전기자전거 간단버전 테스트 (6)
  15. 2016.07.28 정량펌프를 이용한 더치커피머신 설계
  16. 2016.07.16 전기자전거 - 생각정리 (1)
  17. 2016.07.13 전압체크를 위한 회로. (6)
  18. 2016.07.13 잡담)u8glib 폰트와 메모리의 용량. (1)
  19. 2016.07.12 마찰식 전기 자전거 - OLED (2)
  20. 2016.06.30 마찰식 전기 자전거 - 제작 방향의 전환.
  21. 2016.06.29 전기 자전거 쓰로틀을 이용해 RC모터 제어하기
  22. 2016.02.13 전기자전거 한동안 중지입니다.
  23. 2016.01.24 마찰 구동식 전기 자전거 - 트러블 (4)
  24. 2016.01.21 마찰 구동식 전기 자전거 - 스프링 테스트. (1)
  25. 2016.01.12 마찰 구동식 전기자전거 - 스프링 사러 청계천 탐방. (2)
  26. 2016.01.10 마찰 구동식 전기자전거 - 컨트롤러 분해와 분석. (6)
  27. 2015.12.29 마찰 구동식 전기자전거 - 위치 변경 (6)
  28. 2015.12.21 마찰 구동식 전기자전거 - 브라켓 수정. (2)
  29. 2015.12.12 마찰 구동식 전기자전거 -하중 조절용 스프링 테스트.
  30. 2015.12.03 마찰 구동식 전기자전거 -모터 위치 변경 및 브라켓 재설계. (4)
크리에이티브 커먼즈 라이선스
Creative Commons License



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


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


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












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


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


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









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










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









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









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


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









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











베드 앞면에 펀칭을 하고 










드릴로 뚫고.. 











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


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




 







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


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










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










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


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











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


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


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


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















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


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

















3T는 그럭저럭 나오는데







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


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


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


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










저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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



저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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 보드에서 신호가 제대로 나오는지 확인해 봤습니다. 




저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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

참조

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

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


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


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


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


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






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







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


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


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


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


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


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


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



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


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









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


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

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


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





회로 마련하고


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


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


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


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


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


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


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







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










 


보드 리스트에 안뜨네요. 



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

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


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









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


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











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












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


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


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


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


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


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



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

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


이정도쯤 진행됐습니다. 










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











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









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


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

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




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


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


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







 



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


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


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


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










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


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


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


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


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



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

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

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


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


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



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


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


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



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


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


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


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







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


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


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



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


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



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


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


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


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


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


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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 정도가 최하이며 그 이하로 내리면 가감속 코드 없이는 탈조가 납니다. 



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


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


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

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




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


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


일단 간단한 입력은 되는데 


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


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


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




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


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


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









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


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


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


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


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




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


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

2.디바운스 처리가 쉽다

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

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







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







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


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


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







저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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이 함수 호출하면 메모리에 디스플레이 할 정보를 불러들이고서 


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


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






저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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으로 고정하도록 했습니다. 


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







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


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


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




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


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


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


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



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


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



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


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


덩치가 좀 큰듯 하네요.  




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



저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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와 스위치를 일체형으로 만들고


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



저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
크리에이티브 커먼즈 라이선스
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으로 조정해서 맞췄습니다. 



이렇게 한 후 





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




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

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



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


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



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








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









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









그냥 작은 폰트의 용량






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


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


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





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


87% -> 58%











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


87% -> 45%









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




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


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


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




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

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






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


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


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


어떤 형태로 해야 편할지 



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


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






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


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


전에 올렸듯 


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




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


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



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


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


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






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


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



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


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



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


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


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


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


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


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



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


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


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


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



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


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


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


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


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


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




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


처음 소개할 때 올렸던 사진입니다. 


http://pashiran.tistory.com/661 에서 말했듯 


마찰 구동식 자전거의 마찰접촉은 작용 반작용의 원리로 작동되는 것이라


위와 같이 스프링으로 모터의 무게를 상쇄해 주어야 하죠.



그리고 위에서 파생된 문제로 모터의 위치와 브라켓의 위치가 자유롭지 않은 부분이 있습니다.


브라켓에 장착된 스프링이 모터를 밀어서 타이어에 접촉시키기 때문에 


브라켓의 각도, 자전거의 각도, 모터의 위치


심지어 주행중 가속도의 변화까지 모두 터와 타이어의 접촉상태에 영향을 주고



모터가 클 경우 브라켓의 이동범위가 확보되기 힘들기 때문에


저처럼 65mm 이상의 지름을 갖는 모터를 사용하려면 설계 면에서도 상당히 애로사항이 있습니다. 










애로사항의 결과.. 


초기부터 시작해서 큰 수정만 여섯번 이상, 자잘한 수정은 훨씬 더 많이 들어갔습니다. 






결정적으로 90% 이상 만들어놓고 방향을 전환하게 된 건 스프링 때문인데


일단 딱 맞는 스프링 찾기가 굉장히 힘들더군요.


스프링은 보통 강선의 굵기와 꼬인 길이, 꼬인 지름에 따라 다른 탄성을 보이는데


이게 베어링이나 볼트 너트처럼 딱 정해진 표준 스프링이 없다는 문제가 있습니다. 



그래서 저는 스프링을 사서 안맞으면 다른거 써보고 다른거 써보고


중국에서 주문해보고 한국에서 주문해보고 10여종을 써봤습니다만


미묘하게 전부 맞지는 않더군요.



스프링 탄성을 조절하는 조정부를 만들면 되긴 하는데 


선반가공 없이 3d 프린터와 소형 cnc로 만드는 부품의 한계가 있어


만족할만한 설계가 나오지 않았습니다. 




중간에 몇번 언급했지만 모터를 한단계 줄여야겠다 싶어서 


하비킹에 재주문한 순간 BACKORDER에 걸려 몇달이 지나는 바람에 생각할 시간이 많아졌는데요





어차피 쓰로틀을 사용하려면 analog 를 PWM으로 변환할 아두이노가 들어가야 하고 


그러니 귀찮게 스프링 가지고 시간을 끄느니 서보모터를 넣어서 마찰접촉을 컨트롤하게 하는 게 낫지 않나?


하는 생각이 들었습니다.








도면 뽑아보니 서보모터를 눕히는게 공간도 적어지고 좋겠어서 변경했습니다. 











RC용 샥을 넣긴 했는데 아날로그 신호를 PWM으로 매핑하는 부분을 잘 조정하면


딱히 샥이 없어도 괜찮을 것 같긴 합니다. 그래도 일단 샀으니 넣어봄





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


#include <Servo.h>


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

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

int servopos = 0;     // 서보 위치를 저장할 변수 선언

int motorspeed = 0;   // 모터 속도를 저장할 변수 선언

int throttlePin = A0; // 쓰로틀의 입력을 A0 로 선언

int throttleValue = 0;   // 쓰로틀의 수치를 0으로 선언



void setup() 

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

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

 

 

void loop() 

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

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

  controllservo.write(throttleValue);

  delay(15);

  }



컨트롤러의 홀센서out 신호를 A0 에 연결, 전원선을 아두이노의 5V, GND에 연결,

아두이노의 9번핀을 서보모터의 컨트롤 핀에 연결하고

서보모터의 전원을 연결합니다. 

서보모터의 전원 GND와 아두이노의 GND를 연결합니다. 




대충 짠 코드입니다. motorservo나 servopos  등 쓰이지 않는 것들이 있습니다. 

나중에 쓰게 되겠지요




http://pashiran.tistory.com/669 이 링크에서 분석한 바 있지만


쓰로틀에 따라 홀 센서의 전압 출력은 쓰로틀을 올릴수록 올라갑니다. 


5V 안쪽의 값이기 때문에 그대로 analogRead() 명령어를 사용한 후


서보 범위에 맞도록 map 명령어를 사용해 수치를 바꿔줍니다. 


throttleValue=map(throttleValue,0,1023,0,179) 라는 부분이 있는데


아날로그 입력값인 0~1023 을 0~179 범위로 매핑하게 됩니다. 



이 출력을 이용해 RC용 서보모터를 조정하거나 ESC에 연결해서 모터를 가감속할 수 있습니다. 







새로 산 부품이 도착하는 대로 추가설계 진행 예정입니다. 

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



요즘 프린트 결과물이 영 좋지 못합니다. 결도 다 흐트러지고 원도 찌그러지고..






구매후 여태까지 계속 유지/보수/개조를 하면서 원본에 있던 부품중 남아있는게 거의 없는데


이제 저 레일바퀴도 거의 맛이 갔네요. 






언젠간 해야 하겠다고 생각했던 LM가이드로의 교체 


더 미룰 수 없겠습니다. 



LM 교체는 프린터를 거의 전부 분해해야하는지라 시간이 좀 많이 걸릴듯합니다. 


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



미끄럼방지 테잎을 붙여봤습니다. 


적갈색인 것과 투명한 것이 있는데 투명이 좋을 것 같아 이걸로 골랐지만...


적갈색과 비교해 좀 심하게 거칠더군요.










심하게 거칠다보니 이런 사고를 냈습니다. 


그냥 수축튜브 씌우는 정도로 마무리를 했어야 하는데... 












이렇게 된거 실리콘 케이블로 바꾸자 하고는 뚜껑을 들어내고 전선을 잘랐습니다. 


그런데... 납땜이 안되더군요.


알고보니 저 부분이 전부 에나멜선이었습니다. 대형 사고를 쳤습니다. 


에나멜 코팅 때문에 납땜이 안됩니다. 










에나멜 코팅을 전부 벗기지 않으면 안되는 상황이라서

한가닥 한가닥 라이터로 지져 코팅을 태우고 사포질로 마무리합니다






그리고 실리콘 케이블과 납땜하고 수축튜브로 마무리했습니다. 



그리고 모터 커버가 안 닫혀서 다시 들어내고 더 잘라내고 같은짓을 한번 더 하고;;;; 다시 납땜했습니다. 



그 과정에 뭘 잘못건드렸는지 베어링에 문제가 생긴듯... 돌긴 하는데 저항이 좀 있습니다..



모터 마운트 설계도 최적화되지 않은 것 같아 다시 잡아야 하나 하고 고민하던 참에 


비싼모터 얼마 쓰지도 못하고 중고품을 만들어버렸습니다... 



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



날이 추워서 테스트가 늦었습니다. 


일부 설계를 수정하고 스프링을 달아 구동해 보았습니다. 


일단 튀어올라서 바퀴에 닿긴 하는데 닿은 상황이 유지되지 않는군요.


손으로 밀어보니 생각보다 바퀴를 타고 올라가는 힘이 강하지 않아 접촉을 유지하지 못합니다. 


이제 되지 않을까 기대했던 상황이라 약간 아쉽긴 한데 그래도 이제 어느정도 되는구나 싶기도 하네요.





#튜닝 리스트

1.새로 출력한 부품으로 교체해서 위치를 잘 잡아보기

2.모터에 사포스티커를 붙여 마찰을 강화해보기

3.모터 브라켓 재가공해서 접촉위치 조정하기

4.스프링 바꿔보기


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



온라인으로 소매에서 사는건 힘들고 


알리에서 사는건 손에 들어보기 전에는 강도를 짐작하기 어려워서 그냥 청계천에 오랫만에 나와봤습니다. 









날은 춥지만 여기만 오면 그냥 눈이 휙휙 돌아갑니다. 신기한 것도 많고..















단순 공구상 뿐 아니라 특수자재나 공업용품 등을 구하기 쉽습니다. 


세운상가 쪽으로 들어가면 전자부품도 취급하는 업체들이 많은데


청계천 변으로는 기계, 공업부품 업체들이 대부분입니다. 







마끼다에서 전기자전거도 만들었던가요??










오늘 찾아온 업체입니다. 







소형 스프링은 딱히 정해진 규격대로 생산되지가 않습니다. 


그래서 주문한 대로만 생산되지만 여기서는 남는 물건들을 소량으로 따로 판매도 합니다.


저렇게 따로 나와있는것들은 무조건 개당 500원입니다. 



손으로 뒤져보면서 적당히 얼추 맞겠다 싶은 것들을 10여개 골라왔습니다. 








길바닥에서 작업하시는 분들이 있습니다. 


청계천 거리에서는 가끔은 절단기도 돌아가고 용접기도 돌아가고 합니다. 






예전에 왔을때는 없던 계양 대리점이 있네요. 창밖에서 침흘리며 봤습니다. 










영화같은 곳에서 보던 양철 공구상자도 있군요. 요즘도 생산이 되나봅니다. 


이곳에는 공구상도 이삼십미터마나 하나씩 있을정도로 많은데 잘 보면 구색이 약간씩 다릅니다. 


목수들 쓰는 공구가 많은 집이 있고, 인테리어 업자들이 찾겠다 싶은 공구점이 있고


전기업자들이 쓸 공구가 많은 집도 있고 그렇습니다. 









M5, M6 이상 약간 긴 볼트들의 보유량이 좀 늘어났는데 


정리가 마땅치 않던 김에 마침 적당한 정리함을 만나서 사왔습니다.


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





핸들쥐고 가변저항을 돌리는건 매우 불편할 것 같아


중국산 컨트롤러를 하나 사서 분해해 봤습니다. 



컨트롤러 내부에는 전압표시 LED와 전원스위치와 홀센서가 들어있습니다. 










48V 용 컨트롤러라 사용 예정인 rc배터리와는 전압이 맞지 않습니다. 


다만 LED만 표시되지 않을 뿐 별 다른 문제는 없습니다. 









홀센서의 모델명(S49EH)을 보고 데이터쉬트를 찾아봅니다. 




















핀아웃을 확인합니다.














홀센서의 Vout을 확인해봅니다. 레버를 올렸을때와 내렸을 때의 전압차이입니다.


이걸 그대로 서보 테스터에 연결할 수 있으면 좋겠지만 어렵겠더군요. 


PWM 신호를 만들어 줘야 하기 때문에 아두이노 등을 이용해 아날로그 전압 -> PWM 변환을 하거나 


서보 테스터를 트로틀 레버에 심어야 하는데 후자는 기구적으로 어려울 것 같군요.


일단 컨트롤 부분은 불편해서 서보테스터 달아서 수동으로 조작하게 될 것 같습니다. 




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



정말 거의 다 됐다고 생각했으나 생각 외의 복병이 있었습니다. 


한쪽에서만 고정하는 모터를 위와 같이 양쪽으로 고정함으로서 전체적인 제작 난이도를 낮추면서도


구조적으로 더 안정하게 만들 수 있었는데요.








그런데 전에는 모터 고정 플레이트가 없었기 때문에 저정도 위치에 모터가 있게 됩니다만











이제는 모터 고정 플레이트 때문에 모터가 저기까지 내려와야 하는 상황이 되어버렸습니다. 


위쪽에 배치하면 체인에 걸리더군요.


저기서도 작동이 되긴 하지만 보도블럭이라도 지나가면 걸릴 것 같고


전에는 살짝 보였는데 저렇게 하면 그냥 훤히 보여서 디자인적으로도 문제가 있고


또한 체인 아래쪽에 모터가 걸치게 되어서 체인의 이물질이 모터에 다 튈 수 밖에 없다는 문제까지 드러났습니다.











아 막판에 의외의 복병이네 하고 생각하다가 다시 저기다가 모터를 대놓고 문득 생각해보니










전에는 저렇게 한쪽 고정이었기 때문에 축 평형을 위해서 반대쪽까지 고정축이 관통을 해야만 하는 상황이었습니다. 










그래서 어쩔 수 없이 자전거 기둥을 피해서 저렇게 장착을 하다 보니 


모터의 가동성이 안나와 어쩔 수 없이 하부로 옮긴 거였습니다.









그런데 이제 고정측이 양쪽이라.. 그냥 축을 나눠도 되는 상황이더군요.








중간지지대에는 전산볼트를 2개 넣고 출력물로 고정해 비틀림을 잡아주도록 했습니다. 


일단은 프로토타잎을 출력해서 맞춰보는 중입니다. 




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




자전거에 고정되는 부분은 기둥 한개 뿐이라 저렇게 무게로 내려가게 됩니다. 







예전에 다른 일로 사뒀던 실리콘 판을 잘라서 끼워넣고 조입니다. 


그래도 모터 무게로 조금씩 내려가는게 보여서 윗부분 형태를 수정할 계획입니다. 








가조립을 해놓고 보니 기어가 낮을때는 체인이 걸리는 문제가 발생하네요.








반대쪽은 10mm 정도 여유가 있습니다만 모터의 축 때문에 


좀 더 유효하게 쓸 수 있는 공간이 낭비되는 느낌이 심합니다. 









그래서 잘라냅니다. 











쇠톱으로는 자르기 힘든 강철이라 고생좀 했습니다. 








원래 쓰던 쇠톱날은 오래 써서 날도 거의 없길래 새 날을 사서 2개정도 사용하니 잘리더군요.








공간의 여유가 생긴 만큼 모터의 반대쪽도 마운트를 만들어 끼울 생각으로 축을 조립했습니다. 


구매시 같이 포함되어 있는 프로펠러 축입니다. 


위에서 잘라낸 모터 축이나 이런 악세사리는 모두 별도 구매 가능한 부품이라


잘라내도 부담이 적습니다. 











이건 알루미늄이라 금방 잘리는군요.














임시로 아크릴 3T를 사용해 브라켓을 만들었습니다. 







이렇게 해서 양쪽으로 결합하면 얇은 판재로도 충분히 튼튼하게 고정이 가능합니다. 


원래 알루미늄을 깎으려고 했는데 그냥 PCB 판 하나 깎아서 대체하려고 합니다. 











모터를 밀어주는 스프링을 이런 구조로 만들어 테스트해 봤습니다. 








못 버티더군요..









돈 안들이고 있는 재료로 어떻게든 해결을 보려고 3D 프린터용으로 구매했던 스프링을 꺼내들어봅니다. 









이런 구조로 가운데서 밀어주면 될 것 같습니다. 






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

마찰식 전기자전거에서는 모터의 작용 반작용으로 

모터가 자동으로 상승하는 메커니즘을 사용한다는 것은 지난번에 설명했습니다. 

옆으로 뉘어서 모터의 무게부하를 거의 없게 만든 후 속력을 올렸다 내렸다 할 때의 움직임을 찍어봤습니다. 



이번에 새로 안 사실인데 모터의 전력선이 강선이라 움직이는데 저항을 많이 주네요. 

단순히 케이블타이로 고정하려 했는데 

전선 고정부도 따로 잘 만들어야 움직임에 방해가 없을 것 같습니다. 


스프링강선을 찾아보니 인터넷으로 소량 구입이 가능한 곳을 찾기 힘들었습니다. 








용산알씨에서는 소량으로 매우 싸게 팔긴 하는데 스테인레스가 아니고








오픈마켓에서 소분해서 파는 건 양이 너무 많아서 가격이 좀 하네요.








일단 어느 정도의 굵기가 맞는지 확인을 해야 해서 


굵기별로 한두개씩 사봤습니다. 







측면의 모터 고정 플레이트는 알루미늄 가공 계획입니다만 일단 시제품은 출력물로도 충분하더군요









굵기별로 여러개 샀는데 구매한 것 중 제일 굵은 2mm 를 써야 어느정도 힘이 되더군요.









스프링강을 휘고 잘라줍니다.


스테인레스 스틸이 아니라서 어느정도 사용한 후 


비슷한 굵기의 스테인레스 강선으로 교체할 생각을 갖고 있습니다. 










이런 식으로 고정해 봤습니다. 


모터를 장착해 보니 스프링 구조상 처음에는 힘을 많이 받고 올라갈수록 장력이 약해지므로


중간까지만 힘을 발휘하는 상황이 되더군요.


일단 자전거에 조립후 테스트를 해 봐야 겠지만 스프링의 장착 방법과 조정 방법을 더 고민해 봐야 겠습니다. 






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



모터를 설치할 부분은 저곳입니다. 체인스테이와 사이를 가로지르는 보강 기둥 사이로 넣을 생각입니다. 









ADD-E 의 설치 동영상이 많은 도움이 되네요. 










이런 부분이 꽤나 도움이 됩니다. 








ADD-E 는 자전거의 형태에 따라 설치 방법이 약간씩 다른데


크랭크를 분리해서 설치하는 방법과







킥스탠드 마운트에 설치하는 방법이 있습니다. 



크랭크 분리 공구도 있지만 BB너트의 형태가 한쪽은 그냥 BB쉘 내부로 들어가는 형태라서


해당 부품을 교체하기 전에는 크랭크 마운트 설치는 불가능한 상황... 


저렴한 BB 부품은 1만원대이긴 합니다만 너트 하나 바꾸자고 필요없는 BB 사기도 좀 애매하고


좀 생각해 보니 브라켓 설계와 제작도 애매할 것 같아서 그냥 체인스테이에 고정하기로 했습니다





















목업을 프린터로 쭉쭉 뽑아봤습니다. 3D 프린터는 이럴때 정말 편해요.


왼쪽부터 시작한 것입니다. 


1번은 체인 스테이 사이가 너무 좁아서 아예 들어가질 않았고


2번은 들어가긴 했는데 충분히 깊이 둘어가질 않았고


3번은 딱 맞았습니다. 








상부 브라켓도 왼쪽부터 시작해서 수정한 버전입니다. 









현재는 대략 이런 모습입니다. 아직 조정할 부분이 많습니다. 





저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by pashiran
이전버튼 1 2 3 이전버튼

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

티스토리 툴바