Lab 5.2 Control PID
Lab 5.2: Control funcțional – PID
Scopul lucrării
Realizarea unei aplicații modulare pentru un microcontroler (MCU) care să implementeze un sistem de control PID aplicat asupra unui parametru fizic (temperatură, umiditate, turație sau poziție), utilizând senzori adecvați și actuatori controlați analogic (ex. ventilator, motor, încălzitor). Setarea valorii de referință (Set Point) se va face printr-o metodă interactivă aleasă, iar valorile de interes vor fi afișate și transmise în scop de analiză.
Obiectivele lucrării
-
Înțelegerea principiilor metodei PID (Proporțional – Integral – Derivativ).
-
Implementarea unui algoritm de control PID pentru un parametru fizic măsurabil.
-
Controlul unui actuator în regim analogic prin driver L298 sau direct prin PWM.
-
Afișarea valorii de referință și a valorii măsurate în timp real.
-
Utilizarea STDIO pentru interfața de control și debug.
-
Transmiterea datelor relevante către Arduino Serial Plotter.
Definire Problemă
Să se realizeze o aplicație în baza de MCU care implementează un sistem de control PID pentru una dintre următoarele variante:
Varianta A – Control temperatură, cu senzor digital (ex. DHT22) și un încălzitor ca actuator, acționat printr-un releu PWM sau MOSFET.
Varianta B – Control umiditate, cu senzor digital (ex. DHT22) și ventilator ca actuator, controlat prin PWM.
Varianta C – Control turație motor, cu encoder ca senzor de viteză și driver L298 pentru alimentarea motorului.
Varianta D – Control poziție rotor, cu potențiometru ca senzor și driver L298 ca actuator, pentru poziționare bidirecțională.
Varianta E – Un alt parametru pentru control la alegere (cu validare din partea profesorului).
Set Point (valoarea de referință) se va seta din una din următoarele surse, la alegere:
-
potențiometru
-
două butoane (UP/DOWN)
-
senzor encoder
-
tastatură 4x4
-
interfață serială
Valoarea de Set Point și valoarea curentă se vor afișa pe:
-
afișaj LCD (I2C sau paralel) și/sau
-
interfața serială, utilizând funcții din biblioteca STDIO (
printf()).
Pentru demonstrarea controlului în timp real, datele relevante (SetPoint, Value, Output) vor fi trimise către Arduino Serial Plotter.
Materiale și resurse
Componente hardware:
-
Microcontroler (ESP32, STM32 sau Arduino cu suport PID)
-
Senzor (în funcție de variantă: DHT22, encoder, potențiometru etc.)
-
Actuator (releu, ventilator, motor DC + driver L298)
-
LCD 2x16 / 4x20 (I2C preferabil)
-
Tastatură 4x4, potențiometru, butoane, breadboard, fire jumper
-
Sursă de alimentare adecvată (MCU și actuator)
Resurse software:
-
Visual Studio Code cu PlatformIO
-
Biblioteca PID (ex. Arduino PID Library)
-
Biblioteci pentru LCD, STDIO, senzori și actuatori
-
Arduino Serial Plotter
-
Simulator hardware (opțional: Proteus)
Recomandări
-
Se recomandă utilizarea unui IDE cu suport modular (ex. PlatformIO).
-
Reutilizați soluțiile existente din lucrările anterioare (STDIO, senzor, actuator, afișaj).
-
Structura codului trebuie să permită extinderea și reutilizarea modulelor.
-
Testați aplicația cu diverse SetPoint-uri și observați comportamentul PID.
-
Pentru debugging și demonstrare se recomandă trimiterea datelor în format grafic (Serial Plotter).
Pontaj
Cerințe obligatorii:
-
Respectarea structurii modulare a proiectului.
-
Prezentarea schițelor arhitecturale, schemelor bloc și schemelor electrice.
-
Respectarea formatului raportului conform normelor UTM.
Notare:
50% – Funcționarea corectă a sistemului de control PID (pentru varianta aleasă)
10% – Implementarea metodei de setare și ajustare a Set Point
10% – Afișarea valorilor Set Point și Value (LCD și/sau STDIO)
10% – Prezentarea schemelor electrice și arhitecturale
10% – Demonstrarea funcționării fizice a soluției
10% – Implementarea unui comportament adițional improvizat (ex. comutare mod manual/automat, protecție, log de date etc.)
NOTĂ: Pontajul maxim este posibil doar la prezentarea funcționării fizice complete a soluției și implementarea comportamentului adițional improvizat.
10% penalizare pentru fiecare săptămână întârziere față de termenul stabilit.
Întrebări de control
-
Cum funcționează metoda PID și care este rolul fiecărui termen?
-
Ce diferențe există între controlul PID și controlul ON/OFF cu histereză?
-
Cum se determină turația unui motor utilizând un encoder?
-
Cum se reglează direcția și puterea unui motor DC cu L298?
-
Ce surse pot introduce erori în sistemul de control și cum pot fi corectate?
-
Cum poate fi analizat comportamentul sistemului folosind Serial Plotter?