Sadržaj:

Arduino Uno s motorom vretena i nagiba: 19 koraka
Arduino Uno s motorom vretena i nagiba: 19 koraka

Video: Arduino Uno s motorom vretena i nagiba: 19 koraka

Video: Arduino Uno s motorom vretena i nagiba: 19 koraka
Video: CNC v3.2.1 - electronics using DC motors and rotary encoders 2024, Studeni
Anonim
Image
Image
Korišteni resursi
Korišteni resursi

Danas ćemo govoriti o vrlo važnoj temi u mehanici i mehatronici: elementima strojeva. U ovom ćemo se članku posebno osvrnuti na vretena s nekim zanimljivim značajkama i aplikacijama. Ipak, pokazat ćemo neke načine izračunavanja pomaka uzrokovanog vretenom i prikazati testni sklop.

Stoga sam napravio donji sklop koji otkriva napredovanje vretena od 2 mm i drugog od 8 mm. Ova TR8 vretena koja koristim obično se koriste u malim usmjerivačima i 3D pisačima, posebno na osi Z. Sjetite se da ćete svladavanjem nekih koncepata na kojima ćemo ovdje raditi, moći dizajnirati bilo koju vrstu stroja.

Korak 1: Korišteni resursi

  • Trapezno vreteno promjera 8 mm i razmak 2 mm
  • Trapezno vreteno promjera 8 mm i koraka 8 mm
  • 8x2 vreteno prirubnički kesten
  • 8x8 vreteno prirubnički kesten
  • Ležajevi za vretena promjera 8 mm
  • Linearna cilindrična vodilica promjera 10 mm
  • Cilindrični valjkasti ležajevi za vodilice 10 mm
  • Nosači za cilindrične vodilice 10 mm
  • Motori NEMA 17
  • Spojke vratila
  • Arduino Uno
  • Upravljački program DRV8825
  • Matrična tipkovnica 4x4
  • Zaslon Nokia 5110
  • Razni dijelovi od plastike
  • Vijci i matice
  • Drvena podloga
  • Vanjsko napajanje od 12V

Korak 2: O vretenima - što su oni?

O vretenima - što su oni?
O vretenima - što su oni?

Vretena su elementi strojeva, poput vijaka. To jest, to su ravne šipke formirane nitima kontinuiranih koraka. Koriste se u mehanizmima koji zahtijevaju linearno kretanje i pozicioniranje. Mogu djelovati velike vlačne i tlačne sile i prenositi okretni moment. Omogućuju kretanje s automatskim zaključavanjem. Mogu biti izrađene od različitih materijala, a najčešće su aluminij i čelik.

Budući da kineske tvrtke proizvode trapezna vretena, predlažem da nabavite ovu vrstu proizvoda umjesto dobro poznatog vijka s maticom. To je zbog privlačnije cijene i otpora koji smatram užasnim.

Na fotografiju sam stavio najbolje vreteno koje ima, po mom mišljenju, to je vreteno s recirkulacijom. Obično je izrađen od vrlo tvrdog čelika, a loptice se okreću oko njega, unutar kestena. Osim izvrsne preciznosti, ističem i izdržljivost jer ova vrsta vretena može reproducirati milijarde pokreta bez oštećenja mehanizma. Jeftinija opcija, koju ovdje koristimo, je trapezoidno vreteno.

Korak 3: O vretenima - jednostruki i kuglasti navoji

O vretenima - jednostruki i kuglasti navoji
O vretenima - jednostruki i kuglasti navoji

Vretena kugle, na fotografiji lijevo, imaju polukružne kanale gdje se kuglice kotrljaju. Relativno su skuplji i imaju nisko trenje u usporedbi s vretena s jednim vijkom, što dovodi do mnogo većeg prinosa (trenje kotrljanja).

Vretena s jednim navojem na desnoj strani slike obično imaju trapezne profile, budući da je ova geometrija prikladnija za primjenu sila u aksijalnom smjeru i glatki prijenos gibanja. Relativno su jeftini i imaju visoko trenje u usporedbi s recirkulacijskim kugličnim vretenima, što dovodi do niskog prinosa, odnosno trenja klizanja.

Korak 4: O vretenima - aplikacije

O vretenima - aplikacije
O vretenima - aplikacije

Vretena se mogu primijeniti na bilo koji mehanizam gdje je potrebno linearno kretanje. Široko se koriste u industriji u strojevima i procesima.

Neke aplikacije uključuju:

  • Dizala tereta
  • Preše
  • Jagode i tokarilice
  • CNC oprema
  • Strojevi za pakiranje
  • 3D pisači
  • Oprema za rezanje laserom i rezanje
  • Industrijski procesi
  • Sustavi pozicioniranja i linearnog kretanja

Korak 5: O vretenima - parametri

O vretenima - parametri
O vretenima - parametri

Postoji nekoliko karakteristika vretena koje se moraju uzeti u obzir pri projektiranju mehanizma. Osim promjera i koraka, potrebno je prepoznati i njegovu tlačnu čvrstoću, moment inercije (otpor na promjenu rotacijskog stanja), konstruktivni materijal, brzinu rotacije kojoj će biti izložen, smjer rada (vodoravno ili okomito), primijenjeno opterećenje, između ostalog.

No, na temelju već izgrađenih mehanizama, možemo intuitirati nekoliko ovih parametara.

Prepoznajmo neko opće dobro. Počnimo s KORAK.

Korak 6: O vretenima - Korak (pomak i brzina)

O vretenima - korak (pomak i brzina)
O vretenima - korak (pomak i brzina)

Određuje duljinu prolaska matice pri svakom okretaju. To je obično u mm / okretu.

Vreteno od 2 mm po okretaju uzrokovat će pomak od 2 mm pri svakom okretu koje vreteno izvrši. To će utjecati na linearnu brzinu matice, jer će se s povećanjem brzine vrtnje povećati broj okretaja po jedinici vremena, a time i prijeđena udaljenost.

Ako se okretanje od 2 mm po okretu okreće pri 60 okretaja u minuti (jedan okretaj u sekundi), matica će se pomicati 2 mm u sekundi.

Korak 7: Montaža

Skupština
Skupština
Skupština
Skupština

U našoj montaži imam dva motora i našu tipkovnicu s zaslonom, koja je izgledala poput kalkulatora, jer sam im napravio omot u 3D pisaču. Na Nokia zaslonu imamo sljedeće mogućnosti:

F1: Polumjesec - Fuso prelazi sa trenutnog položaja na položaj koji ja odredim

F2: Silazno - Okreni

F3: Brzina - Mogu li promijeniti širinu impulsa

F4: ESC

Korak 8: Montaža - Materijali

Montaža - Materijali
Montaža - Materijali

Linearne vodilice A - 10 mm

B - Trapezoidna vretena koraka 2 i 8 mm

C - Baza za bušenje

D - Ležajevi za vretena

E - Držači vodiča

F - kesteni

G - Ležajevi

H - Spojke

I - Motori

J - Razni plastični dijelovi (pokazivači, nosači motora, klinovi, podrška za tipkovnicu i zaslon)

Korak 9: Montaža - Korak 01

Montaža - korak 01
Montaža - korak 01

Nakon bušenja baze (C), sastavljamo dva motora (I). Za njihovo pričvršćivanje koristimo zagrade izrađene u 3D pisaču (J). U ovom koraku pozicioniranja nemojte pritezati niti jedan vijak. To će omogućiti potrebne prilagodbe u koraku poravnanja.

Korak 10: Montaža - Korak 02

Montaža - korak 02
Montaža - korak 02

I dalje nakon bušenja podnožja (C), postavite vodilice (E) i ležajeve (D). Detalj za plastičnu podlošku (J) koja se koristi za podešavanje visine ležajeva.

Korak 11: Montaža - Korak 03

Montaža - korak 03
Montaža - korak 03

Kreiramo kursor pomoću ispisanog dijela za spajanje ležaja (G) s maticom (F). Koristili smo dva kursora, jedan desno drugi lijevo. Njegova je funkcija označiti položaj na ljestvici kad god želimo odrediti pomak uzrokovan vretenom.

Korak 12: Montaža - Korak 04

Montaža - korak 04
Montaža - korak 04
Montaža - korak 04
Montaža - korak 04

Umetnite vodilicu (A) i vreteno (B) u odgovarajući ležaj (D) i nosač (E), nasuprot motora, zatim umetnite vodilicu i vreteno u ležaj (G) i kesten (F), a vrh vretena također ubacujemo spojku (H). Oboje ih uzimamo dok ne dosegnu konačne točke (suprotna podrška i motor).

Lagano pritegnite vijke kako biste omogućili kasnije podešavanje. Ponovite postupak pomoću preostale vodilice i vretena. Sa svim postavljenim komponentama izvodimo poravnavanje dijelova, završavajući fazu mehaničkog sastavljanja.

Korak 13: Montaža - elektronika

Montaža - elektronika
Montaža - elektronika
Montaža - elektronika
Montaža - elektronika
Montaža - elektronika
Montaža - elektronika

Pomoću tiskanog plastičnog držača učvrstili smo zaslon Nokia 5110 i matričnu tipkovnicu 4x4. U donjem prostoru postolja smjestit će se Arduino Uno, vozač DRV8825.

Pomoću dostupnog bušenja u podnožju pričvršćujemo sklop.

Korak 14: Električna shema

Električna shema
Električna shema

Shema ožičenja je jednostavna. Imamo DRV8825 i ista dva 17 zrcala, odnosno isti korak koji šaljemo jednom ide do drugog. Ono što se mijenja je da u jednom od motora imam vreteno od 8 mm, a u drugom vreteno od 2 mm. Očigledno je dakle da prvi, s vretenom od 8 mm, ide brže. Na dijagramu su još uvijek zaslon i tipkovnica 4x4, koja mora biti matrična.

Korak 15: Izvorni kod

Uključivanje knjižnica i stvaranje objekata

Ovdje imamo Lib koji sam napravio, a to je StepDriver.h. Pripremljen je za vozače 8825, 4988, a također i za TB6600. U ovom koraku stvaram objekt 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 - Serijski sat out (SCLK) // pin 5 - Serijski izlaz (DIN) // pin 4 - Odabir podataka/naredbe (D/C) // pin 3 - Odabir LCD čipa (CS/CE) // pin 2 - Resetiranje LCD -a (RST) Adafruit_PCD8544 zaslon = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

Konstante i globalne varijable

U ovom dijelu koda obrađujem matricu koju sam naučio u drugoj video lekciji (LINK TASTATURA). Ipak, govorim o objektu Keypad, osim udaljenosti i brzine.

const bajt LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // definirati 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 '}}; bajt PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // pinos que indicam kao 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; nepotpisana duga distancija = 0; bez potpisa duga velocidada = 2000;

Funkcija čitanja tipkovnice

U ovom koraku imamo kôd koji se odnosi na zaslon, koji radi na povećanju i smanjenju ispisa.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- unsigned long lerValor () {// Escreve o podizborniku que coleta os valores bez prikaza display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (BIJELO); display.print ("VALOR"); display.setTextColor (CRNO); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (BIJELO); display.print ("CLR"); display.setTextColor (CRNO); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (BIJELO); display.print ("F4"); display.setTextColor (CRNO); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); String valor = ""; char tecla = lažno;

petlja čekajući pritisnutu tipku

Ovdje objašnjavamo programiranje petlje, odnosno mjesto gdje unosite vrijednosti.

// Petlja beskonačno 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': slučaj '7': slučaj '8': slučaj '9': slučaj '0': valor += tecla; prikaz.tisak (tecla); display.display (); pauza; // 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 (); pauza; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); pauza; // Se tecla F4 (ESC) foi pressionada case 'D': return -1; zadano: break; }} // Limpa o char tecla tecla = false; }}

Funkcija pogona motora

U ovom koraku radi se na funkciji "premještanje". Dobijem broj impulsa i smjer, a zatim napravim "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); }}

postaviti ()

Sada premještam zaslon i konfiguraciju upravljačkog programa, a čak sam stavio i pričvršćivanje unutar izvornog koda kako bih olakšao. Pokrećem određene vrijednosti i bavim se metodama koje generiraju postavke.

void setup () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (CRNO); // Konfiguracija upravljačkog programa DRV8825 ----------------------------------------- // pin GND - Omogući (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Sleep (SLP) // pin 8 - Step (STP) // pin 7 - Direction (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.spavati (NISKO); d1.reset (); d1.korakPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1. dio - izbornik Crtanje

void loop () {// Escreve o Menu do Programa nema prikaza ----------------------------------- prikaz.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (BIJELO); display.print ("F1"); display.setTextColor (CRNO); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (BIJELO); display.print ("F2"); display.setTextColor (CRNO); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (BIJELO); display.print ("F3"); display.setTextColor (CRNO); display.setCursor (17, 26); display.print ("VELOCIDADE");

loop () - 2. dio - Izbornik za crtanje

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (BIJELO); display.print ("F4"); display.setTextColor (CRNO); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = netočno;

loop () - Dio 3 - Trčanje

// Petlja enquanto tecla F4 (ESC) nao za pressionadu while (! Esc) {// hvatanje 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 {// Escreve a body "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BIJELO); display.print ("MOVENDO"); display.setTextColor (CRNO); display.setCursor (2, 14); prikaz.tisak (distancia); display.print ("Passos"); display.display ();

loop () - Dio 4 - Trčanje

// Pokret o motorni pokretač (udaljenost, LOW); // Volta ao izbornik esc = true; } pauza; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve a body "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BIJELO); display.print ("MOVENDO"); display.setTextColor (CRNO); display.setCursor (2, 14); prikaz.tisak (distancija); display.print ("Passos"); display.display ();

loop () - 5. dio - Trčanje

// Pomicanje o motorni pokretač (udaljenost, VISOKO); // Volta ao izbornik esc = true; } pauza; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); if (velocidade == -1) {esc = true; } else {// Escreve tela "Velocidade" bez prikaza na zaslonu.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (BIJELO); display.print ("VELOCIDADE"); display.setTextColor (CRNO); display.setCursor (2, 14); prikaz.tisak (velocidade); display.print (char (229)); display.print ("s");

loop () - Dio 6 - Trčanje

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (BIJELO); display.println ("U redu!"); display.setTextColor (CRNO); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); odgoda (2000); // Volta ao izbornik esc = true; } pauza; // 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; zadano: break; }} // Limpa o char customKey customKey = false; }}

Korak 16: O vretenu - konfiguracije stroja

O vretenima - konfiguracije strojeva
O vretenima - konfiguracije strojeva

U CNC strojevima, na primjer 3D pisačima i usmjerivačima, program odgovoran za kontrolu pozicioniranja mora znati kako će se kretanja odvijati u ovisnosti o broju impulsa koji se daju koračnom motoru.

Ako pogon koračnog motora dopušta primjenu mikro-koraka, ova se konfiguracija mora uzeti u obzir pri izračunu proizvedenog pomaka.

Na primjer, ako je motor od 200 koraka po okretaju spojen na upravljački sklop postavljen na 1/16, tada će za jedno okretanje vretena biti potrebno 16 x 200 impulsa, odnosno 3200 impulsa za svaki okretaj. Ako ovo vreteno ima korak od 2 mm po okretu, bit će potrebno 3200 impulsa u pogonu da se matica pomakne 2 mm.

Zapravo, softverski kontroleri često koriste razlog za navođenje ovog omjera, "broja impulsa po milimetru" ili "koraka / mm".

Korak 17: Marlin

Marlin
Marlin

U Marlinu, na primjer, u odjeljku @sekcijsko gibanje vidimo:

/ **

* Zadani koraci osi po jedinici (koraci / mm)

* Nadjačaj s M92

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

* /

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

U ovom primjeru možemo zaključiti da osi X i Y imaju točnost od 80 impulsa za pomicanje 1 mm, dok Z treba 3200 impulsa, a ekstruderu E0 100.

Korak 18: GRBL

GRBL
GRBL

U nastavku vidimo naredbe za konfiguraciju GRBL -a. Pomoću naredbe od 100 USD možemo podesiti broj impulsa potrebnih za izazivanje pomaka od jednog milimetra na osi X.

U donjem primjeru možemo vidjeti da je trenutna vrijednost 250 impulsa po mm.

Osi Y i Z mogu se postaviti 101 USD odnosno 102 USD.

Preporučeni: