====== Silent Step Stick (TMC2100) ======
Le //[[http://www.watterott.com/en/SilentStepStick-TMC2100-5V-with-Pins|Silent Step Stick]]// est un pilote de moteur basé sur un Trinamic TMC 2100 ou Trinamic TMC 2130. Il est compatible avec un StepStick ou le Pololu A4988. Il permet de contrôler un moteur pas à pas très finement (//microstepping//) et le rendre complètement silencieux, ce qui n'est pas le cas des pilotes de moteur classiques comme le L298.
Voir un exemple de réalisation avec ce //driver// : [[projets:zohrawasnotborninaday:accueil|Al-Zohra n'est pas née en un jour]].
{{:materiel:silentstepstick:20160095_1.jpg?400|}}
===== Caractéristiques =====
* Hardware compatible with StepStick and Pololu A4988
* Drive capability up to 1.2A (RMS) continuous coil current
* Step/Dir interface with microstep interpolation (up to 256 microsteps)
* Motor voltage: 4,75...45V
* Logic voltage: 5V
* internal voltage regulator deactived -> lower power dissipation
* stealthChop - for quiet operation and smooth motion
* spreadCycle - highly dynamic motor control choppe
**Documents techniques (//datasheet//)**
* {{:projets:zohrawasnotborninaday:silentstepstick_v12_5v.pdf|}}
* {{:projets:zohrawasnotborninaday:tmc2100_datasheet.pdf|}}
=====Configuration=====
{{:materiel:silentstepstick:dsc_6461.jpg?400 |}}
{{:materiel:silentstepstick:dsc_6459.jpg?400|}}
//
//
La configuration qui fonctionne bien :
* une Arduino UNO ou autre
* un moteur pas à pas NEMA17
* [[http://www.watterott.com/en/Arduino-FabScan-Shield|FabScan Shield]] : optionnel, juste pour faciliter la connectique
* [[http://www.watterott.com/en/SilentStepStick-TMC2100-5V-with-Pins|SilentStepStick 5V]] : le pilote de moteur en 5V
* [[http://www.watterott.com/en/Pin-heatsink-square-ICK-S-10-x-10-x-125|Refroidisseur Square-ICK-S]] : refroidir la puce
* [[http://www.watterott.com/en/SilentStepStick-Protector|SilentStepStick Protector]] : protéger le circuit
* [[http://www.gotronic.fr/art-alimentation-rs100-24-20111.htm|Alimentation 20V-28V]] : alimenter le moteur
=====Explications=====
==== Arduino ====
Le choix de l'Arduino et du moteur pas à pas ne pose pas de problème.
==== Shield =====
La //Fabscan shield// permet juste de brancher facilement le pilote (//driver//), comme pourrait le faire une autre //shield// bien connue, la [[http://reprap.org/wiki/Arduino_Mega_Pololu_Shield/fr|RAMPS]]. Ses cartes s'interfacent facilement avec des petits //drivers// comme les [[http://reprap.org/wiki/Pololu_stepper_driver_board|Polulu]] ou [[http://reprap.org/wiki/StepStick|StepStick]], ce qui permet d'en mettre 3 ou 4 dans un petit espace, très utile pour les imprimantes 3D.
==== SilentStepStick ====
Le //driver// fabriqué par Watterott semble être un très bon choix pour rendre silencieuse son installation avec des moteurs pas à pas. En règle générale, ces moteurs font toujours du bruit, et celui-ci est amplifié par résonance sur le support auquel il est fixé. En augmentant la vitesse du moteur il est possible de diminuer très fortement le bruit mais en contrepartie la position du moteur n'est généralement plus précise.
Documentation du //driver// : https://github.com/watterott/SilentStepStick et http://reprap.org/wiki/TMC2100
=== Sens du driver ===
Attention, le //driver// est dans le sens inverse de ce que l'on voit habituellement. D'habitude, la puce noire est située au dessus, ici c'est en dessous. Remarquez le "TOP" sur la carte, qui indique la face qui doit être visible au dessus.
{{:materiel:silentstepstick:silentstepstick5v.jpg?500|}}
=== Problème de l'alimentation ===
Attention aussi lors de l'allumage ou de l'extinction du courant, le TMC2100 est très sensible.
Il y a un [[https://github.com/watterott/SilentStepStick/blob/master/docu/FAQ.md#what-to-consider-when-turning-the-power-supply-on-or-off|ordre]] pour allumer ou éteindre le //driver//, l'Arduino et l'alimentation du moteur. Quand on allume, il faut d'abord allumer l'alimentation puis l'Arduino, quand on éteint c'est l'inverse, d'abord l'Arduino, ensuite l'alimentation du moteur.
**Allumage**. Pour résoudre le problème de l'allumage, il faut choisir la [[http://www.watterott.com/en/SilentStepStick-TMC2100-5V|version 5V]] du //driver// et non celle en [[http://www.watterott.com/en/SilentStepStick|3.3V]]. Elle est disponible depuis juillet ou août 2016. En effet elle n'oblige pas à allumer l'alimentation du moteur (//the motor supply voltage// ou //VM//) avant l'Arduino (//VIO// 5V).
**Extinction**. Si le moteur est en mouvement, il n'est pas permis d'éteindre l'alimentation du moteur. Pour résoudre ce problème, il est conseillé d'ajouter un petit [[http://www.watterott.com/en/SilentStepStick-Protector|circuit de protection]] composé de diodes (//flyback diodes, freewheeling diodes//) qui protègent le //driver// des courants induits générés par le moteur quand il n'est plus allumé.
{{:materiel:silentstepstick:silentstepstickprotector.jpg?500|}}
==== Refroidisseur ====
Il est conseillé d'utiliser un refroidisseur pour tout courant supérieur ou égal à 1A. Pour préserver le matériel, c'est une bonne pratique d'en mettre dans toutes les situations, la température de la puce est vite évacuée par le métal, puis refroidie par la surface métallique en contact avec l'air. Plus cette surface est grande, plus la dissipation thermique est efficace.
Ici le refroidisseur est collé sur la face du dessus du //driver//, à l'emplacement des petits trous qui sont juste au dessus de la puce TCM2100.
==== Alimentation ====
L'équipe de Watterott nous a conseillé une alimentation pour le moteur comprise entre 18 et 30V. Celui que nous avons choisi est plutôt puissant pour un NEMA17 (1.6A / phase). Cela permet une meilleure utilisation du //StealthChop Mode//, c'est-à-dire du mode silencieux.
Ici, nous avons utilisé une alimentation de 24V mais qui permet de moduler entre 20 et 28V, grâce à un potentiomètre.
===== Branchements =====
{{:materiel:silentstepstick:branchementstmc2100.png?500|}}
==== Déconnecter Vin====
Il faut plier la patte de la //shield// Fabscan correspondante à l'alimentation de la carte Arduino (//Vin//) car nous avons choisi une alimentation au dessus de 12V et que l'on risque de griller la carte.
{{:materiel:silentstepstick:fabscanshield-vin.png?500|}}
==== Configurer le mode silencieux====
Pour activer le mode silencieux (//1/16 stealthChop mode//), il faut déconnecter (//open//) les trois pattes qui permettent de configurer les modes : CFG1, CFG2 et CFG3.
{{:materiel:silentstepstick:silentstepstick-cfg-pins.png?500|}}
===== Réglages du courant =====
Avant de brancher le moteur, il faut encore réaliser une dernière opération : le réglage du courant. Le courant maximum du driver est de 1,77A, mais il est conseillé (source Watterott et Trinamic) de ne pas aller au delà de 1.2A RMS, même si votre moteur demande 1,6A/phase comme le nôtre. De plus, ce réglage permet de réduire le courant si nous n'avons pas besoin de la force (torque) totale du moteur et donc de préserver au mieux le matériel.
Pour régler ce courant, il faut mesurer la tension entre //Vref// et //GND//. La tension est comprise entre 0 et 2.5V. //Vref// est accessible sur le dessus de la carte, en bas à droite, à côté du trou //EN// (//enable//).
{{:materiel:silentstepstick:tmc2100_vref_pins.jpeg?300|}}
Nous pouvons la régler à l'aide du petit potentiomètre accessible sur le dessus de la carte avec un mini tournevis plat. Pour cela, il faut placer le //driver// sur la shield pour le connecter à l'Arduino et alimenter l'Arduino. **Il ne faut pas brancher le moteur ni l'alimentation du moteur.**
{{:materiel:silentstepstick:dsc_6463.jpg?500|}}
La tension nous donne approximativement le courant max (//IMax peak current//), pour avoir le courant moyen (//Irms continuous current//), il faut faire un petit calcul :
Vref = IMax
Irms = IMax/1.41
Si on veut 1.2 A (Irms), il nous faut 1.2 * 1.41, soit 1.692V.
Pour information, dans notre exemple, nous avons réglé //Vref// à 0.9V. Nous avons ajuster cette tension par rapport à la force nécessaire pour notre projet.
=====Code Arduino=====
// Test du SilentStepStick 5V de Watterott
// Faire simplement avancer le moteur dans un sens
// Branchements
// Sur la FabScan Shield, le premier emplacement correspond à ces pins
// Emplacements 1 | 2 | 3 | 4
// ----------------
#define EN_PIN 2 // 2 | 5 | 11 | A0
#define STEP_PIN 3 // 3 | 6 | 12 | A1
#define DIR_PIN 4 // 4 | 7 | 13 | A2
// HIGH for 16 microstepping, LOW for no microstepping
#define MS_PIN A5
// Configurations de base
void setup()
{
pinMode(EN_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
digitalWrite(EN_PIN, HIGH); // Désactiver le moteur
digitalWrite(DIR_PIN, LOW); // Sens de rotation
digitalWrite(STEP_PIN, LOW);
//Si nous ne voulons pas de microstepping, décommentez ces lignes
//pinMode(MS_PIN, OUTPUT);
//digitalWrite(MS_PIN, LOW);
delay(1000);
digitalWrite(EN_PIN, LOW); // Activer le moteur
}
// Programme qui fait avancer le moteur
void loop()
{
digitalWrite(STEP_PIN, LOW);
delay(2);
digitalWrite(STEP_PIN, HIGH);
delay(2);
}