Cerca codice

Utilizzo di una termocoppia di tipo K con MAX6675, relè e display

Utilizzo di una termocoppia di tipo K con MAX6675, relè e display

Questo progetto dimostra come interfacciare una termocoppia di tipo K MAX6675 con un Arduino, integrando un relè per il controllo e un display per le letture della temperatura. Questa configurazione è preziosa per varie applicazioni in cui è necessario un monitoraggio preciso della temperatura e risposte automatizzate. Ecco alcune idee di progetto:

MAX6675 Thermocoupler module
  • Protezione dal surriscaldamento per dispositivi elettronici sensibili
  • Incubatore a temperatura controllata per esperimenti biologici
  • Sistema automatizzato per la preparazione di caffè o birra
  • Monitoraggio e controllo dei processi industriali
  • Monitoraggio ambientale in una serra o in un altro ambiente controllato

Hardware/Componenti

Per costruire questo progetto, avrai bisogno dei seguenti componenti:

  • Arduino Uno (o scheda compatibile)
  • Modulo termocoppia di tipo K MAX6675 (nel video a 00:58)
  • Modulo relè
  • Modulo display LED a 4 cifre TM1637
  • Cavi di collegamento
  • Fili di collegamento

Guida al cablaggio

Il cablaggio è spiegato nel video (nel video a 05:36). Le connessioni specifiche dipendono dal fatto che si utilizzi un chip a montaggio superficiale o un modulo PCB. Consulta il video per uno schema di cablaggio dettagliato.

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

Spiegazione del codice

Il codice Arduino utilizza la libreria MAX6675 per leggere i valori di temperatura dal termocoppia. Le parti chiave configurabili del codice sono:

  • Definizioni dei pin della termocoppia:thermoDO,thermoCS, ethermoCLK(nel video a [03:53]). Questi pin devono essere regolati in base al tuo schema di cablaggio.
  • Pin di controllo del relè: il pin 10 viene usato per controllare il relè (nel video a [05:36]). Modificalo se necessario.
  • Configurazione del display (se utilizzato): Il codice include sezioni per configurare il display TM1637. Regolare i pin CLK e DIO se necessario (nel video a [03:53]).

Il codice include funzioni per leggere la temperatura in Celsius e Fahrenheit. Una parte cruciale del codice è l'istruzione condizionale che verifica se la temperatura supera una soglia (80.0°C in questo esempio). Se ciò avviene, il relè viene attivato (il pin 10 va 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
}

Progetto/Dimostrazione dal vivo

Il video mostra il progetto in azione (nel video a 06:59). Il sensore rileva con precisione la temperatura ambiente e il valore aumenta quando viene riscaldato. Viene anche mostrata la funzionalità del relè.

Capitoli

  • [00:00] Introduzione
  • [00:39] Panoramica del sensore
  • [01:40] Connessioni dei pin
  • [02:22] Installazione della libreria
  • [03:53] Spiegazione del codice (Configurazione)
  • [04:06] Spiegazione del codice (ciclo)
  • [05:36] Cablaggio
  • [06:59] Dimostrazione dal vivo

Immagini

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)
Lingua: 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)
Lingua: C++
/*
 * Questo è il codice Arduino per il termocoppia K-Type MAX6675 con relè e display. 
 * Il pin di uscita 10 è collegato al relè. 
 * Quando la temperatura raggiunge il valore desiderato, il pin 10 accende il relè.
 * 
 * Questo codice è stato spiegato nel nostro video su https://youtu.be/cD5oOu4N_AE
 * 
 * Scritto da Ahmad Nejrabi per Robojax Video 
 * Data: 9 dicembre 2017, ad Ajax, Ontario, Canada 
 * Autorizzazione concessa per condividere questo codice a condizione che questa nota venga mantenuta con il codice. 
 * Dichiarazione di non responsabilità: questo codice è "COSÌ COM'È" e solo per scopi educativi.
 * 
 * /
 * 
 * // Questo esempio è di pubblico dominio. Divertiti! 
 * // 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);
 // Usa i pin di Arduino
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
    pinMode(10, OUTPUT); // imposta il pin 10 come uscita

  Serial.println("Robojax: MAX6675 test");
 // aspetta che il chip MAX si stabilizzi
  delay(500);
}

void loop() {
 // test di lettura di base, stampa semplicemente la temperatura attuale


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

 // Se la temperatura supera gli 80,0 °C, accendi il relè.
   if(thermocouple.readCelsius() > 80.00){
    digitalWrite(10, LOW); // imposta il pin 10 a LOW
   }else{
    digitalWrite(10, HIGH); // imposta il pin 10 su ALTO
   }


   delay(1000);
}
26-Arduino code for a MAX6675 K-type thermocouple with relay and display
Lingua: C++
/*
 * Questo è il codice Arduino per il termocoppia K-Type MAX6675 con relè e display. Il pin di uscita 10 è collegato al relè. Quando la temperatura raggiunge il valore desiderato, il pin 10 accende il relè. La temperatura è anche visualizzata sul display. Devi includere la libreria TM1637 per far funzionare il display. Puoi scaricare il TM1637 da http://robojax.com/learn/library. Questo codice è stato spiegato nel nostro video su https://youtu.be/cD5oOu4N_AE.
 * 
 * Scritto da Ahmad Nejrabi per Robojax Video. Data: 9 dicembre 2017, ad Ajax, Ontario, Canada. Permesso concesso per condividere questo codice a condizione che questa nota venga mantenuta con il codice. Dichiarazione di non responsabilità: Questo codice è "COSÌ COM'È" e solo per scopi educativi. 
 * 
 * /
 * 
 * // Questo esempio è di pubblico dominio. Divertiti! 
 * // www.ladyada.net/learn/sensors/thermocouple
 */
#include "max6675.h"
#include <Arduino.h>
#include <TM1637Display.h>

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

 // Codice per la visualizzazione
#define CLK 2
#define DIO 3
#define TEST_DELAY   2000
TM1637Display display(CLK, DIO);
 // Codice per la visualizzazione della fine

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

void setup() {
  Serial.begin(9600);
 // Usa i pin di Arduino
  pinMode(vccPin, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin, OUTPUT); digitalWrite(gndPin, LOW);
  pinMode(10, OUTPUT); // imposta il pin 10 come uscita

  Serial.println("Robojax: MAX6675 test");
 // attendere che il chip MAX si stabilizzi
  delay(500);
}

void loop() {
 // Test di lettura di base, stampa semplicemente la temperatura attuale.

 // Codice per la visualizzazione
  display.setBrightness(0x0f);
 // Tutti i segmenti attivi
  uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
  display.setSegments(data);
  delay(1);
  int temp = (int) thermocouple.readCelsius();
  display.showNumberDec(temp, true, 3, 0);
 // Codice per la visualizzazione della fine
   Serial.print("C = ");
   Serial.println(thermocouple.readCelsius());
   Serial.print("F = ");
   Serial.println(thermocouple.readFahrenheit());

 // Se la temperatura supera gli 80,0 °C, accendere il relè.
   if(thermocouple.readCelsius() > 80.00){
    digitalWrite(10, LOW); // imposta il pin 10 su LOW
   }else{
    digitalWrite(10, HIGH); // imposta pin 10 su ALTO
   }


   delay(1000);
}
27-Arduino code for two MAX6675 K-type thermocouples with relay (no display)
Lingua: C++
/*
 * Questo è il codice Arduino per il termocoppia K-Type MAX6675 con relè e display. Il pin di output 10 è collegato al relè. Quando la temperatura raggiunge il valore desiderato, il pin 10 attiva il relè.
 * 
 * Questo codice è stato spiegato nel nostro video su https://youtu.be/cD5oOu4N_AE
 * 
 * Scritto da Ahmad Shamshiri per Robojax Video. Data: 02 Giugno 2018, ad Ajax, Ontario, Canada. Permesso concesso per condividere questo codice a condizione che questa nota venga mantenuta con il codice. Dichiarazione di non responsabilità: Questo codice è "COSÌ COM'È" e solo per scopi educativi. 
 * 
 * /
 * 
 * // Questo esempio è di pubblico dominio. Buon divertimento! 
 * // 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); // primo termocoppia
MAX6675 thermocouple2(thermoCLK2, thermoCS2, thermoDO2); // 2° termocoppia
int vccPin1 = 3;
int gndPin1 = 2;
int relayPin1 =10;

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

void setup() {
  Serial.begin(9600);
 // usa i pin Arduino
  pinMode(vccPin1, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin1, OUTPUT); digitalWrite(gndPin, LOW);
    pinMode(relayPin1, OUTPUT); // imposta il pin 10 come uscita per il termocoppia1

  pinMode(vccPin2, OUTPUT); digitalWrite(vccPin, HIGH);
  pinMode(gndPin2, OUTPUT); digitalWrite(gndPin, LOW);
    pinMode(relayPin2, OUTPUT); // imposta il pin 13 come uscita per il termocoppia2

  Serial.println("Robojax: MAX6675 test");
 // aspetta che il chip MAX si stabilizzi
  delay(500);
}

void loop() {
 // test di lettura di base, stampa semplicemente la temperatura attuale

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

 // se la temperatura supera gli 80,0 °C, accendi il relè
   if(thermocouple1.readCelsius() > 80.00){
    digitalWrite(relayPin1, LOW); // imposta pin relayPin1 BASSO
   }else{
    digitalWrite(relayPin1, HIGH); // imposta pin relayPin1 ALTO
   }
 // thermocoppia1 fine

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

 // se la temperatura supera gli 80,0 °C, accendi il relè
   if(thermocouple2.readCelsius() > 80.00){
    digitalWrite(relayPin2, LOW); // imposta pin relayPin2 a LOW
   }else{
    digitalWrite(relayPin2, HIGH); // imposta il pin relayPin2 ALTO
   }
 // termocoppia2 end

   delay(1000);
}

File📁

Nessun file disponibile.