Sisukord:
- Samm: kasutatud ressursid
- 2. samm: Spindlite kohta - mis need on?
- 3. samm: Teave spindlite kohta - ühe- ja kuulniidid
- 4. samm: Teave spindlite kohta - rakendused
- 5. samm: Teave spindlite kohta - parameetrid
- 6. samm: Teave spindlite kohta - samm (nihe ja kiirus)
- 7. samm: kokkupanek
- 8. samm: paigaldamine - materjalid
- 9. samm: kokkupanek - samm 01
- 10. samm: kokkupanek - 2. etapp
- 11. samm: paigaldamine - samm 03
- 12. samm: kokkupanek - samm 04
- 13. samm: paigaldamine - elektroonika
- 14. samm: elektriskeem
- 15. samm: lähtekood
- 16. samm: Teave spindlite kohta - masina konfiguratsioonid
- 17. samm: Marlin
- 18. samm: GRBL
- 19. samm: vaadake rohkem minu tööd:
Video: Arduino Uno koos spindli ja samm -mootoriga: 19 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:49
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?
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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:
Arduino auto tagurpidise parkimise hoiatussüsteem - Samm -sammult: 4 sammu
Arduino auto tagurpidise parkimise hoiatussüsteem | Samm-sammult: Selles projektis kujundan ma lihtsa Arduino auto tagurpidiparkimisanduri ahela, kasutades Arduino UNO ja ultraheli andurit HC-SR04. Seda Arduino -põhist auto tagasikäigu hoiatussüsteemi saab kasutada autonoomse navigeerimise, robotite liigutamise ja muude vahemike jaoks
Akustiline levitatsioon Arduino Unoga samm-sammult (8 sammu): 8 sammu
Akustiline levitatsioon Arduino Uno abil samm-sammult (8 sammu): ultraheliheli muundurid L298N DC-naissoost adapteri toiteallikas isase alalisvoolupistikuga Arduino UNOBreadboard ja analoogpordid koodi teisendamiseks (C ++)
Mecanum Omni rataste robot koos GRBL samm -mootoritega Arduino kilp: 4 sammu
Mecanum Omni rataste robot koos GRBL samm -mootoritega Arduino Shield: Mecanum Robot - projekt, mida tahtsin ehitada alates sellest ajast, kui nägin seda Dejani gread -mehhatroonika ajaveebis: howtomechatronics.com Dejan tegi tõesti head tööd, hõlmates kõiki riistvara, 3D -printimise aspekte , elektroonika, kood ja Androidi rakendus (MIT
28BYJ-48 samm-mootori nurgapositsioonikontroll koos Arduino ja analoog juhtkangiga: 3 sammu
28BYJ-48 samm-mootori nurk-positsioonikontroll koos Arduino ja analoog-juhtkangiga: see on 28BYJ-48 samm-mootori juhtimisskeem, mille olen välja töötanud oma viimase aasta väitekirjaprojekti kasutamiseks. Ma pole seda varem näinud, nii et arvasin, et laadin üles selle, mida avastasin. Loodetavasti aitab see kedagi teist
WiFi-juhitav FPV Roveri robot (koos Arduino, ESP8266 ja samm-mootoritega): 11 sammu (koos piltidega)
WiFi-juhitav FPV Roveri robot (koos Arduino, ESP8266 ja Stepper Motorsiga): see juhendab, kuidas kavandada kaugjuhtimisega kaherattaline robot-rover WiFi-võrgu kaudu, kasutades ESP8266 WiFi-mooduliga ühendatud Arduino Unot ja kaks samm -mootorit. Robotit saab juhtida tavaliste Interneti -kulmude kaudu