1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Petit Pas : un de plus!

Discussion dans 'Electronique spécifique CNC' créé par horsot, 19 Novembre 2009.

  1. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Projet PetitPas
    [/color]
    Dernière mise à jour projet : 17/04/2010

    ______________________________________________
    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

    ==================================================
    Message Original​
    ==================================================[/color]
    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.

    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:
    http://www.usinages.com/files/schema_elec_158.png
    [​IMG]

    Sa vue 3D (je n'ai pas fait les LMD en 3D) dimensions 75mm*60mm:
    [​IMG]


    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 :
    [​IMG]


    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.
     
  2. Foxtrot

    Foxtrot Compagnon

    Messages:
    1 044
    Inscrit:
    18 Février 2008
    Localité:
    Ath (BE)
    Petit Pas : un de plus!
    Bonjour,

    Je lis avec attention tout les posts de freedom sur son projet et aussi celui de mdog bien sûr.
    Le système parait excellent et performant. Le fait de l'avoir réalisé et de l'employer avec succès est très valorisant. :wink:

    Je me suis dit pourquoi pas me faire aussi une carte 3 axes? Alors commande de sample que j'ai reçu et ensuite remplir mon panier chez Farnell. Bon, je sais bien que ce sont de chers épiciers.
    Mon panier, avec 1 LM qu'il me manque (max 5 sample) et tout les autres composants, j'en ai pour 105€ TTC. Si je devais acheter 5 LM en plus, la facture serait de 230€ au total et il manque sans doute encore quelque chose :shock:
    Si en plus, on a quelques LM qui explosent comme pour un de nos forumeurs ça devient une vraie catastrophe.
    Après avoir réfléchi, j'abandonne ce projet, mes LM si tu veux, donnes-moi ton adresse par MP et je te les envoies, pour la bonne cause :-D

    J'ai acheté 3 drivers en Hollande, http://www.stappenmotor.nl/Datasheets/m ... 50-5.6.htm 210€ et ils acceptent 5,6 A et ils ont les protections nécessaires. 8-)

    Bien sur, il y a toujours moyen d'avoir moins cher par ici ou par là et on le fait par plaisir et on ne compte pas les quelques aprem passées.

    Et qui peut dire que ce n'est pas constructif ce que j'ai dit car je n'ai fait que peser le pour et le contre? :wink:
     
  3. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Merci pour la proposition j'apprécie le geste mais j'ai déjà les LMDs qu'il me faut.

    Je comprends ta réflexion et j'allais faire le même choix que toi : ne pas perdre du temps avec l'électronique. J'ai changé d'avis car j'habite en appartement et il est difficile pour moi de faire la partie mécanique ici : Il fallait bien que je m'occupe! :wink:

    Hormis l'aspect "c'est moi qui l'ai fait" (qui est un point important pour moi), le principal avantage technique des solutions LMD est son côté facilement réparable/améliorable. Le composant en lui même est loin d'être exceptionnel en terme de performances mais suffit pour notre application. Il possède aussi des fonctions intégré de protections (thermique et en courant).

    Côté prix, on ne peut pas comparer les deux solutions : 5.6A contre 3A pour les LMDs. Les solutions avec les LMDs sont de toute façon rentables que si tu les commandes en samples. Personnellement je n'ai pas acheté ni les LMD (samples) ni les pics (ancien stock de samples à l'époque où microchip était sympa) donc je ne vais pas m'en tirer pour très cher. Pour l'instant ma plus grosse dépense est un programmateur de PIC un peu sérieux (clone de Pickit2) pour une vingtaine d'euros, après c'est l'aspirine :wink: .

    Pour les LMDs qui explosent, je pense que s'il n'y a pas de de soucis d'alimentation et de refroidissement je ne vois pas pourquoi ça arriverait. Les gens négligent trop souvent le refroidissement des éléments de puissances qui est un facteur prépondérant pour leur durée de vie. Quand je parle de refroidissement c'est : radiateur + pâte thermique + bon contact entre les 2 + ventilateur si besoin dans un environnement non confiné.

    Je pense que ta carte te donnera entière satisfaction. Mais sache que tu resteras avec un goût amer dans la bouche : tu ne pourras jamais gouter aux fonctions "Pas de chat", "Power torque" et "Power reduction". :wink:

    Xavier
     
  4. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Comme promis je vous livre le chronogramme mesuré en sortie du PIC pour une fréquence de pulse d'environ 100kHz (un peu plus). Je ne poste que celui pour Dir_in = 0 mais bien entendu les 2 sens marchent :-D

    Xavier

    X1_delay.png
    ↑  Latence de ~5.4us pour DAC_B et ~5.6us pour DAC_A


    X1_chron.png
    ↑  Table des sinus, on remarque bien que DIR_A et DIR_B changent après le passage à 0 des DAC_A et DAC_B (contournement du """bug""" des LMDs)
     
  5. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Voici les photos de la carte à moitié monté pour faire les tests sur le PIC.

    Xavier

    demi-monte.jpg
    ↑  Carte sans la partie LMD cablé (capa et résistances)


    mesures.jpg
    ↑  Carte avec sondes de l'analyseur logique
     
  6. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Bonsoir,

    Un peu de nouvelles de l'avancement :

    J'ai eu un mal fou à faire marcher la référence de tension du pic (DAC). Je l'utilise pour fournir une tension de référence aux LMDs ce qui permet de choisir le courant et donc de le réduire en mode réduction de puissance/courant. Ce "DAC" (convertisseur numérique->analogique) n'est vraiment pas bien documenté dans la datasheet du pic, j'ai eu du mal à trouver pourquoi ça ne marchait pas : en fait il faut mettre la pin de sortie du DAC (RA2) en IN... Pas très logique et surtout non documenté...
    De plus le calcul avec le réseau de résistance de la datasheet est faux : décidément 2 boulettes pour le même module!

    Sinon j'ai soudé (à l'arrache) les condensateurs de puissances (fond de tirroir). Maintenant il ne reste plus grand chose à cabler pour tester la carte avec les moteurs (4 résistances et 4 condensateurs).

    J'ai commandé une alimentation à découpage 48V 7.3A. J'espère que ça suffira pour alimenter mes 3 moteurs en 3A, vous en pensez quoi?

    Xavier
     
  7. natale

    natale Compagnon

    Messages:
    1 022
    Inscrit:
    6 Novembre 2006
    Localité:
    Yvelines 78
    Petit Pas : un de plus!
    Les alims à decoupage ne sont pas le top pour ce type de circuit car la puissance en travaillant en PWM fatigue l'alim que genere un ripple interessant à detriment de la performance du pilotage des moteurs.
    Pour la puissance un bon transfo ->pont diode->condos macho->res de decharge est le nec plus ultra... :wink:
    Sinon le debit est suffisant car jamais les 3 axes " sucent" tout la puissance dispo (A) au meme temps
     
  8. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Merci natale, je vois de quoi tu veux parler. Malheureusement j'ai déjà passer commande. Je suis pas très malin de poser les questions après :???:
    C'est vrais que l'alim ne va pas aimer les appels de courants, il faudra que je le mesure. J'espère lisser ce courant avec un filtre LC pour afin d'éviter l'usure prématuré de l'alim. Quant au ripple, le LMD18245 est asservi en courant et avec le filtrage, je ne vois pas vraiment de gros soucis.

    Pour info, à courant constant l'alim est donnée pour un ripple de 10mV max, je n'ai pas d'info sur les transitoires mais je me doute qu'elles doivent êtres bien plus important. Sa fréquence de découpage est de 40kHz.

    Je suis d'accord avec toi l'alim linéaire est plus robuste, mais elle est plus chère et non régulée (je suis presque à la limite de tension des LMDs).

    Xavier
     
  9. JKL

    JKL Compagnon

    Messages:
    1 995
    Inscrit:
    1 Avril 2008
    Petit Pas : un de plus!
    On ne place pas deux asservissements l'un derrière l'autre. Le courant des moteurs est régulé par le PWM, pourquoi mettre une régulation encore devant ?????
    Quant au prix si on achète les deux chez le même fournisseur, je ne vois pas comment un transfo + un pont de diodes + un condensateur serait plus cher qu'une alim régulée et à qualités égales.
     
  10. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Je ne vois vraiment pas pourquoi on ne placerait pas 2 asservissements l'un derrière l'autre? Un exemple, EDF asservi sa fréquence/tension ça voudrait dire que l'on ne peut pas faire d'asservissement lorsque l'on utilise le réseau EDF?

    Pour mon cas, le souci est la tension max des LMDs de 55V, je suis à 48V donc il vaut mieux être régulé pour éviter de trop jouer avec les limites du composant, d'autant que je suis à 3A de courant.

    Le prix d'une alimentation linéaire est essentiellement due au cuivre du transformateur. Si mes souvenirs sont bon, dans un transformateur la densité de puissance transmissible est proportionnelle au carré de la fréquence d'entrée. Dans le cas de cette alimentation à découpage je suis à 40kHz presque 3 décades au dessus de celle du secteur... A l'heure où le cuivre coûte plus cher que quelques composants en silicium, les alimentations à découpage coûtent moins cher à performance (courant/tension) égales et pour un encombrement bien moindre.
    Pour vous en persuader il suffit de regarder comment sont fait vos "blocs secteurs" de vos appareils domestiques.

    J'ai travaillé dans la téléphonie mobile chez une grosse entreprise (qui licencie actuellement). J'étais en charge de mettre en place un banc de test automatique pour la caractérisation de la puce de puissance des téléphone portable. On pouvait y trouver 4 alimentations à découpage de d'1A chacune... Ça dans votre téléphone. La fréquence de découpage est d'1MHz.

    Xavier
     
  11. JKL

    JKL Compagnon

    Messages:
    1 995
    Inscrit:
    1 Avril 2008
    Petit Pas : un de plus!
    Horsot, surtout surtout tu fais comme tu le sens. Ce que j'en dis tu t'en tapes.

    J'aime beaucoup les gens qui posent des questions sur les forums alors qu'ils savent !!!!
     
  12. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    JKL, ma question sur l'alim à découpage était bien réelle! Ce n'est pas parce que je sais comment marche une alimentation à découpage que je sais si elle ira dans ce cas. Je ne connais pas du tout les contraintes de la CNC, j'apprends...

    Je suis désolé que tu l'ai mal pris, je me suis mal exprimé à la fois dans la question et dans la réponse que je t'ai faite. Je n'étais pas d'accord avec toi alors j'ai été abrupte, un manque de tact flagrant (mon chef dirait "dût à l'âge" :sad: )

    J'espère juste ne pas avoir fait un trop mauvais choix en choisissant cet alimentation pour la CNC. J'espère surtout que je vais pouvoir "rectifier le tir" avec un filtre LC pour la "soulager".

    Xavier
     
  13. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    Bon, le we est passé je m'étais mis comme objectif de faire marcher la carte avec un moteur... Résultat... Pas pour cette fois-ci! :smt089

    J'ai monté le reste de la carte et maintenant le pic ne marche plus (j'ai essayé avec 4 différents) alors que les simulations sont nikels. J'ai donc tout redémonté comme avant (vive la tresse à dessouder!) et là toujours rien ne sort des pins du pic... J'en ai donc profité pour tester pour la première fois de la fonction debug en circuit du pickit2 (génial ce truc!). Lancé en mode "débug" le programme marche! Donc à priori pas de problème "électrique", ni de code...

    Content d'avoir trouvé une configuration qui marche, je met la même version (même source) mais sans le debug dans le pic (version "Release") et là vous vous doutez : ça ne marche plus... :smt108 . J'ai vérifié que le programme dans le pic soit bon (qu'il soit le même que celui pour lequel je l'ai programmé), donc à priori pas de souci du coté de la programmation...

    Avez vous déjà eu ce genre de souci? J'ai pensé à un problème de quartz mais il me semble tout de même osciller?

    Merci d'avance

    Xavier
     
  14. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    J'ai enfin trouvé je commençait à désespérer! en fait ça venait du code (codé avec les pieds?)! :-D

    Pour information :

    En mode debug le programme marchait car il il était dans un configuration "spéciale" à cause des jumpers présents sur la carte dont les pins servaient aussi au connecteur de debug. Dans ce mode, le programme ne passait pas dans la zone bugguée.

    En mode "normal" (release) le connecteur n'étant pas là, la configuration était différente. Et le programme plongeait tout droit sur un bug sioux du code. Le bit carry du registre de travail qui était à 1 lors d'un "rrf" ce qui me faisait mettre +128 au résultat. Le truc c'est que ce résultat sert à adresser une table en mémoire programme et donc evoyait mon pointeur programme dans une zone "morte"... je ne pense pas avoir été très clair :smt017

    Aller je me remet à souder! Comme dirait mon père : "Faire et défaire c'est toujours travailler!" :wink: En espérant ne pas avoir cramé les LMD à force de les souder/dessouder :???:

    Xavier
     
  15. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Petit Pas : un de plus!
    :-D :-D :-D Le moteur tourne!!! :-D :-D :-D

    Désolé pas de vidéo, je n'ai pas de caméscope! Puis voir un moteur pas à pas tourner vous allez me dire que ça sent le déjà-vu!

    Finalement rien de cassé question soudure les LMDs c'est vraiment du costauds, je peux vous dire que je ne les ai pas vraiment ménagés! :wink:

    A première vue il y a déjà un souci dans la partie micropas (je suis en 1/32 de pas tout le temps quelque soit la position des jumpers!). Maintenant Yapuka en espérant qu'elle soit pleinement fonctionnelle bientôt!

    Woa la vache , je suis content! :-D :-D :-D

    Xavier
     
Chargement...

Partager cette page