Sisukord:

Sorteerimiskast - prügikasti tuvastamine ja sorteerimine: 9 sammu
Sorteerimiskast - prügikasti tuvastamine ja sorteerimine: 9 sammu

Video: Sorteerimiskast - prügikasti tuvastamine ja sorteerimine: 9 sammu

Video: Sorteerimiskast - prügikasti tuvastamine ja sorteerimine: 9 sammu
Video: SORTEERIMISKAST SORTAIDER DISAINPUIT 2024, November
Anonim
Image
Image
Kuidas see töötab
Kuidas see töötab

Kas olete kunagi näinud kedagi, kes ei tegele ringlussevõtuga või teeb seda halvasti?

Kas olete kunagi soovinud masinat, mis saaks teie jaoks ringlusse võtta?

Jätkake meie projekti lugemist, te ei kahetse!

Sorter bin on projekt, millel on selge motivatsioon aidata ringlussevõttu maailmas. Nagu on hästi teada, põhjustab ringlussevõtu puudumine meie planeedil tõsiseid probleeme, näiteks tooraine kadumine ja merereostus.

Sel põhjusel otsustas meie meeskond välja töötada väikese projekti: sorteerimiskasti, mis suudab prügi eraldada erinevateks vastuvõtjateks sõltuvalt sellest, kas materjal on metallist või mittemetallist. Tulevastes versioonides võiks selle sorteerimiskasti ekstrapoleerida laiaulatuslikult, võimaldades prügi jagada erinevateks materjalideks (puit, plast, metall, orgaaniline …).

Kuna peamine eesmärk on teha vahet metallist või mittemetallist, varustatakse sorteerimiskast induktiivsete anduritega, aga ka ultrahelianduritega, et tuvastada, kas prügikastis on midagi. Lisaks vajab prügikast prügi kahte kasti liigutamiseks lineaarset liigutust, seega valitakse muu hulgas samm -mootor.

Järgmistes osades selgitatakse seda projekti samm -sammult.

1. toiming: kuidas see toimib

Kuidas see töötab
Kuidas see töötab
Kuidas see töötab
Kuidas see töötab

Sorteerimiskast on loodud kasutajale suhteliselt lihtsaks: prügi tuleb sisestada ülemisse plaati asetatud augu kaudu, kollast nuppu vajutada ja protsess algab, lõppedes prügiga üheks vastuvõtjatelt. Kuid küsimus on nüüd selles, kuidas see protsess sisemiselt toimib?

Kui protsess on alanud, süttib roheline LED. Seejärel alustavad toe kaudu ülemisse plaati kinnitatud ultraheliandurid oma tööd, et teha kindlaks, kas kasti sees on mõni ese või mitte.

Kui karbis pole ühtegi eset, süttib punane LED ja roheline. Vastupidi, objekti olemasolul aktiveeritakse induktiivandurid, et tuvastada, kas objekt on metallist või mittemetallist. Kui materjali tüüp on kindlaks määratud, süttivad punased ja kollased LED -id ning kast liigub olenevalt materjali tüübist ühe või teise suuna suunas, mida liigutab samm -mootor.

Kui kast jõuab löögi lõpuni ja objekt on õigesse adressaati kukutatud, läheb kast tagasi algasendisse. Lõpuks kustub kast algses asendis ja kollane LED kustub. Sorteerija on valmis sama protseduuriga uuesti alustama. Seda viimastes lõikudes kirjeldatud protsessi näitab ka 6. etapis Programmeerimine lisatud töövoo diagrammi pilt.

2. toiming: materjalide arve (BOM)

Mehaanilised osad:

  • Ostetud osad põhjakonstruktsiooni jaoks

    • Metallist struktuur [link]
    • Hall kast [link]
  • 3D printer

    PLA kõigi trükitud osade jaoks (saab kasutada ka muid materjale, näiteks ABS)

  • Laserlõikamismasin

    • MDF 3 mm
    • Plexiglass 4mm
  • Lineaarlaagrite komplekt [link]
  • Lineaarne laager [link]
  • Võll [link]
  • Võllihoidja (x2) [Link]

Elektroonilised osad:

  • Mootor

    Lineaarne samm -mootor Nema 17 [link]

  • Aku

    12 v aku [link]

  • Andurid

    • 2 ultraheli andurit HC-SR04 [link]
    • 2 induktiivandurit LJ30A3-15 [Link]
  • Mikrokontroller

    1 arduino UNO plaat

  • Lisakomponendid

    • Draiver DRV8825
    • 3 LED -i: punane, roheline ja oranž
    • 1 nupp
    • Mõned hüppavad juhtmed, juhtmed ja jootmisplaadid
    • Leivalaud
    • USB-kaabel (Arduino-PC ühendus)
    • Kondensaator: 100uF

3. samm: mehaaniline disain

Image
Image
Mehaaniline disain
Mehaaniline disain
Mehaaniline disain
Mehaaniline disain

Eelmistel piltidel on näidatud kõik sõlme osad.

Mehaanilise disaini jaoks on CAD -programmina kasutatud SolidWorksi. Komplekti erinevad osad on projekteeritud, võttes arvesse tootmismeetodit, millist neist kavatsetakse toota.

Laserlõigatud osad:

  • MDF 3 mm

    • Sambad
    • Ülemine plaat
    • Ultraheli andurite tugi
    • Induktiivandurite tugi
    • Prügikast
    • Aku tugi
    • Leivalaud ja Arduino tugi
  • Plexiglass 4mm

    Platvorm

3D trükitud osad:

  • Sammaste alus
  • Lineaarse liikumise ülekandeelement samm -mootorist
  • Sammumootor ja laagritoed
  • Seinte kinnitusdetailid prügikasti jaoks

Kõigi nende osade tootmiseks tuleks. STEP -failid importida õigesse vormingusse, olenevalt sellest, millist masinat sel eesmärgil kasutatakse. Sel juhul on laserlõikamismasina jaoks kasutatud.dxf -faile ja 3D -printeri (Ultimaker 2).gcode -faile.

Selle projekti mehaaniline kokkupanek on leitav selles jaotises lisatud failist. STEP.

4. samm: elektroonika (komponentide valikud)

Selles jaotises kirjeldatakse kasutatud elektroonilisi komponente ja kirjeldatakse komponentide valikut.

Arduino UNO plaat (mikrokontrollerina):

Avatud lähtekoodiga riist- ja tarkvara. Odav, kergesti kättesaadav, lihtne kodeerida. See plaat ühildub kõigi meie kasutatavate komponentidega ja leiate hõlpsalt mitmeid õpetusi ja foorumeid, mis on probleemide õppimiseks ja lahendamiseks väga kasulikud.

Mootor (lineaarne samm -mootor Nema 17):

See on samm -mootor, mis jagab täispöörde teatud arvu sammude kaupa. Selle tulemusena kontrollitakse seda teatud arvu toimingutega. See on vastupidav ja täpne ning ei vaja selle tegeliku asukoha juhtimiseks andureid. Mootori ülesanne on kontrollida visatud eset sisaldava kasti liikumist ja kukutada see õigesse prügikasti.

Mudeli valimiseks tegite mõned arvutused maksimaalse vajaliku pöördemomendi kohta, lisades ohutusteguri. Tulemuste osas ostsime mudeli, mis katab suuresti arvutatud väärtuse.

DRV8825 draiver:

Seda plaati kasutatakse bipolaarse samm -mootori juhtimiseks. Sellel on reguleeritav voolukontroll, mis võimaldab teil potentsiomeetri abil seadistada maksimaalse voolutugevuse ja kuue erineva astme eraldusvõimega: täis-, pool-, 1/4-astmeline, 1/8-astmeline, 1/16- samm ja 1/32 sammu (lõpuks kasutasime täissammu, kuna me ei leidnud vajadust minna mikrosammudele, kuid seda saab siiski kasutada liikumise kvaliteedi parandamiseks).

Ultraheli andurid:

Need on teatud tüüpi akustilised andurid, mis muudavad elektrisignaali ultraheliks ja vastupidi. Objekti kauguse arvutamiseks kasutasid nad esmalt väljastatud helisignaali kajareaktsiooni. Nende abil tuvastasime, kas kastis on mõni objekt või mitte. Neid on lihtne kasutada ja need annavad täpse mõõtmise.

Kuigi selle anduri väljund on väärtus (kaugus), muudame objekti olemasolu või mitte kindlaksmääramiseks läve

Induktiivsed andurid:

Faraday seaduse alusel kuulub see kontaktivaba elektroonilise lähedusanduri kategooriasse. Asetasime need liikuva kasti põhja, objekti toetava pleksiklaasplatvormi alla. Nende eesmärk on eristada metallist ja mittemetallist objekti, mis annab digitaalse väljundi (0/1).

LEDid (roheline, kollane, punane):

Nende ülesanne on kasutajaga suhelda:

-Roheline LED põleb: robot ootab objekti.

-Punane LED põleb: masin töötab, ühtegi eset ei saa visata.

-Kollane LED põleb: objekt on tuvastatud.

12 V aku või 12 V toiteallikas + 5 V USB toide:

Andurite ja samm -mootori toiteks on vaja pingeallikat. Arduino toiteks on vaja 5 V toiteallikat. Seda saab teha 12 V aku kaudu, kuid kõige parem on Arduino jaoks eraldi 5 V toiteallikas (näiteks toiteallikaga või arvutiga ühendatud USB -kaabli ja telefoniadapteriga).

Leitud probleemid:

  • Induktiivse anduri tuvastamine, me ei saanud soovitud täpsust, kuna mõnikord ei tajuta halvasti paigutatud metallobjekti. Selle põhjuseks on 2 piirangut:

    • Anduritega kaetud pindala ruudukujulisel platvormil moodustab sellest vähem kui 50% (seega ei saa väikest objekti tuvastada). Selle lahendamiseks soovitame kasutada 3 või 4 induktiivandurit, et tagada üle 70% ala katmisest.
    • Andurite tuvastuskaugus on piiratud 15 mm -ga, nii et me oleme sunnitud kasutama peent pleksiklaasist platvormi. See võib olla ka teine piirang, mis tuvastab veidra kujuga objekte.
  • Ultraheli tuvastamine: jällegi tekitavad keeruka kujuga esemed probleeme, kuna andurite väljastatud signaal peegeldub halvasti ja naaseb andurile hiljem kui peaks.
  • Aku: meil on probleeme aku tarnitava voolu kontrollimisega ja selle lahendamiseks kasutasime lõpuks toiteallikat. Siiski saab teha ka muid lahendusi, näiteks dioodi kasutamist.

Samm: elektroonika (ühendused)

Elektroonika (ühendused)
Elektroonika (ühendused)
Elektroonika (ühendused)
Elektroonika (ühendused)

See jaotis näitab erinevate komponentide juhtmestikku. Samuti näitab see, millise Arduino tihvtiga iga komponent on ühendatud.

6. samm: programmeerimine

Programmeerimine
Programmeerimine

See jaotis selgitab prügikasti sortimismasina programmeerimisloogikat.

Programm on jagatud 4 etapiks, mis on järgmised:

  1. Süsteemi initsialiseerimine
  2. Kontrollige objektide olemasolu
  3. Kontrollige olemasoleva objekti tüüpi
  4. Liiguta kast

Iga sammu üksikasjaliku kirjelduse leiate allpool:

1. samm. Süsteemi initsialiseerimine

LED -paneel (3) - seadistage kalibreerimis -LED (punane) HIGH, Ready LED (roheline) LOW, objekt on olemas (kollane) LOW

Kontrollige, kas samm -mootor on algasendis

  • Tehke ultrahelianduri test, et mõõta kaugust külgpinnast seina külge

    • Lähteasend == 0 >> Värskendage Valmis LED HIGH ja Calibrating LED LOW -> samm 2
    • Algpositsioon! = 0 >> ultraheli andurite digitaalne lugemisväärtus ja anduri väärtuste põhjal:

      • Värskendage mootori liikuva LED -i väärtust HIGH.
      • Käivitage teisalduskast, kuni mõlema ultrahelianduri väärtus on <läviväärtus.

Alguspositsiooni väärtuse värskendamine = 1 >> LED -i valmiduse HIGH värskendamine ja mootori liikumine LOW ja kalibreerimine LOW >> 2. samm

2. samm

Kontrollige objektide olemasolu

Käivitage ultraheli objektide tuvastamine

  • Objekt olemas == 1 >> Objekti praeguse LED -i kõrguse värskendamine HIGH >> Samm 3
  • Objekt olemas == 0 >> Ära tee midagi

3. samm

Kontrollige olemasoleva objekti tüüpi

Käivita induktiivse anduri tuvastamine

  • induktiivne riik = 1 >> 4. samm
  • induktiivne riik = 0 >> 4. samm

4. samm

Liiguta kast

Käivitage mootor

  • induktiivne riik == 1

    Värskendage mootori liikuvat LED -i KÕRGE >> Liigutage mootor vasakule, (uuendage algpositsiooni = 0) viivitus ja liigutage paremale tagasi >> 1. samm

  • induktiivne riik == 0

    Värskendage mootori liikuvat LED -i HIGH >> Liigutage mootor paremale, (uuendage algpositsiooni = 0), viivitage ja liigutage vasakule tagasi >> 1. samm

Funktsioonid

Nagu programmeerimisloogikast näha, töötab programm konkreetse eesmärgiga funktsioone täites. Näiteks esimene samm on süsteemi initsialiseerimine, mis sisaldab funktsiooni "Kontrollige, kas samm -mootor on algasendis". Seejärel kontrollitakse teises etapis objekti olemasolu, mis iseenesest on teine funktsioon (funktsioon "Ultraheliobjekti tuvastamine"). Ja nii edasi.

Pärast 4. sammu on programm täielikult käivitatud ja naaseb enne uuesti käivitamist 1. sammu juurde.

Põhiosas kasutatavad funktsioonid on määratletud allpool.

Need on vastavalt:

  • induktiivne test ()
  • moveBox (induktiivne riik)
  • ultraheliObjectDetection ()

// Kontrollige, kas objekt on metallist või mitte

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool inductiveState) {// Kast läheb metalli tuvastamisel vasakule ja inductiveState = true if (inductiveState == 0) {stepper.moveTo (sammud); // juhuslik positsioon lõppu testimiseks stepper.runToPosition (); viivitus (1000); stepper.moveTo (0); stepper.runToPosition (); viivitus (1000); } else if (induktiivne riik == 1) {stepper.moveTo (-steps); // juhuslik positsioon lõppu testimiseks stepper.runToPosition (); viivitus (1000); stepper.moveTo (0); // juhuslik positsioon lõppu testimiseks stepper.runToPosition (); viivitus (1000); }} boolean ultraheliObjectDetection () {pikk kestus1, vahemaa1, kestusTemp, kaugusTemp, keskmineDistance1, keskmineDistanceTemp, keskmineDistanceOlympian1; // Määrake pikkade vahemaade mõõtmiste arvMax = 0; pikamaaMin = 4000; pikamaaKokku = 0; jaoks (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"); Seeria.print (kaugusMin); Serial.println ("mm"); // Võtke keskmine kaugus näitudest keskmineDistance1 = distanceTotal/10; Serial.print ("Andur1 keskmineKaugus1"); Serial.print (keskmineDistance1); Serial.println ("mm"); // Eemaldage mõõtmiste kõrgeimad ja madalaimad väärtused, et vältida ekslikke näitusid keskmineDistanceTemp = distanceTotal - (distanceMax+distanceMin); keskmineDistanceOlympian1 = keskmineKaugustemperatuur/8; Serial.print ("Andur1 keskmineDistanceOlympian1"); Serial.print (keskmineDistanceOlympian1); Serial.println ("mm");

// Lähtesta temp väärtused

distanceTotal = 0; kaugusMax = 0; kaugusMin = 4000; pikk kestus2, vahemaa2, keskmineKaugus2, keskmineKaugusOlympian2; // Määrake mõõtmiste arv (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"); Seeria.print (kaugusMin); Serial.println ("mm"); // Võtke keskmine kaugus näitudest keskmineDistance2 = distanceTotal/10; Serial.print ("Andur2 keskmineKaugus2"); Serial.print (keskmineKaugus2); Serial.println ("mm"); // Eemaldage mõõtmiste kõrgeimad ja madalaimad väärtused, et vältida ekslikke näitusid keskmineDistanceTemp = distanceTotal - (distanceMax+distanceMin); mediumDistanceOlympian2 = keskmineKaugustemperatuur/8; Serial.print ("Andur2 keskmineKaugusOlympian2"); Serial.print (keskmineDistanceOlympian2); Serial.println ("mm"); // Lähtesta temp väärtused distanceTotal = 0; kaugusMax = 0; kaugusMin = 4000; if (keskmineDistanceOlympian1 + keskmineDistanceOlympian2 <emptyBoxDistance) {return true; } else {return false; }}

Põhikeha

Põhiosa sisaldab sama loogikat, mis on selgitatud selle jaotise ülaosas, kuid kirjutatud koodiga. Fail on allalaadimiseks saadaval allpool.

Hoiatus

Konstantide leidmiseks viidi läbi palju teste: emptyBoxDistance, sammud ja maksimaalne kiirus ning kiirendus seadistuses.

7. samm: võimalikud parandused

Võimalikud täiustused
Võimalikud täiustused

- Me vajame tagasisidet kasti asukoha kohta, et tagada, et see oleks eseme valimiseks alati õiges asendis. Probleemi lahendamiseks on saadaval erinevaid võimalusi, kuid lihtne oleks kopeerida süsteem, mille leiame 3D -printeritest, kasutades kasti tee ühes otsas olevat lülitit.

-Tänu ultraheli tuvastamisega leitud probleemidele võime otsida selle funktsiooni jaoks alternatiive: KY-008 laser- ja laserdetektor (pilt), mahtuvuslikud andurid.

8. samm: tegurite piiramine

See projekt töötab juhendis kirjeldatud viisil, kuid järgmiste sammude ajal tuleb olla eriti ettevaatlik:

Ultraheli andurite kalibreerimine

Nurk, kuhu ultraheliandurid on paigutatud objekti suhtes, mida nad peavad tuvastama, on prototüübi nõuetekohase toimimise jaoks ülioluline. Selle projekti jaoks valiti ultraheli andurite orientatsiooniks 12,5 ° nurk normaalse suhtes, kuid parim nurk tuleks kindlaks määrata eksperimentaalselt, salvestades kaugusnäidud erinevate objektide abil.

Energiaallikas

Sammumootoriga DRV8825 nõutav võimsus on 12 V ja vahemikus 0,2 kuni 1 amprit. Arduino saab toita ka maksimaalselt 12 V ja 0,2 Amp abil, kasutades Arduino pistikupesa. Erilist ettevaatust tuleb aga kasutada, kui kasutada sama toiteallikat nii Arduino kui ka samm -mootoriga juhi jaoks. Kui toide saadakse tavalisest pistikupesast, kasutades näiteks 12V/2A vahelduvvoolu/alalisvooluadapteri toiteallikat, peaks enne voolu sisestamist arduino ja samm -mootori draiverisse olema ahelas pingeregulaator ja dioodid.

Kasti tagastamine

Kuigi selles projektis kasutatakse samm -mootorit, mis normaaltingimustes naaseb suure täpsusega oma algasendisse, on hea tava, et vea ilmnemisel on olemas juhtimismehhanism. Projektil puudub praegune mehhanism, kuid selle rakendamine on üsna lihtne. Selleks tuleks lisada mehaaniline lüliti kasti algsesse asendisse nii, et kui karp lülitit tabab, teab ta, et see on oma algasendis.

Stepper draiver DRV8825 Tuning

Stepper -juht nõuab samm -mootoriga töötamiseks häälestamist. Seda tehakse eksperimentaalselt, keerates DRV8825 kiibil olevat potentsiomeetrit (kruvi) nii, et mootorile antakse vajalik kogus voolu. Niisiis, keerake potentsiomeetri kruvi veidi, kuni mootor töötab lahjalt.

9. samm: krediidid

See projekt viidi läbi mehhatroonika kursuse raames õppeaastal 2018–2019 Bruface'i meistriks Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Autorid on:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Eriline tänu meie juhendajale Albert de Beirile, kes aitas meid ka kogu projekti vältel.

Soovitan: