generatore onda sinusoidale amplificata con frequenza variabile

Buongiorno a tutti,
il progetto che devo sviluppare consta nella creazione di un'onda sinusoidale la cui frequenza possa essere variata da 80 a 400 Hz mediante potenziometro. Ho visto che Arduino due ha uscite analogiche, quindi pensavo di utilizzare quello. E' possibile fare cio'? Inoltre mi serve che l'onda raggiunga l'intensità si 12 volt picco picco, che cosa devo fare per passare dai 3,3 di arduino ai 12? grazie in anticipo

feeeed:
il progetto che devo sviluppare consta nella creazione di un'onda sinusoidale la cui frequenza possa essere variata da 80 a 400 Hz mediante potenziometro. Ho visto che Arduino due ha uscite analogiche, quindi pensavo di utilizzare quello.

E' possibile con quel range di frequenza utilizzando il DDS, però serve anche un filtro analogico da abbinare ad Arduino.
Dato che citi i 3.3V e parli di due uscite analogiche, DAC, immagino che stiamo parlando della DUE visto che la UNO e similari non hanno il DAC e lavorano a 5V
Qui trovi un progetto completo per implementare il DDS su Arduino, è per la UNO ma non dovrebbe essere troppo complicato farne il porting sulla DUE, meglio ancora se usi il DAC invece del pwm per sintetizzare la sinusoide così da ottenere un segnale con meno distorsione.
Per passare da 3.3V a 12V ti serve un amplificatore operazionale con guadagno di circa 3.6 ed eventuale offset sull'ingresso se il segnale deve essere centrato su i 6V.
Fatti pure una bella ricerca con google con argomento DDS, trovi molta documentazione della teoria che c'è dietro e su come implementarla su un micro.

feeeed:
Buongiorno a tutti,

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Grazie per le cosi' veloci risposte!
Sono ingegnere meccanico con qualche esame di elettronica alle spalle e buon livello di programmazione in C e simili, qualcosa di java e html..
@astrobeed : esatto parlavo di arduino due, avevo scritto che arduino due ha uscite analogiche XD comunque potendo ripiegare sull'uno ancora meglio! In verità il primo approccio al quale avevo pensato era proprio quello. Non riuscivo a capire una cosa pero'. diciamo che che io generi da arduino uno un'onda quadra a 100Hz, metto il filtro passa basso descritto nell'articolo che mi hai gentilmente postato, e prelevo ai capi del filtro la sinusoide. nel momento in cui pero' io giro il potenziometro e cambio la frequenza dell'onda quadra e la porto da 100 ad esempio a 400 Hz il passa basso (che era studiato nel nostro caso per i 100 Hz) dovrebbe tagliare anche l'armonica che voglio tenere no? Cioè generare un'onda quadra e poi usare un passa basso per tenere solo l'armonica principale va bene per una frequenza alla volta no?

feeeed:
Non riuscivo a capire una cosa pero'. diciamo che che io generi da arduino uno un'onda quadra a 100Hz, metto il filtro passa basso descritto nell'articolo che mi hai gentilmente postato, e prelevo ai capi del filtro la sinusoide. nel momento in cui pero' io giro il potenziometro e cambio la frequenza dell'onda quadra e la porto da 100 ad esempio a 400 Hz il passa basso (che era studiato nel nostro caso per i 100 Hz) dovrebbe tagliare anche l'armonica che voglio tenere no? Cioè generare un'onda quadra e poi usare un passa basso per tenere solo l'armonica principale va bene per una frequenza alla volta no?

Lo scopo del filtro è eliminare il residuo della frequenza di campionamento utilizzata per ricostruire la sinusoide, nel caso specifico 32 kHz, pertanto va bene fino a che la frequenza del segnale generato è inferiore a 2-3 kHz, per andare oltre senza troppa distorsione servirebbe un filtro attivo con una forte pendenza.
Se usi la DUE e il DAC, tenuto conto della velocità del processore e della bassa frequenza in uscita, puoi generare una buona sinusoide utilizzando solo la LUT con i valori di sin(x) per 90° inviandoli direttamente al DAC senza utilizzare il DDS, qui trovi la cosa già sviluppata a livello di sketch, in questo caso non serve il filtro anche se sarebbe sempre bene inserire un semplice passa basso per "addolcire" la scalettatura tipica dei DAC.

Aaaaah ora è tutto chiaro! Si effettua una conversione digitale analogica! Pensavo che le onde quadre venissero arrotondate con il passa basso! Perfetto! Ultima cosa: nell'articolo relativo ad arduino uno c'è lo
Schema del passa basso ma non si parla del convertitore DA
.. Quale conviene usare?

feeeed:
Ultima cosa: nell'articolo relativo ad arduino uno c'è lo
Schema del passa basso ma non si parla del convertitore DA
.. Quale conviene usare?

Nel caso della UNO non viene utilizzato un DAC, si usa una portante PWM modulata con la funzione seno, togliendo la portante con il filtro rimane solo il segnale modulante, la sinusoide.
Questa immagine illustra abbastanza bene la cosa, la traccia superiore è il segnale PWM modulato con la funzione seno senza nessun filtro, quello inferiore è quanto rimane tolta la portante.

Okey ho capito. Con questo scketch la frequenza della sinusoide è variabile? Si controlla dal potenziometro collegato ad A0?

Buongiorno a tutti! Chiedo scusa per l'insistenza, vorrei capire se mediante il metodo dds, gentilmente indicatomi da astrobeed, sia possibile variare la frequenza dell'onda sinusoidale mediante potenziometro. In particolare avrei bisogno di variare la frequenza da 80 a 400hz. Grazie mille

feeeed:
Buongiorno a tutti! Chiedo scusa per l'insistenza, vorrei capire se mediante il metodo dds, gentilmente indicatomi da astrobeed, sia possibile variare la frequenza dell'onda sinusoidale mediante potenziometro. In particolare avrei bisogno di variare la frequenza da 80 a 400hz. Grazie mille

Certo che puoi cambiare la frequenza tra 400 e 800 Hz, basta che leggi il potenziometro tramite ADC e imposti la relativa lettura come frequenza out previo adattamento dei valori tramite map().

Sisi certo, però in questo modo cambiò la frequenza delle onde quadre no? Il circuito che lascia solo la modulante (sinusoide) non modifica anche la frequenza? In altre parole per modificare la frequenza della sinusoide devo variare la frequenza delle quadre giusto?

feeeed:
Sisi certo, però in questo modo cambiò la frequenza delle onde quadre no? Il circuito che lascia solo la modulante (sinusoide) non modifica anche la frequenza? In altre parole per modificare la frequenza della sinusoide devo variare la frequenza delle quadre giusto?

La portante rimane costante, quello che cambia è la frequenza della modulazione.

ma tu vuoi usare un Arduino UNO o un Arduino DUE ?

Salve a tutti, oggi mi è arrivato il materiale elettronico, ho seguito passo passo la guida e al primo colpo ho la mia sinusoide ]:smiley: ]:smiley:
Ora mi trovo con una sinusoide ai capi del passa basso di intensità 2V picco picco.
devo riprodurre la stessa forma d'onda ma con 12 Vpp. Ho quindi comprato anche un amplificatore duale il TL081. Alimentando il circuito con 12V il guadagno è 12/2 = 6.. Chi puo' essere cosi' cortese da spiegarmi come devo fare il circuito per imporre tale guadagno? Dal datasheet del componente non ci capisco molto :drooling_face:

Buona sera ragazzi.
Anch'io sto facendo un progetto simile devo generare una sinusoide che vada da 1 hz a 1khz.
Astrobeed dicevi che per modificare la frequenza del segnale che devo ottenere basta che leggo il potenziometro tramite ADC e imposti la relativa lettura come frequenza out previo adattamento dei valori tramite map().
Ho modificato in vari modi il codice ma non ci riesco. Non capisco chi è il parametro che influenza la frequenza in uscita del segnale. Potreste dirmi come fare non riesco a capire dove sbaglio :sob:
Grazie mille.