elsa in mac

핫엔드(Hotend) 교체와 PID 튜닝 본문

3D 프린터/3D 프린터 관련 정보

핫엔드(Hotend) 교체와 PID 튜닝

elsa in mac 2017. 7. 18. 23:08

최초에 3D 프린터를 사면, 해당 파트에 맞는 셋팅을 미리해 놓기 때문에, 이 후에 각 파트를 업그레이드 할 경우, 어떤 것들을 유념해야 하고 놓치면 안되는지를 알기 어렵습니다. 

Hotend를 교체할 경우에도 그러한데요..

이번 포스트에서는 marlin을 사용하는 것을 전제로 Hot End 교체 시 주의해야할 사항을 알아보도록 하겠습니다. 

우선 Hot End에는 노즐을 가열하기 위한, Power 선(주로 붉은색)과 온도를 측정하기 위한 Thermistor(주로 검정색) 선이 연결되어 있습니다. 

이들 선들은 극성이 존재하지 않기 때문에, Controller에 연결하거나 혹은 선을 연장할 때, 극성을 염려할 필요는 없습니다. 

기존에 사용하던 Hotend가 아닌 전혀 새로운 Hotend로 교체를 하게 되면, Controller에서 Hot End를 가욜하는 조건이 기존과 상이하기 때문에, 새로 교체 후에 가열을 시키면 설정 온도에 도달하지 못하거나 thermal runway 오류를 발생시키게 됩니다.

따라서, 새로 바뀐 Hotend에 맞는 설정을 Firmware에 해 줘야 하는데... 이를 소위 PID Tuning(튜닝)이라고 합니다.  PID는 Proportional-Integral-derivative의 약자로 직역하면, "비례 적분 미분" 이라는 뜻 이지만, 쉽게 설명하면 , 제어할 요소의 상태 정보를 Feedback 받아 그 값에 따라 참조값 혹은 차이값을 보상하는 제어 방식을 의미 합니다. 

자 그림, Hotend 및 bed에 대한 온도 조정과 관련하여 PID 튜닝을 해야 하는 이유는 몰까 ?

만일, 사용자가 Hotend의 온도를 220도로 설정했다고 하면, Controller는 Hotend에 전기를 가해 노즐의 온도를 높이게 됩니다. 물론, 주기적으로 온도센서를 통해 현재의 온도가 얼마인지를 측정하고, 220도가 될 때까지 가열을 지속하게 될 것입니다. 이 싸이클을 계속 반복하겠죠.. 

그럼 컨트롤러는 어느 시점에 가열을 멈춰야 할까요 ? 만약 센서를 통해 220도가 감지 된 시점에 가열을 멈추게 되면, hotend의 온도가 220도에서 멈출까요? 그렇치 않습니다. 온도를 높인다는 것은 현재의 온도보다 더 쎈 온도를 계속 주입할 때 가능합니다. 따라서, 220도로 가열된 시점에 히터의 실제온도는 220도보다 높을 것입니다. 그러므로 220도가 감지된 시점에 가열을 멈춰도, 온도는 향 후 얼마동안 좀 더 올라가게 됩니다. 3D 프린터에서는 사용자가 설정한 온도를 계속 유지 해야만 합니다. 이것을 컨트롤로 입장에서 보면, 가열을 하다가 너무 온도가 높아질 것 같으면 미리 얼마 전에 가열을 멈추고, 또 온도가 너무 내려 갈것 같으면, 미리 얼마 전에 다시 가열을 하는 가열과 비가열의 싸이클을 끊임 없이 반복하면서 일정온도가 유지되게끔 해 줘야 합니다. 

하지만, 컨트롤러의 가열 센서와 가열 회로, 실제 Hotend의 구조와 재질 그리고 환경이 모두 상이하기 때문에, 사용자가 정의한 온도를 기준으로 얼마나 빨리 가열을 멈추고, 또 얼마나 대기 했다가 다시 가열을 해야만 온도를 유지할 수 있을 지 정해진 값이 존재할 수 없습니다. 

즉, PID 튜닝이라는 것은 사용자가 정의한 임의의 온도를 계속 유지하기 위한 가열과 비가열 조건을 찾는 단계라고 할 수 있습니다. 만일 너무 늦게 가열을 멈추고, 또 너무 늦게 재 가열을 하게 되면, 가열할때는 너무 온도가 높게 올라가고, 비 가열 구간에서는 또 너무 온도가 떨어져 전체 싸이클로 보면, 온도의 편차가 들쑥 날쏙 심하게 되겠죠.. 반면, 타이밍을 정확히 찾게 된다면, 항상 일정한 온드를 유지할 수 있게 될 것입니다.  

PID 튜닝을 했다고 해서 완벽하지는 않지만, 그나마 PID  튜닝을 해 주면 좋은 이유가 바로 위와 같은 것 입니다.   이유는 실제 동작 중에는 주변의 상황은 시시각각 변할 수 있고, 더군다나 hotend가 임의의 가속도로 계속 움직이고 있기 때문이죠..  

우선 새로운 Hotend를 PID 튜닝하기 위해서는 3D printer의 제어기(Controller)를 USB-Serial 포트로 PC나 Mac과 연결합니다. 그리고, Terminal을 띄우면 Controller에 명령을 내릴 수 있게 되는데요..

기본적으로 핫엔드에 상시 Fan을 가동시키는 형태로 운영한다면, Fan을 켜 놓습니다. 그리고, 노즐을 Cold 상태로 만들어 놓은 상태에서 튜닝을 시작해야 합니다. 

터미널에서 M303 E0 S200 C8 명령을 내리게 되면, 아래와 같이  PID Autotune start라는 메시지가 출력되면서, 

PID Autotune start
 T:90 /0 B:37 /0 @:127 B@:0
 T:90 /0 B:37 /0 @:127 B@:0
 T:91 /0 B:37 /0 @:127 B@:0
 T:92 /0 B:37 /0 @:127 B@:0
 T:94 /0 B:37 /0 @:127 B@:0
 T:95 /0 B:37 /0 @:127 B@:0
:
:

marlin이 Hotend의 온도를 올리면서, 적정한 파리미터 값을 찾아 주게 됩니다. 온도는 200도까지 올리게 되며, 측정이 끝나게 되면, 아래와 같은 안내 문구가 나오게 됩니다. 


PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
#define  DEFAULT_Kp 37.56
#define  DEFAULT_Ki 5.73
#define  DEFAULT_Kd 61.54

PID Autotune을 수행하고, 적절한 파리미터(Kp, Ki, Kd)를 찾았으니, Firmware의 소스코드를 아래와 같이 수정하라는 메시지 입니다. 

Arduino로 Marlin 펌웨어를 열고, configuration.h 파일을 보면, 위와 같이 DEFAULT_Kp... 부분을 검색으로 찾을 수 있습니다. 

위의 예와 같이 // 를 앞에 붙여 주석처리를 하고, Autotune으로 찾은 파라미터를 터미널에서 복사한 후, 주석처리 한 아래 칸에 적당한 위치에 복사해 주면 됩니다. 

빌드를 하고, 업로드를 해서 Controller의 펌웨어를 갱신해 주면 완료되는데, EEPROM을 사용하는 분들은 터미널에서 파라미터값을 M301 명령으로 입력한 후, M500 명령으로 EEPROM에 추가적으로 저장을 해 주면 됩니다. 

예를 들어, 위의 예에서와 같이 Kp가 37.56, Ki가 5.73, Kd가 61.54 라면, 터미널에 아래와 같이 입력을 해 줍니다. 

M301 P37.56 I5.73 D61.54

그리고, M500을 입력하여 EEPROM에 저장을 합니다. 

여기서 한 가지 더 유념해야 할 것은 바로, Thermistor의 저항 값인데요.. marlin소스의 configuration.h에 보면 아래와 같이 TEMP_SENSOR_0 ~ 4까지 define이 되어 있는 것을 볼 수 있습니다. 

Hotend를 구매할 때, 사양을 확인할 수 있는데, 예를 들어 아래와 같습니다. 

보면, 중간에 Thermistor : 100K NTC 3950 이라고 되어 있죠.  marlin의 TEMP_SENSOR Define 문 바로 위에 주석에 보면, Thermistor의 종류에 따라 TEMP_SNSOR_x의 번호를 결정하도록 되어 있습니다.  주석을 확인하고 일치하는 번호로 변경을 해 줘야 합니다. 

이제, Controller를 PC나 Mac과 분리한 후, 껏다 켜고 나서 Hotend를 가열하여 정상적으로 동작하는지를 확인하면 됩니다. 



공유하기 링크
Comments