DS1820TesterLogo

PREMESSA

Da alcuni anni sul mercato della sensoristica elettronica per la misurazione della temperatura, si è affacciato un componente elettronico commercializzato dalla Maxim Integrated (ex Dallas) siglato DS18x20 (disponibile in due versioni: DS18B20 e DS18S20). Questo piccolo circuito integrato, derivato dal progenitore DS1820 (oggi fuori produzione), è reperibile sia in package TO92 (talvolta incapsulato), che SO8 (da 150 mils) è un vero prodigio tecnologico, perché a differenza dei comuni sensori analogici come ad esempio il famoso LM35 della Texas Instruments, è caratterizzato da un controller interno che oltre ad elaborare con una discreta precisione i dati di temperatura (in un range davvero ampio che spazia dai -55°C ai +125°C con l'accuratezza minima di 0,5°C sufficiente a soddisfare un'innumerevole mole di applicazioni), è anche in grado di inviarli in formato digitale ad un qualsiasi microcontrollore, utilizzando per lo scopo, un'apposita linea seriale che impiega il protocollo di trasmissione One-Wire per lo scambio delle informazioni. DS18X20ConfigurationQuesta peculiarità rende questo chip estremamente interessante e versatile, soprattutto per il fatto che è in grado di sgravare completamente l'elettronica di controllo da impegnative conversioni analogico-digitali molto spesso soggette a disturbi elettromagnetici e rumore, nonché da complesse operazioni aritmetiche di conversione dei segnali stessi, in numeri visualizzabili poi su apposite console di human control. A differenze della versione DS18S20 che fornisce dati ad una risoluzione massima di 9 bit, la versione DS18B20 permette livelli variabili di precisione, con profondità che può spaziare da 9 a 12 bit, configurabile direttamente da firmware. Il bus utilizzato per lo scambio dei dati, inoltre, è costituito generalmente da tre fili: uno per l'alimentazione elettrica (variabile da 3 a 5,5 Vcc), uno bidirezionale per lo scambio dei dati e uno per la massa dell'alimentazione. Punto di forza del dispositivo, può essere utilizzato anche solo a due fili, sfruttando la modalità "Parasite-power". In questo caso, un cavo è destinato sia all'alimentazione elettrica che allo scambio bidirezionale dei dati, l'altro alla massa. Con questa configurazione l'adozione di un piccolo transistor ad effetto di campo, accoppiato con un resistore di pull-up collegato tra linea dati e l'alimentazione elettrica del sistema, assicurerà al dispositivo l'apporto di corrente necessario per le fasi più impegnative dell'elaborazione.

PoweringDS1820

E' importante ricordare, che anche nella configurazione "External-Supply" la trasmissione one-wire richiede sempre che la linea dei dati sia collegata alla tensione di alimentazione, utilizzando con un resistore di pull-up, il cui valore può variare da un minimo di 1kΩ (quando la linea che collega il chip alla MCU è piuttosto lunga o sulla stessa sono collegati più dispositivi) sino a un massimo di 4,7kΩ. A differenza dei sensori analogici, che per la loro lettura necessitano di essere collegati ciascuno ad un ingresso indipendente di conversione analogico digitale di una MCU, o comunque a un sistema di multiplexing che permetta l'adozione di sistemi multipli di interfacciamento, i sensori digitali DS18x20 possono essere collegati in parallelo tra loro, costituendo così, una vera e propria rete di misurazione. Questa peculiarità, sfruttabile ad esempio per controllare temperature redistribuite all'interno di una macchina, è possibile perché ogni circuito integrato della Maxim Integrated, possiede un indirizzo identificativo (CRC) a 64 bit, assegnato in modo permanente e univoco dalla casa madre al momento della costruzione. Questa interessante caratteristica permette ad una MCU di gestire sistemi costituiti da innumerevoli sensori, che possono essere interpellati semplicemente interrogandoli a un indirizzo specifico. Se aggiungiamo poi che ogni sensore può essere programmato con precise soglie o intervalli di temperatura d'allarme, sarà facilmente intuibile il motivo per cui questo componente elettronico sta riscuotendo nel mondo un indiscutibile successo. Come dicevo in precedenza, sul mercato esistono due versioni di questo circuito integrato: la versione DS18B20 e la versione DS18S20. Sostanzialmente i due chip funzionano in modo uguale, anche se il primo permette livelli di precisione più elevati rispetto al secondo ...

La differenza che esiste tra i due modelli può essere così riassunta:

  • DS18S20: risoluzione massima ottenibile 9 bit (0,5°C), con tempo di risposta fisso a 750 ms (è il diretto discendente del DS1820 e come tale ne preserva tutte le caratteristiche fondamentali);
  • DS18B20: risoluzione massima configurabile via firmware da 9 a 12 bit (da 0,5° a 0,0625°C), con tempo di risposta variabile a seconda della risoluzione prescelta: 93,75 ms (9 bit), 187,5 ms (10 bit), 375ms (11 bit) e 750ms (12 bit).

IL PROGETTO:

CloseUpNegli ultimi tempi, per motivi di lavoro, mi sono trovato molto spesso a dover progettare dispositivi di controllo della temperatura che facessero uso del pratico e fido DS18x20. I sistemi di cui necessitavo controllare la temperatura, infatti, richiedevano numerosi punti di misura e l'utilizzo di circuiti integrati analogici (come LM35) oppure di termocoppie, avrebbero richiesto accorgimenti di schermatura e di controllo troppo complessi per contenere ragionevolmente i costi di sviluppo in serie. Appunto per questo la scelta è caduta sulla famiglia DS18x20, cheInside attraverso un bus formato da soli tre fili, mi ha permesso di creare una vera e propria rete di sensori (posti tutti in parallelo tra loro) per controllare la temperatura nei più disparati punti possibili della macchina che stavo realizzando. L'identificativo univoco CRC che caratterizza questi piccoli circuiti integrati digitali, infatti, permette di conoscere la temperatura di una zona precisa, semplicemente interrogando il chip installato in locale chiamandolo al suo indirizzo. Ovviamente però, prima di installarli in rete, collocandoli nella zona di misura desiderata, è fondamentale identificarli uno a uno, compilando la lista che dovrà essere utilizzata successivamente dal programmatore firmware, per sapere chi e cosa interrogare al momento più opportuno. Sfortunatamente però, il codice CRC non è scritto sull'involucro del circuito integrato, ma è memorizzato dal costruttore nel registro di sistema di ogni singolo IC e non è possibile ottenerlo, se non interrogando elettricamente il chip stesso. Per facilitare il mio lavoro, pertanto, ho pensato di progettare e costruire un tester che potesse svolgere questa funzione identificativa, interrogando con appositi algoritmi pre-strutturati il circuito integrato applicato ai suoi ingressi, analizzandolo profondamente e visualizzandone su display alfanumerico a 4 linee tutte le caratteristiche intrinseche. E' così possibile rilevare:

  • La famiglia di appartenenza del circuito integrato: DS18S20 o DS18B20?
  • Il codice CRC memorizzato nel registro interno;
  • La temperatura misurata in quel momento dal circuito integrato (testandone il funzionamento). 

IL FUNZIONAMENTO:

Il DS1820 TESTER funziona a 5V ed è alimentabile attraverso lo spinotto USB/A di cui è dotato, attraverso un comune alimentatore da cellulare munito di tale porta. Data la semplicità che il dispositivo presenta nel suo insieme, ho affidato il controllo del progetto ad una MCU Microchip a 8 bit, siglata PIC18F2620 a cui risulta collegato un display alfanumerico 4x20 e il bus di controllo del DS18x20 in fase di testing. Ho strutturato il firmware che risiede nella MCU per gestire l'intero funzionamento del dispositivo, sia per effettuare il controllo del sistema all'accensione, sia per verificare la presenza di un DS18x20 per il testing, sia per analizzarne tutte le caratteristiche e visualizzarle successivamente a display. L'analisi del circuito integrato collegato ai pins di testing, può avvenire solo quando, terminato lo startup, si preme il pulsante "START". Questa funzione avvia le routine di analisi che legge i registri di sistema del DS18x20, ricavandone il tipo ("S" o "B"), il CRC univoco e verificando successivamente, i dispositivi di misura, elaborazione e invio della temperatura acquisita. Solo allora, il display alfanumerico del DS1820 TESTER, visualizzerà quanto rilevato:

 FrontPanel

Sulla seconda linea del display verrà visualizzato il tipo di integrato rilevato: DS18B20, DS18S20 o FAULT nel qual caso la lettura non sia stata possibile. Sulla terza riga verrà visualizzato il CRC code composto da 16 cifre. Infine, sulla quarta riga, verrà visualizzata la temperatura rilevata dal circuito integrato in quel momento. Se la lettura dei registri interni del DS18x20 risulterà completa nel suo insieme e la conversione ADC della temperatura sarà andata a buon fine, verrà visualizzato a display il messaggio "ALL OK!". Il messaggio "NOT OK! (x)" evidenzierà un problema riferito alla riga stessa di lettura. Ad esempio: "NOT OK! (1)" significa che la lettura del modello di integrato non è andata a buon fine, "NOT OK! (2)" che non è stato possibile leggere il CRC, "NOT OK! (3)" che non è stato possibile leggere la temperatura. Questo insieme di messaggi identificherebbero un IC difettoso. Una volta terminato un test, il firmware è programmato per rimanere in loop sulla lettura della temperatura. Questa funzione permette di verificare la correttezza delle misure, magari osservando la variazione termica del circuito integrato, scaldandolo con le mani o raffreddandolo con un apposito gas refrigerante spray per test. Per effettuare una nuova misura è necessario riavviare il dispositivo con il tasto "RESET", dopo aver provveduto a sostituire l'IC con uno nuovo o ad aver lasciato in posizione quello precedente per ripeterne il test.

Teolab.it di Matteo Negri - Ferrara (FE) - Italy - Copyright 2013/2021

Email: info@teolab.it -- Mobile: +39 328 1547402

Tutti i diritti riservati - All rights reserved.