INHOUDSOPGAWE:

Arduino Uno met spil en motor: 19 stappe
Arduino Uno met spil en motor: 19 stappe

Video: Arduino Uno met spil en motor: 19 stappe

Video: Arduino Uno met spil en motor: 19 stappe
Video: Управление серводвигателем с помощью потенциометра с помощью Arduino 2024, November
Anonim
Image
Image
Hulpbronne gebruik
Hulpbronne gebruik

Vandag gaan ons praat oor 'n baie belangrike onderwerp in meganika en megatronika: die elemente van masjiene. In hierdie artikel sal ons spesifiek aandag gee aan die spindels, met 'n paar interessante funksies en toepassings. Tog sal ons 'n paar maniere demonstreer om die beweging wat deur 'n spil veroorsaak word, te bereken en 'n toetseenheid voor te stel.

Ek het dus die onderstaande samestelling gemaak wat die vooruitgang van 'n as van 2 mm en 'n ander van 8 mm blootstel. Hierdie TR8 spindels wat ek gebruik, word algemeen gebruik in klein routers en 3D -drukkers, veral op die Z -as. Onthou dat u 'n paar masjiene kan ontwerp deur 'n paar konsepte waaraan ons hier gaan werk te bemeester.

Stap 1: Hulpbronne gebruik

  • Trapeziumspindel 8 mm in deursnee en 2 mm steek
  • Trapeziumspil 8 mm in deursnee en 8 mm in steek
  • Kastanje met kastrol 8x2
  • 8x8 spindel geflankeerde kastaiingbruin
  • Laers vir spindels met 'n deursnee van 8 mm
  • Lineêre silindriese gids 10 mm in deursnee
  • Silindriese rollagers vir 10 mm geleide
  • Hakies vir 10 mm silindriese gidse
  • NEMA 17 Motors
  • Askoppelinge
  • Arduino Uno
  • Bestuurder DRV8825
  • 4x4 matriks sleutelbord
  • Vertoon Nokia 5110
  • Diverse plastiek dele
  • Boute en moere
  • Hout basis
  • Eksterne 12V kragtoevoer

Stap 2: Oor spindels - wat is dit?

Oor spindels - wat is dit?
Oor spindels - wat is dit?

Spindels is elemente van masjiene, soos skroewe. Dit wil sê, dit is reguit stawe wat gevorm word deur drade van deurlopende stappe. Hulle word gebruik in meganismes wat lineêre beweging en posisionering vereis. Hulle kan hoë trek- en drukkragte uitoefen en wringkrag oordra. Hulle laat beweging toe met outomatiese sluiting. Hulle kan van verskillende materiale vervaardig word, aangesien dit die algemeenste aluminium en staal is.

Aangesien Chinese ondernemings die trapeziumvormige spindels vervaardig, stel ek voor dat u hierdie tipe produk in plaas van die bekende moerbout koop. Dit is te danke aan die meer aantreklike prys en die weerstand wat ek as afskuwelik beskou.

Op die foto sit ek die beste spil wat na my mening die sirkulêre balspil is. Dit is gewoonlik gemaak van 'n baie harde staal, en die balle draai om dit, binne -in die kastaiingbruin. Behalwe die groot presisie, beklemtoon ek ook die duursaamheid, aangesien hierdie tipe spil miljarde bewegings kan weergee sonder om die meganisme te beskadig. 'N Goedkoper opsie, wat ons hier gebruik, is die trapeziumspil.

Stap 3: Oor spindels - enkel- en baldrade

Oor spindels - enkel- en baldrade
Oor spindels - enkel- en baldrade

Die balspindels, op die foto links, het halfsirkelvormige kanale waar die balle rol. Hulle is relatief duurder en het lae wrywing in vergelyking met enkelskroefspindels, wat lei tot 'n baie hoër opbrengs (rolwrywing).

Die enkeldraadspindels aan die regterkant van die beeld het gewoonlik trapeziumprofiele, aangesien hierdie meetkunde meer geskik is om kragte in die aksiale rigting en gladde bewegingsoordrag uit te oefen. Hulle is relatief goedkoop en het 'n hoë wrywing in vergelyking met sirkulerende balspindels, wat lei tot 'n lae opbrengs, dws glywrywing.

Stap 4: Oor spindels - toepassings

Oor Spindles - Toepassings
Oor Spindles - Toepassings

Spindels kan toegepas word op enige meganisme waar lineêre beweging nodig is. Hulle word wyd in die industrie gebruik in masjinerie en prosesse.

Sommige toepassings sluit in:

  • Vraghysers
  • Perse
  • Aarbeie en draaibanke
  • CNC toerusting
  • Inpakmasjiene
  • 3D -drukkers
  • Lasersny- en snytoerusting
  • Industriële prosesse
  • Posisionering en lineêre bewegingsisteme

Stap 5: Oor spindels - parameters

Oor spindels - parameters
Oor spindels - parameters

Daar is verskeie eienskappe van 'n spil wat in ag geneem moet word by die ontwerp van 'n meganisme. Benewens sy deursnee en toonhoogte, is dit ook nodig om sy druksterkte, traagheidsmoment (weerstand teen verandering in rotasietoestand), konstruktiewe materiaal, rotasiesnelheid waaraan dit sal onderwerp word, werkingsrigting (horisontaal) of vertikaal), onder meer die toegepaste vrag.

Maar, gebaseer op reeds gekonstrueerde meganismes, kan ons verskeie van hierdie parameters aanvoel.

Kom ons herken 'n paar algemene goed. Kom ons begin met STAP.

Stap 6: Oor spindels - stap (verplasing en snelheid)

Oor spindels - stap (verplasing en snelheid)
Oor spindels - stap (verplasing en snelheid)

Bepaal die lengte van die moer by elke omwenteling. Dit is gewoonlik in mm / omwenteling.

'N As van 2 mm per omwenteling sal 'n verplasing van 2 mm veroorsaak by elke draai wat die spil verrig. Dit sal die lineêre snelheid van die moer beïnvloed, aangesien met die toename van die rotasiesnelheid die aantal omwentelinge per tydseenheid toeneem en gevolglik ook die afgelegde afstand.

As 'n draai van 2 mm per omwenteling teen 60 RPM (een omwenteling per sekonde) draai, beweeg die moer teen 2 mm per sekonde.

Stap 7: Montering

Vergadering
Vergadering
Vergadering
Vergadering

In ons vergadering het ek twee motors en ons sleutelbord met die skerm, wat soos 'n sakrekenaar gelyk het, want ek het 'n omslag daarvoor in die 3D -drukker gemaak. Op die Nokia -skerm het ons die volgende opsies:

F1: Halfmaan - Fuso gaan van die huidige posisie na die posisie wat ek bepaal

F2: Afnemend - Draai

F3: Spoed - Kan ek die polswydte verander

F4: ESC

Stap 8: Montering - materiaal

Montering - materiaal
Montering - materiaal

A - 10 mm lineêre gidse

B - Trapeziumspindels van trappe 2 en 8 mm

C - Boorbasis

D - Laers vir spil

E - Gidshouers

F - Kastanjes

G - laers

H - Koppelings

Ek - enjins

J - Verskeie plastiekonderdele (wysers, enjinhakies, wiggies, sleutelbordondersteuning en vertoning

Stap 9: Samestelling - Stap 01

Samestelling - Stap 01
Samestelling - Stap 01

Na die boor van die basis (C), monteer ons die twee motors (I). Om dit vas te maak, gebruik ons hakies wat in die 3D -drukker (J) gemaak is. Draai nie een van die skroewe in hierdie posisioneringsstap vas nie. Dit sal die nodige aanpassings in die belyningstap moontlik maak.

Stap 10: Samestelling - Stap 02

Samestelling - Stap 02
Samestelling - Stap 02

Plaas steeds die geleidingsrails (E) en die laers (D) terwyl u die basis (C) geboor het. Detail vir die plastiekring (J) wat gebruik word om die hoogtes van die laers aan te pas.

Stap 11: Montering - Stap 03

Montering - Stap 03
Montering - Stap 03

Ons maak 'n wyser met 'n gedrukte deel om die laer (G) aan die moer (F) te koppel. Ons gebruik twee wysers, een regs en links. Die funksie daarvan is om die posisie op 'n skaal aan te dui wanneer ons die verplasing van die spil wil bepaal.

Stap 12: Samestelling - Stap 04

Samestelling - Stap 04
Samestelling - Stap 04
Samestelling - Stap 04
Samestelling - Stap 04

Steek die geleiding (A) en die spil (B) in hul onderskeie laers (D) en steun (E), oorkant die motor, en steek dan die geleiding en die spil in die laer (G) en kastanje (F) en by die punt van die spil steek ons ook die koppelaar (H) in. Ons neem hulle albei totdat hulle hul finale punte bereik (teenoorgestelde steun en motor).

Draai die skroewe liggies vas om later aan te pas. Herhaal die prosedure met die oorblywende gids en spil. Met al die komponente geposisioneer, voer ons die belyning van die dele uit en voltooi die meganiese samestelling.

Stap 13: Montering - Elektronika

Montering - Elektronika
Montering - Elektronika
Montering - Elektronika
Montering - Elektronika
Montering - Elektronika
Montering - Elektronika

Met 'n gedrukte plastiekhouer het ons die Nokia 5110 -skerm en 'n 4x4 -matriks -bedieningspaneel beveilig. In die onderste ruimte van die staander is die Arduino Uno, die bestuurder DRV8825.

Met behulp van die beskikbare boor in die basis, maak ons die samestelling vas.

Stap 14: Elektriese skema

Elektriese skema
Elektriese skema

Die bedradingsdiagram is eenvoudig. Ons het die DRV8825 en dieselfde twee 17 spieëls, dit wil sê dieselfde stap wat ons na die een stuur, gaan na die ander. Wat verander, is dat ek in een van die enjins 'n 8 mm -as het en in die ander een 'n 2 mm -as. Dit is dus duidelik dat die eerste, met 'n 8 mm -as, vinniger gaan. Nog steeds in die diagram is die skerm en die 4x4 -sleutelbord, wat 'n matriks moet wees.

Stap 15: Bronkode

Insluiting van biblioteke en die skep van voorwerpe

Ons het hier 'n Lib wat ek gedoen het, wat StepDriver.h is. Dit is voorberei vir die bestuurders 8825, 4988 en ook die TB6600 -bestuurders. Ek skep in hierdie stap die voorwerp DRV8825, die 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 - Serial clock out (SCLK) // pen 5 - Seriële data uit (DIN) // pen 4 - Data/Command select (D/C) // pin 3 - LCD chip select (CS/CE) // pin 2 - LCD reset (RST) Adafruit_PCD8544 vertoning = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instansie van bestuurder DRV8825 DRV8825 d1;

Konstante en globale veranderlikes

In hierdie deel van die kode behandel ek die matriks wat ek in 'n ander videoles (LINK KEYBOARD) geleer het. Tog praat ek van die toetspaneelvoorwerp, behalwe afstand en spoed.

const byte LINHAS = 4; // número de linhas do tecladoconst byte COLUNAS = 4; // número de colunas do teclado // define 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 '}}; greep 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, responsável por capturar a tecla pressionada Keyboard customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis por armazenar o valor digitado char customKey; ongetekende lang afstand = 0; ongetekende lang velocidade = 2000;

Sleutelbordleesfunksie

In hierdie stap het ons die kode wat na die skerm verwys, wat die toenemende en afnemende druk laat werk.

// Funcao-antwoorde vir waardevolle gebruike -------------------------------------- --- ongetekende lang lerValor () {// Skep 'n submenu waarin ons geen waarde kan vertoon nie display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (WIT); display.print ("VALOR"); display.setTextColor (SWART); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (WIT); display.print ("CLR"); display.setTextColor (SWART); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (WIT); display.print ("F4"); display.setTextColor (SWART); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); vertoon.display (); String dapperheid = ""; char tecla = vals;

loop en wag totdat die sleutel ingedruk word

Hier verduidelik ons lusprogrammering, dit wil sê waar u die waardes invoer.

// Lus 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': saak '7': saak '8': saak '9': saak '0': dapperheid = = tecla; display.print (tecla); vertoon.display (); breek; // Sien tecla CLR foi pressionada case 'c': // Limpa a string valor valor = ""; // Gee waarde om display.fillRect (2, 14, 84, 8, 0) te vertoon; display.setCursor (2, 14); vertoon.display (); breek; // Sien tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); breek; // Se tecla F4 (ESC) foi pressionada case 'D': return -1; verstek: breek; }}} // Limpa o char tecla tecla = vals; }}

Motor ry funksie

In hierdie stap word aan die 'skuif' -funksie gewerk. Ek kry die aantal pulse en die rigting en dan maak ek 'n "vir".

// Funcao reageer deur die motor of die motor -------------------------------------- void mover (ongeteken long pulsos, bool direcao) {for (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

stel op ()

Nou skuif ek die skerm en die bestuurderkonfigurasie, en ek sit selfs die pen vas in die bronkode om dit makliker te maak. Ek initialiseer sekere waardes en hanteer die metodes wat die instellings genereer.

ongeldige opstelling () {// Configuracao kan vertoon word ----------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (SWART); // Configuração do Driver DRV8825 ----------------------------------------- // pin GND - Aktiveer (ENA) // pen 13 - M0 // pen 12 - M1 // pen 11 - M2 // pen 10 - Herstel (RST) // pen 9 - Slaap (SLP) // pen 8 - Stap (STP) // pen 7 - Rigting (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.slaap (LAAG); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1ste deel - Tekenmenu

leegte-lus () {// Skep na menu om programme te vertoon ----------------------------------- vertoon.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (WIT); display.print ("F1"); display.setTextColor (SWART); display.setCursor (17, 2); display.print ("CRESCENTE"); display.fillRect (0, 12, 15, 11, 2); display.setCursor (2, 14); display.setTextColor (WIT); display.print ("F2"); display.setTextColor (SWART); display.setCursor (17, 14); display.print ("DECRESCENTE"); display.fillRect (0, 24, 15, 11, 2); display.setCursor (2, 26); display.setTextColor (WIT); display.print ("F3"); display.setTextColor (SWART); display.setCursor (17, 26); display.print ("VELOCIDADE");

loop () - Deel 2 - Tekening spyskaart

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (WIT); display.print ("F4"); display.setTextColor (SWART); display.setCursor (17, 38); display.print ("ESC"); vertoon.display (); bool esc = vals;

loop () - Deel 3 - Hardloop

// Los 'n lus vir 'n tecla F4 (ESC) en druk dit op (terwyl!) // caso alguma tecla foi pressionada if (customKey) {// Trata a tecla apertada switch (customKey) {// Se tecla F1 foi pressionada case 'A': distancia = lerValor (); // Sien ESC foi pressionada if (distancia == -1) {esc = true; } anders {// Skakel na 'Movendo' sonder vertoning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (WIT); display.print ("MOVENDO"); display.setTextColor (SWART); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); vertoon.display ();

loop () - Deel 4 - Hardloop

// Skuif na motorverhuizer (distancia, LOW); // Volta ao menu esc = true; } breek; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Sien ESC foi pressionada if (distancia == -1) {esc = true; } anders {// Skakel na 'Movendo' sonder vertoning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (WIT); display.print ("MOVENDO"); display.setTextColor (SWART); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); vertoon.display ();

loop () - Deel 5 - Hardloop

// Skuif na motorverhuizer (distancia, HIGH); // Volta ao menu esc = true; } breek; // Sien tecla F3 foi pressionada case 'C': velocidade = lerValor (); as (velocidade == -1) {esc = waar; } anders {// Skakel na 'Velocidade' sonder vertoning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (WIT); display.print ("VELOCIDADE"); display.setTextColor (SWART); display.setCursor (2, 14); display.print (velocidade); display.print (char (229)); display.print ("s");

loop () - Deel 6 - Hardloop

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (WIT); display.println ("OK!"); display.setTextColor (SWART); vertoon.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); vertraging (2000); // Volta ao menu esc = true; } breek; // 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; verstek: breek; }} // Limpa o char customKey customKey = false; }}

Stap 16: Oor spindels - masjienkonfigurasies

Oor spindels - masjienkonfigurasies
Oor spindels - masjienkonfigurasies

In CNC -masjiene soos 3D -drukkers en routers, byvoorbeeld, moet die program wat verantwoordelik is vir die posisionering van beheer, weet hoe die bewegings sal plaasvind as 'n funksie van die aantal pulse wat aan die stapmotor gegee word.

As die stapmotorbestuurder die toepassing van mikrostappe toelaat, moet hierdie konfigurasie in ag geneem word by die berekening van die geplaasde verplasing.

Byvoorbeeld, as 'n 200-stap motor per omwenteling gekoppel is aan 'n aandrywer wat op 1/16 gestel is, dan is 16 x 200 pulse nodig vir 'n enkele omwenteling van die spil, dit wil sê 3200 pulse vir elke omwenteling. As hierdie spil 'n helling van 2 mm per omwenteling het, sal dit 3200 pulse in die aandrywer neem voordat die moer 2 mm beweeg.

Trouens, sagteware -beheerders gebruik dikwels 'n rede om hierdie verhouding, die "aantal pulse per millimeter" of "stappe / mm", te spesifiseer.

Stap 17: Marlin

Marlin
Marlin

In Marlin sien ons byvoorbeeld in die afdeling @section motion:

/ **

* Standaard asstappe per eenheid (stappe / mm)

* Oorheers met M92

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

* /

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

In hierdie voorbeeld kan ons tot die gevolgtrekking kom dat die X- en Y -as 'n akkuraatheid van 80 pulse het om 1 mm te beweeg, terwyl die Z 3200 pulse benodig en die ekstruder E0 100 benodig.

Stap 18: GRBL

GRBL
GRBL

Hieronder sien ons die GRBL -opsetopdragte. Met die $ 100-opdrag kan ons die aantal pulse aanpas wat nodig is om 'n een-millimeter-offset op die X-as te veroorsaak.

In die onderstaande voorbeeld kan ons sien dat die huidige waarde 250 pulse per mm is.

Die Y- en Z -as kan onderskeidelik $ 101 en $ 102 gestel word.

Aanbeveel: