35in1 Sensor Kit - Sensori di temperatura del conduttore caldo

Il Set comprende due di questi moduli. Entrambi i moduli utilizzano lo stesso conduttore termico. Uno di questi, tuttavia, ha anche un comparatore che, in funzione della regolazione del potenziometro a una determinata temperatura, azzera L'uscita digitale. Amm uscita analogica è disponibile praticamente lo stesso segnale del semplice sensore.

Sensore Semplice

Sensore con comparatore



Curva caratteristica

L'NTC è una resistenza che riduce la resistenza al riscaldamento. Per misurare le temperature con il NTC e non solo a una determinata temperatura, è necessaria la linea di riferimento. Il diagramma mostra il valore di resistenza in kOhm (blu) e il valore basale (1024) letto con analogRead (rosso).);


La tensione di Uscita è lineare in modo discontinuo per mezzo del Divisore di tensione utilizzato.

Determinazione della curva di correzione:

Con un circuito semplice, possiamo cercare di individuare una curva di correzione. A tal fine utilizzeremo il semplice sensore a caldo e il DS18B20 come riferimento. Colleghiamo le PIN medie di entrambi i moduli con +5V sull'Arduino e i – pin di entrambi i moduli con la BND. Colleghiamo il Pin S del modulo NTC con A0 e il Pin s del modulo DS18B20 con D2. Per raggiungere la stessa temperatura per entrambi i sensori, colleghiamo questi come l'immagine che segue.



Ora carichiamo il seguente programma Sull'Arduino. E colleghiamo il Pin 8 sull'Arduino a Ground per bloccare l'edizione.

/ * Questo programma determina la curva di correzione di un NTC
* Scalette calde e testate
* Come riferimento si usa un sensore del tipo DS18B20
*/

#include < OneWire.h>
#include <temperature del DALLAST.h>

// Collegamenti
const byte ds18b20 = 2; // sensore di riferimento
const byte sensor = 0; // sensore da tarare
const byte edizione = 8; // Entrata per sopprimere l'edizione.
const byte led = 13; // messled

// istanze di riferimento sensore DS18B20
OneWire oneWire (ds18b20));
Sensori a temperatura elevata (& oneWire));
DeviceAddress CDR;

//per memorizzare i dati di correzione creiamo una classe
class Korr {
   pubblico:
     int minval; //Valore iniziale di validità
    int maxval; // Valore finale della validità
    fattore float; //Fattore di correzione
    float delta; // Offset relativo

     temperatura variabile (int val)) {
       float temp = float (val) * fattore + delta;
       return temp;
    }
};

// variabili globali
Curva di Korr [20]; // Array con correzione
byte numero = 0; // Numero di correzioni esistenti

byte misura = 1;
float = 0; // valore attuale indicativo
int sens = 0; // valore attuale del sensore

float sollalt = 0; // ultimo valore indicativo
float sens_alt = 0; // ultimo valore del sensore



void setup() {
   /avvia l'interfaccia
   Seriale.begin(115200);
   // Prepara il sensore di riferimento
   sensori.begin();
   sensori.(adr, 0);
   // Dissoluzione a 10 bit;
   sensori.setResolution (CDR, 10);
   //output per led
  pinMode(led, OUTPUT));
  pinMode(output, INPUT_PULLUP));
  misura = 1; /siamo in modalità misurazione
   // una misurazione per i valori di partenza
  Seriale.println ("inizio analisi");
  valori misurati();
   soll_alt = dovrebbe;
   sens_alt = sens;
}

// funzione di lettura dei valori misurati
misurazione void(){
   // Richiedere il valore di riferimento
   sensori.temperature di Request();
   // e leggere dal saggio
   //poiché la tensione diminuisce con L'aumentare della temperatura
   //invertiamo il valore sottraendolo dal valore massimo
  sens = 1024-analogead (sensore));
   // Leggere il valore di riferimento
  SEF = sensori.(Comitato delle regioni));
}


void loop() {
   // indicare le condizioni
   write digitale (led,misura));
   // valori
   valori misurati();
   if (misura) {
   // stiamo verificando se abbiamo raggiunto una certa differenza
   // Capo a 5 °C
   if ((soll_alt) >= 5) {
    Seriale.print("calcolo per: ");
     Seriale.print);
     Seriale.println ("°C");
     curva [numero].minval = sens_alt;
     curva [numero].maxval = sens;
     fattore float = (soll_alt)/float (sens-sens_alt);
    curva [numero].fattore = fattore;
     curva [numero].delta = valore obiettivo (sens * fattore);
     soll_alt = dovrebbe;
     sens_alt = sens;
     numero++;
   }
   if (so > 50) {
     misura = 0;
     Seriale.println ("analisi completata");
     for (byte I = 0; I< Numero; i++) {
       Seriale.print [curva [i].minval);
       Seriale.print(" - ");
       Seriale.print [curva [i].maxval);
       Seriale.print(" - ");
       Seriale.print [curva [i].fattore);
       Seriale.print(" - ");
       Seriale.println [curva [i].delta);
    }
   delay (5000);
  }
# else {
   byte I = 0;
   if (sens > curva[0].minval) {
     while [(sens > curva [i].maxval) && (i< Numero) i++;
  }
   if [digitalRead (output)=1)
   {
      / * Utile per verificare la funzione
     Seriale.print ("trovato: Min = ");
     Seriale.print [curva [i].minval);
     Seriale.print ("Max= ");
     Seriale.print [curva [i].maxval);
     Seriale.print ("fatto= ");
     Seriale.print [curva [i].fattore);
     Seriale.print ("Delta= ");
     Seriale.print [curva [i].delta);
     Seriale.print ("sensore= ");
     Seriale.println (sens));
     */

     float è = curva [i].temperatura (sens));
    Seriale.print ("valori misurati: Soll = ");
     Seriale.print);
    Seriale.print ("Ist= ");
     Seriale.print (è);
     Seriale.print ("deviazione= ");
     Seriale.println);
   }
   delay (1000));
  }
}

Dopo il decollo, il programma è in modalità Analisi, ossia ogni volta che la temperatura è aumentata di 5 °C, la pendenza e L'Offset sono calcolate e memorizzate in una tabella. Ciò avviene fino a quando la temperatura non supera i 50 °C.

Il cambiamento di temperatura è più facile da ottenere con un asciugacapelli. Tuttavia, è importante evitare che il riscaldamento avvenga troppo rapidamente, poiché i due sensori presentano una diversa inerzia.

Quando si raggiunge una temperatura di 50 °C, si visualizza il contenuto della curva di correzione sul Monitor seriale. D'ora in poi, il valore nominale, il valore effettivo e la deviazione possono essere visualizzati. Poiché L'indicatore è stato soppresso (Pin 8) per poter vedere i risultati Dell'analisi, è necessario separare il Pin 8 dalla GND.

I miei tentativi non mi hanno soddisfatto. Il cambiamento di temperatura durante l'analisi potrebbe essere stato troppo rapido.

Goditi la sperimentazione.

ProduktvorstellungenSensori

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Post di blog consigliati

  1. Installa ESP32 ora dal gestore del consiglio di amministrazione
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - Programmazione ESP tramite WLAN