Isi kandungan:

Arduino Uno Dengan Spindle and Pitch Motor: 19 Langkah
Arduino Uno Dengan Spindle and Pitch Motor: 19 Langkah

Video: Arduino Uno Dengan Spindle and Pitch Motor: 19 Langkah

Video: Arduino Uno Dengan Spindle and Pitch Motor: 19 Langkah
Video: Как работает шаговый двигатель? 2024, Julai
Anonim
Image
Image
Sumber Yang Digunakan
Sumber Yang Digunakan

Hari ini kita akan membincangkan subjek yang sangat penting dalam mekanik dan mekatronik: elemen mesin. Dalam artikel ini, kami secara khusus akan membahas spindle, yang menampilkan beberapa ciri dan aplikasi menarik. Namun, kami akan menunjukkan beberapa cara untuk mengira pergerakan yang disebabkan oleh gelendong dan membentangkan kumpulan ujian.

Oleh itu, saya membuat pemasangan di bawah ini, yang memperlihatkan kemajuan gelendong 2mm dan 8mm yang lain. Gelendong TR8 ini saya gunakan biasanya digunakan pada router kecil dan pencetak 3D, terutama pada sumbu Z. Mengingat bahawa dengan menguasai beberapa konsep yang akan kita kerjakan di sini, anda akan dapat merancang sebarang jenis mesin.

Langkah 1: Sumber yang Digunakan

  • Gelendong trapezoid berdiameter 8mm dan nada 2mm
  • Gelendong trapezoid berdiameter 8mm dan pitch 8mm
  • Berangan 8x2 gelendong gelendong
  • Berangan 8x8 gelendong gelendong
  • Galas untuk gelendong berdiameter 8mm
  • Panduan silinder linear berdiameter 10mm
  • Galas roller silinder untuk panduan 10mm
  • Kurungan untuk panduan silinder 10mm
  • NEMA 17 Motor
  • Gandingan aci
  • Arduino Uno
  • Pemandu DRV8825
  • Papan kekunci matriks 4x4
  • Paparkan Nokia 5110
  • Bahagian plastik lain-lain
  • Selak dan mur
  • Pangkalan kayu
  • Bekalan kuasa 12V luaran

Langkah 2: Mengenai Spindle - Apa Itu?

Mengenai Spindles - Apa Itu?
Mengenai Spindles - Apa Itu?

Gelendong adalah unsur mesin, seperti skru. Artinya, mereka adalah batang lurus yang dibentuk oleh benang dari langkah berterusan. Mereka digunakan dalam mekanisme yang memerlukan pergerakan dan kedudukan linier. Mereka boleh menggunakan daya tegangan dan mampatan yang tinggi dan menghantar daya kilas. Mereka membenarkan pergerakan dengan penguncian automatik. Mereka boleh dibina dari bahan yang berbeza, menjadi aluminium dan keluli yang paling biasa.

Oleh kerana syarikat China mengeluarkan gelendong trapezoid, saya cadangkan anda mendapatkan jenis produk ini dan bukannya baut kacang yang terkenal. Ini disebabkan oleh harga dan tarikan yang lebih menarik, yang saya anggap mengerikan.

Dalam foto saya meletakkan gelendong terbaik yang, pada pendapat saya, adalah gelendong bola yang dikitar semula. Biasanya terbuat dari keluli yang sangat keras, dan bola berputar di sekitarnya, di dalam chestnut. Selain ketepatan yang hebat, saya juga menonjolkan ketahanannya, kerana gelendong jenis ini dapat menghasilkan ulang gerakan berjuta-juta tanpa merosakkan mekanisme. Pilihan yang lebih murah, yang kami gunakan di sini, adalah gelendong trapezoid.

Langkah 3: Mengenai Gelendong - Benang Tunggal dan Bola

Mengenai Gelendong - Benang Tunggal dan Bola
Mengenai Gelendong - Benang Tunggal dan Bola

Gelendong bola, di foto di sebelah kiri, memiliki kanal separuh bulatan di mana bola bergulung. Mereka lebih mahal dan mempunyai geseran rendah berbanding gelendong skru tunggal, menghasilkan hasil yang lebih tinggi (geseran bergulir).

Gelendong berulir tunggal di sebelah kanan gambar biasanya mempunyai profil trapezoid, kerana geometri ini lebih sesuai untuk menerapkan daya pada arah paksi dan transmisi pergerakan yang lancar. Mereka relatif murah dan geseran tinggi dibandingkan dengan gelendong bola yang beredar semula, yang menghasilkan hasil rendah, yaitu geseran tergelincir.

Langkah 4: Mengenai Spindle - Aplikasi

Mengenai Spindles - Aplikasi
Mengenai Spindles - Aplikasi

Spindle dapat diterapkan pada mekanisme apa pun yang memerlukan gerakan linear. Mereka digunakan secara meluas dalam industri dalam mesin dan proses.

Beberapa aplikasi merangkumi:

  • Pengangkutan kargo
  • Tekan
  • Strawberi dan pelarik
  • Peralatan CNC
  • Mesin Pembungkus
  • Pencetak 3D
  • Peralatan Pemotongan & Pemotongan Laser
  • Proses perindustrian
  • Sistem pergerakan kedudukan dan linear

Langkah 5: Mengenai Spindle - Parameter

Mengenai Spindles - Parameter
Mengenai Spindles - Parameter

Terdapat beberapa ciri gelendong yang mesti diambil kira semasa merancang mekanisme. Sebagai tambahan kepada diameter dan nada, perlu mengenali kekuatan mampatannya, momen inersia (ketahanan terhadap perubahan dalam keadaan putarannya), bahan konstruktif, kelajuan putaran yang akan dikenakan, arah operasi (mendatar atau menegak), beban yang dikenakan antara lain.

Tetapi, berdasarkan mekanisme yang telah dibina, kita dapat memasukkan beberapa parameter ini.

Mari kenali kebaikan bersama. Mari mulakan dengan LANGKAH.

Langkah 6: Mengenai Spindle - Langkah (anjakan dan Kelajuan)

Mengenai Spindles - Langkah (anjakan dan Kelajuan)
Mengenai Spindles - Langkah (anjakan dan Kelajuan)

Menentukan panjang yang dilalui kacang pada setiap revolusi. Ini biasanya dalam mm / revolusi.

Gelendong 2 mm per revolusi akan menyebabkan anjakan 2 mm pada setiap putaran yang dilakukan oleh gelendong. Ini akan mempengaruhi kelajuan linear kacang, kerana dengan peningkatan kecepatan putaran, jumlah putaran per unit waktu akan meningkat dan akibatnya jarak perjalanan juga.

Sekiranya putaran 2mm per revolusi berputar pada 60 RPM (satu putaran sesaat), kacang akan bergerak pada 2mm sesaat.

Langkah 7: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan

Dalam pemasangan kami, saya mempunyai dua motor dan papan kekunci kami dengan paparan, yang kelihatan seperti kalkulator, kerana saya membuat penutup untuknya dalam pencetak 3D. Pada paparan Nokia kami mempunyai pilihan berikut:

F1: Crescent - Fuso bergerak dari kedudukan semasa ke kedudukan yang saya tentukan

F2: Menurun - Pusing

F3: Kelajuan - Bolehkah saya menukar lebar nadi

F4: ESC

Langkah 8: Pemasangan - Bahan

Pemasangan - Bahan
Pemasangan - Bahan

Panduan Linear A - 10mm

B - Gelendong trapezoid langkah 2 dan 8mm

C - Pangkalan Penggerudian

D - Galas untuk gelendong

E - Pemegang panduan

F - Kekacang

G - Galas

H - Gandingan

I - Mesin

J - Pelbagai bahagian plastik (kursor, pendakap mesin, baji, sokongan papan kekunci dan paparan

Langkah 9: Perhimpunan - Langkah 01

Perhimpunan - Langkah 01
Perhimpunan - Langkah 01

Setelah penggerudian dasar (C), kami memasang dua motor (I). Untuk mengikatnya, kami menggunakan tanda kurung yang dibuat pada pencetak 3D (J). Jangan mengetatkan skru pada langkah penentuan kedudukan ini. Ini akan memungkinkan penyesuaian yang diperlukan dalam langkah penjajaran.

Langkah 10: Perhimpunan - Langkah 02

Perhimpunan - Langkah 02
Perhimpunan - Langkah 02

Masih mengikuti penggerudian dasar (C), letakkan rel panduan (E) dan galas (D). Perincian untuk plastik shim (J) yang digunakan untuk menyesuaikan ketinggian galas.

Langkah 11: Pemasangan - Langkah 03

Pemasangan - Langkah 03
Pemasangan - Langkah 03

Kami membuat kursor menggunakan bahagian yang dicetak untuk menghubungkan galas (G) ke mur (F). Kami menggunakan dua kursor, satu kanan ke kiri. Fungsinya adalah untuk menunjukkan posisi pada skala setiap kali kita ingin menentukan anjakan yang disebabkan oleh gelendong.

Langkah 12: Perhimpunan - Langkah 04

Perhimpunan - Langkah 04
Perhimpunan - Langkah 04
Perhimpunan - Langkah 04
Perhimpunan - Langkah 04

Masukkan pemandu (A) dan gelendong (B) pada galas masing-masing (D) dan sokongan (E), bertentangan dengan motor, kemudian masukkan panduan dan gelendong di galas (G) dan chestnut (F) dan di hujung gelendong kami juga memasukkan pengganding (H). Kami membawa mereka berdua sehingga mereka mencapai titik akhir (sokongan dan motor bertentangan).

Kencangkan skru dengan perlahan untuk membolehkan penyesuaian kemudian. Ulangi prosedur menggunakan panduan dan gelendong yang tinggal. Dengan semua komponen diposisikan, kami melakukan penjajaran bahagian, menyelesaikan tahap pemasangan mekanikal.

Langkah 13: Pemasangan - Elektronik

Pemasangan - Elektronik
Pemasangan - Elektronik
Pemasangan - Elektronik
Pemasangan - Elektronik
Pemasangan - Elektronik
Pemasangan - Elektronik

Dengan menggunakan pemegang plastik bercetak, kami mengamankan paparan Nokia 5110 dan papan kekunci matriks 4x4. Di ruang bawah pendirian akan terdapat Arduino Uno, pemandu DRV8825.

Dengan menggunakan penggerudian yang ada di pangkalan, kami mengikat pemasangan.

Langkah 14: Skim Elektrik

Skim Elektrik
Skim Elektrik

Gambarajah pendawaian adalah ringkas. Kami mempunyai DRV8825 dan dua 17 17 cermin yang sama, iaitu, langkah yang sama yang kami kirimkan ke satu yang lain ke yang lain. Apa yang berubah ialah di salah satu mesin saya mempunyai gelendong 8mm dan gelendong 2mm yang lain. Jelas sekali, bahawa yang pertama, dengan gelendong 8mm, berjalan lebih cepat. Masih dalam rajah adalah paparan dan papan kekunci 4x4, yang harus matriks.

Langkah 15: Kod Sumber

Kemasukan perpustakaan dan penciptaan objek

Kami ada di sini Lib yang saya lakukan, iaitu StepDriver.h. Ia disediakan untuk pemacu 8825, 4988 dan juga TB6600. Saya buat pada langkah ini objek DRV8825, d1.

// Biblioteca responsável por capturar a tecla que foi pressionada no teclado # include // Biblioteca responsável pelos graficos do display #include // Biblioteca responsável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - Jam bersiri habis (SCLK) // pin 5 - Serial data out (DIN) // pin 4 - Data / Command select (D / C) // pin 3 - LCD chip select (CS / CE) // pin 2 - LCD reset (RST) Paparan Adafruit_PCD8544 = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

Pembolehubah pemalar dan global

Di bahagian kod ini, saya memperlakukan matriks, yang saya ajar dalam pelajaran video yang lain (LINK KEYBOARD). Namun, saya bercakap mengenai objek Pad Kekunci, selain jarak dan kelajuan.

const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // define uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; bait PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // pinos que indicam sebagai linhas do teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // pinos que indicam as colunas do teclado // instancia de Keypad, responsável por capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis por armazenar o valor digitado char customKey; jarak jauh yang tidak ditandatangani = 0; velocidade panjang yang tidak ditandatangani = 2000;

Fungsi membaca papan kekunci

Pada langkah ini kita memiliki kod yang merujuk pada tampilan, yang berfungsi meningkatkan dan menurunkan pencetakan.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- lerValor panjang yang tidak ditandatangani () {// Escreve o submenu que coleta os valores no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (PUTIH); display.print ("NILAI"); display.setTextColor (HITAM); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (PUTIH); display.print ("CLR"); display.setTextColor (HITAM); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (PUTIH); display.print ("F4"); display.setTextColor (HITAM); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); paparan.display (); String valor = ""; char tecla = palsu;

gelung menunggu kunci ditekan

Di sini kami menerangkan pengaturcaraan Loop, iaitu di mana anda memasukkan nilai.

// Loop infinito enquanto nao chamar o kembali sambil (1) {tecla = customKeypad.getKey (); jika (tecla) {switch (tecla) {// Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': kes '7': kes '8': kes '9': kes '0': nilai + = tecla; display.print (tecla); paparan.display (); rehat; // Se tecla CLR juga caseionada case 'c': // Limpa a string valor valor = ""; // Apaga o valor do display display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); paparan.display (); rehat; // Se tecla ENT juga kes kes 'e': // Retorna o valor return valor.toInt (); rehat; // Se tecla F4 (ESC) juga menekan kes 'D': return -1; lalai: rehat; }} // Limpa o char tecla tecla = false; }}

Fungsi pemacu motor

Fungsi "bergerak" diusahakan dalam langkah ini. Saya mendapat bilangan denyutan dan arah dan kemudian saya membuat "untuk".

// Funcao responsavel por mover o motor -------------------------------------- pengosong kosong (tidak ditandatangani long pulsos, bool direcao) {untuk (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

persediaan ()

Sekarang saya memindahkan paparan dan konfigurasi pemacu, dan saya bahkan memasukkan pin di dalam kod sumber untuk membuatnya lebih mudah. Saya memulakan nilai tertentu dan menangani kaedah yang menghasilkan tetapan.

batal persediaan () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (HITAM); // Configuração do Driver DRV8825 ----------------------------------------- // pin GND - Aktifkan (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Tidur (SLP) // pin 8 - Langkah (STP) // pin 7 - Arah (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1. tidur (RENDAH); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

gelung () - Bahagian 1 - Menu lukisan

gelung void () {// Escreve o Menu do Programa tiada paparan ----------------------------------- paparan.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (PUTIH); display.print ("F1"); display.setTextColor (HITAM); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (PUTIH); display.print ("F2"); display.setTextColor (HITAM); display.setCursor (17, 14); display.print ("PENGESAHAN"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (PUTIH); display.print ("F3"); display.setTextColor (HITAM); display.setCursor (17, 26); display.print ("VELOCIDADE");

gelung () - Bahagian 2 - Menu gambar

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (PUTIH); display.print ("F4"); display.setTextColor (HITAM); display.setCursor (17, 38); display.print ("ESC"); paparan.display (); bool esc = palsu;

gelung () - Bahagian 3 - Berlari

// Loop enquanto a tecla F4 (ESC) nao untuk pressionada sementara (! Esc) {// captura a tecla pressionada do teclado customKey = customKeypad.getKey (); // caso alguma tecla juga pressionada if (customKey) {// Trata a tecla apertada switch (customKey) {// Se tecla F1 juga pressionada case 'A': distancia = lerValor (); // Se tecla ESC juga pressionada jika (distancia == -1) {esc = true; } lain {// Dapatkan tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (PUTIH); display.print ("MOVENDO"); display.setTextColor (HITAM); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); paparan.display ();

gelung () - Bahagian 4 - Berlari

// Gerakkan penggerak motor (distancia, RENDAH); // Volta ao menu esc = true; } rehat; // Se tecla F2 juga kes kes 'B': distancia = lerValor (); // Se tecla ESC juga pressionada jika (distancia == -1) {esc = true; } lain {// Dapatkan tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (PUTIH); display.print ("MOVENDO"); display.setTextColor (HITAM); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); paparan.display ();

gelung () - Bahagian 5 - Berlari

// Move o motor mover (distancia, TINGGI); // Volta ao menu esc = true; } rehat; // Se tecla F3 juga kes pressionada 'C': velocidade = lerValor (); jika (velocidade == -1) {esc = benar; } lain {// Lepaskan tela "Velocidade" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (PUTIH); display.print ("VELOCIDADE"); display.setTextColor (HITAM); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");

gelung () - Bahagian 6 - Berlari

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (PUTIH); display.println ("OK!"); display.setTextColor (HITAM); paparan.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); kelewatan (2000); // Volta ao menu esc = true; } rehat; // Se tecla F4 (ESC) juga caseionion case 'D': // Se tecla CLR juga pressionada case 'c': // Se tecla ENT foi pressionada case 'e': // Volta ao menu esc = true; lalai: rehat; }} // Limpa o char customKey customKey = palsu; }}

Langkah 16: Mengenai Spindle - Konfigurasi Mesin

Mengenai Spindles - Konfigurasi Mesin
Mengenai Spindles - Konfigurasi Mesin

Dalam mesin CNC seperti pencetak 3D dan penghala misalnya, program yang bertanggungjawab untuk kawalan kedudukan perlu mengetahui bagaimana pergerakan akan berlaku sebagai fungsi bilangan denyutan yang diberikan kepada motor stepper.

Sekiranya pemandu motor langkah membenarkan penerapan langkah mikro, konfigurasi ini mesti diambil kira dalam pengiraan anjakan yang dihasilkan.

Sebagai contoh, jika motor 200 langkah per revolusi disambungkan ke pemacu yang ditetapkan ke 1/16, maka 16 x 200 denyutan diperlukan untuk satu putaran gelendong, iaitu, 3200 denyutan untuk setiap revolusi. Sekiranya gelendong ini mempunyai nada 2mm per revolusi, ia memerlukan 3200 denyutan pada pemacu agar kacang bergerak 2mm.

Sebenarnya, pengawal perisian sering menggunakan alasan untuk menentukan nisbah ini, "bilangan denyutan per milimeter" atau "langkah / mm".

Langkah 17: Marlin

Marlin
Marlin

Di Marlin, sebagai contoh, kita lihat di bahagian @ gerakan bahagian:

/ **

* Langkah Paksi Lalai Per Unit (langkah / mm)

* Timpa dengan M92

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

* /

#tentukan DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}

Dalam contoh ini, kita dapat menyimpulkan bahawa paksi X dan Y mempunyai ketepatan 80 denyutan untuk bergerak 1mm, sementara Z memerlukan 3200 denyutan dan extruder E0 memerlukan 100.

Langkah 18: GRBL

GRBL
GRBL

Di bawah ini kita melihat arahan konfigurasi GRBL. Dengan perintah $ 100, kita dapat menyesuaikan bilangan denyutan yang diperlukan untuk menyebabkan offset satu milimeter pada paksi-X.

Dalam contoh di bawah ini kita dapat melihat bahawa nilai semasa adalah 250 denyutan per mm.

Paksi Y dan Z masing-masing boleh ditetapkan $ 101 dan $ 102.

Disyorkan: