Bonjour,
Voici un petit tutorial pour transformer un vieux HDD (Hard Drive Disc) en métronome.
Attention : ce tuto n'est surement pas parfait, ni la technique ni le code, c'est juste le résumé d'un de mes bricolage. Le résultat peut aussi dépendre du modèle du disque dur. Il est aussi incomplet, en quelque sorte, puisque je ne parlerais pas de l'interface utilisateur.
1/ Préparation du disque dur
Il vous faut un vieux disque dur HDD (avec des disque, contrairement au SSD qui n'en a pas), dans mon cas, s'est un Western Digital WD400 de 2004.
a) Démonter le couvercle du disque
b) Éventuellement, démonter l'aimant supérieur pour :
- Retirer les têtes de lectures et d'écriture qui sont au bout de l'aiguille (ATTENTION à ne pas arracher tout la nappe souple, nous en aurons besoin par la suite !).
- Démonter la/les butés de fin de course de l'aiguille.
c) Mettre absolument une vis a l'extrémité de l'axe de fixation de l'aiguille (vous l'avez retirer pour ouvrir le boiter).
d) Retirer le circuit de commande du disque. Vous pouvez le garder si vous voulez le réinstaller après modification du disque (il va falloir le modifier).
e) Avec un multimètre, tester les connexion entre la bobine sur l'aiguille et le bornier de connexion (vous pouvez le démonter pour que ça soit plus simple).
f) Puis soudez deux fils a partir du bornier (ne faites pas comme moi, mettez des fil de couleur différente, ça évite de se tromper de sens une fois sur deux...).
g) Si vous voulez replacer le circuit de commande, faites un trous dedans afin de laisser passer les fils.
2/ Câblage
Dans mon cas, j'utilise :
- Une carte Arduino UNO
- Un pont en H L298N sur circuit
- Une alimentation ATX récupérer sur un vieux PC
Voici le schéma :
Attention : la bobine de l'aiguille est alimentée en 5V, et dans mon cas, elle a une résistance de 10.4 Ω. Donc d'après la loi d'Ohm (U=RxI), elle consomme environ 500mA ! Ca n'est pas négligeable, et il faut bien en tenir compte dans le choix de l'alimentation pour ne pas tout cramer !
Attention aussi a bien mette le pont en H et la carte Arduino sur le même GND !
Dans mon cas, le pont en H (L298N) ne chauffe pas : pas besoin d'un ventilateur.
Vous pouvez essayer de brancher la bobine de l'aiguille directement sur l'alimentation. On constate que :
- dans un sens, l'aiguille se colle du coté du moteur
- dans l'autres, elle va du coté de la nappe de connexion
3/ Principe
Le principe est simple : on va frapper le moteur (ou sont axe) avec l'aiguille du disque dur afin de produire un son, et donc de battre la mesure.
Pour ça, nous allons :
- Mettre l'aiguille du coté de la nappe de connexion pour la "ranger"
- L'envoyer (par un changement de polarité) vers le moteur qu'elle va frapper provocant un sons
- La remettre du coté de la nappe et attendre le temps suivant
Donc sa donne :
Le trait rouge représente la position de l'aiguille : en bas, du coté de la nappe et en haut du coté du moteur.
Les traits verts marquent le temps.
Nous constatons que sur le 1er temps, l'aiguille va rester moins longtemps du coté du moteur car si elle le frape juste, le son sera plus aigu et aura plus de résonance que si l'aiguille reste coller au moteur quelque milliseconde de plus.
Donc le 1er temps est "aigu" et les 3 autres sont "grave".
Attention, s'est le cas sur mon disque dur, mais sa ne marchera peut être pas sur tout les modèles !
Pour avoir ce résultat, il faut envoyer un signal qui ressemblerais a ça :
En bleu, la tension au borne de la bobine.
4/ Le code
/*
- Arduino UNO
- Pont en H L289N sur circuit
11 -> ENA
10 -> IN1
9 -> IN2
*/
int aig = 11;
int sens1 = 10;
int sens2 = 9;
int rytme = 120; // Rythme en BPM
int temps = 4; // Nombre de temps
int delai= 0;
void setup() {
delai= 60000/rytme; // conversion du rythme en délai entre les impulsions (ms)
pinMode(sens1, OUTPUT); // on défini en sortie (OUTPUT) la commande de sens
pinMode(sens2, OUTPUT); // on défini en sortie (OUTPUT) la commande de sens
pinMode(aig, OUTPUT); // on défini en sortie (OUTPUT) la commande de l'aiguille
}
void loop() {
for( int i = 0; i< (temps-1); i++){ // cette boucle permet de faire les temps faible, elle s'effectue donc 3 fois si on est en 4 temps, ou 2 fois si on est en 3 temps
digitalWrite(aig, HIGH); // on met l'aiguille sous tension
digitalWrite(sens1, LOW); // on défini le sens du courant
digitalWrite(sens2, HIGH); // on défini le sens du courant -> on met l'aiguille du coté du moteur
delay(35); // on attend 35ms avant de changer de sens pour laisser le temps a l'aiguille de venir frapper le moteur avant d'être rappeler en sens inverse
digitalWrite(sens1, HIGH); // on inverse le sens du courant
digitalWrite(sens2, LOW); // on inverse le sens du courant -> on met l'aiguille du coté de la nappe
delay(delai-35); // on attend la fin du temps avant d'effecteur la suite du code
}
digitalWrite(aig, HIGH); // a partir d'ici, le code est le même qu'au dessus, sauf que le délai ou l'aiguille sera du coté moteur est plus faible
digitalWrite(sens1, LOW);
digitalWrite(sens2, HIGH);
delay(25);
digitalWrite(sens1, HIGH);
digitalWrite(sens2, LOW);
delay(delai-25);
}
Dans ce code, vous pouvez facilement régler le rythme (en BPM) et le nombre de temps (minimum 2).
Attention, si vous voyer que l'aiguille est au repos du coté du moteur et tape du coté de la nappe, il faut absolument inverser son câblage (soit en échangeant les fils dans le connecteur du pont en H, soit directement dans le code) sous peine de sectionner la nappe rapidement !
5/ Pour aller plus loin...
Maintenant, on sait comment faire taper l'aiguille du disque dur sur le moteur pour générer un son, et comment régler un tempo et le nombre de temps.
Il ne vous reste plus qu'a fabriquer le métronome à proprement parler…
Voici une idée de design :
Le boitier est fait en découpe laser, et j'ai ajouter une LED RGB.
Vidéo









