Pages: [1]   Go Down
Author Topic: sincronizzare analog pin  (Read 515 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 1
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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?
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9176
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9176
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Offline Offline
Full Member
***
Karma: 1
Posts: 160
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9176
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Utilizzare due ADC esterni oppure un micro con doppio ADC.
Logged

Pages: [1]   Go Up
Jump to: