Salve a tutti,
mi presento: sono un profano assoluto nel mondo dell'elettronica, che ne sa quanto ne può sapere uno studente all'ultimo anno di liceo scientifico con una buona preparazione in fisica, e qualche risicata conoscenza di c++ (per intenderci, "scrivi un programma che faccia il fattoriale di un numero n"), e quindi avrei bisogno di una piccola consulenza per quanto riguarda un progettino che avevo in mente. Detto in poche parole, volevo realizzare un programma in grado di raccogliere nel tempo i valori della tensione in un certo circuito e di visualizzarli in un grafico. Tralasciando per il momento la parte del grafico , volevo sapere se si puo' sfruttare una scheda Arduino Uno, (la funzione di una porta analogica, mi pare di capire , è in ultimissima analisi quella di raccogliere dati relativi a tensioni....) per registrare questi valori e per farli arrivare al pc, (magari in tempo reale). Supponiamo che io , da bravo ingegnere dilettante, mi costruisca un generatore di tensione alternata con una bobina e un magnete , che abbia insomma un pezzo di fil di ferro di resistenza complessiva R in cui scorre corrente alternata. Ammettiamo che il valore massimo della tensione sia inferiore a 5 V. Come posso far rilevare la tensione dalla scheda arduino?? Rischio di bruciare tutto o c'è la maniera di collegare il mio eventuale circuito alla porta analogica?
Ovviamente il circuito che ho preso ad esempio è un caso limite, se esistono soluzioni piu' raffinate per costruire questa sorta di oscilloscopio vi prego di segnalarmele, tenendo ben conto che del mio scarso livello. però posso seguirvi finché restiamo in termini di tensione, impedenza ecc...
Ciao!
Ma quello che cerchi è una soluzione di questo tipo?
void loop()
{
Serial.println( analogRead( Pin ) );
delay(100);
}
Ogni 100 millisecondi leggi un ingresso analogico e invii il valore grezzo letto dall'ADC di arduino (0-1023) sulla seriale. Starà poi al software su PC a preoccuparsi di fare la dovuta trasformazione e poi tracciarne il grafico.
In alternativa il metodo più "cool" è quello di affidarti ad un file di testo dove salvare i dati inviati da arduino e poi far leggere il file al software che ti disegnerà il grafico. In questo caso la conversione la dovresti far fare ad arduino che sulla seriale invia già il valore della tensione e non più il dato grezzo letto dall'ADC. Ti posso consigliare di usare:
- RealTerm che è un terminale seriale che ti consente di salvare quello che arriva sulla seriale in un file
- KST Plot è un programma che disegna grafici molto intuitivo, partendo da un file di testo in ingresso.
Creando un file di "appoggio" diventa anche abbastanza facile interfacciarsi con Matlab
Ovviamente questa cosa può anche essere fatta in tempo reale, un sw scrive sul file e uno lo legge contemporaneamente.
sì ma il mio dubbio è: come faccio a collegare il circuito alla scheda? mi devo procurare uno spinotto seriale e attaccarlo a un capo del circuito ?
Per quanto riguarda il grafico pensavo di stampare tutti i valori in un file di testo e da lì generare un grafico con gnuplot, non so se qualcuno lo ha presente... è un programmino opensource per generare grafici in 2D e 3D, questo non è un problema a regola.
per misurare la tensione penso che tu debba collegare un pin analogico al punto in cui vuoi conoscere la tensione...se il circuito, per esempio, è composto da 2 resistenze in serie, tu vuoi misurare la caduta di tensione sulla seconda resistenza allora colleghi il pin in mezzo alle due resistenze e ottieni come ti ha già detto Federico Vanzati un numero da 0 a 1023 che poi gestisci come vuoi....probabilmente, ma forse è una cavolata pazzesca, le masse di arduino e del circuito andranno collegate insieme così la tensione di riferimento è la stessa....
Allora..... per prima cosa devi sapere la tensione massima alla quale lavorerà il circuito,o insomma la massima tensione che può raggiungere il punto dove vuoi misurarla! Se è maggiore di 5V non puoi attaccarci l'arduino a dritto, sei costretto a fare un PARTITORE DI TENSIONE......ovvero 2 Resistenze in serie con valori che scegli in base alla tensione massima....Esempio pratico: suppponendo che la tensione che vuoi misurare arrivi fino a 12V non puoi attaccarci l'arduino se no bruci tutto...devi "scalare" la tensione in modo che massimo sia 5! il partitore di tensione usa questa formula V(r1) = (V/(R1+R2))*R1
cioè la V misurata ai capi di R1 è uguale alla tensione diviso la somma delle resistenze, per la resistenza di R1
quindi R1/(R1+R2) sarà il nostro fattore di scala.... quanto devo scalare 12 volt per portarlo a 5? di circa 2,5 (cioè moltiplicare per 1/2,5)
quindi R1/(r1+R2) deve fare 0,4 !Infatti 12*0,4 fa 4,8 VOLT...
il conto torna anche se usi resistenze da 4 e 6 ohm... MA PRATICAMENTE E' SBAGLIATO! per problemi di correnti devi usare resistenze nell'ordine dei kohm
un partitore come quello può essere realizzato con R1= 4 khom e R2 =6khom anche questo è teorico perchè in pratica le resistenze da 4 khom e 6khom non esistono...o approssimi (mi sembra che i valori siano 380, 420 poi 560 e 610...o simili..)oppure per fare una R da 4khm metti in serie una da 3,8 e una da 200ohm
Fatto questo che a parole è lungo, ma nella pratica facile non ti resta che scegliere l'ingresso analogico tipo l'Ao e con l'istruzione che ti ha detto federico stampi a video i valori della tensione! esistono degli script per matlab che raccattano di già i valori della serial print e ne fanno i grafici...se lo ritrovo te lo mando lo avevamo fatto un per i valori di un accelerometro
Ovviamente ricorda i vari errori che stai accumulando: il partitore di tensione non sarà mai perfetto perchè le resistenze + buone hanno tolleranza del 5% (quindi se lo vuoi perfetto devi aggiustarlo con un trimmer)
se fai 5 V (di ref) su 1024 valori avrai sempre 5mv che saltellano, ma 5mv è poca roba...quindi a questo devi sommarci una serie di rumori che raccatti (elettromagnetici, ecc)
ovviamente si, le masse devono essere collegate insieme! nel link che ti ho mandato R1 e R2 sono invertite come nomi!( se usi la massa come riferimento, consiglio mio: si, fai così ti giri meno le scatole)
Usando il potenziometro puoi fare in modo che V1 valga al massimo 5V a prescindere da quanto vale Vout.
ok ma per collegare il pin analogico della scheda al circuito ho bisogno di un qualche cavetto particolare giusto...? quali sono le specifiche, e dove si reperiscono eventualmente?
Mi pare che già qualcuno ha realizzato qualcosa di simile, anziche oscillo, FFT.
Il problema principale è la velocità di trasferimento board/pc, incluso il tempo per la trasformata di fourier e la visualizzazione, questo se deve davvero essere real-time. Io penso invece che sia meglio usare il pc come buffer il programma legge dal buffer e così sarà quasi real-time.
ok ma per collegare il pin analogico della scheda al circuito ho bisogno di un qualche cavetto particolare giusto...? quali sono le specifiche, e dove si reperiscono eventualmente?
Il cavo da usare dipende dalla frequenza che deve trasportare, per fare delle prove puoi usare un normale cavetto schermato, ma poi acquisterai una sonda oscilloscopica che costa una ventina di € a salire, che possiede già uno switch per selezionare l'attenuazione x1 o x10.
Ciao.
aspetta aspetta aspetta... scusami l'ignoranza, ma questi cavetti schermati sono già provvisti di attacco analogico? cioè io ho questo cavo: ha già uno spinotto di suo o devo fare qualche manovra strana per attaccarlo alla scheda?
PS: ma se per caso la tensione dovesse salire oltre i 5 V, brucio la scheda o semplicemente non me la misura?
PS2: buona pasqua!
stefanomazzei:
ok ma per collegare il pin analogico della scheda al circuito ho bisogno di un qualche cavetto particolare giusto...? quali sono le specifiche, e dove si reperiscono eventualmente?
Cavetto particolare?!? Ma a che frequenza devi lavorare?!?
mettiamo 2 hz
non capisco la questione riguardante i cavi particolari, con spinotto per ingresso analogico ecc...
per me va bene uno spezzone di cavo qualsiasi, poi se riscontri che ci sono dei disturbi allora procurati del cavo schermato.
temo che non sia ancora ben chiara la mia impreparazione:
d'accordo, abbiamo la Arduino uno (cioè, l'avrò tra qualche giorno) e abbiamo un cavo conduttore: come attacco il cavo in questione alla scheda?
esempio stupidissimo: se voglio attaccare un cavo ad una batteria per macchine, adopero i morsetti a coccodrillo giusto?? ci vuole un "attacco".
e per attaccare il cavo alla scheda?
la risposta è: guarda come sono fatti i connettori di Arduino ed adegua il tuo cavo!
In commercio puoi trovare anche la screwshield se ti piacciono di più i morsetti...effettivamente sono più pratici.
Oppure costruisciti una specie di adattatore!
e questi adattatori si reperiscono facilmente in commercio? o bisogna necessariamente prepararseli artigianalmente?
non sapendo com'è il tuo cavo e connettore è difficile aiutarti! Diciamo che non si è capito bene com'è composto il tuo "accrocchio"
Comunque per fare una misura di tensione prendi due fili da arduino, un GND e un ingresso analogico, questi due terminali concettualmente li usi come quelli di un multimetro, che ti sarà già capitato di usare ![]()
Quindi li puoi anche fissare uno allo 0V del tuo circuito e l'altro nel punto un cui vuoi prelevare la tensione.
interessante... supponiamo che il mio cavo sia un pezzo di rame nudo e crudo (supponiamo che ne conosca la resistenza per unità di lunghezza) , dovrei per caso smanettare con la saldatrice?? oppure non puo' essere a priori un pezzo di rame del genere perché rischiio di bruciare tutto?
beh il saldatore potrebbe servirti si...dipende
Beh se il tuo pezzo di rame nudo non rischia di toccare altri componenti, non credo ci siano rischi!
Nel caso isolalo, ad esempio con del nastro isolante
Per fare esperimenti si usano in genere i morsetti a coccodrillo:

Hanno una "pinza" ad ogni estremità: una la attacchi a dove devi rilevare la tensione, all'altra attacchi un pezzetto di filo che poi inserisci nel pin di arduino.
Quando poi sei sicuro che tutto funzioni, usi invece un semplice filo e lo saldi ad Arduino con un saldatore:

e un po' di stagno:

Non servono cavi particolari a frequenze fino a qualche centinaio di hertz (forse persino migliaio), i cavi coassiali (quelli dell'antenna) servono per frequenza di milioni di hertz.
Senno', se riesci a trovarli, sono utili questi fili fatti apposta per gli "esperimenti":
O senno' una scatolina di fili da usare con le "breadboard" (seconda figura):
hanno un nome particolare i fili da "esperimento" ... XD