Sadržaj:

Arduino Uno sa motorom s vretenom i nagibom: 19 koraka
Arduino Uno sa motorom s vretenom i nagibom: 19 koraka

Video: Arduino Uno sa motorom s vretenom i nagibom: 19 koraka

Video: Arduino Uno sa motorom s vretenom i nagibom: 19 koraka
Video: Experience with the Farmdroid FD20 field robot: Sowing and in-row weeding of sugar beet 2024, Juli
Anonim
Image
Image
Korišteni resursi
Korišteni resursi

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

Stoga sam napravio donji sklop koji otkriva napredovanje vretena od 2 mm i drugog od 8 mm. Ova vretena TR8 koja koristim obično se koriste u malim usmjerivačima i 3D štampačima, posebno na osi Z. Imajući na umu 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
  • Trapezoidno vreteno promjera 8 mm i koraka 8 mm
  • 8x2 vretenasto prirubljeno kestenje
  • 8x8 vretenasto prirubljeno kestenje
  • 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
  • NEMA 17 Motori
  • Spojke vratila
  • Arduino Uno
  • Upravljački program DRV8825
  • Matrična tastatura 4x4
  • Ekran Nokia 5110
  • Razni dijelovi od plastike
  • Vijci i matice
  • Drvena podloga
  • Vanjsko napajanje od 12V

Korak 2: O vretenima - šta su oni?

O vretenima - šta su oni?
O vretenima - šta 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, najčešće aluminijuma i čelika.

Budući da kineske kompanije proizvode trapezna vretena, predlažem da nabavite ovu vrstu proizvoda umjesto dobro poznatog vijka s navrtkom. To je zbog atraktivnije cijene i otpora koji smatram užasnim.

Na fotografiju sam stavio najbolje vreteno koje, po mom mišljenju, to je vreteno sa recirkulacijom. Obično je izrađen od vrlo tvrdog čelika, a loptice se okreću oko njega, unutar kestena. Osim odlične 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 loptice, na fotografiji lijevo, imaju polukružne kanale gdje se kuglice kotrljaju. Relativno su skuplji i imaju nisko trenje u usporedbi s vretenom 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, jer je ova geometrija prikladnija za primjenu sila u aksijalnom smjeru i glatki prijenos pokreta. 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 mašinama i procesima.

Neke aplikacije uključuju:

  • Teretni liftovi
  • Prese
  • Jagode i tokarilice
  • CNC oprema
  • Mašine za pakovanje
  • 3D štampači
  • Oprema za rezanje i rezanje laserom
  • Industrijski procesi
  • Sistemi za pozicioniranje i linearno kretanje

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 (otpornost 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 dužinu prelaska matice pri svakom okretaju. Ovo 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 sa povećanjem brzine rotacije 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 o / min (jedan okretaj u sekundi), matica će se pomicati 2 mm u sekundi.

Korak 7: Montaža

Montaža
Montaža
Montaža
Montaža

U našem sklopu imam dva motora i našu tastaturu sa ekranom, koja je izgledala kao kalkulator, jer sam im napravio omot u 3D štampaču. Na Nokijinom ekranu imamo sljedeće mogućnosti:

F1: Polumjesec - Fuso prelazi sa trenutne pozicije na poziciju koju ja odredim

F2: Silazno - Skrenite

F3: Brzina - Mogu li promijeniti širinu impulsa

F4: ESC

Korak 8: Montaža - Materijali

Montaža - Materijali
Montaža - Materijali

A - Linearne vodilice od 10 mm

B - Trapezna 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, konzole motora, klinovi, podrška za tastaturu i ekran)

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 držače napravljene u 3D štampaču (J). U ovom koraku pozicioniranja nemojte pritezati nijedan vijak. To će omogućiti potrebna podešavanja 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: Montiranje - 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 oslonac (E), nasuprot motora, zatim umetnite vodilicu i vreteno u ležaj (G) i kesten (F) i na na vrh vretena ubacujemo i spojnicu (H). Oboje ih vodimo dok ne dosegnu konačne točke (suprotna podrška i motor).

Lagano zategnite vijke kako biste omogućili kasnije podešavanje. Ponovite postupak pomoću preostalog vodiča i vretena. Sa svim postavljenim komponentama vršimo 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 štampanog plastičnog držača osigurali smo ekran Nokije 5110 i matričnu tastaturu 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 ogledala, 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, sa osovinom od 8 mm, ide brže. Na dijagramu su još uvijek ekran i tastatura 4x4, koja mora biti matrična.

Korak 15: Izvorni kod

Uključivanje biblioteka i stvaranje objekata

Ovdje imamo Lib koji sam napravio, a to je StepDriver.h. Pripremljen je za vozače 8825, 4988, kao i za TB6600. U ovom koraku stvaram objekt DRV8825, d1.

// Biblioteca responsável por capturar a tecla que foi pressonada no teclado #include // Biblioteca responsavel pelos graficos do display #include // Biblioteca responvel pela comunicacao do display #include // Konfiguracija zaslona za prikaz // pin 6 - Serijski sat je isključen (SCLK) // pin 5 - Serijski izlaz (DIN) // pin 4 - Odabir podataka/komande (D/C) // pin 3 - Odabir LCD čipa (CS/CE) // pin 2 - Resetiranje LCD -a (RST) Adafruit_PCD8544 display = 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 as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // pinos que indicam as colunas do teclado // instancia de Keypad, response to capturar and tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // varijabilni odgovori prema armazenarima ili vrijednim znamenkama char customKey; nepotpisana duga distancija = 0; bez potpisa duga velocidada = 2000;

Funkcija čitanja sa tastature

U ovom koraku imamo kôd koji se odnosi na ekran, koji radi na povećanju i smanjenju štampe.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- unsigned long lerValor () {// Okreni podmeni 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 = false;

petlja čekajući da se pritisne taster

Ovdje objašnjavamo Loop programiranje, odnosno, 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; display.print (tecla); display.display (); break; // Vidi CLR za presliku slučaja 'c': // Ograničava niz valor valor = ""; // Apaga o valor do display display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); break; // Odredite ENT za presliku slučaja 'e': // Retorna o valor return valor.toInt (); break; // Odredite F4 (ESC) za presliku slučaja 'D': return -1; default: 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 odgovor na pokretač motora -------------------------------------- void mover (unsigned long pulsos, bool direcao) {for (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

postaviti ()

Sada pomjeram ekran i konfiguraciju upravljačkog programa, pa čak i stavljam zakač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.spavanje (LOW); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1. dio - Meni za crtanje

void loop () {// Escreve o Menu do Programa bez 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 - Meni 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 = false;

loop () - Dio 3 - Trčanje

// Ponavljamo petlju tecla F4 (ESC) nao za pressionadu while (! Esc) {// snimamo tecla pressionadu na teclado customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {// Trata a tecla apertada prekidač (customKey) {// Se tecla F1 za presliku slučaja '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); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Dio 4 - Trčanje

// Pomicanje o pokretaču motora (udaljenost, LOW); // Volta ao meni esc = true; } break; // Odredite F2 za presliku slučaja '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); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Dio 5 - Trčanje

// Pomicanje o pokretaču motora (udaljenost, HIGH); // Volta ao meni esc = true; } break; // Pogledajte F3 za presliku slučaja 'C': velocidade = lerValor (); if (velocidade == -1) {esc = true; } else {// Escreve a body "Velocidade" no display display.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); display.print (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 (); // Konfiguracija nove velocidade ao motora d1.motionConfig (50, velocidade, 5000); kašnjenje (2000); // Volta ao meni esc = true; } break; // Odredite F4 (ESC) za slučaj pritiska 'D': // Odredite CLR za slučaj slučaja 'c': // Odredite ENT za slučaj pritiska 'e': // Volta ao meni esc = true; default: break; }} // Limpa o char customKey customKey = false; }}

Korak 16: O vretenima - konfiguracije strojeva

O vretenima - konfiguracije strojeva
O vretenima - konfiguracije strojeva

Na CNC strojevima, na primjer 3D printerima i usmjerivačima, na primjer, program odgovoran za kontrolu pozicioniranja mora znati kako će se kretanja odvijati u zavisnosti od broja impulsa datih koračnom motoru.

Ako pokretač 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 specifikaciju ovog omjera, "broj impulsa po milimetru" ili "koraci / mm".

Korak 17: Marlin

Marlin
Marlin

U Marlinu, na primjer, u odjeljku @odjeljak kretanja vidimo:

/ **

* Zadani koraci osi po jedinici (koraci / mm)

* Zamenite pomoću 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 koji su potrebni da izazovu pomak 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 i 102 USD.

Preporučuje se: