Inhoudsopgave:

Sorter Bin - Detecteer en sorteer uw prullenbak - Ajarnpa
Sorter Bin - Detecteer en sorteer uw prullenbak - Ajarnpa

Video: Sorter Bin - Detecteer en sorteer uw prullenbak - Ajarnpa

Video: Sorter Bin - Detecteer en sorteer uw prullenbak - Ajarnpa
Video: Bin-e - the smartest waste bin worldwide 2024, Juli-
Anonim
Image
Image
Hoe het werkt
Hoe het werkt

Heb je ooit iemand gezien die niet recyclet of het op een slechte manier doet?

Heeft u ooit een machine gewild die voor u zou recyclen?

Blijf ons project lezen, u zult er geen spijt van krijgen!

Sorter bin is een project met een duidelijke motivatie om recycling in de wereld te helpen. Zoals bekend veroorzaakt het gebrek aan recycling ernstige problemen op onze planeet, zoals het verdwijnen van grondstoffen en vervuiling van de zee, onder andere.

Om die reden heeft ons team besloten om een project op kleine schaal te ontwikkelen: een sorteerbak die het afval in verschillende containers kan scheiden, afhankelijk van of het materiaal van metaal of niet-metaal is. In toekomstige versies zou die sorteerbak op grote schaal kunnen worden geëxtrapoleerd, waardoor het afval kan worden verdeeld in allerlei verschillende soorten materiaal (hout, plastic, metaal, organisch …).

Aangezien het hoofddoel is om onderscheid te maken tussen metaal en niet-metaal, zal de sorterbak worden uitgerust met inductieve sensoren, maar ook met ultrasone sensoren om te detecteren of er iets in de bak zit. Bovendien zal de bak een lineaire beweging nodig hebben om het afval in de twee dozen te verplaatsen, vandaar dat er voor oa een stappenmotor is gekozen.

In de volgende paragrafen wordt dit project stap voor stap uitgelegd.

Stap 1: Hoe het werkt

Hoe het werkt
Hoe het werkt
Hoe het werkt
Hoe het werkt

De sorteerbak is ontworpen om het werk relatief eenvoudig te maken voor de gebruiker: het afval moet door het gat in de bovenplaat worden ingevoerd, de gele knop moet worden ingedrukt en het proces begint en eindigt met het afval in één. van de ontvangers. Maar de vraag is nu… hoe werkt dat proces intern?

Zodra het proces is gestart, gaat de groene LED branden. Vervolgens beginnen de ultrasone sensoren, die via een steun in de bovenplaat zijn bevestigd, aan hun werk om te bepalen of er een object in de doos zit of niet.

Als er zich geen object in de doos bevindt, gaat de rode LED aan en de groene uit. Integendeel, als er een object is, worden de inductieve sensoren geactiveerd om te detecteren of het object van metaal of niet-metaal is. Zodra het type materiaal is bepaald, gaan de rode en gele LED's branden en beweegt de doos in de ene of de andere richting, afhankelijk van het type materiaal, aangedreven door de stappenmotor.

Wanneer de doos aan het einde van de slag arriveert en het object in de juiste ontvanger is gevallen, keert de doos terug naar de beginpositie. Ten slotte, met de doos in de beginpositie, gaat de gele LED uit. De sorteerder is klaar om opnieuw te starten met dezelfde procedure. Dit proces dat in de laatste paragrafen wordt beschreven, wordt ook getoond in de afbeelding van de workflow-grafiek die is bijgevoegd in Stap 6: Programmeren.

Stap 2: Stuklijst (BOM)

Mechanische onderdelen:

  • Onderdelen gekocht voor de bodemstructuur

    • Metalen structuur [Link]
    • Grijze doos [Link]
  • 3D-printer

    PLA voor alle geprinte onderdelen (andere materialen kunnen ook gebruikt worden, zoals ABS)

  • Laser snij machine

    • MDF 3mm
    • Plexiglas 4mm
  • Lineaire lagerset [Link]
  • Lineair lager [Link]
  • Schacht [Link]
  • Ashouder (x2) [Link]

Elektronische onderdelen:

  • Motor

    Lineaire Stappenmotor Nema 17 [Link]

  • Accu

    12 v Batterij [Link]

  • Sensoren

    • 2 Ultrasone sensor HC-SR04 [Link]
    • 2 inductieve sensoren LJ30A3-15 [Link]
  • Microcontroller

    1 arduino UNO-bord

  • Extra componenten

    • DRV8825-stuurprogramma
    • 3 LED's: rood, groen en oranje
    • 1 knop
    • Enkele springdraden, draden en soldeerplaten
    • Breadboard
    • USB-kabel (Arduino-pc-verbinding)
    • Condensator: 100uF

Stap 3: Mechanisch ontwerp

Image
Image
Mechanisch ontwerp
Mechanisch ontwerp
Mechanisch ontwerp
Mechanisch ontwerp

Op de vorige foto's zijn alle onderdelen van het samenstel weergegeven.

Voor het mechanisch ontwerp is SolidWorks gebruikt als CAD-programma. De verschillende onderdelen van het samenstel zijn ontworpen rekening houdend met de fabricagemethode waarmee ze zullen worden vervaardigd.

Lasergesneden onderdelen:

  • MDF 3mm

    • pijlers
    • Bovenplaat
    • Ondersteuning voor ultrasone sensoren
    • Ondersteuning voor inductieve sensoren
    • Vuilnisbak
    • Batterij ondersteuning
    • Breadboard- en Arduino-ondersteuning
  • Plexiglas 4mm

    Platform

3D geprinte onderdelen:

  • Pijlers basis
  • Lineair bewegingstransmissie-element van de stappenmotor
  • Stappenmotor en lagersteunen
  • Wandbevestigingsonderdelen voor de vuilnisbak

Voor de fabricage van elk van deze onderdelen moeten de. STEP-bestanden worden geïmporteerd in het juiste formaat, afhankelijk van de machine die voor dat doel wordt gebruikt. In dit geval zijn.dxf-bestanden gebruikt voor de lasersnijmachine en.gcode-bestanden voor de 3D-printer (Ultimaker 2).

De mechanische montage van dit project is te vinden in het. STEP-bestand dat in deze sectie is bijgevoegd.

Stap 4: Elektronica (componentenkeuzes)

In deze sectie wordt een korte beschrijving van de gebruikte elektronische componenten en een uitleg van de componentkeuzes gegeven.

Arduino UNO-bord (als de microcontroller):

Open source hardware en software. Goedkoop, makkelijk verkrijgbaar, makkelijk te coderen. Dit bord is compatibel met alle componenten die we hebben gebruikt en je vindt gemakkelijk meerdere tutorials en forums die erg nuttig zijn om problemen te leren en op te lossen.

Motor (Lineaire Stappenmotor Nema 17):

Is een type stappenmotor die een volledige omwenteling in een bepaald aantal stappen verdeelt. Als gevolg hiervan wordt het bestuurd door een bepaald aantal stappen te geven. Het is robuust en nauwkeurig en heeft geen sensoren nodig om zijn werkelijke positie te controleren. De missie van de motor is om de beweging van de doos met het gegooide object te regelen en in de juiste bak te laten vallen.

Om het model te kiezen, hebt u enkele berekeningen gemaakt van het maximale vereiste koppel door een veiligheidsfactor toe te voegen. Wat de resultaten betreft, hebben we het model gekocht dat grotendeels de berekende waarde dekt.

DRV8825-stuurprogramma:

Dit bord wordt gebruikt om een bipolaire stappenmotor aan te sturen. Het heeft een instelbare stroomregeling waarmee u de maximale stroomuitvoer met een potentiometer kunt instellen, evenals zes verschillende stapresoluties: volledige stap, halve stap, 1/4 stap, 1/8 stap, 1/16- stap en 1/32-stap (we hebben uiteindelijk full-step gebruikt omdat we geen noodzaak vonden om naar microstepping te gaan, maar het kan nog steeds worden gebruikt om de kwaliteit van de beweging te verbeteren).

Ultrasone sensoren:

Dit zijn een soort akoestische sensoren die een elektrisch signaal omzetten in ultrageluid en vice versa. Ze gebruikten de echorespons van een akoestisch signaal dat eerst werd uitgezonden om de afstand tot een object te berekenen. We gebruikten ze om te detecteren of er een object in de doos zit of niet. Ze zijn gemakkelijk te gebruiken en bieden een nauwkeurige meting.

Hoewel de output van deze sensor een waarde (afstand) is, transformeren we door een drempel vast te stellen om te bepalen of een object aanwezig is of niet,

Inductieve sensoren:

Gebaseerd op de wet van Faraday, behoort het tot de categorie van contactloze elektronische naderingssensoren. We plaatsten ze onderin de verhuisdoos, onder het plexiglas platform dat het object ondersteunt. Hun doel is om onderscheid te maken tussen metalen en niet-metalen objecten die een digitale output geven (0/1).

LED's (groen, geel, rood):

Hun missie is om met de gebruiker te communiceren:

-Groene LED aan: de robot wacht op een object.

- Rode LED aan: machine werkt, je kunt geen object gooien.

-Gele LED aan: er is een object gedetecteerd.

12V batterij of 12V stroombron + 5V USB voeding:

Er is een spanningsbron nodig om de sensoren en de stappenmotor van stroom te voorzien. Er is een 5V-stroombron nodig om de Arduino van stroom te voorzien. Dit kan via de 12V-batterij, maar het is het beste om een aparte 5V-voedingsbron voor de Arduino te hebben (zoals met een USB-kabel en telefoonadapter aangesloten op een voedingsbron of op een computer).

Problemen die we hebben gevonden:

  • Inductieve sensordetectie, we kregen niet de gewenste nauwkeurigheid, omdat een metalen voorwerp dat slecht gepositioneerd is soms niet wordt waargenomen. Dit komt door 2 beperkingen:

    • Het gebied dat door de sensoren binnen het vierkante platform wordt bestreken, vertegenwoordigt minder dan 50% daarvan (dus een klein object kan niet worden gedetecteerd). Om dit op te lossen raden we aan om 3 of 4 inductieve sensoren te gebruiken om ervoor te zorgen dat meer dan 70% van het gebied bedekt is.
    • De detectieafstand van de sensoren is beperkt tot 15 mm, dus we waren genoodzaakt om een fijn plexiglas platform te gebruiken. Dit kan ook een andere beperking zijn bij het detecteren van objecten met een rare vorm.
  • Ultrasone detectie: nogmaals, objecten die op een complexe manier zijn gevormd, geven problemen omdat het signaal dat door de sensoren wordt uitgezonden slecht wordt gereflecteerd en later terugkomt dan zou moeten naar de sensor.
  • Batterij: we hebben wat problemen met het regelen van de stroom die door de batterij wordt geleverd en om dit op te lossen hebben we eindelijk een stroombron gebruikt. Er kunnen echter andere oplossingen worden uitgevoerd, zoals het gebruik van een diode.

Stap 5: Elektronica (aansluitingen)

Elektronica (Aansluitingen)
Elektronica (Aansluitingen)
Elektronica (Aansluitingen)
Elektronica (Aansluitingen)

Dit gedeelte toont de bedrading van de verschillende componenten bij elkaar opgeteld. Het laat ook zien op welke pin van de Arduino elk onderdeel is aangesloten.

Stap 6: Programmeren

Programmeren
Programmeren

In dit gedeelte wordt de programmeerlogica achter de Bin Sorting-machine uitgelegd.

Het programma is verdeeld in 4 stappen, die als volgt zijn:

  1. Systeem initialiseren
  2. Controleer aanwezigheid van objecten
  3. Controleer type object aanwezig
  4. Verplaats doos

Zie hieronder voor een gedetailleerde beschrijving van elke stap:

Stap 1Initialiseer het systeem

LED paneel (3) - set Kalibratie LED (rood) HIGH, Ready LED (groen) LOW, Object aanwezig (geel) LOW

Controleer of de stappenmotor in de beginpositie staat

  • Voer een ultrasone sensortest uit om de afstand van de zijkant tot de dooswand te meten

    • Uitgangspositie == 0 >> Update waarden van Ready LED HIGH en Calibrating LED LOW -> stap 2
    • Uitgangspositie != 0 >> digitale leeswaarde van ultrasone sensoren en gebaseerd op waarden van sensor:

      • Update waarde van motor bewegende LED HOOG.
      • Draai de verhuisdoos totdat de waarde van beide ultrasone sensoren < drempelwaarde is.

Waarde van beginpositie bijwerken = 1 >> Waarde van LED bijwerken Gereed HOOG en motor beweegt LAAG en kalibreren LAAG >> stap 2

Stap 2

Controleer aanwezigheid van objecten

Ultrasone objectdetectie uitvoeren

  • Object aanwezig == 1 >> Update waarde van Object aanwezig LED HOOG >> Stap 3
  • Object aanwezig == 0 >> Niets doen

Stap 3

Controleer type object aanwezig

Inductieve sensordetectie uitvoeren

  • inductieve Staat = 1 >> Stap 4
  • inductieve Staat = 0 >> Stap 4

Stap 4

Verplaats doos

Motorwerking uitvoeren

  • inductieve Staat == 1

    Update motor bewegende LED HOOG >> Motor naar links laten bewegen, (update beginpositie = 0) vertragen en terug naar rechts >> Stap 1

  • inductieve Staat == 0

    Update motor bewegende LED HOOG >> Motor naar rechts laten bewegen (update beginpositie = 0), vertragen en naar links terug bewegen >> Stap 1

Functies

Zoals te zien is aan de programmeerlogica, werkt het programma door functies uit te voeren met een specifiek doel. De eerste stap is bijvoorbeeld het initialiseren van het systeem dat de functie "Controleer of de stappenmotor in de beginpositie staat" bevat. De tweede stap controleert vervolgens de aanwezigheid van een object dat op zichzelf een andere functie is (de functie "Ultrasone objectdetectie"). Enzovoorts.

Na stap 4 is het programma volledig uitgevoerd en keert het terug naar stap 1 voordat het opnieuw wordt uitgevoerd.

De functies die in het hoofdgedeelte worden gebruikt, worden hieronder gedefinieerd.

Het zijn respectievelijk:

  • inductieveTest()
  • moveBox (inductieve Staat)
  • ultrasone Objectdetectie()

// Controleer of het object van metaal is of niet

bool inductiveTest() {if(digitalRead(inductiveSwitchRight) == 1 || digitalRead(inductiveSwitchLeft == 0)) { return true; anders{ retourneer onwaar; } } void moveBox (bool inductiveState) {// Box gaat naar links wanneer metaal wordt gedetecteerd en inductiveState = true if (inductiveState == 0){ stepper.moveTo (steps); // willekeurige positie om te eindigen voor het testen van stepper.runToPosition(); vertraging (1000); stepper.moveTo(0); stepper.runToPosition(); vertraging (1000); } else if (inductiveState == 1) { stepper.moveTo(-steps); // willekeurige positie om te eindigen voor het testen van stepper.runToPosition(); vertraging (1000); stepper.moveTo(0); // willekeurige positie om te eindigen voor het testen van stepper.runToPosition(); vertraging (1000); } } boolean ultrasonicObjectDetection() { lange duur1, afstand1, duurTemp, distanceTemp, gemiddeldeDistance1, gemiddeldeDistanceTemp, gemiddeldeDistanceOlympian1; // Bepaal het aantal metingen om lange afstanden te nemen Max = 0; lange afstandMin = 4000; lange afstandTotaal = 0; for (int i=0; i distanceMax) { distanceMax = distanceTemp; } if (distanceTemp < distanceMin) { distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor1 maxDistance"); Serieafdruk (distanceMax); Serieel.println("mm"); Serial.print ("Sensor1 minDistance"); Seriële.afdruk (afstandMin); Serieel.println("mm"); // Neem de gemiddelde afstand van de metingen averageDistance1 = distanceTotal/10; Serial.print ("Sensor1 gemiddelde afstand1 "); Serial.print (gemiddeldeAfstand1); Serieel.println("mm"); // Verwijder de hoogste en laagste waarden van metingen om foutieve metingen te voorkomen gemiddeldeDistanceTemp = distanceTotal - (distanceMax+distanceMin); gemiddeldeDistanceOlympian1 = gemiddeldeDistanceTemp/8; Serial.print ("Sensor1 gemiddeldeDistanceOlympian1 "); Serial.print (gemiddeldeDistanceOlympian1); Serieel.println("mm");

// Reset temp-waarden

afstandTotaal = 0; afstandMax = 0; afstandMin = 4000; lange duur2, afstand2, gemiddeldeAfstand2, gemiddeldeAfstandOlympisch2; // Definieer het aantal metingen dat moet worden gedaan voor (int i=0; i distanceMax) { distanceMax = distanceTemp; } if (distanceTemp < distanceMin) { distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor2 maxDistance"); Serieafdruk (distanceMax); Serieel.println("mm"); Serial.print ("Sensor2 minDistance"); Seriële.afdruk (afstandMin); Serieel.println("mm"); // Neem de gemiddelde afstand van de metingen averageDistance2 = distanceTotal/10; Serial.print ("Sensor2 gemiddeldeAfstand2 "); Serial.print (gemiddeldeAfstand2); Serieel.println("mm"); // Verwijder de hoogste en laagste waarden van metingen om foutieve metingen te voorkomen gemiddeldeDistanceTemp = distanceTotal - (distanceMax+distanceMin); gemiddeldeDistanceOlympian2 = gemiddeldeDistanceTemp/8; Serial.print ("Sensor2 gemiddeldeDistanceOlympian2 "); Serial.print (gemiddeldeDistanceOlympian2); Serieel.println("mm"); // Reset temp waarden distanceTotal = 0; afstandMax = 0; afstandMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 < emptyBoxDistance) { return true; } else { return false; } }

Centrale gedeelte

De hoofdtekst bevat dezelfde logica die bovenaan deze sectie is uitgelegd, maar dan in code geschreven. Het bestand is hieronder te downloaden.

Waarschuwing

Er zijn veel tests uitgevoerd om de constanten te vinden: emptyBoxDistance, steps en Maximumspeed en acceleratie in de setup.

Stap 7: Mogelijke verbeteringen

Mogelijke verbeteringen
Mogelijke verbeteringen

- We hebben feedback nodig over de positie van de doos om ervoor te zorgen dat deze altijd in de juiste posities staat om het object aan het begin te kiezen. Er zijn verschillende opties beschikbaar om het probleem op te lossen, maar een makkelijke zou kunnen zijn om het systeem dat we in 3D-printers vinden te kopiëren met een schakelaar aan het ene uiteinde van het pad van de doos.

-Vanwege de problemen die we hebben gevonden met de ultrasone detectie, kunnen we zoeken naar enkele alternatieven voor die functie: KY-008 Laser en Laser Detector (afbeelding), capacitieve sensoren.

Stap 8: Beperkende factoren

Dit project werkt zoals beschreven in de instructables, maar er moet speciale aandacht worden besteed aan de volgende stappen:

Kalibratie van ultrasone sensoren

De hoek waaronder de ultrasone sensoren worden geplaatst ten opzichte van het object dat ze moeten detecteren, is van cruciaal belang voor het correct functioneren van het prototype. Voor dit project werd een hoek van 12,5° met de normaal gekozen voor de oriëntatie van de ultrasone sensoren, maar de beste hoek zou experimenteel moeten worden bepaald door de afstandsmetingen op te nemen met behulp van verschillende objecten.

Krachtbron

Het benodigde vermogen voor de stappenmotor driver DRV8825 is 12V en ligt tussen 0.2 en 1 Amp. De arduino kan ook worden gevoed door maximaal 12V en 0,2 Ampère door gebruik te maken van de jack-ingang op de Arduino. Er moet echter speciale aandacht worden besteed aan het gebruik van dezelfde stroombron voor zowel de Arduino als de stappenmotordriver. Indien gevoed vanuit een gewoon stopcontact met behulp van bijvoorbeeld een 12V/2A AC/DC-adaptervoeding, moeten er een spanningsregelaar en diodes in het circuit zijn voordat de stroom naar de arduino- en stappenmotordriver wordt gevoerd.

De doos naar huis sturen

Hoewel dit project gebruik maakt van een stappenmotor die onder normale omstandigheden met hoge nauwkeurigheid terugkeert naar zijn oorspronkelijke positie, is het een goede gewoonte om een homing-mechanisme te hebben voor het geval er een fout optreedt. Het project zoals het is heeft geen homing-mechanisme, maar het is vrij eenvoudig om er een te implementeren. Hiervoor moet een mechanische schakelaar in de beginpositie van de doos worden toegevoegd, zodat wanneer de doos de schakelaar raakt, hij weet dat hij zich in zijn thuispositie bevindt.

Stappendriver DRV8825 Tuning

De stappenmotor moet worden afgesteld om met de stappenmotor te werken. Dit wordt experimenteel gedaan door de potentiometer (schroef) op de DRV8825-chip zo te draaien dat de juiste hoeveelheid stroom aan de motor wordt geleverd. Dus, de potentiometerschroef een beetje draaien totdat de motor mager werkt.

Stap 9: Tegoeden

Dit project werd uitgevoerd in het kader van een opleiding mechatronica tijdens het academiejaar 2018-2019 voor de Bruface Master aan de Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

De auteurs zijn:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Speciale dank aan onze supervisor Albert de Beir die ons ook tijdens het project heeft geholpen.

Aanbevolen: