Satura rādītājs:

Šķirotāja - Atkritumu noteikšana un kārtošana: 9 soļi
Šķirotāja - Atkritumu noteikšana un kārtošana: 9 soļi

Video: Šķirotāja - Atkritumu noteikšana un kārtošana: 9 soļi

Video: Šķirotāja - Atkritumu noteikšana un kārtošana: 9 soļi
Video: Atkritumu šķirošana // iesaka Dabas un tehnoloģiju parks "URDA" 2024, Novembris
Anonim
Image
Image
Kā tas strādā
Kā tas strādā

Vai esat kādreiz redzējuši kādu, kurš nepārstrādā vai dara to slikti?

Vai esat kādreiz vēlējies mašīnu, kas jums tiktu pārstrādāta?

Turpiniet lasīt mūsu projektu, jūs to nenožēlosit!

Šķirotāja ir projekts ar skaidru motivāciju palīdzēt pārstrādei pasaulē. Kā zināms, otrreizējās pārstrādes trūkums rada nopietnas problēmas uz mūsu planētas, piemēram, izejvielu pazušana un jūras piesārņojums.

Šī iemesla dēļ mūsu komanda ir nolēmusi izstrādāt projektu nelielā apjomā: šķirošanas tvertni, kas spēj sadalīt atkritumus dažādos saņēmējos atkarībā no tā, vai materiāls ir metāls vai nemetāls. Turpmākajās versijās šo šķirotāja tvertni varētu ekstrapolēt lielā mērogā, ļaujot sadalīt atkritumus visos dažāda veida materiālos (koks, plastmasa, metāls, organisks …).

Tā kā galvenais mērķis ir atšķirt metālu vai nemetālu, šķirotāja tvertne tiks aprīkota ar induktīviem sensoriem, bet arī ar ultraskaņas sensoriem, lai noteiktu, vai tvertnē ir kaut kas. Turklāt atkritumu tvertnei būs nepieciešama lineāra kustība, lai pārvietotu atkritumus divās kastēs, tāpēc tiek izvēlēts pakāpju motors.

Nākamajās sadaļās šis projekts tiks paskaidrots soli pa solim.

1. darbība. Kā tas darbojas

Kā tas strādā
Kā tas strādā
Kā tas strādā
Kā tas strādā

Šķirotāja tvertne ir veidota tā, lai lietotājam darbs būtu salīdzinoši viegls: atkritumi jāievada caur caurumu, kas ievietots augšējā plāksnē, jānospiež dzeltenā poga un process sākas, beidzot ar atkritumiem vienā saņēmējiem. Bet jautājums tagad ir … kā šis process darbojas iekšēji?

Kad process ir sācies, iedegas zaļā gaismas diode. Pēc tam ultraskaņas sensori, kas piestiprināti augšējā plāksnē caur balstu, sāk savu darbu, lai noteiktu, vai kastes iekšpusē ir kāds priekšmets.

Ja kastes iekšpusē nav neviena objekta, iedegas sarkanā gaismas diode un zaļā. Gluži pretēji, ja ir objekts, induktīvie sensori tiks aktivizēti, lai noteiktu, vai objekts ir metāls vai nemetāls. Kad materiāla veids ir noteikts, iedegas sarkanās un dzeltenās gaismas diodes, un kaste virzīsies vienā virzienā vai pretējā virzienā atkarībā no materiāla veida, ko darbina pakāpju motors.

Kad lodziņš nonāks gājiena beigās un objekts ir nomests pareizajā saņēmējā, kaste atgriezīsies sākotnējā stāvoklī. Visbeidzot, kad kaste ir sākotnējā stāvoklī, dzeltenā gaismas diode izslēgsies. Šķirotājs būs gatavs atsākt ar to pašu procedūru. Šis pēdējās rindkopās aprakstītais process ir parādīts arī 6. darbībā: Programmēšana pievienotajā darbplūsmas diagrammas attēlā.

2. darbība. Materiālu saraksts (BOM)

Mehāniskās detaļas:

  • Iegādātas detaļas apakšējai konstrukcijai

    • Metāliska struktūra [saite]
    • Pelēka kaste [saite]
  • 3D printeris

    PLA visām drukātajām daļām (var izmantot arī citus materiālus, piemēram, ABS)

  • Lāzera griešanas mašīna
    • MDF 3 mm
    • Plexiglass 4mm
  • Lineāro gultņu komplekts [saite]
  • Lineārais gultnis [saite]
  • Vārpsta [saite]
  • Vārpstas turētājs (x2) [saite]

Elektroniskās detaļas:

  • Motors

    Lineārais pakāpju motors Nema 17 [saite]

  • Akumulators

    12 V akumulators [saite]

  • Sensori

    • 2 ultraskaņas sensors HC-SR04 [saite]
    • 2 induktīvie sensori LJ30A3-15 [Saite]
  • Mikrokontrolleris

    1 arduino UNO valde

  • Papildu sastāvdaļas

    • DRV8825 vadītājs
    • 3 gaismas diodes: sarkana, zaļa un oranža
    • 1 poga
    • Daži lecami vadi, vadi un lodēšanas plāksnes
    • Maizes dēlis
    • USB kabelis (Arduino-PC savienojums)
    • Kondensators: 100uF

3. darbība: mehāniskā konstrukcija

Image
Image
Mehāniskais dizains
Mehāniskais dizains
Mehāniskais dizains
Mehāniskais dizains

Iepriekšējos attēlos ir redzamas visas montāžas daļas.

Mehāniskajā dizainā SolidWorks ir izmantots kā CAD programma. Dažādas mezgla detaļas ir izstrādātas, ņemot vērā ražošanas metodi, kuru tās paredzēts ražot.

Lāzera griešanas detaļas:

  • MDF 3 mm

    • Pīlāri
    • Augšējā plāksne
    • Ultraskaņas sensoru atbalsts
    • Induktīvo sensoru atbalsts
    • Atkritumu kaste
    • Akumulatora atbalsts
    • Maizes dēlis un Arduino atbalsts
  • Plexiglass 4mm

    Platforma

3D drukātas detaļas:

  • Pīlāru pamatne
  • Lineārās kustības transmisijas elements no soļu motora
  • Pakāpju motors un gultņu balsti
  • Sienu stiprinājuma daļas atkritumu kastē

Lai izgatavotu katru no šīm daļām,. STEP faili jāimportē pareizā formātā, atkarībā no mašīnas, kas tiks izmantota šim nolūkam. Šajā gadījumā lāzera griešanas mašīnai ir izmantoti.dxf faili un 3D printerim (Ultimaker 2).gcode faili.

Šī projekta mehāniskā montāža ir atrodama šajā sadaļā pievienotajā. STEP failā.

4. darbība: elektronika (komponentu izvēle)

Šajā sadaļā tiks sniegts īss izmantoto elektronisko komponentu apraksts un sastāvdaļu izvēles skaidrojums.

Arduino UNO plate (kā mikrokontrolleris):

Atvērtā pirmkoda aparatūra un programmatūra. Lēti, viegli pieejami, viegli kodējami. Šī tāfele ir saderīga ar visām mūsu izmantotajām sastāvdaļām, un jūs viegli atradīsiet vairākas apmācības un forumus, kas ir ļoti noderīgi, lai uzzinātu un atrisinātu problēmas.

Motors (lineārais pakāpju motors Nema 17):

Ir pakāpju motora veids, kas sadala pilnu rotāciju noteiktā soļu skaitā. Rezultātā to kontrolē, veicot noteiktu soļu skaitu. Tas ir izturīgs un precīzs, un tā faktiskā stāvokļa kontrolei nav nepieciešami sensori. Motora uzdevums ir kontrolēt kastes, kurā atrodas izmestais priekšmets, kustību un nomest to labajā tvertnē.

Lai izvēlētos modeli, veicāt dažus nepieciešamā maksimālā griezes momenta aprēķinus, pievienojot drošības koeficientu. Attiecībā uz rezultātiem mēs iegādājāmies modeli, kas lielā mērā sedz aprēķināto vērtību.

DRV8825 draiveris:

Šo dēli izmanto, lai kontrolētu bipolāru pakāpju motoru. Tam ir regulējama strāvas kontrole, kas ļauj iestatīt maksimālo strāvas izvadi ar potenciometru, kā arī sešas dažādas soļu izšķirtspējas: pilna soļa, pussoļa, 1/4 soļu, 1/8 soļu, 1/16- solis un 1/32 soļi (mēs beidzot izmantojām pilnu soli, jo neatradām nepieciešamību doties mikroskopā, bet to joprojām var izmantot, lai uzlabotu kustības kvalitāti).

Ultraskaņas sensori:

Tie ir akustisko sensoru veidi, kas pārveido elektrisko signālu ultraskaņā un otrādi. Viņi izmantoja vispirms izstarotā akustiskā signāla atbalss reakciju, lai aprēķinātu attālumu līdz objektam. Mēs tos izmantojām, lai noteiktu, vai kastē ir objekts vai nē. Tie ir viegli lietojami un nodrošina precīzu mērījumu.

Lai gan šī sensora izeja ir vērtība (attālums), nosakot slieksni, lai noteiktu, vai objekts atrodas vai nav, mēs pārveidojam

Induktīvie sensori:

Pamatojoties uz Faradeja likumiem, tas pieder bezkontakta elektroniskā tuvuma sensora kategorijai. Mēs novietojām tos pārvietojamās kastes apakšā, zem plexiglass platformas, kas atbalsta objektu. To mērķis ir nošķirt metāla un nemetāla priekšmetus, nodrošinot digitālo izvadi (0/1).

Gaismas diodes (zaļa, dzeltena, sarkana):

Viņu misija ir sazināties ar lietotāju:

-deg zaļā gaismas diode: robots gaida objektu.

-Sarkana gaismas diode ieslēgta: mašīna darbojas, jūs nevarat mest nevienu priekšmetu.

-deg dzeltenā gaismas diode: tiek atklāts objekts.

12V akumulators vai 12V barošanas avots + 5V USB barošana:

Lai darbinātu sensorus un pakāpju motoru, ir nepieciešams sprieguma avots. Lai darbinātu Arduino, ir nepieciešams 5 V barošanas avots. To var izdarīt, izmantojot 12 V akumulatoru, bet vislabāk ir, ja Arduino ir atsevišķs 5 V barošanas avots (piemēram, ar USB kabeli un tālruņa adapteri, kas pievienots strāvas avotam vai datoram).

Atrastās problēmas:

  • Induktīvā sensora noteikšana, mēs nesaņēmām vēlamo precizitāti, jo dažreiz slikti novietots metāla priekšmets netiek uztverts. Tas ir saistīts ar 2 ierobežojumiem:

    • Laukums, ko aptver sensori kvadrātveida platformā, veido mazāk nekā 50% no tā (tāpēc mazu objektu nevar noteikt). Lai to atrisinātu, mēs iesakām izmantot 3 vai 4 induktīvos sensorus, lai nodrošinātu vairāk nekā 70% teritorijas pārklājumu.
    • Sensoru noteikšanas attālums ir ierobežots līdz 15 mm, tāpēc mēs bijām spiesti izmantot smalku plexiglass platformu. Tas var būt arī vēl viens ierobežojums, lai atklātu objektus ar dīvainu formu.
  • Ultraskaņas noteikšana: atkal sarežģīti veidoti objekti rada problēmas, jo sensoru izstarotais signāls tiek slikti atspoguļots un atgriežas sensoram vēlāk, nekā vajadzētu.
  • Akumulators: mums ir dažas problēmas, kontrolējot akumulatora piegādāto strāvu, un, lai to atrisinātu, mēs beidzot izmantojām barošanas avotu. Tomēr var izmantot citus risinājumus, piemēram, diodes izmantošanu.

5. darbība: elektronika (savienojumi)

Elektronika (savienojumi)
Elektronika (savienojumi)
Elektronika (savienojumi)
Elektronika (savienojumi)

Šajā sadaļā ir parādīti dažādu komponentu vadi. Tas arī parāda, ar kuru Arduino tapu ir savienots katrs komponents.

6. darbība: programmēšana

Programmēšana
Programmēšana

Šajā sadaļā tiks izskaidrota atkritumu šķirošanas mašīnas programmēšanas loģika.

Programma ir sadalīta 4 posmos, kas ir šādi:

  1. Inicializēt sistēmu
  2. Pārbaudiet objektu klātbūtni
  3. Pārbaudiet esošā objekta veidu
  4. Pārvietot kastīti

Detalizētu katra soļa aprakstu skatiet tālāk:

1. solis. Inicializēt sistēmu

LED panelis (3) - iestatiet kalibrēšanas LED (sarkans) HIGH, Ready LED (zaļš) LOW, atrodas objekts (dzeltens) LOW

Pārbaudiet, vai pakāpju motors atrodas sākotnējā stāvoklī

  • Veiciet ultraskaņas sensora testu, lai izmērītu attālumu no sāniem līdz kastes sienai

    • Sākotnējā pozīcija == 0 >> Atjauniniet Ready LED HIGH un Calibrating LED LOW vērtības -> 2. solis
    • Sākotnējā pozīcija! = 0 >> ultraskaņas sensoru digitālās nolasīšanas vērtība un balstīta uz sensora vērtībām:

      • Atjauniniet motora kustīgās gaismas diodes HIGH vērtību.
      • Palaidiet pārvietošanas lodziņu, līdz abu ultraskaņas sensoru vērtība ir <sliekšņa vērtība.

Sākotnējās pozīcijas vērtības atjaunināšana = 1 >> Atjauniniet LED Ready HIGH vērtību un motors kustas LOW un kalibrē LOW >> 2. solis

2. solis

Pārbaudiet objektu klātbūtni

Palaidiet ultraskaņas objektu noteikšanu

  • Objekta klātbūtne == 1 >> Atjaunināt pašreizējā objekta gaismas diode HIGH >> 3. darbība
  • Objekts klāt == 0 >> Nedarīt neko

3. solis

Pārbaudiet esošā objekta veidu

Palaist induktīvā sensora noteikšanu

  • induktīvais stāvoklis = 1 >> 4. darbība
  • induktīvais stāvoklis = 0 >> 4. darbība

4. solis

Pārvietot kastīti

Palaist motora darbību

  • induktīvais stāvoklis == 1

    Atjauniniet motora kustīgo gaismas diodi HIGH >> Lieciet motoram virzīties pa kreisi, (atjauniniet sākotnējo stāvokli = 0) aizkavējiet un pārvietojiet atpakaļ pa labi >> 1. solis

  • induktīvais stāvoklis == 0

    Atjauniniet kustīgo gaismas diodi HIGH >> Lieciet motoram virzīties pa labi, (atjauniniet sākotnējo stāvokli = 0), aizkavējiet un pārvietojiet atpakaļ pa kreisi >> 1. solis

Funkcijas

Kā redzams no programmēšanas loģikas, programma darbojas, izpildot funkcijas ar noteiktu mērķi. Piemēram, pirmais solis ir inicializēt sistēmu, kas satur funkciju "Pārbaudiet, vai pakāpju motors atrodas sākotnējā stāvoklī". Otrajā solī tiek pārbaudīts objekta klātbūtne, kas pati par sevi ir cita funkcija (funkcija "Ultraskaņas objektu noteikšana"). Un tā tālāk.

Pēc 4. darbības programma ir pilnībā izpildīta un pirms atkārtotas palaišanas atgriezīsies 1. darbībā.

Galvenajā korpusā izmantotās funkcijas ir definētas zemāk.

Tie ir attiecīgi:

  • induktīvs tests ()
  • moveBox (induktīvā valsts)
  • ultraskaņasObjectDetection ()

// Pārbaudiet, vai objekts ir metālisks vai nē

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool inductiveState) {// Lodziņš iet pa kreisi, kad tiek atklāts metāls, un induktīvsState = true if (induktīvais stāvoklis == 0) {stepper.moveTo (soļi); // izlases pozīcija līdz beigām, lai pārbaudītu stepper.runToPosition (); kavēšanās (1000); stepper.moveTo (0); stepper.runToPosition (); kavēšanās (1000); } cits if (induktīvais stāvoklis == 1) {stepper.moveTo (-soļi); // izlases pozīcija līdz beigām, lai pārbaudītu stepper.runToPosition (); kavēšanās (1000); stepper.moveTo (0); // izlases pozīcija līdz beigām, lai pārbaudītu stepper.runToPosition (); kavēšanās (1000); }} Būla ultraskaņasObjectDetection () {garš ilgums1, attālums1, ilgumsTemp, distanceTemp, vidējiDistance1, vidējiDistanceTemp, vidējiDistanceOlympian1; // Definējiet mērījumu skaitu, lai veiktu tālsatiksmesMax = 0; tālsatiksmesMin = 4000; tālsatiksmesKopā = 0; par (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor1 maxDistance"); Sērijas nospiedums (distanceMax); Serial.println ("mm"); Serial.print ("Sensor1 minDistance"); Sērijas nospiedums (distanceMin); Serial.println ("mm"); // Veikt vidējo attālumu no rādījumiem vidusDistance1 = distanceTotal/10; Serial.print ("Sensor1 mediumDistance1"); Sērijas nospiedums (vidējiDistance1); Serial.println ("mm"); // Noņemiet mērījumu augstākās un zemākās vērtības, lai izvairītos no kļūdainiem rādījumiem vidusDistanceTemp = distanceTotal - (distanceMax+distanceMin); mediumDistanceOlympian1 = vidusDistanceTemp/8; Serial.print ("Sensor1 mediumDistanceOlympian1"); Sērijas nospiedums (vidējiDistanceOlympian1); Serial.println ("mm");

// Atiestatīt temp vērtības

distanceTotal = 0; distanceMax = 0; distanceMin = 4000; garš ilgums2, attālums2, vidējaisDistance2, vidējiDistanceOlympian2; // Definējiet veicamo mērījumu skaitu (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor2 maxDistance"); Sērijas nospiedums (distanceMax); Serial.println ("mm"); Serial.print ("Sensor2 minDistance"); Sērijas nospiedums (distanceMin); Serial.println ("mm"); // Veikt vidējo attālumu no rādījumiem vidusDistance2 = distanceTotal/10; Serial.print ("Sensor2 mediumDistance2"); Sērijas nospiedums (vidējaisDistance2); Serial.println ("mm"); // Noņemiet mērījumu augstākās un zemākās vērtības, lai izvairītos no kļūdainiem rādījumiem vidusDistanceTemp = distanceTotal - (distanceMax+distanceMin); mediumDistanceOlympian2 = vidusDistanceTemp/8; Serial.print ("Sensor2 vidējiDistanceOlympian2"); Sērijas nospiedums (vidējiDistanceOlympian2); Serial.println ("mm"); // Atiestatīt temp vērtības distanceTotal = 0; distanceMax = 0; distanceMin = 4000; if (vidusDistanceOlympian1 + vidējiDistanceOlympian2 <emptyBoxDistance) {return true; } else {return false; }}

Galvenais korpuss

Galvenajā pamattekstā ir tāda pati loģika, kas izskaidrota šīs sadaļas augšdaļā, bet rakstīta ar kodu. Fails ir pieejams lejupielādei zemāk.

Brīdinājums

Lai atrastu konstantes, tika veikti daudzi testi: emptyBoxDistance, soļi un maksimālais ātrums un paātrinājums iestatījumos.

7. darbība. Iespējamie uzlabojumi

Iespējamie uzlabojumi
Iespējamie uzlabojumi

- Mums ir nepieciešama atgriezeniskā saite par kastes stāvokli, lai nodrošinātu, ka tā vienmēr ir pareizajās pozīcijās, lai sākumā izvēlētos objektu. Problēmas risināšanai ir pieejamas dažādas iespējas, taču vienkārša iespēja varētu būt kopēt sistēmu, kas atrodama 3D printeros, izmantojot slēdzi kastes ceļa galā.

-Sakarā ar problēmām, kuras mēs atklājām ar ultraskaņas noteikšanu, mēs varam meklēt dažas alternatīvas šai funkcijai: KY-008 lāzera un lāzera detektors (attēls), kapacitatīvie sensori.

8. solis: ierobežojošie faktori

Šis projekts darbojas, kā aprakstīts instrukcijās, bet īpaša uzmanība jāpievērš šādām darbībām:

Ultraskaņas sensoru kalibrēšana

Leņķim, kādā ultraskaņas sensori ir novietoti attiecībā pret objektu, kas tiem jānosaka, ir izšķiroša nozīme prototipa pareizai darbībai. Šim projektam ultraskaņas sensoru orientācijai tika izvēlēts 12,5 ° leņķis pret parasto, bet labākais leņķis jānosaka eksperimentāli, ierakstot attāluma rādījumus, izmantojot dažādus objektus.

Enerģijas avots

Pakāpju motora vadītājam DRV8825 nepieciešamā jauda ir 12 V un no 0,2 līdz 1 amp. Arduino var darbināt arī ar maksimālo 12 V un 0,2 Amp, izmantojot Arduino ligzdas ieeju. Tomēr jābūt īpaši uzmanīgiem, ja izmantojat vienu un to pašu barošanas avotu gan Arduino, gan pakāpju motora vadītājam. Ja barošana tiek veikta no parastas kontaktligzdas, izmantojot, piemēram, 12V/2A maiņstrāvas/līdzstrāvas adaptera barošanas avotu, pirms strāvas padeves arduino un pakāpju motora draiverī ķēdē jābūt sprieguma regulatoram un diodēm.

Kastes izvietošana

Lai gan šajā projektā tiek izmantots pakāpju motors, kas normālos apstākļos ar augstu precizitāti atgriežas sākotnējā stāvoklī, ir laba prakse, ja kļūdas gadījumā ir uzstādīts novietošanas mehānisms. Šim projektam nav izvietošanas mehānisma, taču to ir diezgan vienkārši īstenot. Šim nolūkam jāpievieno mehāniskais slēdzis kastes sākotnējā stāvoklī, lai, kad kaste nokļūtu slēdzī, tā zinātu, ka tā atrodas sākuma stāvoklī.

Stepper draiveris DRV8825 Tuning

Stepper vadītājam ir nepieciešama regulēšana, lai strādātu ar pakāpju motoru. To veic eksperimentāli, pagriežot DRV8825 mikroshēmas potenciometru (skrūvi) tā, lai motoram tiktu piegādāts atbilstošs strāvas daudzums. Tātad, nedaudz pagriežot potenciometra skrūvi, līdz motors darbojas liesā veidā.

9. darbība. Kredīti

Šis projekts tika īstenots mehatronikas kursa ietvaros 2018. -2019.

Autori ir:

Maksims Deklērs

Lidija Gomesa

Markus Poder

Adriana Puentes

Narjisse Snoussi

Īpašs paldies mūsu vadītājam Albertam de Bēram, kurš mums palīdzēja arī visa projekta laikā.

Ieteicams: