Régulation de température

Bonjour/bonsoir. Avant de commencer, j'aimerais préciser que je suis un débutant : en classe préparatoire, je dois monter un projet et alors que sa réalisation me semblait triviale sur le papier, elle se révèle être un enfer et je suis complètement perdu. Sachez donc que pour que je comprenne vos propos, il faut soit me tenir par la main, soit m'expliquer les choses comme vous les expliqueriez à un enfant :sweat_smile: . Mon projet est simple, je souhaite réaliser l'asservissement en température dans une boite à l'aide d'une commande tout ou rien. J'ai donc placé une sonde DS18B20 dans une boite qui me donne la température dans celle-ci, et cette même boite est chauffée par une résistante chauffante. Je vous fournis une photo pour illustrer le tout. Mon but est donc de couper le courant lorsque la température un certain seuil, comment faire ?

Bonsoir,

La description est encore un peu vague... il faudrait que tu nous indiques le câblage réalisé et le code utilisé, même s'il n'est pas fonctionnel.

Ah bien sur, pour l'instant seul le thermomètre a été fait, voici le câblage et le code :

#include <OneWire.h>
#include <DallasTemperature.h>

// Data wire is conntec to the Arduino digital pin 4
#define ONE_WIRE_BUS 7

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);

void setup(void) {
  // Start serial communication for debugging purposes
  Serial.begin(9600);
  // Start up the library
  sensors.begin();
}

void loop(void) {
  // Call sensors.requestTemperatures() to issue a global temperature and Requests to all devices on the bus
  sensors.requestTemperatures();


  Serial.print(" ");
  // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
  Serial.print(sensors.getTempCByIndex(0));
  delay(10000);
}

imageTexte préformaté

Et le peu qui est fait est fonctionnel.

Peux-tu éditer ton message et mettre le code en forme en utilisant le bouton <code> pour que ce soit lisible ?

Comment comptes-tu commander la résistance chauffante ? Relais je suppose ?

Honnêtement je sais pas trop, j'ai compris qu'il y a plusieurs solutions possibles mais je sais pas laquelle je peux mettre en oeuvre facilement

Ben c’est un test

Si temperature > seuil alors couper le courant

Bon la question c’est quand rallumer aussi

Il te faut deux seuils : Tmax et Min
si T<=Tmin, alors chauffer
si T>=Tmax, alors couper la chauffe.
Tu peux choisir Tmax-Tmin = 1°C.

Pour chauffer, tu utilises un relais, qui est commandé par une sortie Tout ou Rien de l'Arduino. Ce relais alimente (ou pas) la résistance de chauffe.
Par ailleurs, explique un peu ton niveau actuel en programmation C++, pour qu'on t'aide à ton niveau.

Il manque des informations :
Essentielles :
1 quelle est la puissance de la résistance, valeur ohmique, courant max.
2 la valeur de la température de consigne.
3 quelle amplitude de température min, max, est acceptable.
Ces informations seront nécessaires pour choisir le matériel.

Utiles en cours de programmation :
Il y a de l’inertie. A l’arret du chauffage la température continuera à augmenter pendant "un certain" temps. A la reprise du chauffage il y aura l’effet inverse.
Cette inertie dépendra des caractéristiques de la "boite à chauffer”.
Seules des mesures permettront d’obtenir ces renseignements, il serait préférable, a mon humble avis, de le garder en tête pendant l’écriture du code.

Je ne sais pas comment l'expliquer mais, ma carte n'est pas reliée à l'alimentation de la résistance.

Mes maigres connaissances en programmation s'arrêtent au peu de python qu'on nous enseigne en prépa :smiling_face_with_tear:

J'ai trouvé un transistor 2n3055, et j'ai alors pensé à une solution mais je ne sais pas si elle est réalisable. Est-il possible qu'en fonction de la température détectée par le capteur, la carte envoie d'une manière ou d'une autre une certaine tension dans le transistor, qui servirait de switch on/off dans le circuit d'alimentation de la résistance ?

C'est possible ou pas.
Tu n'as pas donné les caractéristiques de la résistance que tu utilises.
Valeur de la résistance, tension utilisée, puissance que tu veux dissiper dans la boite, ...

Question que je me pose:
Est-ce que tu dois maintenir une température très précise ou c'est plutôt à la louche.
Est-ce que tu dois 25,4°c exactement ou entre 20 et 27?
Dan le premier cas, un tout ou rien avec un relais ça irait. Dans le second, il faudra être capable de faire varier la résistance, voire intégrer un PID, on n'est pas dut out dans le même délire.

Pour l'instant, malheureusement tu n'en n'es pas à la programmation à proprement dite.
Tu n'a pas relié ta résistance à ton Arduino et comme tu n'a pas donnée les informations demandées par @68tjs et @fdufnews.
On ne peut même pas te guider sur comment le faire :frowning:

Ok je vais essayer de faire un poste avec tout ce qu'il vous faut :

Tout d'abord pour répondre à 68tjs :
La température de consigne serait de l'ordre de 25 degrés à peu près, pas besoin d'être très précis sur l'amplitude, je ne cherche pas à être précis au dixième, mais plutôt + ou - 0,5°C

Réponse à fdufnews :
Pour ce qui est de l'alimentation une fois branchée à la résistance peut fournir un courant de 0 à 3.1 ampères pour une tension max de 3.2 volts

Réponse à biggil :
J'aimerais chauffer à 25°C, la résistance ce coupe alors, et se rallume à 23°C (par exemple) je répète que je ne cherche pas à être précis mais à faire quelque chose de fonctionnel pour l'instant

Il suffit de lire la température sur une sonde. Avec deux conditions tu ouvres ou fermes un relai qui commande ta résistance.

Regarde alors la manière de commander un relais (ça sera très bien pour ce que tu as) depuis un arduino.
Regarde à côté de cela comment lire une température.
Puis essaye d'associer les deux.

Deux fonctions différentes qu'il faut comprendre séparément avant de les faire fonctionner ensemble.

Oui, je pense qu'en prépa les profs demandent plus de rigueur.

Sur la photo du premier message, il semble que tu utilises une Uno. Exact ?

Ça impose une programmation en C.
Mais si tu peux changer de carte, tu pourrais opter pour un ESP8266 ou un ESP32 qui te permettent de programmer en python.