Driver de puissance maison pour moteur pas à pas.

  • Auteur de la discussion mdog
  • Date de début
Y

yogirainbow

Apprenti
Alors la j'ai honte
Le gars qui m'a fait le typon est un nase
Enfin tant pis, cela reste de ma faute
Merci a tous et je vous tiens informer de la suite
 
F

freedom2000

Compagnon
yogirainbow a dit:
Alors la j'ai honte
Le gars qui m'a fait le typon est un nase
Enfin tant pis, cela reste de ma faute
Merci a tous et je vous tiens informer de la suite

En fait il te suffit de dessouder le support de CI (tu coupes les pattes, tu dessoudes et tu en remets un neuf)
puis le transistor et le connecteur série
tu montes le transistor le connecteur et le CI de l'autre côté

et c'est tout !

JP
 
Y

yogirainbow

Apprenti
Super
Maintenant tout est OK
Merci beaucoup à tous
 
Y

yogirainbow

Apprenti
Juste une derniere question
Qu'utiliser vous comme moteur pas a pas, quel est leur couple et ou les avez vous acheter?
 
F

fabrice c

Compagnon
pour les pic l'ideal c'est le pickit (de microchip) avec ça au moins même un nul programme ses pic tout seul
moteur pas à pas chez soprolec.com
a+
 
Y

yogirainbow

Apprenti
bonjour
Sincerement désolé, je ne recommencerai plus
Par contre, concernant l'alimentation des moteurs et cartes, peux-tu m'en dire un peu plus car je pense prendre les memes que toi
 
F

freedom2000

Compagnon
yogirainbow a dit:
bonjour
Sincerement désolé, je ne recommencerai plus
Par contre, concernant l'alimentation des moteurs et cartes, peux-tu m'en dire un peu plus car je pense prendre les memes que toi

Don't worry on a tous la même tendance à déborder du sujet

Pour l'alim de la carte Mdog, il faut du 12V non régulé pour alimenter la carte elle même. Ce 12V est utilisé pour alimenter :
- un régulateur 5V intégré à la carte qui sert à alimenter la partie "logique"
- un circuit UNL2003A qui n'est autre qu'une série de transistors en darlington qui peut être utilisé pour piloter des relais 12V (par exemple)

Il faut aussi une alimentation pour la partie puissance (les moteurs). Cette alim doit être entre 12V et 55V (maximum absolu pour ne pas cramer les LMD). Cette alim est continue non régulée. Son schéma est très simple :


La résistance est optionnelle.

Personnellement j'ai besoin de vitesse sur des moteurs avec beaucoup de couple (donc une inductance assez élevée) il se démontre que pour augmenter la vitesse max des moteurs il faut monter leur tension au maximum.
J'ai donc une alimentation à deux transformateurs de deux ponts de diodes
une de 12V 10A (9V AC = 9 * racine(2) redressé filtré)
une de 35V 10A

le 12V sert à alimenter la carte
le 12V + le 35V en série = 47V qui servent à alimenter les moteurs

un gros condensateur de 12000 µF 75V assure le filtrage global de cette alim, un petit condo de 20V assure le filtrage de l'alim 12V seule



JP
 
Y

yogirainbow

Apprenti
Merci de vos reponses
Il ne me reste plus qu'a passer commande des moteurs pas à pas ainsi que des transfos et condos.
A bientot
Michel
 
F

freedom2000

Compagnon
yogirainbow a dit:
Merci de vos reponses
Il ne me reste plus qu'a passer commande des moteurs pas à pas ainsi que des transfos et condos.
A bientot
Michel

tu peux aussi (pour moins cher) prendre une alim quelconque de 12V (style alim de portable mais en 12V 1A) et un transfo + pont de diode + condo pour faire l'alim de 47V.

Moi j'ai deux alim en série parce que j'avais déjà celle de 35V et qu'il me manquait un peu de pêche et le 12V...

JP
 
F

Foxtrot

Compagnon

Ou rajouter simplement quelques spires de fil et redresser ....

On gagne un transfo.
 
F

freedom2000

Compagnon
Bonjour;

Quelques Bonnes nouvelles de mon driver

Voici une version stable qui offre les fonctionnalités suivantes :
totalement compatible avec la carte Mdog's µstep
mode µstep 1/2, 1/4, 1/8, 1/16 de pas
réduction de courant automatique à
75% de la puissance après 30s d'inactivité
40% de la puissance après 60s supplémentaires

performances mesurées :
- detection de l'interruption "Step"
; durée minimale de détection du pulse : 6 cycles --> t0 = 1.2 µs
; durée maximale de traitement du pulse : 68 cycles --> t1 = 13.6 µs
; durée maximale de détection et traitement du pulse : 74 cycles --> t0 + t1 = 14.8 µs


la durée d'impulsion doit donc être supérieure à 1.4 µs pour être détectée
la fréquence de pulse ne doit pas être plus élevée que 1/14.8 MHz = 67567 Hz pour ne pas perdre de steps
donc les réglages à appliquer :
sous Mach3 "kernel speed" maximum à 60 kHz
sous Mach3 "Step Pulse width" à mettre à 2 ou 3 µs

Et voici le driver en question

Merci de me dire ce que vous en pensez.

Je pense aussi faire une version qui détourne le jumper J2 pour régler l'option "avec/sans réduction de courant".
Il ne resterait alors que J1 pour choisir deux modes de µpas. Je pense garder 1/4 et 1/8 de µpas. Qu'en pensez-vous ?

JPVoir la pièce jointe 16F57µstep_single_table_sinus_idle_mode.zipdriver JPG pour carte µstep (version du 31/10/2009)
- table "sinus"
- réduction automatique de courant (30s + 60s)
 
G

guol64

Compagnon
Bonjour freedom,

Selon moi il ne faudrait pas se priver du 1/16, mais tant qu'à retravailler je pense qu'il faudrait revoir un peu la carte qui est très difficile à réaliser par un amateur, pour ma part j'utilise l'impression laser sur du papier glacé puis transfert par chauffage sur la plaque suivi du bain d'acide : le résultat est bon si les pistes ne sont pas trop fines.
J'ai retravaillé la disposition des composants pour éviter d'avoir des pistes trop faibles et trop proches.
A ce moment là rien n'empèche de rajouter des switchs, mais pour moi la modif qui me parait importante c'est de pouvoir règler l'intensité du courant : résistance variable?

Comme j'ai modifié les pistes et donc les connexions aux pates du PIC je serais très intérressé par la source de ton prog pour l'adapter à mes modifs.

A oui, petite question : comment as-tu mesuré les performances?
A+
 
F

freedom2000

Compagnon

Pour la carte tu as raison il vaut mieux prendre la version "modulaire" car la version que j'ai faite a des pistes vraiment trop serrées...
Tu as raison aussi pour le rajout de switchs. J'ai aussi quelques autres idées qu'on est en train de mettre au point avec Horsot en changeant de Pic et en exploitant au mieux les possibilités du LMD (ie piloter sa tension de référence pour la DAC).
Tu as raison aussi pour le réglage des courants --> pris en compte par un ajustable sur la carte (ou simplement en mettant des raccords tulipe sur la carte dans lesquels s'enfiche la résistance (comme ça on peut la changer)

Les perfos sont mesurés sous MPASM dans l'environnement de simulation. C'est donc fiable !

Pour les sources ça va venir ! Tu maitrises l'assembleur ?

JP
 
F

freedom2000

Compagnon
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

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



Voir la pièce jointe 16F57µstep_single_table_sinus_idle_mode.zipDriver JPG pour carte Mdog
release V1 du 2/11/2009
binaire seulement (source sur mon site)
licence GPL
 
G

guol64

Compagnon
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
 
F

freedom2000

Compagnon

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

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

Tu passes quand tu veux, ma fraiseuse est fonctionnelle

JP
 
F

freedom2000

Compagnon
guol64 a dit:
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

et hop le manche

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

JP
 
G

guol64

Compagnon
Tu as raison ... 2h

par contre Tarbes à 30mn

en fait j'habite à Nay.
 
H

horsot

Compagnon
freedom2000 a dit:
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

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
 
F

freedom2000

Compagnon
horsot a dit:
Un "Petitpas" pour l'... ok j'arrête

Celle là tu me l'as sortie de la bouche

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

JP
 
C

cogchristian

Apprenti
En assembleur.... il faut tout lire ......
Cordialement
Christian
 
H

horsot

Compagnon
cogchristian a dit:
En assembleur.... il faut tout lire ......
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
 
G

guol64

Compagnon
Bravo horsot,

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

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.
 
H

horsot

Compagnon
freedom2000 a dit:
Celle là tu me l'as sortie de la bouche

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
 
G

guol64

Compagnon
Mon problème n'est pas l'assembleur (j'ai suivi exactement la méthode que tu préconise il y a quelques mois ) , mon problème serait plus lié à l'électronique (pas la soudure bien sûr ).
 
F

freedom2000

Compagnon

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é

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 et l'améliorer --> je suis preneur

JP
 

Sujets similaires

N
Réponses
15
Affichages
1 387
Doctor_itchy
D
J
Réponses
6
Affichages
288
moufy55
V
Réponses
11
Affichages
1 400
laurent12100
L
D
Réponses
9
Affichages
583
Doctor_itchy
D
J
Réponses
39
Affichages
4 155
gégé62
M
Réponses
11
Affichages
647
Bat74