Code de recherche

Utilisation d'un MAX6675 pour thermocouple de type K avec relais et afficheur

Utilisation d'un MAX6675 pour thermocouple de type K avec relais et afficheur

Ce projet montre comment interfacer un MAX6675 pour thermocouple de type K avec un Arduino, en intégrant un relais pour le contrôle et un écran pour l'affichage des températures. Ce montage est inestimable pour diverses applications nécessitant une surveillance précise de la température et des réponses automatisées. Voici quelques idées de projets :

MAX6675 Thermocoupler module
  • Protection contre la surchauffe pour les appareils électroniques sensibles
  • Incubateur à température contrôlée pour des expériences biologiques
  • Système automatisé de brassage pour le café ou la bière
  • Surveillance et contrôle des procédés industriels
  • Surveillance environnementale dans une serre ou dans un autre environnement contrôlé

Matériel/Composants

Pour construire ce projet, vous aurez besoin des composants suivants :

  • Arduino Uno (ou carte compatible)
  • Module thermocouple MAX6675 de type K (dans la vidéo à 00:58)
  • Module relais
  • Module d'affichage LED 4 chiffres TM1637
  • Fils de connexion
  • Fils de connexion

Guide de câblage

Le câblage est expliqué dans la vidéo (à 05:36). Les connexions spécifiques dépendent du fait que vous utilisiez une puce à montage en surface ou un module sur circuit imprimé. Consultez la vidéo pour un schéma de câblage détaillé.

Arduino wiring for MAX6675 Thermocoupler module
Arduino wiring for MAX6675 Thermocoupler module

Explication du code

Le code Arduino utilise la bibliothèque MAX6675 pour lire les valeurs de température du thermocouple. Les principales parties configurables du code sont :

  • Définitions des broches du thermocouple :thermoDO,thermoCS, etthermoCLK(dans la vidéo à [03:53]). Ces broches doivent être ajustées en fonction de votre schéma de câblage.
  • Broche de commande du relais : la broche 10 sert à le commander (dans la vidéo à [05:36]). Modifiez-la si nécessaire.
  • Configuration de l'affichage (si utilisé) : le code comprend des sections pour configurer l'affichage TM1637. Ajustez les broches CLK et DIO si nécessaire (dans la vidéo à [03:53]).

Le code comprend des fonctions pour lire la température en Celsius et en Fahrenheit. Une partie cruciale du code est l'instruction conditionnelle qui vérifie si la température dépasse un seuil (80.0°C dans cet exemple). Si c'est le cas, le relais est activé (la broche 10 passe à LOW).


// If temperature goes above 80.0C, turn the relay ON
if(thermocouple.readCelsius() > 80.00){
  digitalWrite(10, LOW);// Set pin 10 LOW
} else {
  digitalWrite(10, HIGH);// Set pin 10 HIGH
}

Projet en direct/Démonstration

La vidéo montre le projet en action (dans la vidéo à 06:59). Le capteur mesure avec précision la température ambiante et la valeur mesurée augmente lorsqu'il est chauffé. La fonctionnalité du relais est également démontrée.

Chapitres

  • [00:00] Introduction
  • [00:39] Aperçu du capteur
  • [01:40] Connexions des broches
  • [02:22] Installation de la bibliothèque
  • [03:53] Explication du code (configuration)
  • [04:06] Explication du code (boucle)
  • [05:36] Câblage
  • [06:59] Démonstration en direct

Images

MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
K-Type Thermocoupler module with wire
K-Type Thermocoupler module with wire
K-Type thermocoupler connector
K-Type thermocoupler connector
Arduino wiring for MAX6675 Thermocoupler module
Arduino wiring for MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
MAX6675 Thermocoupler module
24-Arduino code for a MAX6675 K-type thermocouple (without relay and display)
Langue: C++
/*
 * This is the Arduino code for MAX6675 Thermocouple K-Type with Relay and Display.
 * This code has been explained in our video at https://youtu.be/cD5oOu4N_AE.

 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: December 9, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 * 
 */

 // This example is public domain. Enjoy!
// www.ladyada.net/learn/sensors/thermocouple

#include "max6675.h"


int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;


MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;
  
void setup() {
  Serial.begin(9600);
  // Use Arduino pins 
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  
  Serial.println("Robojax: MAX6675 test");
  // Wait for MAX chip to stabilize
  delay(500);
}

void loop() {
  // Basic readout test, just print the current temperature


   Serial.print("C = "); 
   Serial.println(thermocouple.readCelsius());
   Serial.print("F = ");
   Serial.println(thermocouple.readFahrenheit());

   // If temperature goes above 80.0C, turn the relay ON
   if(thermocouple.readCelsius() > 80.00){
    digitalWrite(10, LOW);// Set pin 10 LOW
   }else{
    digitalWrite(10, HIGH);// Set pin 10 HIGH
   }
    
 
   delay(1000);
}
25-Arduino code for a MAX6675 K-type thermocouple with relay (no display)
Langue: C++
/*
 * Voici le code Arduino pour le thermocouple K-Type MAX6675 avec relais et affichage. La broche de sortie 10 est connectée au relais. Lorsque la température atteint la valeur souhaitée, la broche 10 active le relais.
 * 
 * Ce code a été expliqué dans notre vidéo à l'adresse https://youtu.be/cD5oOu4N_AE
 * 
 * Écrit par Ahmad Nejrabi pour Robojax Video 
 * Date : 9 décembre 2017, à Ajax, Ontario, Canada 
 * Autorisation accordée pour partager ce code à condition que cette note soit conservée avec le code. 
 * Avertissement : ce code est "EN L'ÉTAT" et uniquement à des fins éducatives. 
 * 
 * /
 * 
 * // Cet exemple est dans le domaine public. Profitez-en ! 
 * // www.ladyada.net/learn/sensors/thermocouple
 */
#include "max6675.h"


int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;


MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;

void setup() {
  Serial.begin(9600);
 // Utilisez les broches Arduino
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
    pinMode(10, OUTPUT); // définir la broche 10 comme sortie

  Serial.println("Robojax: MAX6675 test");
 // attendre que la puce MAX se stabilise
  delay(500);
}

void loop() {
 // test de lecture basique, il suffit d'afficher la température actuelle


   Serial.print("C = ");
   Serial.println(thermocouple.readCelsius());
   Serial.print("F = ");
   Serial.println(thermocouple.readFahrenheit());

 // Si la température dépasse 80,0°C, mettez le relais en marche.
   if(thermocouple.readCelsius() > 80.00){
    digitalWrite(10, LOW); // mettre la broche 10 à l'état bas
   }else{
    digitalWrite(10, HIGH); // mettre la broche 10 à HIGH
   }


   delay(1000);
}
26-Arduino code for a MAX6675 K-type thermocouple with relay and display
Langue: C++
/*
 * Voici le code Arduino pour le thermocouple MAX6675 de type K avec relais et affichage. La broche de sortie 10 est connectée au relais. Lorsque la température atteint la valeur désirée, la broche 10 active le relais. La température est également affichée sur l'écran. Vous devez inclure la bibliothèque TM1637 pour faire fonctionner l'affichage. Vous pouvez télécharger le TM1637 sur http://robojax.com/learn/library. Ce code a été expliqué dans notre vidéo sur https://youtu.be/cD5oOu4N_AE.
 * 
 * Écrit par Ahmad Nejrabi pour Robojax Video. Date : 9 décembre 2017, à Ajax, Ontario, Canada. Autorisation accordée pour partager ce code à condition que cette note soit conservée avec le code. Avertissement : Ce code est fourni "TEL QUEL" et uniquement à des fins éducatives. 
 * 
 * /
 * 
 * // Cet exemple est dans le domaine public. Profitez-en !
 * // www.ladyada.net/learn/sensors/thermocouple
 */
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>

int thermoDO = 4;
int thermoCS = 5;
int thermoCLK = 6;

 // Code pour l'affichage
#define CLK 2
#define DIO 3
#define TEST_DELAY   2000
TM1637Display display(CLK, DIO);
 // Code pour l'affichage de fin

MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
int vccPin = 3;
int gndPin = 2;

void setup() {
  Serial.begin(9600);
 // Utilisez les broches Arduino
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  pinMode(10, OUTPUT); // mettre la broche 10 en sortie

  Serial.println("Robojax: MAX6675 test");
 // attendre que la puce MAX se stabilise
  delay(500);
}

void loop() {
 // Test de lecture de base, il suffit d'imprimer la température actuelle.

 // Code pour l'affichage
  display.setBrightness(0x0f);
 // Tous les segments activés
  uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
  display.setSegments(data);
  delay(1);
  int temp = (int) thermocouple.readCelsius();
  display.showNumberDec(temp, true, 3, 0);
 // Code pour l'affichage de fin
   Serial.print("C = ");
   Serial.println(thermocouple.readCelsius());
   Serial.print("F = ");
   Serial.println(thermocouple.readFahrenheit());

 // Si la température dépasse 80,0 °C, activez le relais.
   if(thermocouple.readCelsius() > 80.00){
    digitalWrite(10, LOW); // définir la broche 10 à LOW
   }else{
    digitalWrite(10, HIGH); // mettre la broche 10 à HIGH
   }


   delay(1000);
}
27-Arduino code for two MAX6675 K-type thermocouples with relay (no display)
Langue: C++
/*
 * Voici le code Arduino pour le thermocouple K-Type MAX6675 avec relais et affichage. La broche de sortie 10 est connectée au relais. Lorsque la température atteint la valeur souhaitée, la broche 10 active le relais.
 * 
 * Ce code a été expliqué dans notre vidéo à l'adresse https://youtu.be/cD5oOu4N_AE
 * 
 * Écrit par Ahmad Shamshiri pour Robojax Video Date : 02 juin 2018, à Ajax, Ontario, Canada. Permission accordée pour partager ce code à condition que cette note soit conservée avec le code. Avertissement : Ce code est "TEL QUEL" et destiné à des fins éducatives uniquement.
 * 
 * /
 * 
 * // Cet exemple est dans le domaine public. Profitez-en !
 * // www.ladyada.net/learn/sensors/thermocouple
 */
#include "max6675.h"


int thermoDO1 = 4;
int thermoCS1 = 5;
int thermoCLK1 = 6;

int thermoDO2 = 7;
int thermoCS2 = 8;
int thermoCLK3 = 9;


MAX6675 thermocouple1(thermoCLK1, thermoCS1, thermoDO1); // premier thermocouple
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2); // 2ème thermocouple
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;

int vccPin2 = 11;
int gndPin2 = 12;
int relayPin2 =13;

void setup() {
  Serial.begin(9600);
 // utiliser les broches Arduino
  pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
    pinMode(relayPin1, OUTPUT); // définir la broche 10 comme sortie pour le thermocouple1

  pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
    pinMode(relayPin2, OUTPUT); // Définir la broche 13 comme sortie pour le thermocouple2

  Serial.println("Robojax: MAX6675 test");
 // attendre que la puce MAX se stabilise
  delay(500);
}

void loop() {
 // test de lecture de base, il suffit d'imprimer la température actuelle

 // pour le thermocouple 1
   Serial.print("C = ");
   Serial.println(thermocouple.readCelsius());
   Serial.print("F = ");
   Serial.println(thermocouple.readFahrenheit());

 // si la température dépasse 80,0 °C, activez le relais.
   if(thermocouple1.readCelsius() > 80.00){
    digitalWrite(relayPin1, LOW); // mettre le relais pin1 à l'état bas
   }else{
    digitalWrite(relayPin1, HIGH); // définir le pin relayPin1 HAUT
   }
 // thermocouple1 fin

 // pour thermocouple 2
   Serial.print("C2 = ");
   Serial.println(thermocouple2.readCelsius());
   Serial.print("F2 = ");
   Serial.println(thermocouple2.readFahrenheit());

 // si la température dépasse 80,0 °C, activez le relais.
   if(thermocouple2.readCelsius() > 80.00){
    digitalWrite(relayPin2, LOW); // mettre le pin relaisPin2 à l'état bas
   }else{
    digitalWrite(relayPin2, HIGH); // définir pin relayPin2 HAUT
   }
 // thermocouple2 fin

   delay(1000);
}

Fichiers📁

Aucun fichier disponible.