Avis de recherche

Bonjour,
Malgré de nombreuses recherches, je ne trouve pas la perle rare.
Je recherche une librairie pour moteur pas à pas qui permette un pilotage à plus de 4000 pas/sec.
La librairie doit pouvoir gérer les accélérations, les décélérations, la vitesse et le pilotage des drivers via steps et dir.
Si vous avez croisé la perle rare, je suis preneur.
Merci et @+

salut icare,
trouvé sur la partie anglaise un lien pour plus de 1000
ttp://www.open.com.au/mikem/arduino/AccelStepper/index.html

j'ai pas approfondit la chose, mais en modifiant les millis par micros ca doit pouvoir le faire.

mais, je dirais aussi que cela dépend du pc et de sa fréquence horloge.
si tu veux te prendre un peu la tête

Salut Infobarque,
J'utilise AccelStepper au quotidien et il plafonne à 4000 steps/sec. Cette limitation vient en partie de l'architecture de la librairie et surtout de la vitesse des cartes Arduino (16MHz).
Avec les pilotages via Mach3, LinuxCNC, etc... sur port //, on peut atteindre les 20000 steps/sec mais je cherche mieux pour des cartes Arduino.
@+

icare:
Salut Infobarque,
J'utilise AccelStepper au quotidien et il plafonne à 4000 steps/sec. Cette limitation vient en partie de l'architecture de la librairie et surtout de la vitesse des cartes Arduino (16MHz).
Avec les pilotages via Mach3, LinuxCNC, etc... sur port //, on peut atteindre les 20000 steps/sec mais je cherche mieux pour des cartes Arduino.
@+

Bonsoir Icare
je n'ai pas encore mis les mains dans le "cambouis" là dessus , mais la facteur bloquant semble etre "l'horloge"
A part augmenter l'horloge ( changement 16--->20...ou tester à plus) les cartes basiques vont rapidement talonner

Bonsoir Artouste,
Le problème se situe bien au niveau de l'horloge des cartes.
Passez de 16 à 20 MHz n'est pas suffisant, il me faudrait au mini 32 MHz mais là se n'est plus dans la gamme des micros.
:frowning:

prends un micro sans fil :slight_smile: ca se propage plus vite
suis loiiinnnnnnnn

As tu regardé du côté du projet MBED s'il existe des bibliothèques ?
Si cela existe tu n'aura pas de mal à trouver des cartes avec horloge à plus de 100 MHz.
Il y a aussi la DUE ............ mais les bibliothèques....... bof.
La M0 elle n'est qu'à 48 MHz.

Bonjour 68tjs,
Merci pour les infos, il y a effectivement des possibilités du côté MBED.
Pour l'instant j'ai commandé une M0 pour voir.
@+

Salut,

En "simple" tu as le launchpad Tiva-C à 80 MHz

Bonjour,
Mon unique expérience se situe au niveau des cartes UNO et MEGA.
Si je souhaite utiliser des cartes de la "galaxie Arduino" mais avec des horloges plus rapides, que l'on peut mettre en oeuvre sans trop se prendre la tête, quel choix ?

  • Intel Galileo,
  • Intel Edison,
  • Arduino Z0,
  • Arduino M0.
    Votre expérience serait la bienvenue. Merci
    @+

Différence entre Zero et Mo (livresque)
La Zero (vendue aux US) a un dégogueur incorporé à la carte.
L'équivalent est la M0-pro (vendue en Europe).

La M0 que seuls les italiens proposent n'a pas ce débogueur intégré et coûte moitié prix (1 circuit intègré en moins et circuit imprimé double face au lieu de 4 couches).

Il y a aussi un portage de "l'univers Arduino" sur STM32F103 (H = 70 MHz)
C'est là http://stm32duino.com/
C'est initié par un membre du forum anglais (Roger Clark).
C'est basée sur des clones Mapple (5 € sur Ebay) et encore en cours de développement.
A ce que j'ai compris il faut changer le bootloader.
Au vue du niveau de mes connaissances je trouve que cela fait usine à gaz mais heureusement je ne suis pas une référence en la matière.

Re,
Merci 68tjs

Bonjour,
Y a-t-il une âme charitable qui pourrait me compiler le code ci-dessous :

int a = 10;
int b = 20;
void setup(){
  Serial.begin(115200);
  a = max(a, b);
  Serial.println(a);
}
void loop(){
}

IDE : 1.7.6 - cible : Arduino M0
Pourtant simple mais j'ai des erreurs de compilation :frowning:

icare:
Bonjour,
Y a-t-il une âme charitable qui pourrait me compiler le code ci-dessous :

int a = 10;

int b = 20;
void setup(){
 Serial.begin(115200);
 a = max(a, b);
 Serial.println(a);
}
void loop(){
}



IDE : 1.7.6 - cible : Arduino M0
Pourtant simple mais j'ai des erreurs de compilation :(

Bonsoir Icare
Il semblerait que la fonction max ne soit pas (encore ?) supportée pour la Zero

Bonsoir Artouste,
Merci pour la réponse.
Comme AccelStepper n'utilise qu'une seule fois la fonction max(), je l'avais déjà remplacé par le if ... else qui va bien.
Déjà lorsqu'on migre des librairies vers d'autres hards, on rencontre assez de pb pour ne pas encore se poser des questions sur le compilateur.
Il faut faire avec :wink:

Bonjour,
J'ai fait quelques essais avec d'autres cartes.

  • Uno ou Mega (16 MHz) -> 4000 pas/sec max
  • Arduino M0 (48 MHz) -> 4000 pas/sec max
  • TM4C123 (80 MHz) -> 4500 pas/sec max
  • TM4C129 (120 MHz) -> 16000 pas/sec

Il faut croire que le port GPIO de la dernière carte est plus rapide que les 2 précédentes.
J'attends une autre carte (80 MHz) avec ports directes pour d'autres essais.
@+

Re,

pepe:
La vitesse des GPIO n'a rien à voir dans l'affaire (vu qu'il est par ailleurs tout-à-fait possible de leur faire produire des signaux dépassant le MHz). C'est plutôt la méthode retenue pour calculer et générer les signaux qui est en cause.

pepe, tu as tout à fait raison et ce qui est concernant c'est que je n'ai pas tort. Il faut rester dans le contexte de cette librairie.
Les cartes Arduino M0, TM4C123 ainsi que la Raspberry Pi ont une puissance de calcul suffisante pour générer des signaux plus rapides mais le pilotage des sorties ne suit pas.

pepe:
En fait, pour atteindre de bien meilleures performances que celles que tu annonces, il ne faut pas se tourner vers des bibliothèques, dont la vocation est d'être relativement universelle et indépendante du reste de l'application.

Le but n'était pas de ré-écrire un soft pour tester une chaine cinématique mais utiliser de l'existant. Le pilotage d'un moteur pas à pas via un driver (pul et dir) et en soi très simple.
Faire du x = vt + vi est simple.
Mais dans le cas précis, il faut également traiter l'accélération et la décélération du moteur.
Faire du x = 1/2gt2 + vi1t + xi1 + v2t + xi2 - 1/2gt2 - vi3t - xi3 est autre chose.
Certes le problème de résolution mathématique numérique n'est pas insurmontable, par contre, le développement de ce type de routines sont loin de mon objectif de test.

Bonjour,
J'ai fait quelques essais avec d'autres cartes.

  • Uno ou Mega (16 MHz) -> 4000 pas/sec max
  • Arduino M0 (48 MHz) -> 4000 pas/sec max
  • TM4C123 (80 MHz) -> 4500 pas/sec max
  • TM4C129 (120 MHz) -> 16000 pas/sec

Il faut croire que le port GPIO de la dernière carte est plus rapide que les 2 précédentes.
J'attends une autre carte (80 MHz) avec ports directes pour d'autres essais.
@+

Bonjours,
Sur le wiki Reprap, on voit des chiffres bien plus encourageant. Maintenant reste a savoir le code convient et est recupérable pour ton projet..

Re,
Résultats des tests entrepris :

  • Uno ou Mega (16 MHz) -> 4000 pas/sec max
  • Arduino M0 (48 MHz) -> 4000 pas/sec max
  • TM4C123 (80 MHz) -> 4500 pas/sec max
  • TM4C129 (120 MHz) -> 16000 pas/sec
  • UNO32 (80 MHz) -> 21000 pas/sec

Dans mon cas, 21000 pas/sec me donne un déplacement linéaire de 6300 mm/min

Re,

Scoob:
Sur le wiki Reprap, on voit des chiffres bien plus encourageant. Maintenant reste a savoir le code convient et est recupérable pour ton projet..

Merci pour l'information, je connais les différents logiciels Marlin et autres utilisés en impression 3D. Le dispositif de pilotage n'est pas compatible avec l'interface de puissance de mes moteurs pas à pas (Imax PAP 8.5 A).