Go Down

Topic: sincronizzare analog pin (Read 616 times) previous topic - next topic

aureliusss

premetto che scrivo questo post nella sezione software ma secondo me riguarda anche l'hardware:

è possibile per arduino gestire/leggere i valori dati da due analogpin differenti contemporaneamente?
mi spiego meglio: devo prendere due misure di tensione da due diversi punti del circuito (in particolare la tensione su un condensatore e quella generata da un alimentatore. vi rimando a questo post per i dettagli http://arduino.cc/forum/index.php/topic,128815.0.html)ma possibilmente nello stesso istante.

con il codice che ho scritto e settando il prescaler a 16
Code: [Select]
c_voltage = analogRead(c_pin);
          time1 = micros()-time0; //time c_voltage measurement
          ps_voltage = analogRead(ps_pin);
          time2 = micros() - time0; //time ps_voltage measurement

la distanza in termini di tempo fra le due misure è di circa 20usec.

è dunque possibile fare in modo di sincronizzare queste due misure in maniera tale che avvengano nello stesso momento?

astrobeed

Premesso che c'è qualcosa che non mi quadra con la tua misura perché Arduino lavora a circa 10ksps sul ADC, ovvero almeno 100 us tra due letture consecutive sullo stesso canale, in tutti i casi la risposta alla tua domanda è no.
Arduino ha un solo ADC e può fare una sola misura per volta, i vari canali analogici sono tutti collegati tramite un multiplexer allo stesso ADC e, ovviamente, si possono utilizzare uno alla volta.
Campionando su più canali il tempo reale che passa tra due acquisizioni aumenta sia per i cicli macchina persi per effettuare il cambio sia in funzione del numero di canali impegnati, in pratica se con un solo canale hai una lettura ogni 100 us con due canali la ottieni, sul canale attivo, ogni 200 us, con tre canali ogni 300 us e così via.

aureliusss

http://arduino.cc/forum/index.php/topic,6549.0.html
in questo post spiega esattamente come aumentare la velocità dell'adc a discapito della risoluzione settando il prescaler a 16

astrobeed


in questo post spiega esattamente come aumentare la velocità dell'adc a discapito della risoluzione


Ok, però questo non cambia il fatto che di ADC ne hai solo uno e che puoi fare solo una misura per volta.

aureliusss

si, purtroppo ho capito, ma secondo te/voi non c'è nemmeno un qualche tipo di raffinatissimo codice o qualche soluzione hardware esterna ad arduino che permetta di aggirare questo ostacolo?

astrobeed


qualche soluzione hardware esterna ad arduino che permetta di aggirare questo ostacolo?


Utilizzare due ADC esterni oppure un micro con doppio ADC.

Go Up