Signal sinusoïdal

Bonsoir,

Je possède une arduino uno, avec laquelle j'utilise la fonction tone(), en sortie j'ai donc un signal carré avec une fréquence défini par le programme, cependant je souhaiterai avoir un signal sinusoïdal et/ou triangulaire en sortie, j'ai trouvé un montage simple " R-2R Resistor Ladder", qui permettrait cela: http://www.upsilonaudio.com/arduino-dac-r-2r-ladder/

Mais le souci, c'est que la fréquence n'est pas modifiable, et cela ne me convient pas,

Auriez vous un montage pas trop compliqué à réaliser permettant cela ?

Merci d'avance !

Le mieux est d'utiliser un DAC externe pilotable en I2C ou en SPI.

Le montage que tu propose est très simple et rien n'empêche de modifier la fréquence ce n'est qu'une question de programmation mais j'y vois un gros blème. Si c'est pour avoir un signal continu fixe il est super. Si c'est pour avoir un signal sinusoïdal ou triangulaire propre a fréquence relativement rapide tout sera dans la réalisation pratique et le choix des résistances --> minimum d'expérience en électronique analogique très fortement recommandé.

Le DAC externe fera parfaitement le travail sans prise de tête.

Juste un détail : tu dis que tu veux faire varier la fréquence mais qu'elle valeur ? Nous avons bien essayé la boule de cristal mais nous avons été déçu. Du coup nous avons écrit cela que je t'invite à lire : http://forum.arduino.cc/index.php?topic=324322.0

Effectivement, je n'ai pas précisé le domaine de fréquence, je souhaiterai avoir des fréquences comprises entre 20 Hz et 20 kHz.

Cela dans le but de faire quelques manipulations, et je ne souhaiterai pas investir dans un DAC externe.

Les signaux n'ont pas besoin d'être parfaitement sinusoïdal, mais ci possible j'aimerai m'en approcher.

je vois que tu as un signal carré en sortie de ton arduino, donc normalement, tu peux facilement faire varier la frequence. Pourquoi s'embeter, alors qu'avec de simple resistance et capa ( filtre passe bas) tu peux facilement créer convertisseur carré en sinusiodale..

|500x197

il faut prendre des resistance variable en fonction de la frequence que tu met en entrée, et le tour est joué.

Je pas de simulateur genre ISIS sous la main, donc, je ne peux pas simuler avec une frequence de 20Hz a 20Khz, mais avec ce gerne d'outil c'est super facile de vérifier la valeur des résistance, et capa.

Sur l'image, il y a une frequence de 10KHz, mais pour une frequence de 20Hz, ça sera pas les meme valeurs de resistance, ni pour 20KHz

Idem pour le signal triangulaire:

Du coup, rien de compliqué, entre le sinus et le triangle, il suffit de repiquer au bon endroit, bon faut juste faire attention à la suite ( de ce que tu veux mettre apres ton schema) il faut sans doute faire une adaptation d'impedance pour ne pas perturber le signal.

ici la frequence est de 10Khz d'entrée, avec une frequence de coupure a 10.610KHz ( fc=1/2piRC)

en gros il te faut une resistance variable de 795ohm ( 20Khz) et 795800 ohms pour 20Hz pour une capa de 10nF, mais possible de changer bien sur, car ça sera plus adapter.

pepe: Bonsoir

Sans convertisseur externe, l'Arduino Uno ne sait pas faire autre chose que du signal carré et du signal rectangulaire modulé (PWM).

À défaut de pouvoir produire un signal sinusoïdal, il peut générer un signal dont le bas du spectre est réduit à une seule fréquence. Un filtre analogique de fréquence fixe peut alors en extraire une sinusoïde d'amplitude constante.

Un timer peut être programmé afin de générer d'une part un signal PWM rapide à 62,5 kHz (résolution de 8 bits) et d'autre part une interruption matérielle permettant de modifier le rapport cyclique à chaque période. Les valeurs successives du rapport cyclique peuvent être calculées ou provenir d'une table pré-enregistrée. Il suffit ensuite de faire passer le signal de sortie dans un filtre passe-bas dont la fréquence de coupure est comprise entre 20 et 30 kHz.

J'allais proposer quelque chose d'équivalent. Cette bibliothèque est basée sur ce principe. Mozzi également, mais elle est plus complète, et donc plus délicate à décortiquer.

Si la fréquence n’est pas fixe mais doit varier dans la gamme [20 Hz;20kHz] faire un seul filtre passe bas pour extraire le fondamental du signal carré est impossible.
Pour 20 Hz il faut couper à moins de 30 Hz et pour 20kHz il faut couper à moins de 30 kHz !

Sauf a câbler quelques filtres et de les commuter en fonction de la fréquence désirée et de se contenter de “patatoïdes”.
Mais bonjour le câblage des filtres et des relais.
De plus pas question de faire aussi des signaux triangulaires comme demandé dans le premier message.

Cela dans le but de faire quelques manipulations, et je ne souhaiterai pas investir dans un DAC externe.

Sur Ebay tu trouve des PCF8591 qui font soit DAC 8bits soit ADC 8bits pour une somme comprise entre 1 et 2€.
Le seul investissement que tu fera sera dans le mois de livraison → attention ne tergiverse pas trop longtemps c’est bientôt le nouvel an chinois et plus personne ne bosse dans l’empire du soleil levant.

Tu veux des sinusoïdes pour des question d!esthetisme (pureté du son) ou pour des considérations électroniques ?

si vous investissez dans un AD9833 (moins de 5 euros sur eBay si vous avez de la patience) c'est un générateur d'onde programmable (Sinusoidale, triangulaire, carrée) qui se pilote en SPI et il y a même des librairies déjà faites comme celle ci

Bonjour, Le module proposé par J-M-L fonctionne bien mais pour l'utiliser correctement il faut lui adjoindre un filtre en sortie et un amplificateur (ampli OP vidéo). La réalisation du filtre n'est pas une mince affaire. ;)

icare: Bonjour, Le module proposé par J-M-L fonctionne bien mais pour l'utiliser correctement il faut lui adjoindre un filtre en sortie et un amplificateur (ampli OP vidéo). La réalisation du filtre n'est pas une mince affaire. ;)

oui et non - vous avez environ 0,6V d'amplitude pour une alimentation à 5V, donc certes c'est petit mais pas forcément minuscule. ça permet déjà de faire des choses

Sinon il existe des cartes toutes faites avec un ampli

Lucas___Lucas: Effectivement, je n'ai pas précisé le domaine de fréquence, je souhaiterai avoir des fréquences comprises entre 20 Hz et 20 kHz.

Cela dans le but de faire quelques manipulations, et je ne souhaiterai pas investir dans un DAC externe.

Les signaux n'ont pas besoin d'être parfaitement sinusoïdal, mais ci possible j'aimerai m'en approcher.

bonjour vu la gamme envisagée 20Hz 20KHz un DAC externe est surement pourtant une bonne solution voir par exemple du coté des MCP48xx/49xx

il y a de la ressource(libs) arduino dispo

Re, C'est vrai pepe entre un astable et un générateur DDS, il y a de quoi faire. ;)

Bonsoir,

Pour obtenir un signal sinuoidal avec un DAC PCF8591, je ne pense pas que l’on puisse atteindre une fréquence de 20 kHz pour le signal.

Serge .D