lundi 15 janvier 2018

Busy Bee partie 5, boite à musique.

Lorsque j'étais enfant il y avait des boites à musique qui fonctionnaient avec un ressort. Un jour j'en ai démonté une pour voir comment c'était fait. Il y avait un cylindre avec des pointes de métal ainsi qu'un peigne en métal avec les dents de longueurs différentes. La longueur de chaque dent déterminait la fréquence de la note. Le ressort faisait tourner le cylindre et les pointes de métal du cylindre accrochaient les dents du peigne au passage. Les pointes étaient disposées pour jouer une mélodie en particulier.

Dans cet article je présente une version électronique de la boite à musique. Contrairement à la boite à musique mécanique celle-ci peu jouer plusieurs mélodies.

schématique

La boite à musique dans sa version minimale n'utilisait que les broches du port 1. Comme le port 0 était entièrement libre j'ai décidé d'y brancher 8 LEDS. Les LEDs branchées sur P0.0 à P0.4 servent à indiquer l'indice dans la table scale de la note qui est jouée. Les LEDS branchées sur P0.5 à P0.7 indique l'indice de la mélodie dans la table tunes_list. Les 2 groupes sont séparés par une LED rouge pour les distingués aisément. La LED rouge marque le bit le plus significatif du groupe.

Pour que le son soit moins saccadé j'ai ajouté un générateur d'enveloppe constitué du transistor Q1 et des résistances,R6,R10 et R12 ainsi que du condensateur C3. Au début de chaque note la sortie P1.1 est mise à 1 pendant 40 millisecondes. Pour permettre à C3 de se charger. Ensuite P1.1 est mise en haute impédance et C3 se décharge lentement à travers R10 et la base de Q1. l'effet produit est que le son monte en intensité en suivant la courbe de charge du condensateur et ensuite l'intensité diminue plus lentement par la décharge de C3. La montée sonore appelée attaque est déterminée par la constante de temps R6*C3 tandis que la descente est déterminée par la constante de temps C3*(R10+Rb)Rb est la résistance réfléchie par la base du transistor. Rb est approximativement G*R12, G étant le gain du transistor. Donc le transistor C3 se décharge beaucoup plus lentement qu'il ne se charge.

Les notes sont produites par le canal 0 du PCA0 dont la sortie est acheminée sur la broche P1.0.

Le bouton déclencheur est branché sur la broche P1.2. Chaque fois que le bouton est enfoncé une seule mélodie est jouée. Le bouton doit-être relâché et enfoncé à nouveau pour jouer la mélodie suivante.

Sur la broche P1.3 il y a un sélecteur de mode. On peut choisir entre le mode aléatoire et le mode séquentiel. Le mode doit-être sélectionné avant que l'appareil soit mis sous tension. Dans le mode séquentiel les mélodies sont jouées toujours dans le même ordre, celui où elles apparaîssent dans la table tunes_list. En mode aléatoire la mélodie est sélectionnée au hasard. En fait de hasard, il s'agit de lire le registre TL0 qui est la partie basse de la minuterie TIMER0 qui compte en boucle rapidement à la fréquence Fsys. Il est impossible de prévoir ou est rendu le compte dans TL0 au moment ou on presse le bouton d’où l'effet aléatoire.

Je n'ai pas fait de montage final de ce projet mais je pense que ça pourrait plaire à un jeune enfant. Sur le montage temporaire tel que vue dans la vidéo ci-bas je n'ai pas fait le montage au complet, je n'utilise qu'une alimentation de 3,3 volt et un petit ampli à transistors fait maison qui fonctionne à cette tension contrairement au LM386 qui nécessite un minimum de 4 volts.

Actuellement il y a 8 mélodies d'enregistrées dans la mémoire flash du MCU et il y a 1305 octets d'utilisés sur les 8Ko. Il est donc possible de rallonger cette liste. Il y a probablement assez d'espace pour une symphonie ;-)

Les mélodies que j'ai utilisées proviennent du site http://www.apprendrelaflute.com

Comme toujours l'ensemble du projet est sur github.

démo

3 commentaires:

  1. bonjour,
    Super idée ,
    j'ai déjà créé une musique avec ton tuto sur le PIC200,
    je ne peux malheureusement pas investir dans ce nouveau microcontrôleur aussi est-il possible d'utiliser ton générateur d'enveloppe pour obtenir le même effet à la sortie du PIC200 ?.
    D'autre part je souhaite réaliser un petit ampli 3 transistor en SMD à Mosfet peux tu me donner une idée de Schéma ?.
    Merci Mic

    RépondreEffacer
    Réponses
    1. Bien sur que c'est possible d'ajouter le même circuit d'enveloppe au projet carte de voeux musicale mais au niveau logiciel c'est un peu plus complexe car il n'y a pas de périphérique PWM sur le PIC10F200/2. Je vais réfléchir à cette nouvelle version dans les prochaines semaines et publier une nouvelle version sur ce blogue.

      Effacer
  2. Bonjour,
    Je désire ajouter l'enveloppe de sortie à transistor pour produire un son identique sur la carte de vœux musicale à PIC200 que tu avais mise en ligne en janvier 2013 est-ce possible ?

    Merci

    RépondreEffacer