Sadržaj:

Kanta za razvrstavanje - Otkrijte i sortirajte otpad: 9 koraka
Kanta za razvrstavanje - Otkrijte i sortirajte otpad: 9 koraka

Video: Kanta za razvrstavanje - Otkrijte i sortirajte otpad: 9 koraka

Video: Kanta za razvrstavanje - Otkrijte i sortirajte otpad: 9 koraka
Video: Overview of Syncopal Disorders 2024, Studeni
Anonim
Image
Image
Kako radi
Kako radi

Jeste li ikada vidjeli nekoga tko ne reciklira ili to radi na loš način?

Jeste li ikada poželjeli stroj koji bi reciklirao umjesto vas?

Nastavite čitati naš projekt, nećete požaliti!

Sortirnica je projekt s jasnom motivacijom pomoći recikliranju u svijetu. Kao što je poznato, nedostatak recikliranja uzrokuje ozbiljne probleme na našem planetu, poput nestanka sirovina i onečišćenja mora, među ostalim.

Zbog toga je naš tim odlučio razviti projekt u malom opsegu: kantu za razvrstavanje koja može odvojiti smeće na različite primatelje ovisno o tome je li materijal metalni ili nemetalni. U budućim verzijama ta bi se kanta za razvrstavanje mogla ekstrapolirati u velikoj mjeri, dopuštajući podjelu smeća na sve različite vrste materijala (drvo, plastika, metal, organski …).

Budući da je glavna svrha razlikovati metalne ili nemetalne, kanta za razvrstavanje bit će opremljena induktivnim senzorima, ali i ultrazvučnim senzorima kako bi se otkrilo ima li nešto u kanti. Štoviše, kanti će trebati linearno kretanje za premještanje smeća u dvije kutije, pa je odabran ia koračni motor.

U sljedećim odjeljcima ovaj će se projekt objasniti korak po korak.

Korak 1: Kako to radi

Kako radi
Kako radi
Kako radi
Kako radi

Kanta za razvrstavanje dizajnirana je kako bi korisniku učinila posao relativno lakim: smeće se mora unijeti kroz rupu postavljenu na gornjoj ploči, pritisnuti žuti gumb i proces počinje, završavajući smećem u jedno primatelja. No, pitanje je sada … kako taj proces funkcionira interno?

Nakon što je proces započeo, zelena LED lampica svijetli. Zatim ultrazvučni senzori, pričvršćeni na gornju ploču kroz nosač, započinju svoj rad kako bi utvrdili postoji li objekt unutar kutije ili ne.

Ako unutar kutije nema predmeta, crvena LED lampica se uključuje, a zelena isključuje. Naprotiv, ako postoji objekt, aktivirat će se induktivni senzori kako bi se otkrilo je li predmet metalni ili nemetalni. Nakon što se utvrdi vrsta materijala, uključit će se crvena i žuta LED dioda, a kutija će se pomaknuti prema jednom ili suprotnom smjeru, ovisno o vrsti materijala, pogonjenom koračnim motorom.

Kad okvir stigne do kraja poteza i objekt je pao u ispravnog primatelja, okvir će se vratiti u početni položaj. Konačno, s kutijom u početnom položaju, žuta LED dioda će se isključiti. Sortirač će biti spreman za ponovni početak s istim postupkom. Ovaj proces opisan u posljednjim odlomcima također je prikazan na slici grafikona tijeka rada u prilogu u Koraku 6: Programiranje.

2. korak: Opis materijala (BOM)

Mehanički dijelovi:

  • Kupljeni dijelovi za donju konstrukciju

    • Metalna struktura [Veza]
    • Siva kutija [Veza]
  • 3D pisač

    PLA za sve tiskane dijelove (mogu se koristiti i drugi materijali, poput ABS -a)

  • Stroj za lasersko rezanje

    • MDF 3 mm
    • Pleksiglas 4 mm
  • Set linearnih ležajeva [veza]
  • Linearni ležaj [veza]
  • Vratilo [Veza]
  • Držač vratila (x2) [Veza]

Elektronički dijelovi:

  • Motor

    Linearni koračni motor Nema 17 [Veza]

  • Baterija

    12 v baterija [veza]

  • Senzori

    • 2 Ultrazvučni senzor HC-SR04 [Veza]
    • 2 induktivna senzora LJ30A3-15 [Veza]
  • Mikrokontroler

    1 arduino UNO ploča

  • Dodatne komponente

    • Upravljački program DRV8825
    • 3 LED diode: crvena, zelena i narančasta
    • 1 gumb
    • Neke žice za preskakanje, žice i ploče za lemljenje
    • Oglasna ploča
    • USB kabel (Arduino-PC veza)
    • Kondenzator: 100uF

Korak 3: Strojarski dizajn

Image
Image
Strojarski dizajn
Strojarski dizajn
Strojarski dizajn
Strojarski dizajn

Na prethodnim slikama prikazani su svi dijelovi sklopa.

Za mehaničko projektiranje, SolidWorks je korišten kao CAD program. Različiti dijelovi sklopa dizajnirani su uzimajući u obzir način proizvodnje koji će se proizvoditi.

Laserski izrezani dijelovi:

  • MDF 3 mm

    • Stupovi
    • Gornja ploča
    • Podrška ultrazvučnim senzorima
    • Podrška za induktivne senzore
    • Kutija za smeće
    • Podrška za baterije
    • Breadboard i podrška za Arduino
  • Pleksiglas 4 mm

    Platforma

3D ispisani dijelovi:

  • Baza stupova
  • Element prijenosa linearnog kretanja iz koračnog motora
  • Nosači koračnog motora i ležajeva
  • Dijelovi za pričvršćivanje zidova na kutiju za smeće

Za proizvodnju svakog od ovih dijelova,. STEP datoteke trebaju se uvesti u ispravan format, ovisno o stroju koji će se koristiti u tu svrhu. U ovom slučaju,.dxf datoteke su korištene za stroj za lasersko rezanje, a.gcode datoteke za 3D pisač (Ultimaker 2).

Mehanički sklop ovog projekta može se pronaći u. STEP datoteci priloženoj u ovom odjeljku.

Korak 4: Elektronika (izbor komponenti)

U ovom odjeljku bit će napravljen kratak opis korištenih elektroničkih komponenti i objašnjenje izbora komponenti.

Arduino UNO ploča (kao mikrokontroler):

Hardver i softver otvorenog koda. Jeftino, lako dostupno, lako kodiranje. Ova je ploča kompatibilna sa svim komponentama koje smo koristili i lako ćete pronaći više vodiča i foruma koji su vrlo korisni za učenje i rješavanje problema.

Motor (Linearni koračni motor Nema 17):

Je tip koračnog motora koji dijeli potpunu rotaciju u određenom broju koraka. Kao posljedica toga, kontrolira se davanjem određenog broja koraka. Robustan je i precizan i ne trebaju nikakvi senzori za kontrolu njegovog stvarnog položaja. Misija motora je kontrolirati kretanje kutije koja sadrži bačeni predmet i ispustiti ga u desnu košaru.

Za odabir modela napravili ste neke izračune najvećeg potrebnog zakretnog momenta dodajući sigurnosni faktor. Što se tiče rezultata, kupili smo model koji velikim dijelom pokriva izračunatu vrijednost.

DRV8825 Upravljački program:

Ova ploča služi za upravljanje bipolarnim koračnim motorom. Ima podesivu kontrolu struje koja vam omogućuje podešavanje maksimalnog izlaza struje s potenciometrom, kao i šest različitih razlučivosti koraka: puni korak, pola koraka, 1/4 koraka, 1/8 koraka, 1/16- korak i 1/32 koraka (konačno smo koristili potpuni korak jer nismo našli potrebu ići na mikrokorake, ali se i dalje može koristiti za poboljšanje kvalitete pokreta).

Ultrazvučni senzori:

To su vrsta akustičkih senzora koji pretvaraju električni signal u ultrazvuk i obrnuto. Koristili su odjek odziva zvučnog signala koji se prvo emitirao za izračunavanje udaljenosti do objekta. Koristili smo ih za otkrivanje postoji li objekt u kutiji ili ne. Jednostavni su za uporabu i pružaju točne mjere.

Iako je izlaz ovog senzora vrijednost (udaljenost), utvrđivanjem praga za utvrđivanje je li objekt prisutan ili ne, pretvaramo

Induktivni senzori:

Na temelju Faradayevog zakona, spada u kategoriju beskontaktnih elektroničkih senzora blizine. Postavili smo ih na dno pokretne kutije, ispod platforme od pleksiglasa koja podržava objekt. Njihov je cilj razlikovati metalne i nemetalne predmete koji daju digitalni izlaz (0/1).

LED diode (zelena, žuta, crvena):

Njihova misija je komunicirati s korisnikom:

-Uključena zelena LED dioda: robot čeka objekt.

-Crvena LED lampica svijetli: stroj radi, ne možete baciti bilo koji predmet.

-Žuta LED svijetli: otkriven je objekt.

12V baterija ili 12V izvor napajanja + 5V USB napajanje:

Za napajanje senzora i koračnog motora potreban je izvor napona. Za napajanje Arduina potreban je izvor napajanja od 5 V. To se može učiniti pomoću baterije od 12 V, ali najbolje je imati zaseban izvor napajanja od 5 V za Arduino (kao što je USB kabel i telefonski adapter spojen na izvor napajanja ili na računalo).

Problemi koje smo pronašli:

  • Detekcijom induktivnog senzora nismo dobili željenu točnost jer se ponekad ne opaža metalni predmet koji je loše postavljen. To je zbog 2 ograničenja:

    • Područje prekriveno senzorima unutar četvrtaste platforme predstavlja manje od 50% (tako da se mali objekt ne može otkriti). Za njegovo rješavanje preporučujemo korištenje 3 ili 4 induktivna senzora kako biste osigurali da je više od 70% površine pokriveno.
    • Udaljenost dokazivanja senzora ograničena je na 15 mm pa smo se našli prisiljeni koristiti platformu od pleksiglasa. Ovo također može biti još jedno ograničenje za otkrivanje objekata čudnog oblika.
  • Ultrazvučno otkrivanje: opet, predmeti oblikovani na složen način stvaraju probleme jer se signal koji emitiraju senzori loše reflektira i vraća se senzoru kasnije nego što bi trebao.
  • Baterija: imamo nekih problema s kontroliranjem struje koju isporučuje baterija i kako bismo je riješili, napokon smo upotrijebili izvor napajanja. Međutim, mogu se izvesti i druga rješenja poput upotrebe diode.

Korak 5: Elektronika (veze)

Elektronika (veze)
Elektronika (veze)
Elektronika (veze)
Elektronika (veze)

Ovaj odjeljak prikazuje ožičenje različitih komponenti stavljenih zajedno. Također pokazuje na koji je pin na Arduinu spojena svaka komponenta.

Korak 6: Programiranje

Programiranje
Programiranje

Ovaj odjeljak objašnjava logiku programiranja koja stoji iza stroja za sortiranje kanti.

Program je podijeljen u 4 koraka, a to su:

  1. Inicijalizirati sustav
  2. Provjerite prisutnost objekata
  3. Provjerite vrstu prisutnog objekta
  4. Premjesti kutiju

Detaljan opis svakog koraka potražite u nastavku:

Korak 1 Pokrenite sustav

LED ploča (3) - postavljena Kalibracijska LED (crvena) HIGH, LED spremna (zelena) LOW, Objekt prisutan (žuta) LOW

Provjerite je li koračni motor u početnom položaju

  • Pokrenite test ultrazvučnog senzora za mjerenje udaljenosti od strane do stijenke kutije

    • Početni položaj == 0 >> Ažurirajte vrijednosti Ready LED HIGH i Calibrating LED LOW -> korak 2
    • Početna pozicija! = 0 >> digitalna vrijednost očitanja ultrazvučnih senzora i na temelju vrijednosti senzora:

      • Ažuriranje vrijednosti LED -a u pokretu HIGH.
      • Pokrenite okvir za pomicanje dok vrijednost oba ultrazvučna senzora ne bude <vrijednost praga.

Ažuriranje vrijednosti početnog položaja = 1 >> Vrijednost ažuriranja LED spremno HIGH i motor se kreće LOW i kalibrira LOW >> korak 2

Korak 2

Provjerite prisutnost objekata

Pokrenite ultrazvučno otkrivanje objekata

  • Objekt je prisutan == 1 >> Ažuriraj vrijednost prisutnog objekta LED HIGH >> Korak 3
  • Objekt je prisutan == 0 >> Ne poduzimajte ništa

Korak 3

Provjerite vrstu prisutnog objekta

Pokrenite otkrivanje induktivnog senzora

  • inductiveState = 1 >> Korak 4
  • inductiveState = 0 >> Korak 4

Korak 4

Premjesti kutiju

Pokrenite rad motora

  • induktivnadržava == 1

    Ažuriranje LED -a u pokretu motora HIGH >> Ostavite motor da se pomakne ulijevo, (ažurirajte početni položaj = 0) odgodite i pomaknite se natrag udesno >> Korak 1

  • induktivnadržava == 0

    Ažuriranje LED -a u pokretu motora HIGH >> Pomaknite motor udesno (ažurirajte početni položaj = 0), odgodite i pomaknite se natrag ulijevo >> Korak 1

Funkcije

Kao što se može vidjeti iz programske logike, program radi izvršavajući funkcije s određenim ciljem. Na primjer, prvi korak je inicijalizacija sustava koji sadrži funkciju "Provjerite je li koračni motor u početnom položaju". Drugi korak zatim provjerava prisutnost objekta koji je sam po sebi druga funkcija (funkcija "Ultrazvučno otkrivanje objekata"). I tako dalje.

Nakon 4. koraka, program je u potpunosti izveden i vratit će se na 1. korak prije ponovnog izvođenja.

Dolje su definirane funkcije koje se koriste u glavnom tijelu.

Oni su:

  • inductiveTest ()
  • moveBox (inductiveState)
  • ultrasonicObjectDetection ()

// Provjerite je li predmet metalni ili nije

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool inductiveState) {// Okvir ide lijevo kada se otkrije metal, a inductiveState = true if (inductiveState == 0) {stepper.moveTo (koraci); // slučajni položaj do kraja za testiranje stepper.runToPosition (); kašnjenje (1000); stepper.moveTo (0); stepper.runToPosition (); kašnjenje (1000); } else if (inductiveState == 1) {stepper.moveTo (-steps); // slučajni položaj do kraja za testiranje stepper.runToPosition (); kašnjenje (1000); stepper.moveTo (0); // slučajni položaj do kraja za testiranje stepper.runToPosition (); kašnjenje (1000); }} boolean ultrasonicObjectDetection () {long duration1, distance1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Definiraj broj mjerenja za dugo udaljenostMax = 0; velika udaljenostMin = 4000; long distanceTotal = 0; for (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor1 maxDistance"); Serijski.ispis (distanceMax); Serial.println ("mm"); Serial.print ("Senzor1 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Uzmi prosječnu udaljenost od očitanja averageDistance1 = distanceTotal/10; Serial.print ("Sensor1 averageDistance1"); Serial.print (averageDistance1); Serial.println ("mm"); // Uklanjanje najvećih i najnižih vrijednosti mjerenja kako bi se izbjegla pogrešna očitanja averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian1 = averageDistanceTemp/8; Serial.print ("Sensor1 averageDistanceOlympian1"); Serial.print (averageDistanceOlympian1); Serial.println ("mm");

// Vraćanje privremenih vrijednosti

distanceTotal = 0; udaljenostMax = 0; udaljenostMin = 4000; dugo trajanje2, udaljenost2, prosječna udaljenost2, prosječna udaljenostolimpijca2; // Definiraj broj mjerenja za (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor2 maxDistance"); Serijski.ispis (distanceMax); Serial.println ("mm"); Serial.print ("Sensor2 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Uzmi prosječnu udaljenost od očitanja averageDistance2 = distanceTotal/10; Serial.print ("Sensor2 averageDistance2"); Serial.print (averageDistance2); Serial.println ("mm"); // Uklanjanje najvećih i najnižih vrijednosti mjerenja kako bi se izbjegla pogrešna očitanja averageDistanceTemp = distanceTotal - (distanceMax+distanceMin); averageDistanceOlympian2 = averageDistanceTemp/8; Serial.print ("Sensor2 averageDistanceOlympian2"); Serial.print (averageDistanceOlympian2); Serial.println ("mm"); // Vraćanje temp. Vrijednosti distanceTotal = 0; udaljenostMax = 0; udaljenostMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true; } else {return false; }}

Glavno tijelo

Glavno tijelo sadrži istu logiku objašnjenu na vrhu ovog odjeljka, ali napisanu u kodu. Datoteka je dostupna za preuzimanje u nastavku.

Upozorenje

Provedeni su mnogi testovi za pronalaženje konstanti: emptyBoxDistance, koraci i maksimalna brzina te ubrzanje u postavljanju.

Korak 7: Moguća poboljšanja

Moguća poboljšanja
Moguća poboljšanja

- Potrebne su nam povratne informacije o položaju kutije kako bismo osigurali da je uvijek na pravim pozicijama za odabir objekta na početku. Dostupne su različite opcije za rješavanje problema, ali jednostavna bi mogla biti kopiranje sustava koji nalazimo u 3D pisačima pomoću prekidača na jednom kraju puta kutije.

-Zbog problema koje smo pronašli s ultrazvučnim otkrivanjem, možemo potražiti neke alternative za tu funkciju: KY-008 Laser i laserski detektor (slika), kapacitivni senzori.

Korak 8: Ograničavajući čimbenici

Ovaj projekt funkcionira kako je opisano u uputama, no potrebno je obratiti posebnu pažnju tijekom sljedećih koraka:

Kalibracija ultrazvučnih senzora

Kut pod kojim su ultrazvučni senzori postavljeni u odnosu na objekt koji moraju otkriti od presudne je važnosti za ispravno funkcioniranje prototipa. Za ovaj je projekt odabran kut od 12,5 ° u odnosu na normalu za orijentaciju ultrazvučnih senzora, no najbolji kut treba odrediti eksperimentalno snimanjem očitanja udaljenosti pomoću različitih objekata.

Izvor napajanja

Potrebna snaga za pogon koračnog motora DRV8825 je 12V i između 0,2 i 1 Amp. Arduino se također može napajati s maksimalnih 12V i 0.2 Amp pomoću priključka na Arduinu. Međutim, morate biti posebno oprezni ako koristite isti izvor napajanja i za Arduino i za upravljački program koračnog motora. Ako se napaja iz obične utičnice za napajanje pomoću, na primjer, napajanja AC/DC adaptera od 12V/2A, u krugu bi trebao biti regulator napona i diode prije nego što se napajanje uključi u arduino i upravljački program koračnog motora.

Pozivanje kutije

Iako ovaj projekt koristi koračni motor koji se u normalnim uvjetima s velikom točnošću vraća u početni položaj, dobra je praksa imati mehanizam za navođenje u slučaju pogreške. Ovakav projekt nema mehanizam za navođenje, ali ga je vrlo jednostavno implementirati. U tu svrhu treba dodati mehanički prekidač na početnom položaju kutije tako da kad kutija udari u prekidač, zna da je u svom početnom položaju.

Upravljač koraka DRV8825 Ugađanje

Steper vozaču je potrebno podešavanje za rad s koračnim motorom. To se radi eksperimentalno okretanjem potenciometra (vijka) na čipu DRV8825 tako da se odgovarajućoj količini struje napaja motor. Dakle, lagano okrećite vijak potenciometra dok motor ne djeluje mršavo.

Korak 9: Krediti

Ovaj je projekt napravljen u sklopu tečaja mehatronike tijekom akademske godine 2018. -2019. Za magistra bruce na Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Autori su:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Posebna hvala našem nadzorniku Albertu de Beiru koji nam je pomogao i tijekom cijelog projekta.

Preporučeni: