Driver de puissance maison pour moteur pas à pas.

Modérateurs: guol64, mike688, Beau94, rednexage, patduf33, jms, fabrice c, freedom2000, didierh, fred250, wintereivax

Messagede fabrice c » 03 Nov 2009, 19:15

ne pas rester que sur l'assembleur
pour ceux qui connaisse le C un source de départ (avec bug corrigé) se trouve ici: http://www.embeddedtronics.com/microstep.html
Solidworks, motif et objet 3D
fabrice c
Modérateur
Modérateur
 
Messages: 2059
Inscription: 19 Juin 2008, 12:47
Localisation: reunion

Publicité

Messagede freedom2000 » 03 Nov 2009, 22:05

Bon, voici le code source de mon driver

Il est en licence GPL car basé sur le code PicStep qui a été le premier à corriger le "bug" du LMD.

Vous avez donc le droit de faire ce que vous voulez avec ce code. MAIS si vous redistribuez le binaire (modifié ou non) le source doit être distribué aussi ainsi que la licence GPL.

Ces clauses légales étant dites, je vous soumets également les tracés des courbes de courant utilisées.

Comme vous voyez la table sinus que j'utilise passe "au dessus" de la courbe sinus théorique ; il n'y a donc pas de perte de couple liée à d'éventuelles troncatures.
C'est cette table qui est par défaut utilisée lors de la compilation du code.
Il en existe une autre dans le source qui maximise le couple disponible tout en préservant la précision angulaire. Par contre cette courbe ne garantit pas un couple constant... (un peu comme un pilotage en 1/2 pas sans compensation de couple).

A vous de choisir et de tester !

Cette version est stable. Je l'utilise depuis dimanche dernier sans problème. La réduction de courant est particulièrement efficace, le LMD ne surchauffe plus dès qu'il passe à l'arrêt. Le timeout se déclenche une première fois 30s suite à inactivité et baisse le courant de 25% assurant un pilotage à 75% de puissance, puis 60s plus tard il descend à 40% de puissance. Dès que l'axe reçoit un signal 'step' il repasse en pleine puissance.

Outre les améliorations citées et la correction du bug du datasheet du LMD, ce driver est totalement compatible avec la carte Mdog et bien sûr avec sa documentation.

Si Mdog passe par ici , je l'autorise évidemment à mettre ce driver (et ses sources) sur son site : http://ustep.homecnc.fr/

Have fun et vive le logiciel libre :-D

JP

edit : le source est déplacé sur mon site ici (dans sa dernière version) : http://freedom2000.free.fr/CNC_V2_files/16F57%b5step_JPG%27s_driver.zip
Fichiers joints
CNC_JPG_31.jpg
CNC_JPG_32.jpg
16F57µstep_single_table_sinus_idle_mode.zip
Driver JPG pour carte Mdog
release V1 du 2/11/2009
binaire seulement (source sur mon site)
licence GPL
(894 Octets) Téléchargé 103 fois
Dernière édition par freedom2000 le 08 Nov 2009, 23:36, édité 5 fois.
Avatar de l’utilisateur
freedom2000
Modérateur
Modérateur
 
Messages: 1447
Inscription: 04 Jan 2009, 12:10
Localisation: Toulouse

Messagede guol64 » 03 Nov 2009, 22:23

Merci freedom pour la source je vais regarder tout ça attentivement.
Je suivrais tes recommandations pour toute diffusion ultérieure (surement sur ce post d'ailleurs).

Pour répondre à ta question, autant je suis nul en électronique autant l'informatique c'est mon métier, donc si je ne comprends pas je me renseigne et en général je me débrouille.

As-tu ouvert un nouveau post qui concerne le changement de pic? Si je peux aider se sera avec plaisir mais avec mes modestes moyens.
Par contre si tu as besoins de LMD pour des tests éventuels je crois qu'il m'en reste quelques uns et je pense pouvoir en avoir d'autre (je peux créer pas mal de nouvelles adresses mail "vierges" pour les échantillons).

Je crois avoir lu que tu étais Toulousain, je le suis aussi mais expatrié à Pau depuis plus de 20ans, moins d'une heure de voiture et hop : il se peut que je te demande de venir voir ta machine quand elle sera finie :wink:
guol64
Modérateur
Modérateur
 
Messages: 1247
Inscription: 29 Mar 2009, 09:51
Localisation: PAU

Messagede freedom2000 » 03 Nov 2009, 22:37

guol64 a écrit:Merci freedom pour la source je vais regarder tout ça attentivement.

As-tu ouvert un nouveau post qui concerne le changement de pic? Si je peux aider se sera avec plaisir mais avec mes modestes moyens.
Par contre si tu as besoins de LMD pour des tests éventuels je crois qu'il m'en reste quelques uns et je pense pouvoir en avoir d'autre (je peux créer pas mal de nouvelles adresses mail "vierges" pour les échantillons).

Je crois avoir lu que tu étais Toulousain, je le suis aussi mais expatrié à Pau depuis plus de 20ans, moins d'une heure de voiture et hop : il se peut que je te demande de venir voir ta machine quand elle sera finie :wink:


You are welcome !

C'est mon ami "horsot" qui va ouvrir le post, c'est lui qui code cette fois ci. Il va faire un best of de tout ce qui existe autour du LMD :-D

De mon côté j'ai effectivement déjà dégagé 3 LMD... Deux pendant les tests (inversion + et -) et un en enlevant le radiateur pour en mettre un plus gros. La pâte thermique était de colle thermique... Il a fallu que j'y aille à la pince pour séparer le LMD du radiateur :x

Tu passes quand tu veux, ma fraiseuse est fonctionnelle :-D

JP
Dernière édition par freedom2000 le 03 Nov 2009, 23:30, édité 1 fois.
Avatar de l’utilisateur
freedom2000
Modérateur
Modérateur
 
Messages: 1447
Inscription: 04 Jan 2009, 12:10
Localisation: Toulouse

Messagede freedom2000 » 03 Nov 2009, 22:42

guol64 a écrit:
Je crois avoir lu que tu étais Toulousain, je le suis aussi mais expatrié à Pau depuis plus de 20ans, moins d'une heure de voiture et hop:wink:


et hop le manche :-D

Moins d'une heure tu exagères un peu : 198 km :-D
Je serai à Tarbes le week end prochain (mes beaux parents sont de là bas !)

JP
Avatar de l’utilisateur
freedom2000
Modérateur
Modérateur
 
Messages: 1447
Inscription: 04 Jan 2009, 12:10
Localisation: Toulouse

Messagede guol64 » 03 Nov 2009, 23:12

Tu as raison ... 2h :siffle:

par contre Tarbes à 30mn :-D

en fait j'habite à Nay.
guol64
Modérateur
Modérateur
 
Messages: 1247
Inscription: 29 Mar 2009, 09:51
Localisation: PAU

Messagede horsot » 04 Nov 2009, 13:26

freedom2000 a écrit:C'est mon ami "horsot" qui va ouvrir le post, c'est lui qui code cette fois ci. Il va faire un best of de tout ce qui existe autour du LMD :-D


Salut à tous,

Je vois qu'il est un peu mention de mon travail ici, alors je vais en parler un peu.

Je ne pense pas que ce sera une version "bestof" mais plutôt une version améliorée de ce que j'ai pu voir à droite à gauche avec quelques touches de JP et personnelles.

J'ai effectué un routage complet "from scratch" de la carte Picstep V4 avec principalement un pic 16F886a au lieu du 16F628a. Les différences sont :
- Ajout d'un connecteur ICSP sur la carte (plus besoin de retirer le pic pour le reprogrammer)
- Ajout d'un régulateur 5V permettant d'avoir une tension d'alim ainsi qu'une ref de tension pour les LMD plus "propre".
- Ajout d'un bouton de reset.
- Ajout d'un plan de masse continu (sauvons du perchlo) , séparation de la masse puissance et signaux (reliée au niveau du connecteur d'alim des LMD).
- Ajout de 5 jumpers de configuration (7 en tout)
- Ajout d'un "enable" (présent sur picstep mais pas sur µstep).
- Ajouts de 3 leds d'état des alims.
- Les LMDs sont en bord de carte, les radiateurs imposants ou intégrés au boitier sont plus simples à placer!
- La taille a été réduite 60*75mm.
- Distances d'isolation larges (pas de pistes entre pin) et les pastilles des LMDs ont été grossi.
- Pilotage de la ref de tension des LMD par le pic pour le choix du courant moteur ainsi que la réduction de courant par le pic (et programmable par jumpers).

Le choix du pic 16f886a est simple :
- Il se trouve partout, votre petit magasin d'électronique du coin l'a surement. S'il ne l'as pas demandez le 16F876a. Le code pour notre application sera portable entre ces 2.
- Il est à un peu plus de 10€ les 5 chez farnell, attention les prix varient bcp selon le fournisseur.
- Boitier 28 pins.
- Gestion des interruptions (comme le 16f628a de picstep mais pas comme le 16f57 de µstep)

Le pinout du pic a été revu pour simplifier le routage (mais pas le code ni la table de sinus!). De plus mon choix s'est porté sur un routage simple face faisable en amateur sans trop de soucis quitte à multiplier les straps. D'ailleurs c'est le principal inconvénient de cette carte : 17 straps par carte, à vos fers à souder!

Actuellement la version 0.1 du PCB est parti en fabrication et devrait arriver la semaine prochaine, le programmateur (clone du pickit2) de pic devrait arriver ces jours-ci.
Le code, basé sur µstep de JP et picstep, est actuellement phase de debug au simulateur. Cette première version est simplifié et est basé sur la table de sinus de JP. Pour l'instant il n'y a pas d'intégration de réduction de courant (mais prévue) et pas de sélection de courant max moteur (mais prévue aussi).

J'ouvrirai un post dès que j'aurais les premiers résultats concluants.
Le projet fait sous kicad (logiciel libre et gratuit de routage électronique) ainsi que le firmware et les codes sources du programme seront sous licence libre GPL. Sa diffusion, pour ma part, sera également gratuite. Afin d'éviter de mélanger les versions béta (et de vous faire perdre votre temps) je ne les délivrerai qu'une fois le circuit vraiment fonctionnel.

J'oubliais, la carte et son firmware s'appellent "Petitpas", je sais ce n'est pas très original...

Merci à JP, à Alan (auteur de picstep que je ne connais pas) et mdog (que je ne connais pas non plus!) pour leur travail en amont qui me simplifient grandement la vie pour "Petitpas".

Xavier

Un "Petitpas" pour l'... ok j'arrête ;-)
horsot
pilier
pilier
 
Messages: 769
Inscription: 28 Mai 2009, 00:34
Localisation: Toulouse

Messagede freedom2000 » 04 Nov 2009, 15:10

horsot a écrit:
Un "Petitpas" pour l'... ok j'arrête ;-)


Celle là tu me l'as sortie de la bouche :-D

On ne se refait pas quand on bosse dans le spatial ...

JP
Avatar de l’utilisateur
freedom2000
Modérateur
Modérateur
 
Messages: 1447
Inscription: 04 Jan 2009, 12:10
Localisation: Toulouse

Messagede fabrice c » 04 Nov 2009, 16:52

super
le source sera dans quel langage ?
Solidworks, motif et objet 3D
fabrice c
Modérateur
Modérateur
 
Messages: 2059
Inscription: 19 Juin 2008, 12:47
Localisation: reunion

Messagede cogchristian » 04 Nov 2009, 16:57

En assembleur.... il faut tout lire ...... :roll:
Cordialement
Christian
cogchristian
habitué
habitué
 
Messages: 148
Inscription: 16 Mar 2009, 09:14
Localisation: Sud-Est

Messagede horsot » 04 Nov 2009, 19:25

cogchristian a écrit:En assembleur.... il faut tout lire ...... :roll:
Cordialement
Christian


Rebonjour,

Le code est en assembleur car :
- Le code n'effectue pas de traitements, ni de boucles ou tests conditionnels complexes, là où le C prend tout son essor.
- Le C ne permet pas c'est de coder en "temps d'exécution constant". En clair, que le temps entre la détection d'un pulse "STEP" venant du PC et la commande effective du moteur soit constant quelque soit l'état du pic, la direction, la limitation en courant... Même s'il serait possible de faire un code à "à temps d'exécution constant" pour une version de compilateur de telle société à une date donnée avec tel et tel option de compilation, je ne suis pas garanti qu'il le soit sur un autre (je suis même sûr que non).

Sans compter que la famille 16f (la 18f est mieux mais c'est pas encore ça) n'est pas vraiment faite pour du C, l'architecture matérielle n'a pas été pensé pour. Pour l'avoir utilisé pendant plusieurs mois, le C sur pic ça marche, même plutôt bien, mais ça reste à mon goût du bricolage.

Je tiens à préciser que je suis un partisan des langages informatique de hauts niveaux. Par exemple, dans le cadre de mon travail, j'utilise couramment du C, du C++ mais préfère le python avec lequel je me prend beaucoup moins la tête.

Xavier
horsot
pilier
pilier
 
Messages: 769
Inscription: 28 Mai 2009, 00:34
Localisation: Toulouse

Messagede guol64 » 04 Nov 2009, 19:39

Bravo horsot,

Belle initiative, et à te lire je pense qu'il faut laisser faire les gens qui savent : alors bon courage. :wink:

Je te propose mon aide mais je ne serais pas d'une grande utilité, je suivrait ton post avec attention car il n'est jamais trop tard pour apprendre.

Freedom, vu que tu n'es pas loin de chez moi ce weekend, dit moi combien il te faudrait de LMD, je pourrais peut-être te dépanner.
guol64
Modérateur
Modérateur
 
Messages: 1247
Inscription: 29 Mar 2009, 09:51
Localisation: PAU

Messagede horsot » 04 Nov 2009, 20:15

freedom2000 a écrit:Celle là tu me l'as sortie de la bouche :-D

On ne se refait pas quand on bosse dans le spatial ...

JP


A ben bravo JP, moi qui voulait être incognito! ;-)

Guol64, je sais que tout le monde n'est pas JP mais il ne savait pas coder en assembleur il y a un mois et a déjà écris un firmware qui marche très bien!

Si tu veux t'y mettre il y a un très bon cours sur internet de bigonoff. Ado, j'ai appris mon premier langage de programmation avec ça. Il est gratuit mais il ne refuse pas les dons. Pour notre application lire premier cours (sur le 16f84) suffit. Pour information, son second cours est basé sur le 16f876 (pic que j'utilise pour "Petitpas") mais il faut avoir lu et compris le premier pour s'en sortir.
En quelques jours, ça te permettra de comprendre/corriger/améliorer les codes de JP ou de alan (picstep) ou le mien lorsqu'il sera dispo.

Bonne lecture

Xavier
horsot
pilier
pilier
 
Messages: 769
Inscription: 28 Mai 2009, 00:34
Localisation: Toulouse

Messagede guol64 » 04 Nov 2009, 20:34

Mon problème n'est pas l'assembleur (j'ai suivi exactement la méthode que tu préconise il y a quelques mois :wink: ) , mon problème serait plus lié à l'électronique (pas la soudure bien sûr :-D ).
guol64
Modérateur
Modérateur
 
Messages: 1247
Inscription: 29 Mar 2009, 09:51
Localisation: PAU

Messagede freedom2000 » 04 Nov 2009, 21:57

horsot a écrit:
Guol64, je sais que tout le monde n'est pas JP mais il ne savait pas coder en assembleur il y a un mois et a déjà écris un firmware qui marche très bien!

Si tu veux t'y mettre il y a un très bon cours sur internet de bigonoff.
En quelques jours, ça te permettra de comprendre/corriger/améliorer les codes de JP ou de alan (picstep) ou le mien lorsqu'il sera dispo.

Bonne lecture

Xavier


A vrai dire je connaissais l'assembleur d'il y a 25 ans et je n'y avais pas touché depuis ; mais ça n'a pas changé :-D

J'ai effectivement utilisé l cours de biginoff et celui ci qui est aussi très bien fait mais en anglais : http://www.gooligum.com.au/tutorials.html


Quant à mon code tu pourras le comprendre facilement, le corriger ça ne sera pas la peine :-D et l'améliorer --> je suis preneur :oops:

JP
Avatar de l’utilisateur
freedom2000
Modérateur
Modérateur
 
Messages: 1447
Inscription: 04 Jan 2009, 12:10
Localisation: Toulouse

PrécédenteSuivante

Retourner vers Electronique

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité