Electronique > Réalisations > Production sonore > Orgue 005

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

Présentation

Encore un montage de fou, certains vont-ils penser... Voici en effet un orgue à base de microcontrôleur.

orgue_005_pcb_3d_a

Oui mais... avec un microcontrôleur qui n'a pour seule fonction à remplir que celle d'oscillateur. Pourquoi un microcontrôleur et non un simple UJT (exemple) ou un simple NE555 (exemple) ? Tout simplement pour varier les plaisirs et donner envie de détourner une fois de plus un composant de son chemin habituel.

Le schéma

Il faut bien reconnaitre qu'une fois isolés les touches et potentiomètres des notes (partie haute du schéma), il ne reste pas grand chose.

orgue_005

Principe de fonctionnement
Tous les microcontrôleurs ont besoin d'une horloge pour fonctionner. Cette horloge peut être de type interne ou externe, et être de type Quartz ou résonateur céramique, ou de type RC (association d'un condensateur et d'une résistance). Dans le cas qui nous concerne, nous choisissons une horloge externe de type RC, avec un condensateur fixe et avec une résistance variable... qui n'est autre que celle mise en service quand on appui sur un des poussoirs correspondant à une note de musique. L'horloge de base du PIC n'est donc pas "stable" et c'est tant mieux car c'est justement ce qu'on souhaite ici !

Le logiciel du PIC
Si on ne tient pas compte du code d'initialisation générale du PIC, tout le travail ne tient qu'en une seule ligne ! Le PIC est en effet utilisé en oscillateur tout bête, avec une sortie qui change d'état de façon régulière, à une fréquence qui dépend uniquement de l'horloge de base. Si l'horloge de base est de fréquence basse, alors, la sortie principale Out délivre une fréquence basse (note grave). Et si l'horloge de base est de fréquence élevée, alors, la sortie principale Out délivre une fréquence élevée (note aigue). Difficile de faire plus simple !

program electronique_orgue_005_12f675;

procedure Init;
begin
INTCON := 0;
OPTION_REG := %10000001;
CMCON := %00000111; // comparators OFF
ANSEL := %00100000; // analog disabled

TRISIO := %00101000; //

end;

// Main program
begin
Init;
while true do
begin
GPIO.0 := GPIO.0 xor 1;
end;
end.


En réalité, j'ai écrit un code légèrement plus "compliqué", pour disposer de trois signaux différents sur trois sorties différente, chacun étant espacé de une octave. Ce qui permet de basculer d'une octave à l'autre avec un simple inverseur. Ou de mélanger entre elles les trois sorties avec des réglages de niveaux indépendant, pour faire varier le timbre...

program electronique_orgue_005_12f675;


var
i, j: byte;
 

procedure Init;
begin
INTCON := 0;
OPTION_REG := %10000001;
CMCON := %00000111; // comparators OFF
ANSEL := %00100000; // analog disabled

TRISIO := %00101000; //

end;

// Main program
begin
Init;
while true do
begin

// sortie GP0 (la plus aigue)
GPIO.0 := GPIO.0 xor 1;

 // sortie GP1 : une octave en dessous de GP0
if i < 1 then

inc(i)
else
begin
i := 0;
GPIO.1 := GPIO.1 xor 1;
end;

// sortie GP2 : deux octaves en dessous de GP0 (la plus grave)
 if j < 3 then
inc(j)
else
begin
j := 0;
GPIO.2 := GPIO.2 xor 1;
end;
end;
end.


Plage de fonctionnement
La plage de fréquences couverte par cet orgue dépend de la valeur donnée aux potentiomètres. Pour ma part, j'ai fait mes tests avec des potentiomètres de 220 KO, qui permettaient une courverture sur cinq octaves. Cela peut sembler bien parce que ça fait beaucoup, mais en pratique le réglage de chaque note est assez délicat. J'ai donc préféré adopter des potentiomètres ajustables de 100 KO, qui permettent une couverture sur deux ou trois octaves, ce qui me semble finalement suffisant pour un jouet. Il est important que les potentiomètres soient d'assez bonne qualité, pour éviter les crachements. Des modèles à piste carbone suffisent mais évitez les composants de récupération qui ont séjournés plusieurs années à la poussière.

Logiciel PIC

Code source et fichier binaire compilé (*.hex) prêt à flasher.
Orgue 005 - PIC 12F675 (08/08/2009)

Le proto

Réalisé sur plaque d'expérimentation sans soudure.

orgue_005_proto_001a orgue_005_proto_001b

Essai avec un petit HP de 8 ohms en série avec une résistance de limitation de courant de 150 ohms pour ne pas faire trop de mal au PIC. Le son est faible, quoique parfait pour jouer la nuit quand les autres dorment et amplement suffisant pour se rendre compte que ça fonctionne. Ce proto m'a permis de remarquer deux choses :
- le système fonctionne même si on ne met pas le condensateur C1 (deuxième photo), avec une fréquence de sortie très aigue. Cela est lié aux capacités parasites du circuit d'expérimentation (quelques picofarads). En pratique, et avec le circuit imprimé proposé, il faut mettre ce condensateur C1, sa valeur peut être comprise entre 10 pF et 470 pF. Au début, j'avais mis par erreur un 220 nF au lieu d'un 220 pF, la sortie du PIC changeait d'état toutes les deux secondes environ, ce qui n'était pas très musical...
- on obtient des variations de fréquence en touchant les deux pattes du condensateur C1, ce qui moyennant deux punaises qui y sont raccordées, permet des petites variations sonore avec la main libre. Avec un peu d'habitude, on arrive à sortir des sons de style "piaillement d'oiseau".
Tiens, je me rend compte via les photos précédentes que j'ai oublié le condensateur de liaison C2 en série avec le HP, sur le proto. Ce condensateur ne serait-il donc pas indispensable ?

Le circuit imprimé

Réalisé en simple face.

orgue_005_pcb_composants

Typon aux formats PDF, EPS et Bitmap 600 dpi