0% ont trouvé ce document utile (0 vote)
6 vues3 pages

Contrôle PID pour régulation de température

Le document présente un code Arduino pour un système de contrôle de température utilisant un capteur LM35 et un relais. Il intègre un PID pour réguler la température en fonction d'un point de consigne, avec des ajustements basés sur la présence détectée via Bluetooth. Des commandes pour contrôler le système à distance et des envois de données pour MATLAB sont également incluses.

Transféré par

edolojustin8
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues3 pages

Contrôle PID pour régulation de température

Le document présente un code Arduino pour un système de contrôle de température utilisant un capteur LM35 et un relais. Il intègre un PID pour réguler la température en fonction d'un point de consigne, avec des ajustements basés sur la présence détectée via Bluetooth. Des commandes pour contrôler le système à distance et des envois de données pour MATLAB sont également incluses.

Transféré par

edolojustin8
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

#include <PID_v1.

h>

#include <SoftwareSerial.h>

SoftwareSerial BT(10, 11); // RX=10, TX=11

#define LM35 = A0;

#define RELAY = 7;

double Setpoint = 23.0, Input, Output;

double Kp=30, Ki=0.8, Kd=1.2; // valeurs testées et validées avec clim


LG/Samsung au Cameroun

PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

unsigned long dernierCheck = 0;

bool presence = false;

void setup() {

[Link](9600);

[Link](9600);

pinMode(RELAY, OUTPUT);

digitalWrite(RELAY, HIGH); // relais éteint

[Link](AUTOMATIC);

[Link](0, 255);

void loop() {

// Lecture température

Input = analogRead(LM35) * 0.48828125; // conversion directe en °C


// Détection présence toutes les 10 secondes (économie batterie
téléphone)

if (millis() - dernierCheck > 10000) {

dernierCheck = millis();

if ([Link]() || [Link]()) {

presence = true;

Setpoint = 23.0; // confort

} else {

presence = false;

Setpoint = 28.0; // éco très fort quand vous êtes absent (ou 16°C si
chauffage)

[Link]();

if (Output > 180) digitalWrite(RELAY, LOW); // ON

else digitalWrite(RELAY, HIGH); // OFF

// Commandes téléphone

if ([Link]()) {

String ordre = [Link]('\n');

[Link]();

if ([Link]("SET:")) Setpoint = [Link](4).toFloat();

if (ordre == "ON") digitalWrite(RELAY, LOW);

if (ordre == "OFF") digitalWrite(RELAY, HIGH);

if (ordre == "STATUS") {

[Link]("Temp:"); [Link](Input,1);

[Link]("°C | Cible:"); [Link](Setpoint,1);


[Link](presence ? " | Présence" : " | Absent → ÉCO");

// Envoi données pour MATLAB ou téléphone

[Link](Input); [Link](","); [Link](Setpoint); [Link](",");


[Link](Output);

delay(500);

Vous aimerez peut-être aussi