Scheda acquisizione dati - Parte Hardware

Uno dei vari pregi del Raspberry, utilissimo per chi voglia sviluppare sistemi più o meno scheda acquisizione daticomplicati, è disporre dei bus I2C, SPI e UART, indispensabili se ci si vuole interfacciare a periferiche come memorie (ad esempio per le SD si usa l'I2C), convertitori od anche microcontrollori. Trovando un ADS7816 mi sono deciso a sviluppare qualcosa di più interessante rispetto a quanto fatto fin'ora: una scheda di acquisizione dati ad 1 canale (purtroppo il 7816 non ne mette di più a disposizione) e 12bit, che dialoghi con il Raspberry tramite SPI (supportato dal ADC in questione). Il tutto, per quanto misero sia al momento, servirà da base per il futuro (con un MCP3204 avrei 4 canali da 12 bit, e costa qualche dollaro anche al dettaglio); per ora voglio prendere un po' di dimestichezza e farmi un'idea dei principali problemi e delle prestazioni raggiungibili.

Lo schema è in figura, molto semplice. Il convertitore è alimentato direttamente dal Raspberry, visto il consumo irrisorio (qualche µW anche ai tassi di acquisizione più alti); schema scheda acquisizione datil'alimentazione è a 5V, già stabilizzata dall'alimentatore e si rende quindi necessario solo un filtro passa basso formato da R12 e C2, consigliato dal datasheet, e necessario a filtrare disturbi di elevata frequenza. Il segnale da convertire arriva direttamente all'ADC ed è comparato con la tensione di riferimento presente sul pin 1. In generale questo è connesso direttamente alla tensione di alimentazione, nel mio caso invece la tensione di riferimento è variabile a scalini di 1V grazie alla rete di resistenze di precisione R7 - R11. Così se il segnale da misurare si mantiene certamente al di sotto di un valore (ad esempio 2V), si riduce la tensione di riferimento ottenendo un aumento della risoluzione. Se il segnale pcb acquisizione datisupera la tensione di riferimento impostata vi è un troncamento (che si traduce in un errore di lettura) ma nessun problema di natura elettrica,a meno che non si superino i 5V di alimentazione, pena la cottura dell'ADC. I pin 5, 6, 7 sono utilizzati per la comunicazione dati con il raspberry (una linea di clock, una dati ed una di abilitazione). Ultima nota riguarda la rete di resistenze R1 - R6 e di mosfet logic level BSS98 (non BSS98 come nelo schema). Quest'insieme si rende necessario per interfacciare elettricamente il bus SPI dell'ADC7816 con quello SPI del Raspberry: infatti le tensioni di lavoro del primo sono 0V - 5V, mentre il secondo lavora tra 0V e 3.3V. Omettere tale rete si tradurrebbe in una pestilenziale frittata di lampone. Va quindi prestata molta attenzione anche in fase di montaggio del circuito, quando è sempre facile invertire i pin dei fet, con immaginabili conseguenze... Resta da sviluppare il software di acquisizione dati: fatto! Intanto ecco gli schemi per Eagle (siascheda acquisizione dati .sch sia .brd)