Mündəricat:

Arduino və PC tərəfindən idarə olunan robot qol: 10 addım
Arduino və PC tərəfindən idarə olunan robot qol: 10 addım

Video: Arduino və PC tərəfindən idarə olunan robot qol: 10 addım

Video: Arduino və PC tərəfindən idarə olunan robot qol: 10 addım
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Iyul
Anonim
Image
Image
Layihənin arxasında nəzəriyyə
Layihənin arxasında nəzəriyyə

Robot silahlar sənayedə geniş istifadə olunur. İstər montaj işləri üçün olsun, ISS -ə (Beynəlxalq Kosmos Stansiyası) qoşulmaq üçün qaynaq və ya hətta biri istifadə olunur, insanlara işdə kömək edir və ya insanı tamamilə əvəz edirlər. Qurduğum qol, cisimləri hərəkət etdirmək üçün istifadə edilməli olan robot qolunun daha kiçik bir nümayəndəsidir. Servoları idarə etmək üçün artıq quraşdırılmış kitabxanası olan arduino pro mini tərəfindən idarə olunur. Servolar, proqramlaşdırılması çətin olmayan PWM (Pulse Width Modulation) tərəfindən idarə olunur, lakin bu kitabxana işi asanlaşdırır. İstifadəçi, servo mühərrikləri idarə etmək üçün 4 kaydırıcıdan istifadə edən PC -dəki proqramdan və ya gərginlik bölücü kimi fəaliyyət göstərmək üçün hazırlanmış potensiometrlərlə bu servoları idarə edə bilər.

Bu layihə üçün xüsusi PCB dizayn etməli və düzəltməli, 3D qol modelləri yaratmalı və hamısını idarə edən kod yazmalı idim. Bunun üzərinə, bu siqnalı deşifr etməyi və servoları istifadəçinin təyin etdiyi yerə köçürməyi bacaran arduinoya siqnal göndərən pythonda əlavə bir proqram kodladım.

Addım 1: Layihənin arxasında nəzəriyyə

Layihənin arxasında nəzəriyyə
Layihənin arxasında nəzəriyyə

Arduino, işləmək üçün pulsuz kitabxana təklif etməsi baxımından əladır. Bu layihə üçün servoları idarə etməyi çox asanlaşdıran Servo.h kitabxanasından istifadə etdim.

Servo mühərriki PWM - Pulse Width Modulation ilə idarə olunur, yəni servo idarə etmək üçün qısa gərginlik pulsları etməlisiniz. Servo bu siqnalın uzunluğunu deşifr edə və verilən mövqeyə dönə bilər. Və artıq qeyd etdiyim kitabxanadan istifadə etdiyim yer budur. Siqnalın uzunluğunu təkbaşına hesablamaq məcburiyyətində deyildim, ancaq parametri dərəcələrlə ötürdüyüm kitabxananın funksiyalarından istifadə etdim və siqnal verir.

Servoları idarə etmək üçün gərginlik bölücü rolunu oynayan potensiometrlərdən istifadə etdim. Arduino lövhələrində layihə üçün istifadə etdiyim bir neçə analoq/rəqəmsal çevirici var. Əsasən arduino, potensiometrdəki orta pindəki gərginliyi izləyir və bir tərəfə dönərsə 0 Volt (dəyər = 0), digər tərəfdə isə 5 Voltdur (dəyər = 1023). Bu dəyər daha sonra 0 - 1023 - 0 - 180 aralığında ölçülür və sonra artıq qeyd olunan funksiyaya ötürülür.

Başqa bir mövzu, qısa müddətdə əhatə edəcəyim arduino ilə serial ünsiyyətidir. Əsasən PC -də yazılmış proqram, istifadəçi tərəfindən seçilmiş dəyəri göndərir, arduino onu deşifr edə və servo verilmiş mövqeyə keçirə bilər

Addım 2: PCB dizaynı

PCB dizaynı
PCB dizaynı
PCB dizaynı
PCB dizaynı
PCB dizaynı
PCB dizaynı

Mən 2 PCB hazırladım - biri əsas nəzarət üçün, arduino və pinlər üçün servo üçün, ikincisi isə potensiometrlər. 2 PCB -nin səbəbi, robot qolunu etibarlı məsafədən idarə etmək istəməyimdir. Hər iki sxem müəyyən bir uzunluqdakı kabel ilə bağlıdır - mənim vəziyyətimdə 80 sm.

Güc mənbəyi üçün xarici adapter seçdim, çünki istifadə etdiyim servolar arduinonun verə biləcəyindən daha çox enerji istehlak edir. Gördüyünüz kimi, hələ qeyd etmədiyim bəzi kondansatörlər var. Filtr üçün istifadə olunan kondansatörlərdir. İndi bildiyiniz kimi, servo motor qısa impulslarla idarə olunur. Bu impulslar, əvvəllər 0-5 volt aralığında olan gerilim düşmələrini və potansiometrlərin indi daha kiçik diapazonda olmasını təmin edə bilər. Bu o deməkdir ki, orta pimdəki gərginlik dəyişir və arduino bu dəyəri alır və servo motorun mövqeyini dəyişir. Bu sonsuza qədər davam edə bilər və bəzi paralel kondansatörlərin tədarükə paralel olaraq aradan qaldırıla biləcəyi arzuolunmaz salınımlara səbəb olur.

Addım 3: PCB hazırlamaq

PCB istehsalı
PCB istehsalı
PCB istehsalı
PCB istehsalı
PCB istehsalı
PCB istehsalı

PCB hazırlamaq üçün bunu oxumağı məsləhət görürəm.

Parlaq kağız üzərində Dəmir üsulundan istifadə etdim və çox yaxşı nəticə verdi.

Sonra hissələri PCB -də lehimlədim. Gələcəkdə ehtiyacım olacağı təqdirdə arduino yuvasından istifadə etdiyimi görə bilərsiniz.

Addım 4: Qolun dizaynı

Qol dizaynı
Qol dizaynı
Qol dizaynı
Qol dizaynı
Qol dizaynı
Qol dizaynı

Bu, bu layihəni həyata keçirməyin ən çətin hissəsi deyildi.

Bütün qurğular 4 hissənin hərəkət etmədiyi 8 hissədən - potensiometrlər üçün qutu və arduinonun yerləşdiyi bazadan - digər dörd hissəsi qolun özüdür. Dizaynın olduqca intuitiv və bir şəkildə sadə olması istisna olmaqla, çox detallara girməyəcəyəm. Parçalar siyahısına daxil edəcəyim xüsusi PCB və servolarımı uyğunlaşdırmaq üçün hazırlanmışdır.

Addım 5: Parçaları çap edin

Parçaların çapı
Parçaların çapı
Parçaların çapı
Parçaların çapı
Parçaların çapı
Parçaların çapı

Parçalar Prusa printerində çap edildi. Bəzi üzləri bir az zımpara etmək və çuxurlar qazmaq lazım idi. Həm də dəstəkləyici sütunların sökülməsi lazım idi.

Addım 6: Hamısını bir araya gətirmək

Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək

Başlıq dediyi kimi bu addımda hamısını bir araya gətirdim.

Əvvəlcə potansiyometrlərdə, sonra isə PCB -də telləri lehimlədim. Potansiyometrlər çuxurlara gözəl uyğunlaşdı və PCB -ni qutunun altına yazılmış sütunlara yapışdırdım. Lövhədə və qutuda deliklər qaza bilərsiniz, amma yapışdırmanın kifayət qədər çox olduğunu öyrəndim. Sonra qutunun hər iki hissəsini bağladım və hazırladığım deliklərə uyğun olan 4 vida ilə möhkəmləndirdim.

Növbəti addım olaraq hər iki lövhəni birləşdirmək üçün düz lent kabeli hazırladım.

Əsas qutuda telləri VCC bağlayıcı pinindən keçmək üçün, sonra taxtanın Vcc -ə və GND -dən konnektora GND -ə lehimlədim. Sonra konnektoru isti yerə yapışdırdım və sütunlara taxtaya taxdım. Bağlayıcı birbaşa çuxura daxil olur, buna görə isti yapışqan lazım deyil.

Sonra vintlərdən istifadə edərək alt servonu qutunun altına bağladım.

Bundan sonra qutunun yuxarı hissəsini alt hissəyə qoydum və potensiometr qutusundakı kimi 4 vintlə bağladım.

Növbəti hissə bir az çətin idi, amma qolun qalan hissəsini müxtəlif qoz -fındıq və yastıqlarla bir araya gətirməyi bacardım və hissələr arasında bəzi tolerantlıqlar hazırladığım üçün gözlədiyim qədər sıx deyildim, buna görə onlarla işləmək daha asandır.

Və son addım olaraq qutuların altına bir az lent qoydum, əks halda sürüşəcəklər.

Addım 7: Arduino proqramlaşdırılması

Arduino proqramlaşdırma
Arduino proqramlaşdırma
Arduino proqramlaşdırma
Arduino proqramlaşdırma
Arduino proqramlaşdırma
Arduino proqramlaşdırma

Layihənin arxasında proqramın nəzəri olaraq necə işlədiyini qeyd etdim, amma onu daha da parçalayacağam.

Beləliklə, əvvəlində bəzi dəyişənləri təyin etməliyik. Əsasən 4 dəfə kopyalanır, çünki 4 servomuz var və fikrimcə proqramı bir az qısaltmaq üçün daha mürəkkəb məntiq etmək lazım deyil.

Sonra servo pinlərinin təyin olunduğu boş bir quraşdırma var.

Sonra boşluq döngəsi var - proqramın sonsuz döngələri olan bir hissəsi. Bu hissədə proqram, potansiyometr ölçüsündən dəyəri alır və çıxışa qoyur. Ancaq bir problem var ki, potensialiometrdən dəyər bir qədər sıçrayır, buna görə son 5 dəyərin ortasını təşkil edən bir filtr əlavə etməli idim və sonra çıxdı. Bu, arzuolunmaz titrəmələrin qarşısını alır.

Proqramın son hissəsi serial portundan məlumatları oxuyur və göndərilən məlumatlara əsasən nə edəcəyinə qərar verir.

Kodu tam başa düşmək üçün rəsmi arduino saytlarını ziyarət etməyi təklif edirəm.

Addım 8: Pythonda proqramlaşdırma

Python proqramlaşdırma
Python proqramlaşdırma
Python proqramlaşdırma
Python proqramlaşdırma
Python proqramlaşdırma
Python proqramlaşdırma

Bu layihənin bu hissəsi lazım deyil, amma düşünürəm ki, bu layihəyə daha çox dəyər verir.

Python, istifadəsi pulsuz olan bir çox kitabxana təklif edir, amma bu layihədə yalnız tkinter və serial istifadə edirəm. Tkinter, GUI (Qrafik İstifadəçi Arayüzü) üçün istifadə olunur və adının dediyi kimi serial serial ünsiyyət üçün istifadə olunur.

Bu kod, minimum dəyəri 0 və maksimum 180 olan 4 sürgü ilə GUI yaradır. Bunun dərəcə olduğunu və hər kaydırıcının bir servoya nəzarət etmək üçün proqramlaşdırıldığını göstərə bilərsiniz. Bu proqram olduqca sadədir - dəyəri alır və arduinoya göndərir. Amma göndərmə yolu maraqlıdır. İlk servonun dəyərini 123 dərəcəyə dəyişməyi seçsəniz, 1123 arduino dəyərinə göndərilir. Göndərilən hər nömrənin ilk nömrəsi hansı servonun idarə olunacağını bildirir. Arduino'da bunun deşifrini edə biləcək və düzgün servo hərəkət etdirə biləcək bir kod var.

Addım 9: hissələrin siyahısı

Parçaların siyahısı
Parçaların siyahısı
  • Arduino Pro Mini 1 ədəd
  • Servo FS5106B 1 ədəd
  • Servo Futaba S3003 2 ədəd
  • Pin başlığı 2x5 1 ədəd
  • Pin başlığı 1x3 6 ədəd
  • Kondansatör 220 uF 3 ədəd
  • Micro Servo FS90 1 ədəd
  • AWP-10 bağlayıcı 2 ədəd
  • Bağlayıcı FC681492 1 ədəd
  • P-B100G1 keçid 1 ədəd
  • Soket 2x14 1 ədəd
  • TTL-232R-5v-çevirici 1 ədəd
  • Potensialiometr B200K 4 ədəd
  • və daha çox vintlər, yastıqlar və qoz -fındıq

Addım 10: Son Fikirlər

Bunu oxuduğunuz üçün təşəkkür edirəm və ümid edirəm ki, heç olmasa sizi motivasiya etdim. Bu, internetdən və ilk təlimat yazılarından heç nə kopyalamadan özüm hazırladığım ilk böyük layihəmdir. Qolun təkmilləşdirilə biləcəyini bilirəm, amma indidən razıyam. Bütün hissələr və mənbə kodları pulsuzdur, ondan istifadə edib istədiyiniz şəkildə dəyişdirə bilərsiniz. Hər hansı bir sualınız varsa, şərh bölməsində soruşmaqdan çekinmeyin. Videolara da baxa bilərsiniz, keyfiyyəti yüksək deyil, amma layihənin funksionallığını göstərir.

Tövsiyə: