Utilisation des modules sonores
SOMO
Les modules sonores SOMO du fabricant
australien 4D-Systems
sont tout simplement géniaux, extraordinaires.
De la taille d'un timbre poste, ils sont capables de restituer
des plages (pistes) musicales contenues sur une carte micro-SD.
Les
pistes peuvent être dans un seul répertoire, ou dans des répertoires
séparés. Il peut y avoir 99 répertoires, chacun contenant 99 pistes !
Bien sur, les pistes musicales doivent être copiées sur la carte
mémoire avant usage, le SOMO n'ayant pas de possibilité d'écriture sur
la carte, c'est uniquement un lecteur.
Le format des pistes peut être le standard MP-3 mais aussi en
format WAV, de qualité CD si on le souhaite.
Ces modules sont bien sur stéréo, et donnent un son tout à
fait incroyable.
La première version de ces modules était seulement mono, et
ils
utilisaient un format de pistes musicales assez dégradé après
conversion dans un format de fichiers spécifiques.
Ils ont été
utilisés dans le simulateur radio sous
l'occupation,
construction réalisée en 2012.
Mais cette seconde version, le SOMO-II, est de bien meilleure
qualité et a été utilisée avec succès dans la réalisation d'un sélecteur audio /
zoneur ainsi que dans ces réalisations-ci (pas encore en ligne,
cela
viendra). En octobre 2020 une autre réalisation s'est encore ajoutée,
toujours à base de ce module : la refonte du commutateur audio pour
show-room hi-fi.
Avec ces différentes réalisations, il a été possible
d'acquérir une certaine expérience avec ces modules, et sur cette page
vous trouverez des conseils pratiques et astuces d'utilisation.
Le site de 4D-Systems
donne de l'information sur ces modules
et la dernière version de la datasheet peut y être téléchargée, elle
sera utile pour le
brochage de ce composant et les informations pratiques et mises à jour.
Une copie de la datasheet (révision 1.4) utilisée pour les réalisations
décrites sur ce site est disponible sur ce site en téléchargement ici
Clic sur les
images pour agrandir.
|
Ci-contre la représentation schématique d'un de ces
modules, avec les quelques broches qui vont être utilisées pour les
explications.
Tout d'abord, il faut alimenter ces modules.
Le fabricant donne une gamme de tensions d'alimentation
comprise entre 3,3V et 5V.
Comme la logique de commande des montages réalisés est
en 5V, le choix a été fait d'une tension intermédiaire pour le module,
afin de limiter la dissipation du régulateur intégré.
Mais cette tension de 4,3V est compatible sans probème
avec de la
logique sous 5V, et cela va être vu ci-dessous.
Toutefois cette alimentation doit être découplée avec
des condensateurs montés au plus près du module. Il est fait usage de
deux condensateurs en parallèle : un 470µF électrolytique, et un 47nF
céramique.
Les deux broches de masse du SOMO doivent être
connectées ensemble.
|
|
Les tensions d'alimentations peuvent être générées très
simplement.
Le module SOMO gagne a être alimenté par un régulateur
séparé, celui-ci ne chauffe absolument pas vu la faible consommation du
module. C'est le LM317 du schéma
ci-contre, et avec les valeurs des deux résistances mentionnées, sa
sortie vaut 4,3V.
La logique de commande aura son régulateur de tension
séparé, ici un 7805 pour exemple possible.
|
|
Le SOMO étant un module sonore, il est logique qu'on
puisse y connecter de quoi entendre ce qui en sort...
Le module possède une sortie pour haut-parleur (broches
SPK+ et SPK-), en connexion directe. Ici, bien sur, la restitution est
mono mais cela permet une pré-écoute. Le module est capable de sortir
une puissance de 3W d'après le fabricant. On peut connecter un
haut-parleur dont l'impédance est comprise entre 4 et 32Ω.
Les
broches DAC_L et DAC_R permettent la connexion des
sorties audio gauche (L) et droite (R) à un amplificateur audio ou à un
casque (mais dont l'impédance nominale n'est pas précisée).
Ces sorties devront être préamplifiées et filtrées, voir
en fin de cette page...
Malheureusement, la notice du module ne précise pas les
niveaux de sortie possibles, ni l'impédance de ces sorties. Il
faudra expérimenter pour obtenir le meilleur signal possible.
Mais voyons d'abord comment commander le module.
|
|
Maintenant que le module est alimenté et connecté à un
haut-parleur ou un système audio, il est temps de le faire fonctionner !
Ces modules peuvent être pilotés par un microcontrôleur
via une ligne
série, ou par des boutons poussoirs + résistances. C'est ce second mode
qui va être utilisé
ici,
pour éviter l'usage d'un processeur et avoir une commande très simple.
Le module possède deux entrées pour cela : ADKEY1 et
ADKEY2. Ces deux entrées permettent une commande du module par
insertion de résistances de différentes valeurs entre ces entrées et la
masse. Chaque valeur de résistance correspond à une commande, voir
ci-contre l'extrait de la datasheet.
Il y a également deux entrées nommées IO1 et IO2, elles
ne fonctionnent pas par résistances. Elles permettent une commande
directe du volume, ou encore des fonctions "next"
et "pre" pour changer de pistes musicales lors de la lecture.
|
|
Le volume (tant du haut parleur que des sorties audio
stéréo) peut donc être commandé par deux entrées directes, sans
résistances.
Ci-contre la commande VOL+ (IO1) est connectée sur un
bouton poussoir.
Mais cette entrée peut aussi être utilisée comme
commande NEXT, alors comment faire la différence entre les deux
fonctions ?
Une courte impulsion sur le bouton poussoir réalise la
fonction NEXT (bien sur si le module est en lecture).
Une longue impulsion fait augmenter graduellement le
volume, relâcher le bouton stoppe la fonction.
Le fonctionnement est bien sur identique sur l'entrée
VOL-/PRE (IO2).
|
|
Mais doit-on se limiter à des boutons poussoirs pour la
commande ?
Pour les entrées sans résistances IO1 et IO2, on peut
simplement les commander en remplaçant le poussoir par un transistor
NPN connecté comme ci-contre.
Ce transistor, utilisé en commutation, peut être piloté
par une logique quelconque, via une résistance de base de quelques kΩ.
Le type de transistor est sans importance, un
"universel" tel le BC547, 2N2222, 2SC945... ou autre petit signaux
silicium,
conviendra.
|
|
Le SOMO possède une sortie "tout ou rien" indiquant
qu'il est actif (lecture d'une piste musicale).
Cette sortie passe à un niveau logique bas quand le SOMO
est actif.
Dès lors il est possible d'y connecter une LED pour
indication de l'état actif, via un transistor PNP. Cette LED
s'allumera quand le module est en lecture.
Une petite LED rouge est également présente sur le
module et fonctionne de la même façon, s'allumant quand le module est
actif.
|
|
Si cette sortie est destinée à piloter quelque chose
dans la logique de commande, alors il est possible de l'interfacer
directement.
Une porte d'un 4093 (NAND à trigger de Schmitt) convient
très bien pour cela, et donnera un signal bien net en sortie : ce
signal passe à l'état 1 quand le module est actif.
Toutefois, avec tout ce qui vient d'être expliqué, le
module n'est pas encore démarré !
Cela vient...
|
|
Voila comment mettre en marche et lire les pistes
musicales, les mettre en pause ou stopper la lecture.
L'entrée ADKEY1 est utilisée ici, ainsi que deux boutons
poussoirs et deux résistances. Chaque poussoir sélectionne une
résistance qui se retrouve entre l'entrée et la masse.
Pour démarer la lecture, c'est une résistance de 220kΩ
qui est utilisée. Une impulsion sur S1 démarre la lecture. Une seconde
impulsion mettra le lecteur en pause. Une nouvelle impulsion
redémarrera la lecture là ou elle avait été arrêtée.
Une impulsion sur S2 stoppera la lecture en cours, avec
une résistance de 100kΩ. Pour
redémarrer, il faudra appuyer à nouveau sur S1 "play" et la lecture de
la piste reprendra au début de celle-ci.
La fonction "play" lance la lecture des pistes présentes
dans le répertoire principal de la carte mémoire, l'ordre dépendant de
leur numérotation. Les pistes présentes dans des sous-répertoires de la
carte mémoire ne sont
pas lues par cette fonction.
|
D'expérience, et pour éviter des dysfonctionnements dans
les ordres de lecture, il est préférable de nommer les pistes musicales
uniquement avec des numéros plutôt qu'avec des noms de fichiers
comportant des
caractères alphabétiques.
Avec des numéros, l'ordre de lecture est
certain !
Cela vaut aussi pour les noms de répertoires, ne mettre
que des numéros : 01, 02, 03, etc...
|
|
La fonction "play" décrite ci-dessus ne permet pas
d'adresser directement des plages musicales, excepté la première
(numériquement parlant du nom de fichier) du répertoire principal de la
carte mémoire. Il est alors possible de passer aux pistes suivantes
avec la fonction "next".
L'entrée de commande ADKEY2 permet une sélection directe
de 8 plages musicales, toujours par commutation de résistances.
Il faut 7 résistances de valeurs bien déterminées, la 8e
plage se choisissant en mettant directement l'entrée à la masse. Voir
schéma ci-contre.
Une impulsion sur un des 8 boutons S1 à S8 permet de
lancer la lecture d'une des 8 plages. Le bouton S9, ou le transistor
T1,
permettent de stopper la lecture via ADKEY1, comme indiqué ci-dessus.
|
Ici aussi, pour que cela fonctionne parfaitement, les
pistes musicales doivent se trouver dans
des répertoires bien spécifiques de la carte mémoire : les 5 premières
dans le répertoire
nommé 01, la 6e dans le répertoire nommé 02, la 7e dans le répertoire
nommé 03 et la 8e dans le répertoire nommé 04.
On doit donc trouver 5 fichiers nommés 01, 02, 03, 04,
05 dans le répertoire nommé
01. Ensuite, un fichier nommé 01 dans le
répertoire 02; pareil dans les répertoires 03 et 04.
A noter que les 8 boutons poussoirs utilisés ici (S1 à
S8) ne peuvent pas être remplacés par des transistors NPN, comme les
commandes "play" ou "stop" sur ADKEY1.
En dessous de valeurs de
résistances de 100kΩ sur ADKEY1 ou 2, cela fonctionne fort mal avec des
transistors
bipolaires. L'essai avec des FET n'a pas été réalisé, possible que cela
fonctionne !
Mais il est bien sur possible toutefois de sélectionner
les pistes
musicales par autre chose que des boutons poussoirs, explication
ci-dessous...
|
|
Si la sélection des pistes musicales fonctionne mal
(voire
pas du tout) avec des transistors bipolaires, par contre cela marche
tès bien avec
des commutateurs analogiques C-MOS ! Les types 4016, 4066, 4051 et 4052
se prêtent très bien à cet usage.
Ci-contre c'est un 4051 qui est utilisé : c'est un
commutateur à 8 entrées et une sortie commune. La sélection de l'entrée
commutée vers la sortie se fait par 3 bits de commande, représentés par
A, B et C sur le schéma. La valeur binaire sur ces 3 entrées (A étant
le bit de poids le plus faible) détermine l'entrée analogique qui sera
commutée sur la sortie (table de vérité ci-dessous).
Toutefois, cette commutation n'aura lieu que si
l'entrée INH est au niveau logique 0. Si cette entrée est à 1, aucune
des 8 entrées n'est commutée sur la sortie.
|
Les 7 résistances de sélection de pistes sont bien sur
connectées aux entrées du 4051 (la 8e entrée étant connectée à la
masse).
Et pour que cela fonctionne
parfaitement, la liaison commune de toutes les résistances vers la
masse doit revenir
"physiquement" à la connexion de masse du SOMO, tel que dessiné
sur le schéma ci-dessus. Prendre cette masse "n'importe ou" sur le
circuit peut donner des fonctionnements erratiques dans la sélection
des pistes.
De même, tenir compte que les entrées ADKEY 1 et 2 sont
à haute impédance. Les connexions vers ces entrées doivent être
courtes et nettes.
Et attention sur le circuit imprimé, certains "résidus" de
soudure (résine) présents entre pistes allant à ces entrées
peuvent créer des phénomènes
bizarres comme bloquer le fonctionnement du SOMO, ou encore le faire
démarrer tout seul !
La sortie commune du 4051 est connectée sur l'entrée
ADKEY2.
Une impulsion sur le bouton S1 commutera donc en sortie
du 4051 la résistance choisie par les entrées A, B et C du 4051.
Ceci
permet d'avoir une sélection par signaux binaires de la piste à lire.
Table de vérité :
C
|
B |
A
|
Piste lue |
0 |
0 |
0 |
Piste 01 du répertoire 01 |
0
|
0 |
1
|
Piste 02 du répertoire 01 |
0 |
1
|
0 |
Piste 03 du répertoire 01 |
0 |
1
|
1
|
Piste 04 du répertoire 01 |
1
|
0 |
0 |
Piste 05 du répertoire 01 |
1
|
0 |
1
|
Piste 01 du répertoire 02 |
1
|
1
|
0 |
Piste 01 du répertoire 03 |
1
|
1
|
1
|
Piste 01 du répertoire 04 |
Ici aussi, le bouton S9, ou le transistor
T1,
permettent de stopper la lecture via ADKEY1, comme indiqué ci-dessus.
Bien sur, par les entrées ADKEY il n'est
possible de sélectionner qu'un nombre limité de pistes musicales. Pour
pourvoir choisir n'importe quelle piste dans n'importe quel
répertoire (99 répertoires de 99 pistes possible), il faut alors
utiliser un microprocesseur et envoyer les commandes par l'interface
série. Voir la datasheet du SOMO pour plus d'explications.
Ici, il est choisi de conserver des commandes sans
processeur et
donc la sélection sera limitée à quelques pistes, pour des
applications simples...
|
|
Une chose dont il faut tenir compte, et qui n'a pas
encore été évoquée ici, c'est le comportement du SOMO lors de la mise
sous tension (démarrage à froid).
En effet, le SOMO ne pend pas tout de suite en compte
les commandes par boutons à la mise sous tension.
De même, après une mise sous tension, le niveau de
sortie audio est très faible.
Il est donc intéressant de prévoir un circuit
d'initialisation.
Ci-contre, c'est la porte NAND IC1C qui réalise cette
fonction. A la mise sous tension, le condensateur C1 est déchargé et
donc place les entrées de la porte à zéro, la sortie étant à
1. Cela active le transistor T2 qui va faire augmenter le volume
pendant cette phase d'initialisation. Le condensateur C1 se charge à
travers R11 et quand la tension à ses bornes est suffisante, la porte
NAND bascule. Sa sortie passe à zéro, mettant T2 à l'état bloqué et
stoppant la commande sur VOL+ du SOMO.
|
|
Ci-contre un peu plus de logique de commande...
Le circuit permet de piloter le SOMO non plus
par une impulsion, mais par un interrupteur. Interrupteur fermé =
lecture de la plage choisie aec les entrées binaires. Interrupteur
ouvert = arrêt de la lecture.
Les portes IC1B et IC3C bloquent les commandes pendant
la phase d'inhibition à la mise sous tension (signal provenant de la
porte IC1D).
|
A la fermeture de l'interrupteur S1, le signal en sortie
de IC3B passe à 1, et charge C2 à travers R9. Ceci transmet une
impulsion vers la porte IC1B, passant un bref instant l'entrée INH du
4051 à 0, donnant ainsi l'ordre de démarrage au SOMO (choix de la plage
par le 4051 comme expliqué ci dessus). La durée de l'impulsion dépend
des valeurs de C2 et R9.
Au même moment (fermeture S1) la sortie de IC3A passe à 0, C3 se
décharge dans R13 sans rien changer à l'état de IC3C.
Tant que cet interrupteur reste fermé il ne se passe
rien d'autre, la lecture continue. Si la piste musicale arrive à la
fin, la lecture stoppe par le SOMO et rien d'autre ne se passe.
A l'ouverture de S1, la sortie de IC3A passe à 1, et
charge C3 à travers R13. Ceci transmet une impulsion vers la porte IC3C
dont la sortie va passer à 0. Ceci transmet (via IC1A) cette impulsion
au transistor T1, qui va stopper la lecture sur le SOMO. La durée de
cette impulsion dépend des valeurs de C3 et R13.
Au même moment (ouverture de S1) la sortie de IC3B passe à 0, c2 se
décharge dans R9 sans rien changer à l'état de IC1B.
Tant que cet interrupteur restera ouvert, il ne se
passera rien d'autre, la lecture restera inactive. Si S1 est à nouveau
fermé, le SOMO recevra l'impulsion de démarrage via le 4051.
Cette circuiterie permet de piloter le SOMO par une
fonction interrupteur, par exemple pour lancer une piste sonore par la
détection d'une présence à proximité (détecteur de présence, barrière
lumineuse,...) et de la stopper une fois l'entrée désactivée.
Cette
circuiterie est utilisée dans le sélecteur
/ zoneur audio, combinée à d'autres IC pour avoir 8 entrées de
sélection distinctes.
Bien sur, à partir des explications données ci-dessus,
il est possible d'imaginer d'autres circuits. Ceci est juste une
explication des possibilités de faire des commandes simples d'un module
SOMO.
Dans ces réalisations-ci, par exemple, il est possible
de choisir un mode de fonctionnement de lecture par une entrée
digitale, ou bien un mode de lecture continue : quand la piste
est terminée, la logique relance la fonction "start"...
|
|
Maintenant, regardons les signaux audio analogiques...
Ci-contre, le signal de sortie du SOMO est affiché sur
la
trace du
dessus. La photo a été prise pendant l'exécution d'un solo de
contrebasse sur la
piste en cours de lecture...
La trace est "épaisse" et de fait, un signal haute
fréquence (environ 200kHz) est superposé au signal basse fréquence.
La trace du dessous montre le même signal (déphasé)
après un filtre passe-bas.
|
Bien que théoriquement pas audible, ce signal HF
résiduel provoque "quelque chose" à l'audition.
Audible même avec mes
oreilles qui ont 54 ans (juillet 2020)...
Est-ce une détection dans les circuits du
préamplificateur ou de l'ampli final ? Pas trouvé d'explication
théorique convaincante...
Toujours est-il qu'il vaut mieux éliminer ce signal
parasite, afin de ne pas perturber d'une ou l'autre manière les
circuits analogiques qui sont en
amont.
|
|
Un circuit d'amplification / tampon du signal de sortie
du SOMO, suivi
d'un filtre passe bas à grande pente (18 ou 24dB/octave) est à prévoir.
Voici celui qui a été installé au départ dans le
sélecteur /
zoneur audio. Gain élevé possible (changer la valeur de R2), à ajuster
en fonction des niveaux d'enregistrement et de sortie du SOMO.
|
Il est difficile de calculer au plus juste les circuits
destinés
à être connectés en sortie du module, puisque l'impédance des sorties
DAC_L et DAC_R n'est pas donnée par le fabricant du module.
C'est
pourquoi il est fait usage de résistances de 22kΩ, afin d'avoir une
impédance d'entrée suffisament élevée pour ne pas provoquer une
distorsion par surcharge des sorties du SOMO. A noter que la première
version du montage utilisait une résistance d'entrée de 2,2kΩ et ce
n'était pas idéal (perte de niveau du signal).
Il
faut aussi trouver le bon copromis entre le niveau de
sortie (déterminé par la commande VOL+ à l'initialisation, voir plus
haut dans cette page) et l'amplification du signal. Dans le circuit
ci-dessus, le gain peut être ajusté en changeant R2. Avec les valeurs
du schéma le gain est unitaire, c'est un simple étage tampon inverseur
: le filtre qui suit et également inverseur.
En tout état de
cause, il vaut mieux opter pour un signal à niveau assez élevé en
sortie
du SOMO, pour améliorer le rapport signal / bruit.
En effet, le signal
HF parasite est de niveau constant quel que soit le niveau de sortie
BF.
|
|
Voici un autre circuit de filtre, avec un LF356, conçu
par l'ami Paul.
L'avantage de celui-ci est l'usage d'un ampli
opérationnel avec entrée à paire différentielle JFET. Et aussi sa
pente, 18dB/octave !
Ce schéma a été utilisé dans une autre réalisation (pas
encore en ligne) et
toujours à base d'un
SOMO : il fonctionne très bien et est meilleur point de vue son que le
schéma à NE5532.
|
Enfin, il faut veiller à ne pas enregistrer les
pistes audio avec un trop fort niveau sonore , au besoin retravailler
ces niveaux sur les fichiers avec un logiciel de traitement audio (par
exemple l'excellent Audacity) avant de les copier sur la carte mémoire.
Le convertisseur digital / analogique
intégré au SOMO n'apprécie pas du tout les haut niveaux sonores sur les
pistes audio (aussi bien en format MP3 qu'en WAV).
Voilà qui clôture cette page d'informations générales
sur l'usage de ces modules. Sans doute existe-t-il plein d'autres
possibilités, mais ici c'est l'usage qui en est fait dans les
réalisations précédentes.
Le pilotage d'un tel module par un micro-processeur ou
micro-contrôleur permet bien sur bien plus de possibilités. Mais,
encore
une fois, il s'agit ici de donner quelques informations de base pour un
usage simple, avec des composants très courants et ne nécessitant pas
de programmation. Les schémas donnés sur cette page fonctionnent au
premier coup...
Si, après la lecture de cette page, vous avez d'autres
suggestions ou propositions, ou des expériences différentes avec ces
modules, il est toujours loisible de les partager
par mail !
|
Retour
page réalisations
Retour page
accueil
|