Il modulo KY-001 Temperature sensor module, fa parte della serie “37 In 1 Sensor Module Board Set Kit For Arduino” e consente di misurare la temperatura ambiente utilizzando il bus seriale digitale.
Il modulo è costituito da un sensore digitale prodotto dalla Dallas Semiconductors- Maxim con il nome DS18B20, un LED ed un resistore. Il sensore è compatibile con le piattaforme di elettronica popolari come Arduino e Raspberry Pi.
Indice
Caratteristiche del sensore DS18B20
L’integrato è una sonda digitale di temperatura prodotta dalla Dallas Semiconductors- Maxim con il nome DS18B20.
Si tratta di una sonda in grado di rilevare una temperatura compresa nel campo -55°C÷125°C con un’accuratezza di ±0.5°C nel campo -10°C÷85°C. Con un errore che si allarga agli estremi del campo di misura arrivando a ±2°C nel campo -55°C÷125°C.
Modalità di lettura
Il campionamento della temperatura è effettuato su 12 bit in virgola fissa con 4 cifre decimali secondo il diagramma seguente
I bit più significativi, dal 11 al 15, sono utilizzati come bit di segno e la parola negativa è in complemento a 2.
La sonda DS18B20 utilizza, per dialogare con un microcontrollore master, un protocollo detto one wired, questo protocollo di comunicazione è basato su un filo di dati che funge anche da alimentazione compresa tra 3V e 5V.
l dispositivo può essere alimentato anche in parasite supply, In questa modalità di funzionamento la sonda sfrutta la stessa linea di trasmissione per ricavare l’alimentazione necessaria.
in pratica l’alimentazione viaggia sullo stesso filo dei dati, è un protocollo master-slave con un master e 2^64 slave teorici massimi, ogni slave è indirizzato tramite un codice seriale univoco che ne identifica la famiglia e il numero di serie.
il protocollo di comunicazione è a logica negata, ovvero azzerando la tensione sul bus si invia un bit=1.
Lo schema tipico di alimentazione è il seguente
Come si può vedere dallo schema elettrico è prevista la possibilità di collegare più dispositivi che utilizzano il protocollo one wired per dialogare sulla stessa linea.
Questo è reso possibile dalla presenza di un codice univoco di 64bit contenuto nella ROM di ciascun dispositivo e di un algoritmo ad eliminazione che permette al master di identificare ognuno di essi e successivamente indirizzarli individualmente.
Dove trovare il sensore DS18B20
Il solo sensore DS18B20 può essere acquistato presso il sito FUTURA ELETTRONICA, il codice prodotto è 1310-DS18B20
Oppure sul sito TechMaker, il codice prodotto è SE482303, ricordate di inserire il codice “ADRIROBOT” per ottenere uno sconto del 3%.
Il modulo KY-001 Temperature sensor module
Il modulo KY-001 Temperature sensor module, misura 18,5 x 15mm
Altre caratteristiche:
- Tensione di funzionamento: 3.0V a 5.5V
- Gamma di misurazione della temperatura -55 ° C a 125 °C]
- Precisione di misura ± 0,5 ° C
- Led di segnalazione lettura dato
Circuito elettrico e PCB del modulo
Sotto è riportato lo schema elettrico del modulo realizzato con EasyEDA
Alcune foto del modulo
Colleghiamo il modulo ad Arduino
Vediamo come collegare il modulo alla scheda Arduino
Materiale necessario
Schema dei collegamenti
Pin Arduino | Pin Modulo KY-001 |
---|---|
2 | S |
+5V | Pin centrale |
GND | - |
Programma di test del sensore
Il seguente sketch di Arduino utilizza due librerie, la libreria OneWire per la comunicazione seriale con il modulo KY-001, e la libreria DallasTemperature.
Quest’ultima potrà essere installata usando l’apposita funzione dell’IDE ricercando “DallasTemperature“, per vedere come fare leggete l’articolo Arduino – Tutorial, come installare una libreria
In uscita si potrà leggere la temperatura letta dal dispositivo tramite il monitor seriale.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <OneWire.h>; #include <DallasTemperature.h> // Pin a cui è collegato il sensore #define ONE_WIRE_BUS 2 // Imposta il sensore OneWire oneWire(ONE_WIRE_BUS); // Pass our oneWire reference to Dallas Temperature. DallasTemperature sensors(&oneWire); void setup(void) { // start serial port Serial.begin(9600); Serial.println("Dallas Temperature IC Control Library Demo"); // Start up the library sensors.begin(); // IC Default 9 bit. } void loop(void) { Serial.print("Richiesta lettura..."); sensors.requestTemperatures(); // Send the command to get temperatures Serial.println("Fatto"); Serial.print("Il valore di temperatura e': "); Serial.print(sensors.getTempCByIndex(0)); } |
Altri utilizzi del modulo
Lettura della temperatura del sensore che viene visualizzato su un display LCD, vedere articolo Termometro con display Nokia 5110 – 48 x 84 pixel
Un’altra applicazione del sensore è visibile nell’articolo KY-001 DS18B20 – Wemos D1 mini multi test shield
Mentre nell’articolo Applicazione IOT con WeMos D1 Mini e App Blynk, sarà possibile vedere come leggere la temperatura in remoto tramite l’APP Blink