Stepper Motor Control with Codesys
Stepper Motor Control with Codesys
Bonjour,
J'essaie de faire fonctionner un moteur pas à pas avec un driver DRV8825 sur un Raspberry Pi 3 A+ avec Codesys 3.5 SP17. Le moteur pas à pas utilisé est un JK20HS30-0604. J'ai appliqué le schéma suivant :
J'ai déjà réglé la tension à environ 0,25 V (Vref. = 1/2 I max.) avec le potentiomètre sur le DRV8825.
Je veux réaliser un exemple simple :
Lorsque j'appuie sur un bouton, je voudrais que le moteur accélère pendant 3 secondes jusqu'à une vitesse élevée, puis maintienne cette vitesse pendant 2 secondes et enfin décélère pendant 3 secondes jusqu'à l'arrêt complet.
J'ouvre le projet nommé " StepperTestProject " disponible ici :
https://forge.codesys.com/drv/sm3raspis ... home/Home/
Dans le " Visu_DRV8880 " il y a tellement de FB que je ne sais pas lequel je dois prendre ainsi que la plage des paramètres d'entrée à régler pour mon exemple. Il y a aussi un POU mais je ne comprends pas ce qu'il fait car il est en ST et je ne programme qu'en Ladder (LD) ou SFC.
Qui peut m'aider et me donner plus de détails pour avoir un moteur pas à pas fonctionnel ?
D'avance merci pour votre aide.
J'essaie de faire fonctionner un moteur pas à pas avec un driver DRV8825 sur un Raspberry Pi 3 A+ avec Codesys 3.5 SP17. Le moteur pas à pas utilisé est un JK20HS30-0604. J'ai appliqué le schéma suivant :
J'ai déjà réglé la tension à environ 0,25 V (Vref. = 1/2 I max.) avec le potentiomètre sur le DRV8825.
Je veux réaliser un exemple simple :
Lorsque j'appuie sur un bouton, je voudrais que le moteur accélère pendant 3 secondes jusqu'à une vitesse élevée, puis maintienne cette vitesse pendant 2 secondes et enfin décélère pendant 3 secondes jusqu'à l'arrêt complet.
J'ouvre le projet nommé " StepperTestProject " disponible ici :
https://forge.codesys.com/drv/sm3raspis ... home/Home/
Dans le " Visu_DRV8880 " il y a tellement de FB que je ne sais pas lequel je dois prendre ainsi que la plage des paramètres d'entrée à régler pour mon exemple. Il y a aussi un POU mais je ne comprends pas ce qu'il fait car il est en ST et je ne programme qu'en Ladder (LD) ou SFC.
Qui peut m'aider et me donner plus de détails pour avoir un moteur pas à pas fonctionnel ?
D'avance merci pour votre aide.
Avec mes meilleures salutations
- Béryl
- Mi homme - Mi automate
- Messages : 1660
- Inscription : 20 oct. 2015, 12:00
- Localisation : localhost
Re: Stepper Motor Control with Codesys
Je ne maitrise pas bien le sujet, mais je suis surpris que la pinoche ENABLE ne soit pas gérée.
Re: Stepper Motor Control with Codesys
Bonjour,
Tout les schémas que j'ai vu laisse ENABLE déconnecté et c'est correct.
Avec mes meilleures salutations
Re: Stepper Motor Control with Codesys
Tu pourrais m'être le fichier ST en question ? (partie déclaration des entrées sorties compris)
<< La vie d'un homme passe par trois phases : apprentissage, apprentissage et apprentissage. >>
Et j'ai même pas fini la première phase
Re: Stepper Motor Control with Codesys
Bonjour,
Pour rappel le fichier du projet complet est téléchargeable via le lien donné dans mon post original.
J'aimerai vraiment utilisez uniquement le langage LD pour la programmation car je ne suis pas le seul à devoir intervenir dans la programmation.
D'avance merci pour votre aide.
Ci-joint une capture d'écran du programme (car le forum ne permet l'upload que de fichiers graphiques) ainsi que les différents FB moteur du WebVisu.
Pour rappel le fichier du projet complet est téléchargeable via le lien donné dans mon post original.
J'aimerai vraiment utilisez uniquement le langage LD pour la programmation car je ne suis pas le seul à devoir intervenir dans la programmation.
D'avance merci pour votre aide.
Avec mes meilleures salutations
Re: Stepper Motor Control with Codesys
Ce ST sert uniquement à la déclaration/instanciation de 3 FB qui se nomme (SMC_StartupDrive). Ce FB a une seule entrée du nom de "Axis" qui est de type : AXIS_REF_SM3 (Ce dernier comporte plusieurs paramètres voir ici).
Si je devais résumer, ton PLC_PRG crée trois variables du type SMC_StartupDrive qui lui-même composait plusieurs variables (Word, Bool, INT ...etc).
Si tu ne veux pas lire du ST et t'amuser à trifouiller dans les FB fournis. Je te conseille donc de lire la datasheet du DRV8825 (disponible ici. Ça te permet d'identifier quel signal envoyé, sur quelle branche et la périodicité de chacun (Fréquence, temps de maintien ...etc).
PS la syntaxe du ST n'est pas très difficile à comprendre. Ça permet surtout de traduire plusieurs 10 de réseaux en LD en quelques lignes en ST.
Si je devais résumer, ton PLC_PRG crée trois variables du type SMC_StartupDrive qui lui-même composait plusieurs variables (Word, Bool, INT ...etc).
Si tu ne veux pas lire du ST et t'amuser à trifouiller dans les FB fournis. Je te conseille donc de lire la datasheet du DRV8825 (disponible ici. Ça te permet d'identifier quel signal envoyé, sur quelle branche et la périodicité de chacun (Fréquence, temps de maintien ...etc).
PS la syntaxe du ST n'est pas très difficile à comprendre. Ça permet surtout de traduire plusieurs 10 de réseaux en LD en quelques lignes en ST.
<< La vie d'un homme passe par trois phases : apprentissage, apprentissage et apprentissage. >>
Et j'ai même pas fini la première phase
Re: Stepper Motor Control with Codesys
Bonjour,
Merci pour ces explication.
Je suis arrivé à faire bouger le moteur en utilisant le FB MC_Power et le MC_JOG. Par contre je n'arrive à faire trouver le moteur que dans un sens. Lorsque j'essaie dans l'autre sens il ne bouge pas par contre les FB semble réagir normalement comme si le moteur tournait... Si j'enlève la connection entre la pin DIR et le Raspi alors le moteur tourne également mais sans changer de sens.
Une idée...?
Merci pour ces explication.
Je suis arrivé à faire bouger le moteur en utilisant le FB MC_Power et le MC_JOG. Par contre je n'arrive à faire trouver le moteur que dans un sens. Lorsque j'essaie dans l'autre sens il ne bouge pas par contre les FB semble réagir normalement comme si le moteur tournait... Si j'enlève la connection entre la pin DIR et le Raspi alors le moteur tourne également mais sans changer de sens.
Une idée...?
Avec mes meilleures salutations
Re: Stepper Motor Control with Codesys
Si je me fie à la doc fournis (Page 17: 8.4.1 STEP/DIR Interface): La direction moteur dépond de deux paramètres pour se déplacer dans la table d'indexation. Chaque front montant sur la PIN "STEP" incrémente/décrémente le pointeur de table. le choix d'incrémenter ou décrémenter est lui déterminer par la pin DIR.
Il est indiqué également dans le descriptif de la "Table 2" (Page 14), que la PIN DIR Low => une direction/ PIN DIR High => l'autre direction.
Donc c'est normal que si tu débranche le fil (donc état "low") la moteur continue de tourner à chaque front montant de STEP (Ce n'est pas un défaut) en soit. Si tu veux tourner ton moteur dans l'autre sens force ta PIN Dir à l'état "High" (ou TRUE).
Cela devrait marché avec un peu de chance
Tiens nous au courant
Il est indiqué également dans le descriptif de la "Table 2" (Page 14), que la PIN DIR Low => une direction/ PIN DIR High => l'autre direction.
Donc c'est normal que si tu débranche le fil (donc état "low") la moteur continue de tourner à chaque front montant de STEP (Ce n'est pas un défaut) en soit. Si tu veux tourner ton moteur dans l'autre sens force ta PIN Dir à l'état "High" (ou TRUE).
Cela devrait marché avec un peu de chance
Tiens nous au courant
<< La vie d'un homme passe par trois phases : apprentissage, apprentissage et apprentissage. >>
Et j'ai même pas fini la première phase
Re: Stepper Motor Control with Codesys
Bonjour,
Oui parfaitement j'ai aussi compris le fonctionnement ainsi.
Oui parfaitement j'ai aussi compris le fonctionnement ainsi.
Si je met à l'état haut avec le 3,3 du Raspi la pin DIR, le moteur ne fonctionne ni dans un sens ni dans l'autre. J'ai essayé avec un autre moteur et c'est pareil. Peut-être un problème hardware...
Avec mes meilleures salutations
-
- Mi homme - Mi automate
- Messages : 2076
- Inscription : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: Stepper Motor Control with Codesys
salut, une idée toute bête, c'est pas du npn ton driver (8825 c'est la puce qui est dessus, pas la carte en elle même)?
et qu'en est -il de la config de ton axe dans codesys ?
l'as tu autorisé à tourner dans les deux sens ?
et qu'en est -il de la config de ton axe dans codesys ?
l'as tu autorisé à tourner dans les deux sens ?
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part !