Laboratorio: 1-Wire

Tre sensori 1-wire ed Arduino Nano

Il circuito della figura di apertura mostra un Arduino Nano collegato a tre sensori di temperatura appartenenti alla famiglia DS18B20. Sono visibili:

La piedinatura della scheda di breakout è mostrata di seguito e, stranamente, non segue quella del circuito integrato. La resistenza RPU è presente sul circuito stampato e quindi non è necessario aggiungerla esternamente

Per il test è stata utilizzata la libreria OneWire, ed il programma di esempio DS18x20_Temperature. L'output è mostrato di seguito nel caso in cui la microLAN è formata da tre sensori.

Sono disponibili anche altre librerie (per esempio DallasTemperaure) che in genere si appoggiano a OneWire.

Attività 1

Collegare ad Arduino un sensore 1-wire, visualizzare i segnali trasmessi ed effettuare la decodifica. In particolare verificare la coerenza tra quanto mostrato sull'oscilloscopio, sul monitor seriale e quanto descritto nei fogli tecnici.

Il segnale seguente mostra, per esempio, un frame in cui il master interroga uno dei dispositivi per leggere i dati in esso contenuto.

Possiamo osservare:

Altri tipi di frame, non mostrati, sono (nota 1):

Per chi non dispone di un oscilloscopio, a fondo pagina sono presenti alcuni esempi.

Attività 2 - Avanzato

Utilizzare gli stessi sensori con Rapsberry Pi

Segnali esemplificativi

Il file 1-wire.zip contiene alcuni segnali da utilizzare con la versione demo di Picoscope. Il codice in esecuzione è DS18x20_Temperature.

  1. L'intera durata di loop() con tre sensori collegati, come nell'immagine di apertura. Per ciascun sensore sono mostrati una serie di frame (nota 2):
    • Frame di ricerca dell'indirizzo di uno dei dispositivi
    • Frame con il comando di avvio della misura di temperatura (nota 3)
    • Frame con cui il master legge la temperatura ed altri dati, dopo circa un secondo dal passo precedente
  2. Lettura dello scratchpad di uno dei sensori (nota 4)
  3. Avvio della conversione della temperatura per uno dei sensori  (nota 4)
  4. Ricerca degli indirizzi (a cui segue un altro frame, solo parzialmente mostrato (nota 4)
  5. Il dettaglio dell'inizio di uno dei frame (nota 4)

Il file di testo mostra l'output del programma.

Note

  1. L'elenco dei codici e dei comandi di questo integrato è disponibile sui fogli tecnici
  2. Il tempo di campionamento è troppo piccolo per poter decodificare il segnale seriale
  3. Nel primo evento ricerca ed avvio della misura sono uno immediatamente di seguito all'altro, come mostrato nel file di esempio 1-wire-4-psdata
  4. Per la corretta decodifica occorre impostare la voce all'interno dello strumento di decodifica seriale Sample Time From Falling Edge a 20 µs
  5. L'uso del Parasite Power funziona male senza hardware dedicato, soprattutto usando una alimentazione a 3,3 V: con alcuni componenti (DS18B20) la libreria proposta non funziona per nulla, con altri (DS18B20P) richiede l'uso di una RPU di 1 kΩ), con altri (DS18S20) permette il solo riconoscimento del dispositivo, ma non la lettura della temperatura. DI fatto è sconsigliata...


Pagina creata nell'aprile 2022
Ultima modifica:18 marzo 2023


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima