Mundarija:

Sorter bin - axlatni aniqlash va saralash: 9 qadam
Sorter bin - axlatni aniqlash va saralash: 9 qadam

Video: Sorter bin - axlatni aniqlash va saralash: 9 qadam

Video: Sorter bin - axlatni aniqlash va saralash: 9 qadam
Video: Dungeons and Dragons: Men 30 Magic The Gathering kengaytirgichi qutisini ochaman 2024, Iyul
Anonim
Image
Image
U qanday ishlaydi
U qanday ishlaydi

Siz hech qachon qayta ishlamayotgan yoki yomon ishlayotgan odamni ko'rganmisiz?

Siz uchun qayta ishlanadigan mashinani orzu qilganmisiz?

Loyihamizni o'qishda davom eting, bundan afsuslanmaysiz!

Sorter bin - bu dunyoda qayta ishlashga yordam beradigan aniq motivatsiyali loyihadir. Ma'lumki, qayta ishlashning yo'qligi sayyoramizda xom ashyoning yo'q bo'lib ketishi va dengizning ifloslanishi kabi jiddiy muammolarni keltirib chiqarmoqda.

Shu sababli, bizning jamoamiz kichik hajmdagi loyihani ishlab chiqishga qaror qildi: axlatni metall yoki metall bo'lmaganligiga qarab turli xil qabul qiluvchilarga ajratish mumkin bo'lgan quti. Kelgusi versiyalarda, axlatni har xil turdagi materiallarga (yog'och, plastmassa, metall, organik …) bo'lishga imkon beradigan katta hajmdagi yig'ish qutisini ekstrapolyatsiya qilish mumkin edi.

Asosiy maqsad metall yoki metall bo'lmaganlarni ajratish bo'lgani uchun, saralash qutisi induktiv sensorlar bilan jihozlanadi, shuningdek, axlat qutisida biror narsa borligini aniqlash uchun ultratovushli sensorlar bilan jihozlanadi. Bundan tashqari, axlatni ikkita qutiga o'tkazish uchun axlat qutisiga chiziqli harakat kerak bo'ladi, shuning uchun pog'onali dvigatel tanlanadi.

Keyingi bo'limlarda bu loyiha bosqichma -bosqich tushuntiriladi.

1 -qadam: Bu qanday ishlaydi

U qanday ishlaydi
U qanday ishlaydi
U qanday ishlaydi
U qanday ishlaydi

Saralash qutisi foydalanuvchi uchun ishni osonlashtirishi uchun mo'ljallangan: axlatni yuqori plastinkaga qo'yilgan teshik orqali kiritish kerak, sariq tugmani bosish kerak va jarayon axlat bilan tugaydi. qabul qiluvchilarning. Ammo hozir savol tug'iladi: bu jarayon ichki tartibda qanday ishlaydi?

Jarayon boshlangandan so'ng, yashil LED yonadi. Keyin yuqori plastinkaga tayanch orqali ulangan ultratovushli datchiklar qutining ichida biror narsa bor yoki yo'qligini aniqlash uchun o'z ishini boshlaydilar.

Agar qutida hech qanday narsa bo'lmasa, qizil LED yonadi va yashil chiroq o'chadi. Aksincha, agar biror narsa bo'lsa, ob'ekt metall yoki metall emasligini aniqlash uchun induktiv datchiklar ishga tushadi. Material turini aniqlagandan so'ng, qizil va sariq LEDlar yonadi va quti qadam dvigateli tomonidan harakatlanayotgan material turiga qarab bir tomonga yoki teskari tomonga siljiydi.

Quti chiziq oxirigacha etib kelganida va ob'ekt to'g'ri qabul qiluvchiga tashlanganida, quti dastlabki holatiga qaytadi. Nihoyat, quti dastlabki holatida, sariq LED o'chadi. Sortter xuddi shu protsedura bilan qayta boshlashga tayyor bo'ladi. Oxirgi xatboshilarda tasvirlangan bu jarayon 6 -qadam: dasturlashda biriktirilgan ish oqimi jadvalining rasmida ham ko'rsatilgan.

2 -qadam: Materiallar varaqasi (BOM)

Mexanik qismlar:

  • Pastki tuzilish uchun ehtiyot qismlar sotib olindi

    • Metall tuzilishi [havola]
    • Kulrang quti [havola]
  • 3D printer

    Barcha bosilgan qismlar uchun PLA (ABS kabi boshqa materiallardan ham foydalanish mumkin)

  • Lazerli kesish mashinasi

    • MDF 3 mm
    • Pleksiglas 4 mm
  • Lineer rulmanlar to'plami [havola]
  • Chiziqli rulman [havola]
  • Shaft [havola]
  • Milya ushlagichi (x2) [havola]

Elektron qismlar:

  • Dvigatel

    Chiziqli qadam dvigatel Nema 17 [havola]

  • Batareya

    12 v batareya [havola]

  • Sensorlar

    • 2 ultratovush sensori HC-SR04 [havola]
    • 2 induktiv sensorlar LJ30A3-15 [havola]
  • Mikrokontroller

    1 arduino UNO kengashi

  • Qo'shimcha komponentlar

    • DRV8825 uchun haydovchi
    • 3 LED: qizil, yashil va to'q sariq
    • 1 tugma
    • Ba'zi o'tish simlari, simlar va lehim plitalari
    • Non paneli
    • USB kabeli (Arduino-kompyuterga ulanish)
    • Kondensator: 100 uF

3 -qadam: mexanik dizayn

Image
Image
Mexanik dizayn
Mexanik dizayn
Mexanik dizayn
Mexanik dizayn

Oldingi rasmlarda yig'ilishning barcha qismlari ko'rsatilgan.

Mexanik dizayn uchun SolidWorks SAPR dasturi sifatida ishlatilgan. O'rnatishning turli qismlari ishlab chiqarish usulini hisobga olgan holda ishlab chiqilgan.

Lazerli kesish qismlari:

  • MDF 3 mm

    • Ustunlar
    • Yuqori plastinka
    • Ultrasonik sensorlar qo'llab -quvvatlanadi
    • Induktiv sensorlar qo'llab -quvvatlanadi
    • Axlat qutisi
    • Batareyani qo'llab -quvvatlash
    • Breadboard va Arduino -ni qo'llab -quvvatlash
  • Pleksiglas 4 mm

    Platforma

3D bosma qismlar:

  • Ustunlar asosi
  • Bosqichli motordan chiziqli harakatni uzatish elementi
  • Bosqichli dvigatel va rulman tayanchlari
  • Axlat qutisi uchun devorlarni mahkamlash qismlari

Ushbu qismlarning har birini ishlab chiqarish uchun. STEP fayllari shu maqsadda ishlatiladigan mashinaga qarab to'g'ri formatga import qilinishi kerak. Bu holda,.dxf fayllari lazerni kesish mashinasi va.gcode formatidagi 3D printer uchun ishlatilgan (Ultimaker 2).

Ushbu loyihaning mexanik yig'ilishini ushbu bo'limda biriktirilgan. STEP faylida topish mumkin.

4 -qadam: elektronika (komponentlarni tanlash)

Ushbu bo'limda ishlatilgan elektron komponentlarning qisqacha tavsifi va komponentlarning tanlovi haqida tushuntirish qilinadi.

Arduino UNO kengashi (mikrokontroller sifatida):

Ochiq manbali apparat va dasturiy ta'minot. Arzon, oson mavjud, kodlash oson. Bu taxta biz ishlatgan barcha komponentlarga mos keladi va siz muammolarni o'rganish va hal qilish uchun juda foydali bo'lgan bir nechta darsliklar va forumlarni topasiz.

Dvigatel (Nema 17 chiziqli dvigatel):

To'liq aylanishni ma'lum miqdordagi qadamlarga bo'ladigan qadamli dvigatel turi. Natijada, ma'lum miqdordagi qadamlar berish orqali nazorat qilinadi. Bu kuchli va aniq, uning haqiqiy holatini boshqarish uchun hech qanday datchiklar kerak emas. Dvigatelning vazifasi - tashlangan buyumni o'z ichiga olgan qutining harakatini nazorat qilish va uni to'g'ri axlat qutisiga tashlash.

Modelni tanlash uchun siz xavfsizlik momentini qo'shib, maksimal momentni hisoblab chiqdingiz. Natijalarga kelsak, biz asosan hisoblangan qiymatni qamrab oladigan modelni sotib oldik.

DRV8825 haydovchi:

Bu taxta bipolyar qadamli motorni boshqarish uchun ishlatiladi. U sozlanishi oqim boshqaruviga ega, bu sizga potentsiometr yordamida maksimal oqim chiqishini, shuningdek olti xil qadam o'lchamlarini belgilashga imkon beradi: to'liq qadam, yarim qadam, 1/4 qadam, 1/8 qadam, 1/16- qadam va 1/32 bosqichli (biz oxir-oqibat to'liq qadamni qo'lladik, chunki mikrostepingga o'tishning hojati yo'q edi, lekin uni harakat sifatini yaxshilash uchun ishlatish mumkin).

Ultrasonik sensorlar:

Bu elektr signalini ultratovushga aylantiradigan va aksincha, akustik sensorlarning bir turi. Ular ob'ektga masofani hisoblash uchun birinchi navbatda chiqariladigan akustik signalning aks -sadosidan foydalanganlar. Biz ulardan qutida biror narsa bor yoki yo'qligini aniqlash uchun foydalanganmiz. Ulardan foydalanish oson va aniq o'lchov beradi.

Ushbu sensorning chiqishi qiymat (masofa) bo'lsa -da, ob'ekt mavjud yoki yo'qligini aniqlash uchun chegarani belgilab, biz o'zgartiramiz.

Induktiv sensorlar:

Faradey qonuniga asoslanib, u kontaktsiz elektron yaqinlik sensori toifasiga kiradi. Biz ularni harakatlanuvchi qutining pastki qismiga, ob'ektni qo'llab -quvvatlaydigan pleksiglas platformasi ostiga joylashtirdik. Ularning maqsadi-raqamli chiqishni beradigan metall va metall bo'lmagan narsalarni farqlash (0/1).

LEDlar (yashil, sariq, qizil):

Ularning vazifasi foydalanuvchi bilan muloqot qilishdir:

-Yashil LED yonadi: robot biror narsani kutmoqda.

-Qizil LED yonadi: mashina ishlaydi, siz hech narsani tashlay olmaysiz.

-Sariq LED yoniq: ob'ekt aniqlandi.

12V batareya yoki 12V quvvat manbai + 5V USB quvvati:

Datchiklar va qadam motorini quvvatlantirish uchun kuchlanish manbai kerak. Arduino -ni yoqish uchun 5V quvvat manbai kerak. Buni 12V batareya orqali amalga oshirish mumkin, lekin Arduino uchun alohida 5V quvvat manbaiga ega bo'lish yaxshiroqdir (masalan, quvvat manbaiga yoki kompyuterga ulangan USB kabeli va telefon adapteri bilan).

Biz topgan muammolar:

  • Induktiv sensorni aniqlashda biz kerakli aniqlikka erisha olmadik, chunki ba'zida noto'g'ri joylashtirilgan metall buyumlar sezilmaydi. Bu 2 ta cheklov bilan bog'liq:

    • Kvadrat platformadagi datchiklar bilan qoplangan maydon uning 50% dan kamini tashkil qiladi (shuning uchun kichik ob'ektni aniqlab bo'lmaydi). Buni hal qilish uchun maydonning 70% dan ortig'ini ta'minlash uchun 3 yoki 4 induktiv datchiklardan foydalanishni tavsiya etamiz.
    • Sensorlarni aniqlash masofasi 15 mm bilan cheklangan, shuning uchun biz nozik pleksiglas platformasidan foydalanishga majbur bo'ldik. Bu, shuningdek, g'alati shakli bo'lgan narsalarni aniqlashning yana bir cheklovi bo'lishi mumkin.
  • Ultrasonik aniqlash: yana, murakkab shakldagi ob'ektlar muammo tug'diradi, chunki sensorlar chiqaradigan signal yomon aks etadi va sensordan kechroq qaytadi.
  • Batareya: bizda batareya etkazib beradigan oqimni nazorat qilishda ba'zi muammolar bor va uni hal qilish uchun biz nihoyat quvvat manbaidan foydalandik. Biroq, diod ishlatish kabi boshqa echimlarni bajarish mumkin.

5 -qadam: Elektronika (ulanishlar)

Elektronika (ulanishlar)
Elektronika (ulanishlar)
Elektronika (ulanishlar)
Elektronika (ulanishlar)

Ushbu bo'limda har xil komponentlarning ulanishi ko'rsatilgan. Bundan tashqari, har bir komponent Arduino qaysi piniga ulanganligini ko'rsatadi.

6 -qadam: dasturlash

Dasturlash
Dasturlash

Bu bo'limda Bin Sorting mashinasining dasturlash mantig'i tushuntiriladi.

Dastur 4 bosqichga bo'lingan, ular quyidagicha:

  1. Tizimni ishga tushirish
  2. Ob'ektlar mavjudligini tekshiring
  3. Mavjud ob'ekt turini tekshiring
  4. Ko'chirish qutisi

Har bir qadamning batafsil tavsifini quyida ko'ring:

1 -qadam Tizimni ishga tushiring

LED paneli (3) - sozlash kalibrlash LED (qizil) YUQORI, tayyor LED (yashil) LOW, ob'ekt mavjud (sariq) LOW

Bosqichli motorning dastlabki holatini tekshiring

  • Yon qutidan devorgacha bo'lgan masofani o'lchash uchun ultratovushli datchik sinovini o'tkazing

    • Boshlang'ich pozitsiyasi == 0 >> Tayyor LEDni yuqori va kalibrli LED qiymatlarini yangilang -> 2 -qadam
    • Boshlang'ich pozitsiyasi! = 0 >> ultratovushli sensorlarning raqamli o'qish qiymati va sensor qiymatlariga asoslangan:

      • Dvigatel harakatlanuvchi LEDning yuqori qiymatini yangilang.
      • Har ikkala ultratovushli sensorlar qiymati <chegara qiymati bo'lmaguncha harakat qutisini ishga tushiring.

Boshlang'ich pozitsiyasining yangilanish qiymati = 1 >> LED Ready HIGH -ning yangilanishi va LOW -ning past va kalibrlanishining qiymati >> 2 -qadam

2 -qadam

Ob'ektlar mavjudligini tekshiring

Ultrasonik ob'ektni aniqlashni ishga tushiring

  • Ob'ekt mavjud == 1 >> Ob'ekt mavjud LEDni yangilash qiymati YUQORI >> 3 -qadam
  • Ob'ekt mavjud == 0 >> Hech narsa qilmang

3 -qadam

Mavjud ob'ekt turini tekshiring

Induktiv sensorni aniqlashni ishga tushiring

  • inductiveState = 1 >> 4 -qadam
  • inductiveState = 0 >> 4 -qadam

4 -qadam

Ko'chirish qutisi

Dvigatelni ishga tushirish

  • induktiv davlat == 1

    Dvigatelning harakatlanuvchi LEDini yangilang YUQORI >> Dvigatelni chapga siljiting, (boshlang'ich pozitsiyasini = 0) kechiktiring va o'ngga qayting >> 1 -qadam

  • induktiv davlat == 0

    Dvigatelning harakatlanuvchi LEDini yangilang YUQORI >> Dvigatelni o'ngga siljiting, (boshlang'ich pozitsiyasini = 0) yangilang, kechiktiring va chapga buriling >> 1 -qadam

Vazifalar

Dasturlash mantig'idan ko'rinib turibdiki, dastur aniq maqsadli funktsiyalarni bajarish orqali ishlaydi. Masalan, birinchi qadam - "Step motorining boshlang'ich holatini tekshirish" funktsiyasini o'z ichiga olgan tizimni ishga tushirish. Ikkinchi qadam, ob'ektning mavjudligini tekshiradi, bu boshqa funktsiya ("Ultrasonik ob'ektlarni aniqlash" funktsiyasi). Va hokazo.

4 -qadamdan so'ng, dastur to'liq bajarildi va yana ishga tushirishdan oldin 1 -bosqichga qaytadi.

Asosiy qismda ishlatiladigan funktsiyalar quyida keltirilgan.

Ular navbati bilan:

  • inductiveTest ()
  • moveBox (induktiv davlat)
  • ultrasonikObjectDetection ()

// Ob'ekt metall yoki yo'qligini tekshiring

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {qaytarish rost; else {false false; }} void moveBox (bool inductiveState) {// Quti metall aniqlanganda chapga ketadi va inductiveState = true if (inductiveState == 0) {stepper.moveTo (qadamlar); // stepper.runToPosition () ni tekshirish uchun tugatish uchun tasodifiy holat; kechikish (1000); step.moveTo (0); step.runToPosition (); kechikish (1000); } if if (inductiveState == 1) {stepper.moveTo (-steps); // stepper.runToPosition () ni tekshirish uchun tugatish uchun tasodifiy holat; kechikish (1000); step.moveTo (0); // stepper.runToPosition () ni tekshirish uchun tugatish uchun tasodifiy holat; kechikish (1000); }} boolean ultrasonicObjectDetection () {uzoq davomiyligi1, masofa1, muddatiTemp, masofaTemp, o'rtachaDistance1, o'rtachaDistanceTemp, o'rtachaDistanceOlympian1; // Uzoq masofani olish uchun o'lchovlar sonini aniqlangMax = 0; uzoq masofaMin = 4000; uzoq masofaTotal = 0; for (int i = 0; i distanceMax) {masofaMax = masofaTemp; } agar (masofaTemp <masofaMin) {masofaMin = masofaTemp; } masofaTotal+= masofaTemp; } Serial.print ("Sensor1 maxDistance"); Serial.print (masofa Maks); Serial.println ("mm"); Serial.print ("Sensor1 minDistance"); Serial.print (masofa Min); Serial.println ("mm"); // O'qishdan o'rtacha masofani oling o'rtachaDistance1 = masofaJami/10; Serial.print ("Sensor1 o'rtachaDistance1"); Serial.print (o'rtachaDistance1); Serial.println ("mm"); // noto'g'ri o'qishlar oldini olish uchun o'lchovlarning eng yuqori va eng past qiymatlarini olib tashlang o'rtachaDistanceOlympian1 = o'rtachaDistanceTemp/8; Serial.print ("Sensor1 o'rtachaDistanceOlympian1"); Serial.print (o'rtachaDistanceOlympian1); Serial.println ("mm");

// Harorat qiymatlarini tiklash

masofaTotal = 0; masofa Maks = 0; masofa Min = 4000; uzoq davomiylik2, masofa2, o'rtachaDistance2, o'rtachaDistanceOlympian2; // o'lchashlar sonini aniqlang (int i = 0; i distanceMax) {distanceMax = distanceTemp; } agar (masofaTemp <masofaMin) {masofaMin = masofaTemp; } masofaTotal+= masofaTemp; } Serial.print ("Sensor2 maxDistance"); Serial.print (masofa Maks); Serial.println ("mm"); Serial.print ("Sensor2 minDistance"); Serial.print (masofa Min); Serial.println ("mm"); // O'qishdan o'rtacha masofani oling o'rtachaDistance2 = masofaTotal/10; Serial.print ("Sensor2 o'rtachaDistance2"); Serial.print (o'rtachaDistance2); Serial.println ("mm"); // noto'g'ri o'qishlar oldini olish uchun o'lchovlarning eng yuqori va eng past qiymatlarini olib tashlang o'rtachaDistanceOlympian2 = o'rtachaDistanceTemp/8; Serial.print ("Sensor2 o'rtachaDistanceOlympian2"); Serial.print (o'rtachaDistanceOlympian2); Serial.println ("mm"); // Temp qiymatlarini resetTotal = 0; masofa Maks = 0; masofa Min = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {qaytarish rost; } else {return false; }}

Asosiy tanasi

Asosiy qism xuddi shu mantiqni o'z ichiga oladi, lekin bu bo'lim boshida tushuntirilgan, lekin kod bilan yozilgan. Faylni quyida yuklab olish mumkin.

Ogohlantirish

Turg'unlarni topish uchun ko'plab testlar o'tkazildi: bo'shBoxDistance, qadamlar va Maksimal tezlik va sozlashda tezlashtirish.

7 -qadam: Mumkin bo'lgan yaxshilanishlar

Mumkin bo'lgan yaxshilanishlar
Mumkin bo'lgan yaxshilanishlar

- Ob'ektni boshida tanlash har doim to'g'ri pozitsiyada bo'lishini ta'minlash uchun bizga qutining holati to'g'risida fikr -mulohaza kerak. Muammoni hal qilish uchun turli xil variantlar mavjud, lekin biz 3D printerlarda topilgan tizimni quti yo'lining bir chetidagi kalit yordamida nusxalash oson bo'lishi mumkin.

-Ultrasonik aniqlashda topilgan muammolar tufayli biz ushbu funktsiyaga alternativa izlashimiz mumkin: KY-008 lazer va lazer detektori (tasvir), sig'imli sensorlar.

8 -qadam: cheklovchi omillar

Ushbu loyiha ko'rsatmalarda tasvirlanganidek ishlaydi, lekin quyidagi bosqichlarda alohida e'tibor berilishi kerak:

Ultrasonik sensorlarni kalibrlash

Prototipning to'g'ri ishlashi uchun ultratovushli datchiklar aniqlanadigan ob'ektga nisbatan joylashtiriladigan burchak hal qiluvchi ahamiyatga ega. Ushbu loyiha uchun ultratovushli sensorlar yo'nalishi uchun odatdagidan 12,5 ° burchak tanlangan, lekin eng yaxshi burchakni har xil ob'ektlar yordamida masofaviy o'qishni yozib eksperimental tarzda aniqlash kerak.

Quvvat manbai

Bosqichli dvigatel DRV8825 uchun talab qilinadigan quvvat 12V va 0,2 dan 1 Ampergacha. Arduino -ni Arduino -dagi ulagich yordamida maksimal 12V va 0,2 Amperda ham quvvatlantirish mumkin. Arduino va step dvigatellari uchun bir xil quvvat manbaidan foydalanishda alohida ehtiyot bo'lish kerak. Agar 12V/2A AC/DC adapterli oddiy quvvat manbaidan quvvat oladigan bo'lsak, arduino va step dvigatel haydovchisiga quvvat berishdan oldin, kontaktlarning zanglashiga olib keladigan voltaj regulyatori va diodlar bo'lishi kerak.

Qutiga uy qo'yish

Garchi, bu loyihada oddiy dvigatel ishlatilsa, u normal sharoitda yuqori aniqlik bilan boshlang'ich holatiga qaytadi, lekin xatolik yuz berganda mexanizmni o'rnatish yaxshi amaliyotdir. Loyiha avvalgidek mexanizmga ega emas, lekin uni amalga oshirish juda oddiy. Buning uchun qutining dastlabki holatiga mexanik kalitni qo'shish kerak, shunda u qutiga o'tganda, u o'z joyida ekanligini biladi.

Bosqich haydovchi DRV8825 sozlash

Bosqichli haydovchi step motor bilan ishlash uchun sozlashni talab qiladi. Bu eksperimental tarzda DRV8825 chipidagi potansiyometrni (vintni) burish orqali amalga oshiriladi, shunda dvigatelga mos keladigan oqim beriladi. Shunday qilib, potentsiometr vintini ozgina burab, dvigatel yupqa harakat qilguncha.

9 -qadam: kreditlar

Bu loyiha Mexutronika kursi doirasida 2018-2019 o'quv yili mobaynida Libre de Bruxelles Universiteti (ULB) - Vrije Universiteit Bryusseldagi (VUB) Bruface Master uchun amalga oshirildi.

Mualliflar:

Maksim Dekler

Lidiya Gomes

Markus Poder

Adriana Puentes

Narjisse Snoussi

Loyiha davomida bizga yordam bergan rahbarimiz Albert de Beyrga alohida rahmat.

Tavsiya: