Table des matières:

Poubelle de tri - Détectez et triez vos déchets : 9 étapes
Poubelle de tri - Détectez et triez vos déchets : 9 étapes

Vidéo: Poubelle de tri - Détectez et triez vos déchets : 9 étapes

Vidéo: Poubelle de tri - Détectez et triez vos déchets : 9 étapes
Vidéo: Tri et valorisation des déchets alimentaires - Syctom 2024, Juillet
Anonim
Image
Image
Comment ça fonctionne
Comment ça fonctionne

Avez-vous déjà vu quelqu'un qui ne recycle pas ou qui le fait mal ?

Avez-vous déjà souhaité une machine qui recyclerait pour vous ?

Continuez à lire notre projet, vous ne le regretterez pas!

Trier bin est un projet avec une motivation claire d'aider le recyclage dans le monde. Comme on le sait, le manque de recyclage cause de graves problèmes sur notre planète, comme la disparition des matières premières et la contamination des mers, entre autres.

Pour cette raison, notre équipe a décidé de développer un projet à petite échelle: une poubelle trieuse capable de séparer les déchets dans différents récipients selon que le matériau est métallique ou non métallique. Dans les versions futures, cette poubelle trieuse pourrait être extrapolée à grande échelle, permettant la division des déchets en toutes sortes de matériaux (bois, plastique, métal, organique…).

Le but principal étant de faire la distinction entre métal et non-métal, le bac trieur sera équipé de capteurs inductifs, mais aussi de capteurs à ultrasons afin de détecter s'il y a quelque chose dans le bac. De plus, la poubelle aura besoin d'un mouvement linéaire pour déplacer les déchets dans les deux boîtes, d'où le choix d'un moteur pas à pas.

Dans les sections suivantes, ce projet sera expliqué étape par étape.

Étape 1: Comment ça marche

Comment ça fonctionne
Comment ça fonctionne
Comment ça fonctionne
Comment ça fonctionne

La poubelle trieuse a été conçue pour rendre le travail relativement facile pour l'utilisateur: les déchets doivent être introduits par le trou qui est placé dans la plaque supérieure, le bouton jaune doit être enfoncé et le processus commence, se terminant par les déchets en un seul des destinataires. Mais la question est maintenant… comment ce processus fonctionne-t-il en interne ?

Une fois que le processus a commencé, la LED verte s'allume. Ensuite, les capteurs à ultrasons, fixés dans la plaque supérieure à travers un support, commencent leur travail pour déterminer s'il y a un objet à l'intérieur de la boîte ou non.

S'il n'y a aucun objet à l'intérieur de la boîte, la LED rouge s'allume et la verte s'éteint. Au contraire, s'il y a un objet, les capteurs inductifs seront activés afin de détecter si l'objet est métallique ou non métallique. Une fois que le type de matériel a été déterminé, les LED rouge et jaune s'allumeront et la box se déplacera dans un sens ou dans l'autre selon le type de matériel, propulsé par le moteur pas à pas.

Lorsque la boîte arrive à la fin du trait et que l'objet a été déposé dans le bon destinataire, la boîte revient à sa position initiale. Enfin, avec la box en position initiale, la LED jaune s'éteindra. La trieuse été sera prête à redémarrer avec la même procédure. Ce processus décrit dans les derniers paragraphes est également illustré dans l'image du diagramme de flux de travail joint à l'étape 6: programmation.

Étape 2: Nomenclature (BOM)

Parties mécaniques:

  • Pièces achetées pour la structure inférieure

    • Structure métallique [Lien]
    • Boîte grise [Lien]
  • Imprimante 3D

    PLA pour toutes les pièces imprimées (d'autres matériaux peuvent également être utilisés, comme l'ABS)

  • Machine à découper au laser

    • Forces de défense principale 3mm
    • Plexiglas 4mm
  • Jeu de roulements linéaires [Lien]
  • Roulement linéaire [Lien]
  • Arbre [Lien]
  • Porte-arbre (x2) [Lien]

Parties éléctroniques:

  • Moteur

    Moteur pas à pas linéaire Nema 17 [Lien]

  • Batterie

    Batterie 12 v [Lien]

  • Capteurs

    • 2 Capteur à ultrasons HC-SR04 [Lien]
    • 2 Capteurs inductifs LJ30A3-15 [Lien]
  • Microcontrôleur

    1 carte arduino UNO

  • Composants supplémentaires

    • Pilote DRV8825
    • 3 LED: rouge, verte et orange
    • 1 bouton
    • Quelques fils sauteurs, fils et plaques à souder
    • Planche à pain
    • Câble USB (connexion Arduino-PC)
    • Condensateur: 100 uF

Étape 3: Conception mécanique

Image
Image
Design mécanique
Design mécanique
Design mécanique
Design mécanique

Dans les images précédentes, toutes les pièces de l'assemblage sont montrées.

Pour la conception mécanique, SolidWorks a été utilisé comme programme de CAO. Les différentes pièces de l'assemblage ont été conçues en tenant compte du mode de fabrication dans lequel elles vont être fabriquées.

Pièces découpées au laser:

  • Forces de défense principale 3mm

    • Piliers
    • La plaque supérieure
    • Prise en charge des capteurs à ultrasons
    • Prise en charge des capteurs inductifs
    • Boîte à ordures
    • Prise en charge de la batterie
    • Prise en charge de la planche à pain et de l'Arduino
  • Plexiglas 4mm

    Plate-forme

Pièces imprimées en 3D:

  • Base des piliers
  • Élément de transmission de mouvement linéaire du moteur pas à pas
  • Moteur pas à pas et supports de roulement
  • Pièces de fixation des murs pour la poubelle

Pour la fabrication de chacune de ces pièces, les fichiers. STEP doivent être importés au bon format, en fonction de la machine qui va être utilisée à cet effet. Dans ce cas, des fichiers.dxf ont été utilisés pour la machine de découpe laser et des fichiers.gcode pour l'imprimante 3D (Ultimaker 2).

L'assemblage mécanique de ce projet se trouve dans le fichier. STEP joint dans cette section.

Étape 4: Électronique (choix des composants)

Dans cette section, une brève description des composants électroniques utilisés et une explication des choix de composants vont être faites.

Carte Arduino UNO (en tant que microcontrôleur):

Matériel et logiciel open source. Pas cher, facilement disponible, facile à coder. Cette carte est compatible avec tous les composants que nous avons utilisés et vous trouverez facilement plusieurs tutoriels et forums très utiles pour apprendre et résoudre les problèmes.

Moteur (moteur pas à pas linéaire Nema 17):

Est un type de moteur pas à pas qui divise une rotation complète en un certain nombre d'étapes. Par conséquent, il est contrôlé en donnant un certain nombre de pas. Il est robuste et précis et ne nécessite aucun capteur pour contrôler sa position réelle. La mission du moteur est de contrôler le mouvement de la boîte qui contient l'objet jeté et de le déposer dans la bonne poubelle.

Pour choisir le modèle, vous avez fait quelques calculs du couple maximum requis en ajoutant un facteur de sécurité. Concernant les résultats, nous avons acheté le modèle qui couvre largement la valeur calculée.

Pilote DRV8825:

Cette carte est utilisée pour contrôler un moteur pas à pas bipolaire. Il dispose d'un contrôle de courant réglable qui vous permet de régler la sortie de courant maximale avec un potentiomètre ainsi que six résolutions de pas différentes: pas complet, demi-pas, 1/4 pas, 1/8 pas, 1/16- pas, et 1/32-pas (nous avons finalement utilisé le pas complet car nous n'avons pas trouvé le besoin d'aller au micropas mais il peut toujours être utilisé pour améliorer la qualité du mouvement).

Capteurs à ultrasons:

Il s'agit d'un type de capteurs acoustiques qui convertissent un signal électrique en ultrasons et vice-versa. Ils ont utilisé la réponse en écho d'un signal acoustique d'abord émis pour calculer la distance à un objet. Nous les avons utilisés pour détecter s'il y a un objet dans la boîte ou non. Ils sont faciles à utiliser et fournissent une mesure précise.

Bien que la sortie de ce capteur soit une valeur (distance), en établissant un seuil pour déterminer si un objet est présent ou non, on transforme

Capteurs inductifs:

Basé sur la loi de Faraday, il appartient à la catégorie des capteurs de proximité électroniques sans contact. Nous les avons placés au fond de la boîte de déménagement, sous la plate-forme en plexiglas qui supporte l'objet. Leur objectif est de différencier les objets métalliques et non métalliques en donnant une sortie numérique (0/1).

LED (vert, jaune, rouge):

Leur mission est de communiquer avec l'utilisateur:

-LED verte allumée: le robot attend un objet.

-LED rouge allumée: machine en fonctionnement, vous ne pouvez jeter aucun objet.

-LED jaune allumée: un objet est détecté.

Batterie 12V ou source d'alimentation 12V + alimentation USB 5V:

Une source de tension est nécessaire pour alimenter les capteurs et le moteur pas à pas. Une source d'alimentation 5V est nécessaire pour alimenter l'Arduino. Cela peut être fait via la batterie 12V, mais il est préférable d'avoir une source d'alimentation 5V séparée pour l'Arduino (comme avec un câble USB et un adaptateur téléphonique connecté à une source d'alimentation ou à un ordinateur).

Problèmes que nous avons trouvés:

  • Détection par capteur inductif, nous n'avons pas obtenu la précision souhaitée car parfois un objet métallique mal positionné n'est pas perçu. Ceci est dû à 2 limitations:

    • La zone couverte par les capteurs à l'intérieur de la plate-forme carrée en représente moins de 50 % (donc les petits objets ne peuvent pas être détectés). Pour le résoudre, nous vous recommandons d'utiliser 3 ou 4 capteurs inductifs pour garantir que plus de 70% de la zone est couverte.
    • La distance de détection des capteurs est limitée à 15mm donc nous nous sommes retrouvés obligés d'utiliser une fine plateforme en plexiglas. Cela peut aussi être une autre limitation pour la détection d'objets avec une forme étrange.
  • Détection par ultrasons: là encore, les objets façonnés de manière complexe posent problème car le signal émis par les capteurs est mal réfléchi et revient plus tard qu'il ne le devrait au capteur.
  • Batterie: nous avons quelques problèmes pour contrôler le courant délivré par la batterie et pour le résoudre nous avons finalement utilisé une source d'alimentation. Cependant, d'autres solutions comme l'utilisation d'une diode peuvent être réalisées.

Étape 5: Électronique (Connexions)

Électronique (Connexions)
Électronique (Connexions)
Électronique (Connexions)
Électronique (Connexions)

Cette section montre le câblage des différents composants mis ensemble. Il montre également à quelle broche de l'Arduino chaque composant est connecté.

Étape 6: Programmation

La programmation
La programmation

Cette section explique la logique de programmation derrière la machine de tri de bacs.

Le programme est divisé en 4 étapes, qui sont les suivantes:

  1. Initialiser le système
  2. Vérifier la présence d'objets
  3. Vérifier le type d'objet présent
  4. Boîte de déplacement

Pour une description détaillée de chaque étape, voir ci-dessous:

Étape 1Initialiser le système

Panneau LED (3) - set Calibration LED (rouge) HIGH, Ready LED (vert) LOW, Objet présent (jaune) LOW

Vérifiez que le moteur pas à pas est en position initiale

  • Exécutez un test de capteur à ultrasons pour mesurer la distance entre le côté et la paroi de la boîte

    • Position initiale == 0 >> Mettre à jour les valeurs de Ready LED HIGH et de Calibrating LED LOW -> étape 2
    • Position initiale != 0 >> valeur de lecture numérique des capteurs à ultrasons et basée sur les valeurs du capteur:

      • Mettre à jour la valeur de la LED de déplacement du moteur HIGH.
      • Exécutez la boîte de déplacement jusqu'à ce que la valeur des deux capteurs à ultrasons soit inférieure à la valeur seuil.

Valeur de mise à jour de la position initiale = 1 >> Valeur de mise à jour de la LED Ready HIGH et du moteur en mouvement LOW et Calibration LOW >> étape 2

Étape 2

Vérifier la présence d'objets

Exécuter la détection d'objets par ultrasons

  • Objet présent == 1 >> Mettre à jour la valeur de l'objet présent LED HAUT >> Étape 3
  • Objet présent == 0 >> Ne rien faire

Étape 3

Vérifier le type d'objet présent

Exécuter la détection de capteur inductif

  • inductiveState = 1 >> Étape 4
  • inductiveState = 0 >> Étape 4

Étape 4

Boîte de déplacement

Exécuter Fonctionnement du moteur

  • État inductif == 1

    Mettre à jour le moteur en mouvement LED HAUT >> Faire bouger le moteur à gauche, (mettre à jour la position initiale = 0) retarder et reculer à droite >> Étape 1

  • État inductif == 0

    Mettre à jour le déplacement du moteur LED HAUT >> Faire avancer le moteur vers la droite, (mettre à jour la position initiale = 0), retarder et reculer à gauche >> Étape 1

Les fonctions

Comme le montre la logique de programmation, le programme fonctionne en exécutant des fonctions dans un but précis. Par exemple, la première étape consiste à initialiser le système qui contient la fonction "Vérifier que le moteur pas à pas est en position initiale". La deuxième étape vérifie ensuite la présence d'objet qui en elle-même est une autre fonction (la fonction "Détection d'objet par ultrasons"). Et ainsi de suite.

Après l'étape 4, le programme s'est complètement exécuté et reviendra à l'étape 1 avant de s'exécuter à nouveau.

Les fonctions utilisées dans le corps principal sont définies ci-dessous.

Ce sont respectivement:

  • Test inductif()
  • moveBox(inductiveState)
  • ultrasonicObjectDetection()

// Vérifie si l'objet est métallique ou non

bool inductiveTest() { if(digitalRead(inductiveSwitchRight) == 1 || digitalRead(inductiveSwitchLeft == 0)) { return true; else{ return false; } } void moveBox(bool inductiveState) { // La boîte va vers la gauche lorsque du métal est détecté et inductiveState = true if (inductiveState == 0){ stepper.moveTo(steps); // position aléatoire à la fin pour tester stepper.runToPosition(); retard(1000); stepper.moveTo(0); stepper.runToPosition(); retard(1000); } else if (inductiveState == 1) { stepper.moveTo(-steps); // position aléatoire à la fin pour tester stepper.runToPosition(); retard(1000); stepper.moveTo(0); // position aléatoire à la fin pour tester stepper.runToPosition(); retard(1000); } } booléen ultrasonicObjectDetection() { longue durée1, distance1, duréeTemp, distanceTemp, moyenneDistance1, moyenneDistanceTemp, moyenneDistanceOlympian1; // Définit le nombre de mesures à prendre longue distanceMax = 0; longue distanceMin = 4000; longue distanceTotal = 0; for (int i=0; i distanceMax) { distanceMax = distanceTemp; } if (distanceTemp < distanceMin) { distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor1 maxDistance "); Serial.print (distanceMax); Serial.println("mm"); Serial.print ("Sensor1 minDistance "); Serial.print (distanceMin); Serial.println("mm"); // Prendre la distance moyenne des lectures averageDistance1 = distanceTotal/10; Serial.print ("Sensor1 averageDistance1 "); Serial.print (averageDistance1); Serial.println("mm"); // Supprimer les valeurs les plus élevées et les plus basses des mesures pour éviter les lectures erronées moyenneDistanceTemp = distanceTotal - (distanceMax+distanceMin); moyenneDistanceOlympian1 = moyenneDistanceTemp/8; Serial.print ("Sensor1 averageDistanceOlympian1 "); Serial.print (averageDistanceOlympian1); Serial.println("mm");

// Réinitialiser les valeurs de température

distanceTotal = 0; distanceMax = 0; distanceMin = 4000; longue durée2, distance2, moyenneDistance2, moyenneDistanceOlympian2; // Définit le nombre de mesures à prendre pour (int i=0; i distanceMax) { distanceMax = distanceTemp; } if (distanceTemp < distanceMin) { distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor2 maxDistance "); Serial.print (distanceMax); Serial.println("mm"); Serial.print ("Sensor2 minDistance "); Serial.print (distanceMin); Serial.println("mm"); // Prendre la distance moyenne des lectures averageDistance2 = distanceTotal/10; Serial.print ("Sensor2 averageDistance2 "); Serial.print (averageDistance2); Serial.println("mm"); // Supprimer les valeurs les plus élevées et les plus basses des mesures pour éviter les lectures erronées moyenneDistanceTemp = distanceTotal - (distanceMax+distanceMin); moyenneDistanceOlympian2 = moyenneDistanceTemp/8; Serial.print ("Sensor2 averageDistanceOlympian2 "); Serial.print (averageDistanceOlympian2); Serial.println("mm"); // Réinitialiser les valeurs de température distanceTotal = 0; distanceMax = 0; distanceMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 < emptyBoxDistance) { return true; } else { return false; } }

Corps principal

Le corps principal contient la même logique expliquée en haut de cette section, mais écrite en code. Le fichier est disponible en téléchargement ci-dessous.

Avertissement

De nombreux tests ont été effectués pour trouver les constantes: emptyBoxDistance, steps et Maximumspeed et accélération dans la configuration.

Étape 7: Améliorations possibles

Améliorations possibles
Améliorations possibles

- Nous avons besoin de retours sur la position de la boîte pour s'assurer qu'elle est toujours dans les bonnes positions pour ramasser l'objet au début. Différentes options sont disponibles pour résoudre le problème, mais une solution simple pourrait consister à copier le système que l'on trouve dans les imprimantes 3D à l'aide d'un interrupteur à une extrémité du chemin de la boîte.

-En raison des problèmes que nous avons rencontrés avec la détection par ultrasons, nous pouvons rechercher des alternatives pour cette fonction: laser KY-008 et détecteur laser (image), capteurs capacitifs.

Étape 8: Facteurs limitatifs

Ce projet fonctionne comme décrit dans les instructables mais des précautions particulières doivent être prises lors des étapes suivantes:

Étalonnage des capteurs à ultrasons

L'angle sous lequel les capteurs à ultrasons sont placés par rapport à l'objet qu'ils doivent détecter est d'une importance cruciale pour le bon fonctionnement du prototype. Pour ce projet, un angle de 12,5° par rapport à la normale a été choisi pour l'orientation des capteurs à ultrasons, mais le meilleur angle doit être déterminé expérimentalement en enregistrant les lectures de distance à l'aide de divers objets.

Source d'énergie

La puissance requise pour le pilote de moteur pas à pas DRV8825 est de 12 V et entre 0,2 et 1 A. L'arduino peut également être alimenté par un maximum de 12 V et 0,2 A en utilisant l'entrée jack de l'Arduino. Des précautions particulières doivent cependant être prises si vous utilisez la même source d'alimentation pour l'Arduino et le pilote de moteur pas à pas. S'il est alimenté à partir d'une prise de courant ordinaire utilisant par exemple une alimentation d'adaptateur CA/CC 12V/2A, il doit y avoir un régulateur de tension et des diodes dans le circuit avant que l'alimentation ne soit injectée dans l'arduino et le pilote de moteur pas à pas.

Accueil de la boîte

Bien que ce projet utilise un moteur pas à pas qui, dans des conditions normales, revient à sa position initiale avec une grande précision, il est recommandé d'avoir un mécanisme de référencement en cas d'erreur. Le projet tel qu'il est n'a pas de mécanisme de homing mais il est assez simple d'en implémenter un. Pour cela, un interrupteur mécanique à la position initiale de la boîte doit être ajouté de telle sorte que lorsque la boîte frappe l'interrupteur, elle sache qu'elle est à sa position d'origine.

Pilote pas à pas DRV8825 Tuning

Le pilote pas à pas nécessite un réglage pour fonctionner avec le moteur pas à pas. Cela se fait expérimentalement en tournant le potentiomètre (vis) sur la puce DRV8825 afin que la quantité de courant appropriée soit fournie au moteur. Donc, en tournant légèrement la vis du potentiomètre jusqu'à ce que le moteur agisse de manière maigre.

Étape 9: Crédits

Ce projet a été réalisé dans le cadre d'un cours de mécatronique au cours de l'année académique 2018-2019 pour le Master Bruface à l'Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Les auteurs sont:

Maxime Decléire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Un merci spécial à notre superviseur Albert de Beir qui nous a aidés tout au long du projet également.

Conseillé: