Languages

Machine à enregistrer

Interface pour le programme test

En combinant les résultats des derniers jours, j'ai atteint aujourd'hui le premier gros défi du projet. Finalement, notre plan "B" a tenu la route: j'ai réussi à développer une petite "machine à enregistrer" à l'aide d'un petit circuit maison.

Le circuit comprend trois éléments:

  1. Entrée sonore composée d'un microphone de type "electret" et d'un amplificateur opérationnel ("op amp"). Le circuit original décrit dans ce billet de blogue utilisait un op amp LM386 qui n'amplifiait pas suffisamment le son. J'ai donc fait un nouveau circuit avec un op amp OPA344PA (voir schéma). Pour la boucle de gain, j'ai utilisé une résistance de 20k (R5) et une de 100k (R4) mais on peut modifier le gain en choisissant d'autres valeurs. Sur le Arduino, le son est lu avec un simple analogRead().
  2. Enregistrement effectué à l'aide d'une puce dataflash AT45DB161D et de sa librairie Arduino.
  3. Sortie sonore utilisant ma librairie audio pour le Arduino. Le son est joué à 8000Hz sur le PWM de la pin 3. La sortie est filtrée à l'aide d'un circuit RC qui filtre la fréquence du PWM (j'utilise R = 20 ohm et C = 3.3 uF, valide pour le mode "fast pwm" du Arduino). Un condensateur de 220uF est ajouté entre ça circuit et le speaker (je me souviens plus bien à quoi il sert en fait...)
  4. Résultat: je peux enregistrer et jouer des sons! Il y a seulement une petite différence dans la fréquence sonore: le son sortant est un peu plus grave que le son entrant. Ceci est dû au fait que la fréquence de lecture est plus rapide que la fréquence de sortie (8000Hz): il faut donc réajuster soit en effectuant moins de lectures, soit en augmentant la fréquence de sortie, soit en "sautant" des échantillons. Mais à cette étape, c'est plus un détail d'implantation logicielle.

En combinant les résultats des derniers jours, j'ai atteint aujourd'hui le premier gros défi du projet. Finalement, notre plan "B" a tenu la route: j'ai réussi à développer une petite "machine à enregistrer" à l'aide d'un petit circuit maison.

Fermer le haut-parleur quand on enregistre!

Je viens de passer les derniers 36h à travailler sur un problème vraiment étrange avec une version modifiée du programme original. Quand j'enregistrait et que je rejouais, ça allait, mais si je réenregistrait ensuite, le son enregistré grichait, on n'entendait presque rien.

J'ai finalement trouvé la source du problème: après le premier "playback" je laissais ma sortie PWM à une valeur non-nulle. Donc, le haut-parleur continuait de tirer du jus, ce qui affectait le circuit d'entrée (moins d'amplification).

La solution: toujours fermer le haut-parleur avant d'enregistrer.

Attention à l'amplification

J'ai eu des petits problèmes récemment parce que mes signaux était trop amplifiés. En particulier, le LM386 (amplificateur pour la sortie sonore) a tendance à devenir instable et à se mettre à produire des signaux très aigus et très forts. Il est très important de bypasser la pin 7 tel qu'indiqué dans la datasheet, avec un condensateur assez gros aussi près que possible de la pin.

Au niveau de l'amplificateur du microphone (OPA344PA) il semble qu'une amplification de 10x soit le maximum qu'on puisse atteindre si on ne veut pas avoir de problème (on peut le faire en utilisant une résistance de 10k entre le GND et la pin 2 et une 100k entre la pin 2 et la pin 4). Évidemment ça dépend de la source d'alimentation, du microphone, etc. alors il faut tester.

Au sujet du filtre RC

Au sujet du filtre RC, les valeurs que j'ai mentionnées sont erronées. J'ai discuté avec Sam qui a vérifié avec un oscilloscope et a trouvé d'autres valeurs: R = 47k, C = 0.1uF

Aussi à noter au sujet de la résistance et du condensateur.

  • une trop grosse résistance: signal moins fort
  • un trop gros condensateur: moins capable d'arranger les variations

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <h3> <h4> <h5> <h6>
  • Lines and paragraphs break automatically.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Fill in the blank
By submitting this form, you accept the Mollom privacy policy.