E' possibile invertire l'attenuazione di un trimmer con un operazionale?

Ho un segnale Vs che viene attenuato di un certo fattore con un trimmer e campionato da un microcontrollore.

Il micro deve programmare un DAC in modo da generare una tensione paragonabile a Vs, quindi prima del trimmer. Vorrei quindi un circuitino che amplifichi l'uscita del DAC di una quantit=E0 pari all'inverso dell'attenuazione del trimmer.

Se il trimmer =E8 un partitore resistivo noto a priori (per esempio, 10K e 10K), sarebbe facile fare l'inversione (basterebbe moltiplicare per

2 con un operazionale). Ma si potrebbe fare l'inversione non conoscendo a priori la posizione del trimmer? Non so se esistono, ma immaginando di avere un trimmer doppio (due trimmer che si muovo insieme con un solo punto di regolazione), si potrebbe fare?

Ora, se il trimmer =E8 digitale, quindi so come =E8 programmato, come potrei fare l'inversione? Non mi va di precalcolare il valore del DAC correggendo il valore del trimmer (se il trimmer =E8 programmato per

777/1024 e voglio programmare il DAC a 888, in realt=E0 lo programmo a 888*1024/777, compensando l'attenuazione del trimmer) perch=E8 avrei un errore non accettabile (888*1024/777=3D1170,285... lo programmo a 1170 facendo un errore).

C'=E8 soluzione?

Reply to
pozz
Loading thread data ...

pozz ha scritto:

Attaccare l' ingresso del convertitore AD del micro all' ingresso del partitore (trimmer), ovvero usare due canali AD, ovvero Vout=Vs?

Reply to
Englishman

pozz ha scritto:

Mai letta una cosa scritta piu' incasinata di questa. Prima il trimer e' analogico poi diventa digitale ... ??? Dando una certa interpretazione, se vuoi vedere la posizione di un trimer o meglio potenziometro doppio basta mandare una I nota al secondo e leggere la tensione tra il centro e massa con un ADC. La tensione sul trimer e' continua o si tratta di segnale e che tipo di segnale?

ciao giorgio

ciao giorgio

Reply to
Giorgio Padoan

Ok, facciamo i disegnini.

Ok, guadiamo solo il trimmer digitale.

[FIDOCAD] MC 40 65 2 0 000 LI 40 65 60 65 RV 60 60 75 70 LI 75 65 95 65 LI 95 65 100 60 LI 100 60 115 60 LI 115 60 115 70 LI 115 70 100 70 LI 100 70 95 65 TY 100 55 5 3 0 0 0 * ADC TY 45 70 5 3 0 0 0 * TRIMMER DIGITALE TY 25 60 5 3 0 0 0 * Vs TY 80 60 5 3 0 0 0 * Vo LI 95 95 100 90 LI 100 90 115 90 LI 115 90 115 100 LI 115 100 100 100 LI 100 100 95 95 TY 100 85 5 3 0 0 0 * DAC MC 40 95 2 0 000 RV 60 90 75 100 LI 75 95 95 95 LI 40 95 60 95 TY 60 100 5 3 0 0 0 * ??? TY 25 90 5 3 0 0 0 * Vt LI 125 55 130 55 LI 130 55 130 105 LI 130 105 125 105 TY 135 75 5 3 0 0 0 * Stesso riferimento TY 135 85 5 3 0 0 0 * Stessi punti TY 30 120 5 3 0 0 0 * Ho a disposizione un altro trimmer digitale TY 30 130 5 3 0 0 0 * Cosa metto in ??? affinch=E8 Vt =3D Vs?
Reply to
pozz

Ti ho gia' chiesto si tratta di segnale lentamente variabile, ad unica f o di che cosa? Il rapporto di caduta del trimer potresti misurarlo con doppio potenziometro, come gia' suggerito. Per il resto perche' non usi il micro per effettuare l'operazione che ti torna Vs? Per una questione di precisione? C'e' un trucco si moltiplicano tutte le grandezza per 10 prima di effettuare la divisione, in pratica lavori con una cifra decimale senza usare i float, purche' il compilatore accetti le LongInteger (da 4byte), co le quali arrivi a circa 4.200.000.000.

Un altro modo da pensare e di agire a livello analogico usando il secondo potenziometro con un operazionale, ma c'e' da pensare come...

ciao giorgio

Reply to
Giorgio Padoan

Lentamente variabile.

Il problema non =E8 tanto la precisione con cui il micro fa i calcoli, ma deriva dal fatto che ho solo 1024 step per il DAC. Quando vado a correggere il valore del DAC tenendo presente l'attenuazione del trimmer digitale, mi esce un numero con la virgola che devo arrotondare per programmare il DAC.

In effetti =E8 quello che ho tentato di fare senza successo.

Reply to
pozz

Si`, ripensare tutto il sistema direi sia la cosa migliore!

--

Franco

Wovon man nicht sprechen kann, darüber muß man schweigen.
(L. Wittgenstein)
Reply to
Franco

Lentamente variabile.

Il problema non è tanto la precisione con cui il micro fa i calcoli, ma deriva dal fatto che ho solo 1024 step per il DAC. Quando vado a correggere il valore del DAC tenendo presente l'attenuazione del trimmer digitale, mi esce un numero con la virgola che devo arrotondare per programmare il DAC.

Ti ripeto prendi questo numero X con UNA cifra decimale ma lo metti in longInteger (4 byte) cosi' lavori con 5 cifre. dove la meno significativa e' da considerarsi il primo decimale. In pratica tutte le grandezze le moltiplichi per 10, e dopo fai le operazioni stando attento agli overflow! Cioe se usi var. da 2 byte e fai

20000 *20000 non puo' starci in due byte, allora devi usare grandezze da 4 byte, questo e' l'unico inconveniente. E' un modo che ho usato e strausato con successo quando serviva maggior precisione e ti evita di usare i float con le sue librerie megagalattiche.

ciao giorgio

Reply to
Giorgio Padoan

Se il Dac poi non ha la risoluzione adatta ai tuoi scopi cambialo, ne trovi a go go ciao giorgio

Reply to
Giorgio Padoan

Ok, propongo il mio problema.

Ho un segnale proveniente da un sensore, Vs, lentamente variabile. Ho un circuito a comparatore (che non posso sostituire perch=E8 ha tutti i requisiti di velocit=E0 che mi interessano) che mi fa scattare un allarme quando Vs supera una certa soglia. Questa soglia =E8 impostabile su questo circuito con una tensione analogica Vt. Per rendere l'impostazione della soglia variabile via software utilizzo un DAC.

D'altro canto ho la necessit=E0 di acquisire Vs per visualizzarlo a display, ma devo per forza fare un condizionamento del segnale, tra cui una taratura mediante trimmer digitale. Va =E8 la tensione che arriva all'ADC del micro (dopo condzionamento e trimmer digitale) che vado a campionare.

Mi sarebbe comodissimo poter impostare la soglia di intervento al DAC in modo compatibile con il valore acquisito dall'ADC (entrambi hanno 1024 punti e lo stesso riferimento). Per=F2 la tensione in uscita dal DAC cos=EC non sarebbe "compatibile" con il circuito a comparatore perch=E8 devo invertire il condizionamento del segnale (tra cui il trimmer digitale).

Cosa suggerite?

[FIDOCAD] MC 25 45 2 0 000 LI 50 20 35 20 LI 35 20 35 45 LI 35 45 25 45 LI 35 45 35 70 LI 35 70 50 70 SA 35 45 TY 40 25 5 3 0 0 0 * Circuito di protezione TY 115 15 5 3 0 0 0 * ALLARME LI 100 20 110 20 RV 50 15 100 25 RV 50 65 100 75 TY 40 75 5 3 0 0 0 * Condizionamento segnale RV 80 40 100 50 LI 80 45 75 45 LI 75 45 75 25 TY 80 50 5 3 0 0 0 * ??????? TY 10 40 5 3 0 0 0 * Vs TY 65 40 5 3 0 0 0 * Vt LI 125 65 140 65 LI 140 65 140 75 LI 140 75 125 75 TY 125 60 5 3 0 0 0 * ADC LI 125 40 140 40 LI 140 40 140 50 LI 140 50 125 50 TY 125 35 5 3 0 0 0 * DAC LI 125 75 120 70 LI 120 70 125 65 LI 125 50 120 45 LI 120 45 125 40 LI 120 45 100 45 TY 110 40 5 3 0 0 0 * Vd TY 110 65 5 3 0 0 0 * Va LI 100 70 120 70 LI 145 35 150 35 LI 150 35 150 80 LI 150 80 145 80 TY 155 60 5 3 0 0 0 * Stessa risoluzione (10 bit) TY 155 50 5 3 0 0 0 * Stesso riferimento TY 45 80 5 3 0 0 0 * con trimmer digitale
Reply to
pozz

vi

In realt=E0 il DAC ha la stessa risoluzione dell'ADC e ci=F2 mi basta. Quello che devo fare =E8 invertire il condizionamento del segnale fatto con il trimmer digitale.

Reply to
pozz

Dovresti deciderti su quel'e' il problema, dall'ultima sembrava la risoluzione del DAC, ora non piu'. Esempio: il potenz. digitale riduce il segnale Vs di 7/10 allora nelle variabili ci metti in una N=7000 e nell'altra D=10000. per riavere il segnale Vs l'uscita del DAC la moltiplichi per l'inverso cioe' l'uscita Vt=Vdac*10000/7000.

giorgio

Reply to
Giorgio Padoan

Mi sembra di non aver mai detto che la risoluzione del DAC sia un problema, piuttosto l'errore dovuto alla correzione del fattore di attenuazione del trimmer digitale.

Bravo, e come programmo il DAC? Immagina di ottenere dall'ADC un valore pari a 666. Per ottenere una Vt pari a Vs dovrei impostare un valore nel DAC pari a 666 * 10000 / 7000 =3D 951,428... L'unica cosa che posso fare =E8 arrotondare a 951, quindi la mia Vt sar=E0 Vt =3D 951/1024 * Vr =3D 0,9287... * Vr (Vr =3D tensione di riferimento). Mentre la Vs =3D 666/1024 * Vr * 10000 / 7000 =3D 0.929.. * Vr.

Come vedi le due tensioni non coincidono e l'errore non =E8 dovuto ai calcoli!!

Reply to
pozz

Riassumiamo, hai un generico rilevatore a soglia e devi sostituire il riferimento con qualcosa di più "professionale" e magari con una indicazione in volt! Hai già valutato tutte le opzioni semplici come non conformi all'upgrade e stai pensando a qualcosa di un po più sosfisticato e così?

Qual'è il rale motivo per questa modifica? Sono sorte necessità di controllo da remoto che prima non esistevano? Perchè usare un potenziometro digitale? che non capisco bene cosa tu intenda, dal rotativo a microswitch, all'esadecimale, al vero potenziometro digitale usato come attenuatore nei sistemi audio controllati a uP Oppure esiste già un qualcosa con tasti up/down nel tuo comparatore e devi inserirti li nel mezzo?

Non è possibile usare due imput del micro come tasti UP/DOWN evitando la doppia conversione AD-DA? ciao Rusty

Reply to
Rusty

Mi sembra di non aver mai detto che la risoluzione del DAC sia un problema, piuttosto l'errore dovuto alla correzione del fattore di attenuazione del trimmer digitale.

Ora ho capito il tuo problema: ma scusa se usi dei convertitori con risoluzione = errore di 1/1024 = 0,1 per cento (arrotondato) come puoi pretendere di avere una precisione maggiore? se osservi l'esempio che hai fatto vedi che l'errore tra le tensioni e' di quell'ordine.

ciao giorgio

Reply to
Giorgio Padoan

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.