Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

PILOTAGE 4 AXES POUR MOTEUR PAS A PAS + 4 SERVOS MOTEURS CC+8 ENTREES+8 SORTIES(VERSION USB)


Information sur la source

Catégorie :Périphériques Classé sous : rs232, pilotage, usb, microcontroleur, moteur Niveau : Initié Date de création : 06/09/2005 Date de mise à jour : 25/11/2007 11:06:20 Vu / téléchargé: 30 219 / 3 292

Note :
9,25 / 10 - par 4 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Ce programme permet de développer des applications basées sur des motorisations a moteurs pas à pas.
On peut piloter 4 moteurs simultanément en mode pas entier ou demi pas sur une plage de vitesse de 2,5Hz à 65500Hz En plus il est prévu le pilotage de 4 servomoteurs courant continu, de 8 entrées et de 8 sorties.
Et pour ceux qui auraient besoin d'un fonctionnement trés doux j'ai également intégré un mode micro pas (2 axes par carte)
J'ai rajouté une carte 4 axes micro pas basée sur le circuit ALLEGRO A3977 C'est une carte complète en format Europe piloté par USB (module FDTI en port virtuel)

Il est prévu d’étendre le nombre de moteurs à 64.
Il y a une trentaines de commandes (deplacement, vitesse, accélération...) en plus j'y ai ajouté un éditeur de trajectoire par apprentisage

il peut être utilisées soit en mode interprété soit en mode embarqué soit en ligne de commande. On peut également mixer les différebts modes dans des developpement spécifiques. Il est tres facile de rajouter des commandes suplémentaires dans l'interpreteur (réalisation de macro-commannde ou de fonctions spécifiques)
L’application comprend une fonction pour la conversion en fichier ‘C’ compilable.
Enfin le module peut être utilisé comme composant intégré à un programme.(voir application complémentaire)

Pour ceux qui voudraient tester ce code sans le compiler vous trouverez l'exécutable à l'adresse:
http://jlen.fr/telechargement_programme.html

 

Source

  • tout est dans le zip
tout est dans le zip

Conclusion

pour interfacer les moteurs j'ai utilitié une carte ZILOG Z8F64200100 pour la logique pour la puissance vous trouverez les typons dans le zip ( pas très compliqués: tout en simple face!! et pas de composants exotiques).
ce programme utilise le composant TCOMPORT (lien dans le fichier "NOTES.HTM").
Pour le fonctionnement tout ce qui concerne les déplacements est traité en logique déportée par la carte zilog : c'est le programme en 'C' (la carte est fournie avec son compliateur et son programmateur). L'interface homme/machine et la programmation des déplacements est faite par le PC.
Pour des explications plus détaillées allez voir le fichier "NOTES.HTM" dans le zip.
Compte tenu de la complexité et des possibilités de ce programme je n'ai ceratinement pas testé toutes les combinaisons possibles et je compte sur vous pour me signaler les bugs
La modification concerne les vitesses maxis qui ont été portées de 16000Hz à 65535Hz et les accélérations maxi qui passent à 1000Hz/ms
La bufferisation des commandes process en cours permet de masquer les temps de transmission.
1/11/2005 ajouter fichiers des cartes au format TCI(voir "NOTES.HTM")
corections du bug d'arret d'urgence suite à modification de la gestion des axes
modifier gestion des temps de cycle en mode pas à pas (sequence seule)
le 16/03/2006
Ajouter la carte 4 axes micro pas et les fichiers 'C' pour le pilotage
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

06 septembre 2005 16:14:35 :
changement de capture d'ecran
15 octobre 2005 08:31:12 :
rajouter les fichiers 'utilitaires.c','utilitaires.h'et 'sio.h' manquants
19 octobre 2005 15:07:31 :
extensions des performances à 65000Hz
20 octobre 2005 15:50:02 :
Ajout des commandes SAVEPOINT, SETORIGINE et RESTOREPOINT. Ajout de la bufferisation des commandes process en cours
01 novembre 2005 15:37:56 :
01/11/2005 corection du bug d'arret d'urgence modifier gestion d'affichage des temps de cycle en mode pas a pas (affichage du temps de cycle à chaque pas);
27 décembre 2005 10:59:22 :
ajout des mots clefs; suppression des jpeg des cartes
16 mars 2006 22:12:00 :
ajouter carte 4 axes micro pas USB + fichiers 'C' de pilotage
25 novembre 2007 11:04:40 :
ajouter le lien pour l'exécutable
25 novembre 2007 11:06:20 :
ajouter le lien pour l'exécutable

Commentaires et avis

signaler à un administrateur
Commentaire de Lewil le 14/10/2005 23:03:40

énorme ... je me plonge dedans ... ... rah est-ce que je pourrais remplacer ma carte de commande par la même que toi ? vite vite , le zip =)

signaler à un administrateur
Commentaire de jlen100 le 14/10/2005 23:17:46

bon je me suis apperçu qu'il manquait 2 fichiers 'C' dans le zip je les poste demain.
d'autre part je fini de tester une modification des timers de la carte ZILOG pour monter la frequence de pilotage des moteurs à 50000Hz (j'en ai besoin pour piloter une carte brushless) les tests devraient être treminés à la fin de la semaine prochaine je posterai le zip de modif.(uniquement les fichiers 'C')

signaler à un administrateur
Commentaire de jlen100 le 15/10/2005 08:35:47

le zip est à jour.
pour les modifications de vitesse il faudra encore attendre quelques jours (la frequence maxi passe à 65500 hz)

signaler à un administrateur
Commentaire de jlen100 le 19/10/2005 15:24:43

Comme promis j'ai passé les fréquences maxis à 65500Hz. Ceci à impliqué la refonte complète de la gestion des timers de la carte microcontroleur et quelques modif de déclaration de variable dans  le programme DELPHI (des fréquences négatives c'est pas terrible) cela entraine:
1) la diminution des largeurs d'impulsion de 10µs à 3µs
2) la modification des affectation des sorties "pulse" (voir le fichier Note.HTM)
les tests ont été faits avec un moteur brushless équipé d'un resolver en mode poursuite à la fréquence de 50000Hz (vitesse limite pour ce moteur à 60000tr/mn) je n'ai pas pu faire ces test sur un moteur pas a pas (aucuns des moteurs à ma disposition n'atteignant ces fréquences)
Bien que 3µs de largeur d'impulsion soit acceptée par les cartes moteurs du zip j'ai laissé en commentaire la version précedente pour ceux qui éprouveraient des difficultés avec certaines cartes du commerce

signaler à un administrateur
Commentaire de Lewil le 19/10/2005 18:10:43

c'est chaud :') y'a du monde la dedans ...
pas fini de décortiquer ... ca va prendre du temps oO

signaler à un administrateur
Commentaire de jlen100 le 19/10/2005 18:46:46

oui c'est copieux. En fait j'ai regroupé plusieurs programmes (certains ont été developpés il y a une dizaine d'années pour des cartes d'interface à base de Z80...ça ne me rajeuni pas) et comme la préretraite approche et que personne à part moi-même pouvait les utiliser j'ai fini par en faire quelque chose qui soit comprehensible (enfin je l'espère) par le commun des mortels.
Etant un scientifique et non un programmeur professionnel que les puristes me pardonnent si mon code n'est pas toujours conforme aux règles!!!
Si cela interesse certains j'essaierai de compléter les notes par une explication des principes utilisés ou des renseignements complémentaires.
nota je viens de voir que j'ai fait une faute de frappe dans le post précédent: il faut lire 6000tr/mn et non 60000tr/mn

signaler à un administrateur
Commentaire de Lewil le 19/10/2005 22:08:47

si ce n'est indiscret, as-tu un site avec des applications techniques de ton application ? (je me permets de te tutoyer .. avec respect !) je sui sen train de me prendre la tête avec la même problématique (mais pas la même technologie) et j'avoue être impressionné par les fréquences annoncées !!!
ce serait hautement intéressant pour les hobbyistes de la CNC, et il y en a :o)

quasi hors sujet: t'es tu penché sur un algo de bresenham permettant l'interpolation de cercles à partir d'un point quelconque jusqu'à un point quelconque, avec un rayon et un sens de parcours donnés ? j'ai pu trouver des choses intéressantes à partir de points "singuliers" pi/2, pi/4 etc... mais jamais d'algo "générique". (toujours dans le cadre de mouvements PAP pour bouger des axes bien entendu)

sslts

signaler à un administrateur
Commentaire de Lewil le 19/10/2005 22:11:53

oups, encore plein de questions, comment varie l'application en fonction de la puissance du pc ? :') ah lala ... des milliers de questions en fait :')

signaler à un administrateur
Commentaire de jlen100 le 19/10/2005 23:20:45

pour le site je n'en ai fait (pas le temps) mais je me tiens à la disposition de chacun pour repondre aux questions.
j'ai regardé un algo pour faire un cercle mais cela surcharge trop le micro controleur (enfin pour l'instant) la solution que personnellement j'ai choisi c'est de faire calculer les points par le PC, de creer une trajectoire et de la faire executer par la carte on bénéficie de toute la puissance du PC sans alourdir le programme 'C' (il suffit d'appeler la commande TRAJECTOIRE qui est capable de charger jusqu'à ~65000 points)pour demarrer à un point quelconque il suffit de se deplacer à ce point de remettre les compteurs d'axe à 0 (fonction: SETCOMPTEUR();déplacement de l'origine à ce point) et  de lancer la trajectoire. simple question de géometrie. On peut d'ailleurs calculer les points en temps reel si le PC est cadence à >2Ghz Je regarde actuellement une interpolation à grande vitesse.(il faut faire varier les vitesses et les accelerations en fonction des rayons de courbure) je m'oriente sur un calcul par le PC des differents parametres avec un chargement en temps masqué pendant le déplacement des axes;(calcul en temps reel ou en en fichiers batch wat is the question??) Actuellement l'interpolation se fait sur les 4 axes simultanement(courbe gauche) mais oblige a s'arreter à chaque point.
pour les frequences atteintes on est limité par les calculs sur les entiers et les temps de differentes interruptions moyennant une modification des fonctions timers et en limitant les fonctionnalités j'ai fait monter les frequences à 200KHz (mesurées à l'oscilo)
la puissance du PC est sans influence sur le fonctionnement seul le rafraichissement des leds peut être un peu cahotique (un rafraichissement tout les 50ms). Le programme a été testé sur un portable à 1,5GHz sous XP pro et un à 330 MHz sous W98. Sur le PC à 1,5GHz la charge processeur ne dépasse pas 3% (trois) (C'set la carte mere que j'utilise sur les équipements)je ne l'ai pas regarder sur celui a 330MHZ D'ailleurs c'est comprehensible puisque toute les fonctions de déplacement sont gérées pas le microcontroleur le PC n'assurant que l'interface utilisateur.

signaler à un administrateur
Commentaire de jlen100 le 20/10/2005 01:51:49

pour les calculs complexes on peut les confier à un tableur et prevoir un module de conversion (soit en important directement les donnees soit en passant par un fichier)
la structure de la tarjectoire est assez simple:
il faut initialiser la variable :
  TRJ:record
        IndexPoint:integer;
        NombrePoints:integer;
        Npages:byte;
        NPnts:byte;
        LastPage:byte;
        Tag:byte;
      end;
il suffit  de lancer   EffaceTrajectoire.Execute;
d'initialiser TRJ.NombrePoints puis de remplir la liste ListePoints qui est une Tlist des coordonnees:
  Spoint=^Ppoint;
  Ppoint=record
          coordonnees:array[0..3]of smallint;
          end;
  var P:Spoint;
    for i:=1 to TRJ.NombrePoints do
    begin
      new(P);
      ListePoints.Add(P);
      P^:=routine de conversion
    end;
pour le reste des initialisations voir: loadtrajectoire.
si j'ai un peu de temps j'incluerai une fonction de conversion de la source pour different format de fichiers (peut être existe-t-ils d'ailleurs sur ce site?).

signaler à un administrateur
Commentaire de jlen100 le 20/10/2005 10:45:01

pour l'algo de bresenham je dois pouvoir l'implémenter dans le microcontroleur (moyennement certaines restrictions sur les vitesses de deplacement: les calculs sur le floats font appels à la bibliotheque maths et sont gourmands en ressources processeurs) je rajouterai 2 commandes CIRCLE et ARC dans la liste (je verrai pour les parametres ce qu'il sera le plus judicieux)
par contre j'ajoute tout de suite 3 commandes:
SAVEPOINT qui mémorise la position courante
SETORIGINE qui placera l'origine au point courant
RESTOREPOINT qui remettra le point courant à la valeur sauvegardée

signaler à un administrateur
Commentaire de jlen100 le 20/10/2005 16:08:39

j'ai inclus les commandes
SAVEPOINT qui mémorise la position courante
SETORIGINE qui placera l'origine au point courant
RESTOREPOINT qui remettra le point courant à la valeur sauvegardée
cela permet un gestion simplifiée des chngement d'origine. Ainsi pour executer un cercle défini sur son centre:
on déplace les moteurs au centre du cercle
on fait SAVEPOINT  puis SETORIGINE qui deplace l'origine à ce point,
on exécute le cecle, on revient à son centre et on fait RESTOREPOINT  qui rétabli le contexte initial

signaler à un administrateur
Commentaire de jlen100 le 20/10/2005 16:46:53

correctif une petite erreur c'est glissée lors de la transmission
dans moduledecommande/unit1/procedure TModuleDeCommande.initClick(Sender: TObject);
modifier la ligne if not reicept(2) then exit;

// mise en route du process
  buffer:='e'+#1 +#25;//replace les moteurs a l'origine
  Port_Serie.Com1.WriteStr(buffer);
if not reicept(6) then exit;
au lieu de:  if not reicept(2) then exit;
le compteur est bien remis à jour mais la valeur renvoyée est erronée

signaler à un administrateur
Commentaire de sethi_c_moi le 06/10/2006 16:50:29

Bonjour,

Je suis interessé par votre carte gestion 4 axes qui est dans le zip.
Est ce que vous seriez pret a la vendre toute prete?
montée et testée.
car je serais intéressé.
mon email : sethi_c_moi@hotmail.com

signaler à un administrateur
Commentaire de Beecham le 19/11/2006 21:49:39

Bonjour

Nouveau, sur ce forum, je porte un intérêt sur votre carte gestion 4 axes.
Je possède une petite CN Haulin PC 100 que je remets en état  dans le but de pouvoir réaliser du matériel d’expérience sur le magnétisme

Comme le poste précédent Je suis intéressé par votre carte gestion 4 axes qui est dans le zip.
Seriez vous  prêt me vendre une carte montée et testée  ainsi que me conseiller pour l’adapter aux cartes de puissance pour les moteur pas à pas.
Me contacter lelong.bonnaric@wanadoo.fr

Cordialement à vous

J.C Lelong-Bonnaric

signaler à un administrateur
Commentaire de island3 le 12/01/2007 19:07:14

Salut quelque peut il me procurer ce programme en executable
car moi je ne sait pas le faire. merçi d´avance

Email :  zize442001@yahoo.com.br

Ajouter un commentaire