Përmbajtje:

Arduino Uno me gisht dhe motor katran: 19 hapa
Arduino Uno me gisht dhe motor katran: 19 hapa

Video: Arduino Uno me gisht dhe motor katran: 19 hapa

Video: Arduino Uno me gisht dhe motor katran: 19 hapa
Video: Объяснение прошивки Marlin 2.0.x 2024, Korrik
Anonim
Image
Image
Burimet e Përdorura
Burimet e Përdorura

Sot do të flasim për një lëndë shumë të rëndësishme në mekanikë dhe mekatronikë: elementet e makinave. Në këtë artikull, ne do të trajtojmë në mënyrë specifike gishtat, duke shfaqur disa veçori dhe aplikime interesante. Megjithatë, ne do të demonstrojmë disa mënyra për llogaritjen e lëvizjes së shkaktuar nga një gisht dhe paraqitjen e një montimi testues.

Bëra montimin më poshtë, pra, i cili ekspozon përparimin e një gishti 2mm dhe një tjetër prej 8mm. Këto gishta TR8 që po përdor janë përdorur zakonisht në rutera të vegjël dhe printera 3D, veçanërisht në boshtin Z. Duke kujtuar se duke zotëruar disa koncepte mbi të cilat do të punojmë këtu, ju do të jeni në gjendje të dizajnoni çdo lloj makine.

Hapi 1: Burimet e përdorura

  • Bisht trapezoidal me diametër 8 mm dhe katran 2 mm
  • Bisht trapezoidal 8 mm në diametër dhe 8 mm në lartësi
  • Gështenjë me fllanxhë 8x2
  • Gështenjë me fllanxhë 8x8
  • Kushineta për gishta me diametër 8 mm
  • Udhëzues cilindrik linear 10 mm në diametër
  • Kushineta cilindrike me rrota për udhëzues 10mm
  • Kllapa për udhëzues cilindrikë 10 mm
  • NEMA 17 Motors
  • Bashkues boshtesh
  • Arduino Uno
  • Shoferi DRV8825
  • Tastiera me matricë 4x4
  • Shfaq Nokia 5110
  • Pjesë të ndryshme plastike
  • Bulona dhe arra
  • Baza e drurit
  • Furnizimi me energji i jashtme 12V

Hapi 2: Rreth gishtave - cilat janë ato?

Rreth gishtave - çfarë janë ato?
Rreth gishtave - çfarë janë ato?

Gishtat janë elementë të makinave, të tilla si vida. Kjo do të thotë, ato janë shirita të drejtë të formuar nga fije të hapave të vazhdueshëm. Ato përdoren në mekanizma që kërkojnë lëvizje dhe pozicionim linear. Ata mund të ushtrojnë forca të larta tërheqëse dhe shtypëse dhe të transmetojnë çift rrotullues. Ato lejojnë lëvizjen me kyçje automatike. Ato mund të ndërtohen nga materiale të ndryshme, duke qenë alumini dhe çeliku më i zakonshëm.

Ndërsa kompanitë kineze po prodhojnë gishtat trapezoidal, unë do t'ju sugjeroja që të merrni këtë lloj produkti në vend të bulonës së arrës së njohur. Kjo është për shkak të çmimit më tërheqës dhe zvarritjes, të cilën unë e konsideroj të tmerrshme.

Në foto kam vënë boshtin më të mirë që ka, sipas mendimit tim, që është gishti i topit që qarkullon. Zakonisht është bërë prej një çeliku shumë të fortë, dhe topat rrotullohen rreth tij, brenda gështenjës. Përveç saktësisë që është e madhe, unë gjithashtu theksoj qëndrueshmërinë, pasi ky lloj gishti mund të riprodhojë miliarda lëvizje pa dëmtuar mekanizmin. Një opsion më i lirë, i cili është ai që ne përdorim këtu, është gishti trapezoidal.

Hapi 3: Rreth gishtave - Threads Single dhe Top

Rreth gishtave - Threads Single dhe Top
Rreth gishtave - Threads Single dhe Top

Gishtat e topit, në foto në të majtë, kanë kanale gjysmërrethore ku topat rrotullohen. Ato janë relativisht më të shtrenjta dhe kanë fërkime të ulëta në krahasim me gishtat e vetëm të vidhave, duke çuar në një rendiment shumë më të lartë (fërkime rrotulluese).

Gishtat me një fije në anën e djathtë të figurës zakonisht kanë profile trapezoidale, pasi kjo gjeometri është më e përshtatshme për të zbatuar forcat në drejtimin boshtor dhe transmetimin e qetë të lëvizjes. Ato janë relativisht të lira dhe kanë fërkime të larta në krahasim me gishtat e topit që qarkullojnë, duke çuar në një rendiment të ulët, domethënë fërkime rrëshqitëse.

Hapi 4: Rreth gishtave - Aplikimet

Rreth gishtave - Aplikimet
Rreth gishtave - Aplikimet

Spindles mund të aplikohen në çdo mekanizëm ku kërkohet lëvizje lineare. Ato përdoren gjerësisht në industri në makineri dhe procese.

Disa aplikacione përfshijnë:

  • Ashensorët e ngarkesave
  • Shtyp
  • Luleshtrydhe dhe torno
  • Pajisjet CNC
  • Makina mbështjellëse
  • Printera 3D
  • Pajisje për prerje dhe prerje me lazer
  • Proceset industriale
  • Sistemet e pozicionimit dhe lëvizjes lineare

Hapi 5: Rreth gishtave - Parametrat

Rreth gishtave - Parametrat
Rreth gishtave - Parametrat

Ekzistojnë disa karakteristika të një gishti që duhet të merren parasysh gjatë hartimit të një mekanizmi. Përveç diametrit dhe lartësisë së tij, është e nevojshme të njihet forca e tij në shtypje, momenti i inercisë (rezistenca ndaj ndryshimit në gjendjen e tij rrotulluese), materiali konstruktiv, shpejtësia e rrotullimit të cilës do t'i nënshtrohet, drejtimi i funksionimit (horizontal ose vertikale), ngarkesa e aplikuar, ndër të tjera.

Por, bazuar në mekanizmat e ndërtuar tashmë, ne mund të intuitojmë disa nga këto parametra.

Le të njohim disa të mira të përbashkëta. Le të fillojmë me HAPIN.

Hapi 6: Rreth gishtave - Hapi (zhvendosja dhe shpejtësia)

Rreth gishtave - hapi (zhvendosja dhe shpejtësia)
Rreth gishtave - hapi (zhvendosja dhe shpejtësia)

Përcakton gjatësinë e përshkuar nga arrë në çdo rrotullim. Kjo është zakonisht në mm / revolucion.

Një bosht 2 mm për rrotullim do të shkaktojë një zhvendosje prej 2 mm në çdo kthesë që kryen gishti. Do të ndikojë në shpejtësinë lineare të arrës, meqenëse me rritjen e shpejtësisë së rrotullimit, numri i rrotullimeve për njësi të kohës do të rritet dhe rrjedhimisht edhe distanca e përshkuar gjithashtu.

Nëse një rrotullim 2 mm për rrotullim rrotullohet në 60 RPM (një rrotullim në sekondë), arrë do të lëvizë me 2 mm për sekondë.

Hapi 7: Asambleja

Kuvendi
Kuvendi
Kuvendi
Kuvendi

Në asamblenë tonë, unë kam dy motorë dhe tastierën tonë me ekranin, i cili dukej si një kalkulator, sepse bëra një mbulesë për ta në printerin 3D. Në ekranin Nokia kemi opsionet e mëposhtme:

F1: Gjysmëhëna - Fuso kalon nga pozicioni aktual në pozicionin që unë përcaktoj

F2: Zbritëse - Kthesë

F3: Shpejtësia - A mund ta ndryshoj gjerësinë e pulsit

F4: ESC

Hapi 8: Montimi - Materialet

Montimi - Materialet
Montimi - Materialet

Udhëzues linearë A - 10mm

B - gishtat trapezoidal të hapave 2 dhe 8mm

C - Baza e shpimit

D - kushineta për gishta

E - Mbajtësit e udhëzuesve

F - Gështenja

G - kushineta

H - Lidhëse

I - Motorët

J - Pjesë të ndryshme plastike (kursorët, kllapat e motorit, pykat, mbështetja dhe ekrani i tastierës

Hapi 9: Asambleja - Hapi 01

Asambleja - Hapi 01
Asambleja - Hapi 01

Pas shpimit të bazës (C), ne mbledhim dy motorët (I). Për t'i lidhur ato, ne përdorim kllapa të bëra në printerin 3D (J). Mos shtrëngoni asnjë nga vidhat në këtë hap të pozicionimit. Kjo do të lejojë rregullimet e nevojshme në hapin e shtrirjes.

Hapi 10: Asambleja - Hapi 02

Asambleja - Hapi 02
Asambleja - Hapi 02

Duke vazhduar shpimin e bazës (C), vendosni shinat udhëzuese (E) dhe kushinetat (D). Detaje për shtresën plastike (J) të përdorur për të rregulluar lartësitë e kushinetave.

Hapi 11: Montimi - Hapi 03

Montimi - Hapi 03
Montimi - Hapi 03

Ne krijojmë një kursor duke përdorur një pjesë të shtypur për të lidhur kushinetën (G) me arrë (F). Ne përdorëm dy kursorë, njëri djathtas tjetri majtas. Funksioni i tij është të tregojë pozicionin në një shkallë sa herë që duam të përcaktojmë zhvendosjen e shkaktuar nga gishti.

Hapi 12: Asambleja - Hapi 04

Asambleja - Hapi 04
Asambleja - Hapi 04
Asambleja - Hapi 04
Asambleja - Hapi 04

Vendosni udhëzuesin (A) dhe boshtin (B) në kushinetën përkatëse (D) dhe mbështetësen (E), përballë motorit, pastaj futni udhëzuesin dhe boshtin në kushinetën (G) dhe gështenjën (F) dhe në maja e boshtit futim edhe bashkuesin (H). Ne i marrim të dy derisa të arrijnë pikat e tyre përfundimtare (mbështetja dhe motori i kundërt).

Shtrëngoni lehtë vidhat për të lejuar një rregullim të mëvonshëm. Përsëriteni procedurën duke përdorur udhëzuesin dhe gishtin e mbetur. Me të gjithë përbërësit e pozicionuar, ne kryejmë shtrirjen e pjesëve, duke përfunduar fazën e montimit mekanik.

Hapi 13: Montimi - Elektronikë

Montimi - Elektronikë
Montimi - Elektronikë
Montimi - Elektronikë
Montimi - Elektronikë
Montimi - Elektronikë
Montimi - Elektronikë

Duke përdorur një mbajtëse plastike të shtypur, ne siguruam ekranin Nokia 5110 dhe një tastierë me matricë 4x4. Në hapësirën e poshtme të stendës do të banojë Arduino Uno, shoferi DRV8825.

Duke përdorur shpimin e disponueshëm në bazë, ne e lidhim montimin.

Hapi 14: Skema Elektrike

Skema Elektrike
Skema Elektrike

Diagrami i instalimeve elektrike është i thjeshtë. Ne kemi DRV8825 dhe të njëjtat dy 17 pasqyra, domethënë të njëjtin hap që i dërgojmë njërit shkon te tjetri. Ajo që ndryshon është se në njërin prej motorëve kam një gisht 8 mm dhe në tjetrin një gisht 2 mm. Obshtë e qartë, pra, se e para, me gisht 8mm, shkon më shpejt. Ende në diagram janë ekrani dhe tastiera 4x4, e cila duhet të jetë matricë.

Hapi 15: Kodi Burimor

Përfshirja e bibliotekave dhe krijimi i objekteve

Ne kemi këtu një Lib që kam bërë, që është StepDriver.h. Shtë përgatitur për drejtuesit 8825, 4988 dhe gjithashtu TB6600. Unë krijoj në këtë hap objektin DRV8825, d1.

// Biblioteca përgjegjëse për të kapur një përvojë që ju mund të shtypni në një teknologji #përfshini // Biblioteca përgjegjëse për grafikat e shfaqjes #përfshijnë // Përfshini përgjigjet bibliotekë për të shfaqur #përfshini // Konfigurimi i pinos do të shfaqë // pin 6 - Ora e serisë jashtë (SCLK) // pin 5 - Dalja e të dhënave serike (DIN) // pin 4 - Zgjedhja e të dhënave/komandës (D/C) // pin 3 - përzgjedhja e çipit LCD (CS/CE) // pin 2 - Rivendosja e LCD (RST) Shfaqja Adafruit_PCD8544 = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia ose shofer DRV8825 DRV8825 d1;

Konstantet dhe ndryshoret globale

Në këtë pjesë të kodit trajtoj matricën, të cilën e dhashë në një video mësim tjetër (LINK TABELA). Megjithatë, unë po flas për objektin e tastierës, përveç distancës dhe shpejtësisë.

const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // definoni uma matriz com os simbolet që dëshirojnë të lidhen me teknologjinë e SIMBOLOS [LINHAS] [COLUNAS] = {{'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '}}; byte PINOS_LINHA [LINHAS] = {A2, A3, A4, A5}; // pinos que indicam as linhas do teclado byte PINOS_COLUNA [COLUNAS] = {0, 1, A0, A1}; // mund të tregohet si kolona të përdorura // instancia de Keypad, të përgjigjet për të kapur një përvojë të shtypjes së tastierës customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variacione të rezosnave të armatosur ose të vlefshme të shifrave sipas zakonitKey; distancë e gjatë e panënshkruar = 0; velocidade e gjatë e panënshkruar = 2000;

Funksioni i leximit të tastierës

Në këtë hap kemi kodin që i referohet ekranit, i cili punon me shtypjen në rritje dhe në rënie.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- pa shenjë e gjatë lerValor () {// Escreve ose nënmenu që të përdorni një vlerë të pa shfaqur të ekranit. ClearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (E BARDH); display.print ("VALOR"); display.setTextColor (ZI); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (E BARDH); display.print ("CLR"); display.setTextColor (ZI); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (E BARDH); ekran.print ("F4"); display.setTextColor (ZI); display.setCursor (23, 38); ekran.print ("VOLTAR"); display.setCursor (2, 14); display.display (); Vlera e vargut = ""; char tecla = false;

lak duke pritur që tasti të shtypet

Këtu ne shpjegojmë programimin Loop, domethënë ku futni vlerat.

// Loop infinito enquanto nao chamar ose return ndërsa (1) {tecla = customKeypad.getKey (); if (tecla) {switch (tecla) {// Se teclas de 0 a 9 forem pressionadas rast '1': rast '2': rast '3': rast '4': rast '5': rast '6': rasti '7': rasti '8': rasti '9': rasti '0': trimëri += tecla; ekran.print (tecla); display.display (); pushim; // Se tecla CLR foi pressionada case 'c': // Limpa a string valor valor = ""; // Apaga o valor do display.fillRect (2, 14, 84, 8, 0); display.setCursor (2, 14); display.display (); pushim; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); pushim; // Se tecla F4 (ESC) foi pressionada case 'D': return -1; parazgjedhje: pushim; }} // Limpa o char tecla tecla = false; }}

Funksioni i drejtimit të motorit

Funksioni "lëviz" është punuar në këtë hap. Marr numrin e impulseve dhe drejtimin dhe pastaj bëj një "për".

// Funcao responsavel por lëvizës ose motor -------------------------------------- lëvizës i pavlefshëm (i panënshkruar pulsos i gjatë, bool direcao) {për (i panënshkruar i gjatë i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

konfigurim ()

Tani e zhvendos ekranin dhe konfigurimin e drejtuesit, dhe madje e vendos kunjin brenda kodit burimor për ta bërë më të lehtë. I inicoj vlera të caktuara dhe merrem me metodat që krijojnë cilësimet.

void setup () {// Configuracao do display ---------------------------------------- -------- shfaqje.filloj (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (ZI); // Configuração do Driver DRV8825 ------------------------------------------ // pin GND - Aktivizo (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Sleep (SLP) // pin 8 - Step (STP) // pin 7 - Drejtimi (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.gjumë (I ULT); d1. rivendos (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

lak () - Pjesa e parë - Menyja e vizatimit

lak void () {// Escreve o Menu do Programa pa ekran ----------------------------------- ekran. ClearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (E BARDH); ekran.print ("F1"); display.setTextColor (ZI); display.setCursor (17, 2); ekran.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (E BARDH); ekran.print ("F2"); display.setTextColor (ZI); display.setCursor (17, 14); ekrani.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (E BARDH); ekran.print ("F3"); display.setTextColor (ZI); display.setCursor (17, 26); display.print ("VELOCIDADE");

lak () - Pjesa 2 - Menyja e vizatimit

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (E BARDH); ekran.print ("F4"); display.setTextColor (ZI); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = false;

lak () - Pjesa 3 - Drejtimi

// Përshkruani një përvojë tekla F4 (ESC) për shtypje ndërsa (! Esc) {// kapni një përvojë shtypëse për ta bërë customKey = customKeypad.getKey (); // caso alguma tecla foi pressionada if (customKey) {// Trata a switch apertada switch (customKey) {// Se tecla F1 foi pressionada case 'A': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Krijoni një tela "Movendo" pa ekran.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (E BARDH); display.print ("MOVENDO"); display.setTextColor (ZI); display.setCursor (2, 14); ekran.print (distancia); ekran.print ("Passos"); display.display ();

lak () - Pjesa 4 - Drejtimi

// Lëvizni lëvizësin e motorit (distanca, LOW); // Volta ao menu esc = e vërtetë; } pushim; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } else {// Krijoni një tela "Movendo" pa ekran.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (E BARDH); display.print ("MOVENDO"); display.setTextColor (ZI); display.setCursor (2, 14); ekran.print (distancia); ekran.print ("Passos"); display.display ();

lak () - Pjesa 5 - Drejtimi

// Lëvizni lëvizësin e motorit (distanca, LART); // Volta ao menu esc = e vërtetë; } pushim; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); nëse (velocidade == -1) {esc = true; } else {// Shfrytëzoni një tela "Velocidade" pa ekran.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (E BARDH); display.print ("VELOCIDADE"); display.setTextColor (ZI); display.setCursor (2, 14); ekran.print (velocidade); ekran.print (char (229)); display.print ("s");

lak () - Pjesa 6 - Drejtimi

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (E BARDH); display.println ("OK!"); display.setTextColor (ZI); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); vonesa (2000); // Volta ao menu esc = e vërtetë; } pushim; // Se tecla F4 (ESC) për çështjen e shtypjes 'D': // Se tecla CLR foi pressionada case 'c': // Se tecla ENT foi pressionada case 'e': // Volta ao menu esc = true; parazgjedhje: pushim; }} // Limpa o char customKey customKey = false; }}

Hapi 16: Rreth gishtave - Konfigurimet e makinerisë

Rreth gishtave - Konfigurimet e makinerisë
Rreth gishtave - Konfigurimet e makinerisë

Në makinat CNC të tilla si printerët 3D dhe ruterat për shembull, programi përgjegjës për kontrollin e pozicionimit duhet të dijë se si do të ndodhin lëvizjet në funksion të numrit të impulseve që i jepen motorit stepper.

Nëse drejtuesi i motorit hap lejon aplikimin e mikro-hapave, ky konfigurim duhet të merret parasysh në llogaritjen e zhvendosjes së prodhuar.

Për shembull, nëse një motor me 200 hapa për rrotullim është i lidhur me një drejtues të vendosur në 1/16, atëherë 16 x 200 impulse do të kërkohen për një revolucion të vetëm të boshtit, domethënë 3200 impulse për çdo revolucion. Nëse kjo gisht ka një hap prej 2mm për rrotullim, do të duhen 3200 impulse në drejtues që arrë të lëvizë 2mm.

Në fakt, kontrolluesit e softuerit shpesh përdorin një arsye për të specifikuar këtë raport, "numrin e impulseve për milimetër" ose "hapa / mm".

Hapi 17: Marlin

Marlin
Marlin

Në Marlin, për shembull, ne shohim në seksionin @section motion:

/ **

* Hapat e paracaktuar të boshtit për njësi (hapa / mm)

* Anulo me M92

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

* /

#përcakto DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}

Në këtë shembull, mund të konkludojmë se akset X dhe Y kanë një saktësi prej 80 pulse për të lëvizur 1mm, ndërsa Z ka nevojë për 3200 impulse dhe ekstruderit E0 100.

Hapi 18: GRBL

GRBL
GRBL

Më poshtë shohim komandat e konfigurimit GRBL. Me komandën $ 100, ne mund të rregullojmë numrin e impulseve të kërkuara për të shkaktuar një zhvendosje prej një milimetri në boshtin X.

Në shembullin e mëposhtëm mund të shohim se vlera aktuale është 250 impulse për mm.

Akset Y dhe Z mund të vendosen përkatësisht $ 101 dhe $ 102.

Recommended: