Raspberry Pi convertitore A/D

 

Raspberry Pi convertitore A/D

 

Raspberry PI convertitore a/d

Oggi vi presento un modulo A/D con un PCF8591 chip. É un convertitore digitale/analogico – analogico/digitale con 8-bit dataframe.

 

Questo convertitore ha anche un’interfaccia i2c che può essere direttamente collegata ai GPIO del Raspberry Pi. (motivo principale per cui l’ho comprato.)

 

Il pezzo forte di questo modulo è il suo prezzo. Su ebay l’ho pagato 6euro con spedizione inclusa. Il datasheet (del chip) si trova qua.

 

Caratteristiche generali del modulo

Sul circuito stampato ci sono oltre al IC (PCF8591) alcuni componenti (sonda di temperatura, fotoresistenza, potenziometro) che si possono utilizzare come ingressi preconfigurati. Con dei „jumper“ si può scegliere fra ingresso liberamente utilizzabile e ingresso preconfigurato. Infine ci sono due LED, uno rosso che indica lo stato dell’alimentazione del modulo (acceso/spento) e l’altro verde che indica lo stato dell’uscita AOUT.

Ingressi e uscite liberamente utilizzabili (senza jumper):

 

AIN0 Analogico / digitale
AIN1 Analogico / digitale
AIN2 Analogico / digitale
AIN3 Analogico / digitale
AOUT Analogica / digitale

Ingressi e uscite preconfigurati attraverso componenti presenti sulla scheda:

 

fotoresistenza Jumper P5
Sonda di temperatura Jumper P4
Libero (AIN2) nessuno
potenziometro Jumper P6
LED verde (AOUT) nessuno

Collegamenti convertitore / Raspberry Pi

Fondamentalmente ci sono 4 pin, 2 per l’alimentazione della scheda e 2 per il bus i2c presente sul convertitore. Il convertitore può essere alimentato sia con 3.3V che con 5V (vmax = 8V). Il Pinout del Raspberry Pi si trova qua.

 

PIN CONVERTITORE

>>

GPIO RASPBERRY PI
VCC

>>

PIN 1
GND

>>

PIN 9
SDA

>>

PIN 3
SCL

>>

PIN 5

.

Funzionamento e programmazione PCF8591

 

Inanzitutto bisogna caricare/attivare 2 moduli kernel

e installare i pacchetti con le utility

sul Raspberry. Una guida buona c’è qui.

 

Out of the box, al convertitore viene asocciato l’indirizzo 0×48 del i2c.

 

raspberry pi convertitore a/d

Una volta stabilita la connessione i2c, i singoli ingressi / uscite sono accessibili attraverso questi indirizzi.

 

Indirizzo con Jumper senza Jumper
0×40 fotoresistenza AIN0
0×41 sonda di temperatura AIN1
0×42 libero AIN2
0×43 potenziometro AIN3

 

Adesso per leggere il singolo registro, in questo caso la fotoresistenza (AIN0), si può fare cosi:

 

e per convertire il valore letto da hex a decimal

NB: 0xff serve qui solo per l’esempio e viene sostituito con il valore letto.

 

Invece per scrivere valori, attivare l’uscita, bisogna considerare il range di 8bit (0 -255 Decimal) quindi (0×00 – 0xff Hexadecimal). “Digitalmente” parlando 0×00 sarebbe “0″ (off) e 0xff sarebbe “1″ (on). Si può anche variare il valore per esempio incrementando da 0-255 oppure viceversa.

 

 

Detto (fatto) questo, purtroppo si nota da subito la scarsa precisione, soprattutto dei valori letti. Personalmente preferirei più precisione.

 

Step ultimo – Polling dei valori

Per concludere il test del convertitore, possiamo realizzare un piccolo programma che legge i valori dei registri in automatico. Come base ho utilizzato il codice scritto da Dirk Schanz (Copyright (C) 2013 Dreamshader) e pubblicato sotto licenza GNU.

Codice sorgente per inizializzare il convertitore,  aprire e chiudere la comunicazione e leggere i valori tramite i2c:

Il file completo con tutte le funzioni / handle si trova qua.

Per compilarlo sulla riga di comando:

Per eseguirlo dalla riga di comando:

 

Conclusione

Il prezzo del convertitore è quasi imbattibile, quindi per fare delle prove e scoprire le possibilità del i2c col Raspberry Pi, è la prima scelta. Per realizzare invece un’applicazione „seria“, io non lo utilizzerei.

 

Raspberry Pi convertitore A/D

 
 

L’autore del blog

Werner Schrottenbaum è un appassionato di tecnologia e innovazione. Per scoprire di più, seguilo su Twitter e Google+.

Leave a comment




Allowed HTML Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="" class="" title="" data-url=""> <span class="" title="" data-url="">


Datalogger fotovolta

  Datalogger fotovoltaico con Linux     Ho un'amico, che utilizza per fare il ...

Raspberry Pi visuali

  Raspberry Pi visualizzare grafici Sono "addicted" di andamenti grafici, secondo me ...

Raspberry Pi porta s

  Raspberry Pi porta seriale   Per chi come me, viene dall'automazione industriale, ...

Raspberry Pi misurar

  Raspberry Pi misurare temperatura     Ci sono tanti modi per misurare consumi ...

Raspberry Pi convert

  Raspberry Pi convertitore A/D   Oggi vi presento un modulo A/D con ...

Datalogger fotovolta

  Datalogger fotovoltaico con Linux     Ho un'amico, che utilizza per fare il ...

Raspberry Pi visuali

  Raspberry Pi visualizzare grafici Sono "addicted" di andamenti grafici, secondo me ...

Raspberry Pi porta s

  Raspberry Pi porta seriale   Per chi come me, viene dall'automazione industriale, ...

Raspberry Pi misurar

  Raspberry Pi misurare temperatura     Ci sono tanti modi per misurare consumi ...

Raspberry Pi convert

  Raspberry Pi convertitore A/D   Oggi vi presento un modulo A/D con ...