Obsah:

Sorter Bin - Detekce a třídění koše: 9 kroků
Sorter Bin - Detekce a třídění koše: 9 kroků

Video: Sorter Bin - Detekce a třídění koše: 9 kroků

Video: Sorter Bin - Detekce a třídění koše: 9 kroků
Video: CS50 2015 - Week 6 2024, Červenec
Anonim
Image
Image
Jak to funguje
Jak to funguje

Už jste někdy viděli někoho, kdo nerecykluje nebo to dělá špatně?

Přáli jste si někdy stroj, který by za vás recykloval?

Pokračujte ve čtení našeho projektu, nebudete litovat!

Sorter bin je projekt s jasnou motivací pomoci recyklaci ve světě. Jak je dobře známo, nedostatek recyklace způsobuje na naší planetě vážné problémy, mimo jiné mizení surovin a mořské kontaminace.

Z tohoto důvodu se náš tým rozhodl vyvinout projekt v malém měřítku: třídicí koš, který je schopen rozdělit odpadky na různé příjemce podle toho, zda je materiál kovový nebo nekovový. V budoucích verzích by tento třídicí koš mohl být extrapolován ve velkém měřítku, což by umožnilo rozdělení odpadků na všechny různé druhy materiálu (dřevo, plast, kov, organický …).

Protože hlavním účelem je rozlišovat mezi kovovými a nekovovými, bude třídicí koš vybaven indukčními senzory, ale také ultrazvukovými senzory, aby se zjistilo, zda je v koši něco. Kromě toho bude koš potřebovat lineární pohyb pro přesunutí odpadu do dvou boxů, proto je vybrán mj. Krokový motor.

V dalších částech bude tento projekt vysvětlen krok za krokem.

Krok 1: Jak to funguje

Jak to funguje
Jak to funguje
Jak to funguje
Jak to funguje

Třídicí koš byl navržen tak, aby uživateli relativně usnadnil práci: odpadky je třeba zavést otvorem, který je umístěn v horní desce, žluté tlačítko musí být stisknuto a proces začíná, přičemž odpad končí v jednom. příjemců. Otázkou však nyní je … jak tento proces funguje interně?

Jakmile proces začne, rozsvítí se zelená LED. Poté ultrazvukové senzory, připevněné k horní desce pomocí podpěry, zahájí svou práci, aby určily, zda je uvnitř krabice nějaký předmět nebo ne.

Pokud uvnitř krabice není žádný předmět, rozsvítí se červená LED a zelená zhasne. Naopak, pokud je nějaký předmět, aktivují se indukční senzory, aby detekovaly, zda je předmět kovový nebo nekovový. Jakmile je určen typ materiálu, rozsvítí se červená a žlutá LED dioda a skříňka se bude pohybovat v jednom nebo opačném směru v závislosti na typu materiálu poháněného krokovým motorem.

Když krabice dorazí na konec tahu a předmět byl upuštěn do správného příjemce, krabice se vrátí do výchozí polohy. Nakonec, když je box v počáteční poloze, žlutá LED zhasne. Třídič bude připraven začít znovu stejným postupem. Tento proces popsaný v posledních odstavcích je také ukázán na obrázku diagramu pracovního postupu připojeného v kroku 6: Programování.

Krok 2: Kusovník (kusovník)

Mechanické části:

  • Zakoupené díly pro spodní konstrukci

    • Kovová struktura [odkaz]
    • Šedý rámeček [Odkaz]
  • 3D tiskárna

    PLA pro všechny tištěné části (lze použít i jiné materiály, například ABS)

  • Laserový řezací stroj

    • MDF 3 mm
    • Plexisklo 4 mm
  • Sada lineárních ložisek [Link]
  • Lineární ložisko [Link]
  • Hřídel [odkaz]
  • Držák hřídele (x2) [Odkaz]

Elektronické součástky:

  • Motor

    Lineární krokový motor Nema 17 [Link]

  • baterie

    12 v baterie [odkaz]

  • Senzory

    • 2 Ultrazvukový senzor HC-SR04 [Link]
    • 2 indukční snímače LJ30A3-15 [Link]
  • Mikrokontrolér

    1 deska arduino UNO

  • Další komponenty

    • Ovladač DRV8825
    • 3 LED diody: červená, zelená a oranžová
    • 1 tlačítko
    • Některé přeskakovací dráty, dráty a pájecí desky
    • Prkénko
    • USB kabel (připojení Arduino-PC)
    • Kondenzátor: 100uF

Krok 3: Mechanický návrh

Image
Image
Mechanický design
Mechanický design
Mechanický design
Mechanický design

Na předchozích obrázcích jsou zobrazeny všechny části sestavy.

Pro mechanický návrh byl jako CAD program použit SolidWorks. Různé části sestavy byly navrženy s přihlédnutím k výrobnímu způsobu, který se bude vyrábět.

Laserem řezané díly:

  • MDF 3 mm

    • Pilíře
    • Horní deska
    • Podpora ultrazvukových senzorů
    • Podpora indukčních senzorů
    • Popelnice
    • Podpora baterie
    • Podpora Breadboard a Arduino
  • Plexisklo 4 mm

    Plošina

3D tištěné díly:

  • Základna pilířů
  • Prvek lineárního přenosu pohybu z krokového motoru
  • Krokový motor a podpěry ložisek
  • Části pro upevnění zdí pro odpadkový koš

Při výrobě každé z těchto částí by měly být soubory. STEP importovány do správného formátu v závislosti na počítači, který se k tomuto účelu použije. V tomto případě byly soubory.dxf použity pro laserový řezací stroj a soubory.gcode pro 3D tiskárnu (Ultimaker 2).

Mechanickou sestavu tohoto projektu najdete v souboru. STEP přiloženém v této sekci.

Krok 4: Elektronika (výběr komponent)

V této části bude proveden krátký popis použitých elektronických součástek a vysvětlení jejich výběru.

Deska Arduino UNO (jako mikrokontrolér):

Open-source hardware a software. Levné, snadno dostupné, snadno kódovatelné. Tato deska je kompatibilní se všemi součástmi, které jsme použili, a snadno najdete několik návodů a fór, které jsou velmi užitečné při učení a řešení problémů.

Motor (lineární krokový motor Nema 17):

Je typem krokového motoru, který rozděluje plnou rotaci v určitém počtu kroků. V důsledku toho je ovládán zadáním určitého počtu kroků. Je robustní a přesný a ke kontrole skutečné polohy nepotřebuje žádné senzory. Posláním motoru je řídit pohyb krabice, která obsahuje hozený předmět, a hodit ji do pravého koše.

Pro výběr modelu jste provedli několik výpočtů požadovaného maximálního točivého momentu s přidáním bezpečnostního faktoru. Pokud jde o výsledky, koupili jsme model, který do značné míry pokrývá vypočítanou hodnotu.

Ovladač DRV8825:

Tato deska slouží k ovládání bipolárního krokového motoru. Má nastavitelné ovládání proudu, které vám umožňuje nastavit maximální proudový výstup potenciometrem a také šesti různými rozlišeními kroků: plný krok, poloviční krok, 1/4 kroku, 1/8 kroku, 1/16- krok a 1/32 kroku (nakonec jsme použili full-step, protože jsme nenašli žádnou potřebu přejít na microstepping, ale stále ho lze použít ke zlepšení kvality pohybu).

Ultrazvukové senzory:

Jedná se o typ akustických senzorů, které převádějí elektrický signál na ultrazvuk a naopak. Pro výpočet vzdálenosti k objektu použili odezvu na ozvěnu nejprve vydaného akustického signálu. Použili jsme je k detekci, zda je v krabici nějaký předmět nebo ne. Snadno se používají a poskytují přesné opatření.

Přestože výstupem tohoto senzoru je hodnota (vzdálenost), stanovením prahové hodnoty pro určení, zda je objekt přítomen nebo nikoli, transformujeme

Indukční senzory:

Podle Faradayova zákona patří do kategorie bezkontaktních elektronických snímačů přiblížení. Umístili jsme je do spodní části pohyblivého boxu, pod platformu z plexiskla, která podpírá předmět. Jejich cílem je rozlišit kovový a nekovový předmět poskytující digitální výstup (0/1).

LED diody (zelená, žlutá, červená):

Jejich úkolem je komunikovat s uživatelem:

-Svítí zelená LED: robot čeká na předmět.

-Červená LED svítí: stroj pracuje, nemůžete házet žádný předmět.

-Žlutá LED svítí: je detekován předmět.

12V baterie nebo 12V napájecí zdroj + 5V USB napájení:

K napájení senzorů a krokového motoru je zapotřebí zdroj napětí. K napájení Arduina je zapotřebí 5V napájecí zdroj. To lze provést pomocí baterie 12V, ale nejlepší je mít pro Arduino samostatný zdroj napájení 5 V (například pomocí kabelu USB a telefonního adaptéru připojeného ke zdroji napájení nebo k počítači).

Problémy, které jsme našli:

  • Indukční detekce senzoru, nedosáhli jsme požadované přesnosti, protože někdy není vnímán špatně umístěný kovový předmět. Důvodem jsou 2 omezení:

    • Oblast pokrytá senzory v rámci čtvercové platformy představuje méně než 50% (takže malý předmět nelze detekovat). Chcete -li to vyřešit, doporučujeme použít 3 nebo 4 indukční snímače, aby bylo zajištěno, že je pokryto více než 70% plochy.
    • Detekční vzdálenost senzorů je omezena na 15 mm, takže jsme byli nuceni použít jemnou platformu z plexiskla. To může být také další omezení detekce objektů s podivným tvarem.
  • Ultrazvuková detekce: objekty tvarované složitým způsobem opět způsobují problémy, protože signál vyzařovaný senzory se špatně odráží a vrací se do senzoru později, než by měl.
  • Baterie: máme nějaké problémy s ovládáním proudu dodávaného baterií a k vyřešení jsme nakonec použili zdroj energie. Lze však provést i jiná řešení, jako je použití diody.

Krok 5: Elektronika (připojení)

Elektronika (připojení)
Elektronika (připojení)
Elektronika (připojení)
Elektronika (připojení)

Tato část ukazuje zapojení různých součástí dohromady. Také ukazuje, ke kterému pinu na Arduinu je každá součást připojena.

Krok 6: Programování

Programování
Programování

Tato část vysvětlí logiku programování za zařízením pro třídění přihrádek.

Program je rozdělen do 4 kroků, které jsou následující:

  1. Inicializujte systém
  2. Zkontrolujte přítomnost předmětů
  3. Zkontrolujte typ přítomného objektu
  4. Přesunout pole

Podrobný popis každého kroku naleznete níže:

Krok 1 Inicializace systému

Panel LED (3) - sada Kalibrační LED (červená) VYSOKÁ, Připravená LED (zelená) NÍZKÁ, Objekt přítomný (žlutý) NÍZKÝ

Zkontrolujte, zda je krokový motor v počáteční poloze

  • Spusťte test ultrazvukového senzoru a změřte vzdálenost od stěny ke stěně boxu

    • Výchozí poloha == 0 >> Aktualizujte hodnoty Ready LED HIGH a Calibrating LED LOW -> krok 2
    • Počáteční poloha! = 0 >> digitální načtená hodnota ultrazvukových senzorů a na základě hodnot senzoru:

      • Aktualizujte hodnotu LED pohybujícího se motoru HIGH.
      • Spusťte přesouvání, dokud hodnota obou ultrazvukových senzorů nebude <prahová hodnota.

Aktualizovat hodnotu počáteční polohy = 1 >> Aktualizovat hodnotu LED Ready HIGH a motor se pohybuje LOW a kalibrace LOW >> krok 2

Krok 2

Zkontrolujte přítomnost předmětů

Spusťte detekci ultrazvukových objektů

  • Objekt přítomen == 1 >> Aktualizovaná hodnota LED objektu VYSOKÁ >> Krok 3
  • Objekt přítomen == 0 >> Nedělat nic

Krok 3

Zkontrolujte typ přítomného objektu

Spusťte indukční detekci senzoru

  • inductiveState = 1 >> Krok 4
  • inductiveState = 0 >> Krok 4

Krok 4

Přesunout pole

Spusťte provoz motoru

  • inductiveState == 1

    Aktualizujte LED pohybu motoru HIGH >> Přesuňte motor doleva (aktualizace počáteční polohy = 0) se zpožděním a vraťte se zpět >> Krok 1

  • inductiveState == 0

    Aktualizujte pohybující se LED LED VYSOKO >> Nechte motor pohybovat se doprava ((aktualizace počáteční polohy = 0), zpoždění a pohyb zpět doleva >> Krok 1

Funkce

Jak je patrné z programovací logiky, program funguje tak, že vykonává funkce se specifickým cílem. Prvním krokem je například inicializace systému, který obsahuje funkci „Zkontrolujte, zda je krokový motor v počáteční poloze“. Druhý krok poté zkontroluje přítomnost objektu, který je sám o sobě další funkcí (funkce „Ultrazvuková detekce objektů“). A tak dále.

Po kroku 4 se program plně provedl a před dalším spuštěním se vrátí ke kroku 1.

Funkce používané v hlavním těle jsou definovány níže.

Jsou to:

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

// Zkontrolujte, zda je předmět kovový nebo ne

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {return true; else {return false; }} void moveBox (bool inductiveState) {// Box přejde doleva, když je detekován kov a inductiveState = true if (inductiveState == 0) {stepper.moveTo (kroky); // náhodná poloha do konce pro testování stepper.runToPosition (); zpoždění (1000); stepper.moveTo (0); stepper.runToPosition (); zpoždění (1000); } else if (inductiveState == 1) {stepper.moveTo (-kroky); // náhodná poloha do konce pro testování stepper.runToPosition (); zpoždění (1000); stepper.moveTo (0); // náhodná poloha do konce pro testování stepper.runToPosition (); zpoždění (1000); }} boolean ultrasonicObjectDetection () {long duration1, distance1, durationTemp, distanceTemp, averageDistance1, averageDistanceTemp, averageDistanceOlympian1; // Definujte počet měření na dlouhou vzdálenostMax = 0; dlouhá vzdálenost Min = 4000; long distanceCelkem = 0; for (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("MaxDistance senzoru1"); Serial.print (vzdálenostMax); Serial.println ("mm"); Serial.print ("Senzor1 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Vezměte průměrnou vzdálenost z naměřených hodnot averageDistance1 = distanceTotal/10; Serial.print ("Sensor1 averageDistance1"); Serial.print (averageDistance1); Serial.println ("mm"); // Odebrání nejvyšších a nejnižších hodnot měření, aby se zabránilo chybným měřením averageDistanceTemp = distanceTotal - (vzdálenostMax+vzdálenostMin); averageDistanceOlympian1 = averageDistanceTemp/8; Serial.print ("Sensor1 averageDistanceOlympian1"); Serial.print (averageDistanceOlympian1); Serial.println ("mm");

// Resetujte hodnoty teploty

vzdálenostCelkem = 0; vzdálenostMax = 0; vzdálenostMin = 4000; dlouhé trvání2, vzdálenost2, průměrná vzdálenost2, průměrná vzdálenostOlympijská2; // Definujte počet měření, která je třeba provést (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print („MaxDistance senzoru2“); Serial.print (vzdálenostMax); Serial.println ("mm"); Serial.print ("Senzor2 minDistance"); Serial.print (distanceMin); Serial.println ("mm"); // Vezměte průměrnou vzdálenost z naměřených hodnot averageDistance2 = distanceTotal/10; Serial.print ("Sensor2 averageDistance2"); Serial.print (averageDistance2); Serial.println ("mm"); // Odebrání nejvyšších a nejnižších hodnot měření, aby se zabránilo chybným měřením averageDistanceTemp = distanceTotal - (vzdálenostMax+vzdálenostMin); averageDistanceOlympian2 = averageDistanceTemp/8; Serial.print ("Sensor2 averageDistanceOlympian2"); Serial.print (averageDistanceOlympian2); Serial.println ("mm"); // Reset teplotních hodnot distanceTotal = 0; vzdálenostMax = 0; vzdálenostMin = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true; } else {return false; }}

Hlavní tělo

Hlavní tělo obsahuje stejnou logiku vysvětlenou v horní části této části, ale je napsáno v kódu. Soubor je k dispozici ke stažení níže.

Varování

Bylo provedeno mnoho testů k nalezení konstant: emptyBoxDistance, kroky a Maximumspeed a zrychlení v nastavení.

Krok 7: Možná vylepšení

Možná vylepšení
Možná vylepšení

- Potřebujeme zpětnou vazbu o poloze boxu, abychom zajistili, že bude vždy na správném místě, aby vybral předmět na začátku. K vyřešení problému jsou k dispozici různé možnosti, ale snadné by bylo zkopírovat systém, který najdeme ve 3D tiskárnách, pomocí přepínače na jednom konci dráhy krabice.

-Vzhledem k problémům, které jsme zjistili s ultrazvukovou detekcí, můžeme pro tuto funkci hledat nějaké alternativy: laserový a laserový detektor KY-008 (obrázek), kapacitní senzory.

Krok 8: Omezující faktory

Tento projekt funguje tak, jak je popsáno v pokynech, ale během následujících kroků je třeba věnovat zvláštní pozornost:

Kalibrace ultrazvukových senzorů

Úhel, pod kterým jsou umístěny ultrazvukové senzory vzhledem k objektu, který mají detekovat, má zásadní význam pro správné fungování prototypu. Pro tento projekt byl pro orientaci ultrazvukových senzorů zvolen úhel 12,5 ° k normálu, ale nejlepší úhel by měl být určen experimentálně zaznamenáváním údajů o vzdálenosti pomocí různých předmětů.

Zdroj energie

Požadovaný výkon pro ovladač krokového motoru DRV8825 je 12V a mezi 0,2 a 1 Amp. Arduino může být také napájeno maximálně 12 V a 0,2 A pomocí konektorového vstupu na Arduinu. Zvláštní pozornost je však třeba věnovat použití stejného zdroje energie pro ovladač Arduino i krokový motor. Pokud je napájen z běžné napájecí zásuvky například pomocí napájecího adaptéru 12V/2A AC/DC, měl by být v obvodu regulátor napětí a diody, než bude napájení přiváděno do ovladače arduino a krokového motoru.

Navádění do boxu

Přestože tento projekt používá krokový motor, který se za normálních podmínek vrací do své původní polohy s vysokou přesností, je dobrým zvykem mít naváděcí mechanismus pro případ, že by došlo k chybě. Projekt, jaký je, nemá naváděcí mechanismus, ale jeho implementace je celkem jednoduchá. Za tímto účelem by měl být přidán mechanický spínač v počáteční poloze krabice tak, aby když krabice narazila na spínač, věděla, že je ve své výchozí poloze.

Krokový ovladač DRV8825 Tuning

Krokový ovladač vyžaduje ladění, aby fungovalo s krokovým motorem. To se provádí experimentálně otáčením potenciometru (šroubku) na čipu DRV8825 tak, aby bylo do motoru přiváděno příslušné množství proudu. Mírně otáčejte šroubem potenciometru, dokud motor nepůsobí štíhle.

Krok 9: Kredity

Tento projekt byl proveden jako součást kurzu mechatroniky v akademickém roce 2018-2019 pro Bruface Master na Université Libre de Bruxelles (ULB) - Vrije Universiteit Brussel (VUB).

Autoři jsou:

Maxime Decleire

Lidia Gomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Zvláštní poděkování patří našemu vedoucímu Albertovi de Beirovi, který nám během celého projektu také pomáhal.

Doporučuje: