SnipCard Convertitore ADC 24 bit per Arduino e Archiduino

SnipCard Convertitore ADC 24 bit per Arduino e Archiduino

La domanda che ci siamo posti è stata: è possibile costruire un convertitore ADC 24 bit per Arduino e Archiduino ad alta risoluzione che sia realmente utilizzabile fino all’ultimo bit? È possibile evitare il rumore tipico che si incontra a determinate bassissime tensioni? Riusciamo a farcene uno in casa? La risposta – se ce n’è una – la trovate in questo articolo, sempre tenendo a mente che chi scrive non è un ingegnere o un professore di elettronica e che quindi l’articolo potrebbe anche non essere esaustivo, metodico o scientificamente dimostrabile.

Introduzione

SnipCard ADC 24 bit sigma delta

SnipCard ADC 24 bit sigma delta: notare l’integrato LTC2484 accanto al jumper rosso. Piccino il DFN10, vero?

Per chi non sapesse cos’è un convertitore AD (o DA) bisognerebbe scrivere un libro a parte, ma sono sicuro che lo abbiano già fatto. Non sarà quindi il caso di questo modesto articolo. Sappiate che è un dispositivo per convertire un segnale analogico in digitale (AD) o digitale in analogico (DA). Facendo un esempiaccio: abbiamo il nostro microcontroller (un Arduino, diciamo) e dobbiamo leggere una tensione proveniente dal mondo esterno. Quello che ci serve è un ADC (analog to digital converter) in grado di trasformare – tramite un processo detto “campionamento” – questa tensione in bit in modo che il processore sia in grado di interpretarli. Allo stesso modo accade quando dobbiamo pilotare e modulare una tensione con un micro: in tal caso ciò che serve è un DAC (digital to analog converter), ovvero il dispositivo che trasforma la nostra scala di bit in una tensione.

Partiamo da un dato di fatto: Arduino non ha un convertitore AD integrato ad alta risoluzione. Le board Uno, Nano, Mini e Leonardo hanno a disposizione il solo AD interno degli ingressi analogici che è a 10 bit. Ciò significa che la lettura di una tensione su tali pin avverrà a una risoluzione di 1024 punti (1024 decimale = 1111111111 binario). Le board Due e Zero hanno gli AD a 12 bit (4096 punti). Arduino Mega 2560 ha solo AD a 10 bit.

Per chi non è pratico di questi numeri, ecco un esempio a contatto con la realtà. Prendiamo il caso in cui vogliamo leggere con un microcontroller una tensione variabile fra 0 e 5 volt. Se usiamo la classica funzione analogRead (PIN) avremo questi 5 volt suddivisi in una scala da 0 a 1024 elementi. Quindi logicamente avremo una sequenza di letture data dalla formula bit * vMax / adRes, la quale ci permette di notare che la nostra risoluzione massima è di quasi 5 mV (4,8 milliVolt).

Che cosa c’è che non va? Apparentemente nulla. Se dobbiamo monitorare il valore della tensione di una pila da 1,5 volt, ad esempio, per indicare al firmware di intervenire con un avviso di low battery, una risoluzione di 5 mV è ampiamente sufficiente. Così lo è per molte altre applicazioni dove la precisione al di sotto dei milliVolt non è indispensabile, come nel caso della lettura di una sonda di temperatura LM35Z, che ha una risoluzione di 10mV/°C.

«No, aspetta, torna indietro un attimo. Come sarebbe che la LM35Z ha una risoluzione di 10mV/°C? Quindi vuoi dirmi che avrò una lettura con un errore di +/- 0,5°C?». Sì, è così. Ed è in situazioni come queste che interviene la necessità di avere una maggiore risoluzione. Un AD a 12 bit in questo caso potrebbe già andare bene, ma cosa succede se vogliamo leggere i dati di una cella di carico che fornisce una tensione di 1 mV a fondo scala? Succede che il nostro covo di sinapsi più brillanti si mette a urlare: “Pump the resolution!”.

L’integrato LTC2484

Circuito di esempio per LTC2484

Circuito di esempio per LTC2484

Per tuffarsi nel mondo dei microVolt è consigliabile usare un convertitore AD a 24 bit, in modo da ottenere una risoluzione di appena 0,3 microVolt, ovvero 300 nanoVolt. La cara zia Linear ha prodotto – fra milioni di altri –  il chip LTC2484, un convertitore sigma delta differenziale a 24 bit di risoluzione massima. Per chi volesse farsi una cultura consiglio di leggere il datasheet e questa breve spiegazione su Wikipedia sul come funziona la modulazione a densità di impulsi sigma delta.

Per la SnipCard ADC 24 bit abbiamo scelto questo componente per le sue caratteristiche di stabilità termica e la sua buona riluttanza al rumore. Può essere gestito tramite protocollo SPI, cosa che lo rende fruibile senza bisogno di librerie strane. Ovviamente la qualità ha un prezzo: un singolo pezzo di questo integrato costa infatti oltre 6 euro. Seppure questa fascia di spesa sia ancora alla portata degli hobbisti, non lo è il package. Trattasi infatti di un minuscolo DFN a 10 pin, dalle dimensioni di soli 3 x 3 mm. Ogni suo piedino è largo 0,25 millimetri, quindi saldare questo componente è un lavoro fattibile ma richiede mano ferma, vista ottima, un po’ di esperienza e qualche malizia del mestiere.

Le incognite

Quando abbiamo optato per la realizzazione di un ADC a 24 bit ci siamo domandati se saremmo riusciti a realizzare una scheda in grado di “tenere alla larga” il rumore elettrico (banalizzando: i 50 Hz della tensione di rete) di cui sembrano andare pazzi i segnali a bassissima tensione. La Linear ha reso disponibili alcune application reference dove dà indicazioni su come va utilizzato l’integrato e sulle configurazioni software per migliorare la noise rejection ratio (NRR), ma oltre a questo – e ai loro costosi development kit – bisogna far da sé e trovare la via migliore con varie prove.

Le applicazioni

Cella di carico a trazione commercializzata da Idealtek: http://www.idealtec.it/prodotti/item/22-cella-a-trazione/50-celle-di-carico-a-trazione-e-compressione-serie-ts.html

Cella di carico a trazione commercializzata da Idealtek: http://www.idealtec.it/prodotti/item/22-cella-a-trazione/50-celle-di-carico-a-trazione-e-compressione-serie-ts.html

Sappiamo che uno dei sensori più usati e più “difficili” da leggere è rappresentato dalla cosiddetta cella di carico. Questi sensori sono presenti in tutti i sistemi di pesatura digitali, dalla bilancina che usiamo in cucina per la nostra dieta al sistema di calibrazione degli assi di una locomotiva. Su Wikipedia c’è un buon riassunto della modalità di funzionamento di una cella di carico. Ve la riporto per intero, per comodità (e per promemoria mio, ché con la teoria ho sempre qualche impiccio dovuto all’età):

Si tratta di uno strumento che rileva la deformazione meccanica di un oggetto in maniera indiretta, leggendola in millivolt o in V e trasformandola nella corretta unità di misura. Questo componente è generalmente costituito da un corpo metallico (Acciaio inox martensitico o Alluminio). Nel caso dell’acciaio, esso viene indurito con una tempra al fine di ottenere una maggiore rigidezza. Al corpo della cella di carico vengono applicati uno o più estensimetri che leggono la deformazione meccanica del materiale (di compressione o trazione) tramite la variazione di resistenza elettrica che tale deformazione causa sul loro circuito elettrico. Per amplificare l’entità del segnale la scelta più comune è quella di usare quattro estensimetri collegati tra di loro in una configurazione a ponte di Wheatstone. Esistono configurazioni più semplici che prevedono l’impiego di uno o due estensimetri. Il segnale elettrico ottenuto (differenziale) è normalmente dell’ordine di pochi millivolt e richiede un’ulteriore amplificazione con un amplificatore da strumentazione prima di essere utilizzato. Il segnale viene poi eventualmente elaborato mediante un algoritmo per calcolare la forza applicata al trasduttore. È richiesta la correzione delle non linearità, calibrazione, compensazione delle variazioni dovute alla temperatura, ecc.

Ecco il punto saliente: bisogna badare alla non linearità, alla calibrazione e alla compensazione delle variazioni dovute alla temperatura. Non solo sulla cella di carico in sé (problemi di cui si deve preoccupare il suo costrutture) ma anche sulla scheda che dovrà leggere e misurare il segnale proveniente da tale cella. Per metterci al riparo dai problemi abbiamo usato componenti di alta qualità, resistenze a bassa deriva termica e, soprattutto, una voltage reference di fascia alta che da sola costa come tutta la scheda. Infatti il chip LT1236-A di Linear è una vref ad alta stabilità (2ppm/°C) con una precisione dello 0,05%. Questa scelta permette a un progettista di evitare in un progetto già “critico” almeno le più comuni fonti di errore, come una vRef troppo variabile che altererebbe il segnale di uno degli ingressi del comparatore.

Lo schema

Schema SnipCard ADC 24 bit

Schema SnipCard ADC 24 bit

La scheda è dotata di un regolatore a 5 VCC perché Archiduino non ha a disposizione questa tensione sulla base board (che lavora a 12 e 3.3 volt). I 5 volt servono anche per alimentare il sensore o la cella di carico e sono presenti sul connettore CN3.

Il chip LT1236, incaricato di fornire la vRef, ha un package SOIC8 ed è pin compatibile con l’ADR03 di Analog Devices, un altro ottimo vRef (a 2,5 volt) dal costo meno proibitivo.

Per le applicazioni non troppo critiche si può usare la vRef a 2,5 volt di Archiduino (fatta con un LM4030-2.5, una Signora vRef, mica bruscolini) e risparmiare il costoso LT1236. La SnipCard è dotata di ponticelli per fare la scelta opportuna e di un divisore di tensione per adattare la reference alle esigenze specifiche di ogni singolo progetto.

La scheda è stata progettata per poter ospitare in alternativa il chip LTC2485, il fratello del LTC2484, nel caso volessimo utilizzare la comunicazione I2C bus anziché la SPI. Per fare ciò bisogna però agire sui ponticelli SJ3 e SJ2 in modo da convogliare i segnali sui pin corretti.

I test

Le prove effettuate in laboratorio ci hanno dato risultati molto incoraggianti. Collegando una cella di carico di una comunissima bilancia da cucina super economica abbiamo ottenuto un valore stabile, privo di rumore, approssimato a +/- 100 microgrammi. La tensione letta con tale carico era di appena 0,000015 volt (15 microvolt). Una volta effettuata la calibrazione con pesi campione certificati da 1 grammo e 100 grammi abbiamo ripetuto i test e abbiamo fatto le verifiche con un litro di acqua distillata, ottenendo un sorprendente valore di 999,981 grammi. Poteva essere più preciso? Sì, ma ricordiamo che la cella di carico usata era ultra cheap con una non-linearità assai accentuata.

Conclusioni

Pur non avendo per le mani uno strumento calibrato in qualche blasonato Istituto di Metrologia, possiamo dire che la SnipCard ADC 24 bit è un ottimo convertitore analogico/digitale che può essere usato in svariati settori, non solo per le celle di carico ma anche per leggere con ottima precisione una termocoppia o una sonda di temperatura al platino tipo PT1000. Il metodo costruttivo è quello consueto delle SnipCard per Archiduino, dove ogni ingresso è protetto da sovratensioni e disturbi. In tal modo possiamo usarla sul nostro microcontroller anche in ambito industriale senza pericolo di ottenere dati errati o, peggio ancora, di veder andare in fumo la SnipCard o la CPU per qualche extratensione tipica degli ambienti di lavoro dove operano motori, attuatori e macchinari ad alta potenza.

 

Novità autunno / inverno 2015

Novità autunno / inverno 2015

Negli ultimi mesi, in collaborazione con Seletronica e Novatronica, ho lavorato a diversi progetti e sperimentato un  po’ di tecnologie vecchie e nuove. In questo post vediamo di ricapitolare la situazione così da preannunciarvi quali saranno i prossimi articoli tecnici che pubblicherò entro fine anno.

Nota: l’uso del plurale in alcuni verbi non è in forma maiestatis ma è necessario quando mi riferisco a progetti realizzati in collaborazione con altre persone.

ADC Sigma-Delta a 24 BIT con LTC2484

ADC 24 bit LTC 2484 SnipCardCon Seletronica abbiamo progettato una SnipCard per Archiduino usando il noto componente LTC2484, prodotto dalla Linear Technology con package DFN a 10 pin, ottenendo risultati davvero interessanti a un costo contenuto. Dai test effettuati siamo riusciti a contenere il rumore entro il limite di +/- 0,1 microvolt. Significa che abbiamo una risoluzione “silenziosa” fino a 1 microvolt (0,000001 volt) e possiamo leggere segnali direttamente dai sensori sotto misurazione senza usare amplificatori intermedi! Maggiori dettagli saranno disponibili nell’articolo, mentre in un post a parte parlerò dell’ottimo controller Archiduino, prodotto da Seletronica, 100% compatibile con Arduino, certificato in classe A per uso industriale e civile.

MODO – Carico elettronico modulare

Mosfet dummy load - Particolare Mosfet IXYSSebbene il mercato offra già diversi prodotti per vari gusti e budget, con MODO abbiamo pensato al vostro portafogli: questo electronic dummy load è infatti modulare e scalabile, permettendo di iniziare con un investimento minimo per un modulo da 100 Watt, per poi ampliare fino a 2000 Watt e oltre (il limite reale non esiste se non nella crescente difficoltà di dimensionamento dei conduttori di carico) sempre a step di 100 Watt. Abbiamo anche pensato di offrire un’ampia scelta di opzioni di controllo. MODO è infatti gestibile in modo analogico “puro” o in digitale via microprocessore con vari livelli di complessità per il controllo della temperatura e l’analisi e l’esportazione dei dati raccolti. Stiamo completando i test in laboratorio e, appena pronti, pubblicheremo i dettagli e metteremo a disposizione nella sezione e-commerce (in allestimento) schede, componenti, kit di montaggio e/o prodotto montato e collaudato.

Mini PSU e Mini step-down

Mini Step DownAnche nel nostro piccolo capita quasi tutti i giorni di avere bisogno “al volo” di un piccolo convertitore di tensione continua o di un alimentatore di dimensioni ridotte. Per evitare di armeggiare ogni volta con basette sperimentali millefori e cavetti volanti, abbiamo deciso di realizzare una linea di schede pronte all’uso e di dimensioni veramente contenute. Abbiamo optato per la soluzione con normalissimi regolatori lineari (LDO) perché molto più “silenziosi” che i loro colleghi a commutazione (switching) e sicuramente più adatti ad alimentare schede delicate o sensibili come quelle che lavorano in digitale. A breve faremo un post specifico e metteremo a disposizione sullo shop le varie versioni, sempre con la formula solo scheda (bare board), kit di montaggio o prodotto montato e collaudato.

Nuova CPU per Archiduino con processore Atmel ATMega 1284

ATMega 1284 TQFP 44 pinsHo partecipato, seppure con un modestissimo contributo, alla progettazione della nuova CPU per Archiduino, il controller di cui vi ho già accennato e di cui parlerò più approfonditamente in un apposito articolo. Archiduino è nato con il processore ATMega32U4, la stessa CPU montata su Arduino Leonardo. Purtroppo per determinati tipi di applicazioni, dove la complessità del programma o l’uso di librerie particolarmente corpose richiedono un notevole spazio di memoria (vedi librerie Ethernet per schede basate su ENC28J60 e simili, tanto per fare un esempio), serviva una CPU che disponesse di risorse maggiori e quindi si è optato per il processore ATMega 1284. Nell’articolo che pubblicherò descriverò il pinout, il tipo di bootloader utilizzato e parlerò dei dettagli relativi alla scheda realizzata da Seletronica.

Lettore di chiavi Dallas iButton in versione USB HID

Lettore chiavi Dallas iButton HID USBNovatronica ha progettato e realizzato un lettore di chiavi Dallas iButton che opera sia in modo USB seriale che in modalità HID in emulazione di tastiera. Lo strumento, nella sua semplicità, offre quindi una soluzione driverless per tutte le esigenze di lettura di chiavi di identificazione iButton e lo fa in uno spazio molto contenuto (il box è di appena 35 mm per lato). Ho partecipato a questo progetto in veste di montatore di prototipi e saldatore di CPU, che in questo caso era il buon ARM STM32F103 in formato LQFP64. Il dispositivo è già in vendita sul sito Seletronica. A breve farò qualche test e pubblicherò una recensione, quindi tenete gli occhi aperti

A2SC Shield

AR2INO SHIELDAbbiamo progettato una shield in grado di ospitare a bordo fino a cinque SnipCard (il formato di schede nato per il sistema modulare di Archiduino). Questa board consentirà a chi ha già un Arduino Uno, o qualsiasi altro Arduino con medesimo layout dei connettori, di usare le potenti SnipCard di Archiduino senza dover cambiare la sua amata CPU. Se fate un giro sui siti di Seletronica o di Archiduino potrete vedere la gamma completa di SnipCard e il loro utilizzo. Alcune di esse hanno funzionalità simili ad altri shield di Arduino, quindi vi domanderete: perché usare le SnipCard? La differenza sostanziale fra shield tradizionale e la SnipCard è principalmente nel livello di protezione che quest’ultima offre: per ogni canale di comunicazione I/O ci sono scaricatori di extratensioni, diodi TVS (transient voltage suppressor) e filtri RF che proteggono la vostra CPU da extratensioni, disturbi elettromagnetici, surges, spikes e altri fenomeni mediamente letali per il vostro Arduino. Con le SnipCard non avrete mai più periferiche e sensori connessi direttamente ai pin della CPU!

MICIO

Micio - SeletronicaMICIO (acronimo di Microprocessor Input/Output) è un sistema modulare nato per montaggio su barra DIN, 100% compatibile con Arduino. Una macchina con queste caratteristiche si adatta bene alla realizzazione di dispositivi industriali in cui risulti necessaria una buona capacità di elaborazione dati. Era già disponibile una versione con processore STM32 ARM CortexM3 a 32 bit – programmabile in .NET – e quindi, come per la CPU di Archiduino, Seletronica ha creato una versione compatibile Arduino con processore ATMega 1284. Il mio contributo in questo progetto è stato del tutto marginale e limitato alle tabelle parametriche degli I/O che avevo preparato per la CPU di Archiduino con il 1284 e alla saldatura dei componenti sui prototipi (qualche TQFP a 44 pin è sempre un buon allenamento per chi ama questo mestiere).

MinimaxProjects

Minimax ProjectsInfine vi annuncio che ho “ereditato” gli articoli tecnici apparsi sul sito MinimaxProjects.org. A breve li pubblicherò su questo blog sia in inglese che in italiano. Purtroppo gli amici di Minimax, per sopraggiunti limiti di età e per il sempre minor tempo a disposizione, non possono proseguire nel divulgare il frutto di anni di minimalismo zen applicato all’elettronica (just don’t ask) e quindi mi hanno chiesto di dare continuità a quanto fatto finora, e soprattutto di salvare qui i loro post prima che il dominio scompaia dal web alla scadenza dei termini. Ringraziandoli per la fiducia riposta, spero di essere all’altezza e spero che la loro esperienza sia d’ispirazione per voi come lo è stata per me. Non escludo che in un prossimo futuro torni in loro la voglia di riprendere in mano gli innumerevoli “cheese paper projects” (progetti su carta da formaggio) che hanno annotato in decenni di attività professionale. Non escludo neppure che un giorno uno di loro bussi alla mia porta e mi lasci un plico di questi meravigliosi progetti scritti a mano, pronti – o quasi – per la pubblicazione. Staremo a vedere, intanto… arrivederci, Minimax.

 

Bene, con questa corposa panoramica spero di aver stuzzicato il vostro appetito al punto di istigarvi a iscrivervi alla newsletter, di cui trovate apposito form di iscrizione nel footer del sito. In tal modo potrete rimanere aggiornati sui nuovi articoli man mano che usciranno. Se volete potete anche iscrivervi al feed RSS e, se avete un account sui principali social network, potrete veder comparire gli aggiornamenti sulla mia/nostra attività (troverete le icone per l’iscrizione in basso a destra, nel footer del sito).