Tartalomjegyzék:

Sorter Bin - Észlelje és rendezze a szemetet: 9 lépés
Sorter Bin - Észlelje és rendezze a szemetet: 9 lépés

Videó: Sorter Bin - Észlelje és rendezze a szemetet: 9 lépés

Videó: Sorter Bin - Észlelje és rendezze a szemetet: 9 lépés
Videó: SUB) 집을 더 넓게 쓰는 깔끔한 정리정돈 / 재활용 살림법 (with. 라브아 섬유유연제 마감) 2024, Július
Anonim
Image
Image
Hogyan működik
Hogyan működik

Láttál már valakit, aki nem dolgozik újra, vagy rosszul csinálja?

Kívántál már olyan gépet, amely újrahasznosítana neked?

Olvassa tovább projektünket, nem fogja megbánni!

A Sorter bin egy olyan projekt, amelynek egyértelmű motivációja az, hogy segítse az újrahasznosítást a világban. Mint köztudott, az újrahasznosítás hiánya komoly problémákat okoz bolygónkon, többek között a nyersanyagok eltűnését és a tengeri szennyeződést.

Emiatt csapatunk úgy döntött, hogy kis méretű projektet dolgoz ki: egy válogatótartályt, amely képes a szemetet különböző befogadókra szétválasztani attól függően, hogy az anyag fém vagy nem fém. A későbbi verziókban ezt a válogatótartályt nagy léptékűvé lehetne extrapolálni, lehetővé téve a szemét felosztását mindenféle anyagra (fa, műanyag, fém, szerves …).

Mivel a fő cél a fém vagy nem fém megkülönböztetése, a válogatótartályt induktív érzékelőkkel, de ultrahangos érzékelőkkel is felszerelik annak érdekében, hogy felismerjék, van-e valami a tartályban. Ezenkívül a szemetesnek lineáris mozgásra lesz szüksége, hogy a szemetet a két dobozba mozgassa, így például a léptetőmotort választja.

A következő szakaszokban ezt a projektet lépésről lépésre ismertetjük.

1. lépés: Hogyan működik?

Hogyan működik
Hogyan működik
Hogyan működik
Hogyan működik

A válogató tartályt úgy tervezték, hogy viszonylag megkönnyítse a munkát a felhasználó számára: a szemetet a felső lemezen lévő lyukon keresztül kell bevezetni, a sárga gombot le kell nyomni, és a folyamat elkezdődik, a szeméttel egybe zárva a címzettek közül. De a kérdés most az, hogyan működik ez a folyamat belsőleg?

Amint a folyamat elindult, a zöld LED világít. Ezután az ultrahangos érzékelők, amelyeket egy tartó segítségével rögzítenek a felső lemezbe, megkezdik munkájukat annak megállapítására, hogy van -e tárgy a dobozban vagy sem.

Ha nincs tárgy a dobozban, a piros LED bekapcsol, a zöld pedig kialszik. Éppen ellenkezőleg, ha van tárgy, akkor az induktív érzékelők aktiválódnak annak megállapítására, hogy a tárgy fém vagy nem fém. Miután meghatározta az anyag típusát, a piros és a sárga LED -ek kigyulladnak, és a doboz az egyik vagy az ellenkező irányba mozdul el, a léptetőmotor által hajtott anyag típusától függően.

Amikor a doboz az ütés végére érkezik, és az objektumot a megfelelő címzettbe ejtette, a doboz visszatér a kiindulási helyzetbe. Végül, amikor a doboz a kezdeti helyzetben van, a sárga LED kialszik. A szortírozó készen áll az újrakezdésre ugyanazzal az eljárással. Ez az utolsó bekezdésekben leírt folyamat a 6. lépésben: Programozás mellékelt munkafolyamat -diagram képén is látható.

2. lépés: Anyagjegyzék (BOM)

Mechanikus alkatrészek:

  • Alkatrészeket vásárolt az alsó szerkezethez

    • Fémszerkezet [link]
    • Szürke doboz [link]
  • 3d nyomtató

    PLA minden nyomtatott részhez (más anyagok is használhatók, például ABS)

  • Lézervágó gép

    • MDF 3 mm
    • Plexi 4 mm
  • Lineáris csapágykészlet [link]
  • Lineáris csapágy [link]
  • Tengely [link]
  • Tengelytartó (x2) [Link]

Elektronikus részek:

  • Motor

    Lineáris léptetőmotor Nema 17 [link]

  • Akkumulátor

    12 V -os akkumulátor [link]

  • Érzékelők

    • 2 ultrahangos érzékelő HC-SR04 [Link]
    • 2 induktív érzékelő LJ30A3-15 [Link]
  • Mikrokontroller

    1 arduino UNO tábla

  • További alkatrészek

    • DRV8825 illesztőprogram
    • 3 LED: piros, zöld és narancssárga
    • 1 gomb
    • Néhány ugráló vezeték, huzal és forrasztólap
    • Kenyeretábla
    • USB kábel (Arduino-PC csatlakozás)
    • Kondenzátor: 100uF

3. lépés: Mechanikai tervezés

Image
Image
Mechanikai tervezés
Mechanikai tervezés
Mechanikai tervezés
Mechanikai tervezés

Az előző képeken a szerelvény összes része látható.

A mechanikai tervezéshez a SolidWorks -t használták CAD programként. A szerelvény különböző részeit úgy tervezték, hogy figyelembe vegyék a gyártási módszert.

Lézerrel vágott alkatrészek:

  • MDF 3 mm

    • Oszlopok
    • Felső lemez
    • Ultrahangos érzékelők támogatása
    • Az induktív érzékelők támogatják
    • Szemétláda
    • Akkumulátor támogatás
    • Breadboard és Arduino támogatás
  • Plexi 4 mm

    Felület

3D nyomtatott alkatrészek:

  • A pillérek alapja
  • Lineáris mozgást továbbító elem a léptetőmotorból
  • Léptetőmotor és csapágytartók
  • Falak rögzítő részei a szemetesládához

Ezen alkatrészek mindegyikének gyártásához a. STEP fájlokat a megfelelő formátumba kell importálni, attól függően, hogy milyen gépet fognak használni erre a célra. Ebben az esetben.dxf fájlokat használtak a lézervágó géphez, és.gcode fájlokat a 3D nyomtatóhoz (Ultimaker 2).

A projekt mechanikai összeszerelése megtalálható az ebben a szakaszban csatolt. STEP fájlban.

4. lépés: Elektronika (komponensválasztás)

Ebben a részben a használt elektronikus alkatrészek rövid leírását és az alkatrészválasztás magyarázatát kell elvégezni.

Arduino UNO kártya (mikrokontrollerként):

Nyílt forráskódú hardver és szoftver. Olcsó, könnyen hozzáférhető, könnyen kódolható. Ez a tábla kompatibilis az összes általunk használt komponenssel, és könnyen megtalálhatja az oktatóanyagokat és a fórumokat, amelyek nagyon hasznosak a problémák elsajátításához és megoldásához.

Motor (lineáris léptetőmotor Nema 17):

Ez egy olyan léptetőmotor, amely bizonyos lépésekben osztja el a teljes forgást. Ennek eredményeképpen bizonyos számú lépés megadásával vezérelhető. Robusztus és pontos, és nincs szükség érzékelőkre a tényleges helyzetének szabályozásához. A motor feladata, hogy ellenőrizze a dobott doboz mozgását, amely tartalmazza a dobott tárgyat, és dobja azt a megfelelő kukába.

A modell kiválasztásához elvégezte a szükséges maximális nyomaték kiszámítását egy biztonsági tényező hozzáadásával. Az eredményeket illetően azt a modellt vásároltuk, amely nagyrészt fedezi a számított értéket.

DRV8825 illesztőprogram:

Ez a tábla egy bipoláris léptetőmotor vezérlésére szolgál. Állítható áramszabályozóval rendelkezik, amely lehetővé teszi a maximális áramkimenet beállítását egy potenciométerrel, valamint hat különböző lépésfelbontást: teljes lépés, fél lépés, 1/4 lépés, 1/8 lépés, 1/16 lépés és 1/32 lépés (végül a teljes lépést használtuk, mivel nem találtuk szükségét a mikrolépésnek, de még mindig használható a mozgás minőségének javítására).

Ultrahangos érzékelők:

Ezek egyfajta akusztikus érzékelők, amelyek elektromos jelet alakítanak át ultrahanggá és fordítva. Az objektumtól való távolság kiszámításához először egy hangjelzés visszhangválaszát használták. Segítségükkel megállapítottuk, hogy van -e tárgy a dobozban vagy sem. Könnyen használhatók és pontos mérést biztosítanak.

Annak ellenére, hogy ennek az érzékelőnek a kimenete érték (távolság), egy küszöbérték meghatározásával meghatározzuk, hogy egy objektum jelen van -e vagy sem, átalakítjuk

Induktív érzékelők:

Faraday törvénye alapján az érintésmentes elektronikus közelségérzékelő kategóriába tartozik. Ezeket a mozgó doboz aljára helyeztük, a tárgyat tartó plexi platform alá. Céljuk, hogy különbséget tegyenek fém és nem fém tárgy között, digitális kimenetet adva (0/1).

LED -ek (zöld, sárga, piros):

Küldetésük, hogy kommunikáljanak a felhasználóval:

-Zöld LED világít: a robot tárgyra vár.

-Piros LED világít: a gép működik, nem dobhat semmilyen tárgyat.

-Sárga LED világít: tárgyat észlel.

12V akkumulátor vagy 12V áramforrás + 5V USB tápellátás:

Feszültségforrás szükséges az érzékelők és a léptetőmotor táplálásához. Az Arduino áramellátásához 5 V -os áramforrás szükséges. Ezt megteheti a 12 V -os akkumulátoron keresztül, de a legjobb, ha külön 5 V -os tápegységgel rendelkezik az Arduino számára (például USB -kábellel és tápegységhez vagy számítógéphez csatlakoztatott telefonadapterrel).

Talált problémák:

  • Induktív érzékelő érzékelés, nem kaptuk meg a kívánt pontosságot, mivel néha egy rosszul elhelyezett fémes tárgyat nem észlelünk. Ez 2 korlátozásnak köszönhető:

    • A szögletes platformon belül az érzékelők által lefedett terület kevesebb mint 50% -át teszi ki (így a kis tárgy nem észlelhető). A megoldáshoz javasoljuk 3 vagy 4 induktív érzékelő használatát, hogy a terület több mint 70% -a le legyen fedve.
    • Az érzékelők észlelési távolsága 15 mm -re korlátozódik, így kénytelenek voltunk finom plexi platformot használni. Ez is lehet egy másik korlátozás a furcsa alakú tárgyak észlelésére.
  • Ultrahangos észlelés: a komplexen megformált tárgyak ismét problémákat okoznak, mivel az érzékelők által kibocsátott jel rosszul tükröződik, és a kelleténél később tér vissza az érzékelőhöz.
  • Akkumulátor: Van néhány problémánk az akkumulátor által szállított áram szabályozásával, és ennek megoldásához végül áramforrást használtunk. Azonban más megoldások is végrehajthatók, például dióda használata.

5. lépés: Elektronika (csatlakozások)

Elektronika (csatlakozók)
Elektronika (csatlakozók)
Elektronika (csatlakozások)
Elektronika (csatlakozások)

Ez a rész a különböző alkatrészek összekötését mutatja be. Azt is megmutatja, hogy az Arduino melyik csapjához van csatlakoztatva az egyes komponensek.

6. lépés: Programozás

Programozás
Programozás

Ez a rész a Bin Sorting Machine programozási logikáját ismerteti.

A program 4 lépésből áll, amelyek a következők:

  1. Inicializálja a rendszert
  2. Ellenőrizze a tárgyak jelenlétét
  3. Ellenőrizze a jelen lévő objektum típusát
  4. Mozgódoboz

Az egyes lépések részletes leírását lásd alább:

1. lépés Inicializálja a rendszert

LED panel (3) - beállított kalibráló LED (piros) HIGH, Ready LED (zöld) LOW, objektum jelen (sárga) LOW

Ellenőrizze, hogy a léptetőmotor a kiindulási helyzetben van -e

  • Futtasson ultrahangos érzékelő tesztet az oldal és a doboz falának közötti távolság méréséhez

    • Kezdeti pozíció == 0 >> A Ready LED HIGH és a Calibrating LED LOW értékek frissítése -> 2. lépés
    • Kezdeti helyzet! = 0 >> az ultrahangos érzékelők digitális olvasási értéke és az érzékelő értékei alapján:

      • Frissítse a motor mozgó LED HIGH értékét.
      • Futtassa a mozgatási mezőt, amíg mindkét ultrahangos érzékelő értéke <küszöbérték.

A kezdeti pozíció értékének frissítése = 1 >> A LED Ready HIGH értékének frissítése és a motor LOW mozgása és LOW kalibrálása >> 2. lépés

2. lépés

Ellenőrizze a tárgyak jelenlétét

Futtassa az ultrahangos objektum -észlelést

  • Objektum jelen == 1 >> Az objektum jelen lévő LED -je HIGH >> frissítése. 3. lépés
  • Jelen tárgy == 0 >> Ne csinálj semmit

3. lépés

Ellenőrizze a jelen lévő objektum típusát

Futtassa az induktív érzékelő észlelését

  • induktív állapot = 1 >> 4. lépés
  • induktív állapot = 0 >> 4. lépés

4. lépés

Mozgódoboz

Futtassa a motor működését

  • induktív állapot == 1

    A motor mozgó LED -jének frissítése HIGH >> Mozgassa a motort balra, (frissítse a kezdeti pozíciót = 0) késleltesse és lépjen vissza jobbra >> 1. lépés

  • induktív állapot == 0

    A motor mozgó LED -jének frissítése MAGAS >> Mozgassa a motort jobbra, (a kezdeti pozíció frissítése = 0), késleltesse és lépjen vissza balra >> 1. lépés

Funkciók

Amint az a programozási logikából is látható, a program úgy működik, hogy meghatározott célú funkciókat hajt végre. Például az első lépés a rendszer inicializálása, amely tartalmazza az "Ellenőrizze, hogy a léptetőmotor kezdeti helyzetben van" funkciót. A második lépés ezután ellenőrzi az objektum jelenlétét, amely önmagában egy másik funkció (az "Ultrahangos objektum észlelés" funkció). És így tovább.

A 4. lépés után a program teljesen végrehajtódott, és visszatér az 1. lépéshez, mielőtt újra futtatná.

A törzsben használt funkciókat az alábbiakban határozzuk meg.

Ezek rendre:

  • induktív teszt ()
  • moveBox (induktív állapot)
  • ultrahangosObjectDetection ()

// Ellenőrizze, hogy a tárgy fémes -e vagy sem

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool inductiveState) {// A doboz balra megy, amikor fém észlelhető, és inductiveState = true if (induktív állapot == 0) {stepper.moveTo (lépések); // véletlen pozíció a végéig a stepper teszteléséhez.runToPosition (); késleltetés (1000); léptető.moveTo (0); stepper.runToPosition (); késleltetés (1000); } else if (induktív állapot == 1) {stepper.moveTo (-lépések); // véletlen pozíció a végéig a stepper teszteléséhez.runToPosition (); késleltetés (1000); léptető.moveTo (0); // véletlen pozíció a végéig a stepper teszteléséhez.runToPosition (); késleltetés (1000); }} logikai ultrahangosObjectDetection () {long duration1, distance1, durationTemp, distanceTemp, átlagTávolság1, átlagosTávolságTemp, átlagosTávolságOlympian1; // Hosszú távú mérések számának meghatározásaMax = 0; nagy távolságMin = 4000; long distanceTotal = 0; for (int i = 0; i distanceMax) {distanceMax = távolságTemp; } if (távolságTemp <távolságMin) {távolságMin = távolságTemp; } distanceTotal+= távolságTemp; } Serial.print ("Sensor1 maxDistance"); Soros.nyomat (távolságMax); Soros.println ("mm"); Serial.print ("Sensor1 minDistance"); Soros.nyomat (távolságMin); Soros.println ("mm"); // Vegyük az átlagos távolságot a leolvasásoktól átlagosDistance1 = distanceTotal/10; Serial.print ("1. érzékelő átlagos távolság1"); Soros.nyomtatás (átlagosTávolság1); Soros.println ("mm"); // Távolítsa el a mérések legmagasabb és legalacsonyabb értékeit, hogy elkerülje a hibás leolvasást átlagosDistanceTemp = distanceTotal - (távolságMax+távolságMin); átlagosDistanceOlympian1 = átlagosTávolságTemp/8; Serial.print ("1. érzékelő átlagos távolsága olimpiai1"); Serial.print (átlagosTávolságOlympian1); Soros.println ("mm");

// Hőértékek visszaállítása

distanceTotal = 0; távolságMax = 0; távolságMin = 4000; hosszú időtartam2, távolság2, átlagosTávolság2, átlagosTávolságOlympian2; // Határozza meg a mérések számát (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (távolságTemp <távolságMin) {távolságMin = távolságTemp; } distanceTotal+= távolságTemp; } Serial.print ("Sensor2 maxDistance"); Soros.nyomat (távolságMax); Soros.println ("mm"); Serial.print ("Sensor2 minDistance"); Soros.nyomat (távolságMin); Soros.println ("mm"); // Vegyük az átlagos távolságot a leolvasásoktól átlagosDistance2 = distanceTotal/10; Serial.print ("2. érzékelő átlagos távolsága2"); Soros.nyomat (átlagosTávolság2); Soros.println ("mm"); // Távolítsa el a mérések legmagasabb és legalacsonyabb értékeit, hogy elkerülje a hibás leolvasást átlagosDistanceTemp = distanceTotal - (távolságMax+távolságMin); átlagosDistanceOlympian2 = átlagosTávolságTemp/8; Serial.print ("2. érzékelő átlagos távolságaOlympian2"); Serial.print (átlagosTávolságOlympian2); Soros.println ("mm"); // Hőértékek visszaállítása distanceTotal = 0; távolságMax = 0; távolságMin = 4000; if (átlagosTávolságOlimpiai1 + átlagosTávolságOlimpiai2 <üresBoxTávolság) {return igaz; } else {return false; }}

Főtest

A fő törzs ugyanazt a logikát tartalmazza, amely a szakasz tetején található, de kóddal van megírva. A fájl alább letölthető.

Figyelem

Számos tesztet végeztek az állandók megtalálására: emptyBoxDistance, lépések és maximális sebesség és gyorsítás a beállításban.

7. lépés: Lehetséges fejlesztések

Lehetséges fejlesztések
Lehetséges fejlesztések

- Visszajelzésre van szükségünk a doboz helyzetéről annak biztosítása érdekében, hogy mindig a megfelelő helyzetben legyen a tárgy kiválasztása az elején. A probléma megoldására különböző lehetőségek állnak rendelkezésre, de egyszerű megoldás lehet a 3D nyomtatókban talált rendszer másolása a doboz útvonalának egyik végén található kapcsoló segítségével.

-Az ultrahangos érzékeléssel kapcsolatban talált problémák miatt kereshetünk néhány alternatívát erre a funkcióra: KY-008 lézer- és lézerérzékelő (kép), kapacitív érzékelők.

8. lépés: A tényezők korlátozása

Ez a projekt az utasításokban leírtak szerint működik, de a következő lépések során különös gondossággal kell eljárni:

Ultrahangos érzékelők kalibrálása

A prototípus megfelelő működése szempontjából döntő fontosságú, hogy az ultrahangos érzékelők milyen szögben vannak elhelyezve az érzékelni kívánt tárgyhoz képest. Ehhez a projekthez az ultrahangos érzékelők tájolásához a normálhoz képest 12,5 ° -os szöget választottak, de a legjobb szöget kísérletileg kell meghatározni a távolság leolvasásának rögzítésével különböző tárgyak segítségével.

Áramforrás

A DRV8825 léptetőmotor -meghajtó szükséges teljesítménye 12 V, és 0,2 és 1 A között. Az arduino tápellátása maximum 12 V és 0,2 Amp is lehetséges az Arduino jack bemenetének használatával. Különös óvatossággal kell eljárni, ha ugyanazt az áramforrást használja mind az Arduino, mind a léptetőmotor -meghajtó számára. Ha egy hagyományos hálózati aljzatból táplálják, például 12V/2A AC/DC adapter tápegységgel, feszültségszabályozónak és diódáknak kell lenniük az áramkörben, mielőtt az áramot az arduino és a léptetőmotor meghajtójába táplálják.

A doboz elhelyezése

Bár ez a projekt egy léptetőmotort használ, amely normál körülmények között nagy pontossággal tér vissza a kiindulási helyzetébe, jó gyakorlat, ha hiba esetén van beállító mechanizmus. A projektnek jelenleg nincs hozzárendelési mechanizmusa, de megvalósítása meglehetősen egyszerű. Ehhez egy mechanikus kapcsolót kell hozzáadni a doboz kezdeti helyzetéhez, hogy amikor a doboz megérinti a kapcsolót, tudja, hogy az eredeti helyzetében van.

Léptető DRV8825 Tuning

A léptető meghajtónak hangolásra van szüksége ahhoz, hogy a léptetőmotor működjön. Ezt kísérletileg úgy hajtják végre, hogy a potenciométert (csavart) elforgatják a DRV8825 chipen, hogy a megfelelő mennyiségű áram kerüljön a motorba. Tehát kissé forgassa el a potenciométer csavarját, amíg a motor karcsúan nem működik.

9. lépés: Hitelek

Ez a projekt egy mechatronikai tanfolyam részeként valósult meg a 2018-2019.

A szerzők:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Külön köszönet témavezetőnknek, Albert de Beirnek, aki segített nekünk a projekt során.

Ajánlott: