Pour les essais de la DRV8824, le moteur reste le même que celui employé dans « Mise en œuvre de l’EasyDriver v4.4 pour un pont tournant » avec 400 pas par tour. La latte de bois a été remplacée par un tasseau d’un longueur un peu plus faible dans le but de pouvoir charger le pont avec une masse équivalente à celle d’une locomotive en H0 [1] afin d’observer le comportement en charge.
Les possibilités offertes par la DRV8824
En combinant les 400 pas par tour du moteur et les 32µPas du Ti DRV8824, on arrive à 12800 µPas par tour ce qui est considérable. Pour un pont tournant à l’échelle H0, disons de 30cm de diamètre, cela donne un déplacement de moins de 0,075mm par µPas en bout de pont. Avec un pont à l’échelle N on tombe à 0,037mm en bout de pont. Un déplacement de moins d’1/10e de millimètre est imperceptible.
La connexion de la DRV8824 est presque aussi simple que celle de l’EasyDriver, il y a juste quelques broches supplémentaires à connecter à la masse ou au +5V car l’état par défaut qu’elles adoptent lorsqu’elles sont en l’air ne convient pas.
Il faut donc connecter les broches DIR et STEP comme pour l’EasyDriver mais en plus connecter la broche SLEEP à 5V, la broche ENABLE à 0V et les broches M0, M1 et M2 à 5V pour disposer de 32 µPas. J’ai choisi de piloter la broche RESET avec la broche 4 de l’Arduino. En effet, à l’allumage du système, les entrées/sorties numériques de l’Arduino étant en entrée, RESET est en l’air et, par conséquent, le Ti DRV8824 est maintenu dans l’état RESET. Cela évite de faire faire au moteur des mouvements involontaires dus aux transitoires sur les entrées DIR et STEP. Lorsque le programme démarre, la broche 4 est mise en sortie et RESET est mis à l’état haut après que les états de DIR et STEP aient été fixés. De cette manière le moteur ne bronche pas à la mise sous tension.
Un autre point important est le condensateur chimique qui permet d’absorber les transitoires de la mise sous tension. Transitoires qui pourraient détruire le composant. J’ai donc implanté sur la breadboard un condensateur de 470µF 35V.
La tension moteur est fixée à 12V. Les alimentations sont séparées comme pour le montage de l’EasyDriver.
Réglages de la DRV8824
Le potentiomètre de montage sur la DRV8824 permet de régler la tension Vref qui fixe le courant maximum. Comme Vref = Imax ×5Rs, avec Rs = 0,33Ω, un Imax ≤ 300mA donne un Vref ≤ 0,5V. En tâtonnant, une valeur de 0,47V donne le meilleur comportement [2].
Voici le résultat obtenu avec ce réglage.
La plus haute résolution du Ti DRV8824 par rapport à l’Allegro A3967 qui équipe l’EasyDriver donne un bien meilleur résultat mais ce n’est pas encore parfait.
Deux pistes d’amélioration existent. La première concerne le Vref. En effet, la valeur de Vref nécessaire pour le moteur choisi est en deçà de ce qui est préconisé par Texas Instruments mais augmenter Vref demanderait de remplacer les résistance de capture de courant de 0,33Ω pas des résistances de 2,2Ω. De cette manière le Vref maximum de 3,3V correspondrait à un courant maximum de 300mA.
Se lancer dans cette modification est un peu risqué et une autre piste a été privilégiée : le changement du DECAY car comme on avait pu le voir dans « Mise en œuvre de l’EasyDriver v4.4 pour un pont tournant », son influence est importante. Malheureusement, comme on l’a vu dans « La DRV8824 de Pololu », le DECAY n’est pas disponible sur les broches de la DRV8824. Il faut aller le chercher sur la broche 19 du Ti DRV8824. En mettant cette broche à la GND, on sélectionne le Slow Decay et en la mettant à +5V, on sélectionne le Fast Decay.
En Slow Decay le comportement est moins bon avec un net pompage qui apparaît.
En Fast Decay le comportement est bien meilleur. La vibration, présente quand le pont est chargé, disparaît.
Il se trouve que la broche 19 voisine avec la broche 18, FAULT, qui a l’énorme avantage d’être à l’état haut en temps normal [3]. Il suffit donc de déposer une goutte de soudure pour réunir ces deux broches et sélectionne le Fast Decay. Relier DECAY à GND aurait été beaucoup plus sportif car il aurait fallu souder un fil volant entre DECAY et le GND qui se trouve à une dizaine de mm de là.
- Modification de la DRV8824
- Soudage des broches DECAY et FAULT ensemble de manière à mettre DECAY à l’état haut.
Il reste malgré tout un très léger pompage qui est résolu par la diminution du Vref de manière à obtenir un courant entre 200mA (pont chargé en H0) et 150mA (pont lège en N). Le résultat est excellent, même dans les phases d’accélération et de décélération, comme en atteste la vidéo ci-dessous.
Le logiciel
La commande de la DRV8824 étant identique à celle de l’EasyDriver le logiciel reste, dans les grandes lignes, identique à celui décrit dans « Mise en œuvre de l’EasyDriver v4.4 pour un pont tournant ». Evidemment, comme il y a 4 fois plus de micro-pas il faut diminuer le délai entre le passage de 2 micro-pas. Sur l’EasyDriver, le délai avait été fixé à 37ms. Ici il est fixé à 16ms. Un tour est donc accompli en 12800 × 16ms = 3 minutes et 25 secondes environ, ce qui est presque conforme à la réalité.
Durée du STEP
Le Ti DRV8824 est moins tolérant que l’Allegro A3967. STEP doit resté au même état au moins 1,9µs alors que sur le A3967 nous avions 1µs. Si comme précédemment, on écrit :
- void loop()
- {
- digitalWrite(pinMicroPas, LOW);
- digitalWrite(pinMicroPas, HIGH);
- delay(16);
- }
On risque de na pas satisfaire cette condition entre les deux digitalWrite(...)
. Les 16ms sont par exemple répartis comme ceci :
- void loop()
- {
- digitalWrite(pinMicroPas, LOW);
- delay(8);
- digitalWrite(pinMicroPas, HIGH);
- delay(8);
- }
Conclusion
La DRV8824 de Pololu est donc retenue pour la mise en œuvre du pont tournant. Le prochain article portera sur l’algorithme du choix du plus court chemin.