Mục lục:

Arduino Uno với Động cơ trục chính và Pitch: 19 bước
Arduino Uno với Động cơ trục chính và Pitch: 19 bước

Video: Arduino Uno với Động cơ trục chính và Pitch: 19 bước

Video: Arduino Uno với Động cơ trục chính và Pitch: 19 bước
Video: Motor bước - Driver TB6600 - Arduino Uno 2024, Tháng bảy
Anonim
Image
Image
Tài nguyên được sử dụng
Tài nguyên được sử dụng

Hôm nay chúng ta sẽ nói về một chủ đề rất quan trọng trong cơ học và cơ điện tử: các yếu tố của máy móc. Trong bài viết này, chúng tôi sẽ đề cập cụ thể đến các trục xoay, giới thiệu một số tính năng và ứng dụng thú vị. Tuy nhiên, chúng tôi sẽ trình bày một số cách tính toán chuyển động do trục quay gây ra và trình bày một bộ phận thử nghiệm.

Do đó, tôi đã thực hiện lắp ráp bên dưới, để lộ ra phần trước của một trục chính 2mm và một trục chính khác là 8mm. Trục quay TR8 này tôi đang sử dụng thường được sử dụng trong các bộ định tuyến nhỏ và máy in 3D, đặc biệt là trên trục Z. Hãy nhớ rằng bằng cách nắm vững một số khái niệm mà chúng ta sẽ làm việc ở đây, bạn sẽ có thể thiết kế bất kỳ loại máy nào.

Bước 1: Tài nguyên được sử dụng

  • Trục chính hình thang có đường kính 8mm và bước răng 2mm
  • Trục chính hình thang có đường kính 8mm và bước răng 8mm
  • 8x2 trục chính mặt bích hạt dẻ
  • 8x8 trục chính mặt bích hạt dẻ
  • Vòng bi cho trục đường kính 8mm
  • Hướng dẫn hình trụ tuyến tính đường kính 10mm
  • Vòng bi lăn hình trụ cho thanh dẫn 10mm
  • Chân đế cho thanh dẫn hình trụ 10mm
  • NEMA 17 động cơ
  • Khớp nối trục
  • Arduino Uno
  • Trình điều khiển DRV8825
  • Bàn phím ma trận 4x4
  • Màn hình Nokia 5110
  • Các bộ phận khác bằng nhựa
  • Bu lông và đai ốc
  • Cơ sở gỗ
  • Nguồn điện 12V bên ngoài

Bước 2: Giới thiệu về Spindles - Chúng là gì?

Giới thiệu về Spindles - Chúng là gì?
Giới thiệu về Spindles - Chúng là gì?

Trục chính là yếu tố của máy móc, chẳng hạn như đinh vít. Đó là, chúng là những thanh thẳng được tạo thành bởi các chủ đề của các bước liên tục. Chúng được sử dụng trong các cơ chế yêu cầu chuyển động và định vị tuyến tính. Chúng có thể tạo ra lực kéo và lực nén cao và truyền mô-men xoắn. Chúng cho phép di chuyển với khóa tự động. Chúng có thể được xây dựng bằng các vật liệu khác nhau, phổ biến nhất là nhôm và thép.

Vì các công ty Trung Quốc đang sản xuất trục xoay hình thang, tôi khuyên bạn nên mua loại sản phẩm này thay vì bu lông đai ốc nổi tiếng. Điều này là do mức giá hấp dẫn hơn và sự chèo kéo, điều mà tôi coi là gớm ghiếc.

Trong bức ảnh, tôi đặt trục xoay tốt nhất, theo ý kiến của tôi, đó là trục quay của quả bóng tuần hoàn. Nó thường được làm bằng một loại thép rất cứng, và các quả bóng xoay quanh nó, bên trong là hạt dẻ. Bên cạnh độ chính xác tuyệt vời, tôi cũng nhấn mạnh đến độ bền, vì loại trục xoay này có thể tái tạo hàng tỷ chuyển động mà không làm hỏng cơ chế. Một lựa chọn rẻ hơn, mà chúng tôi sử dụng ở đây, là trục xoay hình thang.

Bước 3: Giới thiệu về trục xoay - Chủ đề đơn và bóng

Giới thiệu về Spindles - Single và Ball Threads
Giới thiệu về Spindles - Single và Ball Threads

Các trục xoay bóng, trong ảnh bên trái, có các ống dẫn hình bán nguyệt nơi các quả bóng lăn. Chúng tương đối đắt hơn và có ma sát thấp so với trục vít đơn, dẫn đến năng suất (ma sát lăn) cao hơn nhiều.

Các trục chính có ren đơn ở phía bên phải của hình ảnh thường có biên dạng hình thang, vì hình dạng này thích hợp hơn để tác dụng lực theo hướng trục và truyền chuyển động trơn tru. Chúng tương đối rẻ tiền và có ma sát cao so với trục quay của bi tuần hoàn, dẫn đến năng suất thấp, tức là ma sát trượt.

Bước 4: Giới thiệu về Spindles - Ứng dụng

Giới thiệu về Spindles - Ứng dụng
Giới thiệu về Spindles - Ứng dụng

Các trục xoay có thể được áp dụng cho bất kỳ cơ chế nào yêu cầu chuyển động thẳng. Chúng được sử dụng rộng rãi trong ngành công nghiệp máy móc và quy trình.

Một số ứng dụng bao gồm:

  • Thang máy chở hàng
  • Máy ép
  • Dâu tây và máy tiện
  • Thiết bị CNC
  • Máy đóng gói
  • Máy in 3D
  • Thiết bị cắt & cắt Laser
  • Quy trình công nghiệp
  • Hệ thống định vị và chuyển động thẳng

Bước 5: Giới thiệu về Spindles - Tham số

Giới thiệu về Spindles - Tham số
Giới thiệu về Spindles - Tham số

Có một số đặc điểm của trục xoay phải được tính đến khi thiết kế cơ cấu. Ngoài đường kính và bước của nó, cần phải nhận ra cường độ nén của nó, mômen quán tính của nó (khả năng chống thay đổi trạng thái quay của nó), vật liệu xây dựng, tốc độ quay mà nó sẽ phải chịu, hướng hoạt động (ngang hoặc thẳng đứng), tải trọng tác dụng, trong số các tải trọng khác.

Tuy nhiên, dựa trên các cơ chế đã được xây dựng, chúng ta có thể đưa vào một số tham số này.

Hãy nhận ra một số lợi ích chung. Hãy bắt đầu với BƯỚC.

Bước 6: Giới thiệu về trục chính - Bước (dịch chuyển và tốc độ)

Giới thiệu về trục chính - Bước (dịch chuyển và tốc độ)
Giới thiệu về trục chính - Bước (dịch chuyển và tốc độ)

Xác định chiều dài di chuyển của đai ốc tại mỗi vòng quay. Điều này thường tính bằng mm / vòng quay.

Trục chính 2 mm trên mỗi vòng quay sẽ gây ra dịch chuyển 2 mm tại mỗi vòng quay mà trục quay thực hiện. Nó sẽ ảnh hưởng đến vận tốc tuyến tính của đai ốc, vì với sự gia tăng của tốc độ quay, số vòng quay trên một đơn vị thời gian sẽ tăng lên và do đó quãng đường di chuyển cũng tăng theo.

Nếu vòng quay 2mm trên mỗi vòng quay ở tốc độ 60 RPM (một vòng quay mỗi giây), đai ốc sẽ di chuyển với tốc độ 2mm mỗi giây.

Bước 7: Lắp ráp

cuộc họp
cuộc họp
cuộc họp
cuộc họp

Trong bộ phận lắp ráp của chúng tôi, tôi có hai động cơ và bàn phím của chúng tôi với màn hình, trông giống như một chiếc máy tính, bởi vì tôi đã tạo vỏ cho chúng trong máy in 3D. Trên màn hình Nokia, chúng tôi có các tùy chọn sau:

F1: Lưỡi liềm - Fuso đi từ vị trí hiện tại đến vị trí tôi xác định

F2: Giảm dần - Rẽ

F3: Tốc độ - Tôi có thể thay đổi độ rộng xung không

F4: ESC

Bước 8: Gắn kết - Vật liệu

Gắn kết - Vật liệu
Gắn kết - Vật liệu

A - Hướng dẫn tuyến tính 10mm

B - Trục hình thang bước 2 và 8mm

C - Cơ sở khoan

D - Vòng bi cho trục quay

E - Người có hướng dẫn

F - Hạt dẻ

G - Vòng bi

H - Khớp nối

I - Động cơ

J - Các bộ phận bằng nhựa khác nhau (con trỏ, giá đỡ động cơ, nêm, hỗ trợ bàn phím và màn hình

Bước 9: Lắp ráp - Bước 01

Lắp ráp - Bước 01
Lắp ráp - Bước 01

Sau khi khoan đế (C), chúng tôi lắp ráp hai động cơ (I). Để gắn chặt chúng, chúng tôi sử dụng giá đỡ được làm trong máy in 3D (J). Không siết chặt bất kỳ ốc vít nào trong bước định vị này. Điều này sẽ cho phép thực hiện các điều chỉnh cần thiết trong bước căn chỉnh.

Bước 10: Lắp ráp - Bước 02

Lắp ráp - Bước 02
Lắp ráp - Bước 02

Vẫn tiếp tục khoan đế (C), định vị ray dẫn hướng (E) và ổ trục (D). Chi tiết về miếng đệm nhựa (J) dùng để điều chỉnh độ cao của ổ trục.

Bước 11: Gắn kết - Bước 03

Gắn kết - Bước 03
Gắn kết - Bước 03

Chúng tôi tạo một con trỏ bằng cách sử dụng một bộ phận được in để kết nối vòng bi (G) với đai ốc (F). Chúng tôi đã sử dụng hai con trỏ, con trỏ bên phải, con trỏ bên trái. Chức năng của nó là chỉ ra vị trí trên thang đo bất cứ khi nào chúng ta muốn xác định độ dịch chuyển do trục quay gây ra.

Bước 12: Lắp ráp - Bước 04

Lắp ráp - Bước 04
Lắp ráp - Bước 04
Lắp ráp - Bước 04
Lắp ráp - Bước 04

Lắp thanh dẫn (A) và trục chính (B) vào ổ trục (D) và gối đỡ (E) tương ứng của chúng, đối diện với động cơ, sau đó lắp thanh dẫn và trục chính vào ổ trục (G) và hạt dẻ (F) và tại đầu trục chính chúng ta cũng lắp bộ ghép (H). Chúng tôi đưa cả hai cho đến khi chúng đạt đến điểm cuối cùng (hỗ trợ và động cơ ngược chiều).

Vặn nhẹ các vít để cho phép điều chỉnh sau này. Lặp lại quy trình bằng cách sử dụng thanh dẫn hướng và trục quay còn lại. Với tất cả các bộ phận đã được định vị, chúng tôi thực hiện căn chỉnh các bộ phận, hoàn thiện công đoạn lắp ráp cơ khí.

Bước 13: Gắn kết - Điện tử

Gắn kết - Điện tử
Gắn kết - Điện tử
Gắn kết - Điện tử
Gắn kết - Điện tử
Gắn kết - Điện tử
Gắn kết - Điện tử

Sử dụng một giá đỡ bằng nhựa được in, chúng tôi đã cố định màn hình Nokia 5110 và bàn phím ma trận 4x4. Trong không gian phía dưới của giá đỡ sẽ đặt Arduino Uno, trình điều khiển DRV8825.

Sử dụng khoan có sẵn trong đế, chúng tôi lắp ráp chặt chẽ.

Bước 14: Sơ đồ điện

Sơ đồ điện
Sơ đồ điện

Sơ đồ đấu dây rất đơn giản. Chúng ta có DRV8825 và hai gương 17 giống nhau, tức là chúng ta gửi cùng một bước thì chúng ta chuyển sang bước khác. Điều thay đổi là ở một trong các động cơ, tôi có trục chính 8mm và ở động cơ còn lại là trục chính 2mm. Rõ ràng là chiếc đầu tiên, với trục chính 8mm, chạy nhanh hơn. Vẫn trong sơ đồ là màn hình hiển thị và bàn phím 4x4, phải là ma trận.

Bước 15: Mã nguồn

Bao gồm các thư viện và tạo ra các đối tượng

Chúng tôi có ở đây một Lib mà tôi đã làm, đó là StepDriver.h. Nó được chuẩn bị cho các trình điều khiển 8825, 4988 và cả TB6600. Trong bước này, tôi tạo đối tượng DRV8825, d1.

// Biblioteca responseável por capturar a tecla que foi pressionada no teclado # include // Biblioteca responseável pelos graficos do display #include // Biblioteca responseável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - Hết giờ nối tiếp (SCLK) // chân 5 - Dữ liệu nối tiếp ra (DIN) // chân 4 - Dữ liệu / Chọn lệnh (D / C) // chân 3 - Chọn chip LCD (CS / CE) // chân 2 - Đặt lại màn hình LCD (RST) Adafruit_PCD8544 display = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Trình điều khiển Instancia o DRV8825 DRV8825 d1;

Hằng số và biến toàn cục

Trong phần này của mã, tôi xử lý ma trận, mà tôi đã dạy trong một bài học video khác (BÀN PHÍM LIÊN KẾT). Tuy nhiên, tôi đang nói về đối tượng Bàn phím, bên cạnh khoảng cách và tốc độ.

const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // định nghĩa 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}; // pinos que indicam as colunas do teclado // instancia de Keypad, responseável bởi capturar a tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis bởi armazenar o valor digitado char customKey; unsigned long distancia = 0; không dấu dài velocidade = 2000;

Chức năng đọc bàn phím

Trong bước này, chúng tôi có mã đề cập đến màn hình, hoạt động in tăng và giảm.

// Funcao responseavel 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 (TRẮNG); display.print ("VALOR"); display.setTextColor (ĐEN); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (TRẮNG); display.print ("CLR"); display.setTextColor (ĐEN); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (TRẮNG); display.print ("F4"); display.setTextColor (ĐEN); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); Chuỗi giá trị = ""; char tecla = false;

lặp lại chờ nhấn phím

Ở đây chúng tôi giải thích về lập trình Vòng lặp, tức là nơi bạn nhập các giá trị.

// Vòng lặp 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': case '7': case '8': case '9': case '0': valor + = tecla; display.print (tecla); display.display (); nghỉ; // Se tecla CLR foi pressionada case 'c': // Limpa a string valor valor = ""; // Apaga o valor do display display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); nghỉ; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); nghỉ; // Se tecla F4 (ESC) foi pressionada case 'D': return -1; default: nghỉ; }} // Limpa o char tecla tecla = false; }}

Chức năng truyền động cơ

Chức năng "di chuyển" được thực hiện trong bước này. Tôi nhận được số lượng xung và hướng và sau đó tôi thực hiện một "cho".

// Funcao responseavel por mover o motor -------------------------------------- void mover (unsigned long pulsos, bool direcao) {for (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

cài đặt ()

Bây giờ tôi di chuyển màn hình và cấu hình trình điều khiển, và tôi thậm chí còn đặt ghim bên trong mã nguồn để làm cho nó dễ dàng hơn. Tôi khởi tạo các giá trị nhất định và xử lý các phương pháp tạo cài đặt.

void setup () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (ĐEN); // Configuração do Driver DRV8825 ----------------------------------------- // 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) // chân 7 - Direction (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sleep (THẤP); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, khóa dán, 5000); }

loop () - Phần thứ nhất - Menu bản vẽ

void loop () {// Escreve o Menu do Programa no display ----------------------------------- display.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (TRẮNG); display.print ("F1"); display.setTextColor (ĐEN); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (TRẮNG); display.print ("F2"); display.setTextColor (ĐEN); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (TRẮNG); display.print ("F3"); display.setTextColor (ĐEN); display.setCursor (17, 26); display.print ("VELOCIDADE");

loop () - Phần 2 - Menu vẽ

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (TRẮNG); display.print ("F4"); display.setTextColor (ĐEN); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = sai;

loop () - Phần 3 - Đang chạy

// Loop enquanto a tecla F4 (ESC) nao for pressionada while (! Esc) {// captura a tecla pressionada do 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 foi pressionada if (distancia == -1) {esc = true; } else {// Thoát một tela "Movendo" không hiển thị display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (TRẮNG); display.print ("MOVENDO"); display.setTextColor (ĐEN); display.setCursor (2, 14); display.print (phân phối); display.print ("Lễ vượt qua"); display.display ();

loop () - Phần 4 - Đang chạy

// Di chuyển o động cơ mover (distancia, LOW); // Volta ao menu esc = true; } nghỉ; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Thoát một tela "Movendo" không hiển thị display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (TRẮNG); display.print ("MOVENDO"); display.setTextColor (ĐEN); display.setCursor (2, 14); display.print (phân phối); display.print ("Lễ vượt qua"); display.display ();

loop () - Phần 5 - Đang chạy

// Di chuyển o động cơ mover (distancia, HIGH); // Volta ao menu esc = true; } nghỉ; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); if (velocidade == -1) {esc = true; } else {// Thoát một tela "Velocidade" không hiển thị display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (TRẮNG); display.print ("VELOCIDADE"); display.setTextColor (ĐEN); display.setCursor (2, 14); display.print (khóa dán); display.print (char (229)); display.print ("s");

loop () - Phần 6 - Đang chạy

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (TRẮNG); display.println ("Được!"); display.setTextColor (ĐEN); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); chậm trễ (2000); // Volta ao menu esc = true; } nghỉ; // 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: nghỉ; }} // Limpa o char customKey customKey = false; }}

Bước 16: Giới thiệu về Spindles - Cấu hình máy

Giới thiệu về Spindles - Cấu hình máy
Giới thiệu về Spindles - Cấu hình máy

Trong các máy CNC chẳng hạn như máy in 3D và bộ định tuyến, chương trình chịu trách nhiệm điều khiển định vị cần biết các chuyển động sẽ xảy ra như thế nào dưới dạng hàm của số lượng xung được cung cấp cho động cơ bước.

Nếu trình điều khiển động cơ bước cho phép áp dụng các bước vi mô, cấu hình này phải được tính đến khi tính toán dịch chuyển được tạo ra.

Ví dụ: nếu động cơ 200 bước trên mỗi vòng quay được kết nối với trình điều khiển được đặt thành 1/16, thì 16 x 200 xung sẽ được yêu cầu cho một vòng quay của trục chính, nghĩa là 3200 xung cho mỗi vòng quay. Nếu trục chính này có bước sóng 2mm trên mỗi vòng quay, thì sẽ mất 3200 xung trong bộ điều khiển để đai ốc di chuyển 2mm.

Trên thực tế, bộ điều khiển phần mềm thường sử dụng một lý do để chỉ định tỷ lệ này, "số lượng xung trên milimét" hoặc "bước / mm".

Bước 17: Marlin

Marlin
Marlin

Ví dụ, trong Marlin, chúng ta thấy trong phần @section chuyển động:

/ **

* Số bước trục mặc định trên mỗi đơn vị (bước / mm)

* Ghi đè bằng M92

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

* /

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

Trong ví dụ này, chúng ta có thể kết luận rằng trục X và Y có độ chính xác là 80 xung để di chuyển 1mm, trong khi trục Z cần 3200 xung và máy đùn E0 cần 100 xung.

Bước 18: GRBL

GRBL
GRBL

Dưới đây chúng ta thấy các lệnh cấu hình GRBL. Với lệnh $ 100, chúng ta có thể điều chỉnh số lượng xung cần thiết để tạo ra độ lệch một milimét trên trục X.

Trong ví dụ dưới đây, chúng ta có thể thấy rằng giá trị hiện tại là 250 xung trên mm.

Các trục Y và Z có thể được đặt lần lượt là $ 101 và $ 102.

Đề xuất: