Ciao Marco,
benissimo l'uso di un decoder 3-8 linee, per la selezione ingressi va più che bene.
Come dicevo l'ideale sarebbe poter usare le linee "display" sia per l'LCD che per il 7 segmenti (utilizzando il decoder BCD-7 segmenti CD4511 bastano poche linee di comando)
Una cosa credo però vada approfondita: come ho già ribadito in passato un progetto del genere ha senso se permette di effettuare una calibrazione, in modo da non dover selezionare i dispositivi.
Per comodita riposto quanto avevo proposto tempo addietro
Dunque, come promesso ecco la tecnica che adotterei per la calibrazione:
Il circuito che abbiamo è Rs1x -- --Rs2x--
| |
M Sh
Risulta quindi logico pensare di adoperare il punto di giunzione tra le Rs2x e la resistenza di shunt come punto per la calibrazione.
Ciò permette di evitare complicate reti di switch dei segnali e la presenza di una Rsense.
Si inietta una corrente nota nel nodo e si va a leggere la tensione ai capi della resistenza da misurare. Tenendo sufficientemente alta l'impedenza dell'ADC la corrente scorrerà completamente nella resistenza in misura.
Per calibrare il ramo shunt è sufficiente lasciare spente tutte le altre e iniettare la corrente da misurare, leggendo la tensione ai suoi capi.
Per la calibrazione dei rami serie bisogna spegnere il led del ramo shunt e mettere un mute il canale desiderato. In questo modo la Rs2x è terminata a massa da un lato e dall'altro ha il generatore di corrente, per cui si misura come l'altra.
Iterando il procedimento siamo a cavallo.
Per semplicità credo convenga pilotare sempre "a manetta" il primo LDR della "T", eventualmente usando dei trimmer per equalizzare la Rserie "parassita" tra i canali. L'alternativa sarebbe la chiusura "manuale" verso massa degli ingressi in fase di calibrazione.
Quindi serve avere la possibilità di portare le uscite degli AD420 (uno per canale) sul nodo "wiper" dell'attenuatore e contestualmente di collegare al detto nodo l'ingresso ADC del micro (bufferizzando se serve). Quindi altri due relè.
Inoltre bisogna poter comandare la calibrazione (un ingresso) e poter memorizzare il fitting delle curve di resistenza.
Per impostare l'impedenza dell'attenuatore io utilizzerei uno degli ingressi analogici, letto all'accensione. Anzi si potrebbe usare lo stesso ingresso anche per scatenare la calibrazione.
Mi spiego: supponiamo di voler poter impostare l'impedenza Rnominale: si collega una R nota tra i +5V e l'ingresso ADC, con Rnominale verso massa. Misurando la tensione sul partitore con la R "nominale" si riesce a ricavare l'impedenza desiderata.
Se invece l'ingresso risulta collegato direttamente a +5V (o a massa) da un jumper si esegue la procedura di calibrazione.
La tabella di fitting, almeno in un primo momento, la farei di una decina di punti per LDR (per R di 100, 200,400.... fino a 1M), interpolando linearmente i punti intermedi.
Cio' significa, memorizzando il valore di pilotaggio per ciascun punto, 20 byte a LDR. Per un attenuatore stereo a n canali abbiamo 40(n+1) byte di EEPROM necessari (ce ne sono 512)
Domanda da profano: i valori della EEPROM possono essere scritti dal programma durante l'esecuzione, vero?
Ciao
Andrea