아두이노 pid 예제

PID 계산은 루핑 함수 내에 있어야 합니다. 함수의 첫 번째 부분은 경과 시간을 결정해야 합니다. Arduino에서 현재 시간은 밀리()에 의해 결정될 수 있으며 경과 시간은 단지: 코드 또는 Arduino 스케치에서 PID 컨트롤러를 구현하려면 비례, 정수 및 미분 상수, 입력 값 및 설정점 값등 5개의 파라미터를 알려야 합니다. 이제 여기에서 볼 수 있듯이 N의 제어 신호는 시간 의 t 초마다 별도로 계산됩니다. 이 경우 T는 샘플링 시간 또는 고정된 시간 간격입니다. 컨트롤러는 출력에 대한 새 값을 계산하는 데 걸립니다. 그리고 이산 방정식을 다시 살펴보면 이 대문자 T는 본질적으로 연속 도메인의 델타 t입니다. 이제 루프에서 t 초 간격으로 함수를 호출하기 때문입니다. 우리는 고정 상수로 이것을 처리 할 수 있으며 Arduino IDE의 코딩 부분에 도착하면 훨씬 더 명확해질 것입니다. 피드백 시스템은 출력의 일부가 입력에 “다시 공급”되는 것을 통해 시스템입니다. 예를 들어 용광로에서 화재를 제어하는 프로젝트가 있을 수 있습니다. 다음은 간단한 그림입니다: 오류의 적분은 시간에 따라 누적 된 오류임을 기억하십시오. 아두 이노를 사용하여 적분계산, 우리는 단순히 할 : 그래서 여기에 우리는 아두 이노 ID에 기록 된 PID 컨트롤러 알고리즘이 있습니다.

그래서 프로세스로 시작하자. PID 컨트롤러를 이해하려면 먼저 피드백 제어 시스템의 몇 가지 개념을 이해해야 합니다. 제어 이론의 프로세스는 적용된 입력이 출력을 생성하는 시스템입니다. 그래서 우리의 프로세스로 예를 들어 시각적 시스템을 보자. 우리의 프로세스는 엔진에 연료를 공급하는 스로틀 액추에이터로 구성됩니다. 시스템에 대한 우리의 입력은 가스 페달의 각도이며, 우리의 출력은 차량의 속도 또는 속도입니다. 각도가 클수록 차량이 더 빨리 이동합니다. 속도가 작을수록 차량이 느리게 이동합니다. 이것은 개방 루프 제어 시스템의 예입니다. 이제 이 프로세스와 관련한, 운전자가 가스 페달을 작동시키는 것은 차량이 얼마나 느리거나 빠를 지에 대한 책임이 있습니다.

그러나 가스 페달을 스스로 작동하지 않고 일정한 속도로 속도를 조절하려면 어떻게해야합니까? 우리는 브렛 뷰어드와 프론트 엔드 v03에 의해 아두 이노 PID 라이브러리를 사용하고 Processing.org 버전 3.1을 사용하여. 이제 연속 또는 아날로그 도메인에서 컨트롤러를 연구하면 무슨 일이 일어나고 있는지 쉽게 깨달을 수 있습니다. 그러나 요즘 대부분의 컨트롤러는 디지털 또는 소프트웨어의 Arduino와 같은 마이크로 컨트롤러로 구현됩니다. 그래서 우리는 아두 이노에이 PID 컨트롤러를 구현할. 여기에서 볼 수 있듯이 개별 시간 또는 디지털 도메인으로 변환해야 합니다. 이러한 모든 문제를 해결한 후에는 견고한 PID 알고리즘을 갖게 됩니다. 우연히도 Arduino PID 라이브러리의 마지막 버전에서 사용되는 코드가 있습니다.