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:
- 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().
- Enregistrement effectué à l'aide d'une puce dataflash AT45DB161D et de sa librairie Arduino.
- 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...)
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.
Canada Goose outlet
shopping in Moncler Uk store can save more!
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.
Post new comment