Replicape 소개
올해 초부터 3D 프린터를 다시 시작하면서 좀 심도있게 가 볼 생각으로 기존의 Arduino 기반의 3D 프린터에서 벗어나 새로운 CPU로 접근하고자 합니다. 그래서 선택한 제어기가 아래의 32Bit 기반의 Replicape 입니다.
올해 초부터 3D 프린터를 다시 시작하면서 좀 심도있게 가 볼 생각으로 기존의 Arduino 기반의 3D 프린터에서 벗어나 새로운 CPU로 접근하고자 합니다. 그래서 선택한 제어기가 아래의 32Bit 기반의 Replicape 입니다.
레고 마인드스톰을 위한 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
아래는 위에 파트를 모두 적용한 상태입니다.
감사합니다.
Pixy 카메라와 마인드스톰 어뎁터 (1) | 2015.07.01 |
---|
레이져 제어를 위한 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
감사합니다.
Image2Gcode Software (0) | 2015.06.24 |
---|---|
마를린 펌웨어로 레이져 제어 (4) | 2015.06.15 |
아두이노 IDE CPU Pin 할당 (0) | 2015.06.08 |
마를린 펌웨어(Marlin Firmware)에 레이저 제어 적용하기
3D 프린터에 플라스틱 익스루더외에 레이져를 적용하여 그림을 조각하고자 하시는 분들이 많이 계십니다.
이에 대해서 제가 구현한 내용을 정리해 올립니다.
우선 해야할 내용에 대해서 알아야 하기에 아래처럼 전체적인 큰 그림을 구성해 봤습니다.
각 단계별로 간략히 설명한 이후에 다음번에 좀 더 자세히 설명드리도록 하겠습니다.
전체적인 구성은 2단계입니다.
먼저, 그림(칼라이미지 또는 흑백 이미지)을 마를린 펌웨어가 이해할 수 있도록 G-gode로 변환하기
위한 단계가 있습니다. 이는 3D프린터에서 모델링을하고 이를 슬라이서를 이용해 G-code를 생성하는
것과 같은 단계입니다.
이를 위해서는 3D 프린터의 slic3r이나 키슬라이서와 같은 이미지를 G-code로 변환하기 위한
프로그램이 필요하며 구성한 Image2Gcode 프로그램은 Scorch Work의 "dmap2gcode"
프로그램을 마를린 펌웨어에 맞도록 일부 수정해서 간략히 구성했습니다.
Scorch Work의 관련 사이트는 아래와 같습니다.
http://www.scorchworks.com/
아래는 간략히 구성한 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와 레이져 제어 보드의 연결에 대해서 먼저 알아 보고자 하시는 분은 아래 영문 페이지를
보시면 좀 더 빠른 정보를 보실 수 있습니다.
전체적인 사항은 이와 같습니다만 이를 보시고 구현하시기는 힘들거라 생각됩니다.
실제적인 구현을 위한 좀 더 구체적인 사항은 다음 포스트에서 설명드리도록 하겠습니다.
(이전 영문 정리사항은 국문으로 올리도록 히겠습니다.)
감사합니다.
레이져 제어를 위한 마를린 펌웨어 변경 (1) | 2015.06.24 |
---|---|
Image2Gcode Software (0) | 2015.06.24 |
아두이노 IDE CPU Pin 할당 (0) | 2015.06.08 |