Daftar Isi:

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

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

Video: Arduino Uno Dengan Spindle dan Pitch Motor: 19 Langkah
Video: Kontrol Dinamo dengan L293D - Arduino Project Indonesia 2024, Juli
Anonim
Image
Image
Sumber Daya yang Digunakan
Sumber Daya yang Digunakan

Hari ini kita akan berbicara tentang subjek yang sangat penting dalam mekanika dan mekatronik: elemen mesin. Pada artikel ini, kami akan secara khusus membahas spindel, yang menampilkan beberapa fitur dan aplikasi menarik. Namun, kami akan mendemonstrasikan beberapa cara menghitung gerakan yang disebabkan oleh spindel dan menyajikan rakitan uji.

Saya membuat rakitan di bawah, oleh karena itu, yang memperlihatkan gerak maju spindel 2mm dan yang lain 8mm. Spindle TR8 yang saya gunakan ini biasa digunakan pada router kecil dan printer 3D, terutama pada sumbu Z. Mengingat bahwa dengan menguasai beberapa konsep yang akan kita kerjakan di sini, Anda akan dapat mendesain segala jenis mesin.

Langkah 1: Sumber Daya yang Digunakan

  • Spindel trapesium berdiameter 8mm dan pitch 2mm
  • Spindel trapesium berdiameter 8mm dan pitch 8mm
  • 8x2 spindel bergelang kastanye
  • 8x8 spindel bergelang kastanye
  • Bantalan untuk spindel berdiameter 8mm
  • Panduan silinder linier berdiameter 10mm
  • Bantalan rol silinder untuk pemandu 10mm
  • Kurung untuk pemandu silinder 10mm
  • NEMA 17 Motors
  • Kopling poros
  • Arduino Uno
  • Pengemudi DRV8825
  • Papan ketik matriks 4x4
  • Tampilan Nokia 5110
  • Bagian plastik lain-lain
  • Baut dan mur
  • Dasar kayu
  • Catu daya 12V eksternal

Langkah 2: Tentang Spindle - Apa Itu?

Tentang Spindle - Apa Itu?
Tentang Spindle - Apa Itu?

Spindle adalah elemen mesin, seperti sekrup. Artinya, mereka adalah batang lurus yang dibentuk oleh utas langkah terus menerus. Mereka digunakan dalam mekanisme yang membutuhkan gerakan dan posisi linier. Mereka dapat mengerahkan kekuatan tarik dan tekan yang tinggi dan mengirimkan torsi. Mereka memungkinkan gerakan dengan penguncian otomatis. Mereka dapat dibuat dari bahan yang berbeda, menjadi aluminium dan baja yang paling umum.

Karena perusahaan Cina memproduksi spindel trapesium, saya sarankan Anda mendapatkan jenis produk ini daripada baut mur yang terkenal. Ini karena harga yang lebih menarik dan hambatan yang saya anggap mengerikan.

Di foto saya meletakkan spindel terbaik yang menurut saya adalah spindel bola resirkulasi. Biasanya terbuat dari baja yang sangat keras, dan bola berputar di sekitarnya, di dalam kastanye. Selain presisi yang luar biasa, saya juga menonjolkan daya tahannya, karena spindel jenis ini dapat mereproduksi miliaran gerakan tanpa merusak mekanismenya. Pilihan yang lebih murah, yang kami gunakan di sini, adalah spindel trapesium.

Langkah 3: Tentang Spindle - Benang Tunggal dan Bola

Tentang Spindle - Benang Tunggal dan Bola
Tentang Spindle - Benang Tunggal dan Bola

Gelendong bola, pada foto di sebelah kiri, memiliki saluran setengah lingkaran tempat bola menggelinding. Mereka relatif lebih mahal dan memiliki gesekan rendah dibandingkan dengan spindel sekrup tunggal, yang mengarah ke hasil yang jauh lebih tinggi (gesekan bergulir).

Spindel berulir tunggal di sisi kanan gambar biasanya memiliki profil trapesium, karena geometri ini lebih tepat untuk menerapkan gaya dalam arah aksial dan transmisi gerakan yang mulus. Mereka relatif murah dan memiliki gesekan tinggi dibandingkan dengan spindel bola resirkulasi, yang mengarah ke hasil yang rendah, yaitu gesekan slip.

Langkah 4: Tentang Spindle - Aplikasi

Tentang Spindle - Aplikasi
Tentang Spindle - Aplikasi

Spindle dapat diterapkan pada mekanisme apa pun di mana gerakan linier diperlukan. Mereka banyak digunakan dalam industri dalam mesin dan proses.

Beberapa aplikasi antara lain:

  • Lift kargo
  • Mesin press
  • Stroberi dan mesin bubut
  • Peralatan CNC
  • Mesin Pembungkus
  • Printer 3D
  • Peralatan Pemotongan & Pemotongan Laser
  • Proses industri
  • Pemosisian dan sistem gerak linier

Langkah 5: Tentang Spindle - Parameter

Tentang Spindle - Parameter
Tentang Spindle - Parameter

Ada beberapa karakteristik spindel yang harus diperhitungkan saat merancang suatu mekanisme. Selain diameter dan pitchnya, perlu untuk mengenali kekuatan tekannya, momen inersianya (tahanan terhadap perubahan keadaan rotasinya), material konstruktif, kecepatan rotasi yang akan dikenakannya, arah operasi (horizontal). atau vertikal), beban yang diterapkan, antara lain.

Tetapi, berdasarkan mekanisme yang sudah dibangun, kita dapat mengetahui beberapa parameter ini.

Mari kita kenali beberapa kebaikan bersama. Mari kita mulai dengan LANGKAH.

Langkah 6: Tentang Spindle - Langkah (perpindahan dan Kecepatan)

Tentang Spindle - Langkah (perpindahan dan Kecepatan)
Tentang Spindle - Langkah (perpindahan dan Kecepatan)

Menentukan panjang yang ditempuh mur pada setiap putaran. Ini biasanya dalam mm / revolusi.

Spindel 2 mm per putaran akan menyebabkan perpindahan 2 mm pada setiap putaran yang dilakukan spindel. Ini akan mempengaruhi kecepatan linier mur, karena dengan meningkatnya kecepatan rotasi, jumlah putaran per satuan waktu akan meningkat dan akibatnya jarak yang ditempuh juga.

Jika putaran 2mm per putaran berputar pada 60 RPM (satu putaran per detik), mur akan bergerak dengan kecepatan 2mm per detik.

Langkah 7: Perakitan

perakitan
perakitan
perakitan
perakitan

Dalam perakitan kami, saya memiliki dua motor dan keyboard kami dengan tampilan, yang terlihat seperti kalkulator, karena saya membuat penutup untuk mereka di printer 3D. Pada layar Nokia, kami memiliki opsi berikut:

F1: Bulan Sabit - Fuso berpindah dari posisi saat ini ke posisi yang saya tentukan

F2: Menurun - Putar

F3: Kecepatan - Dapatkah saya mengubah lebar pulsa?

F4: ESC

Langkah 8: Pemasangan - Bahan

Pemasangan - Bahan
Pemasangan - Bahan

A - Panduan Linear 10mm

B - Spindel trapesium langkah 2 dan 8mm

C - Pangkalan Pengeboran

D - Bantalan untuk spindel

E - Pemegang panduan

F - Kacang kastanye

G - Bantalan

H - Kopling

I - Mesin

J - Berbagai bagian plastik (kursor, braket mesin, baji, penyangga keyboard, dan tampilan

Langkah 9: Perakitan - Langkah 01

Perakitan - Langkah 01
Perakitan - Langkah 01

Setelah mengebor alas (C), kami merakit dua motor (I). Untuk mengencangkannya, kami menggunakan tanda kurung yang dibuat di printer 3D (J). Jangan kencangkan sekrup apa pun dalam langkah pemosisian ini. Ini akan memungkinkan penyesuaian yang diperlukan dalam langkah penyelarasan.

Langkah 10: Perakitan - Langkah 02

Perakitan - Langkah 02
Perakitan - Langkah 02

Masih mengikuti pengeboran alas (C), posisikan rel pemandu (E) dan bantalan (D). Detail untuk shim plastik (J) yang digunakan untuk mengatur ketinggian bantalan.

Langkah 11: Pemasangan - Langkah 03

Pemasangan - Langkah 03
Pemasangan - Langkah 03

Kami membuat kursor menggunakan bagian yang dicetak untuk menghubungkan bantalan (G) ke mur (F). Kami menggunakan dua kursor, satu ke kanan dan ke kiri. Fungsinya untuk menunjukkan posisi pada skala setiap kali kita ingin menentukan perpindahan yang disebabkan oleh spindel.

Langkah 12: Perakitan - Langkah 04

Perakitan - Langkah 04
Perakitan - Langkah 04
Perakitan - Langkah 04
Perakitan - Langkah 04

Masukkan pemandu (A) dan spindel (B) pada bantalan masing-masing (D) dan penyangga (E), berlawanan dengan motor, kemudian masukkan pemandu dan spindel ke bantalan (G) dan kastanye (F) dan pada ujung spindel kami juga memasukkan coupler (H). Kami membawa mereka berdua sampai mereka mencapai titik akhir mereka (berlawanan dengan dukungan dan motor).

Kencangkan sekrup dengan ringan untuk memungkinkan penyesuaian nanti. Ulangi prosedur menggunakan pemandu dan penggulung yang tersisa. Dengan semua komponen diposisikan, kami melakukan penyelarasan bagian, menyelesaikan tahap perakitan mekanis.

Langkah 13: Pemasangan - Elektronik

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

Menggunakan dudukan plastik cetak, kami mengamankan layar Nokia 5110 dan keypad matriks 4x4. Di ruang bawah dudukan akan berada Arduino Uno, driver DRV8825.

Menggunakan pengeboran yang tersedia di pangkalan, kami mengencangkan rakitan.

Langkah 14: Skema Listrik

Skema Listrik
Skema Listrik

Diagram pengkabelan sederhana. Kami memiliki DRV8825 dan dua 17 cermin yang sama, yaitu, langkah yang sama yang kami kirim ke satu ke yang lain. Apa yang berubah adalah bahwa di salah satu mesin saya memiliki poros 8mm dan yang lain poros 2mm. Jelas, kemudian, bahwa yang pertama, dengan spindel 8mm, berjalan lebih cepat. Masih dalam diagram adalah tampilan dan keyboard 4x4, yang harus berupa matriks.

Langkah 15: Kode Sumber

Penyertaan perpustakaan dan pembuatan objek

Kami memiliki Lib yang saya lakukan, yaitu StepDriver.h. Ini disiapkan untuk driver 8825, 4988 dan juga TB6600. Saya membuat dalam 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 comunicao do display #include //Configuracao de pinos do Display // pin 6 - Serial clock out (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) Tampilan Adafruit_PCD8544 = Adafruit_PCD8544(6, 5, 4, 3, 2); //Biblioteca de motor de passo #include //Instancia o driver DRV8825 DRV8825 d1;

Konstanta dan variabel global

Di bagian kode ini saya memperlakukan matriks, yang saya ajarkan dalam pelajaran video lain (LINK KEYBOARD). Tetap saja, saya berbicara tentang objek Keypad, selain jarak dan kecepatan.

byte const LINHAS = 4; //número de linhas melakukan 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 '} }; byte PINOS_LINHA[LINHAS] = {A2, A3, A4, A5}; //pinos que indicam as linhas do teclado byte PINOS_COLUNA[COLUNAS] = {0, 1, A0, A1}; //menemukan indicam sebagai colunas melakukan teclado //instancia de Keypad, merespons dengan cepat Keypad customKeypad = Keypad(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); //variáveis resposnsáveis por armazenar o valor digitado char customKey; jarak jauh tak bertanda = 0; velocidade panjang tanpa tanda = 2000;

Fungsi membaca papan ketik

Pada langkah ini kita memiliki kode yang mengacu pada tampilan, yang berfungsi untuk menambah dan mengurangi pencetakan.

//Funcao responsavel por ler o valor do usuario pelo teclado-------------------------------------- ---unsigned long lerValor() { //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("VALOR"); 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); tampilan.tampilan(); Nilai string = ""; char tecla = salah;

perulangan menunggu tombol ditekan

Di sini kami menjelaskan pemrograman Loop, yaitu tempat Anda memasukkan nilai.

//Loop infinito enquanto nao chamar o return while (1) { tecla = customKeypad.getKey(); if (tecla) { switch (tecla) { //Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': kasus '7': kasus '8': kasus '9': kasus '0': keberanian += tecla; display.print(tecla); tampilan.tampilan(); merusak; //Se tecla CLR untuk kasus pressionada 'c': //Limpa a string valor valor = ""; //Apaga o valor do display display.fillRect(2, 14, 84, 8, 0); display.setCursor(2, 14); tampilan.tampilan(); merusak; //Se tecla ENT foi pressionada case 'e': //Retorna o valor return valor.toInt(); merusak; //Se tecla F4 (ESC) untuk kasus pressionada 'D': return -1; default: istirahat; } } //Limpa o char tecla tecla = false; } }

Fungsi penggerak motor:

Fungsi "pindah" bekerja pada langkah ini. Saya mendapatkan jumlah pulsa dan arah dan kemudian saya membuat "untuk".

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

mempersiapkan ()

Sekarang saya pindahkan tampilan dan konfigurasi driver, dan saya bahkan memasukkan pin ke dalam kode sumber untuk membuatnya lebih mudah. Saya menginisialisasi nilai-nilai tertentu dan menangani metode yang menghasilkan pengaturan.

void setup() { //Configuracao melakukan tampilan ---------------------------------------- -------- tampilan.begin(); display.setContrast(50); tampilan.clearDisplay(); display.setTextSize(1); display.setTextColor(HITAM); //Konfigurasi Driver DRV8825 ----------------------------------------- // pin GND - Aktifkan (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Sleep (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.langkahPerMm(100); d1.stepPerRound(200); d1.stepConfig(1); d1.motionConfig(50, kecepatan, 5000); }

loop () - bagian pertama - Menu menggambar

void loop() { //Escreve o Menu melakukan Program tanpa tampilan ----------------------------------- tampilan.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("DECRESCENTE"); 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");

loop () - Bagian 2 - Menu menggambar

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"); tampilan.tampilan(); bool esc = salah;

loop () - Bagian 3 - Berlari

//Loop enquanto a tecla F4 (ESC) nao untuk pressionada while (!esc) { //captura a tecla pressionada melakukan teclado customKey = customKeypad.getKey(); //caso alguma tecla foi pressionada if (customKey) { //Trata a tecla apertada switch (customKey) { //Se tecla F1 foi pressionada case 'A': distancia = lerValor(); //Se tecla ESC untuk pressionada if (distancia == -1) { esc = true; } else { //Escreve sebuah tela "Movendo" tanpa tampilan 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(jarak); display.print("Pass"); tampilan.tampilan();

loop () - Bagian 4 - Berlari

//Pindahkan penggerak motor(jarak, RENDAH); //Volta ao menu esc = true; } merusak; //Tecla F2 untuk kasus pressionada 'B': jarak = lerValor(); //Se tecla ESC untuk pressionada if (distancia == -1) { esc = true; } else { //Escreve sebuah tela "Movendo" tanpa tampilan 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(jarak); display.print("Pass"); tampilan.tampilan();

loop () - Bagian 5 - Berlari

//Pindahkan penggerak motor(jarak, TINGGI); //Volta ao menu esc = true; } merusak; //Tecla F3 untuk kasus pressionada 'C': velocidade = lerValor(); if (velocidade == -1) { esc = true; } else { //Escreve sebuah tela "Velocidade" tanpa tampilan 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");

loop () - Bagian 6 - Berlari

display.fillRect(31, 24, 21, 11, 2); display.setCursor(33, 26); display.setTextColor(PUTIH); display.println("Oke!"); display.setTextColor(HITAM); tampilan.tampilan(); //Konfigurasi nova velocidade ao motor d1.motionConfig(50, velocidade, 5000); penundaan(2000); //Volta ao menu esc = true; } merusak; //Se tecla F4 (ESC) foi pressionada case 'D': //Se tecla CLR foi pressionada case 'c': //Se tecla ENT foi pressionada case 'e': //Volta ao menu esc = true; default: istirahat; } } //Limpa o char customKey customKey = false; } }

Langkah 16: Tentang Spindle - Konfigurasi Mesin

Tentang Spindle - Konfigurasi Mesin
Tentang Spindle - Konfigurasi Mesin

Pada mesin CNC seperti printer 3D dan router misalnya, program yang bertanggung jawab untuk kontrol pemosisian perlu mengetahui bagaimana gerakan akan terjadi sebagai fungsi dari jumlah pulsa yang diberikan ke motor stepper.

Jika penggerak motor langkah memungkinkan penerapan langkah mikro, konfigurasi ini harus diperhitungkan dalam perhitungan perpindahan yang dihasilkan.

Misalnya, jika motor 200 langkah per putaran dihubungkan ke driver yang disetel ke 1/16, maka 16 x 200 pulsa akan diperlukan untuk satu putaran spindel, yaitu, 3200 pulsa untuk setiap putaran. Jika spindel ini memiliki pitch 2mm per putaran, dibutuhkan 3200 pulsa pada driver agar mur bergerak 2mm.

Bahkan, pengontrol perangkat lunak sering menggunakan alasan untuk menentukan rasio ini, "jumlah pulsa per milimeter" atau "langkah / mm".

Langkah 17: Marlin

Marlin
Marlin

Di Marlin, misalnya, kita melihat di bagian @section motion:

/ **

* Langkah Sumbu Default Per Unit (langkah / mm)

* Ganti dengan M92

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

* /

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

Dalam contoh ini, kita dapat menyimpulkan bahwa sumbu X dan Y memiliki akurasi 80 pulsa untuk bergerak 1mm, sedangkan Z membutuhkan 3200 pulsa dan ekstruder E0 membutuhkan 100.

Langkah 18: GRBL

GRBL
GRBL

Di bawah ini kita melihat perintah konfigurasi GRBL. Dengan perintah $100, kita dapat mengatur jumlah pulsa yang diperlukan untuk menyebabkan offset satu milimeter pada sumbu X.

Pada contoh di bawah ini kita dapat melihat bahwa nilai arus adalah 250 pulsa per mm.

Sumbu Y dan Z dapat diatur masing-masing $ 101 dan $ 102.

Direkomendasikan: