Mündəricat:

Arduino Uno mili və addım motoru ilə: 19 addım
Arduino Uno mili və addım motoru ilə: 19 addım

Video: Arduino Uno mili və addım motoru ilə: 19 addım

Video: Arduino Uno mili və addım motoru ilə: 19 addım
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Iyul
Anonim
Image
Image
İstifadə olunan mənbələr
İstifadə olunan mənbələr

Bu gün mexanika və mekatronikada çox vacib bir mövzu haqqında danışacağıq: maşınların elementləri. Bu yazıda, bəzi maraqlı xüsusiyyətlərə və tətbiqlərə malik olan millərə xüsusi olaraq toxunacağıq. Yenə də bir milin səbəb olduğu hərəkəti hesablamağın və sınaq qurğusunun təqdim edilməsinin bəzi yollarını nümayiş etdirəcəyik.

2 mm -lik və 8 mm -lik bir milin irəliləməsini ortaya çıxaran montajı aşağıda hazırladım. İstifadə etdiyim bu TR8 iş mili, xüsusən Z oxunda kiçik marşrutlaşdırıcılarda və 3D printerlərdə istifadə olunur. Burada işləyəcəyimiz bəzi anlayışları mənimsəyərək hər cür maşın dizayn edə biləcəyinizi xatırlayaraq.

Addım 1: İstifadə olunan mənbələr

  • Trapezoid mili 8 mm diametrdə və 2 mm aralığa malikdir
  • Trapezoid mili 8 mm diametrdə və 8 mm meydançada
  • 8x2 mil flanşlı şabalıd
  • 8x8 mil flanşlı şabalıd
  • 8 mm diametrli millər üçün rulmanlar
  • 10 mm diametrli xətti silindrik bələdçi
  • 10 mm təlimatlar üçün silindrik rulmanlar
  • 10 mm silindrik təlimatlar üçün mötərizələr
  • NEMA 17 Motors
  • Şaft kuplajları
  • Arduino Uno
  • Sürücü DRV8825
  • 4x4 matrisli klaviatura
  • Nokia 5110 ekran
  • Müxtəlif plastik hissələr
  • Boltlar və qoz -fındıq
  • Taxta baza
  • Xarici 12V enerji təchizatı

Addım 2: İş mili haqqında - bunlar nədir?

Millər haqqında - bunlar nədir?
Millər haqqında - bunlar nədir?

Millər vintlər kimi maşınların elementləridir. Yəni, davamlı addımların iplərindən əmələ gələn düz çubuqlardır. Xətti hərəkət və yerləşdirmə tələb edən mexanizmlərdə istifadə olunur. Yüksək çəkmə və sıxılma qüvvələri tətbiq edə və tork ötürə bilərlər. Avtomatik kilidləmə ilə hərəkət etməyə imkan verir. Ən çox yayılmış alüminium və polad olmaqla, müxtəlif materiallardan tikilə bilər.

Çin şirkətləri trapezoid mili istehsal etdikləri üçün, tanınmış qoz-fındıq yerinə bu cür məhsul almağı təklif edərdim. Bu, daha cəlbedici qiymət və çirkin hesab etdiyim sürüklənmədən qaynaqlanır.

Fotoda, mənim fikrimcə, dövriyyəli top mili olan ən yaxşı mili qoydum. Adətən çox sərt bir poladdan hazırlanır və toplar şabalıdın içərisində fırlanır. Mükəmməl həssaslığın yanında, dayanıqlığı da vurğulayıram, çünki bu tip iş mili mexanizmə zərər vermədən milyardlarla hərəkəti təkrarlaya bilər. Burada istifadə etdiyimiz daha ucuz bir seçim trapezoid mildir.

Addım 3: Millər haqqında - Tək və Bilyalı İplər

İş mili haqqında - Tək və Toplu İplər
İş mili haqqında - Tək və Toplu İplər

Soldakı fotoşəkildə top millərinin, topların yuvarlandığı yarımdairəvi kanalları var. Tək vintli millərə nisbətən daha bahalıdırlar və aşağı sürtünmə qabiliyyətinə malikdirlər ki, bu da daha yüksək məhsuldarlığa (yuvarlanan sürtünmə) səbəb olur.

Şəklin sağ tərəfindəki tək yivli millər ümumiyyətlə trapez profillərə malikdir, çünki bu həndəsə eksenel istiqamətdə qüvvələr tətbiq etmək və hərəkətin hamar ötürülməsi üçün daha uyğundur. Nisbətən ucuzdur və kürə mili dövriyyəsi ilə müqayisədə yüksək sürtünmə qabiliyyətinə malikdir, bu da aşağı məhsuldarlığa, yəni sürüşmə sürtünməsinə səbəb olur.

Addım 4: İş mili haqqında - Proqramlar

Mil haqqında - Tətbiqlər
Mil haqqında - Tətbiqlər

Millər xətti hərəkətin lazım olduğu hər hansı bir mexanizmə tətbiq oluna bilər. Sənayedə maşın və proseslərdə geniş istifadə olunur.

Bəzi tətbiqlərə daxildir:

  • Yük liftləri
  • Preslər
  • Çiyələk və torna
  • CNC avadanlığı
  • Sarma Maşınları
  • 3D printerlər
  • Lazer kəsmə və kəsmə avadanlığı
  • Sənaye prosesləri
  • Yerləşdirmə və xətti hərəkət sistemləri

Addım 5: İş mili haqqında - Parametrlər

Mil haqqında - Parametrlər
Mil haqqında - Parametrlər

Bir mexanizm dizayn edərkən nəzərə alınmalı olan bir milin bir neçə xüsusiyyəti var. Diametrinə və meydançasına əlavə olaraq, sıxılma gücünü, ətalət momentini (fırlanma vəziyyətində dəyişməyə müqavimət), konstruktiv materialı, məruz qalacağı fırlanma sürətini, iş istiqamətini (üfüqi) tanımaq lazımdır. və ya şaquli), tətbiq olunan yük, digərləri arasında.

Ancaq artıq qurulmuş mexanizmlərə əsaslanaraq bu parametrlərdən bir neçəsini mənimsəyə bilərik.

Gəlin bəzi ümumi yaxşılıqları tanıyaq. STEP ilə başlayaq.

Addım 6: İş mili haqqında - Addım (yerdəyişmə və sürət)

İş mili haqqında - addım (yerdəyişmə və sürət)
İş mili haqqında - addım (yerdəyişmə və sürət)

Hər inqilabda qozun keçdiyi uzunluğu təyin edir. Bu ümumiyyətlə mm / inqilabda olur.

Bir inqilabda 2 mm -lik bir iş mili, hər işdə 2 mm -lik bir yerdəyişməyə səbəb olacaq. Bu, qozun xətti sürətinə təsir edəcək, çünki fırlanma sürətinin artması ilə zaman vahidi üzrə inqilabların sayı artacaq və nəticədə gedilən məsafə də artacaq.

Bir inqilabda 2 mm dönmə 60 RPM -də dönərsə (saniyədə bir inqilab), qoz saniyədə 2 mm -də hərəkət edəcək.

Addım 7: Quraşdırma

Məclis
Məclis
Məclis
Məclis

Məclisimizdə iki mühərrikim və ekrana malik bir klaviaturam var ki, bu da kalkulyatora bənzəyirdi, çünki onlar üçün 3D printerdə örtük düzəltmişəm. Nokia ekranında aşağıdakı seçimlər var:

F1: Crescent - Fuso indiki mövqedən təyin etdiyim mövqeyə keçir

F2: Azalan - Dönün

F3: Sürət - Nəbz genişliyini dəyişə bilərəmmi?

F4: ESC

Addım 8: Montaj - Materiallar

Montaj - Materiallar
Montaj - Materiallar

A - 10 mm xətti bələdçilər

B - 2 və 8 mm -lik trapezoid millər

C - Qazma Bazası

D - mil üçün yataklar

E - Bələdçi sahibləri

F - şabalıd

G - yataklar

H - Kaplinlər

I - Mühərriklər

J - Müxtəlif plastik hissələr (kursorlar, mühərrik mötərizələri, takozlar, klaviatura dəstəyi və ekran

Addım 9: Montaj - Addım 01

Montaj - Addım 01
Montaj - Addım 01

Baza (C) qazıldıqdan sonra iki mühərriki (I) yığırıq. Onları bağlamaq üçün 3D printerdə (J) hazırlanmış mötərizələrdən istifadə edirik. Bu yerləşdirmə mərhələsindəki vintləri sıxmayın. Bu, hizalama addımında lazımi düzəlişlərə imkan verəcəkdir.

Addım 10: Montaj - Adım 02

Montaj - Addım 02
Montaj - Addım 02

Baza (C) qazıldıqdan sonra, bələdçi raylarını (E) və yataqları (D) yerləşdirin. Rulmanların hündürlüyünü tənzimləmək üçün istifadə olunan plastik şal (J) üçün detal.

Addım 11: Montaj - Addım 03

Montaj - Addım 03
Montaj - Addım 03

Rulmanı (G) qozla (F) bağlamaq üçün çap olunmuş bir hissədən istifadə edərək bir kursor yaradırıq. Biri sağa, digəri sola iki kursor istifadə etdik. İşinin mili səbəb olduğu yerdəyişməsini təyin etmək istədiyimiz zaman mövqeyi miqyasda göstərməkdir.

Addım 12: Montaj - Adım 04

Montaj - Addım 04
Montaj - Addım 04
Montaj - Addım 04
Montaj - Addım 04

Kılavuzu (A) və mili (B) mühərrikin qarşısındakı müvafiq yatağına (D) və dayağına (E) daxil edin, sonra bələdçini və mili rulmana (G) və şabalıdı (F) daxil edin. milin ucunu bağlayıcıya (H) daxil edirik. İkisini də son nöqtələrinə çatana qədər götürürük (əks dəstək və motor).

Daha sonra tənzimləməyə imkan vermək üçün vintləri yüngülcə sıxın. Qalan bələdçi və mili istifadə edərək proseduru təkrarlayın. Bütün komponentlər yerləşdirildikdə, mexaniki montaj mərhələsini bitirib hissələrin hizalanmasını həyata keçiririk.

Addım 13: Montaj - Elektronika

Montaj - Elektronika
Montaj - Elektronika
Montaj - Elektronika
Montaj - Elektronika
Montaj - Elektronika
Montaj - Elektronika

Çap olunmuş plastik tutacaqdan istifadə edərək Nokia 5110 displeyi və 4x4 matrisli klaviatura təmin etdik. Stendin aşağı hissəsində sürücü DRV8825 olan Arduino Uno yerləşəcək.

Baza içərisində mövcud olan qazmağı istifadə edərək, montajı bağlayırıq.

Addım 14: Elektrik Şeması

Elektrik Sxemi
Elektrik Sxemi

Bağlama diaqramı sadədir. DRV8825 və eyni iki 17 aynamız var, yəni birinə göndərdiyimiz addım digərinə gedir. Mühərriklərdən birində 8 mm -lik, digərində isə 2 mm -lik bir mili var. Aydındır ki, 8 mm mili olan birincisi daha sürətli gedir. Hələ də diaqramda ekran və matris olması lazım olan 4x4 klaviatura var.

Addım 15: Mənbə Kodu

Kitabxanaların daxil edilməsi və obyektlərin yaradılması

Burada etdiyim bir Lib var, StepDriver.h. 8825, 4988 və TB6600 sürücüləri üçün hazırlanmışdır. Bu addımda DRV8825, d1 obyektini yaradıram.

// Biblioteca cavablandırmaq üçün heç bir məlumat yoxdur #daxil edin // Biblioteca cavabları #qrafiki göstərin #daxil edin // Biblioteca cavabları göstərin #daxil edin // Configuracao de pinos do Display // pin 6 - Serial saatı bitdi (SCLK) // pin 5 - Serial məlumat çıxışı (DIN) // pin 4 - Məlumat/Komanda seçimi (D/C) // pin 3 - LCD çip seçimi (CS/CE) // pin 2 - LCD sıfırlama (RST)) Adafruit_PCD8544 ekran = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia ya sürücü DRV8825 DRV8825 d1;

Sabitlər və qlobal dəyişənlər

Kodun bu hissəsində başqa bir video dərsində (LINK KEYBOARD) öyrətdiyim matrisə baxıram. Yenə də məsafə və sürətdən başqa Keypad obyektindən bəhs edirəm.

const baytı LINHAS = 4; // nəhayət, baytar COLUNAS = 4; // nağıllar yığmaqla // SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; bayt PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1} baytlarının necə işlədiyini göstərir; // Klaviatura düymələri ilə əlaqəli məlumatlar göstərilir // Klaviatura, cavablar və ya xüsusi klaviatura düymələri üçün xüsusi düymələr Klaviatura = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // dəyişməz cavablar və ya xüsusi rəqəmsal dəyərlər; işarəsiz uzun məsafə = 0; işarəsiz uzun velosidad = 2000;

Klaviatura oxuma funksiyası

Bu addımda, artan və azalan çapı işlədən ekrana aid bir kodumuz var.

// Funcao Responsavel cavab verir ki, bu işin öhdəsindən gələ bilərik -------------------------------------- --- imzasız uzun lerValor () {// Escreve o submenu que coleta os valores heç bir display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (BEYAZ); display.print ("VALOR"); display.setTextColor (SİYAH); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (BEYAZ); display.print ("CLR"); display.setTextColor (SİYAH); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (BEYAZ); display.print ("F4"); display.setTextColor (SİYAH); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); String şücaət = ""; char tecla = yanlış;

düymənin basılmasını gözləyir

Burada Loop proqramlaşdırmasını, yəni dəyərləri daxil etdiyinizi izah edirik.

// Loop infinito enquanto nao chamar o return while (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Se 1 -də 9 və ya daha çox '1' halda: '2': case '3': case '4': case '5': case '6': dava '7': dava '8': hal '9': hal '0': şücaət = = tecla; display.print (tecla); display.display (); fasilə; // 'c' düyməsini basmaqla CLR -ə baxın: // Bir simli şücaət cəsarət = ""; // Apala o valor do display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); fasilə; // "E" düyməsini basmaqla ENT -ə baxın: // Geri dönmə valor.toInt (); fasilə; // Se 'fla F4 (ESC)' D 'düyməsinə basaraq: qaytar -1; standart: fasilə; }} // Limpa o char tecla tecla = false; }}

Motor sürücülük funksiyası

Bu addımda "hərəkət et" funksiyası üzərində işləyirik. Nəbz sayını və istiqaməti alıram və sonra "üçün" edirəm.

// Funcao motor tərəfindən idarə olunan mühərrik -------------------------------------- boşluq daşıyıcısı (imzasız uzun pulsos, bool direcao) {üçün (işarəsiz uzun i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

qurmaq ()

İndi ekranı və sürücü konfiqurasiyasını hərəkətə keçirirəm və hətta asanlaşdırmaq üçün pin kodunu mənbə kodunun içinə qoyuram. Müəyyən dəyərləri işə salıram və parametrləri yaradan metodlarla məşğul oluram.

void setup () {// Configuracao display ---------------------------------------- -------- göstər.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (SİYAH); // Sürücü DRV8825-i konfiqurasiya edin ----------------------------------------- // pin GND - Enable (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Sleep (SLP) // pin 8 - Step (STP)) // pin 7 - İstiqamət (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.yuxu (LOW); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1 -ci hissə - Rəsm menyusu

void loop () {// Escreve o Menu do Programa no display ----------------------------------- display.learDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (BEYAZ); display.print ("F1"); display.setTextColor (SİYAH); display.setCursor (17, 2); display.print ("HİLAL"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (BEYAZ); display.print ("F2"); display.setTextColor (SİYAH); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (BEYAZ); display.print ("F3"); display.setTextColor (SİYAH); display.setCursor (17, 26); display.print ("VELOCIDADE");

loop () - Part 2 - Rəsm menyusu

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (BEYAZ); display.print ("F4"); display.setTextColor (SİYAH); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = yalan;

loop () - Part 3 - Çalışır

// Loop enquanto a tecla F4 (ESC) nao for pressionada while (! Esc) {// captura a tecla pressionada do customladKey = customKeypad.getKey (); // "customKey" düyməsinə basdıqda (// a) açma açarına (customKey) {// "A" düyməsinə basaraq F1 düyməsini basın: distancia = lerValor (); // ESC düyməsini basın, əgər (məsafə == -1) {esc = doğru; } başqa {// "Movendo" ekranını yoxlayın. display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BEYAZ); display.print ("MOVENDO"); display.setTextColor (SİYAH); display.setCursor (2, 14); ekran. çap (distanciya); display.print ("Passos"); display.display ();

loop () - Part 4 - Çalışır

// Maşın hərəkət etdiricisini hərəkət etdirin (distanciya, LOW); // Volta ao menyu esc = doğru; } fasilə; // "F" düyməsinə basmaqla F2: distancia = lerValor (); // ESC düyməsini basın, əgər (məsafə == -1) {esc = doğru; } başqa {// "Movendo" ekranını yoxlayın. display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BEYAZ); display.print ("MOVENDO"); display.setTextColor (SİYAH); display.setCursor (2, 14); ekran. çap (distanciya); display.print ("Passos"); display.display ();

loop () - Part 5 - Çalışır

// Maşın hərəkət etdiricisini hərəkətə gətirin (distancia, HIGH); // Volta ao menyu esc = doğru; } fasilə; // "C" düyməsini basmaqla F3 düyməsini basın: velocidade = lerValor (); əgər (velocidade == -1) {esc = true; } başqa {// "Velocidade" ekranını yoxlayın. display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (BEYAZ); display.print ("VELOCIDADE"); display.setTextColor (SİYAH); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");

loop () - Part 6 - Çalışır

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (BEYAZ); display.println ("Tamam!"); display.setTextColor (SİYAH); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); gecikmə (2000); // Volta ao menyusu esc = doğru; } fasilə; // "D" düyməsini basmaq üçün F4 (ESC) düyməsini basın: // "c" düyməsini basın: // "e" düyməsini basın: // Volta ao menu esc = true; standart: fasilə; }} // Xüsusiyyətlər xüsusi CustomKey customKey = saxta; }}

Addım 16: İş mili haqqında - Maşın Konfiqurasiyaları

Mil haqqında - Maşın Konfiqurasiyaları
Mil haqqında - Maşın Konfiqurasiyaları

Məsələn, 3D printerlər və marşrutlaşdırıcılar kimi CNC maşınlarında, yerləşdirmə nəzarətindən məsul olan proqram, step motoruna verilən impuls sayına görə hərəkətlərin necə baş verəcəyini bilməlidir.

Step motor sürücüsü mikro addımların tətbiqinə icazə verərsə, istehsal edilən yerdəyişmənin hesablanmasında bu konfiqurasiya nəzərə alınmalıdır.

Məsələn, bir inqilab üçün 200 addımlı bir motor 1/16 olaraq təyin edilmiş bir sürücüyə bağlıdırsa, mili bir dəfə çevirmək üçün 16 x 200 zərbə, yəni hər bir inqilab üçün 3200 puls lazım olacaq. Bu mili bir inqilabda 2 mm -lik bir addım varsa, qozun 2 mm hərəkət etməsi üçün sürücüdə 3200 zərbə lazımdır.

Əslində, proqram nəzarətçiləri bu nisbəti, "millimetrdə nəbz sayı" və ya "addımlar / mm" təyin etmək üçün bir səbəbdən istifadə edirlər.

Addım 17: Marlin

Marlin
Marlin

Məsələn, Marlində @bölmə hərəkəti hissəsində görürük:

/ **

* Vahid Başına Eksen Adımları (addımlar / mm)

* M92 ilə ləğv edin

* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]

* /

#DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100} təyin edin

Bu nümunədə, X və Y oxlarının 1 mm hərəkət etmək üçün 80 impuls dəqiqliyinə malik olduğu qənaətinə gələ bilərik, Z üçün 3200 zərbə, E0 ekstruderə 100 ehtiyac var.

Addım 18: GRBL

GRBL
GRBL

Aşağıda GRBL konfiqurasiya əmrlərini görürük. 100 dollar əmri ilə X oxunda bir millimetrlik ofsetə səbəb olan zərbələrin sayını tənzimləyə bilərik.

Aşağıdakı nümunədə cari dəyərin mm başına 250 puls olduğunu görə bilərik.

Y və Z oxları müvafiq olaraq $ 101 və $ 102 olaraq təyin edilə bilər.

Tövsiyə: