Replicape 소개

Posted by jhlee98y
2016. 7. 8. 16:07 3D Printer/Replicape


  올해 초부터 3D 프린터를 다시 시작하면서 좀 심도있게 가 볼 생각으로 기존의 Arduino 기반의 3D 프린터에서 벗어나 새로운 CPU로 접근하고자 합니다.  그래서 선택한 제어기가 아래의 32Bit 기반의 Replicape 입니다. 



1) Replicape & BeagleBone Black

   

    Replicape은  일반적인  Arduino 기반 프린터 제어기에서의  RAMPS 1.4 쉴드보드와 유사한 성격의 CAPE입니다.  CAPE는 Beaglebone Black의 쉴드 보드를 칭합니다. 
따라서, Replicape은 Beaglebone Black을 기반으로 3D 프린터를 구동하기 위한  
일종의 Interface board 로 생각하시면 됩니다. 

    Replicape은 지난 2015년에 Kickstarter에 런칭한바 있습니다.  
(https://www.kickstarter.com/projects/1924187374/replicape-a-smart-and-quiet-3d-printer-control-boa/description ) 

    Replicape관련은 아래의 wiki 페이지를 참고하시면 됩니다.  한가지는 아직 사용자가 많지 않아 설명 부분이 많이 부족한 면이 있습니다.  http://wiki.thing-printer.com/index.php?title=Main_Page 

  

     Beaglebone Black도 Arduino와 마찬가지로 제어기이지만 ARM 기반의 32Bit프로세서인 
ARM Cortex-A8 AM335x 1GHz 를 적용하고 있습니다.  또한, 이는 잘 알려진 라즈베리 파이와 같은 single computer의 개념으로 별도의 3D 그래픽 칩을 장착하고 HDMI 출력을 지원합니다.  PC와 같이 USB 입력/출력과 인터넷을 위한 이더넷 포트를 가집니다. 가장 강력한 특징은 92개의 GPIO 포트와 real-time PRU 를 가집니다. 
  PC와 같이 별도의 운영체제를 가지며 현재는 Linux Debian Wheezy를 적용하고 있습니다. 
좀 더 자세한 사항은 http://beagleboard.org/black  사이트를 참조하시길 바랍니다.


    약 3주전에 주문한 Replicape을 미국으로 부터 받았습니다. 아직 잘 알려지지 않아 판매처가 많지 않고 주로 미국/유럽 base 친구들이 사용하기에 저도 미국의 쇼핑몰에서 주문했습니다. (특이하게 ebay 등록되어 있지않고 아마존에 있더군요. ^^) 
  


  받은 제품은 사진의 제어보드 달랑 하나!!  
첫인상은 워낙 작은 SMD 실장 부품을 사용해서 사이즈는 컴팩트하지만 묵직한 느낌이 있습니다. 중앙에 나란히 5개의 모터 드라이버 칩인 TMC2100이 보입니다.    



  솔직히 이 드라이버는 아직 의구심이 드는 부분이 많이 있어 나중에 철저히 시험해 봐야할 부분입니다. 
이 드라이버는 1/16 마이크로 스테핑을 1/256로 뻥뛰기해 1/16 마이크로 스테핑 특유의 모터 구동 소음을 줄여 주는 역활을 한다고 합니다만 32Bit CPU 특성상 직접적으로 1/128 마이크로 스테핑 구동이 가능하기에 굳이 비싼 이 드라이버를 적용했는지는 실제 구동 시험을 해 보면 알 수 있을 듯 합니다만 개발자 나름의 직관을 믿고 좋은 결과를 주리라 믿습니다. 


   개발자에 대한 믿음은 여러 군데서 확인할 수 있지만 위에 보이는 전원입력단의 차량용 휴즈만 봐도 믿음직스럽습니다. ^^    또한, 마킹도 나름 꼼꼼히 잘 되어 있어 실수할 일 은 없을 듯합니다. 전원은 12 ~24V 가능하기에 24V 전원을 사용할 예정입니다. 

  아래는  같이 사용할 Beaglebone Black  Rev C입니다.  안전을 위해서 케이스 적용한 상태입니다.  


    아래는 Beaglebone Black에 Replicape을 장착한 모습입니다.  BBB와 크기가 비슷하기에 장착해도 그리 부담되는 크기는 아닙니다. 


 다음은 Replicape에 제어 소프트웨어를 프로그램하는 순서를 진행하도록 하겠습니다. 감사합니다.    
  


Pixy Pan Tilt Kit 레고마인드스톰

Posted by jhlee98y
2015. 7. 17. 11:40 Lego Mindstorm EV3

레고 마인드스톰을 위한 Pixy CAM Pan Tilt Kit  


얼마전 Pixy CAM을 레고 마인드스톰에 장착하기 위한 Pan Tilt Kit을 만들었습니다. 

Pan Tilt kit은 Pixy CAM을 마치 강아지의 머리와 같이 상하좌우로 움직이도록 하기 위한 

것으로 Pixy Pet을 만들기 위해서는 필수적이죠. 



성 제품이 저렴한 가격으로 판매되기 때문에 아두이노나 일반 로봇 강아지 팻에 적용하는 경우에는 

굳이 3D 프린터로 만드는 수고를 할 필요가 없지만 레고 마인드스톰이나 레고 테크닉에 장착하기 위해선  필요합니다.


1) Pan Tilt Kit Mount for Lego Mindstorm / Lego Technic


 


위에 사진의 왼쪽이 Pan Tilt Kit의 기성제품에 포함된 마운트입니다. 중심에 서보 혼을 장착하고 

주위에 볼트로 고정하는 방식입니다.  오른쪽이 레고 마인드스톰에 장착하기 위한 레고형의 디자인입니다. 

아래는 3D 프린트한 후 레고 테크닉 부품들과 장착해 본 사진입니다. 



2) Pan Tilt Kit Camera Holder for Pixy CAM


다음으로는 Pan Tilt Kit의 카메라 홀더 부분입니다. 이 홀더 부분은 Pixy에 장착하기 위해서 기성 제품은 거의 맞질 않기 때문에 

Adafruit에서도 zummo pet을 만들때 상당부분을 잘라내고 사용합니다. 


 


왼쪽이 기성제품의 CAM 홀더이고 오른쪽이 이를 대체할 Part 입니다. 이는 레고와 무관하고 Pixy CAM의 

마운트용 홀에 장착되도록 설계했습니다. 

아래는 3D 프린트한 후 사진과 마이크로 서보와 장착해 본 사진입니다.





3) Pixy Cover for Pixy CAM

마지막으로 Pixy CAM의 커버를 디자인했습니다.  Pixy CAM은 비용적인 측면에서나 사용자의 창의성을 위해서

별도의 커버가 없기에 전원이 인가된 상태에서나 일반적인 취급의 경우에도 PCB 자체를 만져야 하기에 

향후를 위해서는 좋지 않습니다. ( 손에 있는 산성 성분으로 부터나 먼지등으로 인해서 PCB 자체가 부식됩니다)

  

이를 위해 단순 커버를 디자인했습니다.  아래는 3D 프린트한 후 사진입니다.

 



4) Final Assembly


아래는  위에 파트를 모두 적용한 상태입니다. 





감사합니다.


 

'Lego Mindstorm EV3' 카테고리의 다른 글

Pixy 카메라와 마인드스톰 어뎁터  (1) 2015.07.01

레이져 제어를 위한 마를린 펌웨어 변경

Posted by jhlee98y
2015. 6. 24. 12:04 Arduino

레이져 제어를 위한 Marlin firmware 변경 


  

이번 포스트에서는 레이져 제어를 위한 Marlin 펌웨어 변경사항에 대한 내용입니다. 

본격적인 펌웨어 변경 사항을 말씀드리기 전에 변경이 적용되는 7개 파일들에 대해서 

간략히 말씀드리도록 하겠습니다. 


1) configurations.h 

  - 잘 아시는 파일이라 생각됩니다. 여기에 레이져 제어를 위한 #define 문을 추가합니다. 

2) marlin_main.h

  - 이 헤더에는 레이져 제어에 사용되는 변수들의 extern 선언을 포함합니다. 

3) marlin_main.cpp 

  - 마를린 펌웨어의 핵심인 main cpp파일입니다. 이 파일에는 레이져 제어에 사용되는 

변수들의 초기화와 함께 레이져를 제어하기 위한 새로운 M-code를 추가합니다. 

추가되는 M-code에 대해서는 앞의 블로그를 참고해 주시기 바랍니다. 

4)  planner.h

 - 이 헤더에서 레이져 제어에 사용되는 변수들을 선언합니다. 

5) planner.cpp 

  - 모션 제어의 가장 핵심 code파일로 여기서 각축의 동작과 함께 레이져의 출력을

제어하는 code가 추가됩니다. 

6) pins.h

  - 이 파일은 레이져 제어에 사용되는 아두이노 메가 2560의 CPU pin을 할당합니다. 

7) ultralcd.cpp

  - LCD 메뉴에 레이져 제어를 위한 항목을 추가했습니다. 


1. configurations.h 

- 우선 레이져 제어를 사용할 때와 하지 않을때의 구분하기 위해서 마를린 개발자들이 

권장하듯이 #define으로 컴파일을 제어하도록 적용했습니다. 


잘 아시듯이 LASER_CTRL 에 대한 // 를 삭제하면 레이져 제어가 적용됩니다. 


2. marlin_main.h 

- 먼저 레이져 제어 즉, On/Off 제어 및 레이져의 강도를 조절하는 PWM 제어를 

위한 변수에 대한 extern 선언입니다.  실제 변수 선언은 "planner.h"파일에 있습니다. 

참고로,

. laser_ttl_modulation" : 레이져의 PWM 출력제어를 위한 변수이며

. laser_drv_pwr" : 레이져 on/off 용도 입니다.  


- 상기 내용의 추가는 파일의 어디에든 무관합니다. 


3. marlin_main.cpp 

- 이 main 파일에서는 초기화 루틴에 변수 초기화를 포함시키는 것과 g-code 파싱

 함수에 사용할  M-code를 추가하는 것이 주된 사항입니다. 


먼저 변수 초기화를 위해 파일 초기 부분과 "setup()"에 아래와 같이 추가해

주었습니다. 



- 위의 Setp 함수에서는 초기 구동시 레이져 출력을 OFF하고  있으며, 

output 변수들은 아래 설명할 pins.h에서 포함되어 있습니다. 


- 이제 레이져 제어를 위한 새로운 M-code를  G-code를 분석하는 function인 

process_commands()함수에  추가하도록 합니다. 

먼저, "G1" 명령 끝부분에 아래 내용을 추가합니다. 

이제  새로운 명령어 M160, M161, M162 를 추가하기 위해 아래와 같이 case문을 

이용해 아래 내용을 추가했습니다.

내용 위치는 나중에 찾기 편하게 하기 위해서 "case 200" 즉 M200 명령 앞에 추가했습니다.  


4. planner.h 

- 앞서 설명한 것처럼 레이져 제어를 위한 변수를 선언하는 부분입니다. 

이 변수들은 일반적인 변수선언과는 달리 아래 보시는 것처럼 

"block_t" 구조체 변수의 일부로 포함되어야 합니다. 



5. planner.cpp 

- 이제 변수 선언이 되었으니 이를 이용해 출력을 제어하기 위한 code를 

추가하면 됩니다.  이 내용은 본 변경중에  가장 복잡한 부분중의 하나입니다. 

이 파일에서 변경에 적용되는 함수는  

. check_axes_activity()

. plan_buffer_line()

이와 같이 2개입니다. 이에 대한 변경 사항으로 설명하도록 하겠습니다.


먼저, check_axes_activity() 함수의 변경 내용입니다. 

아래의 #define LASER_CTRL 부분을 보시고 내용 삽입 위치에 주의해서 삽입해 

주시면 됩니다. 



다음은 plan_buffer_line() 함수의 변경 내역입니다. 함수의 내용이 상당히 길기 때문에 

변경 내역을 2개 그림으로 분리되어 있습니다. 내용 참고하셔서 변경해 주시면 됩니다.



아래 내용도 plan_buffer_line() 함수내 변경 내역입니다. 



이제 마지막으로 아두이노 CPU의 핀 할당을 위한 변경과 LCD 메뉴의 변경이 남았습니다.

 

6. pins.h 

- 이 파일에서는 RAMPS 1.4의 AUX2 출력을 사용하기 위한 아두이노 CPU의 핀 할당을 

위한 변경입니다. 

내용에서 보시는 것처럼 아두이노 메가의 디지탈 출력 #42번과 #44를 사용하도록 할당합니다.


7. ultralcd.cpp 

- 마지막으로 LCD메뉴에 사용자가 임의로 레이져 출력을 제어할 수 있도록 메뉴를 추가했습니다.  



이것으로 마를린 펌웨어에 대한 레이져 적용을 위한 변경 사항 설명을 마치도록 하겠습니다. 

그리고 펌웨어 Download를 원하시면 아래 사아트에서 down받으실 수 있습니다. 


https://github.com/jhlee98y/Marlin_Laser


감사합니다.

'Arduino' 카테고리의 다른 글

Image2Gcode Software  (0) 2015.06.24
마를린 펌웨어로 레이져 제어  (4) 2015.06.15
아두이노 IDE CPU Pin 할당  (0) 2015.06.08

마를린 펌웨어로 레이져 제어

Posted by jhlee98y
2015. 6. 15. 11:03 Arduino

마를린 펌웨어(Marlin Firmware)에 레이저 제어 적용하기


3D 프린터에 플라스틱 익스루더외에 레이져를 적용하여 그림을 조각하고자 하시는 분들이 많이 계십니다. 

이에 대해서 제가  구현한 내용을 정리해 올립니다.


우선 해야할 내용에 대해서 알아야 하기에 아래처럼 전체적인 큰 그림을 구성해 봤습니다. 

각 단계별로 간략히 설명한 이후에 다음번에 좀 더 자세히 설명드리도록 하겠습니다.  



전체적인 구성은 2단계입니다. 

먼저, 그림(칼라이미지 또는 흑백 이미지)을  마를린 펌웨어가 이해할 수 있도록 G-gode로 변환하기 

위한 단계가 있습니다. 이는 3D프린터에서 모델링을하고 이를 슬라이서를 이용해 G-code를 생성하는

것과 같은 단계입니다. 


이를 위해서는 3D 프린터의 slic3r이나 키슬라이서와 같은 이미지를 G-code로 변환하기 위한 

프로그램이 필요하며 구성한 Image2Gcode 프로그램은  Scorch Work의 "dmap2gcode" 

프로그램을 마를린 펌웨어에 맞도록 일부 수정해서 간략히 구성했습니다. 

Scorch Work의 관련 사이트는 아래와 같습니다.  

http://www.scorchworks.com/Dmap2gcode/dmap2gcode.html 


아래는 간략히 구성한 Image2Gcode 프로그램으로 가장 핵심은 마를린 펌웨어에 적합하도록 

즉, 3D 프린터에서 사용하는 형식으로 G-code를 생성하는 부분입니다. 

이 프로그램에 대한 좀 더 자세한 사항이 미리 알고싶으시면 이전에 정리해 놓은  아래의 

영문 사이트 설명을 먼저 봐주시면 도움이 될 수 있습니다.


 http://dreammakercnc.blogspot.kr/2014/08/currently-my-micro-cnc-uses-arduino.html 




두번째는 마를린 펌웨어가 레이져를 적절히 제어할 수 있도록 펌웨어의 일부를 수정하는 것과 

하드웨어적인 구성이 있습니다. 

펌웨어의 수정은 기존 마를린 펌웨어에 레이져 제어 즉, 레이져의 On/Off와 레이져 제어의 

강도를 제어하기 위한 PWM 신호를 생성하는 것을 의미합니다. 


하드웨어 적으로는 RAMPS 1.4 AUX2 단자의 를 이용해 레이져 제어 보드를 제어하는 것을 

의미합니다.  여기서는 AUX2의 D42를 On/Off 용으로 D44를 PWM 제어용도로 사용했습니다. 




RAMPS1.4와 레이져 제어 보드의 연결에 대해서 먼저 알아 보고자 하시는 분은 아래 영문 페이지를 

보시면 좀 더 빠른 정보를 보실 수 있습니다. 

http://dreammakercnc.blogspot.kr/2014/09/control-wiring-connection-for-laser.html


전체적인 사항은 이와 같습니다만 이를 보시고 구현하시기는 힘들거라 생각됩니다. 

실제적인 구현을 위한 좀 더 구체적인 사항은 다음 포스트에서 설명드리도록 하겠습니다.

(이전 영문 정리사항은 국문으로 올리도록 히겠습니다.)


감사합니다.

   


'Arduino' 카테고리의 다른 글

레이져 제어를 위한 마를린 펌웨어 변경  (1) 2015.06.24
Image2Gcode Software  (0) 2015.06.24
아두이노 IDE CPU Pin 할당  (0) 2015.06.08