INHOUDSOPGAWE:

Sorteerbak - Ontdek en sorteer u asblik: 9 stappe
Sorteerbak - Ontdek en sorteer u asblik: 9 stappe

Video: Sorteerbak - Ontdek en sorteer u asblik: 9 stappe

Video: Sorteerbak - Ontdek en sorteer u asblik: 9 stappe
Video: How Use Stable Diffusion, SDXL, ControlNet, LoRAs For FREE Without A GPU On Kaggle Like Google Colab 2024, November
Anonim
Image
Image
Hoe dit werk
Hoe dit werk

Het u al ooit iemand gesien wat nie herwin nie of dit sleg doen?

Wens u al ooit 'n masjien wat vir u herwin kan word?

Hou aan om ons projek te lees, u sal nie spyt wees nie!

Sorter bin is 'n projek met 'n duidelike motivering om te help met herwinning in die wêreld. Soos dit algemeen bekend is, veroorsaak die gebrek aan herwinning ernstige probleme op ons planeet, soos onder meer die verdwyning van grondstowwe en besmetting deur die see.

Om hierdie rede het ons span besluit om 'n projek op klein skaal te ontwikkel: 'n sorteerbak wat die vullis in verskillende ontvangers kan skei, afhangende van of die materiaal metaal of nie-metaal is. In toekomstige weergawes kan die sorteerbak op groot skaal geëxtrapoleer word, sodat die vullis in verskillende soorte materiaal (hout, plastiek, metaal, organies …) verdeel kan word.

Aangesien die hoofdoel is om te onderskei tussen metaal of nie-metaal, is die sorteerbak toegerus met induktiewe sensors, maar ook met ultrasoniese sensors om te bepaal of daar iets in die as is. Boonop benodig die asblik 'n lineêre beweging om die rommel in die twee bokse te plaas, daarom word 'n stapmotor gekies.

In die volgende afdelings word hierdie projek stap vir stap verduidelik.

Stap 1: Hoe dit werk

Hoe dit werk
Hoe dit werk
Hoe dit werk
Hoe dit werk

Die sorteerbak is ontwerp om die werk relatief maklik vir die gebruiker te maak: die vullis moet deur die gat in die boonste plaat geplaas word, die geel knoppie moet ingedruk word en die proses begin en eindig met die vullis in een van die ontvangers. Maar die vraag is nou … hoe werk die proses intern?

Sodra die proses begin het, brand die groen LED. Dan begin die ultrasoniese sensors, wat deur 'n steun aan die boonste plaat vasgemaak is, om te bepaal of daar 'n voorwerp in die boks is of nie.

As daar geen voorwerp in die boks is nie, skakel die rooi LED aan en die groen skakel af. Inteendeel, as daar 'n voorwerp is, word die induktiewe sensors geaktiveer om te bepaal of die voorwerp metaal of nie-metaal is. Sodra die tipe materiaal bepaal is, sal die rooi en die geel LED's aanskakel en die boks beweeg in een rigting of die teenoorgestelde, afhangende van die tipe materiaal, aangedryf deur die stapmotor.

As die boks aan die einde van die beroerte kom en die voorwerp in die regte ontvanger val, gaan die boks terug na die oorspronklike posisie. Ten slotte, met die boks in die beginposisie, gaan die geel LED uit. Die sorteerder is gereed om weer met dieselfde prosedure te begin. Hierdie proses wat in die laaste paragrawe beskryf word, word ook getoon in die prentjie van die werkstroomkaart wat aangeheg is in Stap 6: Programmering.

Stap 2: Staatsopgawe (BOM)

Meganiese onderdele:

  • Gekoop dele vir die onderste struktuur

    • Metaalstruktuur [skakel]
    • Grys boks [skakel]
  • 3D -drukker

    PLA vir al die gedrukte dele (ander materiaal kan ook gebruik word, soos ABS)

  • Laser snymasjien

    • MDF 3 mm
    • Plexiglas 4 mm
  • Lineêre laerset [skakel]
  • Lineêre peiling [skakel]
  • As [skakel]
  • Ashouer (x2) [Skakel]

Elektroniese onderdele:

  • Motor

    Lineêre stapmotor Nema 17 [skakel]

  • Battery

    12 v battery [skakel]

  • Sensors

    • 2 Ultrasoniese sensor HC-SR04 [skakel]
    • 2 Induktiewe sensors LJ30A3-15 [Skakel]
  • Mikrobeheerder

    1 arduino UNO -bord

  • Bykomende komponente

    • Bestuurder DRV8825
    • 3 LED's: rooi, groen en oranje
    • 1 knoppie
    • 'N Paar springdrade, drade en soldeerplate
    • Broodbord
    • USB-kabel (Arduino-PC-verbinding)
    • Kondensator: 100uF

Stap 3: Meganiese ontwerp

Image
Image
Meganiese ontwerp
Meganiese ontwerp
Meganiese ontwerp
Meganiese ontwerp

Op die vorige foto's word alle dele van die samestelling getoon.

Vir die meganiese ontwerp is SolidWorks as CAD -program gebruik. Die verskillende dele van die samestelling is ontwerp met inagneming van die vervaardigingsmetode vir die vervaardiging daarvan.

Laser sny dele:

  • MDF 3 mm

    • Pilare
    • Boonste bord
    • Ultrasoniese sensors ondersteun
    • Ondersteuning van induktiewe sensors
    • Vullis boks
    • Battery ondersteuning
    • Breadboard en Arduino ondersteuning
  • Plexiglas 4 mm

    Platform

3D -gedrukte onderdele:

  • Pilare se basis
  • Lineêre beweging -transmissie -element vanaf die stapmotor
  • Stapmotor en laerstutte
  • Onderdele vir die bevestiging van mure vir die asblik

Vir die vervaardiging van elk van hierdie onderdele moet die. STEP -lêers in die korrekte formaat ingevoer word, afhangende van die masjien wat vir die doel gebruik gaan word. In hierdie geval is.dxf -lêers gebruik vir die lasersnitmasjien en.gcode -lêers vir die 3D -drukker (Ultimaker 2).

Die meganiese samestelling van hierdie projek kan gevind word in die. STEP -lêer wat in hierdie afdeling aangeheg is.

Stap 4: Elektronika (komponentkeuses)

In hierdie afdeling word 'n kort beskrywing van die elektroniese komponente wat gebruik word en 'n verduideliking van die komponentkeuses gedoen.

Arduino UNO -bord (as die mikrobeheerder):

Open-source hardeware en sagteware. Goedkoop, maklik beskikbaar, maklik om te kodeer. Hierdie bord is verenigbaar met al die komponente wat ons gebruik het, en u vind baie tutoriale en forums baie nuttig om probleme te leer en op te los.

Motor (Lineêre Stepper Motor Nema 17):

Is 'n tipe stapmotor wat 'n volle rotasie in 'n sekere aantal stappe verdeel. As gevolg hiervan word dit beheer deur 'n sekere aantal stappe te gee. Dit is robuust en presies en het geen sensors nodig om die werklike posisie daarvan te beheer nie. Die motor se missie is om die beweging van die boks wat die voorwerp bevat, te beheer en in die regte houer te laat val.

Om die model te kies, het u 'n paar berekeninge gedoen van die maksimum wringkrag wat benodig word, en 'n veiligheidsfaktor bygevoeg. Wat die resultate betref, het ons die model gekoop wat die berekende waarde grotendeels dek.

Bestuurder DRV8825:

Hierdie bord word gebruik om 'n bipolêre stapmotor te beheer. Dit het 'n verstelbare stroombeheer waarmee u die maksimum stroomuitset kan stel met 'n potensiometer sowel as ses verskillende stapresolusies: volstap, halfstap, 1/4-stap, 1/8-stap, 1/16- stap en 1/32-stap (ons het uiteindelik 'n volledige stap gebruik, aangesien ons nie nodig gehad het om na mikrostap te gaan nie, maar dit kan steeds gebruik word om die kwaliteit van die beweging te verbeter).

Ultrasoniese sensors:

Dit is 'n tipe akoestiese sensors wat 'n elektriese sein in ultraklank omskakel en omgekeerd. Hulle gebruik die eggo -reaksie van 'n akoestiese sein wat eers uitgestuur is om die afstand na 'n voorwerp te bereken. Ons het dit gebruik om te bepaal of daar 'n voorwerp in die boks is of nie. Hulle is maklik om te gebruik en bied 'n akkurate maatstaf.

Alhoewel die uitset van hierdie sensor 'n waarde (afstand) is, transformeer ons deur 'n drempel vas te stel om te bepaal of 'n voorwerp teenwoordig is of nie.

Induktiewe sensors:

Gebaseer op die wet van Faraday, behoort dit tot die kategorie elektroniese nabyheidssensor sonder kontak. Ons het dit onderaan die bewegende boks geplaas, onder die plexiglasplatform wat die voorwerp ondersteun. Hulle doel is om te onderskei tussen metaal en nie-metaal voorwerpe wat 'n digitale uitset gee (0/1).

LED's (groen, geel, rooi):

Hulle missie is om met die gebruiker te kommunikeer:

-Groen LED aan: die robot wag op 'n voorwerp.

-Rood LED aan: masjien werk, jy kan geen voorwerp gooi nie.

-Geel LED aan: 'n voorwerp word opgespoor.

12V -battery of 12V -kragbron + 5V USB -krag:

'N Spanningsbron is nodig om die sensors en die stapmotor aan te dryf. 'N 5V -kragbron is nodig om die Arduino aan te dryf. Dit kan gedoen word deur die 12V -battery, maar dit is die beste om 'n aparte 5V -kragbron vir die Arduino te hê (soos met 'n USB -kabel en telefoonadapter wat aan 'n kragbron of 'n rekenaar gekoppel is).

Kwessies wat ons gevind het:

  • Ons het nie die induktiewe sensor opgespoor nie, maar ons het nie die gewenste akkuraatheid gekry nie, aangesien soms 'n slegte posisie van 'n metaalvoorwerp nie waargeneem word nie. Dit is te wyte aan 2 beperkings:

    • Die gebied wat deur die sensors op die vierkantige platform bedek word, verteenwoordig minder as 50% daarvan (so 'n klein voorwerp kan nie opgespoor word nie). Om dit op te los, beveel ons aan om 3 of 4 induktiewe sensors te gebruik om te verseker dat meer as 70% van die oppervlakte bedek is.
    • Die opsporingsafstand van die sensors is beperk tot 15 mm, daarom was ons verplig om 'n fyn plexiglasplatform te gebruik. Dit kan ook 'n ander beperking wees om voorwerpe met 'n vreemde vorm op te spoor.
  • Ultrasoniese opsporing: weer, voorwerpe wat op 'n komplekse manier gevorm is, gee probleme, aangesien die sein wat deur die sensors uitgestuur word, sleg weerspieël word en later na die sensor terugkeer.
  • Battery: ons het probleme met die beheer van die stroom wat deur die battery gelewer word, en om dit op te los, het ons uiteindelik 'n kragbron gebruik. Ander oplossings soos die gebruik van 'n diode kan egter uitgevoer word.

Stap 5: Elektronika (verbindings)

Elektronika (verbindings)
Elektronika (verbindings)
Elektronika (verbindings)
Elektronika (verbindings)

Hierdie afdeling toon die bedrading van die verskillende komponente wat heeltemal geplaas is. Dit wys ook aan watter pen op die Arduino elke komponent gekoppel is.

Stap 6: Programmering

Programmering
Programmering

Hierdie afdeling verduidelik die programmeringslogika agter die bin -sorteermasjien.

Die program is verdeel in 4 stappe, wat soos volg is:

  1. Initialiseer stelsel
  2. Kontroleer die teenwoordigheid van voorwerpe
  3. Kontroleer die tipe voorwerp wat teenwoordig is
  4. Skuifkas

Vir 'n gedetailleerde beskrywing van elke stap, sien hieronder:

Stap 1 Begin die stelsel

LED -paneel (3) - stel Kalibrerende LED (rooi) HOOG, Gereed -LED (groen) LAAG, Voorwerp teenwoordig (geel) LAAG

Kontroleer of die stapmotor in die beginposisie is

  • Doen 'n ultrasoniese sensortoets om die afstand van die kant tot by die boksmuur te meet

    • Aanvanklike posisie == 0 >> Werk waardes van Ready LED HIGH en Calibrating LED LOW op -> stap 2
    • Aanvanklike posisie! = 0 >> digitale leeswaarde van ultrasoniese sensors en gebaseer op waardes van sensor:

      • Werk die waarde van die motor bewegende LED HOOG op.
      • Begin die skuifboks totdat die waarde van beide ultrasoniese sensors <drempelwaarde is.

Werkwaarde van aanvanklike posisie by

Stap 2

Kontroleer die teenwoordigheid van voorwerpe

Begin opsporing van ultrasoniese voorwerpe

  • Object present == 1 >> Werk waarde van Object present LED HIGH op >> Stap 3
  • Voorwerp teenwoordig == 0 >> Doen niks

Stap 3

Kontroleer die tipe voorwerp wat teenwoordig is

Begin opsporing van induktiewe sensors

  • inductiveState = 1 >> Stap 4
  • inductiveState = 0 >> Stap 4

Stap 4

Skuifkas

Begin motorbedryf

  • induktiewe staat == 1

    Werk motor se bewegende LED HOOG op >> Laat motor na links beweeg, (werk oorspronklike posisie op = 0) vertraag en beweeg regs terug >> Stap 1

  • induktiewe staat == 0

    Werk motor se bewegende LED HOOG >> Laat motor regs beweeg, (werk oorspronklike posisie op = 0), vertraag en skuif terug na links >> Stap 1

Funksies

Soos uit die programmeringslogika blyk, werk die program deur funksies met 'n spesifieke doel uit te voer. Die eerste stap is byvoorbeeld om die stelsel te initialiseer wat die funksie bevat "Kontroleer of stapmotor in die beginposisie is". Die tweede stap kyk dan na die teenwoordigheid van 'n voorwerp wat op sigself 'n ander funksie is (die funksie "Ultrasoniese voorwerpopsporing"). En so meer.

Na stap 4 is die program volledig uitgevoer en sal dit terugkeer na stap 1 voordat dit weer begin.

Die funksies wat in die hoofliggaam gebruik word, word hieronder gedefinieer.

Hulle is onderskeidelik:

  • induktiewe toets ()
  • moveBox (inductiveState)
  • ultrasonicObjectDetection ()

// Kyk of die voorwerp metaal is of nie

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; anders {return false; }} void moveBox (bool inductiveState) {// Box gaan na links as metaal opgespoor word en inductiveState = true if (inductiveState == 0) {stepper.moveTo (stappe); // ewekansige posisie om te eindig vir die toets van stepper.runToPosition (); vertraging (1000); stepper.moveTo (0); stepper.runToPosition (); vertraging (1000); } anders as (inductiveState == 1) {stepper.moveTo (-stappe); // ewekansige posisie om te eindig vir die toets van stepper.runToPosition (); vertraging (1000); stepper.moveTo (0); // ewekansige posisie om te eindig vir die toets van stepper.runToPosition (); vertraging (1000); }} boolean ultrasonicObjectDetection () {long duration1, distance1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Definieer aantal metings om langafstand te neemMax = 0; langafstandMin = 4000; langafstandTotaal = 0; vir (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 minAfstand"); Serial.print (afstandMin); Serial.println ("mm"); // Neem gemiddelde afstand van lesings gemiddeldeDistance1 = distanceTotal/10; Serial.print ("Sensor1 gemiddeldeDistance1"); Serial.print (gemiddeldeDistance1); Serial.println ("mm"); // Verwyder die hoogste en laagste metingswaardes om foutiewe metings te vermy gemiddeldeDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian1 = gemiddeldeDistanceTemp/8; Serial.print ("Sensor1 gemiddeldeDistanceOlympian1"); Serial.print (gemiddeldeDistanceOlympian1); Serial.println ("mm");

// Stel temp -waardes terug

distanceTotal = 0; distanceMax = 0; afstandMin = 4000; lang duur2, afstand2, gemiddeldeDistance2, gemiddeldeDistanceOlympian2; // Definieer die aantal metings wat geneem moet word vir (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 (afstandMin); Serial.println ("mm"); // Neem gemiddelde afstand van lesings gemiddeldeDistance2 = distanceTotal/10; Serial.print ("Sensor2 gemiddeldeDistance2"); Serial.print (gemiddeldeDistance2); Serial.println ("mm"); // Verwyder die hoogste en laagste metingswaardes om foutiewe metings te vermy gemiddeldeDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian2 = averageDistanceTemp/8; Serial.print ("Sensor2 gemiddeldeDistanceOlympian2"); Serial.print (gemiddeldeDistanceOlympian2); Serial.println ("mm"); // Herstel temp waardes distanceTotal = 0; distanceMax = 0; afstandMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true; } anders {return false; }}

Hoof liggaam

Die hoofliggaam bevat dieselfde logika wat bo -aan hierdie afdeling verduidelik word, maar in kode geskryf. Die lêer kan hieronder afgelaai word.

Waarskuwing

Baie toetse is uitgevoer om die konstantes te vind: emptyBoxDistance, stappe en maksimumsnelheid en versnelling in die opstelling.

Stap 7: Moontlike verbeterings

Moontlike verbeterings
Moontlike verbeterings

- Ons benodig terugvoer oor die posisie van die boks om te verseker dat dit altyd in die regte posisies is om die voorwerp aan die begin te kies. Daar is verskillende opsies om die probleem op te los, maar dit is maklik om die stelsel wat ons in 3D -drukkers vind, te kopieer met 'n skakelaar aan die een kant van die boks se pad.

Weens die probleme wat ons met die ultrasoniese opsporing gevind het, kan ons na 'n paar alternatiewe vir die funksie soek: KY-008 Laser- en laserdetektor (beeld), kapasitiewe sensors.

Stap 8: Beperkende faktore

Hierdie projek werk soos beskryf in die instruksies, maar spesiale aandag moet geneem word tydens die volgende stappe:

Kalibrasie van ultrasoniese sensors

Die hoek waarteen die ultrasoniese sensors geplaas word in verhouding tot die voorwerp wat hulle moet opspoor, is van deurslaggewende belang vir die korrekte werking van die prototipe. Vir hierdie projek is 'n hoek van 12,5 ° tot die normale gekies vir die oriëntasie van die ultrasoniese sensors, maar die beste hoek moet eksperimenteel bepaal word deur die afstandmetings met behulp van verskillende voorwerpe op te teken.

Kragbron

Die benodigde krag vir die stapmotorbestuurder DRV8825 is 12V en tussen 0.2 en 1 Amp. Die arduino kan ook aangedryf word met 'n maksimum van 12V en 0.2 Amp deur die ingang van die ingang op die Arduino te gebruik. Spesiale sorg moet egter in ag geneem word as u dieselfde kragbron gebruik vir beide die Arduino en die stapmotorbestuurder. As dit van 'n gewone netaansluiting gevoed word deur byvoorbeeld 'n 12V/2A AC/DC -adapter -voeding, moet daar 'n spanningsreguleerder en diodes in die stroombaan wees voordat die krag in die arduino- en stappermotorbestuurder ingevoer word.

Homing the Box

Alhoewel hierdie projek 'n stapmotor gebruik wat onder normale omstandighede met 'n hoë akkuraatheid na sy oorspronklike posisie terugkeer, is dit goed om 'n tuigmeganisme te hê as daar 'n fout sou voorkom. Die projek het nie 'n tuismeganisme nie, maar dit is redelik eenvoudig om dit te implementeer. Hiervoor moet 'n meganiese skakelaar by die aanvanklike posisie van die boks bygevoeg word, sodat wanneer die boks die skakelaar tref, dit weet dat dit in sy tuisposisie is.

Stepper driver DRV8825 Tuning

Die stepper driver benodig tuning om met die step motor te werk. Dit word eksperimenteel gedoen deur die potensiometer (skroef) op die DRV8825 -chip te draai sodat die toepaslike hoeveelheid stroom aan die motor toegedien word. Draai dus die potensiometerskroef effens totdat die motor skraal werk.

Stap 9: Krediete

Hierdie projek is gedoen as deel van 'n megatronika -kursus gedurende die akademiese jaar 2018-2019 vir die Bruface Master aan die Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Die skrywers is:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Spesiale dank aan ons toesighouer Albert de Beir wat ons ook deur die hele projek gehelp het.

Aanbeveel: