Turinys:

„Arduino Uno“su velenu ir žingsnio varikliu: 19 žingsnių
„Arduino Uno“su velenu ir žingsnio varikliu: 19 žingsnių

Video: „Arduino Uno“su velenu ir žingsnio varikliu: 19 žingsnių

Video: „Arduino Uno“su velenu ir žingsnio varikliu: 19 žingsnių
Video: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, Liepa
Anonim
Image
Image
Naudojami ištekliai
Naudojami ištekliai

Šiandien mes kalbėsime apie labai svarbią mechanikos ir mechatronikos temą: mašinų elementus. Šiame straipsnyje mes konkrečiai aptarsime velenus, kuriuose yra keletas įdomių funkcijų ir programų. Vis dėlto mes parodysime keletą būdų, kaip apskaičiuoti veleno sukeltą judesį ir pateikti bandomąjį mazgą.

Todėl aš padariau surinkimą žemiau, kuris atskleidžia 2 mm ir kito 8 mm veleno judėjimą. Šie mano naudojami TR8 velenai dažniausiai naudojami mažuose maršrutizatoriuose ir 3D spausdintuvuose, ypač Z ašyje. Prisimindami, kad įsisavinę kai kurias sąvokas, prie kurių čia dirbsime, galėsite suprojektuoti bet kokio tipo mašinas.

1 žingsnis: naudojami ištekliai

  • Trapecijos formos ašis 8 mm skersmens ir 2 mm žingsnio
  • Trapecijos formos velenas 8 mm skersmens ir 8 mm žingsnio
  • 8x2 verpstės flanšinis kaštonas
  • 8x8 verpstės flanšinis kaštonas
  • 8 mm skersmens velenų guoliai
  • Linijinis cilindrinis kreiptuvas 10 mm skersmens
  • Cilindriniai ritininiai guoliai 10 mm kreiptuvams
  • 10 mm cilindrinių kreiptuvų laikikliai
  • NEMA 17 varikliai
  • Velenų movos
  • Arduino Uno
  • Vairuotojas DRV8825
  • 4x4 matricos klaviatūra
  • Ekranas „Nokia 5110“
  • Įvairios plastikinės dalys
  • Varžtai ir veržlės
  • Medinis pagrindas
  • Išorinis 12 V maitinimo šaltinis

2 žingsnis: apie velenus - kas jie yra?

Apie velenus - kas jie?
Apie velenus - kas jie?

Velenai yra mašinų elementai, tokie kaip varžtai. Tai yra, jie yra tiesūs strypai, suformuoti iš ištisinių žingsnių siūlų. Jie naudojami mechanizmuose, kuriems reikalingas linijinis judėjimas ir padėtis. Jie gali daryti didelę tempimo ir gniuždymo jėgą ir perduoti sukimo momentą. Jie leidžia judėti su automatiniu užrakinimu. Jie gali būti pagaminti iš įvairių medžiagų, dažniausiai iš aliuminio ir plieno.

Kadangi Kinijos įmonės gamina trapecijos formos verpstes, siūlyčiau vietoj gerai žinomo veržlinio varžto įsigyti tokio tipo gaminį. Taip yra dėl patrauklesnės kainos ir pasipriešinimo, kuris, mano manymu, yra baisus.

Nuotraukoje aš įdėjau geriausią veleną, kuris, mano nuomone, yra recirkuliacinis rutulinis velenas. Paprastai jis pagamintas iš labai kieto plieno, o rutuliai sukasi aplink jį, kaštono viduje. Be didelio tikslumo, pabrėžiu ir ilgaamžiškumą, nes tokio tipo velenas gali atkurti milijardus judesių nepažeidžiant mechanizmo. Pigesnis variantas, kurį mes naudojame čia, yra trapecijos formos velenas.

3 žingsnis: apie velenus - pavieniai ir rutuliniai siūlai

Apie velenus - pavieniai ir rutuliniai siūlai
Apie velenus - pavieniai ir rutuliniai siūlai

Rutuliniai velenai, nuotraukoje kairėje, turi pusapvalius kanalus, kuriuose rutuliai ridenasi. Jie yra palyginti brangesni ir turi mažą trintį, palyginti su vieno sraigto verpstėmis, todėl išeiga yra daug didesnė (riedėjimo trintis).

Vieno sriegio velenai, esantys dešinėje vaizdo pusėje, paprastai turi trapecijos profilius, nes ši geometrija yra tinkamesnė jėgos veikimui ašine kryptimi ir sklandžiam judesio perdavimui. Jie yra palyginti nebrangūs ir turi didelę trintį, palyginti su recirkuliacinėmis rutulinėmis verpstėmis, todėl gaunamas mažas išeiga, ty slydimo trintis.

4 žingsnis: Apie velenus - programos

Apie velenus - programos
Apie velenus - programos

Velenai gali būti naudojami bet kokiam mechanizmui, kur reikalingas tiesinis judesys. Jie plačiai naudojami pramonėje mašinose ir procesuose.

Kai kurios programos apima:

  • Krovininiai keltuvai
  • Presai
  • Braškės ir tekinimo staklės
  • CNC įranga
  • Vyniojimo mašinos
  • 3D spausdintuvai
  • Lazerio pjovimo ir pjovimo įranga
  • Pramoniniai procesai
  • Pozicionavimo ir linijinio judėjimo sistemos

5 žingsnis: Apie velenus - parametrai

Apie velenus - parametrai
Apie velenus - parametrai

Kuriant mechanizmą, reikia atsižvelgti į keletą veleno savybių. Be skersmens ir žingsnio, būtina atpažinti jo gniuždymo jėgą, inercijos momentą (atsparumą sukimosi būsenos pokyčiams), konstruktyvią medžiagą, sukimosi greitį, kuriam jis bus veikiamas, veikimo kryptį (horizontalus arba vertikaliai), taikoma apkrova, be kita ko.

Tačiau, remdamiesi jau sukurtais mechanizmais, galime suprasti kelis iš šių parametrų.

Pripažinkime kai ką bendro. Pradėkime nuo STEP.

6 žingsnis: Apie velenus - žingsnis (poslinkis ir greitis)

Apie velenus - žingsnis (poslinkis ir greitis)
Apie velenus - žingsnis (poslinkis ir greitis)

Nustato veržlės nuvažiuotą ilgį per kiekvieną apsisukimą. Paprastai tai yra mm / apsisukimas.

2 mm velenas per apsisukimą sukels 2 mm poslinkį kiekviename veleno posūkyje. Tai paveiks tiesinį veržlės greitį, nes didėjant sukimosi greičiui, padidės apsisukimų skaičius per laiko vienetą, taigi ir nuvažiuotas atstumas.

Jei 2 mm sukimasis per apsisukimą sukasi 60 aps./min (vienas apsisukimas per sekundę), veržlė judės 2 mm per sekundę greičiu.

7 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas

Mūsų surinkime turiu du variklius ir mūsų klaviatūrą su ekranu, kuris atrodė kaip skaičiuotuvas, nes 3D spausdintuve padariau jiems dangtelį. „Nokia“ekrane turime šias parinktis:

F1: Pusmėnulis - Fuso pereina iš dabartinės padėties į mano nustatytą padėtį

F2: Nusileidimas - posūkis

F3: Greitis - ar galiu pakeisti pulso plotį

F4: ESC

8 žingsnis: montavimas - medžiagos

Montavimas - medžiagos
Montavimas - medžiagos

A - 10 mm linijiniai kreiptuvai

B - 2 ir 8 mm žingsnių trapecijos formos sukliai

C - gręžimo pagrindas

D - velenų guoliai

E - Gido laikikliai

F - kaštonai

G - guoliai

H - movos

I - Varikliai

J - įvairios plastikinės dalys (žymekliai, variklio laikikliai, pleištai, klaviatūros palaikymas ir ekranas

9 žingsnis: Surinkimas - 01 žingsnis

Surinkimas - 01 žingsnis
Surinkimas - 01 žingsnis

Išgręžę pagrindą (C), surenkame du variklius (I). Norėdami juos pritvirtinti, naudojame laikiklius, pagamintus 3D spausdintuve (J). Šiuo pozicionavimo žingsniu neužveržkite nė vieno varžto. Tai leis atlikti reikiamus derinimo veiksmus.

10 žingsnis: Surinkimas - 02 žingsnis

Surinkimas - 02 žingsnis
Surinkimas - 02 žingsnis

Vis dar gręždami pagrindą (C), pastatykite kreipiamuosius bėgelius (E) ir guolius (D). Išsami informacija apie plastikinį tarpiklį (J), naudojamą guolių aukščiams reguliuoti.

11 žingsnis: montavimas - 03 žingsnis

Montavimas - 03 žingsnis
Montavimas - 03 žingsnis

Naudodami spausdintą dalį sukuriame žymeklį, kad guolis (G) būtų prijungtas prie veržlės (F). Mes naudojome du žymeklius, vieną dešinę, kitą kairę. Jo funkcija yra nurodyti padėtį skalėje, kai norime nustatyti veleno sukeltą poslinkį.

12 žingsnis: Surinkimas - 04 žingsnis

Surinkimas - 04 žingsnis
Surinkimas - 04 žingsnis
Surinkimas - 04 žingsnis
Surinkimas - 04 žingsnis

Įdėkite kreiptuvą (A) ir veleną (B) į atitinkamą guolį (D) ir atramą (E) priešais variklį, tada kreiptuvą ir veleną įstatykite į guolį (G) ir kaštoną (F) ir suklio galiuku taip pat įkišame movą (H). Mes imame juos abu, kol jie pasiekia paskutinius taškus (priešinga atrama ir variklis).

Lengvai priveržkite varžtus, kad vėliau galėtumėte sureguliuoti. Pakartokite procedūrą naudodami likusį kreiptuvą ir veleną. Kai visi komponentai yra išdėstyti, mes atliekame dalių lygiavimą, užbaigdami mechaninio surinkimo etapą.

13 žingsnis: montavimas - elektronika

Montavimas - elektronika
Montavimas - elektronika
Montavimas - elektronika
Montavimas - elektronika
Montavimas - elektronika
Montavimas - elektronika

Naudodami atspausdintą plastikinį laikiklį, pritvirtinome „Nokia 5110“ekraną ir 4x4 matricos klaviatūrą. Apatinėje stendo erdvėje bus „Arduino Uno“, vairuotojas DRV8825.

Naudodami turimą gręžimą pagrinde, mes pritvirtiname mazgą.

14 žingsnis: elektros schema

Elektros schema
Elektros schema

Prijungimo schema yra paprasta. Turime DRV8825 ir tuos pačius du 17 veidrodžių, tai yra tas pats žingsnis, kurį siunčiame vienam, eina į kitą. Pasikeičia tai, kad viename iš variklių aš turiu 8 mm, o kitame - 2 mm ašį. Taigi akivaizdu, kad pirmasis su 8 mm velenu eina greičiau. Diagramoje vis dar yra ekranas ir 4x4 klaviatūra, kuri turi būti matrica.

15 žingsnis: šaltinio kodas

Bibliotekų įtraukimas ir objektų kūrimas

Mes čia turime Libą, kurį aš padariau, tai yra „StepDriver.h“. Jis paruoštas 8825, 4988 ir TB6600 tvarkyklėms. Šiame žingsnyje sukuriu objektą DRV8825, d1.

// Biblioteca responseável por capturar a tecla que foi pressionada no teclado #include // Biblioteca responseável pelos graficos do display #include // Biblioteca responseável pela comunicacao do display #include // Configuracao de pinos do Display // pin 6 - Serial clock out [SCLK] // 5 kaištis - serijiniai duomenys (DIN) // 4 kaištis - duomenų/komandų pasirinkimas (D/C) // 3 kaištis - LCD lusto pasirinkimas (CS/CE) // 2 kaištis - LCD nustatymas iš naujo (RST) „Adafruit_PCD8544“ekranas = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

Konstantos ir globalūs kintamieji

Šioje kodo dalyje aš nagrinėju matricą, kurią mokiau kitoje vaizdo pamokoje (LINK KEYBOARD). Vis dėlto, be atstumo ir greičio, kalbu apie klaviatūros objektą.

const baitas LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // apibrėžti 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“'}}; baitas PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // pinos que indicam as linhas do teclado baitas PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // pinos que indicam as colunas do teclado // instancia de Keypad, responseavel for capturar and tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // varáveis resposnsáveis por armazenar o valor digitado char customKey; nepasirašyta ilga distancija = 0; nepasirašyta ilga velocidada = 2000;

Klaviatūros skaitymo funkcija

Šiame žingsnyje turime kodą, nurodantį ekraną, kuris veikia didėjant ir mažėjant.

// Funcao responseavel por ler o valor do usuario pelo teclado -------------------------------------- --- unsigned long lerValor () {// Escreve arba submeniu que coleta os valores no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (BALTA); display.print („VALOR“); display.setTextColor (BLACK); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (BALTA); display.print („CLR“); display.setTextColor (BLACK); display.setCursor (23, 26); display.print („LIMPAR“); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (BALTA); display.print („F4“); display.setTextColor (BLACK); display.setCursor (23, 38); display.print („VOLTAR“); display.setCursor (2, 14); display.display (); Styginių narsumas = ""; char tecla = klaidinga;

kilpinis laukimas, kol bus paspaustas klavišas

Čia paaiškiname ciklo programavimą, tai yra, kur įvedate reikšmes.

// Loop 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': atvejis '7': atvejis '8': atvejis '9': atvejis '0': valor += tecla; display.print (tecla); display.display (); pertrauka; // Secla 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 (); pertrauka; // Žiūrėti ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); pertrauka; // Žr. F4 (ESC) klavišo „D“atvejį: grįžimas -1; numatytasis: pertrauka; }} // Limpa o char tecla tecla = false; }}

Variklio pavaros funkcija

Šiame žingsnyje dirbama su „judėjimo“funkcija. Aš gaunu impulsų skaičių ir kryptį, tada darau „už“.

// „Funcao responseavel por mover o motor“-------------------------------------- void mover (nepasirašytas) ilgi pulsai, bool direcao) {for (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (directcao); }}

sąranka ()

Dabar perkeliu ekraną ir tvarkyklės konfigūraciją ir netgi įdedu smeigtuką į šaltinio kodą, kad būtų lengviau. Aš inicijuoju tam tikras vertes ir nagrinėju nustatymus generuojančius metodus.

void setup () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (BLACK); // „Configuração do do Driver DRV8825“----------------------------------------- kaištis GND - Įjungti (ENA) // kaištis 13 - M0 // kaištis 12 - M1 // kaištis 11 - M2 // kaištis 10 - iš naujo nustatyti (RST) // kaištis 9 - miego režimas (SLP) // 8 kaištis - žingsnis (STP) // 7 kaištis - kryptis (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.miegas (LOW); d1.atstatyti (); d1.žingsnisPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

kilpa () - 1 dalis - Piešimo meniu

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

kilpa () - 2 dalis - Piešimo meniu

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (BALTA); display.print („F4“); display.setTextColor (BLACK); display.setCursor (17, 38); display.print („ESC“); display.display (); bool esc = klaidinga;

kilpa () - 3 dalis - Bėgimas

// 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 (); // Žiūrėti ESC klavišus, jei (distancia == -1) {esc = true; } else {// Parsisiųsti tela "Movendo" be ekrano.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BALTA); display.print („MOVENDO“); display.setTextColor (BLACK); display.setCursor (2, 14); ekranas.spaudas (distancija); display.print („Passos“); display.display ();

kilpa () - 4 dalis - Bėgimas

// Move o motor mover (distancia, LOW); // „Volta ao“meniu esc = true; } pertrauka; // Žiūrėti F2 foi pressionada case 'B': distancia = lerValor (); // Žiūrėti ESC klavišus, jei (distancia == -1) {esc = true; } else {// Parsisiųsti tela "Movendo" be ekrano.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (BALTA); display.print („MOVENDO“); display.setTextColor (BLACK); display.setCursor (2, 14); ekranas.spaudas (distancija); display.print („Passos“); display.display ();

kilpa () - 5 dalis - Bėgimas

// Move o motor mover (distancia, HIGH); // „Volta ao“meniu esc = true; } pertrauka; // Žiūrėti F3 spaudos dėklą 'C': velocidade = lerValor (); if (velocidade == -1) {esc = true; } else {// Parsisiųsti tela "Velocidade" be ekrano rodymo.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (BALTA); display.print („VELOCIDADE“); display.setTextColor (BLACK); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print („s“);

kilpa () - 6 dalis - Bėgimas

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (BALTA); display.println („Gerai!“); display.setTextColor (BLACK); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); vėlavimas (2000 m.); // „Volta ao“meniu esc = true; } pertrauka; // 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; numatytasis: pertrauka; }} // Limpa o char customKey customKey = false; }}

16 žingsnis: Apie velenus - mašinų konfigūracijos

Apie velenus - mašinų konfigūracijas
Apie velenus - mašinų konfigūracijas

Pavyzdžiui, CNC staklėse, tokiose kaip 3D spausdintuvai ir maršrutizatoriai, už padėties nustatymo valdymą atsakinga programa turi žinoti, kaip judesiai įvyks priklausomai nuo žingsninio variklio impulsų skaičiaus.

Jei žingsninio variklio tvarkyklė leidžia taikyti mikrožingsnius, į šią konfigūraciją reikia atsižvelgti apskaičiuojant pagamintą poslinkį.

Pvz., Jei 200 žingsnių variklis per apsisukimą yra prijungtas prie pavaros, nustatyta 1/16, tada vienam veleno apsisukimui reikės 16 x 200 impulsų, tai yra, 3200 impulsų kiekvienam apsisukimui. Jei šis velenas turi 2 mm žingsnį per apsisukimą, veržle reikia judėti 2 mm impulsų, kad veržlė pasislinktų 2 mm.

Tiesą sakant, programinės įrangos valdikliai dažnai naudoja priežastį, norėdami nurodyti šį santykį, „impulsų skaičių milimetre“arba „žingsnius / mm“.

17 žingsnis: Marlin

Marlinas
Marlinas

Pavyzdžiui, „Marlin“skyriuje „@section motion“matome:

/ **

* Numatytieji ašies žingsniai vienetui (žingsniai / mm)

* Pakeisti naudojant M92

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

* /

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

Šiame pavyzdyje galime daryti išvadą, kad X ir Y ašių tikslumas yra 80 impulsų, kad judėtų 1 mm, o Z - 3200 impulsų, o ekstruderiui E0 - 100.

18 žingsnis: GRBL

GRBL
GRBL

Žemiau matome GRBL konfigūravimo komandas. Naudodami komandą 100 USD, mes galime reguliuoti impulsų skaičių, reikalingą, kad X ašyje atsirastų vieno milimetro poslinkis.

Žemiau pateiktame pavyzdyje matome, kad dabartinė vertė yra 250 impulsų mm.

Y ir Z ašis galima nustatyti atitinkamai 101 USD ir 102 USD.

Rekomenduojamas: