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

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