Régulation de température avec une lampe comme source de chaleur

je dois faire une projet ; c'est une régulateur de température à base d'arduino et capteur de température LM335 ; je vais utiliser une lampe 220V commandée par un relais ; le problème c'est que quand j'effectue l'expérience du relais et la lampe avec le capteur , la température a que le capteur m'affiche dans le moniteur série augmente . par exemple de 16 °C à 22 °C . je sais que le problème vient de relais.je veux une solution s'il vous plait .merciiii

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ je l’ai déplacé vers le forum francophone pour vous pour cette fois...

Merci de prendre en compte les recommandations listées dans « Les bonnes pratiques du Forum Francophone”


Une fois lues les bonnes pratiques, postez plus d’info (code, dessin du circuit, etc).

Bonjour,

Dans les bonnes pratiques du forum on demande aussi que le titre du fil de discussion soit en rapport avec les questions. Je l'ai donc changé pour qu'il soit représentatif du problème rencontré.


En plus de ce qu'a demandé @J-M-L , ce serait bien d'avoir un petit dessin montrant la disposition des éléments pendant la mesure parce qu'il est normal que la température augment si on active une source de chaleur.

Mauvaise compréhension de la notion de masse.

Je prend les paris que le relais et le lm335 sont relies à la carte micro par le même fil de masse, qui plus est un fil Dupond constitué de 3 malheureux brins de cuivre.

Quand le relais est alimenté il se produit une chute de tension dans le fil.
Vu de l’entrée ADC du micro cette tension s’ajoute a celle du lm335.
Dis moi le lm335 ce n’est pas 10 mV par degré et 10 mV ce n’est pas beaucoup !

Commences par relier séparément les masses lm335 et relais : le point commun des différentes masses DOIT être la carte micro, c’est impératif.
et prends des fils plus gros ( des vrais fils) pour relier les masses des circuits qui consomment.

Note : je croyais qu’il etait demandé de fournir un schéma, c’est plus facile et efficace quand on sait sur quoi on doit aider.

’”Je dois faire un projet”
Formulation ultra classique des sujets scolaires.
Si c’est le cas il faut le préciser , c’est une question d’honnêteté.

voilà le circuit :
jaune : PIN 12
vert : 5V
bleu : La masse

float temp_in_celsius = 0;
float temp_in_kelvin = 0;
float temp_in_fahrenheit = 0;
const int tempPin = A0;
const int relayPin = 12;
void setup()
{
Serial.begin(9600);
pinMode(relayPin, OUTPUT);
}
void loop()
{
temp_in_kelvin = analogRead(0) * 0.004882812 * 100;
temp_in_celsius = temp_in_kelvin - 2.5 - 273.15;
temp_in_fahrenheit = ((temp_in_kelvin - 2.5) * 9 / 5) - 459.67;
Serial.print("Celsius: ");
Serial.println(temp_in_celsius);
Serial.print("Fahrenheit: ");
Serial.println(temp_in_fahrenheit);
Serial.println();
if (temp_in_celsius < 20 ) {
digitalWrite(relayPin, HIGH); // allume le relais
} else {
digitalWrite(relayPin, LOW); // éteint le relais
}
delay(1000);
}
;

Merci d’éditer votre post en utilisant le :pencil2: dans la barre d’outil juste sous votre post et rajoutez les balises de de code (c’est difficilement lisible tel quel) :

  • sélectionner la partie du texte qui correspond au code
  • appuyez sur l’icône <code/> dans la barre d’outils pour indiquer que c’est du code

(Assurez vous aussi d’indenter le code correctement dans l’IDE avant de le copier pour le coller ici. Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)

il serait bon de (re)lire les recommandations listées dans « Les bonnes pratiques du Forum Francophone”

juste par curiosité, il y a un intérêt d'avoir les températures dans les 3 unités (°C / K / °F) comme un export de donnée ensuite ou un affichage LCD ?

si non, reste dans une seule unité par défaut (le kelvin pour ce capteur).

et comme te l'a dis @68tjs, envois la masse du relay sur un autre pin gnd (prend celui coté pin digitaux)

par contre j'ai un doute sur la partie loop / temp_in_, sur internet je trouve plutôt ça :

void loop() {
    float sensorValue = analogRead(sensorPin);
    float voltageOut = (sensorValue * 5000) / 1024;
    float temperatureK = voltageOut / 10;
    float temperatureC = temperatureK - 273;
    float temperatureF = (temperatureC * 1.8) + 32;
}

mais je n'ai pas ce capteur en stock donc je ne peux pas le tester physiquement.
à confirmer

je pense que c'est pas une question de la masse. j'ai changé la masse de relais au celui de digital . ça change rien

C'est bien le dessin du bas que tu as fait, pas celui du haut ?

le relais pose le problème juste avec le capteur LM335 ! mais avec le DHT11 ça marche plus au moins

J'imagine comment tu les utilises et, si je ne me trompe pas, je dis c'est évident!

Déjà tu pourrais répondre sur le câblage de masse que tu as utilisé.

Un peu de technologie.
Le cœur d'un capteur de température est obligatoirement analogique.

La différence entre les capteurs "prêt à l'emploi" c'est que certains sont accessibles uniquement analogiquement comme une thermistance ou une jonction de semi-conducteur (cas LM35 ou LM335) et d'autres sont "habillés" avec une interface numérique qui texte en grasfacilite le transport des signaux.
C'est le cas du DHT11 qui est constitué d'une thermistance associée à un circuit d'électronique numérique.

Exemple DHT11 verso : le capteur d'humidité et la thermistance


Le recto avec l'électronique numérique :

La différence est que le LM35/335 ne donne que 10 mV par degrés.
La différence est que le DHT11 délivre des 1 et des 0 de 5 V d'amplitude.

Si pour relier un LM35/335 et un relais, tu utilises un tronçon de fil de masse en commun, le courant dans ce fil variera selon que le relai est actionné ou pas.
Il y aura une chute de tension dans le fil de quelques dizaines de mV qui se traduiront au niveau de l'ADC par des différences de température.

Conclusion :
Soit tu comprends pourquoi il faut relier les masses en étoile, soit tu ne comprends pas.
Si tu ne comprends pas, le sujet n'est pas simple tu ne seras pas le seul débutant dans ce cas , n'utilises que des capteurs numérisés, oublies les purs analogiques.

Au choix il y a le DHT22 (le dht11 n'est pas performant), le DS18B20 et d'autres tout aussi numériques.

Petit rappel :

Pas encore vu de réponse.