Un disque dur est intrinsèquement beau, c'est une mécanique de précision et le disque métallisé est un miroir parfait.
J'ai donc voulu conserver le disque quasiment intact pour en faire cette horloge originale et qui fonctionne.
Mon cahier des charges était le suivant :
un minimum de modifications visibles sur le disque
la tête de lecture doit indiquer les minutes
le disque en tournant doit indiquer les heures
le système doit être automatique
le disque doit pouvoir être alimenté par une simple prise USB ou un chargeur USB
une interface USB doit permettre de faire les réglages dont la mise à l'heure
l'heure doit être conservée en cas de coupure d'alimentation
l'horloge doit être silencieuse
et... cerise sur le gâteau :
l'horloge peut servir de petit haut parleur
l'horloge peut parler
Comme vous voyez le résultat est plutôt sympathique, la suite va vous montrer comment on peut réaliser cette "HDD Still Clock".
Cette vidéo vous montre le résultat final.
Le principe est simple:
Un capteur phototransistor et sa photodiode infra rouge sont positionnés sous le plateau inférieur pour repérer le passage à midi du disque
Le moteur du disque est controlé par un microcontroleur qui le pilote soit en mode "pas à pas" soit en mode "brushless" via une électronique de puissance. Il affiche les heures
Le bobinage de postionnement de la tête de lecture est controlé en tension via un PWM, la tête de lecture affiche les minutes
Un logiciel PC Windows sert d'interface USB
La mécanique
Ouvrez votre disque dur et retirez le bras qui porte les têtes de lecture :
retirez l'aimant supérieur.
dévissez les vis qui tiennent les plateaux
dévissez la vis du connecteur
dévissez la vis centrale de l'axe du bras porte tétes
l'aimant est très puissant, il est délicat à retirer. Aidez vous d'un tournevis pour faire levier. Mais si vous "dérapez" vous pouvez facilement abimer le bobinage du bras... qu'il faut absolument protéger car il va nous servir.
La tête de lecture doit être équipée d'un petit ressort de rappel pour la convertir en galvanomètre à cadre mobile.
Wikipedia nous dit qu'un galvanomètre à cadre mobile, est constitué d'une bobine montée sur pivot, baignant dans le champ magnétique d'un aimant fixe, sur cette bobine est fixée l'aiguille de visualisation et un ressort chargé de rappeler l'équipage mobile dans la position indiquant le zéro.
Le courant, en traversant la bobine, induit dans celle-ci un champ électromagnétique, ce qui provoque un pivotement par répulsion des champs magnétiques. Plus le courant est intense plus la bobine bascule.
Le ressort de rappel est dissimulé sous la tête de lecture, il est donc parfaitement invisible.
Le bras des têtes de lecture est percé et un bout de corde à piano est collée à l'epoxy
les têtes de lecture sont enlevées (opération délicate) et leurs supports écartés afin qu'il n'y ait aucun contact avec le disque.
On repère les deux plus gros fils sur la nappe reliée au connecteur. Il s'agit des fils d'alimentation de la bobine. C'est donc sur ces fils qu'on se connectera toujours de façon invisble !
Le ressort est réalisée avec un autre morceau de corde à piano le plus fin possible. Il est fixé sous le disque et raccordé à la tige qui dépasse une fois le bras remis en place
Cliquez sur les images pour zoomer
Le phototransistor RPR220 est soudé sur le circuit imprimé et éclaire avec sa photodiode infra rouge le disque inférieur. Un trou est percé dans le boitier afin que la "lumière" passe sos le disque. Une marque noire est peinte sur le disque pour que le capteur pisse la repérer.
Il est recommandé de faire un montage à blanc du circuit imprimé avant de souder le capteur. On peut alors utiliser les 4 trous dans lesquels il s'enfiche comme guides pour repérer de 4 petits trous de mèche la position du capteur sur le boitier. Il est alors facile de percer le boitier juste là où il faut.
Zoomez sur les photos pour voir les détails. Sur celle de gauche on distingue le disque et la tâche noire qui apparaît.
Idéalement le phototransistor doit passer à 6 mm de distance par rapport à sa cible. Allongez ses pattes si nécessaire.
L'électronique de commande
L'électronique est basée sur un microcontroleur PIC 24FJ256GB106. Ce processeur 16 bits possède un port USB intégré ce qui rend son interfaçage avec le PC simple (quand on a compris comment l'USB fonctionne !).
Il a aussi 9 PWM hardware ce qui le rend parfaitement adapté pour piloter des moteurs.
Associé au PIC on trouve :
un triple pont en H L6234 servant d'étage de puissance pour le moteur
un capteur photosensible (Reflective photosensor (photoreflector)) RPR220
une horloge temps réel DS1337C servant à mémoriser l'heure quand le système est hors tension
un ampli audio MAX9716 pour faire parler l'horloge (à faire)
un régulateur 3,3V
et quelques composants SMD pour lier le tout
Cliquez sur l'image pour zoomer le schéma
Tout ceci est tiré sur un circuit imprimé qu'on fixe au dos du disque dur.
Je vous ai dit que je voulais faire parler mon horloge... Le principe est amusant, on utilise la bobine de positionnement de la tête comme un haut parleur. Regardez la vidéo, ça se passe de commentaires .
Bien sûr la même bobine reçoit aussi le signal PWM des minutes. Il faut "additionner" ce signal à celui de l'audio. Ceci se fait en sortie de l'amplificateur audio. Quand il y aura de l'audio les minutes ne seront plus à l'heure... On ne peut pas tout avoir ...
J'ai également prévu de faire parler le microcontroleur via un signal PWM de modulation d'un message vocal à restituer.
je résume :
OUT7 = sortie PWM "voice" du microcontroleur
OUT8 = sortie PWM des "minutes" du microcontroleur
IN+ = entrée audio externe
Le logiciel
Le principal problème est de faire tourner le moteur. Ces engins sont des moteurs sans balais à courant continu ce qui en bon anglais s'appelle un moteur "brushless DC" ou encore "BLDC".
La littérature regorge de théories sur comment piloter un BLDC. A titre d'exemple :
Un BLDC a toujours deux bobinages sous tension et le troisième "en l'air". Selon le sens de passage du courant dans les bobines on arrive à 6 positions stables. Cette deuxième image, à droite, montre un moteur énergisé sur la séquence 1. Le courant entre au point A et ressort en B. Le rotor s'oriente alors selon ce point d'équilibre.
Un moteur de disque dur a beaucoup plus de bobinages que ce simple moteur triphasé. En pratique on dénombre 24 positions stables pour faire un tour complet. La séquence élementaire de 6 positions se répète donc 4 fois. Et 24 sera parfait pour indiquer des heures
Le dessin à droite montre les positions du rotor pour chacun des 6 états stables d'un moteur triphasé à 3 paires de pôles.
Pour faire fonctionner la HDD Clock j'aurais pu me contenter d'alimenter le moteur en mode "pas à pas" en passant les 24 états stables successivement. C'est d'ailleurs ce que je fais quand je bascule en mode "horloge" ou quand je démarre le moteur.
Il est par contre plus interessant d'essayer de faire tourner le moteur en mode "brushless".
La méthode simple est d'avoir un moteur équipé de capteurs à effet hall. Ces capteurs au nombre de trois sont placés sur les entrefers du stator et permettent de repèrer trois positions stables consécutives. (sur la photo il s'agit d'un moteur BLDC d'un vieux lecteur de disquettes). Notez la position des capteurs et regardez juste au dessus les positions stables du rotor elles aussi juste entre les entrefers !
Le moteur d'un disque dur n'a pas de capteur à effet hall. Il utilise la technique de pilotage par mesure de la force contre électromotrice de la bobine non alimentée. Cette méthode est efficace mais complexe à mettre en oeuvre.
J'ai donc remplacé les capteurs à effet hall par un seul capteur : le phototransistor.
Ce capteur me sert donc de repère de passage à midi de l'horloge et de repère de la position stable n°6 du moteur. Il faut donc caler le repère (la marque noire sur le disque du bas) pour synchroniser les deux évènements. Je vous montrerai comment plus tard. Ceci étant fait et sachant qu'il y a 24 positions stables (4 fois la séquence de base), il suffit de connaître la durée d'un tour, de diviser cette durée par 24 pour avoir la période de déclenchement des commutations et de déclencher la première commutation (n°1) lors du passage du capteur puis les 23 autres en suivant. C'est aussi simple que ça... sauf qu'il faut démarrer le moteur en mode "pas à pas" l'accélérer progressivement puis basculer en pilotage "brushless". Sachant que j'alimente le moteur en 5V au lieu de 12, ça devient assez délicat. Bien sûr les tensions dans les bobines sont hachées par un signal PWM afin de limiter le courant et aussi de pouvoir régler la vitesse de rotation.
Voici donc à quoi ressemble la séquence de commutation des bobinages du stator
Pour faire fonctionner la HDD Clock il faut flasher le firmware du PIC. Voici le fichier .hex à télécharger
Il existe aussi un logiciel PC permettant de régler les diffférents paramètres tels que :
la mise à l'heure à partir de l'horloge PC (puis sauvegarde dans le chip RTCC)
la bascule en mode "horloge" ou la mise en rotation du disque
le monitoring de la vitesse du disque
la sauvegarde en fichier ascii tabulé des courbes
la calibration de l'aiguille des minutes
la calibration du disque et du capteur RPR220
des réglages avancés pour avancer la synchro du moteur (d'un nombre entier de pas "Adv" et d'une fraction de pas)
le réglage de la vitesse du disque (rapport cyclique du PWM de hachage des courants stator)
le bouton de bootload permettant de flasher un nouveau firmware lors du prochain reset de la carte (appui sur le bouton)
enfin la carte est automatiquemet reconnue lors de son branchement (pas de driver et plug&play)
Pour terminer votre HDD Clock il va falloir faire un plateau avec les graduations "horaires". La géométrie du disque et de sa tête de lecture est primordiale pour faire quelque chose de précis.
Il faut donc relever le plan des différents axes, les positions des butées de la tête et reporter ça sur votre logiciel de CAO préféré. Voici donc ce plan au format dxf.
Partant de ce fichier j'ai testé plusieurs solutions pour réaliser le cadran :
l'impression avec une imprimante laser (méthode toner transfer). Le résultat est propre mais fragile et délicat à bien centrer (voir photo du haut de la page).
la gravure avec une fraise en V. Là le résultat est quasi parfait même si les traits sont un peu plus larges. Voici le fichier GCode de gravure
Sur la vidéo la gravure en mode "UGV"
A l'arrivée le rendu est plutôt sympathique. Il ne reste plus qu'à monter ce plateau sur le disque et effectuer les derniers réglages.
Calibrer le capteur phototransistor :
sur l'IHM cochez la case . Le disque se verrouille en position de calibration.
dévissez les vis de serrage
faites tourner le plateau inférieur jusqu'à ce que la led s'allume
faites tourner le plateau supérieur sur le repère "12 heures "
revissez les vis de serrage.
Calibrer le bras porte tête :
sur l'IHM cochez la case L'ascenseur de réglage du bras devient actif (onglet )
positonnez le bras sur 0h, 1/4h, 1/2h, 3/4h, 1h et chaque fois reportez la valeur lue dans la case adhoc
puis sauvegardez les valeurs
exemple pour 1/2h :
Une petite vidéo (en HD) pour montrer comment l'horloge gère les changements d'heure et de minutes !
vous pouvez zoomer pour voir l'horloge finie de très près (en zoomant deux fois cette image) !;