Projet PetitPas
[/color]Dernière mise à jour projet : 17/04/2010
______________________________________________!Projet fini (sauf la documentation n'hésitez pas à poser des questions)!
Introduction et historique
______________________________________________[/color]
Le projet PetitPas a comme objectif de concevoir et de facilement réaliser un ensemble de cartes pouvant piloter des moteurs bipolaires à partir du port parallèle d'un PC (ou d'une carte d'interpolation).
Ce projet reprend beaucoup de choix techniques des projets µstep (de mdog et freedom) et picstep (d'alan) qui sont :
- Utilisation du LMD18245 comme driver de puissance, qui intègre toute la partie asservissement du courant moteur qui simplifie grandement la conception et le câblage (attention au prix!)
- Utilisation d'un pic (16f876a ou 16f886) pour le séquencement, un classique. Penser à vous doter d'un programmateur de pic (dans les 25€ pour un clone du pickit2 sur ebay (je vous le recommande) ou pour quelques euros un bidouille qui potentiellement vous donnera du fil à retordre!)
Les différences entre ces différents projets :
- Contrairement au projet µstep, le pic choisi est un "classique" (facilement approvisionnable) et est bien plus performant à tous points de vues. Le code est en assembleur qui est de loin bien plus optimisé que le codage original du driver en C (freedom l'a depuis réécrit très avantageusement en assembleur). Picstep est une carte tout en 1 ce qui a des inconvénients (peu modulaire, interchangeable,...) mais aussi des avantages (beaucoups moins de connecteurs, composants). Pour donner un ordre d'idée, "PetitsPas" environ 1000 trous VS "µstep" environ 600 trous. Le projet n'est pas open source (à ma connaissance), ni le projet "PCB", ni le projet "firmware" (celui de mdog pas celui de Freedom) ne sont librement accessibles. C'est un choix de mdog et chacun fais ce qu'il veut de ses droits d'auteurs, je le respecte.
- Projet picstep. La principale différence est qu'il utilise un autre pic et son code n'est pas optimisé en vitesse (limité à 60kHz de mémoire). De plus beaucoup de fonctions ne sont pas présentes (réduction de puissance, micropas élevés, changements de tables, ...).
______________________________________________
Caractéristiques Techniques
______________________________________________[/color]
Voici synthétisés les différentes caractéristiques techniques
Courant maximum : 3A maximum par phases moteurs (voir LMD18245T)
Fréquence maximum des pulses "STEPS" : 150 kHz
Micropas : plein pas à 1/32 pas.
Tables : sinus (classique), powertorque (puissance maximum), carrée (plein pas pour tous les micro-pas), automatique (changement de table selon la vitesse).
Réduction de puissance commandé par le PC : oui (TBC)
Dimensions : carte "puissance" (driver) 60*75mm , carte "breakout board" 67*95mm tout deux en simple face.
______________________________________________
Avancement
______________________________________________[/color]
Il y a eu 2 versions du projet, la carte prototype (V0.1) et la carte finale (V1.0).
Carte Puissance (driver) :
Firmware du PIC : 100% sur le 16f886, 95% le 16f876a (à tester sur la V1.0d, V0.1 100% fonctionnelle)
Carte : 100% fonctionnelle. Ce serait à refaire je partirais sur du circuit double face.
Carte Breakout (interface PC) :
Carte : 98% (2% en attendant le premier courageux qui la testera!) Ce serait à refaire, faire une opto-isolation (attention à la fréquence des pulses) et pourquoi pas du double face.
Documentation :
PDF : 10%[/color] (à faire selon la demande car pénible et long)
______________________________________________
Fichiers
______________________________________________[/color]
Carte Puissance (driver) :
La carteV1.0d (du 16/04/2010): Projet Kicad / schéma PDF / typon PDF
Le Firmware (du 08/05/2010) : Projet MPLAB / Binaires : 16f876 / 16f886
Carte Breakout (interface PC) :
La carteV1.0 (du 07/04/2010) : Projet Kicad / schéma PDF / typon PDF
==================================================
Pensant à construire une CNC d' "appartement", je me suis mis en quête du driver moteur pas à pas qu'il me fallait. J'ai commencé à m'intéresser aux projets sur la base d'un LMD18245 et d'un PIC.Message Original
==================================================[/color]En faisant un petit tour je n'ai rien trouvé qui me satisfasse pleinement. Je me suis mis à vouloir créer le mien. Mes plus grandes sources d'inspirations furent le projet d'Alan picstep V4 :
http://www.fromorbit.com/projects/picstep et le projet de mdog avec le firmware de Freedom : µstep (voir le fil sur ce forum).
Je suis reparti du firmware de Freedom (en assembleur) qui à l'époque était une adaptation de celui d'Alan pour le 16F57 (cette rogne...). Comme Freedom, j'ai fini par pratiquement tout recoder.
Les contraintes :
- Modulaire : un circuit par moteur. Il doit être le plus autonome possible et ne pas trop faire confiance aux circuits environnants (alim 5V de ref, amplitude des signaux d'entrée...)
- PCB facilement faisable dans un garage donc simple face, pas de pistes entre pastilles, distances d'isolations importantes... Tout ça quitte à multiplier les straps!
- Les LMDs doivent être en bord de carte pour pouvoir profiter des radiateurs extérieurs présent en fond de boitiers.
- Cote à cote 2 circuits doivent pouvoir être vissés sur une même radiateur de 15cm de large.
- Peu importe les circonstances, le temps de latence entre une impulsion de "STEP" et la commande des LMDs doit être rigoureusement constant.
- Interface "compatible" picstep V4 (sauf pour l'alim 5V)
- Gérer le """Bug""" des LMD18245 (en fait le contourner).
- Avoir "de la marge" pour implémenter d'autres fonctions/modes/tables.
- Toutes les fonctions ont leur jumper, pas de choix à la "compilation" (assemblage).
Je suis donc parti sur un pic 16f876A avec 28 pins cadencé à 20 MHz et ayant une gestion des interruptions et un DAC permettant de générer la référence de tension pour les LMDs et ainsi pouvoir réduire le courant moteur en mode réduction de puissance.
Les fonctions actuellement implémentés sont :
- Micropas : full, 1/2, 1/4, 1/8, 1/16, 1/32 (3 jumpers)
- 2 tables : Sinus et "power torque" (1 jumper)
- Mode réduction de puissance (courant) automatique sans décalage de pas (1 jumpers)
- Un mode "Pas de chat" qui permet de faire de l' "interpolation" au 1/32 pas pour les modes de microstepping inférieurs (1/16 et moins), à voir l'utilité. (1 jumper)
- PIC directement (re)programmable sur le circuit via un connecteur ICSP.
- Un bouton de reset... Ça peut servir pour charger une nouvelle configuration!
Voici le schéma électronique du prototype:
Sa vue 3D (je n'ai pas fait les LMD en 3D) dimensions 75mm*60mm:
N'ayant pas mon matériel de fabrication sur place, j'ai fait fabriquer une carte (prototype) chez util-pocket : http://www.util-pocket.com/electronique/circuit_imprime.htm pour 13,03€ TTC (Port : 3,90 + Typon : 3,50 + PCB : le reste) percé à 0,8mm et étamé (il m'avait oublié 2 trous). Livré en 10 jours, le résultat bon :
Des choses sont à améliorer sur cette carte (vias, tailles de certaines pastilles, frein thermique pour le plan de masse...)
J'ai monté une grosse partie de la carte. Il me manque les condensateurs des LMDs (à acheter). La programmation en circuit marche. J'ai aussi pu vérifier à l'analyseur logique le bon fonctionnement de la table des sinus en 1/32 de pas à 100kHz (ce n'est pas le max), j'ai les captures mais il se fait tard vous les aurez demain!
J'attends avec impatience vos questions, remarques et critiques (constructives)!
De nouveau merci à Freedom, Alan et mdog pour leur travail en amont sur les drivers de ce type.
Xavier
PS : Tout ce projet (schema, PCB, firmware et documentation) est en licence libre type GNU GPL et sera publié une fois que je le jugerai stable. Ceci afin d'éviter de vous faire débugger" et "optimiser" à l'aveugle" alors que j'ai accès à tout le matériel pour le faire vraiment proprement. S'il y a des curieux je peux faire un "package" Alpha du projet.
Dernière édition par un modérateur: