Robot Delta besoin d'aide.

Bonjour à tous !

je reviens encore vers vous pour un petit coup de pouce, je viens de réaliser un robot type delta, avec 3 servomoteurs. Il fonctionne en cinematique inversée, à l'aide d'une bibliotheque que j'ai trouvé sur la toile. jusque la tout va bien, je definis les points avec une syntaxe comme ceci:

DeltaMoveTo(coord X, coord Y, coord Z, vitesse).

le probleme est pour la creation d'un programme simple de prise et depose, pour les coordonnées il faut s'y reprendre à plusieurs fois en "tatonnant "avec les valeurs des coordonnée pour positionner au mieux le robot. J'ai donc "commencé" un systeme d'apprentissage de points, je pilote donc le robot en manuel avec un joystick pour X et Y et un autre potar pour le Z. et la... je bloque completement. j'aimerai pouvoir memoriser des points (une dizaine).

j'aimerai bien faire de la maniere suivante: - demarrage. - test si le mode d'apprentissage est activé (bouton sur une entrée) --> je gère. - deplacement en manuel jusqu'au premier point (joystick) --> je gère. - appui sur un bouton pour valider ce point (simple bouton ou switch multiposition à definir) --> je gère plus lol - deplacement au 2 eme point en manuel... - validation point 2... etc...(determiner l'ensemble des points necessaires au deplacement de l'objet).

  • desactivation du mode d'apprentissage.(et donc memorisation de tous les points ci dessus). -passage en mode "production" et attente de depart cycle sur une entrée capteur "presence piece à deplacer"--> je gère

voila en gros il faut memoriser des coordonnées x, y, z et ajouter un point a chaque fois que necessaire..

si quelqu'un pourrai m'eclairer un peu ça serait tres sympa !!

j'aimerai me faire la main sur l'interface et avoir un truc assez fonctionnel (pas besoin d'ouvrir l'editeur arduino pour creer un programme), apres rajouter un ecran lcd pour avoir un affichage des coordonnées,des points du programme, etc...(à definir). une fois que j'aurai une interface qui fonctionne simplement, je referai la partie mécanique pour une plus grande surface de travail, avec des moteurs plus gros et un positionnement plus precis..

si vous voulez des videos , du code ou des 3D solidworks y'a pas de probleme.

Merci d'avance!!

Bonsoir, Je suis débutant en Arduino donc mes conseils sont ce qu'ils sont :fearful: mais je pencherai pour sauvegarder tes valeurs dans l'eeprom. http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.LibrairieEEPROM

C'est très simple a effectuer et donc facile a mettre en place.

Qu'en pensent les plus expérimentés ?

@++

Yep!

La solution de l'eeprom est une trés bonne idée. Chaque arduino possède cet espace mémoire qui permet de stocker des informations en dur (même hors tension). Attention quand même à ne pas trop en abuser, une eeprom est garantit pour un certain nombre d'écriture. 100000 en moyenne pour les arduino.

http://arduino.cc/it/Reference/EEPROM

Les eeproms sur bus I2C sont trés bien aussi et extensibles pour les gourmands ;)

@+

Zoroastre.

Merci pour ces infos, je vais m'orienter vers cette direction alors.

mais comment procéder pour, lors d'un appui de bouton, créer un nouveau point avec ses coordonnées correspondantes? et apres, comment recuperer ces infos.

je comprend les exemples basiques d'utilisation de l'EEPROM, mais j'ai du mal a associer ce fonctionnement à mon problème.

Yep!

Il faut effectivement être astucieux sur le plan programmation. A mon idée, il faut réserver le premier bit de l'eeprom pour comptabiliser les séquences enregistrées. Théoriquement cela fait 255 séquences enregistrables. Au setup(), tu lis ce bit pour connaitre la dernière position de l'eeprom, soit 1 + 3x(Nbre de sequence), 0 est le premier bit, 3 pour X, Y, Z, etc. Ex : si le byte 0 vaut 5, j'ai 5 séquences donc 1+(3x5) bytes utilisés = 16.

Ensuite, tu peux inclure dans ton programme le nombre de séquence et le rappelle de celle ci dans ton afficheur. L'enregistrement des coordonnées validées se faisant par bouton poussoir à la position et incémente le premier byte de l'eeprom.

Avec 2/3 equations il y a moyen de sortir un truc pas mal ;)

@+

Zoroastre.

Bien pensé zoroastre, Expliqué comme ça, c'est plus clair.

Et peut-être même qu'il faudrait utiliser des variables tableau afin d’écrire/lire en une fois toutes les coordonnées afin de limiter les lectures/écriture sur l'EEprom de l'Arduino. (a moins d'utiliser celle I2C que tu mentionnais plus haut)

1 bouton permettrai le passage en mode apprentissage et un autre servirai a incrémenter le compteur et a enregistrer dans le tableau les 3 axes a chaque relevé de position. La sortie du mode apprentissage écrirai l'ensemble du tableau dans l'EEprom.

Au démarrage, suite a un reset par exemple, une boucle irait lire en 1x toutes les données de l'EEprom et initialiserai la séquence de déplacement.

Bon ben reste plus qu'à programmer Vince3838 !

Bon courage

++

merci beaucoup niveau comprehension globale j'ai bien avancé, reste à faire chauffer le papier et le crayon pour structurer tout ça..

Je vous demanderai surement des conseils au fur et à mesure de l'avancement..

ah sinon vous avez des preferences pour les modules d'eeprom?

Re, bon le programme avance tant bien que mal, j'arrive à stocker les coordonnées de mes points à chaque validation par BP, reste plus qu'à recuperer ces infos pour faire dérouler le programme ...

@ bientot !