Go Down

Topic: Semplice Convertitore D/A con ARDUINO duemilanove : problemi di overshoot (Read 8284 times) previous topic - next topic

dr_benway

Salve,
Sto cercando di utilizzare Arduino come generatore di segnali per la mia tesi, però con scarsi risultati.

Allego uno schema di massima.

[/url]


Le porte wal 1:4 sono collegate alle porte digital out di arduino.

Il problema è dato dai picchi di overshoot presenti ogni volta che c'è una commutazione.

All' inizio pensavo fosse un problema di iduttanza parassita, loop di massa induttivi o cose del genere.
Però anche collegando DIRETTAMENTE la sonda dell'oscilloscopio ad una porta digitale di arduino, è presente il picco di overshoot.

L'ingresso dell' oscilloscopio dichiara  una resistenza di 1 M ohm e una capacità di 40 pF

Io ho trovato degli esempi di dac r2r che funzionano benissimo, senza problemi.
Insomma io vorrei ottenere un risultato simile a questo :

http://arduino.cc/forum/index.php/topic,8715.0.html

Se qualcuno ha un'idea a riguardo è il benvenuto.

Grazie.





tazzo

Arduino non è granché per generare segnali, arrivi a frequenze e risoluzioni molto basse. Ci sono molti modi migliori.

L'overshoot è in genere capacitivo, hai provato ad usare la molla del probe dell'oscilloscopio invece del coccodrillo senza cavetti jumper o breadboard con tutto scollegato? Puoi allegare qualche schermata dell'oscilloscopio?

Il TL082 lo alimenti dualmente? Direi che ad ogni modo non va bene, è una pessima scelta.

Ma che schema hai trovato? Non potevi fare un semplice DAC R2R senza Mosfet?

Ciao

IMPORTANTE: Hai calibrato l'oscilloscopio? I probe sono da tarare ogni tanto

dr_benway

Allego foto


image

Questo è l'andamento a vista, giusto per capire cosa succede. Se  necessario nei prossimi giorni allego uno screen cap fatto come si deve


online photo storage

tazzo

Un minimo di picco è normale che ci sia, nel tuo caso molto è introdotto nella misurazione, prova a seguire i consigli che ti ho dato
Ciao

dr_benway


Quote
Ma che schema hai trovato? Non potevi fare un semplice DAC R2R senza Mosfet?


Lo schema funziona, il problema non è nei mosfet e neppure nell' operazionale


Quote
Hai calibrato l'oscilloscopio? I probe sono da tarare ogni tanto


Si, ho fatto, putroppo lo spike è dovuto proprio alla scheda :-(


Grazie.



tazzo

Secondo me è un pessimo schema, con componenti discreti ti viene un macello con quei mosfet.
Le resistenze da 470k poi sono assurde secondo me, sia che il rumore è proporzionale al valore della resistenza?
L'op-amp non è rail-to-rail oltre che essere totalmente inadatto a questo compito, mettici un MCP6022

tazzo

Hai letto il mio vecchio post: http://arduino.cc/forum/index.php?topic=104750.0 ?
Con il MCP6022 ho risolto moltissimi problemi, te lo consiglio caldamente.
Costa poco (te lo mandano gratuitamente come sample per l'università) , ha una buona banda (10 MHz) è Rail-to-Rail input/output ed è stabile a guadagno unitario, è fatto apposta per essere utilizzato come DAC Buffer

Ma perché ti danno così fastidio quei picchi?

Ciao

tazzo

La capacità di ingresso è determinata anche (e sopratutto) dalla sonda, metti l'attenuazione massima per avere meno capacità (dopo ritara), ti faccio coi numeri dei miei probe per farti capire:
Attenuazione 1x   1M ohm 100pF
Attenuazione 10x 10M ohm 17pF

40pF non sono pochissimi.. se non compensati tramite la taratura di entrambe le sonde i pinnacchi si alzano
Ciao

dr_benway

Grazie per la info sull' operazionale.

Quote
Ma perché ti danno così fastidio quei picchi?


Semplicemente perchè in uscita voglio un segnale fatto a scalini come questo  :




Questo non ha overshoots, come avrà fatto? =( =(


astrobeed


40pF non sono pochissimi.. se non compensati tramite la taratura di entrambe le sonde i pinnacchi si alzano


Per non parlare di tutte le capacità parassite introdotte dalla bread board, mi associo pure io al commento su quanto sia assurdo usare dei mos, che a loro volta introducono altre capacità parassite, per commutare le resistenze, idem per l'opamp scelto e per i valori della rete di feedback.
Usare il GOTO in C è ammettere la propria sconfitta come programmatore

tazzo

Il segnale è visto con poco zoom (e potrebbe essere un segnale a frequenza molto bassa) e l'oscilloscopio è molto vecchio, si perde parte degli eventi

Ciao

PS: Se vogliamo mettere il coltello i mosfet sono senza resistenza sulla base, se li comandi con una frequenza un pò elevata... BUM!

@Astro: Per misurare l'overshoot gli avevo consigliato di scollegare tutto, spero l'abbia fatto altrimenti è inutile stare a discutere se era con la  breadboard collegata..

dr_benway

Quote
Per non parlare di tutte le capacità parassite introdotte dalla bread board, mi associo pure io al commento su quanto sia assurdo usare dei mos, che a loro volta introducono altre capacità parassite, per commutare le resistenze, idem per l'opamp scelto e per i valori della rete di feedback.


Lasciamo perdere per un momento lo schema elettrico, poichè ci vorrebbe troppo tempo per spiegare a fondo la scelta dei cmos e andrei inesorabilmente OT.
Prendetela per buona.
Il problema è l'overshoot presente sull' uscita digitale SENZA mosfet a valle.
A cosa è dovuto? E' eliminabile?

Grazie.

dr_benway

Quote
PS: Se vogliamo mettere il coltello i mosfet sono senza resistenza sulla base, se li comandi con una frequenza un pò elevata... BUM!


Per base intendi tra GATE e massa? Perchè "BUM"?

Grazie.


tazzo

Si scusami intendevo sul gate ovviamente, BUM! perché il gate è come una capacità e serve corrente per caricarla e scaricarla velocemente, se hai una frequenza troppo alta potresti superare il limite dei 40mA per pin e danneggiare il micro.

L'overshoot è dovuto da capacità parassite, in parte non eliminabili, abbassando la frequenza le percepisci di meno.

Ciao

uwefed

dr.benway oggi sono tonto.
Spiegami il funzionamento di questo circuito.



L' operazionale é un comparatore con retroazione. Tu cosa volevi che fosse?
Come puoi pilotare quei MOSFET? Il source non é collegato a massa. Se la retorazione del operationale funziona hai una tensione quasi uguale sulle entrate + e -. Visto che il + lo hai messo a 3V (partitore con le 2 resistenze da 470Kohm anche la entrata negativa  del operazionale é a 3V. Se la source é a 3V non riesci a pilotare il MOSFET con 5V di Arduino perché troppo pochi per portarlo in piena conduzione.

Come detto, spiegami il funzionamento di quel schema; io non ci arrivo.

Ciao Uwe

Go Up