Tartalomjegyzék:
- 1. lépés: Hogyan működik?
- 2. lépés: Anyagjegyzék (BOM)
- 3. lépés: Mechanikai tervezés
- 4. lépés: Elektronika (komponensválasztás)
- 5. lépés: Elektronika (csatlakozások)
- 6. lépés: Programozás
- 7. lépés: Lehetséges fejlesztések
- 8. lépés: A tényezők korlátozása
- 9. lépés: Hitelek
Videó: Sorter Bin - Észlelje és rendezze a szemetet: 9 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:41
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?
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
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)
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
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:
- Inicializálja a rendszert
- Ellenőrizze a tárgyak jelenlétét
- Ellenőrizze a jelen lévő objektum típusát
- 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
- 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:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
A szemetet soha nem dobják el: 5 lépés
A szemetet soha nem dobják el: Csapatunk elindította a "A szemetet soha nem dobják el" elnevezésű projektet. a KARTS alomproblémájával. Az iskola különböző okai nagy mennyiségű szemetet termelnek, és megsértődnek a vakmerő lerakás miatt. A probléma megoldásához először
PhantomX Pincher Robot - Apple Sorter: 6 lépés
PhantomX Pincher Robot - Apple Sorter: Az élelmiszerre vonatkozó biztonsági követelmények egyre nőnek. Mind a fogyasztók, mind a hatóságok egyre inkább követelik, hogy az általunk elfogyasztott élelmiszerek kiváló minőségűek és nagy biztonságúak legyenek. Ha problémák merülnek fel az élelmiszer -előállítás során, a hiba forrása m
Arduino Skittle Sorter: 11 lépés (képekkel)
Arduino Skittle Sorter: A válogatós édességek szerelmesei mindenütt gyakran veszik észre, hogy drága idejüket vesztegetik az édesség válogatásában. Ismerősen hangzik? Szerettél volna valaha olyan gépet építeni, amely képes Skittles -t rendezni neked? Ez az utasítás pontosan megmutatja, h