Sisukord:

Arduino Uno koos spindli ja samm -mootoriga: 19 sammu
Arduino Uno koos spindli ja samm -mootoriga: 19 sammu

Video: Arduino Uno koos spindli ja samm -mootoriga: 19 sammu

Video: Arduino Uno koos spindli ja samm -mootoriga: 19 sammu
Video: Самый НЕДОРОГОЙ токарный ЧПУ станок на Arduino /ProDIY 2024, Juuli
Anonim
Image
Image
Kasutatud ressursid
Kasutatud ressursid

Täna räägime mehaanika ja mehhatroonika väga olulisest teemast: masinate elementidest. Selles artiklis käsitleme spetsiaalselt spindleid, millel on mõned huvitavad funktsioonid ja rakendused. Sellegipoolest demonstreerime mõnda võimalust spindli põhjustatud liikumise arvutamiseks ja katsesõlme esitamiseks.

Seetõttu tegin allpool kokkupaneku, mis paljastab 2 mm ja teise 8 mm spindli edasiliikumise. Seda TR8 spindlit, mida ma kasutan, kasutatakse tavaliselt väikestes ruuterites ja 3D -printerites, eriti Z -teljel. Pidage meeles, et omandades mõned mõisted, mille kallal me siin töötame, saate projekteerida mis tahes tüüpi masinaid.

Samm: kasutatud ressursid

  • Trapetsikujuline spindel 8 mm läbimõõduga ja 2 mm sammuga
  • Trapetsikujuline spindel 8 mm läbimõõduga ja 8 mm sammuga
  • 8x2 spindliga äärikuga kastan
  • 8x8 spindliga äärikuga kastan
  • Laagrid 8 mm läbimõõduga spindlitele
  • Lineaarne silindriline juhik läbimõõduga 10 mm
  • Silindrilised rull -laagrid 10 mm juhikute jaoks
  • Klambrid 10 mm silindriliste juhikute jaoks
  • NEMA 17 mootorid
  • Võlli haakeseadised
  • Arduino Uno
  • Draiver DRV8825
  • 4x4 maatriksiga klaviatuur
  • Kuva Nokia 5110
  • Mitmesugused plastosad
  • Poldid ja mutrid
  • Puidust alus
  • Väline 12V toide

2. samm: Spindlite kohta - mis need on?

Spindlite kohta - mis need on?
Spindlite kohta - mis need on?

Spindlid on masinate elemendid, näiteks kruvid. See tähendab, et need on sirged vardad, mis on moodustatud pidevate sammude niitidest. Neid kasutatakse mehhanismides, mis nõuavad lineaarset liikumist ja positsioneerimist. Nad võivad avaldada suurt tõmbe- ja survejõudu ning edastada pöördemomenti. Need võimaldavad automaatse lukustusega liikumist. Neid saab valmistada erinevatest materjalidest, mis on kõige tavalisemad alumiinium ja teras.

Kuna Hiina ettevõtted toodavad trapetsikujulisi spindleid, soovitaksin teil seda tüüpi toodet hankida tuntud mutripoldi asemel. See on tingitud atraktiivsemast hinnast ja lohistamisest, mida pean kohutavaks.

Fotole panin parima spindli, millel on minu arvates ringlussevõte. Tavaliselt on see valmistatud väga kõvast terasest ja pallid keerlevad selle ümber, kastani sees. Lisaks suurepärasele täpsusele toon esile ka vastupidavuse, kuna seda tüüpi spindlid suudavad mehhanismi kahjustamata reprodutseerida miljardeid liigutusi. Odavam variant, mida me siin kasutame, on trapetsikujuline spindel.

3. samm: Teave spindlite kohta - ühe- ja kuulniidid

Spindlitest - ühe- ja kuulniidid
Spindlitest - ühe- ja kuulniidid

Vasakpoolsel fotol olevad kuulkerad on poolringikujulised kanalid, kus pallid veerevad. Need on suhteliselt kallimad ja väikese hõõrdumisega võrreldes ühe kruviga spindlitega, mille tulemuseks on palju suurem saagikus (veerehõõrdumine).

Kujutise paremal küljel olevad ühe keermestatud spindlid on tavaliselt trapetsprofiilidega, kuna see geomeetria on sobivam jõudude rakendamiseks aksiaalsuunas ja sujuvaks liikumise edastamiseks. Need on suhteliselt odavad ja neil on suur hõõrdumine võrreldes ringlussevõetavate kuulvõllidega, mille tulemuseks on madal saagikus ehk libisemishõõrdumine.

4. samm: Teave spindlite kohta - rakendused

Spindlite kohta - rakendused
Spindlite kohta - rakendused

Spindleid saab rakendada igale mehhanismile, kus on vaja lineaarset liikumist. Neid kasutatakse tööstuses laialdaselt masinates ja protsessides.

Mõned rakendused hõlmavad järgmist:

  • Kaubatõstukid
  • Pressid
  • Maasikad ja treipingid
  • CNC seadmed
  • Pakkimismasinad
  • 3D printerid
  • Laserlõikamis- ja lõikamisseadmed
  • Tööstuslikud protsessid
  • Positsioneerimise ja lineaarse liikumise süsteemid

5. samm: Teave spindlite kohta - parameetrid

Spindlite kohta - parameetrid
Spindlite kohta - parameetrid

Spindli jaoks on mitmeid omadusi, mida tuleb mehhanismi kavandamisel arvesse võtta. Lisaks läbimõõdule ja sammule on vaja ära tunda selle survetugevus, inertsimoment (vastupidavus pöörlemissageduse muutustele), konstruktiivne materjal, pöörlemiskiirus, millele see allub, töö suund (horisontaalne) või vertikaalselt), rakendatav koormus, muu hulgas.

Kuid juba konstrueeritud mehhanismide põhjal saame mitut neist parameetritest aru saada.

Tunnistame mõnda ühist hüve. Alustame STEPiga.

6. samm: Teave spindlite kohta - samm (nihe ja kiirus)

Teave spindlite kohta - samm (nihe ja kiirus)
Teave spindlite kohta - samm (nihe ja kiirus)

Määrab mutri läbitud pikkuse igal pöördel. Tavaliselt on see mm / pööre.

2 mm spindel pöörde kohta põhjustab 2 mm nihke iga pöörde ajal, mida spindel täidab. See mõjutab mutri lineaarset kiirust, kuna pöörlemiskiiruse suurenedes suureneb pöörete arv ajaühiku kohta ja sellest tulenevalt ka läbitud vahemaa.

Kui 2 mm pöörlemine pöörde kohta pöörleb kiirusel 60 p / min (üks pööre sekundis), liigub mutter kiirusega 2 mm sekundis.

7. samm: kokkupanek

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek

Meie kokkupanekul on mul kaks mootorit ja meie ekraaniga klaviatuur, mis nägi välja nagu kalkulaator, sest tegin neile 3D -printeris katte. Nokia ekraanil on meil järgmised valikud:

F1: Poolkuu - Fuso läheb praegusest asendist minu määratud asendisse

F2: kahanev - pööre

F3: kiirus - kas ma saan impulsi laiust muuta

F4: ESC

8. samm: paigaldamine - materjalid

Paigaldus - materjalid
Paigaldus - materjalid

A - 10 mm lineaarsed juhikud

B - astmete 2 ja 8 mm trapetsikujulised spindlid

C - puurimisalus

D - spindlite laagrid

E - Juhendihoidikud

F - Kastanid

G - Laagrid

H - Haakeseadised

I - Mootorid

J - mitmesugused plastosad (kursorid, mootoriklambrid, kiilud, klaviatuuri tugi ja ekraan

9. samm: kokkupanek - samm 01

Kokkupanek - samm 01
Kokkupanek - samm 01

Pärast aluse (C) puurimist paneme kokku kaks mootorit (I). Nende kinnitamiseks kasutame 3D -printeris valmistatud sulgusid (J). Ärge pingutage selles positsioonis ühtegi kruvi. See võimaldab joondamisetapis vajalikke kohandusi teha.

10. samm: kokkupanek - 2. etapp

Kokkupanek - samm 02
Kokkupanek - samm 02

Pärast aluse (C) puurimist asetage juhtrööpad (E) ja laagrid (D). Üksikasjad laagrite kõrguse reguleerimiseks kasutatava plastkate (J) kohta.

11. samm: paigaldamine - samm 03

Paigaldamine - samm 03
Paigaldamine - samm 03

Loome kursori trükitud osa abil, et ühendada laager (G) mutriga (F). Kasutasime kahte kursorit, üks parem, teine vasak. Selle ülesanne on näidata positsiooni skaalal alati, kui tahame määrata spindli põhjustatud nihke.

12. samm: kokkupanek - samm 04

Kokkupanek - samm 04
Kokkupanek - samm 04
Kokkupanek - samm 04
Kokkupanek - samm 04

Sisestage juhik (A) ja spindel (B) mootori vastas olevasse laagrisse (D) ja toesse (E), seejärel sisestage juht ja spindel laagrisse (G) ja kastani (F) ning spindli otsa sisestame ka siduri (H). Võtame neid mõlemaid, kuni nad jõuavad oma viimastesse punktidesse (vastupidine tugi ja mootor).

Pingutage kruvisid kergelt, et neid hiljem reguleerida. Korrake protseduuri allesjäänud juhiku ja spindli abil. Kui kõik komponendid on paigutatud, teeme osade joondamise, lõpetades mehaanilise kokkupaneku etapi.

13. samm: paigaldamine - elektroonika

Paigaldus - elektroonika
Paigaldus - elektroonika
Paigaldus - elektroonika
Paigaldus - elektroonika
Paigaldus - elektroonika
Paigaldus - elektroonika

Kasutades trükitud plastikust hoidikut, kinnitasime Nokia 5110 ekraani ja 4x4 maatriksi klaviatuuri. Stendi alumises ruumis asub Arduino Uno, draiver DRV8825.

Kasutades aluses olevat puurimist, kinnitame sõlme.

14. samm: elektriskeem

Elektriskeem
Elektriskeem

Juhtmestiku skeem on lihtne. Meil on DRV8825 ja samad kaks 17 peeglit, st sama samm, mille me ühele saadame, läheb teisele. Muutub see, et ühes mootoris on mul 8 mm ja teises 2 mm spindel. Seega on ilmne, et esimene, 8 mm spindliga, läheb kiiremini. Diagrammil on endiselt ekraan ja 4x4 klaviatuur, mis peab olema maatriks.

15. samm: lähtekood

Raamatukogude kaasamine ja objektide loomine

Meil on siin Lib, mida ma tegin, mis on StepDriver.h. See on ette valmistatud 8825, 4988 ja ka TB6600 draiveritele. Loon selles etapis objekti 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) // tihvt 5 - jadaandmete väljund (DIN) // tihvt 4 - andmete/käskude valimine (D/C) // tihvt 3 - LCD -kiibi valimine (CS/CE) // tihvt 2 - LCD lähtestamine (RST) Adafruit_PCD8544 kuva = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia või draiver DRV8825 DRV8825 d1;

Konstandid ja globaalsed muutujad

Selles koodi osas käsitlen maatriksit, mida õpetasin teises videotunnis (LINK KEYBOARD). Sellegipoolest räägin ma lisaks kaugusele ja kiirusele ka klaviatuuri objektist.

const bait LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // määratle 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" '}}; bait 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 = Klahvistik (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis por armazenar o valor digitado char customKey; allkirjata pikk distants = 0; allkirjata pikk velocidade = 2000;

Klaviatuuri lugemise funktsioon

Selles etapis on meil ekraanile viitav kood, mis töötab suureneva ja väheneva printimise korral.

// Funcao vastus por ler o valor do usuario pelo teclado -------------------------------------- --- unsigned long lerValor () {// Escreve o alammenüü que coleta os valores no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (VALGE); display.print ("VALOR"); display.setTextColor (MUST); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (VALGE); display.print ("CLR"); display.setTextColor (MUST); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (VALGE); display.print ("F4"); display.setTextColor (MUST); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); String valor = ""; char tecla = vale;

loopimine ootab klahvi vajutamist

Siin selgitame silmuste programmeerimist, see tähendab, kuhu sisestate väärtused.

// 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': case '7': case '8': case '9': case '0': valor += tecla; display.print (tecla); display.display (); murda; // See 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 (); murda; // Vaadake ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); murda; // Vaadake F4 (ESC) foi pressionada case 'D': return -1; vaikimisi: murda; }} // Limpa o char tecla tecla = false; }}

Mootori ajami funktsioon

Selles etapis töötatakse "liigutamise" funktsiooniga. Ma saan impulsside arvu ja suuna ning siis teen "eest".

// Funcao vastus mootorile või mootorile -------------------------------------- void mover (allkirjastamata) pikad pulsod, bool direcao) {for (allkirjastamata pikk i = 0; i <pulsos; i ++) {d1.motorMove (directcao); }}

seadistamine ()

Nüüd nihutan ekraani ja draiveri konfiguratsiooni ning panen selle kinnitamise hõlbustamiseks isegi kinnitamise lähtekoodi sisse. Ma lähtestan teatud väärtused ja käsitlen seadeid genereerivaid meetodeid.

void setup () {// Konfiguratsiooni kuvamine ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (MUST); // Draiveri DRV8825 konfigureerimine ---------------------------------------- // tihvt GND - lubamine (ENA) // tihvt 13 - M0 // tihvt 12 - M1 // tihvt 11 - M2 // tihvt 10 - lähtestamine (RST) // tihvt 9 - unerežiim (SLP) // tihvt 8 - samm (STP) // tihvt 7 - suund (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.unenägu (LOW); d1.nullimine (); d1.etappMer (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1. osa - Joonistusmenüü

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

loop () - 2. osa - Joonistusmenüü

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (VALGE); display.print ("F4"); display.setTextColor (MUST); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = vale;

silmus () - 3. osa - Jooksmine

// 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 (); // Vaadake ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve a tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (VALGE); display.print ("MOVENDO"); display.setTextColor (MUST); display.setCursor (2, 14); display.print (distancia); display.print ("Passod"); display.display ();

silmus () - 4. osa - Jooksmine

// Mootori liigutamine (distancia, LOW); // Volta ao menüü esc = true; } murda; // Vaadake F2 foi pressionada case 'B': distancia = lerValor (); // Vaadake ESC foi pressionada if (distancia == -1) {esc = true; } else {// Escreve a tela "Movendo" no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (VALGE); display.print ("MOVENDO"); display.setTextColor (MUST); display.setCursor (2, 14); display.print (distancia); display.print ("Passod"); display.display ();

silmus () - 5. osa - Jooksmine

// Mootori liigutamine (distancia, HIGH); // Volta ao menüü esc = true; } murda; // Vaadake F3 foi pressionada case 'C': velocidade = lerValor (); if (velocidade == -1) {esc = true; } else {// Escreve a tela "Velocidade" puudub kuva kuvamine.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (VALGE); display.print ("VELOCIDADE"); display.setTextColor (MUST); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");

silmus () - 6. osa - Jooksmine

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (VALGE); display.println ("OK!"); display.setTextColor (MUST); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); viivitus (2000); // Volta ao menüü esc = true; } murda; // 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; vaikimisi: murda; }} // Limpa või char customKey customKey = false; }}

16. samm: Teave spindlite kohta - masina konfiguratsioonid

Spindlite kohta - masina konfiguratsioonid
Spindlite kohta - masina konfiguratsioonid

Näiteks CNC -masinates, näiteks 3D -printerites ja ruuterites, peab positsioneerimiskontrolli eest vastutav programm teadma, kuidas liigutused toimuvad vastavalt samm -mootorile antud impulsside arvule.

Kui astmemootori juht lubab rakendada mikroastmeid, tuleb seda konfiguratsiooni arvestada toodetud nihke arvutamisel.

Näiteks kui 200-astmeline mootor pöörde kohta on ühendatud ajamiga 1/16, siis on spindli ühe pöörde jaoks vaja 16 x 200 impulssi, see tähendab 3200 impulssi iga pöörde kohta. Kui selle spindli samm on 2 mm pöörde kohta, kulub mutris 2 mm liikumiseks draiveris 3200 impulssi.

Tegelikult kasutavad tarkvara kontrollerid sageli selle suhte täpsustamiseks põhjust, "impulsside arv millimeetri kohta" või "sammu / mm".

17. samm: Marlin

Marlin
Marlin

Näiteks Marlinis näeme jaotises @section motion:

/ **

* Vaikimisi telje sammud ühiku kohta (sammud / mm)

* Alistamine M92 abil

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

* /

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

Selles näites võime järeldada, et X- ja Y -telgede täpsus on 80 impulssi, et liikuda 1 mm, samas kui Z vajab 3200 impulssi ja ekstruuder E0 vajab 100.

18. samm: GRBL

GRBL
GRBL

Allpool näeme GRBL -i konfiguratsioonikäsklusi. Käsuga $ 100 saame reguleerida impulsside arvu, mis on vajalikud X-teljel ühe millimeetri nihke tekitamiseks.

Allolevas näites näeme, et praegune väärtus on 250 impulssi mm kohta.

Y- ja Z -telge saab määrata vastavalt $ 101 ja $ 102.

Soovitan: