Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Robot suiveur de ligne industriel pour transport de matériaux

Composants et fournitures

Outils et machines nécessaires

Applications et services en ligne

À propos de ce projet

Vous êtes-vous déjà demandé comment fonctionnent ces robots sophistiqués qui transportent des pièces sur les lignes d'assemblage ? J'ai vu de tels robots à l'usine Opel ici en Pologne, j'ai posé beaucoup de questions et ils m'ont expliqué comment ça marche. J'ai instantanément compris que c'est juste un suiveur de ligne très avancé. Au lieu de ruban noir, il y a une bande magnétique et au lieu de capteurs de lumière, il y a des capteurs magnétiques, il y a aussi beaucoup de fonctions de sécurité et d'autres choses intelligentes. Mais à ce moment, j'ai commencé à penser que peut-être je pouvais construire ma propre version plus petite, moins chère, basée sur Arduino et open source d'un tel robot capable de transporter intelligemment des trucs ? Ça ressemble à un gros défi, c'est ce que j'aime !

Conception

Premièrement, je l'ai conçu... sur papier ! Oui, sur papier avec un crayon à la main :) Pourquoi concevoir sur papier si vous avez un super logiciel CAO ? Il y a quelques avantages que j'ai entendus d'autres gens et confirmés par moi-même. Vous êtes vraiment libre, pas de limitations sur le papier, pas de distractions, juste un espace vide et un crayon qui rend les choses vraiment faciles. C'est aussi plus rapide, vous n'avez pas à vous soucier des dimensions et de la forme finale. Si vous n'aimez pas quelque chose que vous avez dessiné, vous pouvez juste le redessiner et quand vous voyez tous vos dessins à la fois, vous pouvez les combiner et avoir de nouvelles idées :) C'était très facile de le dessiner sur papier pour trouver une forme globale qui me plaît, puis passer à la CAO pour ajouter des dimensions. Je recommande vraiment cette technique à tous ! Voici mes dessins (ces lignes colorées à droite, c'est la créativité du fils de mon frère).

Robot suiveur de ligne industriel pour transport de matériaux

Bien sûr, mes dessins ne sont pas très beaux, et si vous savez dessiner, vous feriez mieux en 5 minutes, mais j'étais vraiment mauvais en dessin et l'exemple ci-dessus me semble prometteur. Ensuite, j'ai créé un design CAO basé sur ce dessin. Je savais dès le début que certaines parties de ce robot seraient imprimées en 3D, mais je ne voulais pas le faire 100% en impression 3D et je voulais expérimenter et essayer de nouvelles choses (comme toujours). Finalement, j'ai décidé de découper certaines pièces au laser, mais je n'en ai pas et je n'ai jamais conçu pour la découpe laser. J'ai appris comment faire et commandé en ligne. Comme matériau, j'ai choisi du contreplaqué 4mm (vous pouvez aussi utiliser du plexi ou similaire). La partie avant du robot est imprimée en 3D et tient tous les capteurs, l'électronique et la batterie. Voici les rendus de mon design qui, à mon avis, ont l'air fantastiques !

Robot suiveur de ligne industriel pour transport de matériaux
Robot suiveur de ligne industriel pour transport de matériaux

Étape suivante : commander la découpe laser de ces plaques en bois. Je suis en Pologne, j'ai trouvé une entreprise polonaise pour économiser le transport. Si vous voulez trouver quelque chose près de chez vous, cherchez "découpe laser" + nom de votre ville. N'oubliez pas de demander à l'entreprise si elle peut ajuster les décalages pour ces pièces pour que les assemblages par tenons-mortaises s'emboîtent parfaitement (à cause du "kerf", vous pouvez en lire plus ici). Heureusement, j'ai trouvé une entreprise qui s'en est occupée pour moi, merci !

Robot suiveur de ligne industriel pour transport de matériaux

J'avais un peu peur car je n'avais jamais conçu pour la découpe laser et jamais utilisé de pièces découpées laser, mais ça s'est avéré magnifique :) Les fichiers DXF pour la découpe laser sont en pièce jointe.

