Sommario:

Sensore di temperatura fai-da-te con un diodo: 3 passaggi
Sensore di temperatura fai-da-te con un diodo: 3 passaggi

Video: Sensore di temperatura fai-da-te con un diodo: 3 passaggi

Video: Sensore di temperatura fai-da-te con un diodo: 3 passaggi
Video: Sensore di temperatura LM35 (Sensori con Arduino) 2024, Novembre
Anonim
Sensore di temperatura fai-da-te con un diodo
Sensore di temperatura fai-da-te con un diodo
Sensore di temperatura fai-da-te con un diodo
Sensore di temperatura fai-da-te con un diodo

Quindi, poiché uno dei fatti sulle giunzioni PN è che la loro caduta di tensione diretta cambia in base alla corrente di passaggio e anche alla temperatura della giunzione, useremo questo per creare un semplice sensore di temperatura economico.

Questa configurazione è comunemente usata in molti circuiti integrati per misurare la sua temperatura interna e molti sensori di temperatura come il famoso LM35 che si basa su questa proprietà.

Semplicemente la caduta di tensione diretta di un diodo (che è una singola giunzione PN) cambia al variare della quantità di corrente che lo attraversa, inoltre al variare della temperatura del diodo cambierà la caduta di tensione (all'aumentare della temperatura, diminuisce di un valore di (da 1,0 milliVolt a 2,0 milliVolt per i diodi al silicio e 2,5 milliVolt per i diodi al germanio).

Quindi, facendo passare una corrente costante attraverso il diodo, la caduta di tensione diretta dovrebbe ora variare solo in base alla temperatura del diodo. Ora dobbiamo solo misurare la tensione diretta del diodo, applicare alcune semplici equazioni e voilà ecco il tuo sensore di temperatura !!!

Forniture

1 - Diodo 1n4007 #12 - Resistenza 1 Kohm #13 - Scheda Arduino

Passaggio 1: Schema del circuito

Schema elettrico
Schema elettrico

Come puoi vedere nello schema è molto semplice. collegando il diodo in serie con un resistore di limitazione di corrente e una sorgente di tensione stabile possiamo ottenere una sorgente di corrente costante grezza, quindi la tensione misurata attraverso il diodo varierà solo a causa del cambiamento di temperatura. Assicurati che il valore del resistore non sia troppo basso che molta corrente passa attraverso il diodo e fa un notevole autoriscaldamento nel diodo, inoltre non è un resistore molto alto quindi la corrente che passa non è sufficiente per mantenere una relazione lineare tra la tensione diretta e la temperatura.

un resistore da 1 kilo Ohm con un'alimentazione di 5 V dovrebbe produrre una corrente di diodo di 4 milliAmpere che è un valore sufficiente per questo scopo. I(diodo) = VCC / (serie R + Rdiodo)

Passaggio 2: codifica

Dobbiamo tenere presente che ci sono alcuni valori da modificare nel codice per ottenere risultati migliori come:

1 - VCC_Voltage: poiché il valore di analogRead() dipende dal VCC del chip ATmega, dobbiamo aggiungerlo all'equazione dopo averlo misurato sulla scheda arduino.

2 - V_OLD_0_C: la caduta di tensione diretta del diodo utilizzato a corrente di 4 mA e temperatura di 0 Celsius

3 - Temperature_Coefficient: il gradiente di temperatura del tuo diodo (meglio ricavarlo dal datasheet) oppure puoi misurarlo usando questa equazione:Vnew - Vold = K (Tnew - Told)

dove:

Vnew = caduta di tensione appena misurata dopo il riscaldamento del diodo

Vold = caduta di tensione misurata a una certa temperatura ambiente

Tnew = la temperatura alla quale il diodo è stato riscaldato a

Detto = la vecchia temperatura della stanza a cui Vold è stato misurato

K = Temperature_Coefficient (un valore negativo che varia tra -1,0 e -2,5 milliVolt) Infine è ora possibile caricare il codice e ottenere i risultati della temperatura.

#define Sens_Pin A0 //PA0 per scheda STM32F103C8

doppia V_OLD_0_C = 690.0; //690 mV Tensione diretta a 0 Celsius a 4 mA di corrente di prova

doppio V_NEW = 0; //Nuova tensione diretta a temperatura ambiente a 4 mA corrente di prova double Temperature = 0.0; //Temperatura ambiente calcolata double Temperature_Coefficient = -1.6; //-1.6 mV di variazione per grado Celsius (-2.5 per i diodi al germanio), meglio ottenere dal datasheet del diodo double VCC_Voltage = 5010.0; //Tensione presente al rail 5V dell'arduino in milliVolt (necessaria per una migliore precisione) (3300.0 per stm32)

void setup() {

// inserisci qui il tuo codice di configurazione, da eseguire una volta: pinMode(Sens_Pin, INPUT); Serial.begin(9600); }

ciclo vuoto() {

// inserisci qui il tuo codice principale, per eseguirlo ripetutamente: V_NEW = analogRead(Sens_Pin)*VCC_Voltage/1024.0; // dividere per 4.0 se si utilizza un ADC a 12 bit Temperature = ((V_NEW - V_OLD_0_C)/Temperature_Coefficient);

Serial.print("Temp = ");

Serial.print(Temperatura); Serial.println("C");

ritardo (500);

}

Passaggio 3: ottenere valori migliori

Ottenere valori migliori
Ottenere valori migliori
Ottenere valori migliori
Ottenere valori migliori

Penso che sia consigliabile avere un dispositivo di misurazione della temperatura affidabile accanto a te quando fai questo progetto.

puoi vedere che c'è un errore evidente nelle letture che possono arrivare a 3 o 4 gradi Celsius, quindi da dove viene questo errore?

1 - potrebbe essere necessario modificare le variabili menzionate nel passaggio precedente

2 - la risoluzione ADC dell'arduino è inferiore a quella di cui abbiamo bisogno per rilevare la piccola differenza di tensione

3 - il riferimento di tensione dell'arduino (5V) è troppo alto per questa piccola variazione di tensione attraverso il diodo

Quindi, se hai intenzione di utilizzare questa configurazione come sensore di temperatura, dovresti essere consapevole che sebbene sia economico e pratico, non è preciso ma può darti un'idea molto buona della temperatura del tuo sistema o è su un PCB o montato su motore in funzione ecc…

Questo istruibile ha lo scopo di utilizzare la minor quantità di componenti possibile, ma se vuoi ottenere i risultati più accurati da questa idea puoi apportare alcune modifiche:

1 - aggiungere alcune amplificazioni e stadi di filtraggio utilizzando amplificatori operazionali come in questo link2 - utilizzare un controller di riferimento analogico interno inferiore come le schede STM32F103C8 con tensione di riferimento analogico di 3,3 Volt (vedi punto 4)3 - utilizzare il riferimento analogico interno di 1,1 V nel arduino ma tieni presente che non puoi collegare più di 1,1 Volt a nessuno dei pin analogici di arduino.

puoi aggiungere questa riga nella funzione di configurazione:

analogReference(INTERNO);

4 - Utilizzare un microcontrollore con ADC a risoluzione più elevata come STM32F103C8 che ha una risoluzione ADC a 12 bit Quindi, in poche parole, questa configurazione basata su Arduino può fornire una buona panoramica sulla temperatura del sistema ma risultati non così accurati (circa 4,88 mV/lettura)

la configurazione STM32F103C8 ti darebbe un risultato abbastanza accurato in quanto ha un ADC a 12 bit più alto e un valore di riferimento analogico più basso di 3,3 V (circa 0,8 mV/lettura)

Bene, è così!!:D

Consigliato: