Generare tensione sinusoidale con arduino

Ciao a tutti,

sono nuova nel mondo di arduino e mi chiedevo se qualcuno potesse darmi qualche consiglio utile.
Ho un sensore che voglio alimentare con una tensione AC 500mV @3kHz. Posso farlo con arduino? Se sì come sarebbe il codice per portare la tensione sui pin analogici? Finora l'ho solo fatto tramite labview e una scheda DAQ.

Grazie a tutti in anticipo! :slight_smile:
Stefania

Ciao,
prima di tutto, essendo il tuo primo post, ti consiglio di presentarti QUI e di leggere con attenzione il REGOLAMENTO ...

... poi ... NO, Arduino NON ha dei DAC all'interno, ma solo dei pin con cui puoi generare dei segnali PWM.

Potresti farlo con Arduino DUE (che ha dei veri DAC), ma .....

  1. Arduino DUE è molto poco supportato e pochissime librerie di terze parti sono state convertite per funzionarci.
  2. Molti pochi shield sono fatti per funzionare su Arduino DUE.
  3. La scheda funziona esclusivamente a 3.3V e molti dei suoi pin sono in grado di dare un decimo della corrente (max 3 mA) dei pin degli altri Arduino (max 40 mA). I rimanenti comunque non danno più di 15 mA.
  4. E' sicuramente un processore molto più complesso da utilizzare. Basta guardare le oltre 1400 pagine di cui è composto il datasheet
  5. Difficilmente vedrà ulteriori sviluppi dato che ... ora c'è da dedicarsi alle nuove schede.

... quindi te lo sconsiglio :roll_eyes:

Guglielmo

... un sistema per generare una pseudo-sinusoide ci sarebbe ... non è semplice, vedi se QUESTA lettura ti aiuta :wink:

Guglielmo

se invece vuoi divertirti puoi usare un dac "a resistenze pesate" come questo:
http://digilander.libero.it/desdeus/Trasmissione/Convertitori_DAC_Rpesate.htm

sfruttando n (piu n è alto più risoluzione avrai) uscite digitali di arduino e "studiando" la sequenza per creare la sinusoide...si lo so.. ci son vie più semplice (come sopra) ma è più divertente :wink: (quasi quasi lo faccio pure io...è interessante la cosa)

il guadago poi lo setti tramipe operazionela (ci son anche operazionali programmabili X1 x2 pga 205 e amici)

buon divertimento e docchi a labwiew :slight_smile:

Quanta corrente assorbe il sensore?

Infatti ho la sensazione che sia un sensore di GAS

Grazie a tutti.. il segnale in tensione mi serve per poter leggere variazioni di resistenza del sensore quando viene compresso (è uno studio in fase super sperimentale). Pensavo che potrei utilizzare il pwm settandone la frequenza e poi utilizzare un filtro passa basso per attenuarne le componenti ad alta frequenza e avere un'onda più "morbida". Infatti non mi serve una sinusoide precisissima, ma solo una tensione AC sull'ordine dei 500mV.. vi farò sapere :wink:

credo si possa come dici tu, ma non so quanto "semplice" sia la cosa è poco controllabile e per verificarla minimo ti serve un oscilloscopio. con un convertitore a r -resate l'uscita è il numero binario che dai (cosi hai un minimo di controllo).
poi però la domanda è... 500mvAc ok, ma a valor medio = 0?? se si la cosa cambia (anche se non credo!!)

Si.. il valore medio è 0; sto usando arduino due e pensavo di settare la frequenza anche se non so come fare per l'ampiezza dell'onda. Se non la settassi sarebbe compresa tra 0 e 5V? Scusate se faccio domande un po' ingarbugliate, mi sto approcciando ora ad arduino e sto trovando tante cose in rete ma sono molto confusa.

se il valo medio è zero, sei gia fregata (anche se Ardu2 non lo conosco bene) perche pww usa segnale 0-->5V quindi anche se sei bravissima a ricavare una sinusoide da ciò, avra come estremi (teorici) o-->+5V e non -5/+5V

EDIT:
non ce storia, la cosa piu semplice è unsare un DAC poi indifferente che "tecnica" usi

p.s. cominciare con Arduino 2 a fare esperimenti non è uan scelta saggia (secondo me..opinione mia)

Capisco, non si può avere un'uscita negativa in questo caso; ma allora c'è un modo per settarla tra 0 e 1 volt? non so perchè ma non trovo risposte in rete...

come gia detto prima, ti sconsiglio di usare la tecnica pwm per creare sinusoidi, è difficile (in più dovresti mettere dei feetback, sennò cambia il carico, cambia l'onda..è u n macello!!) Vai di DAC!

di più.. arduino 2 ha poca corrente in uscita (3ma mi sembra), se il tuo carico ne assorbe troppa, saluti arduino!!

poi una volta ottenuta la sinusoida, con dei banali operazionali, puoi amplificarla/attenuarla, aggiungerci un offset e via discorrendo.

Ok, quindi se ho capito bene dovrei dare in ingresso al dac a r pesate una sequena di bit che indicano la sequenza della mia forma d'onda...
questa sequenza sarà tanto più precisa quanti pin uso e nel mio sketch devo solo creare in out la serie di questi valori

si esattamente, questo dac è cosi (dove tutto 0 = 0V tutto 1= VMAx)
in più agendo sulla resistenza in reazione, puoi decidere la tua amplificazione (attenazione)

Vo= Vbit*(Rreazione/R) * ((2^n)-1)

Vbit =3.3v (nel tuo caso)

Per quanto riguarda lo zero medio basta alimentare il circuito di condizionamento con una tensione negativa e traslare il valore medio positivo in uscita del DAC sullo zero, ma non mi hai risposto alla domanda: quanta corrente consuma il sensore? E' importante per valutare la realizzazione dell'alimentazione negativa