Electronique > Réalisations > Production sonore > Orgue 003

Dernière mise à jour : 09/08/2009

Article non terminé, volontairement non référencé dans les sommaires du site - Fonctionne en partie


Présentation

Cet orgue électronique, de type polyphonique (on peut jouer plusieurs notes à la fois), est simple à réaliser, si on le compare à tout ce qu'il fallait mettre en oeuvre il y a quelques dizaines d'années pour obtenir la même chose. Sa stabilité en fréquence est excellente, puisque dépendante d'une base de temps à quartz. Si vous trouvez cette réalisation trop complexe, vous pouvez toujours vous tourner ves l'orgue 001 ou vers l'orgue 002, qui sont bien plus simples mais qui sont de type monodique (on ne peut jouer qu'une seule note à la fois).

Synoptique

Avant de présenter le schéma complet, il est sans doute bon de faire quelques rappels de base sur la façon d'élaborer des notes de musiques. Je vous invite donc à jeter un oeil à la page Notes de musique. Ceci lu, vous comprendrez probablement plus vite le schéma proposé par la suite.

Schéma

Nous y voici donc.

orgue_003

Génération des fréquences de base
Les douze notes de bases sont produites grâce à un PIC de type 18F2420 ou 18F2520, lequel fonctionne entièrement sur son horloge interne et ne nécessite aucun composant externe. L'horloge est fixée au maximum permis par ce circuit, c'est à dire 32 MHz (8 MHz x 4 avec PLL interne). Les tonalités sont disponibles sur les ports B et C du PIC, et aboutissent à un petit ampli BF au travers de résistances servant de sommation quand plusieures touches sont actionnées en même temps.

Section BF de puissance
L'amplitude des notes générées par le PIC étant de 5 Vcac, aucun problème de niveau, on en a même à revendre ! Le volume est ajustable grâce au potentiomètre RV1, l'ampli en lui-même est celui décrit à la page Ampli BF 003, avec quelques composants en moins.

Projet de départ

J'ai essayé au départ de bosser avec un 16F628A, croyant un peu naïvement que ce circuit pouvait fonctionner correctement, à une fréquence d'horloge de 20 MHz (5 MHz en interne). Malheureusement, l'ensemble des routines prenait tant de temps que l'écart entre les notes de sortie n'étaient pas du tout respectées. Chaque signal rectangulaire représentatif d'une note de base devait ensuite être appliqué à un compteur binaire qui assurait les divisions par deux nécessaires pour l'obtention des notes des octaves inférieures.

orgue_003_base
Premier schéma à base de 16F628A, qui ne fonctionnait pas

Logiciel

Code source et fichier binaire compilé (*.hex) dispo dans l'archive qui suit :
Orgue_003 - 18F2420 - Fonctionne (bons écarts entre notes) mais on ne peut pas monter très haut en fréquence
Orgue_003 - 18F2520 - Fonctionne (bons écarts entre notes) mais on ne peut pas monter très haut en fréquence
Si vous souhaitez recevoir par la poste un PIC préprogrammé et prêt à utiliser, merci de consulter la page PIC - Sources.

Prototype

Réalisé sur plaque d'expérimentation sans soudure, le circuit ne comportait que le PIC, associé à un petit HP avec une résistance série pour écouter ce que sortaient les diverses pattes du composant.

orgue_003_18f2520_proto_001a

Ca marche du premier coup !
Pensez donc ! Tout fonctionnait bien d'un point de vue simulation, mais une fois mis en pratique, aucun signal ne se manifestait sur l'ensemble des sorties du PIC. J'ai cherché un bon moment, soupçonnant tout de même un problème de configuration d'horloge. C'est la première fois en effet que je programmais un 18F2420 / 18F2520, et en prime je démarrais avec une configuration d'horloge interne avec PLL... Dans le doute, j'ai mis un quartz de 8 MHz entre les deux pinoches OSC1 et OSC2 et bingo, ça fonctionnait (mais vraiment à fréquence très grave) ! Après quelques recherches sur internet et (re)lecture du datasheet du PIC, j'ai découvert le problème : d'une part, j'avais configuré le PIC en HS-PLL, pensant que cela fonctionnait aussi bien avec quartz externe qu'avec oscillateur interne, et d'autre part j'avais omis des lignes spécifiant la fréquence d'oscillateur interne souhaitée et l'activation de la PLL x 4. Après correction (voir code source pour détail), tout allait parfaitement bien, et je sais maintenant comment faire pour utiliser un quartz de 12 MHz avec PLL x 4 pour passer d'une fréquence d'horloge de 32 MHz à 48 MHz... pour remonter un peu la fréquence des notes !

Peut mieux faire...
Un peu dur à croire, et pourtant : cet unique composant (certes programmable) sort les 12 notes de base, avec un écart tout à fait correct. Les seuls reproches que je puisse faire au circuit dans l'état actuel, sont les suivants :
- les notes produites sont à relativement basse fréquence, la mise en oeuvre de diviseurs par deux à la suite n'est jouable que pour un ou deux octaves.
- Le La n'est pas un La... Oui, c'est la simplicité même du circuit qui veut ça. Mais après tout, pourquoi donner des noms de note aux touches ? Quand j'étais môme, je jouais de petits airs de musique sur un harmonium chez mes grands parents, sans savoir que telle touche blanche était un Do ou un Sol... Par contre, il me semble nécessaire que les notes produites soient tout de même des "vraies" notes, avec les bons écarts, pour que l'oreille ne s'habitue pas avec des choses pas justes... Bref, je sais comment faire pour produire des notes justes avec un oscillateur externe, mais comme cela était contraire à mon souhait de départ (utiliser le minimum de composants), je n'ai pas poussé plus loin.

Circuit imprimé

Non réalisé, ça va de soi.