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.
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.
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.
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.
Typon aux formats PDF, EPS et Bitmap 600 dpi