3D프린터에서 PID제어가 일어나는 부분이 두군데 있습니다.. 노즐과.. 베드히터죠..
P: Proportinal(비례) I: Integral(적분) D: Differential(미분)
제어를 의미하는 말인데 좀 어렵죠?
설정온도보다 측정온도가 높으면 히터를 끄고... 낮으면 켜는 게 일반적인 히터 제어방법입니다만...
이렇게 하다보면 .. 히터를 꺼도 잔열이라는것이 있기에..(숯불 생각하심됩니다. 불이 꺼져도 계속 열이 오르죠).
한템포 늦어져서 온도가 오르락 내리락 하면서 제어됩니다..
사진 삭제
사진 설명을 입력하세요.
오르락 내리락 하는걸 제어하려고 비례 제어라는걸 하는데..
현재온도와 목표온도 차이를 구해서 근사치를 출력하는것입니다.
이렇게 하면 목표온도에 완전히 도달하지 못하는 경우가 생길 수 있습니다..(왜 그러냐고요? 설명이 길어지니.. 그러려니하고 넘어갑시다.)
이걸 방지하기 위해 잔류편차를 구해 PI제어를 합니다...
제어 편차값을 구해 목표치에 추정하게 만드는건데 여기서 수식에 대한 설명은 제외하겠습니다... ㅡ,.ㅡ;
사진 삭제
사진 설명을 입력하세요.
미분제어가 왜 추가되느냐 하면은..제어 속도를 증가시키기 위함입니다.
PI제어만 하다보면 너무늦게 설정온도에 도달할 수 있기에 목표속도를 최대한 빠르게 도달하기 위한 제어라고 보면됩니다.
수학적으로도 미분이란.. 온도증가에 대한 가속도를 추정하는 것이라 보심됩니다.... 수학좀 해보셨다는 분들 들어본적 있으시죠?... ㅎ
사진 삭제
사진 설명을 입력하세요.
다면 너무 빠르게 온도를 올리다 보면 목표값을 많이 오버하게 됩니다...
프로그램 수식은 아래와 같이 단순합니다만...
조작량=Kp×편차+Ki×편차의 누적값+Kd×전회 편차와의 차
역기서 Kp, Ki, Kd값을 구하는게 문제가 됩니다.
사진 삭제
사진 설명을 입력하세요.
설치되어 있는 히터의 출력량과 온도센서의 반응속도, 온도센서에 대한 샘플링 속도..
주변상황에 따라 이 값이 모두 달라지기에.. .프로그램되어있는 초기값으로 모두를 만족스럽게 하지 못하게 됩니다..
온도 설정치에 도달하지 못하거나.. 온도가 오르락 내리락 하거나.. 너무 늦게 올라그는 경우가 생길수 있는데..
이때.. PID캘리브레이션이라는 동작을 통해 제어되는 상수 Kp, Ki, Kd값을 구해서 프로그램에 기억시키는 작업을 하게됩니다...
이런 과정을 PID autotune이라고 하고...
옥토프린터 연결하신후... gcode를 통해 제어해서 컨트롤해서 PID제어 상수값을 구해서 저장하는게 가능합니다...
튜닝 이라는 말 들어보신적 있지요?
3D프린터의 PID AUTOTUNE에 대해서는 유튜브에 강좌가 엄청 많으니.. 참고하심 되겠습니다...(마를린 펌웨어 기준..)
https://www.youtube.com/results?search_query=marlin+autotune
일반적으로 정상적인 기기 상태라면.. 베드와 노즐 온도 유지가 잘 이뤄집니다.. 어쩌다 한번씩 +/-1도 정도 오르락 내리락 할 수 있습니다... 이정도는 무척 양호하다고 보심되고..
쉬지않고 많이? 오르락 내리락 한다면 오토튠을 한번 해주심 좋을것 같습니다...
물론 외부환경이 좋지 못하면 (온도센서나 히터 밀착여부, 방열환경등등등.....) 원하는 제어값을 얻기 힘들 수 있습니다.
오토튠을 하고나면 제어가 더 안좋아 질 수도.....ㅎㄷㄷㄷ
'3D' 카테고리의 다른 글
3d프린터로 도장만들기 - OpenScad 이용 (0) | 2023.06.06 |
---|---|
2021 황금 소상, 헬보이, 소녀상 (0) | 2021.01.01 |
3d 프린터 필라멘트 초간단 사용기 (0) | 2020.08.21 |
문씨티 무드등 (0) | 2020.07.16 |
OpenSCAD - 1장. 일반_데이타형_변수 (0) | 2020.07.13 |