Segnale da Arduino UNO a DUE

Ciao a tutti,

il mio dubbio odierno é il seguente:

se volessi prendere dei segnali digitali provenienti da un Arduino UNO (segnali che sono da 0 a 5V) e metterli come segnali ANALOGICI nell´Arduino Due, come devo fare? Devo fare un partitore di tensione? Vi faccio questa domanda perché se non vado errato, l´Arduino DUE accetta in ingresso segnali fino a 3V3.

Grazie per l´aiuto, Fab.

Un partitore di tensione oppure questo --> http://www.robot-italy.com/it/logic-level-converter-8-channels-bidirectional.html (ha 8 canali)

L'Arduino UNO non ha un DAC quindi non può generare segnali analogici. Non capisco il motivo della presenza della UNO. Non ti basterebbe un traslatore di livelli? Non potresti semplicemente leggere i segnali digitali direttamente dalla DUE?

Con il PWM non posso generare segnali analogici? (Naturalmente filtrando lóutput).

Ho letto anche qui che é possibile: http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM

Mi sbaglio?

Per rispondere alla tua domanda : non puoi usare solo l´UNO? :

In pratica io ho un computer con Windows, questo computer ha installato una Virtual Machine con Ubuntu, sulla virtual machine ho installato Matlab e su Matlab ho installato il Matlab Package Support che é molto comodo per interfacciare Matlab all´arduino. Questo package non funziona ancora per la DUE, ma anche se funzionasse quello che vogliamo fare al momento é:

Chiamiamo Arduino UNO: A1 Arduino DUE: A2

Variare un Potenziometro collegato ad A1 a sua volta collegato a MATLAB tramite il Support Package Arduino di Matlab. In questo modo possiamo avere in real time i valori del potenziometro . Mandare dei valori tramite Matlab all´A1 che a sua volta dovrá inviarli al A2 . Sull´A2 sará stato fatto l´upload di un Controllore che a seconda di alcuni valori che riceve in ingresso ne dará alcuni in uscita all´A1 che a sua volta li ricomunicherá al Matlab in modo da avere la possibilitá di storage, plot etc...

Sull´A1 non posso metterci anche il controllore che attualmente é sul A2 perché per interfacciare l´A1 a Matlab c´é bisogno di uploadare uno sketch particolare ardiosrv.pde

Spero di essere stato chiaro.

Un segnale PWM non è un vero segnale analogico, è un segnale ad onda rettangolare con un duty cicle scelto dall'utente che simula un segnale analogico. Sul resto del discorso non mi esprimo perché non ho capito cosa vuoi fare con Matlab.

Si lo so che non é un vero e proprio segnale Analogico ma filtrandolo puó essere considerato come tale (naturalmente sono daccordo con te che non é la stessa cosa di un segnale che esce da un DAC).

Per quanto riguarda il partitore di Tensione , visto che li ho studiati solo in teoria e mai fatti in pratica. Vorrei sapere:

se ho come specifiche un Vin e un Vout le soluzioni del mio sistema sono infinite e quindi mi tocca fissare una resistenza e scegliere l´altra in accordo con questa scelta. Quello che peró vorrei sapere da voi é , visto che le soluzioni spesso sono dei numeri decimali e quindi difficili realizzare con delle resistenze reali, come faccio? Devo essere preciso anche sulla cifra decimale? oppure una resistenza di 6794 Ohm la posso approssimare a una di 7000 Ohm?

Grazie per l´aiuto.

@Leo : Matlab mi serve per 2 motivi: 1) In MATLAB/Simulink é implementato il modello matematico del Dielectric Elastomer che vogliamo controllare 2) Con Matlab mi risulta molto semplice interfacciarmi ad Arduino, acquisire le grandezze, fare dei plot etc.

f.schiano: ... Per quanto riguarda il partitore di Tensione , visto che li ho studiati solo in teoria e mai fatti in pratica. Vorrei sapere: se ho come specifiche un Vin e un Vout le soluzioni del mio sistema sono infinite e quindi mi tocca fissare una resistenza e scegliere l´altra in accordo con questa scelta. ...

No, aspetta, un partitore resistivo ti crea una proporzione fissa tra la tensione in ingresso e quella in uscita. facciamo il caso più semplice, due resistenze uguali ... il rapporto sarà il 50% quindi applicando in ingresso Vin in uscita avrai (Vin / 2) ... indipendentemente dallo specifico valore di Vin.

Ora, metti due resistenze, calcola il rapporto in modo che con 5v non superi in uscita i 3.3v (tanto conosci il rapporto e quindi potrai facilmente ricalcolare indietro il valore) ed il gioco è fatto ;)

Guglielmo

Sì, puoi trasformarlo in uno analogico.

Sul partitore di tensione devi trovare una coppia di resistenze tali che la tensione in uscita dal partitore sia al max 3,3V. Tu hai il livello max del segnale in ingresso, che è 5V dato che lo prelevi da un pin di Arduino, per cui con la formula del partitore, cioè: Vout=R2/(R2+R1)*Vin per cui poni Vin a 5V, scegli una R e l'altra te la calcoli.

Si. Ho fatto: R1= 8820 Ohm (8.2K+620 Ohm) R2= 16400 Ohm (2*8.2K)

Dopo aver saldato. I valori reali , calcolati con il multimetro sono: R1=8780 R2=16300

Che corrispondono a una Vout di 3.2496 V

Spero vada bene.

Puoi usare anche la coppia 1K8 e 3K3, che dà un rapporto di 0.64 per cui con 5V hai 3V25 circa se non ricordo male. Comunque se vuoi stare sicuro, metti anche uno zener da 3V3 almeno sai per certo che la tensione non passerà mai quel valore. E' una precauzione aggiuntiva, se il segnale in ingresso al partitore non passa i 5V sei a posto.

In foto si vede come ho fatto i collegamenti. Spero siano giusti !

Dove pensi che devo mettere uno Zener?
Grazie per l´aiuto!

Fab

photo (2).JPG

Sulla linea in ingresso al pin della Due, tra il nodo che tu chiami "analog in due" ed il pin stesso.

non dovrebbe andare tra il "pin Analog In DUE " e il pin "GND DUE"?

Come spiegato qui: http://it.wikipedia.org/wiki/Diodo_zener

Ma le masse sono, anzi devono essere, in comune, c'è solo un ground.

Si. Naturalmente.

Il diodo deve essere in antiparallelo con la R2. Questo intendo. Giusto?

Sì, esatto.

Grazie mille!