Pour compléter le châssis, j'ai dû imprimer une partie avant sur imprimante 3D. Si vous n'avez pas d'imprimante 3D, envisagez d'en acheter une, elles sont assez abordables maintenant. Vous pouvez peut-être en trouver à l'école ou à la bibliothèque, ou un ami passionné. Les fichiers STL sont en pièce jointe. Pas de réglages spécifiques pour l'impression 3D, j'ai utilisé 2 parois avec 30% de remplissage et 0,2mm de hauteur de couche, il faut utiliser des supports. Cela prend environ 8 heures, soyez patient.

Une fois l'impression finie, vous pouvez la nettoyer et la visser aux pièces en contreplaqué, mais j'ai décidé d'y mettre plus de travail. Encore une chose que je n'avais jamais faite, j'ai poncé mon impression et l'ai peinte, re-poncé et re-peint, puis j'ai utilisé du mastic carrosserie pour rendre la surface parfaite, puis encore plus de ponçage et peinture. Ça a pris beaucoup de temps, mais j'ai beaucoup appris, et regardez cette surface brillante ! Elle est parfaite, on ne peut pas dire que c'était imprimé en 3D ! 2 jours de peinture et ponçage, définitivement rentable.

Robot suiveur de ligne industriel pour transport de matériaux

Et voici les pièces découpées laser et la pièce imprimée 3D prêtes pour l'assemblage.

Robot suiveur de ligne industriel pour transport de matériaux

Arduino, Capteurs, Moteurs, PCB...

Robot suiveur de ligne industriel pour transport de matériaux

Tout est contrôlé par un Arduino Pro Mini connecté à un PCB personnalisé que j'ai conçu dans Fritzing (fichiers layout et design en pièce jointe). Pour fonctionner sans intervention humaine, il y a des capteurs de ligne et un module RFID pour détecter des étiquettes placées à côté de la ligne. Le pont en H qui contrôle les moteurs-réducteurs bon marché et populaires est un L293D, petit et facile à utiliser. J'ai aussi ajouté un buzzer pour que le robot bippe quand une étiquette RFID est détectée. Tout est alimenté par une batterie LiPo 2 cellules (7,4V nominal). Comme le module RFID doit être alimenté en 3,3V, j'ai dû ajouter un régulateur de tension sur le PCB pour fournir la tension adéquate au module. Il y a aussi un capteur ultrasonique pour détecter les obstacles, la sécurité d'abord ! Il y a eu un problème : la lecture de distance avec HC-SR04 prend pas mal de temps en termes de microcontrôleur, donc j'ai conçu un autre projet (plus d'infos ici) qui rend facile et rapide la détection d'obstacles avec ce capteur. Ce n'est pas nécessaire mais facilite vraiment les choses.

Pour construire le PCB, vous avez besoin d'outils et composants (Arduino, L293D, quelques headers à détacher, connecteur batterie, buzzer, régulateur 3,3V). Vous pouvez lire plus sur comment faire un PCB chez soi et quels outils il faut ici.

Robot suiveur de ligne industriel pour transport de matériaux

Au début, je voulais fraiser mon PCB sur une machine CNC mais j'ai décidé d'utiliser une méthode que je connaissais : le transfert de toner. Ci-dessus, vous voyez le toner transféré sur la plaque de cuivre. Puis j'ai gravé mon PCB et nettoyé le toner. Il faut aussi percer les trous pour y mettre les composants traversants.

Robot suiveur de ligne industriel pour transport de matériaux

Le soudage était incroyablement facile pour un PCB DIY, d'habitude c'est beaucoup plus dur car il n'y a pas de masque de soudure*.

Robot suiveur de ligne industriel pour transport de matériaux

Il y a 5 fils de liaison sur le dessous du PCB (dans la vue PCB de Fritzing, ce sont les câbles bleus), je n'aime pas vraiment utiliser des straps mais avec des circuits plus complexes et un PCB simple face, il n'y a pas moyen de les éviter.

Robot suiveur de ligne industriel pour transport de matériaux

Comme dit, pour alimenter ce robot, j'utiliserai une batterie LiPo 2 cellules, vous pouvez utiliser toute autre batterie de tension similaire, pas besoin de capacité spécifique (plus la capacité est grande, plus le robot fonctionnera longtemps sur une charge). J'ai aussi soudé une prise sur le PCB pour connecter facilement la batterie.

Robot suiveur de ligne industriel pour transport de matériaux

Quand tout est soudé, testez si ça marche en connectant une batterie. Les LEDs de l'Arduino doivent s'allumer et il ne doit pas y avoir de fumée :)

Robot suiveur de ligne industriel pour transport de matériaux

Si tout va bien, on peut faire le dernier travail de soudure sur le PCB : souder les câbles qu'on soudera plus tard aux moteurs. Mieux vaut les faire un peu plus longs que nécessaire et couper après, vous ne voulez pas qu'ils soient trop courts.

Robot suiveur de ligne industriel pour transport de matériaux

PCB prêt ! Si vous n'avez pas d'expérience en fabrication de PCB, essayez, ce n'est pas si dur. Si vous préférez connecter avec des fils ou une plaque d'essai, libre à vous, mais ce peut être dur de tout faire rentrer dans la partie avant du robot. Avec le PCB, c'est facile ! Il reste à connecter tous les capteurs au PCB mais d'abord, on assemble le châssis et on fixe tous les capteurs dessus.

Assemblage

Robot suiveur de ligne industriel pour transport de matériaux

Les tenons-mortaises des pièces découpées laser s'emboîtent parfaitement, mais pour rendre ça vraiment rigide et durable, il faut utiliser de la colle. C'est du contreplaqué, n'importe quelle colle à bois fera l'affaire. Assurez-vous de ne pas en mettre trop et nettoyez les fuites. Ça doit sécher quelques heures, on peut faire une pause. Assurez-vous que toutes les pièces sont bien placées, il n'y aura plus moyen de changer une fois la colle sèche.

Robot suiveur de ligne industriel pour transport de matériaux
Robot suiveur de ligne industriel pour transport de matériaux
Robot suiveur de ligne industriel pour transport de matériaux

Après quelques heures, on continue l'assemblage. Il faut fixer la partie avant imprimée 3D au contreplaqué. On n'utilisera pas de colle pour ça, comme on m'a appris pendant mon stage CIT : utiliser de la colle c'est pas professionnel, oubliez (mais j'espère que c'est ok pour le bois). On utilisera des vis, placées par le dessous du robot, assurez-vous qu'elles sont courtes (disons 6mm) pour ne pas créer de courts-circuits sur les circuits à l'intérieur de la partie 3D. Le bon côté de cette fixation, c'est qu'on ne la voit pas du dessus, il faut regarder sous le robot, c'est beaucoup mieux :) Je recommande d'utiliser des rondelles pour protéger le contreplaqué de la déformation.

Robot suiveur de ligne industriel pour transport de matériaux
Robot suiveur de ligne industriel pour transport de matériaux

Voici à quoi ça devrait ressembler jusqu'ici, si propre et parfait !

Robot suiveur de ligne industriel pour transport de matériaux

Maintenant, on montera les moteurs et la roue arrière sur le châssis. Il faut des vis M3. J'ai aussi utilisé des rondelles pour protéger le contreplaqué.

Robot suiveur de ligne industriel pour transport de matériaux

Retour aux capteurs, retournez votre robot, prenez des vis M3 et un tournevis.

Robot suiveur de ligne industriel pour transport de matériaux

Assemblage fini ! Pas dur du tout, pur plaisir. On voit la forme du robot maintenant avec tous les capteurs et moteurs en place. On est vraiment proche de la fin, mais avant le test final, il faut connecter tous les capteurs au PCB.

Connexion

Robot suiveur de ligne industriel pour transport de matériaux

Cette étape peut prendre du temps, ce n'est pas dur mais vraiment délicat de passer tous les câbles dans le petit espace de la partie avant imprimée 3D. J'ai trouvé que le mieux est de connecter les câbles à tous les capteurs et modules, de les passer dans les trous de la partie avant, et à la fin de les connecter au PCB.

Je voulais mettre toute l'électronique du côté gauche de la partie 3D, mais la batterie s'est avérée un peu plus grande que prévu et j'ai dû mettre la batterie à gauche et l'électronique à droite. Pas grave, tout rentre parfaitement.

N'oubliez pas de mettre en place le capteur ultrasonique.

Pour allumer/éteindre facilement le robot, j'ai ajouté un interrupteur sur le connecteur de batterie. Il y a aussi un trou dans le panneau arrière pour y mettre l'interrupteur.

Robot suiveur de ligne industriel pour transport de matériaux
Robot suiveur de ligne industriel pour transport de matériaux

Code

Robot suiveur de ligne industriel pour transport de matériaux
Robot suiveur de ligne industriel pour transport de matériaux

Avant de refermer l'arrière de la partie avant, il faut téléverser le code sur l'Arduino Pro Mini. Il faut sortir l'Arduino du PCB et le connecter à l'ordinateur avec un convertisseur USB-UART. Le code Arduino est ci-dessous. Tout sur le code est expliqué dans les commentaires et dans la vidéo. Le code est aussi dans l'éditeur web.

Il y a aussi un programme spécial que j'ai écrit en C# pour générer des tâches pour ce robot, appelé "Task Planner" (fichier .exe ci-dessous). Il permet de générer facilement des tâches pour le robot, de les copier et coller dans l'Arduino IDE avant de téléverser. Pour générer des tâches, il faut connaître l'ID de la carte RFID. Pour l'obtenir, vous pouvez construire un circuit simple, plus d'infos ici.

Presque fini...

Robot suiveur de ligne industriel pour transport de matériaux

Maintenant, on peut fermer l'arrière de la partie avant avec les deux rabats et les visser. Ça peut être délicat de faire rentrer tous les composants, essayez de les réarranger et les mettre en positions différentes pour fermer les rabats.

Robot suiveur de ligne industriel pour transport de matériaux
Robot suiveur de ligne industriel pour transport de matériaux

Pour visser, utilisez des vis M3 courtes, pas besoin de rondelles. C'est la dernière chose à faire. Notre robot est enfin prêt pour le test final ! J'ai passé tellement de temps à le construire, je suis vraiment content de pouvoir voir s'il fonctionne comme je l'avais prévu :)

Robot suiveur de ligne industriel pour transport de matériaux

Voici à quoi il ressemble avec tous les composants en place, l'électronique cachée dans la partie avant et les capteurs montés sur le robot. Le seul inconvénient est que la recharge de la batterie peut être difficile car il faut ouvrir le rabat arrière pour la sortir. Solution simple : faire un trou dans la pièce 3D et faire sortir le câble d'équilibrage de la batterie par ce trou.

Robot suiveur de ligne industriel pour transport de matériaux

Test final !

Je n'étais pas sûr de comment vous montrer comment ce robot fonctionne ou comment le faire correctement. Le but principal de ce projet est de construire un robot open-source bon marché qui peut transporter intelligemment des choses sur des lignes d'assemblage et dans des usines. J'ai mis en place une ligne d'assemblage simple et demandé à mon père et au fils de mon frère pour aider. Notre but était de mettre un objet dans le robot, le récupérer du robot à une autre station et mettre celui qui a déjà un autocollant, et à la dernière station déplacer celui avec l'autocollant vers l'entrepôt. Une tâche simple qui imite la ligne d'assemblage et permet de tester facilement comment ça marche.

Je voulais mettre du ruban noir au sol, mais il n'était pas assez réfléchissant pour mes capteurs, donc j'ai utilisé du carton. Et on a commencé les tests, vous pouvez voir ça sur la vidéo (au début de ce projet).

Robot suiveur de ligne industriel pour transport de matériaux

Il y avait beaucoup de choses qui pouvaient mal tourner dans ce projet, mais tout s'est passé parfaitement. Ça marche comme je l'avais prévu, chaque étape, de l'idée initiale au design et à l'assemblage, s'est déroulée incroyablement bien. Quand j'ai dit qu'il y avait beaucoup de choses qui pouvaient mal tourner, je le pense vraiment. J'ai beaucoup d'expérience en impression 3D, programmation et Arduino, mais c'était la première fois que je dessinais mon projet sur papier, ce qui était une super idée et je le referai souvent, je n'avais jamais rien conçu pour découpe laser, même si j'ai un certificat de programmeur C#, je ne suis pas un maître. Et j'ai réussi à connecter tout ça pour créer un tel robot cool :) J'espère que mon projet vous a plu, si oui, n'oubliez pas de dire quelques mots dans les commentaires, je suis vraiment curieux de savoir ce que vous en pensez. Si vous avez des questions, n'hésitez pas ! Merci de votre lecture.

Bon making !

Code

Code Arduino Suiveur de Ligne Industriel

/* 
 * C by Nikodem Bartnik
 * https://NikodemBartnik.pl
 * https://www.youtube.com/user/nikodembartnik
 */
#include <SPI.h>
#include <MFRC522.h>

// Définitions des broches, si vous avez changé quelque chose dans le schéma, changez aussi les valeurs ci-dessous
#define LINESENSOR1 6
#define LINESENSOR2 7
#define LINESENSOR3 8
#define BUZZER A0
#define MOTOR1A 2
#define MOTOR1B 3
#define MOTOR2A 4
#define MOTOR2B 5
#define RFID_SDA 10
#define RFID_SCK 13
#define RFID_MOSI 11
#define RFID_MISO 12
#define RFID_RST 9
#define DISTANCESENSOR A1

// Définition des valeurs constantes
#define STOP_TIME 3000
#define BEEP_LENGTH 200
#define MOTOR_SPEED 110
#define MINIMUM_TIME_BETWEEN_CARDS 2000

MFRC522 mfrc522(10, 9);
long int last_card_read;

// Ici vous pouvez coller les tableaux du programme pour générer des plans pour ce robot que j'ai écrit en C#, trouvez ILFPlanner.exe
#define COMMANDS_LENGTH 4
char* Type[4] = {"Stop", "Beep&stop", "Beep&ignore", "Stop"};
int Value[4] = {3000, 1000, 0, 5000};
char* CardID[4] = {"12 14 B1 2F", "F6 34 F9 25", "ED B9 E0 2B", "83 87 3B 2E"};

void setup() {
  // Setup SPI pour module RFID
  SPI.begin();
  mfrc522.PCD_Init();
  // Setup de toutes les broches nécessaires
  pinMode(LINESENSOR1, INPUT);
  pinMode(LINESENSOR2, INPUT);
  pinMode(LINESENSOR3, INPUT);
  pinMode(BUZZER, OUTPUT);
  pinMode(MOTOR1A, OUTPUT);
  pinMode(MOTOR1B, OUTPUT);
  pinMode(MOTOR2A, OUTPUT);
  pinMode(MOTOR2B, OUTPUT);
  pinMode(DISTANCESENSOR, INPUT);
}

void loop() {
  // Cette partie du programme réalise la fonction de suivi de ligne
  if(digitalRead(LINESENSOR1) == LOW && digitalRead(LINESENSOR2) == HIGH && digitalRead(LINESENSOR3) == LOW){
    Forward();
  }else if(digitalRead(LINESENSOR1) == HIGH && digitalRead(LINESENSOR2) == LOW && digitalRead(LINESENSOR3) == LOW){
    Left(); delay(20);
  }else if(digitalRead(LINESENSOR1) == LOW && digitalRead(LINESENSOR2) == LOW && digitalRead(LINESENSOR3) == HIGH){
    Right(); delay(20);
  }

  // Si la dernière carte a été détectée il y a plus de MINIMUM_TIME_BETWEEN_CARDS, on peut vérifier s'il y en a une autre
  if(millis() - last_card_read >= MINIMUM_TIME_BETWEEN_CARDS){
    // Ici on attend une carte, quand elle est près du capteur
    if ( ! mfrc522.PICC_IsNewCardPresent()){
      return;
    }
    // On peut lire sa valeur
    if ( ! mfrc522.PICC_ReadCardSerial()) {
      return;
    }
    // Traitement de la valeur de la carte pour la rendre lisible
    String content = "";
    for (byte i = 0; i < mfrc522.uid.size; i++) {
      Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
      Serial.print(mfrc522.uid.uidByte[i], HEX);
      content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
      content.concat(String(mfrc522.uid.uidByte[i], HEX));
    }
    content.toUpperCase();
    content = content.substring(1);
    // Parcourir tous les CardIDs du tableau et vérifier si ça correspond à celui scanné
    for(int a = 0; a < COMMANDS_LENGTH; a++){
      last_card_read = millis();
      // Si on a une correspondance, on fait ce qui est assigné à cette carte (ex: stop et beep)
      if(content == CardID[a]){
        if(Type[a] == "Stop"){
          Stop(); delay(Value[a]);
        }else if(Type[a] == "Beep&stop"){
          digitalWrite(BUZZER, HIGH); Stop(); delay(Value[a]); digitalWrite(BUZZER, LOW);
        }else if(Type[a] == "Beep&ignore"){
          Stop(); digitalWrite(BUZZER, HIGH); delay(500); digitalWrite(BUZZER, LOW);
        }else if(Type[a] == "Ignore"){
          // ne rien faire
        }
      }
    }
  }
}

// Fonctions de contrôle des moteurs
void Forward(){
  digitalWrite(MOTOR1A, HIGH); analogWrite(MOTOR1B, 255 - MOTOR_SPEED);
  digitalWrite(MOTOR2A, HIGH); analogWrite(MOTOR2B, 255 - MOTOR_SPEED);
}
void Backward(){
  digitalWrite(MOTOR1A, LOW); analogWrite(MOTOR1B, MOTOR_SPEED);
  digitalWrite(MOTOR2A, LOW); analogWrite(MOTOR2B, MOTOR_SPEED);
}
void Left(){
  digitalWrite(MOTOR1A, LOW); analogWrite(MOTOR1B, MOTOR_SPEED);
  digitalWrite(MOTOR2A, HIGH); analogWrite(MOTOR2B, 255 - MOTOR_SPEED);
}
void Right(){
  digitalWrite(MOTOR1A, HIGH); analogWrite(MOTOR1B, 255 - MOTOR_SPEED);
  digitalWrite(MOTOR2A, LOW); analogWrite(MOTOR2B, MOTOR_SPEED);
}
void Stop(){
  digitalWrite(MOTOR1A, LOW); digitalWrite(MOTOR1B, LOW);
  digitalWrite(MOTOR2A, LOW); digitalWrite(MOTOR2B, LOW);
}

Planificateur de tâches (C#)

ZIP avec mon programme C# pour générer des tâches pour le robot, vous pouvez aussi trouver le .exe ci-dessous.

Aperçu non disponible (téléchargement uniquement).

Task planner.exe (C#)

Vous pouvez simplement l'exécuter sur votre machine Windows, sans installation.

Aperçu non disponible (téléchargement uniquement).

Pièces personnalisées et boîtiers

Schémas

Processus de fabrication

  1. Révolutionner les voyages spatiaux grâce aux matériaux imprimés en 3D de nouvelle génération
  2. 6 conseils essentiels pour maximiser la performance et la longévité des grues industrielles
  3. Comprendre les matériaux industriels : types, usages et avantages
  4. Comment choisir le bon compresseur industriel : conseils d'expert
  5. Les 10 matériaux d'impression 3D les plus résistants pour une durabilité ultime
  6. Choisir le Bon Métal pour l'Usinage CNC : Résistance, Durabilité et Coût
  7. Solutions de moulage en sable premium pour applications industrielles
  8. Choisir le Bon Ventilateur Industriel : Axial vs Centrifuge pour Systèmes de Ventilation
  9. Matériaux optimaux pour pièces tournées CNC de précision