Innholdsfortegnelse:
- Trinn 1: Slik fungerer det
- Trinn 2: Bill of Materials (BOM)
- Trinn 3: Mekanisk design
- Trinn 4: Elektronikk (valg av komponenter)
- Trinn 5: Elektronikk (tilkoblinger)
- Trinn 6: Programmering
- Trinn 7: Mulige forbedringer
- Trinn 8: Begrensende faktorer
- Trinn 9: studiepoeng
Video: Sorter Bin - Finn og sorter søppelet ditt: 9 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
Har du noen gang sett noen som ikke resirkulerer eller gjør det på en dårlig måte?
Har du noen gang ønsket deg en maskin som kunne resirkuleres for deg?
Fortsett å lese prosjektet vårt, du kommer ikke til å angre!
Sorter bin er et prosjekt med en klar motivasjon for å hjelpe gjenvinning i verden. Som det er kjent, forårsaker mangelen på resirkulering alvorlige problemer på planeten vår, som blant annet forsvinningen av råvarer og sjøforurensning.
Av den grunn har teamet vårt besluttet å utvikle et prosjekt i liten skala: en sorteringsbøtte som er i stand til å skille søppelet i forskjellige mottakere avhengig av om materialet er metall eller ikke-metall. I fremtidige versjoner kan sorteringsbeholderen ekstrapoleres i stor skala, slik at søppel kan deles inn i alle typer materialer (tre, plast, metall, organisk …).
Siden hovedformålet er å skille mellom metall eller ikke-metall, vil sorteringsbeholderen være utstyrt med induktive sensorer, men også med ultralydsensorer for å oppdage om det er noe i beholderen. Dessuten vil beholderen trenge en lineær bevegelse for å flytte søppelet inn i de to boksene, derfor er en trinnmotor valgt.
I de neste avsnittene vil dette prosjektet bli forklart trinnvis.
Trinn 1: Slik fungerer det
Sorteringsbeholderen er designet for å gjøre arbeidet relativt enkelt for brukeren: søppelet må føres gjennom hullet som er plassert i den øvre platen, den gule knappen må trykkes og prosessen starter og slutter med søppelet til en av mottakerne. Men spørsmålet nå er … hvordan fungerer denne prosessen internt?
Når prosessen har startet, lyser den grønne LED -lampen. Deretter starter ultralydsensorene, festet til topplaten gjennom en støtte, arbeidet med å finne ut om det er et objekt inne i esken eller ikke.
Hvis det ikke er noen gjenstander inne i esken, tennes den røde LED -en og den grønne slås av. Tvert imot, hvis det er et objekt, vil de induktive sensorene bli aktivert for å oppdage om objektet er metall eller ikke-metall. Når materialtypen er bestemt, tennes de røde og gule lysdiodene, og boksen beveger seg i en retning eller motsatt avhengig av materialtype, fremdrevet av trinnmotoren.
Når boksen kommer til slutten av slaget og objektet har blitt droppet til riktig mottaker, går boksen tilbake til utgangsposisjonen. Til slutt, med boksen i utgangsposisjonen, slås den gule LED -en av. Sortereren har vært klar til å starte på nytt med samme prosedyre. Denne prosessen beskrevet i de siste avsnittene er også vist på bildet av arbeidsflytdiagrammet som er vedlagt i trinn 6: Programmering.
Trinn 2: Bill of Materials (BOM)
Mekaniske deler:
-
Kjøpte deler til bunnstrukturen
- Metallstruktur [lenke]
- Grå boks [lenke]
-
3D -skriver
PLA for alle de trykte delene (andre materialer kan også brukes, for eksempel ABS)
-
Laserskjæremaskin
- MDF 3 mm
- Plexiglass 4 mm
- Linear Bearing Set [Link]
- Lineær peiling [lenke]
- Aksel [lenke]
- Akselholder (x2) [Lenke]
Elektroniske deler:
-
Motor
Lineær trinnmotor Nema 17 [lenke]
-
Batteri
12 v batteri [lenke]
-
Sensorer
- 2 Ultralydssensor HC-SR04 [Lenke]
- 2 Induktive sensorer LJ30A3-15 [Lenke]
-
Mikrokontroller
1 arduino UNO -brett
-
Ekstra komponenter
- DRV8825 driver
- 3 lysdioder: rød, grønn og oransje
- 1 knapp
- Noen hoppetråder, ledninger og loddeplater
- Brødbrett
- USB-kabel (Arduino-PC-tilkobling)
- Kondensator: 100uF
Trinn 3: Mekanisk design
På de forrige bildene vises alle delene av enheten.
For den mekaniske konstruksjonen har SolidWorks blitt brukt som CAD -program. De forskjellige delene av enheten er designet med tanke på produksjonsmetoden for hvilken de skal produseres.
Laserskårne deler:
-
MDF 3 mm
- Søyler
- Topplate
- Ultralydsensorer støtter
- Induktive sensorer støtter
- Søppelboks
- Batteristøtte
- Brødbrett og Arduino -støtte
-
Plexiglass 4 mm
Plattform
3D -trykte deler:
- Basen til søylene
- Lineær bevegelsesgirelement fra trinnmotoren
- Trinnmotor og lagerstøtter
- Veggfikseringsdeler for søppelboksen
For fremstilling av hver av disse delene, bør. STEP -filene importeres til riktig format, avhengig av maskinen som skal brukes til dette formålet. I dette tilfellet har.dxf -filer blitt brukt for laserskåret maskin og.gcode -filer for 3D -skriveren (Ultimaker 2).
Den mekaniske monteringen av dette prosjektet finnes i. STEP -filen vedlagt i denne delen.
Trinn 4: Elektronikk (valg av komponenter)
I denne delen skal det gjøres en kort beskrivelse av de elektroniske komponentene som brukes og en forklaring på komponentvalgene.
Arduino UNO -kort (som mikrokontroller):
Åpen kildekode maskinvare og programvare. Billig, lett tilgjengelig, enkel å kode. Dette brettet er kompatibelt med alle komponentene vi brukte, og du finner lett flere opplæringsprogrammer og fora som er veldig nyttige for å lære og løse problemer.
Motor (lineær trinnmotor Nema 17):
Er en type trinnmotor som deler en full rotasjon i et visst antall trinn. Som en konsekvens styres den ved å gi et visst antall trinn. Den er robust og presis og trenger ingen sensorer for å kontrollere den faktiske posisjonen. Motorens oppgave er å kontrollere bevegelsen til esken som inneholder objektet som kastes og slippe den i den høyre beholderen.
For å velge modellen har du gjort noen beregninger av det maksimale dreiemomentet som kreves, og du legger til en sikkerhetsfaktor. Når det gjelder resultatene, kjøpte vi modellen som stort sett dekker den beregnede verdien.
DRV8825 Driver:
Dette brettet brukes til å kontrollere en bipolar trinnmotor. Den har en justerbar strømkontroll som lar deg stille maksimal utgangseffekt med et potensiometer samt seks forskjellige trinnoppløsninger: full-trinn, halv-trinn, 1/4 trinn, 1/8 trinn, 1/16- trinn og 1/32-trinn (vi brukte til slutt fulltrinn da vi ikke fant behov for å gå til mikrostepping, men det kan fortsatt brukes til å forbedre kvaliteten på bevegelsen).
Ultralydsensorer:
Dette er en type akustiske sensorer som konverterer et elektrisk signal til ultralyd og omvendt. De brukte ekkosvaret til et akustisk signal som først ble sendt ut for å beregne avstanden til et objekt. Vi brukte dem til å oppdage om det er et objekt i esken eller ikke. De er enkle å bruke og gir et nøyaktig mål.
Selv om utgangen til denne sensoren er en verdi (avstand), transformerer vi ved å etablere en terskel for å bestemme om et objekt er tilstede eller ikke, transformere
Induktive sensorer:
Basert på Faradays lov, tilhører den kategorien berøringsfri elektronisk nærhetssensor. Vi plasserte dem nederst på flyttekassen, under plexiglassplattformen som støtter objektet. Målet deres er å skille mellom metall og ikke-metallgjenstander som gir en digital utgang (0/1).
Lysdioder (grønn, gul, rød):
Oppdraget deres er å kommunisere med brukeren:
-Grønn LED på: roboten venter på et objekt.
-Rød LED på: maskinen fungerer, du kan ikke kaste noen gjenstander.
-Gul LED på: et objekt blir oppdaget.
12V batteri eller 12V strømkilde + 5V USB strøm:
En spenningskilde er nødvendig for å drive sensorene og trinnmotoren. En 5V strømkilde er nødvendig for å drive Arduino. Dette kan gjøres gjennom 12V batteriet, men det er best å ha en egen 5V strømkilde for Arduino (for eksempel med en USB -kabel og telefonadapter koblet til en strømkilde eller til en datamaskin).
Problemer vi fant:
-
Induktiv sensordeteksjon, vi fikk ikke ønsket nøyaktighet, ettersom noen ganger et metallisk objekt som er dårlig plassert ikke oppfattes. Dette skyldes to begrensninger:
- Området dekket av sensorene på den firkantede plattformen representerer mindre enn 50% av det (så lite objekt kan ikke oppdages). For å løse det anbefaler vi å bruke 3 eller 4 induktive sensorer for å sikre at mer enn 70% av området er dekket.
- Deteksjonsavstanden til sensorene er begrenset til 15 mm, så vi fant oss tvunget til å bruke en fin plexiglassplattform. Dette kan også være en annen begrensning som oppdager objekter med en rar form.
- Ultralyddeteksjon: igjen, objekter formet på en kompleks måte gir problemer ettersom signalet fra sensorene reflekteres dårlig og kommer tilbake senere enn det burde til sensoren.
- Batteri: vi har noen problemer med å kontrollere strømmen som leveres av batteriet, og for å løse det brukte vi endelig en strømkilde. Imidlertid kan andre løsninger som bruk av en diode utføres.
Trinn 5: Elektronikk (tilkoblinger)
Denne delen viser ledningene til de forskjellige komponentene totalt sett. Den viser også hvilken pinne på Arduino hver komponent er koblet til.
Trinn 6: Programmering
Denne delen vil forklare programmeringslogikken bak bin -sorteringsmaskinen.
Programmet er delt inn i 4 trinn, som er som følger:
- Initialiser systemet
- Kontroller tilstedeværelsen av gjenstander
- Kontroller typen objekt som er tilstede
- Flytteboks
For en detaljert beskrivelse av hvert trinn, se nedenfor:
Trinn 1 Initialiser systemet
LED -panel (3) - sett Kalibrerings -LED (rød) HIGH, Ready LED (grønn) LOW, Object present (yellow) LOW
Kontroller at trinnmotoren er i utgangsposisjon
-
Kjør ultralyd sensortest for å måle avstand fra side til boksvegg
- Utgangsposisjon == 0 >> Oppdater verdier for Ready LED HIGH og Calibrating LED LOW -> trinn 2
-
Startposisjon! = 0 >> digital leseverdi for ultralydsensorer og basert på sensorens verdier:
- Oppdater verdi for motor i bevegelse LED HØY.
- Kjør flytteboksen til verdien av begge ultralydsensorene er <terskelverdi.
Oppdateringsverdi for startposisjon = 1 >> Oppdateringsverdi for LED Ready HIGH og motor som beveger seg LOW og kalibrerer LOW >> trinn 2
Steg 2
Kontroller tilstedeværelsen av gjenstander
Kjør ultralydobjektdeteksjon
- Object present == 1 >> Oppdater verdi av Object present LED HIGH >> Trinn 3
- Objekt til stede == 0 >> Gjør ingenting
Trinn 3
Kontroller typen objekt som er tilstede
Kjør induktiv sensordeteksjon
- inductiveState = 1 >> Trinn 4
- inductiveState = 0 >> Trinn 4
Trinn 4
Flytt boksen
Kjør motordrift
-
inductiveState == 1
Oppdater motoren som beveger seg LED HØY >> Få motoren til å bevege seg til venstre, (oppdater utgangsposisjonen = 0) forsink og gå tilbake til høyre >> Trinn 1
-
inductiveState == 0
Oppdater motoren som beveger seg LED HØY >> Få motoren til å bevege seg til høyre, (oppdater utgangsposisjonen = 0), forsink og gå tilbake til venstre >> Trinn 1
Funksjoner
Som det fremgår av programmeringslogikken, fungerer programmet ved å utføre funksjoner med et bestemt mål. For eksempel er det første trinnet å initialisere systemet som inneholder funksjonen "Kontroller trinnmotoren er i utgangsposisjon". Det andre trinnet kontrollerer deretter tilstedeværelsen av objekt som i seg selv er en annen funksjon ("Ultrasonic Object detection" -funksjonen). Og så videre.
Etter trinn 4 har programmet fullført og vil gå tilbake til trinn 1 før det kjøres igjen.
Funksjonene som brukes i hoveddelen er definert nedenfor.
De er henholdsvis:
- inductiveTest ()
- moveBox (inductiveState)
- ultrasonicObjectDetection ()
// Kontroller om objektet er metallisk eller ikke
bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; annet {return false; }} void moveBox (bool inductiveState) {// Box går til venstre når metall oppdages og inductiveState = true if (inductiveState == 0) {stepper.moveTo (trinn); // tilfeldig posisjon til slutt for testing av stepper.runToPosition (); forsinkelse (1000); stepper.moveTo (0); stepper.runToPosition (); forsinkelse (1000); } annet hvis (inductiveState == 1) {stepper.moveTo (-trinn); // tilfeldig posisjon til slutt for testing av stepper.runToPosition (); forsinkelse (1000); stepper.moveTo (0); // tilfeldig posisjon til slutt for testing av stepper.runToPosition (); forsinkelse (1000); }} boolsk ultrasonicObjectDetection () {lang varighet1, distanse1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Definer antall målinger for å ta lang avstandMax = 0; lang avstandMin = 4000; lang avstandTotal = 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"); // Ta gjennomsnittlig avstand fra avlesningene gjennomsnittlig avstand1 = avstandTotal/10; Serial.print ("Sensor1 gjennomsnittlig avstand1"); Serial.print (gjennomsnittlig avstand1); Serial.println ("mm"); // Fjern høyeste og laveste måleverdier for å unngå feilaktige avlesninger averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian1 = averageDistanceTemp/8; Serial.print ("Sensor1 averageDistanceOlympian1"); Serial.print (averageDistanceOlympian1); Serial.println ("mm");
// Tilbakestill temp -verdier
distanceTotal = 0; distanceMax = 0; avstandMin = 4000; lang varighet2, distanse2, gjennomsnittlig avstand2, gjennomsnittlig avstandOlympian2; // Definer antall målinger som skal tas for (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"); // Ta gjennomsnittlig avstand fra avlesningene averageDistance2 = distanceTotal/10; Serial.print ("Sensor2 gjennomsnittlig avstand2"); Serial.print (gjennomsnittlig avstand2); Serial.println ("mm"); // Fjern høyeste og laveste måleverdier for å unngå feilaktige avlesninger averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian2 = averageDistanceTemp/8; Serial.print ("Sensor2 averageDistanceOlympian2"); Serial.print (averageDistanceOlympian2); Serial.println ("mm"); // Tilbakestill temp -verdier distanceTotal = 0; distanceMax = 0; avstandMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true; } annet {return false; }}
Hoveddelen
Hoveddelen inneholder den samme logikken forklart øverst i denne delen, men skrevet med kode. Filen er tilgjengelig for nedlasting nedenfor.
Advarsel
Mange tester ble utført for å finne konstantene: emptyBoxDistance, trinn og maksimal hastighet og akselerasjon i oppsettet.
Trinn 7: Mulige forbedringer
- Vi trenger tilbakemelding om posisjonen til boksen for å sikre at den alltid er i de riktige posisjonene for å plukke objektet i begynnelsen. Ulike alternativer er tilgjengelige for å løse problemet, men det er enkelt å kopiere systemet som vi finner i 3D -skrivere ved hjelp av en bryter i den ene enden av boksen.
-På grunn av problemene vi fant med ultralyddeteksjonen, kan vi se etter noen alternativer for den funksjonen: KY-008 Laser- og laserdetektor (bilde), kapasitive sensorer.
Trinn 8: Begrensende faktorer
Dette prosjektet fungerer som beskrevet i instruksjonene, men spesiell forsiktighet må utvises under følgende trinn:
Kalibrering av ultralydsensorer
Vinkelen ultralydsensorene er plassert i i forhold til objektet de må oppdage, er av avgjørende betydning for at prototypen fungerer korrekt. For dette prosjektet ble en vinkel på 12,5 ° til normalen valgt for orientering av ultralydsensorene, men den beste vinkelen bør bestemmes eksperimentelt ved å registrere avstandsmålingene ved hjelp av forskjellige objekter.
Strømkilde
Nødvendig effekt for steppermotordriveren DRV8825 er 12V og mellom 0,2 og 1 Amp. Arduinoen kan også drives av maks 12V og 0,2 Amp ved å bruke inngangen på Arduino. Spesiell forsiktighet må imidlertid utvises hvis du bruker samme strømkilde for både Arduino og trinnmotordriveren. Hvis den drives fra en vanlig stikkontakt med for eksempel en 12V/2A AC/DC adapter strømforsyning, bør det være en spenningsregulator og dioder i kretsen før strømmen mates til arduino- og trinnmotordriveren.
Homing the Box
Selv om dette prosjektet bruker en trinnmotor som under normale forhold går tilbake til sin opprinnelige posisjon med høy nøyaktighet, er det god praksis å ha en hjemmemekanisme i tilfelle det oppstår en feil. Prosjektet som det er har ikke en hjemmemekanisme, men det er ganske enkelt å implementere en. For dette bør en mekanisk bryter ved boksens utgangsposisjon legges til slik at når boksen treffer bryteren, vet den at den er i utgangsposisjonen.
Stepper driver DRV8825 Tuning
Stepperdriveren krever innstilling for å fungere med trinnmotoren. Dette gjøres eksperimentelt ved å dreie potensiometeret (skruen) på DRV8825 -brikken slik at den passende mengden strøm tilføres motoren. Så, vri potensiometerskruen litt til motoren virker på en slank måte.
Trinn 9: studiepoeng
Dette prosjektet ble utført som en del av et mekatronikk -kurs i løpet av studieåret 2018-2019 for Bruface Master ved Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).
Forfatterne er:
Maxime Decleire
Lidia Gomez
Markus Poder
Adriana Puentes
Narjisse Snoussi
Spesiell takk til vår veileder Albert de Beir som også hjalp oss gjennom hele prosjektet.
Anbefalt:
Programmer ditt eget 2048 -spill med Java !: 8 trinn
Program Your Own 2048 Game W/Java !: Jeg elsker spillet 2048. Derfor bestemte jeg meg for å programmere min egen versjon. Det ligner veldig på selve spillet, men å programmere det selv gir meg friheten til å endre hva jeg vil når jeg vil. Hvis jeg vil ha et 5x5 -spill i stedet for den vanlige 4x4, vil en
Lag ditt eget fotovoltaiske 5V -system: 4 trinn (med bilder)
Lag ditt eget fotovoltaiske 5V-system: Dette bruker en buck-omformer som en 5V-utgang for å lade batteriet (Li Po/Li-ion). Og Boost -omformer for 3,7V batteri til 5V USB -utgang for enheter som trengs 5 V. Ligner det originale systemet som bruker blybatteri som energilagringslading av e
Ingen tisse nå, kjæledyradferdsjusteringsenhet som stopper kattene å tisse rundt i hjemmet ditt: 4 trinn
No Pee Now, Pet Behavior Adjustment Device som stopper kattene å tisse rundt i hjemmet ditt: Jeg ble så plaget av katten min at hun liker å tisse på sengen min, jeg sjekket alt hun trenger, og jeg tok henne også med til veterinæren. Etter at jeg har feilsøkt alt jeg kan tenke og lytte til legens ord, skjønner jeg at hun bare har en dårlig oppførsel. Så det
Smart Bin: 9 trinn
Smart Bin: Hvorfor Smart Bin? Alle har søppel. Og mest sannsynlig har alle opplevd det smertefulle argumentet om hvem som skal ta ut søpla og når. Vi hadde nylig et slikt argument i våre egne hjem, og bestemte at det var på tide å sette en stopper for denne galningen
Smart Bin: 5 trinn
Smart Bin: Vår Smart Bin lar brukerne sjekke inn med et spesialkort som er knyttet til en personlig konto. Etter å ha sjekket inn søppel som blir kastet i søppelkassen, vil brukeren få et poeng. Disse punktene kan deretter brukes til å kjøpe forskjellige gaver i byen t