Arduino mega 2560 sur automate

Bonjour tout le monde.

Petite présentation rapide de ma part, je m'appel david, j'ai 32 ans, un peu touche à tout, passionné d'informatique je me lance dans la réalisation d'un petit projet à base d'un automate et de plusieurs arduino mega 2560

Configuration de la Arduino: une carte RAMPS1.4 sera monté dessus pour piloter 4 moteurs pas à pas, et une carte SD pour intégrer un G-code unique.

J'ai 6 G-code différents à intégrer à mon projet, et je dois pouvoir faire choisir à l'automate en fonction du positionnement de ma pièce, quel G-code lancer.

La seule solution que j'ai trouvé, pour le moment, est de monter 6 arduino+ramps avec chacune 1 G-code.
D'ou ma question, est il possible depuis un automate comme celui ci => ( Technic Achat | Composants Industriels Électriques & Automatisme ) de lancer une arduino pour quelle exécute le G-code?

Par exemple, la pièce est dans la position 1, donc je donne l'ordre a ma sortie 1 de l'automate de s'activer, se qui lance la arduino 1
Si ma pièce est en position 3, la sortie 3... etc.

Je sais, c'est un peu tordu... mais c'est la seule solution étant débutant que j'ai trouvé.

Si vous avez des suggestions, par exemple intégrer mes 6 G-code dans 1 seule arduino, et pouvoir choisir depuis l'automate de sélectionner tel ou tel G-code, alors je suis preneur :slight_smile:

J'espère que j'arriverai à trouver ici des réponses à mon problème.

Bonne après midi.

David

Bonjour,
Je n'ai pas bien compris ta démarche.
Pourrais-tu être un peu plus clair ?
@+

Bonsoir,

Je vais essayer de faire au plus simple en essayant d'être compris ^^ (ce qui n'est pas toujours simple)

Je suis sur un projet de machine automatisé pour un client, l'opération consiste à venir déposer un filet de colle dans une pièce, il y à 25 pièces par plateau (plateau tous identique mais les pièces ne sont pas situées au même endroit si l'on met le plateau dans un sens ou dans l'autre), donc j'ai 2 programmes différents (1 pour si on met le plateau dans un sens, et le 2eme si l'on met le plateau dans l'autre sens), il y à 3 types de pièce différente (par leurs hauteur) donc j'ai 6 programmes à gérer (2 par type de pièce).

Photo du proto =>

Le système d'amenage et d'évacuation des plateaux est géré par un automate => Technic Achat | Composants Industriels Électriques & Automatisme

Le choix de l'automate est du au fait que je dois pouvoir gérer 2 vérins électrqiue, 4 électroaimants, 2 interrupteur de sécurité de porte, et surtout plein de petits capteurs photo cellule et mécanique.

Donc ma question étant, si je branche 6 arduino + ramps 1.4 (pour piloter mes moteurs un peu comme une imprimante 3D) avec chacune 1 G-Code, puis je demander a tel ou tel arduino de démarrer à l'aide d'une sortie de mon automate (sortie 1 pour le G-code 1, sortie 2 pour le G-code 2, etc...)

Mes sorties étant des relais, donc en gros si simule une pression sur un interrupteur.

Je pourrai stocker sans problème mes 6 G-code sur la même Arduino, mais le soucis est comment aller chercher tel ou tel G-code depuis mon automate??

J'espère avoir réussi à faire simple et surtout à être clair.

Bonne soirée et merci.

Bonsoir,
Le tout dans un Arduino et il te faut les informations suivantes :

  • sens du plateau,
  • type de pièces.
    A partir de là, tu peux choisir le programme à exécuter
    @+

Merci pour cette info.

Pour le type de pièce, se sera choisi au début de la production par le régleur, c'est à dire qu'il choisira sur l'automate paris les 3 type de prod.
Pour le sens des plateaux, il sera connu par l'automate par le biais d'un capteur mécanique installé sur la machine (les plateaux étant équipés de détrompeur).

Maintenant le tout est de d'avoir comment faire choisir à mon arduino quel programme lancer??

A savoir que pour les 3 type de pièce, le programme de l'automate reste le même, seul les programme G-code change en fonction de la hauteur.

Donc à la limite si j'arrive à dire à la arduino que je suis sur le type de pièce "1" et que j'arrive à transmettre l'information du sens du plateau à la arduino, elle pourai choisir elle même quel programme lancer???

David

bonjour,
sujet intéressant.
tu veux monter une ramps sur une mega, ok
mais que vas tu injecter dans la mega comme prog initial?
grbl, marlin, prog perso?

Bonjour
Je voudrais juste éclaircir un truc.

Donc à la limite si j'arrive à dire à la arduino que je suis sur le type de pièce "1" et que j'arrive à transmettre l'information du sens du plateau à la arduino, elle pourai choisir elle même quel programme lancer???

Dans l'arduino, il n'y a qu'un seul "programme " de chargé à la fois. Il faut donc faire un programme qui appellera un des 6 sous programmes en fonction du capteur d'orientation et du type de hauteur de pièces.

Ne pense pas que l'arduino s'utilise comme un PC avec plusieurs logiciels. il faut prévoir chaque cas dans le même programme.

a+

Bonsoir,

je suis étudiante et je suis entrain de réaliser mon projet sur la surveillance de système solaire à base d'arduino mega 2560.
j'ai configuré un capteur de radiation et transférer ces mesures sur PLX_DATA ,j'ai rencontré or je n'est pas trouver la solution pour tranférer ces données dans le réseau local sur la carte arduino ethernet schield?
svp aidez moi comment le programmer ?

Merci d'avance.

Bonsoir tout le monde, il est vrai que je me suis un peu mal exprimé, si je résume un peu mieux:

Sur ma Arduino Mega je monte une Ramps 1.4, dans la Arduino j'implante le Firmware Sprinter qui va me permettre de définir les steps des moteurs, le sens, les fin de courses, etc...
Sur ma Ramps 1.4, je voulais y mettre un lecteur SD pour stocker mes 6 G-code.

Je pense que pour arriver à mes fin, il y a beaucoup plus simple, mais je ne m'y connais pas assez, d'ou ma demande ici :slight_smile:

J'ai une très grosse carte à jouer avec ce client, mais malheureusement, débutant dans le milieu, je n'ai pas les moyen de me payer un automaticien pour le moment, donc j'essaye de faire avec les moyen du bord et surtout avec le peu de connaissances que j'ai.

Pour info, j'ai monté une imprimante 3D Prusa i3 qui tourne avec une Arduino et une Ramps justement, c'est de là que vienne mes connaissances, très limitées...

je pense qu'avec ce type de programme tu peu t'en sortir

if ( "le plateau dans le sens A" && "hauteur de pièce A" ){ fais le programme A}
if ( "le plateau dans le sens A" && "hauteur de pièce B" ){ fais le programme B}
if ( "le plateau dans le sens B" && "hauteur de pièce A" ){ fais le programme C}
etc.

peu être un peu lourd à écrire mais simple

Le petit truc, c'est qu'une production de pièce dure en moyenne 15 jours.

Sur l'automate, je vais intégrer 3 boutons avec chaque type de pièce, que le régleur choisira en début de production, donc la hauteur ne changera pas pendant toute la production.

Donc il faudrait qu'en appuyant sur ce bouton de choix de production, que la Arduino (ou la Ramps) n'est plus que le choix entre 2 programmes (sens 1 ou sens 2 du plateau).

Par contre, comment faire pour que la arduino communique avec le capteur de sens?

Je ne suis vraiment pas doué en programmation.

Si mon projet interesse quelqu'un qui serai capable de le faire, je suis prêt à travailler avec cette personne si nous nous mettons en accord sur un tarif.

sawsen:
Bonsoir,

je suis étudiante et je suis ...

Bonsoir
... Et tu es en train de "squatter" un topic avec une question qui est de prés ou de loin sans aucun rapport avec le sujet. :grin:

ouvre ton propre sujet/topic

Si quelque est intéressé par ma proposition qu'il me le dise.

bug du forum, ma réponse est partie je sais pas ou.
donc vu que tu as sprinter en firmware, tu peux monter comme sur ta prusa un lcd avec carte sd et bouton de sélection.
tu as les gcode sur la sd, donc le gars peut sélectionner le fichier via le bouton.
par contre pour inverser les enstop et donc le sens, ca risque d'être coton dans le firm.
si tu change le sens, tu risque de te retrouver avec le gcode a l'envers, et là.......
donc le plus simple, le gars met la pièce comme il faut, sélectionne le bon fichier gcode et zou.

Donc pour continuer mon explication de fonctionnement de la machine,
un opérateur pose les plateaux (de 25 pieces) sur un convoyeur, qui se mettent en attente à la machine.
l'opérateur suivant réalisé une opération manuel sur chaque pièce, entre l'opérateur 1 et l'opérateur 2, on retrouve donc ma machine.
le but étant donc que l'opérateur 2 s'approvisionne en plateau de pièce (avec la colle déposé dans chaque pièce, opération réalisé par ma machine).

Donc peut importe dans quel sens l'opérateur 1 pose les plateaux sur le convoyeur, la machine doit pouvoir gérer le sens 1 ou le sens 2 pour venir déposer la colle dans les 25 pièce du plateau.

L'opérateur 2 doit s'approvisionner en plateau seulement en appuyant sur un bouton départ cycle, et ne doit pas avoir à choisir entre tel ou tel programme. Le type de production est lui définie en début de production par le régleur.

Donc le régleur en début de prod choisi le type de prod, par exemple "type1" donc l'automate doit gérer le lancement du programme "sens 1" ou "sens 2" en fonction du sens du plateau.

J'espère avoir apporté un peu plus de détail au fonctionnement.

ces 25 pièces sont identiques ou différentes?

pour faire de l'automatisation, il faut que les réglages soient toujours les même, pièce toujours dans la même position.
en fin de compte, la machine ne doit pas gérer que deux possibilités, mais 4 si les pièces sont en long et encore plus si elles peuvent passer sur le convoyeur en longueur comme en largeur.

donc, soit ton client est prêt a investir dans une chaine pour mettre les pièces toujours dans la même position, soit l'opé1 met les pièces comme il faut de suite.

Oui les 25 pièces sont identiques, et toujours rangées de la même manière dans le plateau, toujours dans le même sens, seul le sens du plateau peut changer.
Photo du plateau :
Comme on peut le voir, les trous ne sont pas dans la même position si l'on met le plateau dans un sens ou dans l'autre.

Mon client veut que l'opérateur ne soit pas contraint par le fait de devoir mettre le plateau dans un sens ou dans l'autre, il faut que la machine arrive a gérer le sens (pour la partie mécanique c'est pas un soucis, car les plateaux sont équipés d'un détrompeur, voir le petit coin triangulaire sur le plateau, il y le même coin en dessous mais à l'opposé pour ranger les plateaux les un sur les autres).

Je joint également la photo de la machine avec 3 plateaux, en configuration de travail.
Le plateau 1 (celui qui est seul) est en position de travail, donc les mouvements du pistolet à colle sont gérés par le fameux programme G-Code qui sera piloté par la Arduino et la Ramps, les 2 autres plateaux, sont les plateaux en attente.

Imaginons le début de la journée, donc pas de plateau au poste de travail, seulement des plateaux en attente, l'opérateur 2 (qui n'est pas au pied de la machine, mais au poste suivant) appuis sur le bouton départ cycle, le 1er plateau en attente avance, se place au poste de travail, et la le G-Code se lance en fonction du détrompeur du plateau, donc G-Code 1 pour le sens 1 et G-Code 2 pour le sens 2, à la fin du cycle, le plateau est évacué vers l'opérateur 2 et le cycle s’arrête, jusqu’à ce que l'opérateur 2 redonne l'ordre par le bouton de relancer un cycle.

Seul le G-Code est géré par la Arduino, tout le reste (amenage plateau, évacuation plateau, les capteurs de présence, etc...) sont eux géré par l'automate.
Donc il faut à un moment donné dans mon programme de l'automate, que je donne l'ordre (par une sortie relais) à la Ramps de démarrer, puis une fois le G-Code terminé, l'automate reprend le relais pour évacuer le plateau.

Mais mon problème reste toujours le même, comment dire à la Ramps de lancer le G-Code 1 ou 2 en fonction du sens du plateau :-):-):slight_smile:

Petite info supplémentaire, les pièces sont des Obus de 20mm, 25mm et 30 mm (d'ou mes 3 types de pièces), peut importe le calibre, seul la hauteur change de quelques millimètres.

Admettons que :
-le G-Code 1 lance le programme pour le sens 1 des 20mm
-le G-Code 2 lance le programme pour le sens 2 des 20mm
-le G-Code 3 lance le programme pour le sens 1 des 25mm
-le G-Code 4 lance le programme pour le sens 2 des 25mm
-le G-Code 5 lance le programme pour le sens 1 des 30mm
-le G-Code 6 lance le programme pour le sens 2 des 30mm

Donc quand le régleur choisi son type de calibre en début de production par exemple l'automate est en mode "25mm" j'aimerai un truc du genre "si plateau sens 1, lance g-code 3 et si plateau sens 2, lance g-code 4"

A l'origine j'étais partie pour brancher 6 arduino avec 6 ramps avec chacune 1 g-code, et dans mon automate, 1 sortie dédiée par Ramps, et de la je peux gérer sans problème le lancement du G-Code que je veux, mais je suis sur de pouvoir faire tout cela avec 1 seule et même carte...

Avis aux amateurs ^^

Et sutout un GRAND MERCI à vous tous pour votre aide.

allé re ! :wink:

const int capteur_sens_1 = 9; // branchement de capteurs
const int capteur_sens_2 = 8;
const int hauteur_20 = 7;
const int hauteur_25 = 6;
const int hauteur_30 = 5;

int etatSens1;
int etatSens2;
int etatHauteur20;
int etatHauteur25;
int etatHauteur30;


void setup()   
{
   pinMode(capteur_sens_1, INPUT); // description des entrées
   pinMode(capteur_sens_2, INPUT);
   pinMode(hauteur_20, INPUT);
   pinMode(hauteur_25, INPUT);
   pinMode(hauteur_30, INPUT);

 etatSens1 = HIGH  // etat d'origne
 etatSens2 = HIGH
 etatHauteur20 = HIGH
 etatHauteur25 = HIGH
 etatHauteur30 = HIGH
}

void loop() {

 etatSens1 = digitalRead(capteur_sens_1); // lis l'état du capteur
 etatSens2 = digitalRead(capteur_sens_2);
 etatHauteur20 = digitalRead(hauteur_20); // lis l'état de la hauteur
 etatHauteur25 = digitalRead(hauteur_25);
 etatHauteur30 = digitalRead(hauteur_30);

if (etatSens1 && etatHauteur20)
{
G-code 1;
}
if (etatSens2 && etatHauteur20)
{
G-code 2;
}
if ( etatSens1" && etatHauteur25)
{
G-code 3;
}
if (etatSens2" && etatHauteur25)
{
G-code 4;
}
if (etatSens1 &&  etatHauteur30)
{
G-code 5;
}
if (etatSens2 && etatHauteur30)
{
G-code 6;
}
else ()
  { 
 on attend;
  }
}

comme ça c'est plus clair peu être ? le G-code je connais pas mais avec ça toi toi pourvoir commencer

ton code est bien spoush, mais ca ne se limite pas à ca malheureusement.
il y a un firmware deja dans le mega, sprinter.
donc il faut taper
soit dans tout le firmware, bonjour le mal de crane et les bugs
soit mettre une autre carte qui elle va gérer les plateau pour les mettre dans le bon sens

une idée comme ca me vient
avoir un nono avec un palpeur qui vient au ras de la lèvre du plateau et va le forcer avec le détrompeur a prendre correctement sa place.

autre soluce, avoir un aimant sur chaque plateau, un détecteur hall sur un support amovible.
le détecteur va voir si l'aimant est à la bonne place :
oui, zou direction la machine
non, la plateau tourne d'un 1/4 de tour pour trouver l'aimant

encore autre solution, un palpeur remplacant le endstop du Z qui va aller chercher les trous, mais il faut encore taper dans le firmware.

dans l'industrie avec ce type de support, ce n'est pas à la machine de s'adapter, mais au support de se mettre comme il faut, sinon c'est le mur assuré.

Merci à vous.

Pour déterminer le sens du plateau, j'installe un capteur sur la table de travail, qui va capter si oui ou non le détrompeur est la, si il est la, il sera dans le sens 1 et si le détrompeur n'est pas la, il sera dans le sens 2.

A partir de la, c'est si compliqué que ça de dire à la Ramps de lancer le programme 1 ou 2?

Je pensais que cela serai plus simple, sans avoir à passer par autant de lignes de code :frowning: