Spisu treści:

Arduino Uno z silnikiem wrzeciona i skoku: 19 kroków
Arduino Uno z silnikiem wrzeciona i skoku: 19 kroków

Wideo: Arduino Uno z silnikiem wrzeciona i skoku: 19 kroków

Wideo: Arduino Uno z silnikiem wrzeciona i skoku: 19 kroków
Wideo: Jak skonfigurować GRBL i ARDUINO ? Wgrywamy GRBL ! Zewnętrzny driver zamiast CNC SHIELD ! #DIY #cnc 2024, Lipiec
Anonim
Image
Image
Wykorzystane zasoby
Wykorzystane zasoby

Dzisiaj porozmawiamy o bardzo ważnym temacie w mechanice i mechatronice: elementach maszyn. W tym artykule zajmiemy się w szczególności wrzecionami, które zawierają kilka interesujących funkcji i zastosowań. Mimo to zademonstrujemy kilka sposobów obliczania ruchu powodowanego przez wrzeciono i przedstawiamy zespół testowy.

Montaż wykonałem więc poniżej, który eksponuje wysunięcie wrzeciona 2mm i drugiego 8mm. Te wrzeciona TR8, których używam, są powszechnie stosowane w małych routerach i drukarkach 3D, szczególnie na osi Z. Pamiętając, że opanowując niektóre koncepcje, nad którymi będziemy tutaj pracować, będziesz mógł zaprojektować każdy rodzaj maszyny.

Krok 1: Wykorzystane zasoby

  • Wrzeciono trapezowe o średnicy 8mm i skoku 2mm
  • Wrzeciono trapezowe o średnicy 8mm i skoku 8mm
  • 8x2 wrzeciono z kołnierzem kasztanowym
  • 8x8 wrzeciono z kołnierzem kasztanowym
  • Łożyska do wrzecion o średnicy 8mm
  • Liniowa prowadnica cylindryczna o średnicy 10 mm
  • Łożyska walcowe do prowadnic 10 mm
  • Wsporniki do prowadnic cylindrycznych 10mm
  • Silniki NEMA 17
  • Sprzęgła wału
  • Arduino Uno
  • Sterownik DRV8825
  • Klawiatura matrycowa 4x4
  • Wyświetlacz Nokii 5110
  • Różne części z tworzyw sztucznych
  • Śruby i nakrętki
  • Podstawa drewniana
  • Zewnętrzny zasilacz 12 V

Krok 2: O wrzecionach - czym one są?

O wrzecionach - czym one są?
O wrzecionach - czym one są?

Wrzeciona to elementy maszyn, np. śruby. Oznacza to, że są to proste pręty utworzone z wątków ciągłych stopni. Stosowane są w mechanizmach wymagających ruchu liniowego i pozycjonowania. Mogą wywierać duże siły rozciągające i ściskające oraz przenosić moment obrotowy. Umożliwiają ruch z automatyczną blokadą. Mogą być wykonane z różnych materiałów, najczęściej z aluminium i stali.

Ponieważ chińskie firmy produkują wrzeciona trapezowe, sugerowałbym zakup tego typu produktu zamiast znanej śruby z nakrętką. Wynika to z atrakcyjniejszej ceny i oporu, który uważam za ohydny.

Na zdjęciu umieściłem najlepsze wrzeciono jakie ma moim zdaniem czyli wrzeciono z kulką obiegową. Jest zwykle wykonany z bardzo twardej stali, a kulki krążą wokół niego, wewnątrz kasztana. Poza precyzją, która jest świetna, podkreślam również trwałość, ponieważ ten typ wrzeciona może wykonywać miliardy ruchów bez uszkodzenia mechanizmu. Tańszą opcją, której używamy tutaj, jest wrzeciono trapezowe.

Krok 3: O wrzecionach - gwinty pojedyncze i kulkowe

O wrzecionach - gwinty pojedyncze i kulkowe
O wrzecionach - gwinty pojedyncze i kulkowe

Wrzeciona kulkowe, na zdjęciu po lewej stronie, mają półkoliste kanały, w których toczą się kulki. Są stosunkowo droższe i charakteryzują się niskim tarciem w porównaniu z wrzecionami jednośrubowymi, co prowadzi do znacznie wyższej wydajności (tarcie toczne).

Wrzeciona jednogwintowe po prawej stronie obrazu mają zwykle profile trapezowe, ponieważ ta geometria jest bardziej odpowiednia do przykładania sił w kierunku osiowym i płynnego przenoszenia ruchu. Są stosunkowo niedrogie i charakteryzują się wysokim tarciem w porównaniu z wrzecionami kulkowymi z recyrkulacją, co prowadzi do niskiej wydajności, tj. tarcia poślizgowego.

Krok 4: O wrzecionach - Aplikacje

O wrzecionach - Zastosowania
O wrzecionach - Zastosowania

Wrzeciona można zastosować do dowolnego mechanizmu, w którym wymagany jest ruch liniowy. Są szeroko stosowane w przemyśle w maszynach i procesach.

Niektóre aplikacje obejmują:

  • Windy towarowe
  • Prasy
  • Truskawki i tokarki
  • Sprzęt CNC
  • Maszyny do pakowania
  • Drukarki 3D
  • Cięcie laserowe i sprzęt do cięcia
  • Procesy przemysłowe
  • Systemy pozycjonowania i ruchu liniowego

Krok 5: O wrzecionach - parametry

O wrzecionach - parametry
O wrzecionach - parametry

Istnieje kilka cech wrzeciona, które należy wziąć pod uwagę przy projektowaniu mechanizmu. Oprócz średnicy i skoku należy rozpoznać jego wytrzymałość na ściskanie, moment bezwładności (odporność na zmianę stanu obrotowego), materiał konstrukcyjny, prędkość obrotową, której będzie poddawany, kierunek działania (poziomy lub pionowe), przyłożone obciążenie, między innymi.

Ale na podstawie już skonstruowanych mechanizmów możemy wyczuć kilka z tych parametrów.

Rozpoznajmy jakieś wspólne dobro. Zacznijmy od STEP.

Krok 6: O wrzecionach - Krok (przemieszczenie i prędkość)

Informacje o wrzecionach - krok (przemieszczenie i prędkość)
Informacje o wrzecionach - krok (przemieszczenie i prędkość)

Określa długość przebytą przez nakrętkę przy każdym obrocie. Jest to zwykle w mm / obrót.

Wrzeciono o średnicy 2 mm na obrót spowoduje przesunięcie o 2 mm przy każdym obrocie, który wykonuje wrzeciono. Będzie to miało wpływ na prędkość liniową nakrętki, ponieważ wraz ze wzrostem prędkości obrotowej wzrośnie liczba obrotów na jednostkę czasu, a w konsekwencji także przebyta odległość.

Jeśli obrót 2 mm na obrót obraca się z prędkością 60 obr./min (jeden obrót na sekundę), nakrętka porusza się z prędkością 2 mm na sekundę.

Krok 7: Montaż

montaż
montaż
montaż
montaż

W naszym zestawie mam dwa silniki i naszą klawiaturę z wyświetlaczem, która wyglądała jak kalkulator, bo zrobiłem na nie okładkę w drukarce 3D. Na wyświetlaczu Nokii mamy do wyboru następujące opcje:

F1: Półksiężyc - Fuso przechodzi z aktualnej pozycji do pozycji, którą określam

F2: malejąco – obrót

F3: Prędkość - czy mogę zmienić szerokość impulsu?

F4: ESC

Krok 8: Montaż - materiały

Montaż - materiały
Montaż - materiały

A - Prowadnice liniowe 10 mm

B - Wrzeciona trapezowe stopni 2 i 8mm

C - Podstawa wiertnicza

D - Łożyska do wrzecion

E - Uchwyty prowadzące

F - Kasztany

G - Łożyska

H - Złącza

I - Silniki

J - Różne plastikowe części (kursory, wsporniki silnika, kliny, wspornik klawiatury i wyświetlacz)

Krok 9: Montaż - Krok 01

Montaż - Krok 01
Montaż - Krok 01

Po nawierceniu podstawy (C) montujemy dwa silniki (I). Do ich mocowania wykorzystujemy wsporniki wykonane w drukarce 3D (J). Nie dokręcaj żadnych śrub na tym etapie pozycjonowania. Umożliwi to niezbędne korekty na etapie wyrównywania.

Krok 10: Montaż - Krok 02

Montaż - Krok 02
Montaż - Krok 02

Po wierceniu podstawy (C) ustaw prowadnice (E) i łożyska (D). Szczegół plastikowej podkładki (J) służącej do regulacji wysokości łożysk.

Krok 11: Montaż - Krok 03

Montaż - Krok 03
Montaż - Krok 03

Tworzymy kursor za pomocą drukowanej części, aby połączyć łożysko (G) z nakrętką (F). Użyliśmy dwóch kursorów, jeden w prawo, drugi w lewo. Jego funkcją jest wskazywanie pozycji na skali zawsze, gdy chcemy określić przemieszczenie wywołane przez wrzeciono.

Krok 12: Montaż - Krok 04

Montaż - Krok 04
Montaż - Krok 04
Montaż - Krok 04
Montaż - Krok 04

Włóż prowadnicę (A) i wrzeciono (B) do odpowiedniego łożyska (D) i wspornika (E), naprzeciwko silnika, a następnie włóż prowadnicę i wrzeciono do łożyska (G) i kasztana (F) i na końcówkę wrzeciona wstawiamy również łącznik (H). Zabieramy je obie, aż osiągną swoje końcowe punkty (przeciwne podparcie i motorykę).

Lekko dokręć śruby, aby umożliwić późniejszą regulację. Powtórz procedurę, korzystając z pozostałej prowadnicy i wrzeciona. Po umieszczeniu wszystkich elementów wykonujemy osiowanie części, kończąc etap montażu mechanicznego.

Krok 13: Montaż - Elektronika

Montaż - Elektronika
Montaż - Elektronika
Montaż - Elektronika
Montaż - Elektronika
Montaż - Elektronika
Montaż - Elektronika

Za pomocą drukowanego plastikowego uchwytu zabezpieczyliśmy wyświetlacz Nokia 5110 oraz klawiaturę matrycową 4x4. W dolnej części stojaka będzie znajdował się Arduino Uno, sterownik DRV8825.

Wykorzystując dostępne wiercenie w podstawie mocujemy montaż.

Krok 14: Schemat elektryczny

Schemat elektryczny
Schemat elektryczny

Schemat okablowania jest prosty. Mamy DRV8825 i te same dwa 17 mirrorów, czyli ten sam krok, który wysyłamy do jednego przechodzi do drugiego. Co się zmienia to że w jednym z silników mam wrzeciono 8mm a w drugim wrzeciono 2mm. Oczywiste jest więc, że pierwszy, z wrzecionem 8mm, jedzie szybciej. Wciąż na schemacie jest wyświetlacz i klawiatura 4x4, która ma być matrycą.

Krok 15: Kod źródłowy

Włączenie bibliotek i tworzenie obiektów

Mamy tutaj Lib, które zrobiłem, czyli StepDriver.h. Jest przygotowany dla sterowników 8825, 4988 oraz TB6600. W tym kroku tworzę obiekt DRV8825, czyli d1.

//Biblioteka responsywna umożliwiająca przechwytywanie informacji o nacisku na teclado#include //Biblioteka responsywna zawierająca elementy graficzne do wyświetlania #include //Biblioteka responsywna wyświetlająca informacje #include //Konfiguracja pinów do wyświetlania // pin 6 – wyjście zegara szeregowego (SCLK) // styk 5 – szeregowe wyjście danych (DIN) // styk 4 – wybór danych/polecenia (D/C) // styk 3 – wybór układu LCD (CS/CE) // styk 2 – reset LCD (RST)) Wyświetlacz Adafruit_PCD8544 = Adafruit_PCD8544(6, 5, 4, 3, 2); //Biblioteca de motor de passo #include //Instancia o sterowniku DRV8825 DRV8825 d1;

Stałe i zmienne globalne

W tej części kodu traktuję matrycę, której uczyłem w kolejnej lekcji wideo (LINK KEYBOARD). Nadal mówię o obiekcie Keypad, oprócz odległości i prędkości.

stały bajt LINHAS = 4; //liczba linhas do tecladoconst byte COLUNAS = 4; //número de colunas do teclado //definiuj uma matriz com os symbole que deseja ser lido to teclado char SIMBOLOS[LINHAS][COLUNAS] = { {'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '} }; bajt 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 to teclado //instancia de Keypad, responsável do przechwytywania i prezentacji Keypad customKeypad = Keypad(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // zmienność odpowiedzi przez armazenar o wartości digitado char customKey; długa odległość bez znaku = 0; bez znaku długa prędkość = 2000;

Funkcja czytania klawiatury

W tym kroku mamy kod odnoszący się do wyświetlacza, który działa w druku rosnącym i malejącym.

//Funcao responsavel por ler o valor do usuario pelo teclado-------------------------------------- ---unsigned long lerValor() { //Usuń podmenu wartości wartości bez wyświetlania display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(27, 2); display.setTextColor (BIAŁY); display.print("WARTOŚĆ"); display.setTextColor(CZARNY); display.fillRect(0, 24, 21, 11, 2); display.setCursor(2, 26); display.setTextColor (BIAŁY); display.print("CLR"); display.setTextColor(CZARNY); display.setCursor(23, 26); display.print("LIMPAR"); display.fillRect(0, 36, 21, 11, 2); display.setCursor(5, 38); display.setTextColor (BIAŁY); display.print("F4"); display.setTextColor(CZARNY); display.setCursor(23, 38); display.print("VOLTAR"); display.setCursor(2, 14); display.display(); Wartość ciągu = ""; char tecla = fałsz;

pętla oczekiwanie na wciśnięcie klawisza

Tutaj wyjaśniamy programowanie w pętli, czyli gdzie wprowadzasz wartości.

//Pętla 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': przypadek '7': przypadek '8': przypadek '9': przypadek '0': valor += tecla; display.print(tecla); display.display(); przerwa; //Sprawdź tecla CLR dla presji case 'c': //Limpa a string valor valor = ""; //Apaga o męstwo wyświetlaj display.fillRect(2, 14, 84, 8, 0); display.setCursor(2, 14); display.display(); przerwa; //Se tecla ENT foi pressionada case 'e': //Retorna o valor return valor.toInt(); przerwa; //Se tecla F4 (ESC) foi pressionada case 'D': return -1; domyślnie: przerwa; } } //Limpa o char tecla tecla = false; } }

Funkcja napędu silnika

Na tym etapie pracuje się nad funkcją „przesuń”. Otrzymuję liczbę impulsów i kierunek, a potem robię "za".

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

Ustawiać ()

Teraz przenoszę wyświetlacz i konfigurację sterownika, a nawet umieszczam przypinanie w kodzie źródłowym, aby było łatwiej. Inicjuję określone wartości i zajmuję się metodami generującymi ustawienia.

void setup() { //Konfiguruj wyświetl -------------------------------------------- -------- wyświetl.rozpocznij(); display.setContrast(50); display.clearDisplay(); display.setTextSize(1); display.setTextColor(CZARNY); //Konfiguracja sterownika DRV8825 ----------------------------------------- // pin GND – Włącz (ENA) // styk 13 – M0 // styk 12 – M1 // styk 11 – M2 // styk 10 – Reset (RST) // styk 9 – Uśpienie (SLP) // styk 8 – Krok (STP)) // pin 7 - Kierunek (DIR) d1.pinConfig(99, 13, 12, 11, 10, 9, 8, 7); d1.sen (NISKI); d1.reset(); d1.krokPerMm(100); d1.krok na rundę(200); d1.stepKonfiguracja(1); d1.motionConfig(50, prędkość, 5000); }

pętla () - 1. część - Menu rysowania

void loop() { //Escreve o Menu do Programa no display ----------------------------------- display.wyczyśćWyświetlacz(); display.fillRect(0, 0, 15, 11, 2); display.setCursor(2, 2); display.setTextColor (BIAŁY); display.print("F1"); display.setTextColor(CZARNY); display.setCursor(17, 2); display.print("CRESCENTE"); display.fillRect(0, 12, 15, 11, 2); display.setCursor(2, 14); display.setTextColor (BIAŁY); display.print("F2"); display.setTextColor(CZARNY); display.setCursor(17, 14); display.print("ZMNIEJSZENIE"); display.fillRect(0, 24, 15, 11, 2); display.setCursor(2, 26); display.setTextColor (BIAŁY); display.print("F3"); display.setTextColor(CZARNY); display.setCursor(17, 26); display.print("VELOCIDADE");

pętla () - Część 2 - Menu rysowania

display.fillRect(0, 36, 15, 11, 2); display.setCursor(2, 38); display.setTextColor (BIAŁY); display.print("F4"); display.setTextColor(CZARNY); display.setCursor(17, 38); display.print("ESC"); display.display(); bool esc = fałsz;

pętla () - Część 3 - Bieganie

//Loop enquanto a tecla F4 (ESC) nao for pressionada while (!esc) { //captura a tecla pressionada to 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 (dystans == -1) { esc = true; } else { //Zapisz wiadomość "Movendo" bez wyświetlania display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor (BIAŁY); display.print("MOVENDO"); display.setTextColor(CZARNY); display.setCursor(2, 14); display.print(dystans); display.print(" Passos"); display.display();

pętla () - Część 4 - Bieganie

//Przenieś motor Mover(dystans, LOW); //Volta ao menu esc = prawda; } przerwa; //Setecla F2 foi pressionada case 'B': distancia = lerValor(); //Se tecla ESC foi pressionada if (dystans == -1) { esc = true; } else { //Zapisz wiadomość "Movendo" bez wyświetlania display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor (BIAŁY); display.print("MOVENDO"); display.setTextColor(CZARNY); display.setCursor(2, 14); display.print(dystans); display.print(" Passos"); display.display();

pętla () - Część 5 - Bieganie

//Przenieś o motor mover(dystans, WYSOKI); //Volta ao menu esc = prawda; } przerwa; //Se tecla F3 foi pressionada case 'C': velocidade = lerValor(); if (prędkość == -1) { esc = prawda; } else { //Zapisz wiadomość "Velocidade" bez wyświetlania display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(12, 2); display.setTextColor (BIAŁY); display.print("VELOCIDADE"); display.setTextColor(CZARNY); display.setCursor(2, 14); display.print(velocidade); display.print(char(229)); display.print("s");

pętla () - Część 6 - Bieganie

display.fillRect(31, 24, 21, 11, 2); display.setCursor(33, 26); display.setTextColor (BIAŁY); display.println("OK!"); display.setTextColor(CZARNY); display.display(); //Configura nova velocidade ao motor d1.motionConfig(50, velocidade, 5000); opóźnienie (2000); //Volta ao menu esc = prawda; } przerwa; //Se tecla F4 (ESC) z ekspresją w przypadku „D”: //Se tecla CLR z ekspresją w przypadku „c”: //Se tecla ENT z ekspresją w przypadku „e”: //Volta ao menu esc = true; domyślnie: przerwa; } } //Limpa lub char customKey customKey = false; } }

Krok 16: Informacje o wrzecionach - konfiguracje maszyn

Informacje o wrzecionach - konfiguracje maszyn
Informacje o wrzecionach - konfiguracje maszyn

W maszynach CNC, takich jak na przykład drukarki 3D i routery, program odpowiedzialny za sterowanie pozycjonowaniem musi wiedzieć, w jaki sposób wystąpią ruchy w zależności od liczby impulsów podawanych do silnika krokowego.

Jeżeli sterownik silnika krokowego pozwala na zastosowanie mikrokroków, ta konfiguracja musi być uwzględniona przy obliczaniu wytwarzanego przemieszczenia.

Na przykład, jeśli 200-stopniowy silnik na obrót jest podłączony do sterownika ustawionego na 1/16, to 16 x 200 impulsów będzie wymaganych na jeden obrót wrzeciona, czyli 3200 impulsów na każdy obrót. Jeśli to wrzeciono ma skok 2 mm na obrót, potrzeba 3200 impulsów w sterowniku, aby nakrętka przesunęła się o 2 mm.

W rzeczywistości kontrolery oprogramowania często używają powodu do określenia tego współczynnika, "liczby impulsów na milimetr" lub "kroków/mm".

Krok 17: Marlin

Marlin
Marlin

Na przykład w Marlinie widzimy w sekcji @section motion:

/ **

* Domyślne kroki osi na jednostkę (kroki / mm)

* Zastąp za pomocą M92

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

* /

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

W tym przykładzie możemy stwierdzić, że osie X i Y mają dokładność 80 impulsów na ruch o 1 mm, podczas gdy Z potrzebuje 3200 impulsów, a ekstruder E0 potrzebuje 100.

Krok 18: GRBL

GRBL
GRBL

Poniżej widzimy polecenia konfiguracyjne GRBL. Za pomocą polecenia 100 $ możemy dostosować liczbę impulsów wymaganych do wywołania jednomilimetrowego przesunięcia na osi X.

W poniższym przykładzie widzimy, że aktualna wartość wynosi 250 impulsów na mm.

Osie Y i Z można ustawić odpowiednio 101 i 102 USD.

Zalecana: