Kazalo:

Arduino Uno z vretenskim in nagibnim motorjem: 19 korakov
Arduino Uno z vretenskim in nagibnim motorjem: 19 korakov

Video: Arduino Uno z vretenskim in nagibnim motorjem: 19 korakov

Video: Arduino Uno z vretenskim in nagibnim motorjem: 19 korakov
Video: «Матрёшка Z» — 20 электронных устройств на Arduino Uno. Железки Амперки 2024, September
Anonim
Image
Image
Uporabljeni viri
Uporabljeni viri

Danes se bomo pogovarjali o zelo pomembnem predmetu v mehaniki in mehatroniki: elementih strojev. V tem članku bomo posebej obravnavali vretena z nekaj zanimivimi funkcijami in aplikacijami. Kljub temu bomo pokazali nekaj načinov izračuna gibanja, ki ga povzroči vreteno, in predstavili preskusni sklop.

Zato sem sestavil spodaj, ki razkriva napredovanje vretena 2 mm in drugega 8 mm. Ta vretena TR8, ki jih uporabljam, se običajno uporabljajo v majhnih usmerjevalnikih in 3D tiskalnikih, zlasti na osi Z. Ne pozabite, da boste z obvladovanjem nekaterih konceptov, na katerih bomo tukaj delali, lahko oblikovali katero koli vrsto stroja.

1. korak: Uporabljeni viri

  • Trapezno vreteno s premerom 8 mm in korakom 2 mm
  • Trapezno vreteno premera 8 mm in naklona 8 mm
  • 8x2 vretenasto prirobljen kostanj
  • 8x8 vretenasto prirobljen kostanj
  • Ležaji za vretena s premerom 8 mm
  • Linearno valjasto vodilo s premerom 10 mm
  • Cilindrični valjčni ležaji za 10 mm vodila
  • Nosilci za cilindrična vodila 10 mm
  • Motorji NEMA 17
  • Spojke gredi
  • Arduino Uno
  • Gonilnik DRV8825
  • Matrična tipkovnica 4x4
  • Zaslon Nokia 5110
  • Razni deli iz plastike
  • Vijaki in matice
  • Lesena podlaga
  • Zunanji 12V napajalnik

2. korak: O vretenih - kaj so to?

O vretenih - kaj so to?
O vretenih - kaj so to?

Vretena so elementi strojev, na primer vijaki. To pomeni, da so ravne palice, ki jih tvorijo niti neprekinjenih korakov. Uporabljajo se v mehanizmih, ki zahtevajo linearno gibanje in pozicioniranje. Lahko izvajajo velike natezne in tlačne sile ter prenašajo navor. Omogočajo premikanje z avtomatskim zaklepanjem. Lahko so izdelani iz različnih materialov, najpogosteje iz aluminija in jekla.

Ker kitajska podjetja izdelujejo trapezna vretena, predlagam, da namesto znanega vijaka z matico dobite to vrsto izdelka. To je posledica privlačnejše cene in vlečenja, ki se mi zdi grozno.

Na fotografijo sem dal najboljše vreteno, ki je po mojem mnenju krožno krožno vreteno. Običajno je iz zelo trdega jekla, kroglice pa se vrtijo okoli njega, znotraj kostanja. Poleg odlične natančnosti izpostavljam tudi vzdržljivost, saj lahko tovrstno vreteno reproducira milijarde gibov, ne da bi pri tem poškodovalo mehanizem. Cenejša možnost, ki jo uporabljamo tukaj, je trapezno vreteno.

3. korak: O vretenih - enojne in kroglične niti

O vretenih - enojne in kroglične niti
O vretenih - enojne in kroglične niti

Kroglična vretena, na fotografiji levo, imajo polkrožne kanale, kjer se kroglice valjajo. So relativno dražji in imajo nizko trenje v primerjavi z enojnimi vijaki, kar vodi do veliko večjega izkoristka (kotalno trenje).

Vretena z enim navojem na desni strani slike imajo običajno trapezne profile, saj je ta geometrija primernejša za uporabo sil v aksialni smeri in nemoten prenos gibanja. So relativno poceni in imajo veliko trenje v primerjavi s krogličnimi vreteni, ki krožijo, kar vodi do nizkega izkoristka, tj. Trenja zdrsa.

4. korak: O vretenih - aplikacije

O vretenih - aplikacije
O vretenih - aplikacije

Vretena se lahko uporabijo za kateri koli mehanizem, kjer je potrebno linearno gibanje. V industriji se pogosto uporabljajo v strojih in procesih.

Nekatere aplikacije vključujejo:

  • Tovorna dvigala
  • Stiskalnice
  • Jagode in stružnice
  • CNC oprema
  • Stroji za zavijanje
  • 3D tiskalniki
  • Oprema za lasersko rezanje in rezanje
  • Industrijski procesi
  • Sistemi za pozicioniranje in linearno gibanje

5. korak: O vretenih - parametri

O vretenih - parametri
O vretenih - parametri

Obstaja več značilnosti vretena, ki jih je treba upoštevati pri načrtovanju mehanizma. Poleg premera in nagiba je treba upoštevati njegovo tlačno trdnost, vztrajnostni moment (odpornost na spremembe v rotacijskem stanju), konstrukcijski material, hitrost vrtenja, ki mu bo izpostavljen, smer delovanja (vodoravno ali navpično), uporabljeno obremenitev, med drugim.

Toda na podlagi že zgrajenih mehanizmov lahko intuitiramo več teh parametrov.

Prepoznajmo nekaj skupnega dobrega. Začnimo s KORAK.

Korak 6: O vretenih - korak (premik in hitrost)

O vretenih - korak (premik in hitrost)
O vretenih - korak (premik in hitrost)

Določa dolžino, ki jo matica prevozi pri vsakem obratu. Običajno je to v mm / obratu.

2 mm vreteno na vrtljaj povzroči pomik 2 mm pri vsakem obratu vretena. To bo vplivalo na linearno hitrost matice, saj se bo s povečanjem hitrosti vrtenja povečalo število vrtljajev na enoto časa in posledično tudi prevožena razdalja.

Če se vrtenje 2 mm na vrtljaj vrti pri 60 vrtljajih na minuto (en vrtljaj na sekundo), se bo matica premikala s hitrostjo 2 mm na sekundo.

7. korak: Montaža

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

V našem sklopu imam dva motorja in našo tipkovnico z zaslonom, ki je bila videti kot kalkulator, ker sem jim v 3D tiskalniku naredil ovitek. Na zaslonu Nokia imamo naslednje možnosti:

F1: Polmesec - Fuso gre iz trenutnega položaja v položaj, ki ga določim

F2: padajoče - zavijte

F3: Hitrost - Ali lahko spremenim širino impulza

F4: ESC

8. korak: Montaža - Materiali

Montaža - Materiali
Montaža - Materiali

Linearna vodila A - 10 mm

B - Trapezna vretena stopnic 2 in 8 mm

C - Vrtalna baza

D - Ležaji za vretena

E - Držala za vodila

F - kostanj

G - Ležaji

H - Spojke

I - Motorji

J - Različni plastični deli (kazalci, nosilci motorja, klini, podpora za tipkovnico in zaslon

9. korak: Montaža - 1. korak

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

Po vrtanju podlage (C) sestavimo dva motorja (I). Za njihovo pritrditev uporabljamo nosilce, izdelane v 3D tiskalniku (J). V tem koraku pozicioniranja ne privijte nobenega vijaka. To bo omogočilo potrebne prilagoditve v koraku poravnave.

10. korak: Montaža - 2. korak

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

Še vedno po vrtanju podlage (C) postavite vodila (E) in ležaje (D). Podrobnosti za plastično podlogo (J) za nastavitev višine ležajev.

Korak 11: Montaža - Korak 03

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

Ustvarjamo kazalec z natisnjenim delom za povezavo ležaja (G) z matico (F). Uporabili smo dve kazalki, eno desno drugo levo. Njegova funkcija je prikazati položaj na lestvici, kadar koli želimo določiti premik, ki ga povzroči vreteno.

12. korak: Montaža - 4. korak

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

Vodilo (A) in vreteno (B) vstavite v ustrezen ležaj (D) in nosilec (E), nasproti motorja, nato pa vstavite vodilo in vreteno v ležaj (G) in kostanj (F) in na na vrh vretena vstavimo tudi spojko (H). Oba jih vzamemo, dokler ne dosežeta svojih končnih točk (nasprotna podpora in motor).

Rahlo privijte vijake, da omogočite poznejšo nastavitev. Postopek ponovite s preostalim vodilom in vretenom. Z vsemi postavljenimi komponentami izvedemo poravnavo delov in zaključimo fazo mehanskega sestavljanja.

13. korak: Montaža - elektronika

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

S tiskanim plastičnim držalom smo zavarovali zaslon Nokia 5110 in matrično tipkovnico 4x4. V spodnjem prostoru stojala bo Arduino Uno, voznik DRV8825.

S pomočjo razpoložljivega vrtanja v podnožje pritrdimo sklop.

14. korak: električna shema

Električna shema
Električna shema

Shema ožičenja je preprosta. Imamo DRV8825 in enaka dvanajst ogledal, torej enak korak, ki ga pošljemo enemu, gre do drugega. Kar se spremeni je, da imam v enem od motorjev 8 mm vreteno, v drugem pa 2 mm vreteno. Očitno je torej, da prvi, z 8 mm vretenom, gre hitreje. Na diagramu sta še zaslon in tipkovnica 4x4, ki mora biti matrična.

Korak 15: Izvorna koda

Vključevanje knjižnic in ustvarjanje predmetov

Tukaj imamo Lib, ki sem ga naredil, to je StepDriver.h. Pripravljen je za voznike 8825, 4988 in tudi za TB6600. V tem koraku ustvarim predmet 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 - Serijska ura je izklopljena (SCLK) // pin 5 - Serijski izhod podatkov (DIN) // pin 4 - Izbira podatkov/ukaza (D/C) // pin 3 - Izbira čipa LCD (CS/CE) // pin 2 - ponastavitev LCD (RST) Adafruit_PCD8544 zaslon = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

Konstante in globalne spremenljivke

V tem delu kode obravnavam matriko, ki sem jo naučil v drugi video lekciji (LINK KEYBOARD). Kljub temu govorim o predmetu tipkovnice, poleg razdalje in hitrosti.

const bajt LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // definiraj 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 kot linhas do teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // pinos que indicam as colunas do teclado // instancia de Keypad, response to 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; nepodpisana dolga distanca = 0; nepodpisana dolga velocidada = 2000;

Funkcija branja tipkovnice

V tem koraku imamo kodo, ki se nanaša na zaslon, ki deluje pri naraščajočem in padajočem tiskanju.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- brez podpisa dolg lerValor () {// Povzetek o podmeniju que coleta os valores brez prikaza na zaslonu.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (BELO); display.print ("VALOR"); display.setTextColor (ČRNO); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (BELO); display.print ("CLR"); display.setTextColor (ČRNO); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (BELO); display.print ("F4"); display.setTextColor (ČRNO); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); Niz valor = ""; char tecla = false;

zanka čaka na pritisk tipke

Tu razložimo programiranje z zanko, torej tam, kjer vnesete vrednosti.

// Loop infinito enquanto nao chamar o return while (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Se teclas de 0 a 9 forem pressionadas primer '1': primer '2': primer '3': primer '4': primer '5': primer '6': primer '7': primer '8': primer '9': primer '0': valor += tecla; display.print (tecla); display.display (); prekiniti; // 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 (); prekiniti; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); prekiniti; // Se tecla F4 (ESC) for pressionada case 'D': return -1; privzeto: break; }} // Limpa o char tecla tecla = false; }}

Funkcija motornega pogona

V tem koraku se nadaljuje funkcija "premik". Dobim število impulzov in smer, nato pa naredim "za".

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

nastaviti ()

Zdaj premaknem zaslon in konfiguracijo gonilnika in celo vstavim pripenjanje v izvorno kodo, da olajšam. Inicializiram določene vrednosti in obravnavam metode, ki ustvarjajo nastavitve.

void setup () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (ČRNO); // Konfiguracija gonilnika DRV8825 ----------------------------------------- // pin GND - Omogoč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.spi (NIZKO); d1.reset (); d1.korakPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1. del - meni Risba

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

zanka () - 2. del - meni Risba

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (BELO); display.print ("F4"); display.setTextColor (ČRNO); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = napačno;

zanka () - 3. del - Tek

// 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 {// Dvignite telo "Movendo" brez prikaza na zaslonu.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BELO); display.print ("MOVENDO"); display.setTextColor (ČRNO); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

zanka () - 4. del - Tek

// Premakni ali premakni motor (distancia, LOW); // Volta ao meni esc = true; } prelom; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Dvignite telo "Movendo" brez prikaza na zaslonu.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BELO); display.print ("MOVENDO"); display.setTextColor (ČRNO); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

zanka () - 5. del - Tek

// Premakni ali premakni motor (distancia, HIGH); // Volta ao meni esc = true; } prelom; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); če (velocidade == -1) {esc = res; } else {// Escreve a body "Velocidade" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (BELO); display.print ("VELOCIDADE"); display.setTextColor (ČRNO); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");

zanka () - 6. del - Tek

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (BELO); display.println ("V redu!"); display.setTextColor (ČRNO); display.display (); // Konfiguracija nove velocidade ao motorja d1.motionConfig (50, velocidade, 5000); zamuda (2000); // Volta ao meni esc = true; } prelom; // 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; privzeto: break; }} // Limpa o char customKey customKey = false; }}

Korak 16: O vretenih - konfiguracije stroja

O vretenih - konfiguracije strojev
O vretenih - konfiguracije strojev

Pri CNC strojih, na primer 3D -tiskalnikih in usmerjevalnikih, mora program, odgovoren za krmiljenje pozicioniranja, vedeti, kako se bodo premiki pojavili v odvisnosti od števila impulzov, podanih koračnemu motorju.

Če gonilnik koračnega motorja dovoljuje uporabo mikrokorakov, je treba to konfiguracijo upoštevati pri izračunu nastalega premika.

Na primer, če je 200-stopenjski motor na vrtljaj povezan z gonilnikom, nastavljenim na 1/16, bodo potrebni 16 x 200 impulzov za en sam obrat vretena, to je 3200 impulzov za vsak vrtljaj. Če ima to vreteno nagib 2 mm na vrtljaj, bo v gonilniku potrebnih 3200 impulzov, da se matica premakne za 2 mm.

Pravzaprav programski krmilniki pogosto uporabljajo razlog za določitev tega razmerja, "števila impulzov na milimeter" ali "korakov / mm".

17. korak: Marlin

Marlin
Marlin

V Marlinu na primer v razdelku @section motion vidimo:

/ **

* Privzeti koraki osi na enoto (koraki / mm)

* Preglasite z M92

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

* /

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

V tem primeru lahko sklepamo, da imata osi X in Y natančnost 80 impulzov za premik 1 mm, medtem ko Z potrebuje 3200 impulzov, ekstruder E0 pa 100.

18. korak: GRBL

GRBL
GRBL

Spodaj vidimo konfiguracijske ukaze GRBL. Z ukazom 100 USD lahko prilagodimo število impulzov, ki so potrebni za eno milimetrski odmik na osi X.

V spodnjem primeru lahko vidimo, da je trenutna vrednost 250 impulzov na mm.

Osi Y in Z lahko nastavite za 101 in 102 USD.

Priporočena: