Sadržaj:
- Korak 1: Korišteni resursi
- Korak 2: O vretenima - šta su oni?
- Korak 3: O vretenima - jednostruki i kuglasti navoji
- Korak 4: O vretenima - aplikacije
- Korak 5: O vretenima - parametri
- Korak 6: O vretenima - Korak (pomak i brzina)
- Korak 7: Montaža
- Korak 8: Montaža - Materijali
- Korak 9: Montaža - Korak 01
- Korak 10: Montaža - Korak 02
- Korak 11: Montiranje - Korak 03
- Korak 12: Montaža - Korak 04
- Korak 13: Montaža - elektronika
- Korak 14: Električna shema
- Korak 15: Izvorni kod
- Korak 16: O vretenima - konfiguracije strojeva
- Korak 17: Marlin
- Korak 18: GRBL
- Korak 19: Pogledajte više mojih radova:
Video: Arduino Uno sa motorom s vretenom i nagibom: 19 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
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?
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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:
Povežite Maduino UNO sa servo motorom: 7 koraka
Povežite Maduino UNO sa servo motorom: U ovom vodiču koristit ćemo Arduino UNO, servo motor i Visuino za rotiranje servo motora. Pogledajte demonstracijski video
Upravljanje DC motorom Arduino Uno R3: 6 koraka
Upravljanje DC motorom Arduino Uno R3: U ovom eksperimentu naučit ćemo kako kontrolirati smjer i brzinu istosmjernog motora male veličine pomoću upravljačkog čipa L293D. Izvođenjem jednostavnih eksperimenata, jednostavno ćemo natjerati motor da se okreće lijevo -desno, te automatski ubrzati ili usporiti
Kompas kompenziran nagibom sa LSM303DHLC: 3 koraka
Kompas kompenziran nagibom sa LSM303DHLC: U ovom uputstvu želim pokazati kako koristiti senzor LSM303 za realizaciju kompasa kompenziranog nagibom. Nakon prvog (neuspješnog) pokušaja bavio sam se kalibracijom senzora. Zahvaljujući njima, vrijednosti magnetometra su poboljšane
Gimbal osovine s nagibom i nagibom za GoPro pomoću Arduina - servo i žiroskop MPU6050: 4 koraka
Roll and Pitch Axis Gimbal za GoPro koristeći Arduino - Servo i žiroskop MPU6050: Ova instrukcija je stvorena u skladu sa zahtjevima projekta Makecourse na Univerzitetu Južne Floride (www.makecourse.com) Cilj ovog projekta bio je izgraditi 3-osni kardan za GoPro pomoću Arduino nano + 3 servo motora +
Narukvica s nagibom: 6 koraka (sa slikama)
Narukvica s osjetom nagiba: Narukvica ukrašena sa šest latica provodljive tkanine i koncem perli s metalnom perlicom na kraju, omogućuje jednostavno otkrivanje nagiba u šest točaka. Dizajnirano je i tako da metalno zrnce stupi u kontakt s dvije latice ako leži između … ¦