lightspeed attenuator+progetto HiFun controllo pre

Progetti, domande e idee sparse sull'autocostruzione delle elettroniche
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

Una cosa che non ho capito ancora è chi sarà a sviluppare il SW.... io non ho mai adoperato i PIC, per cui....
neanche io... ma di "C" (cosi` come di un'altra dozzina di linguaggi vari) un po` ne mastico e, anche se in seguito non ho mai avuto occasione di utilizzarlo (per cui a distanza di 20 anni non mi ricordo piu` nulla... :x ), a suo tempo un po` di assembler lo avevo anche studiato... insomma, penso che in qualche modo forse una mano potro` darla anche io. :|
E se usassimo un aggeggio del genere: la "T" come selettore di ingresso e poi un "lightspeed clone" liscio al seguito?
naah... cos'e`, ti sei gia` scoraggiato? :?

Oltretutto, la parte relativa al selettore ingressi / attenuatore tutto sommato mi sembra la piu` semplice, sia dal punto di vista del software che da quello dell'hardware. In verita`, all'inizio temevo che potesse essere molto piu` complesso di cosi`... ora mi sembra quasi banale.

Cosi` a naso, al momento vedo molto piu` complessa (sia come hw che come sw) la scheda di controllo con la gestione di interfaccia, dispay e telecomando. Se ti scoraggi ora... :(

Dopo tutto qui` si tratta solo di gestire qualche tabella, cosa che si fa` comodamente tanto in "C" quanto in assembler. L'unico dubbio (legato alla mia ignoranza in materia...) e` di quanta memoria (non volatile) possiamo disporre... vediamo un po`: quanta ce ne serve?

Per la tabella dell'attenuazione, per ogni entry (riga) ci basta un byte per definire la stessa (non credo che dovremo definire piu` di 256 step, no?!) piu` 2 parole da 16bit per i due valori di Rldr1 e 2, quindi in totale fanno 40bit di informazione. Tanto per fare una stima, anche supponendo 128 entries (64dB in 128 step da 0.5dB), dovremmo starci ampiamente in meno di 1KB. Di queste tabelle ne serve una per ogni valore dell'imp. di ingresso che vogliamo predisporre. Anche a voler esagerare, non arriviamo a 10KB.

Poi ci sono le tabelle di calibrazione... per queste servono due word da 16bit (4 bytes) per riga.

edit: fin qui` ok...
poi devo aver svalvolato, xche` rileggendo il post non so` piu` neanche io che cosa avessi scritto! :o :x

Ricominciamo da capo... con calma. :D

Di tabelle di calibrazione ne servono tante quanti sono gli LDR da calibrare, quindi n+1, dove "n" e` il numero di ingressi.

Ciascuna tabella ha un numero di righe pari al numero di valori diversi che devono essere assunti dal LDR in questione.

Nel caso peggiore (che almeno ora come ora mi sembra assurdo quanto perverso...) non si riutilizza mai due volte lo
stesso valore di resistenza, (!) per cui abbiamo un valore diverso di Rldr (e quindi una riga nella tabella) per ogni diverso
step di attenuazione e per ogni diverso valore della Zin implementato.

Quindi, il limite superiore al numero di righe di ciascuna tabella e` pari al numero di step di attenuazione moltiplicato
per il numero di possibili Zin, i.e. Nr = Ns*Nz

Riassumendo, il limite superiore alla max occupazione di memoria per le tabelle di calibrazione e` dato da:

maxmem = (n+1)*Ns*Nz*4 (bytes)

Quindi, sempre procedendo per l'estremo superiore, supponendo 5 ingressi, 128 step e ben 10 diverse impedenze di
ingresso abbiamo 6*128*10*4 = 30KB.

Sommati ai 10KB di prima in totale arriviamo a circa 40KB.

In pratica pero` ne dovrebbe bastare molto meno... i conti esatti li potremo fare solo dopo aver preparato le tabelle
di attenuazione (che a questo punto e` la prima cosa da fare) ma "a naso" in 32KB dovremmo starci larghi.

Nondimeno, per stare tranquilli e non mettere limiti alla provvidenza (nonche` ad eventuali sviluppi futuri) se possibile
converrebbe avere a disposizione una mem non volatile di almeno 64KB (per canale).

A questo naturalmente va` aggiunta la quota occupata dal firmware, x la quale al momento non so` fare una stima.

Ora, rinnovo la domanda... di quanta mem. dispongono le PIC + comuni (ed economiche) che potremmo usare per questo progetto???

P.S.: ho dato una occhiata su Internet e, se non mi e` sfuggito qualcosa, mi pare che siamo nei guai... ho letto male (non ho visto un "K") o si parla davvero di appena qualche 100io di bytes di data memory?!?!? :o :?

Siamo fuori col botto... ci sta` a malapena una riga della tabella di attenuazione! :x

Si puo` mettere una mem non volatile (flash?) esterna?!? e` complicato? costoso? :?:

Vi vengono in mente soluzioni alternative???


Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Avatar utente
marziom
sostenitore
Messaggi: 3253
Iscritto il: 24 nov 2005, 18:06
Località: Ciociaria
Been thanked: 2 times
Contatta:

Messaggio da marziom »

il PIC scelto da me 16F876:
8k programma
368byte RAM
256 EEPROM

semplificare, semplificare......e, come previsto nei vechi post, usiamo + PIC per compiti diversi.
rivedi lo schema, c'era un PIC master, uno per il display e 1 per la scheda di attenuazione....

marzio



_____________________
Se con 10 milioni di transistor non riesci a fare tutto sei un p**la!
_____________________
So di non sapere. Socrate
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

il PIC scelto da me 16F876:
8k programma
368byte RAM
256 EEPROM
256 cosa?! bytes? :x
semplificare, semplificare......
se sono 256 BYTEs, hai voglia a semplificare... a meno di poter aggiungere altra mem esterna, IMHO semplicemente NON si puo` fare punto. O perlomeno non cosi` come avevamo deciso.

In 256 byte forse ci si potrebbero far stare le tabelle di attenuazione/calibrazione previste nella configurazione alternativa (e per un numero di passi limitato), ma di certo non tutte le tabelle di cui abbiamo bisogno per la versione a "resistenze calibrate".
e, come previsto nei vechi post, usiamo + PIC per compiti diversi.
rivedi lo schema, c'era un PIC master, uno per il display e 1 per la scheda di attenuazione....
certamente... anzi, se facciamo come pensavo io, di schede di attenuazione e quindi di relative PIC ce ne sono addirittura una per canale.

Cionondimeno, per la versione a resistenze calibrate, anche limitando al massimo le features e facendo i salti mortali, ci servono comunque almeno una 10ina di KB, altro che 256 bytes!

No, cosi` non va`. Dobbiamo aggiungere una flash oppure tornare all'altra ipotesi, accettando le relative limitazioni (e complicazioni nel circuito di calibrazione).

E` cosi` improponibile aggiungere una EEPROM, flash o simile?



Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
mrttg
advanced member
Messaggi: 5037
Iscritto il: 03 nov 2005, 05:47
Località: Italy
Been thanked: 1 time
Contatta:

Messaggio da mrttg »

Una E2 esterna vi occupa 2/3 pin

Tiziano
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

qualcosa tipo queste?

http://parts.digikey.com/1/parts/indexd19213.html

oppure questa?

http://www.atmel.com/dyn/resources/prod ... oc0456.pdf

edit: le 24AA512 (64K x 8 == 512Kbit == 64KB) ci sono anche su RS italia, circa 3 euro l'una...

Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
andypairo
sostenitore
Messaggi: 689
Iscritto il: 03 nov 2005, 23:17
Località: Italy

Messaggio da andypairo »

Che ne dite di un Atmega 128?

128kB programma
4kB RAM
4kB EEPROM

fino a 53 I/O
ADC 10 bit 8 canali

c'è anche uno stamp module a prezzo ridicolo qui http://www.futurlec.com/ET-AVR_Stamp.shtml


Ciao

Andrea
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

Che ne dite di un Atmega 128?

128kB programma
4kB RAM
4kB EEPROM

fino a 53 I/O
ADC 10 bit 8 canali
come prestazioni generali mi sembra overkill... mentre per quanto riguarda la memoria flash, puo` bastare solo a patto che si possa utilizzare parte di quella di programma per i dati (tabelle di calibrazione). :?:

BTW, visto che il grosso (o perlomeno l'impostazione) del software tocchera` a Marzio, per ovvi motivi immagino sia preferibile utilizzare dei chip che lui conosce gia`.
c'è anche uno stamp module a prezzo ridicolo qui http://www.futurlec.com/ET-AVR_Stamp.shtml
indubbiamente non e` caro, ma... per un "pre" completo in versione stereo ci vogliono almeno 4 PIC, di piu` per versioni multicanale:

1 PIC sulla scheda master
1 PIC sulla scheda display
2 (se stereo, altrimenti 4,5,6,...) PIC su altrettante schede attenuatore

Cosi` a naso mi sembrerebbe preferibile usare PIC uguali, della stessa serie o quantomeno programmabili con gli stessi strumenti hardware e software; usare quelle schedine vorrebbe dire spendere circa 80 euro (+5 di "programmatore") solo per i uC (nel caso di una versione stereo, anche il doppio nel caso di una multicanale...). Una PIC tipo quella che suggeriva Marzio + un modulo EEPROM esterno solo dove serve (schede attenuatore) o anche la stessa Atmega 128 "nuda" dovrebbero costarci un po` meno. Tanto gli stampati ce li dobbiamo far fare comunque... che senso ha metterci sopra un connettore con su` un'altra schedina?

IMHO quelle schedine possono essere molto comode se uno deve farsi qualche test su millefori... per una realizzazione "in serie" (per quanto piccola o piccolissima come nel nostro caso) non mi pare che abbia molto senso.

BTW, visto che mi sembra che attualmente tra di noi Marzio e` l'unico ad avere esperienza in materia, a lui la palla...


Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Avatar utente
marziom
sostenitore
Messaggi: 3253
Iscritto il: 24 nov 2005, 18:06
Località: Ciociaria
Been thanked: 2 times
Contatta:

Messaggio da marziom »

per programmare i uc oltre a conoscere il linguaggio (semplice, di solito è C al massimo qualche riga di assembler) occorre avere il sistema di sviluppo e conoscere l'architettura di sistema.
purtroppo non ho l'ambiente ATMEL...e comprare la scheda....imho è più economico fare una selezione manuale e tagliamo la testa al toro.
per il PIC sono accessoriato.... anzi a proposito, giovedi sono a Milano per un corso, se c'è qualcuno di voi...

marzio

_____________________
Se con 10 milioni di transistor non riesci a fare tutto sei un p**la!
_____________________
So di non sapere. Socrate
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

per programmare i uc oltre a conoscere il linguaggio (semplice, di solito è C al massimo qualche riga di assembler) occorre avere il sistema di sviluppo e conoscere l'architettura di sistema.
per l'appunto, e` quello che supponevo... :|

per te e` OK utilizzare la PIC + una EEPROM seriale esterna ove necessario (cioe` sulle schede ingressi/attenuatore)?

problemi? controindicazioni?



Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
andypairo
sostenitore
Messaggi: 689
Iscritto il: 03 nov 2005, 23:17
Località: Italy

Messaggio da andypairo »

Per me va benissimo qualunque cosa, basta che funzioni ;-)

Per l'hardware direi che il prototipo può essere "cablato" su millefori, per poi passare a una PCB "industriale" (ci sono servizi di prototipazione abbastanza a buon mercato) una volta appurato che funziona a dovere.

A questo punto conviene mettersi d'accordo sullo schema elettrico (e sulla calibrazione) e aggiornare lo schema.

Ciao

andrea
Avatar utente
marziom
sostenitore
Messaggi: 3253
Iscritto il: 24 nov 2005, 18:06
Località: Ciociaria
Been thanked: 2 times
Contatta:

Messaggio da marziom »

per te e` OK utilizzare la PIC + una EEPROM seriale esterna ove necessario (cioe` sulle schede ingressi/attenuatore)?
problemi? controindicazioni?
per non ci sono problemi.... tanto più che il progetto della scheda ingressi/attenuatore ancora non c'è....
a questo punto direi di utilizzare lo stesso PIC del master 16F876 più un chip di memoria.
qualcuno fa uno schizzo giusto per vedere se ci sono cose non considerate...

marzio

_____________________
Se con 10 milioni di transistor non riesci a fare tutto sei un p**la!
_____________________
So di non sapere. Socrate
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

A questo punto conviene mettersi d'accordo sullo schema elettrico (e sulla calibrazione) e aggiornare lo schema.
una cosa alla volta... decidiamo prima la PIC da usare in modo da sapere se ha un ADC o dei comparatori on-board e se questi hanno ingressi "flottanti" (differenziali) oppure vanno riferiti a massa, etc. Queste informazioni ci servono prima di poter definire lo schema della parte x cosi` dire "analogica"...



Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

per te e` OK utilizzare la PIC + una EEPROM seriale esterna ove necessario (cioe` sulle schede ingressi/attenuatore)?
per non ci sono problemi.... tanto più che il progetto della scheda ingressi/attenuatore ancora non c'è....
a questo punto direi di utilizzare lo stesso PIC del master 16F876 più un chip di memoria.
e` quello che pensavo anche io...

BTW, un paio di domande (magari lo avevi gia` detto, ma l'info si e` persa nei thread...).

- perche` hai scelto proprio quel modello e non un altro?

- se non mi sbaglio, ci sono PIC della stessa serie con 64K (o forse anche 128K) di memoria flash (di programma) on board. Il tuo ambiente di sviluppo le supporta? Si puo` usare parte della mem di programma per le tabelle di calibrazione? Se la risposta si` ad entrambe, visto che alla fine spesso due chip (PIC+EEPROM) costano comunque piu` di uno solo (PIC con + mem) bisognerebbe valutare se sia piu` conveniente usare piuttosto una di quelle... :?:



Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Avatar utente
marziom
sostenitore
Messaggi: 3253
Iscritto il: 24 nov 2005, 18:06
Località: Ciociaria
Been thanked: 2 times
Contatta:

Messaggio da marziom »

- perche` hai scelto proprio quel modello e non un altro?
oh, per una nobile causa!
...li ho nel cassetto! :D
- se non mi sbaglio, ci sono PIC della stessa serie con 64K (o forse anche 128K) di memoria flash (di programma) on board. Il tuo ambiente di sviluppo le supporta? Si puo` usare parte della mem di programma per le tabelle di calibrazione? Se la risposta si` ad entrambe, visto che alla fine spesso due chip (PIC+EEPROM) costano comunque piu` di uno solo (PIC con + mem) bisognerebbe valutare se sia piu` conveniente usare piuttosto una di quelle...
da quello che so, no. la memoria di programma la scrivi in fase di programmazione e basta.

marzio

_____________________
Se con 10 milioni di transistor non riesci a fare tutto sei un p**la!
_____________________
So di non sapere. Socrate
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

oh, per una nobile causa!
...li ho nel cassetto! :D
beh, e` gia` un inizio... :D

Scherzi a parte, visto che ne serviranno diverse (specie per una eventuale versione multicanale), e` da valutare bene (cioe`, DEVI valutare... sei tu l'esperto! :oops: ) se siano le piu` idonee o se invece non sarebbe meglio utilizzare piuttosto un modello + economico e/o che magari si adatta meglio alle necessita` del caso... (quantomeno x le schede selettore/attenuatore). :?:

mmmh, ma forse prima vuoi discutere qualche dettaglio in piu` sul circuito audio e calibrazione, o e` gia` tutto abbastanza chiaro?

A questo punto farebbe comodo aggiornare lo schema...

* ci vanno gli LDR di ingresso commutati on/off (stesso comando del rele` corrispondente, negato);

* bisogna vedere di inventarci un sistema semplice per commutare alternativamente i DAC dei LED/LDR verso il sistema di calibrazione... forse bastano uno o due scambi nel punto giusto utilizzati in modo furbo. Cosi` ci basterebbe un solo DAC "stereo" (doppio) per canale per pilotare tanto entrambi i LED quanto il sistema di calibrazione.

Infine, su questo fronte resta ancora da decidere se lavorare a tensione o a corrente costante e se verificare il raggiungimento della Rldr prefissata "leggendo" la Vout piuttosto che la caduta su Rs. Il primo metodo ha il vantaggio che il valore da misurare e` riferito a massa ed e` quindi probabilmente piu` semplice da implementare (a meno che l'ADC od il comparatore della PIC non abbiano l'ingresso differenziale flottante...). Per contro, se si legge Vout e` bene avere Rs sufficentemente alte e quindi servono anche tensioni piu` alte all'uscita del DAC.

Io tendo a propendere x lavorare a "corrente costante" (e ragionevolmente bassa) in modo da minimizzare le "perturbazioni" termiche sugli LDR, che nell'altro caso potrebbero invece diventare significative x valori bassi di Rldr e/o portare a correnti troppo piccole all'altro estremo.

da quello che so, no. la memoria di programma la scrivi in fase di programmazione e basta.
ok, fine della storia...

Decidiamo rapidamente quale modello di PIC e di EEPROM usare ed andiamo avanti!

BTW: Andy, visto che ci sai fare con gli spreadsheet, cominceresti intanto a preparare le tabelle di attenuazione? ; ) :D


Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
andypairo
sostenitore
Messaggi: 689
Iscritto il: 03 nov 2005, 23:17
Località: Italy

Messaggio da andypairo »

Dunque, vedete voi i dettagli dei micro; dal poco che ho visto il buffer in ingresso è obbligatorio per via della corrente di leakage (consigliano max impedenza 10kOhm).


Come calibrazione vorrei capire... ho rifatto i conti e il sistema da me proposto (Vref fissa e 3 resistenze switchate) consente, con un ADC da 10 bit, di avere oltre 100 lsb per ottava di resistenza.
Il tutto senza dover commutare DAC e altro.
Misurando la tensione sulla resistenza incognita (collegata a massa) inoltre va benissimo un ADC riferito a massa.

Per lo spreadsheet OK, ma quanti passi vogliamo? Va ricordato che in linea di massima i valori sono gli stessi, legati da un fattore di proporzionalità a seconda dell'impedenza totale.
Però, dati i valori minimi di resistenza ottenibili, un attenuatore da 5k avrà un range dinamico inferiore a un attenuatore da 50k di 20dB, per cui certi valori di attenuazione non saranno possibili.

Indicativamente, tenendo conto di 50 Ohm come resistenza minima, abbiamo:

5k -40dB
10k -46dB
25k -54dB
50k -60dB
100k -66dB

Facendo i calcoli su 100 Ohm minimo perdiamo 6dB di dinamica.

Teniamo costante il numero di passi o il passo?

Ciao

Andrea
Avatar utente
marziom
sostenitore
Messaggi: 3253
Iscritto il: 24 nov 2005, 18:06
Località: Ciociaria
Been thanked: 2 times
Contatta:

Messaggio da marziom »

visto che questa sera la passo in albergo, se arriviamo (arrivate...io sarò un'po impicciato) a buttare giu uno schizzo di massima stasera lo sistemo al cad e domani vi posto il circuito....

intanto scarico i DS delle eeprom e dei PIC....

per le EEPROM, rimanendo in casa microchip, ci vuole una 24XX512 da 512Kbit....penso che sia sufficente nò

per i PIC, la EEPROM arriva al massimo a 1024....quindi comunque abbiamo bisogno di una memoria esterna, per quanto riguarda le altre caratteristiche dobbiamo (devo) capire ancora come pilotiamo i LDR
...ci vuole un PIC con DAC? usiamo un DAC esterno? usciamo un potenziometro digitale esterno? ...a proposito di questa ultima opzione io ho queste MCP41010 che si pilotano in seriale...e penso sia una buona scelta.

per la master board direi di lasciare quello che c'è.


marzio

_____________________
Se con 10 milioni di transistor non riesci a fare tutto sei un p**la!
_____________________
So di non sapere. Socrate
andypairo
sostenitore
Messaggi: 689
Iscritto il: 03 nov 2005, 23:17
Località: Italy

Messaggio da andypairo »

Ho ridato un'occhiata veloce alla bozza della parte selettore de è grossomodo OK a parte:
-Separazione masse segnale/PIC
-selettore o relè che colleghi l'uscita al circuito di calibrazione (e le masse assieme)- va bene un selettore/jumper multiplo
-resistenze serie per i LED visto che li pilotiamo con DAC+resistenza

PS che DAC pensate di adoperare?

PPS Che cad adoperi?

La mainboard mi sembra OK per ora. Bisogna vedere come interfacciare il DAC.

Ciao

Andrea
andypairo
sostenitore
Messaggi: 689
Iscritto il: 03 nov 2005, 23:17
Località: Italy

Messaggio da andypairo »

Il Pot che indichi ha 256 passi, quindi 8 bit. Non so se sono pochi o sufficienti.

Per generare tutte le impedenze necessarie occorre usarlo come generatore di Vref a partire da 5V stabilizzati e bufferizzare tale tensione con un opamp che regga i 20mA , poi va messa una R in serie per limitare la max corrente a 5V.

Non semplicissimo ma nemmeno trascendentale.
Paolo che dici?

Ciao

Andrea
Avatar utente
UnixMan
sostenitore
Messaggi: 12096
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 79 times
Been thanked: 48 times

Messaggio da UnixMan »

Dunque, vedete voi i dettagli dei micro; dal poco che ho visto il buffer in ingresso è obbligatorio per via della corrente di leakage (consigliano max impedenza 10kOhm).
ti riferisci all'ingresso dell'ADC della PIC?
Come calibrazione vorrei capire... ho rifatto i conti e il sistema da me proposto (Vref fissa e 3 resistenze switchate) consente, con un ADC da 10 bit, di avere oltre 100 lsb per ottava di resistenza.
Allora, ricapitoliamo. Noi non dobbiamo misurare una resistenza incognita; la resistenza (che vogliamo di volta in volta ottenere) la conosciamo. Qualsiasi cosa misuriamo -corrente o tensione che sia-, sappiamo a priori quale dovra` essere il suo valore (lo possiamo calcolare con precisione tenendo conto degli altri parametri). Dobbiamo solo scoprire quanta corrente dobbiamo far passare nel LED per ottenerlo.

La procedura di calibrazione quindi consistera` nell'aumentare lentamente la corrente nel LED fintanto che` il sistema di misura non ci segnalera` in qualche modo che il LDR ha raggiunto il valore voluto. A quel punto non ci resta che scrivere il valore corrente del DAC che pilota il LED nella tabella di calibrazione e passare al valore successivo.

Quindi, come detto possiamo usare anche un semplice comparatore... e se con l'ADC interno ci vuole cmq. un buffer esterno, allora forse tanto vale fare davvero cosi` ed entrare da un ingresso digitale. :?:

Oppure si puo` utilizzare comunque l'ADC (se ci viene "gratis" con la PIC scelta) sfruttandolo pero` sostanzialmente come comparatore, con il vantaggio di poter vedere quando/quanto ci si sta` avvicinando/allontanando al/dal valore cercato (e quindi e.g. si puo` precedere a "velocita`" diverse a seconda che si sia piu` o meno lontani dal valore cercato, tornare indietro se x sbaglio lo si e` superato, etc... ma queste sono finezze e dettagli di cui eventualmente discuteremo in seguito).

Cio` premesso, ovviamente si puo` anche misurare la resistenza con l'ADC utilizzando uno qualunque dei metodi di cui avevamo parlato in precedenza e comparare in software il valore misurato con quello cercato, il tutto ovviamente ripetuto di continuo mentre si incrementa l'ingresso del DAC che controlla la corrente nel LED... pero` onestamente mi sembra piu` complicato e potenzialmente anche meno preciso. :?:

Anche dal punto di vista del software, mi sembra molto piu` semplice leggere un valore predeterminato da una tabella, impostarlo nel DAC che alimenta il circuito di calibrazione, far partire un contatore che pilota l'altro DAC (che controlla il LED) e, non appena arriva il segnale dal comparatore, fermare il contatore stesso e trasferirne il valore nella tabella di calibrazione.
Come calibrazione vorrei capire... ho rifatto i conti e il sistema da me proposto (Vref fissa e 3 resistenze switchate) consente, con un ADC da 10 bit, di avere oltre 100 lsb per ottava di resistenza.
Il tutto senza dover commutare DAC e altro.
si`, ma x contro devi commutare due resistenze... ci vogliono due rele` e due resistori di precisione in piu`... :|

Viceversa, per commutare il dac "inutilizzato" in modo da usarlo per alimentare il circuito di calibrazione, si puo` usare un secondo scambio dello stesso rele` che attiva la (collega il circuito di) calibrazione ed un solo rele` extra... o forse neanche quello, xche` magari si puo` sfruttare un secondo scambio su quelli della selezione canali (dovrei farmi uno schizzo, ma a naso direi che forse si puo` fare...).
Teniamo costante il numero di passi o il passo?
direi senza dubbio il passo...

poi, fissato un minimo di (almeno!) 100ohm per la Rldr, se la dinamica non ci basta, nessuno ci obbliga a mantenere sempre e comunque costante l'impedenza di ingresso!

Per cui, laddove non ci arriveremmo con Rldr1+Rldr2=K (i.e. per le attenuazioni + alte con K basso), una volta raggiunto il minimo stabilito per la Rldr shunt possiamo tenere fissa questa ed incrementare la Rldr serie fin quanto serve...

Quindi in definitiva possiamo tenere costanti sia il passo (se possibile 0.5dB, cosi` ci viene bene anche per il controllo del balance - che sara` gestito dalla scheda master) che l'attenuazione max (numero di passi) ed ottenere tutto il range dinamico che vogliamo.

idem all'altro estremo per le attenuazioni piu` basse: una volta raggiunto il minimo per la Rldr serie, possiamo aumentare la Rldr shunt fino a spegnere del tutto il LED, se necessario (qui` pero` c'e` il limite ed il problema che oltre un certo punto l'attenuazione effettiva dipenderebbe piu` dall'impedenza del carico a valle che non dai valori impostati nell'attenuatore...).

Ma si puo` fare anche di meglio! :o

Infatti si potrebbero addirittura prevedere tabelle di attenuazione precalcolate per i valori piu` comuni dell'impedenza di carico a valle che tengono conto anche di questa sia per ottenere step sempre precisi che per mantenere realmente costante la Zin... i.e., anziche` limitarsi ad emulare un banale potenziometro ponendo Rldr1+Rldr2=K, possiamo porre Rldr1+(Rldr2//Rload)=K nonche` calcolare gli esatti rapporti di attenuazione di ogni step tenendo conto anche dell'influenza di Rload! :p :?:

Oppure possiamo "inventarci" tabelle per tenere costante l'impedenza di uscita, o ancora per cercare un compromesso ottimale che minimizzi le variazioni tanto dell'impedenza di ingresso che di quella di uscita... piu` ci penso e piu` mi rendo conto che la flessibilita` di questo oggetto ha dell' incredibile, le sue possibilita` sono praticamente illimitate! :)


Ciao,
Paolo.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio