Mündəricat:

Sorter Bin - Zibil qutunuzu aşkar edin və çeşidləyin: 9 addım
Sorter Bin - Zibil qutunuzu aşkar edin və çeşidləyin: 9 addım

Video: Sorter Bin - Zibil qutunuzu aşkar edin və çeşidləyin: 9 addım

Video: Sorter Bin - Zibil qutunuzu aşkar edin və çeşidləyin: 9 addım
Video: Dungeons & Dragons: я открываю коробку с 30 пакетами расширения Magic The Gathering 2024, Iyul
Anonim
Image
Image
Bu necə işləyir
Bu necə işləyir

Geri dönüşüm etməyən və ya pis bir şəkildə edən birini gördünüzmü?

Heç sizin üçün geri çevriləcək bir maşın arzulamısınızmı?

Layihəmizi oxumağa davam edin, peşman olmayacaqsınız!

Sorter bin, dünyada geri çevrilməyə kömək etmək üçün aydın bir motivasiya olan bir layihədir. Məlum olduğu kimi, təkrar emalın olmaması planetimizdə xammalın yox olması və dənizin çirklənməsi kimi ciddi problemlərə səbəb olur.

Bu səbəbdən komandamız kiçik bir miqyasda bir layihə hazırlamağa qərar verdi: materialın metal və ya qeyri-metal olmasından asılı olaraq zibili fərqli alıcılara ayıra bilən bir qab. Gələcək versiyalarda, zibil qutusunun hər cür materiala (ağac, plastik, metal, üzvi …) bölünməsinə imkan verən geniş miqyasda ekstrapolyasiya edilə bilər.

Əsas məqsəd metal və ya metal olmayanları ayırd etmək olduğundan, zibil qutusunda bir şey olub olmadığını aşkar etmək üçün induktiv sensorlar, həm də ultrasəs sensorlar ilə təchiz olunacaq. Üstəlik, zibili iki qutuya daşımaq üçün zibilin xətti bir hərəkətə ehtiyacı olacaq, buna görə də bir pilləli motor seçilir.

Növbəti bölmələrdə bu layihə addım -addım izah ediləcək.

Addım 1: Necə Çalışır

Bu necə işləyir
Bu necə işləyir
Bu necə işləyir
Bu necə işləyir

Sıralama qutusu, istifadəçinin işini nisbətən asanlaşdırmaq üçün hazırlanmışdır: zibil yuxarı boşqabda yerləşdirilən delikdən daxil edilməli, sarı düyməyə basılmalı və zibil ilə bitən proses başlayacaq. alıcılardan. Ancaq indi sual budur ki, bu proses daxildə necə işləyir?

Proses başladıqdan sonra yaşıl LED yanır. Daha sonra bir dəstək vasitəsi ilə üst lövhəyə bərkidilən ultrasəs sensorlar, qutunun içərisində bir cismin olub olmadığını müəyyən etmək üçün işlərinə başlayırlar.

Qutuda heç bir əşya yoxdursa, qırmızı LED yanır və yaşıl işıq sönür. Əksinə, bir cisim varsa, obyektin metal və ya metal olmadığını müəyyən etmək üçün induktiv sensorlar işə salınacaq. Materialın növü təyin edildikdən sonra qırmızı və sarı LEDlər yanacaq və qutu, step motorunun hərəkətə gətirdiyi materialın növündən asılı olaraq bir istiqamətə və ya əksinə doğru hərəkət edəcək.

Qutu vuruşun sonuna çatdıqda və obyekt düzgün alıcıya atıldıqda, qutu ilkin vəziyyətinə qayıdacaq. Nəhayət, qutu ilkin vəziyyətdə olanda sarı LED sönəcək. Sıralayıcı eyni prosedurla yenidən başlamağa hazır olacaq. Son paraqraflarda təsvir olunan bu proses, 6 -cı Adım: Proqramlaşdırmada əlavə olunan iş axını cədvəlinin şəklində də göstərilmişdir.

Addım 2: Materiallar (BOM)

Mexanik hissələr:

  • Alt quruluş üçün hissələr alınıb

    • Metal quruluş [Link]
    • Boz qutu [Link]
  • 3D printer

    Bütün çap olunmuş hissələr üçün PLA (ABS kimi digər materiallar da istifadə edilə bilər)

  • Lazer kəsmə maşını

    • MDF 3 mm
    • Pleksiglas 4 mm
  • Xətti Rulman dəsti [Link]
  • Xətti Rulman [Link]
  • Şaft [Link]
  • Mil tutacağı (x2) [Link]

Elektron hissələr:

  • Motor

    Lineer Step Motor Nema 17 [Link]

  • Batareya

    12 v Batareya [Link]

  • Sensorlar

    • 2 Ultrasonik sensor HC-SR04 [Link]
    • 2 endüktif sensorlar LJ30A3-15 [Link]
  • Mikro nəzarətçi

    1 arduino UNO lövhəsi

  • Əlavə komponentlər

    • DRV8825 sürücü
    • 3 LED: qırmızı, yaşıl və narıncı
    • 1 düymə
    • Bəzi atlama telləri, tellər və lehim lövhələri
    • Çörək lövhəsi
    • USB kabeli (Arduino-PC bağlantısı)
    • Kondansatör: 100 uF

Addım 3: Mexanik Dizayn

Image
Image
Mexanik Dizayn
Mexanik Dizayn
Mexanik Dizayn
Mexanik Dizayn

Əvvəlki şəkillərdə montajın bütün hissələri göstərilmişdir.

Mexanik dizayn üçün SolidWorks CAD proqramı olaraq istifadə edilmişdir. Montajın fərqli hissələri, istehsal olunacağı istehsal üsulu nəzərə alınmaqla hazırlanmışdır.

Lazer kəsmə hissələri:

  • MDF 3 mm

    • Sütunlar
    • Üst lövhə
    • Ultrasonik sensorlar dəstəkləyir
    • İndüktif sensorlar
    • Zibil qutusu
    • Batareya dəstəyi
    • Breadboard və Arduino dəstəyi
  • Pleksiglas 4 mm

    Platforma

3D çaplı hissələr:

  • Sütunların əsası
  • Step motorundan xətti hərəkət ötürücü element
  • Step motor və rulman dayaqları
  • Zibil qutusu üçün divarların fiksasiya hissələri

Bu hissələrin hər birinin istehsalı üçün. STEP faylları bu məqsədlə istifadə ediləcək maşından asılı olaraq düzgün formata gətirilməlidir. Bu halda,.dxf faylları lazer kəsmə maşını və.gcode faylları üçün 3D printer üçün istifadə edilmişdir (Ultimaker 2).

Bu layihənin mexaniki quruluşunu bu hissədə əlavə olunan. STEP faylında tapa bilərsiniz.

Addım 4: Elektronika (Komponent Seçimləri)

Bu bölmədə istifadə olunan elektron komponentlərin qısa bir təsviri və komponent seçimlərinin izahı ediləcək.

Arduino UNO lövhəsi (mikro nəzarətçi kimi):

Açıq mənbəli aparat və proqram təminatı. Ucuz, asanlıqla əldə edilə bilən, kodlaşdırılması asan. Bu lövhə istifadə etdiyimiz bütün komponentlərə uyğundur və problemləri öyrənmək və həll etmək üçün çox faydalı olan çoxlu dərsliklər və forumlar tapırsınız.

Motor (Lineer Step Motor Nema 17):

Tam fırlanmanı müəyyən sayda addımlara bölən bir növ step motordur. Nəticədə, müəyyən sayda addımlar atmaqla idarə olunur. Güclü və dəqiqdir və həqiqi mövqeyini idarə etmək üçün heç bir sensora ehtiyac yoxdur. Motorun vəzifəsi, atılmış əşyanın olduğu qutunun hərəkətini nəzarət etmək və onu sağ zibilliyə atmaqdır.

Modeli seçmək üçün bir təhlükəsizlik faktoru əlavə edərək maksimum torkun bəzi hesablamalarını apardınız. Nəticələrə gəldikdə, əsasən hesablanmış dəyəri əhatə edən modeli aldıq.

DRV8825 Sürücü:

Bu lövhə bipolyar pilləli motoru idarə etmək üçün istifadə olunur. Potensialiometr ilə maksimum cari çıxışı və altı fərqli addım qətnaməsini təyin etməyə imkan verən tənzimlənən cərəyan idarəetmə sisteminə malikdir: tam addım, yarım addım, 1/4 addım, 1/8 addım, 1/16- addım və 1/32 addım (nəhayət, tam addımdan istifadə etdik, çünki mikro addımlara getməyə ehtiyac tapmadıq, amma yenə də hərəkətin keyfiyyətini yaxşılaşdırmaq üçün istifadə edilə bilər).

Ultrasonik sensorlar:

Bunlar elektrik siqnalını ultrasəsə və əksinə çevirən bir növ akustik sensorlardır. Bir obyektə olan məsafəni hesablamaq üçün əvvəlcə yayılan akustik siqnalın əks -sədasını istifadə etdilər. Qutuda bir obyektin olub olmadığını müəyyən etmək üçün onlardan istifadə etdik. İstifadəsi asandır və dəqiq bir ölçü verir.

Bu sensorun çıxışı bir dəyər (məsafə) olsa da, bir obyektin olub olmadığını müəyyən etmək üçün bir eşik quraraq,

Endüktif sensorlar:

Faraday qanununa əsasən, təmassız elektron yaxınlıq sensoru kateqoriyasına aiddir. Onları hərəkətli qutunun altına, obyekti dəstəkləyən pleksiglas platformasının altına qoyduq. Məqsədləri rəqəmsal çıxış (0/1) verən metal və metal olmayan obyektləri fərqləndirməkdir.

LEDlər (yaşıl, sarı, qırmızı):

Onların vəzifəsi istifadəçi ilə ünsiyyət qurmaqdır:

-Yaşıl LED yanır: robot bir obyekt gözləyir.

-Qırmızı LED yanır: maşın işləyir, heç bir əşya ata bilməzsən.

-Sarı LED yanır: bir obyekt aşkarlanır.

12V Batareya və ya 12V güc mənbəyi + 5V USB gücü:

Sensorları və step motorunu işə salmaq üçün bir gərginlik mənbəyi lazımdır. Arduino -nu işə salmaq üçün 5V güc mənbəyinə ehtiyac var. Bu 12V batareya ilə edilə bilər, ancaq Arduino üçün ayrı bir 5V güc mənbəyinə sahib olmaq ən yaxşısıdır (məsələn, bir USB kabelinə və telefon adapterinə və ya kompüterə qoşulduqda).

Tapdığımız məsələlər:

  • İnduktiv sensorun aşkarlanması zamanı bəzən istənilməyən dəqiqliyi əldə edə bilmədik, çünki bəzən pis yerləşdirilmiş metal bir cisim hiss olunmur. Bunun səbəbi 2 məhdudiyyətdir:

    • Kvadrat platforma içərisində olan sensorlar tərəfindən əhatə olunan sahə bunun 50% -dən azını təşkil edir (belə ki, kiçik bir obyekt aşkar edilə bilməz). Bu problemi həll etmək üçün ərazinin 70% -dən çoxunu əhatə etmək üçün 3 və ya 4 indüktif sensordan istifadə etməyi məsləhət görürük.
    • Sensorların aşkarlama məsafəsi 15 mm ilə məhdudlaşır, buna görə də gözəl bir pleksiglas platforma istifadə etmək məcburiyyətində qaldıq. Bu da qəribə bir forma olan cisimləri aşkarlayan başqa bir məhdudiyyət ola bilər.
  • Ultrasonik aşkarlama: yenə də, kompleks şəkildə formalaşan cisimlər, sensorlar tərəfindən yayılan siqnal pis əks olunduğundan və sensora lazım olandan daha gec geri döndüyündən problem yaradır.
  • Batareya: Batareyanın verdiyi cərəyanı idarə edən bəzi problemlərimiz var və nəhayət bir enerji mənbəyindən istifadə etdik. Bununla birlikdə, bir diod istifadə etmək kimi digər həllər də həyata keçirilə bilər.

Addım 5: Elektronika (Bağlantılar)

Elektronika (Əlaqələr)
Elektronika (Əlaqələr)
Elektronika (Əlaqələr)
Elektronika (Əlaqələr)

Bu bölmə, müxtəlif komponentlərin birləşdirilməsini göstərir. Həm də hər bir komponentin Arduinonun hansı pininə bağlı olduğunu göstərir.

Addım 6: Proqramlaşdırma

Proqramlaşdırma
Proqramlaşdırma

Bu bölmədə Bin Sıralama maşınının arxasındakı proqramlaşdırma məntiqi izah ediləcək.

Proqram 4 mərhələyə bölünür və bunlar aşağıdakılardır:

  1. Sistemi işə salın
  2. Obyektlərin olub olmadığını yoxlayın
  3. Mövcud obyektin növünü yoxlayın
  4. Hərəkət qutusu

Hər bir addımın ətraflı təsviri üçün aşağıya baxın:

Addım 1 Sistemi işə salın

LED paneli (3) - Kalibrləmə LEDini (qırmızı) YÜKSƏK, Hazır LED (yaşıl) DÜŞÜK, Obyekt mövcuddur (sarı) DÜŞÜK

Step motorunun ilkin vəziyyətdə olduğunu yoxlayın

  • Yan qutudan divar arasındakı məsafəni ölçmək üçün ultrasəs sensoru testini keçirin

    • Başlanğıc mövqeyi == 0 >> Hazır LED YÜKSƏK və LOW LED -in Kalibrlənməsi dəyərlərini yeniləyin -> addım 2
    • Başlanğıc mövqeyi! = 0 >> ultrasəs sensorlarının rəqəmsal oxu dəyəri və sensor dəyərlərinə əsaslanaraq:

      • Motor hərəkət edən LED -in yenilənmə dəyəri YÜKSƏK.
      • Hər iki ultrasəs sensorunun dəyəri <eşik dəyəri olana qədər hərəkət qutusunu işə salın.

Başlanğıc mövqeyinin dəyərini yeniləyin = 1 >> LED Ready HIGH və LOW hərəkət edən və LOW aşağı kalibrli olan motorun yeniləmə dəyəri >> addım 2

Addım 2

Obyektlərin olub olmadığını yoxlayın

Ultrasonik Obyekt aşkarlanmasını işə salın

  • Obyekt mövcuddur == 1 >> Obyekt indiki LED -in YÜKSƏK dəyərini yeniləyin >> Adım 3
  • Obyekt mövcuddur == 0 >> Heç nə etməyin

Addım 3

Mövcud obyektin növünü yoxlayın

İndüktif sensor aşkarlamasını işə salın

  • inductiveState = 1 >> Addım 4
  • inductiveState = 0 >> Addım 4

Addım 4

Hərəkət qutusu

Motor əməliyyatını işə salın

  • induktiv Dövlət == 1

    Motoru hərəkət etdirən LED -i yeniləyin YÜKSƏK >> Motoru sola çevirin, (başlanğıc mövqeyini = 0) gecikdirin və sağa geri çəkin >> Addım 1

  • induktiv Dövlət == 0

    Motoru hərəkətə gətirən LED -i yeniləyin YÜKSƏK >> Motoru sağa çevirin, (başlanğıc mövqeyini = 0 yeniləyin), gecikdirin və sola dönün >> Addım 1

Funksiyalar

Proqramlaşdırma məntiqindən göründüyü kimi, proqram müəyyən bir məqsədlə funksiyaları yerinə yetirməklə işləyir. Məsələn, ilk addım "Step motorunun başlanğıc vəziyyətində olduğunu yoxlayın" funksiyasını ehtiva edən sistemi işə salmaqdır. İkinci addım, özlüyündə başqa bir funksiya olan obyektin varlığını yoxlayır ("Ultrasonik Nesne Algılama" funksiyası). Və sairə.

4 -cü addımdan sonra proqram tam yerinə yetirildi və yenidən başlamazdan əvvəl 1 -ci addıma qayıdacaq.

Əsas hissədə istifadə olunan funksiyalar aşağıda müəyyən edilmişdir.

Onlar sırasıyla:

  • inductiveTest ()
  • moveBox (induktiv dövlət)
  • ultrasonicObjectDetection ()

// Obyektin metal olub olmadığını yoxlayın

bool inductiveTest () {if (digitalRead (inductiveSwitchRight) == 1 || digitalRead (inductiveSwitchLeft == 0)) {qayıt doğru; else {false false; }} void moveBox (bool inductiveState) {// Qutu metal aşkar edildikdə sola gedir və inductiveState = true if (inductiveState == 0) {stepper.moveTo (addımlar); // stepper.runToPosition () testi üçün sona çatacaq təsadüfi mövqe; gecikmə (1000); step.moveTo (0); stepper.runToPosition (); gecikmə (1000); } else if (inductiveState == 1) {stepper.moveTo (-addımlar); // stepper.runToPosition () testi üçün sona çatacaq təsadüfi mövqe; gecikmə (1000); step.moveTo (0); // stepper.runToPosition () testi üçün sona çatacaq təsadüfi mövqe; gecikmə (1000); }} boolean ultrasonicObjectDetection () {uzun müddət1, məsafə1, müddətiTemp, məsafəTemp, ortaDistance1, ortaDistanceTemp, ortaDistanceOlympian1; // Uzun məsafəni götürmək üçün ölçü sayını təyin edinMax = 0; uzun məsafə Min = 4000; uzun məsafəTotal = 0; for (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor1 maxDistance"); Serial. çap (məsafə Maks); Serial.println ("mm"); Serial.print ("Sensor1 dəq Məsafə"); Serial. çap (məsafə Min); Serial.println ("mm"); // oxunuşlardan orta məsafə götürün Serial.print ("Sensor1 orta Uzaqlıq1"); Serial.print (ortaDistance1); Serial.println ("mm"); // Yanlış oxunuşların qarşısını almaq üçün ən yüksək və ən aşağı ölçmə dəyərlərini çıxarın averageDistanceOlympian1 = averageDistanceTemp/8; Serial.print ("Sensor1 averageDistanceOlympian1"); Serial.print (ortaDistanceOlympian1); Serial.println ("mm");

// Müvəqqəti dəyərləri sıfırlayın

məsafəTotal = 0; məsafə Maks = 0; məsafə Min = 4000; uzun müddət2, məsafə2, ortaDistance2, ortaDistanceOlympian2; // Ölçmə sayını təyin edin (int i = 0; i distanceMax) {distanceMax = distanceTemp; } if (distanceTemp <distanceMin) {distanceMin = distanceTemp; } distanceTotal+= distanceTemp; } Serial.print ("Sensor2 maxDistance"); Serial. çap (məsafə Maks); Serial.println ("mm"); Serial.print ("Sensor2 dəq Məsafə"); Serial. çap (məsafə Min); Serial.println ("mm"); // oxunuşlardan orta məsafə götürünDisk2 = məsafəCəmi/10; Serial.print ("Sensor2 orta Uzaqlıq2"); Serial.print (orta məsafə2); Serial.println ("mm"); // Yanlış oxunuşların qarşısını almaq üçün ən yüksək və ən aşağı ölçmə dəyərlərini çıxarın averageDistanceOlympian2 = averageDistanceTemp/8; Serial.print ("Sensor2 ortaDistanceOlympian2"); Serial.print (ortaDistanceOlympian2); Serial.println ("mm"); // Müvəqqəti dəyərləri sıfırlayın distanceTotal = 0; məsafəMax = 0; məsafə Min = 4000; if (averageDistanceOlympian1 + averageDistanceOlympian2 <emptyBoxDistance) {return true; } else {false false; }}

Əsas

Əsas hissə, bu hissənin yuxarı hissəsində izah edilən, lakin kodla yazılmış eyni məntiqi ehtiva edir. Fayl aşağıda yükləmək üçün mövcuddur.

Xəbərdarlıq

Sabitləri tapmaq üçün bir çox testlər edildi: boşBoxDistance, addımlar və Maksimum sürət və quraşdırmada sürətləndirmə.

Addım 7: Mümkün təkmilləşdirmələr

Mümkün təkmilləşdirmələr
Mümkün təkmilləşdirmələr

- Əvvəldən obyekti seçmək üçün hər zaman doğru mövqedə olmasını təmin etmək üçün qutunun mövqeyi haqqında rəylərə ehtiyacımız var. Problemi həll etmək üçün fərqli variantlar mövcuddur, ancaq 3D printerlərdə tapdığımız sistemi qutunun yolunun bir ucundakı açardan istifadə edərək kopyalamaq asan ola bilər.

-Ultrasonik aşkarlama ilə tapdığımız problemlərə görə bu funksiya üçün bəzi alternativlər axtara bilərik: KY-008 Lazer və Lazer Detektoru (şəkil), kapasitiv sensorlar.

Addım 8: Məhdudlaşdırıcı amillər

Bu layihə təlimatlarda göstərildiyi kimi işləyir, lakin aşağıdakı addımlar zamanı xüsusi qayğı göstərilməlidir:

Ultrasonik Sensorların Kalibrlənməsi

Ultrasonik sensorların aşkar etməli olduqları obyektlə əlaqədar olaraq yerləşdirildikləri açı, prototipin düzgün işləməsi üçün çox vacibdir. Bu layihə üçün ultrasəs sensorlarının oriyentasiyası üçün normala 12.5 ° bir açı seçildi, lakin ən yaxşı bucaq müxtəlif obyektlərdən istifadə edərək məsafə oxunuşlarını qeyd etməklə eksperimental olaraq təyin olunmalıdır.

Enerji mənbəyi

Step motor sürücüsü DRV8825 üçün tələb olunan güc 12V və 0,2 ilə 1 Amper arasındadır. Arduino, Arduino üzərindəki jak girişindən istifadə edərək maksimum 12V və 0.2 Amper ilə də təchiz edilə bilər. Həm Arduino, həm də step motor sürücüsü üçün eyni enerji mənbəyindən istifadə edildikdə xüsusi diqqət yetirilməlidir. Adi bir elektrik prizindən, məsələn, 12V/2A AC/DC adapteri ilə təchiz olunarsa, güc arduino və step motor sürücüsünə verilməzdən əvvəl dövrədə bir gərginlik tənzimləyicisi və diodlar olmalıdır.

Qutuya ev sahibliyi

Bu layihədə normal şəraitdə yüksək dəqiqliklə başlanğıc mövqeyinə qayıdan bir step motoru istifadə edilsə də, bir səhv baş verərsə, evlənmə mexanizminin olması yaxşı bir tətbiqdir. Layihənin olduğu kimi bir evlənmə mexanizmi yoxdur, amma birini həyata keçirmək olduqca sadədir. Bunun üçün qutunun başlanğıc mövqeyinə mexaniki bir keçid əlavə edilməlidir ki, qutu anahtarı vurduqda onun öz mövqeyində olduğunu bilsin.

Sürücü drv8825 tuning

Step sürücüsü, step motoru ilə işləmək üçün tənzimləmə tələb edir. Bu, DRV8825 çipindəki potensiometr (vida) döndərilərək mühərrikə uyğun miqdarda cərəyan verilərək eksperimental olaraq edilir. Beləliklə, potensialiometr vintini mühərrik yalın hərəkət edənə qədər bir az çevirin.

Addım 9: Kreditlər

Bu layihə, Libre de Bruxelles Universiteti (ULB) - Vrije Universiteit Brussel (VUB) Bruface Master üçün 2018-2019 tədris ilində bir mekatronik kursunun bir hissəsi olaraq edildi.

Müəlliflər bunlardır:

Maxime Decleire

Lidiya Qomez

Markus Poder

Adriana Puentes

Narjisse Snoussi

Layihə boyunca bizə kömək edən rəhbərimiz Albert de Beirə xüsusi təşəkkürlər.

Tövsiyə: