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

cs_Lewil Messages postés 15 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 19 octobre 2005 - 14 oct. 2005 à 23:03
Momoch89 Messages postés 3 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012 - 27 juil. 2012 à 12:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33674-pilotage-4-axes-pour-moteur-pas-a-pas-4-servos-moteurs-cc-8-entrees-8-sorties-version-usb

Momoch89 Messages postés 3 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 12:24
et franchement j'ai vraiment besoin d'une aide
Momoch89 Messages postés 3 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 12:19
Merci pour ta réponse
en fait , la liaison se fait par bluetooth et moi j'envoi des lettre et chaque lettre représente un angle spécifique ( deriere ya un protocol que j'ai déja défini ) .
si tu veux voici mon mail on se rejoint en pv ? enfin si tu veux comme ca je t'explique mieuu le projet
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
27 juil. 2012 à 11:43
A priori pas de difficultés particulières si le module se comporte comme une liaison série, mais je pense qu'il faudra modifier la fonction "communication" du programme en 'C' en ajoutant les commandes spécifiques de la liaison sans fil(bluetooth ou ZigBee): adressage, type de message....
il faudra faire de même dans le programme DELPHI
Momoch89 Messages postés 3 Date d'inscription vendredi 27 juillet 2012 Statut Membre Dernière intervention 27 juillet 2012
27 juil. 2012 à 10:57
Bonjour
votre programme est tres interessant ,je le reconnais mais je me demande bien si c'est possible de faire pareil ( controler 4 moteurs pas a pas ) mais cette fois ci par une liaison sans fil ( bluetooth ) et que ce module bluetooth sera branché sur une entrée UART de notre carte de commande ?
S'il vous plais si quelqu'un a une idée , je suis à l'écoute et merci d'avance
island3 Messages postés 1 Date d'inscription vendredi 12 janvier 2007 Statut Membre Dernière intervention 12 janvier 2007
12 janv. 2007 à 19:07
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
Beecham Messages postés 1 Date d'inscription dimanche 19 novembre 2006 Statut Membre Dernière intervention 19 novembre 2006
19 nov. 2006 à 21:49
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
sethi_c_moi Messages postés 5 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 6 octobre 2006 1
6 oct. 2006 à 16:50
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
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
20 oct. 2005 à 16:46
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
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
20 oct. 2005 à 16:08
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
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
20 oct. 2005 à 10:45
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
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
20 oct. 2005 à 01:51
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?).
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 oct. 2005 à 23:20
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.
cs_Lewil Messages postés 15 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 19 octobre 2005
19 oct. 2005 à 22:11
oups, encore plein de questions, comment varie l'application en fonction de la puissance du pc ? :') ah lala ... des milliers de questions en fait :')
cs_Lewil Messages postés 15 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 19 octobre 2005
19 oct. 2005 à 22:08
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
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 oct. 2005 à 18: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
cs_Lewil Messages postés 15 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 19 octobre 2005
19 oct. 2005 à 18:10
c'est chaud :') y'a du monde la dedans ...
pas fini de décortiquer ... ca va prendre du temps oO
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
19 oct. 2005 à 15:24
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
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
15 oct. 2005 à 08:35
le zip est à jour.
pour les modifications de vitesse il faudra encore attendre quelques jours (la frequence maxi passe à 65500 hz)
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
14 oct. 2005 à 23:17
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')
cs_Lewil Messages postés 15 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 19 octobre 2005
14 oct. 2005 à 23:03
é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 =)
Rejoignez-nous