Innehållsförteckning:

Arduino Uno med spindel och pitchmotor: 19 steg
Arduino Uno med spindel och pitchmotor: 19 steg

Video: Arduino Uno med spindel och pitchmotor: 19 steg

Video: Arduino Uno med spindel och pitchmotor: 19 steg
Video: Trafikljus med övergångsställe Arduino. Kod, uppkoppling och simulation. 2024, Juli
Anonim
Image
Image
Resurser som används
Resurser som används

Idag ska vi prata om ett mycket viktigt ämne inom mekanik och mekatronik: elementen i maskiner. I den här artikeln kommer vi specifikt att ta upp spindlarna, med några intressanta funktioner och applikationer. Ändå kommer vi att demonstrera några sätt att beräkna rörelsen som orsakas av en spindel och presentera ett testaggregat.

Jag gjorde därför monteringen nedan, vilket avslöjar framsteget hos en spindel på 2 mm och en annan på 8 mm. Dessa TR8 -spindlar som jag använder används vanligtvis i små routrar och 3D -skrivare, särskilt på Z -axeln. Kom ihåg att genom att behärska några koncept som vi kommer att arbeta med här, kommer du att kunna designa alla typer av maskiner.

Steg 1: Resurser som används

  • Trapezformad spindel 8 mm i diameter och 2 mm delning
  • Trapezformad spindel 8 mm i diameter och 8 mm i stigning
  • 8x2 spindelflänsad kastanj
  • 8x8 spindelflänsad kastanj
  • Lager för spindlar med 8 mm diameter
  • Linjär cylindrisk styrning 10 mm i diameter
  • Cylindriska rullager för 10 mm styr
  • Fästen för 10 mm cylindriska styrningar
  • NEMA 17 -motorer
  • Axelkopplingar
  • Arduino Uno
  • Drivrutin DRV8825
  • 4x4 matris tangentbord
  • Visa Nokia 5110
  • Diverse plastdelar
  • Bultar och muttrar
  • Träfot
  • Extern 12V strömförsörjning

Steg 2: Om spindlar - vad är det?

Om spindlar - vad är de?
Om spindlar - vad är de?

Spindlar är element i maskiner, till exempel skruvar. Det vill säga, de är raka stavar bildade av trådar av kontinuerliga steg. De används i mekanismer som kräver linjär rörelse och positionering. De kan utöva höga drag- och tryckkrafter och överföra vridmoment. De tillåter rörelse med automatisk låsning. De kan vara konstruerade av olika material, som är det vanligaste aluminium och stål.

Eftersom kinesiska företag tillverkar trapetsformade spindlar, skulle jag föreslå att du köper den här typen av produkter istället för den välkända mutterbulten. Detta beror på det mer attraktiva priset och motståndet, vilket jag anser vara hemskt.

På bilden sätter jag den bästa spindeln som enligt min mening är den cirkulerande bollspindeln. Det är vanligtvis tillverkat av ett mycket hårt stål, och bollarna kretsar runt det, inuti kastanjen. Förutom den precision som är stor, markerar jag också hållbarheten, eftersom denna typ av spindel kan reproducera miljarder rörelser utan att skada mekanismen. Ett billigare alternativ, som är det vi använder här, är trapetsformad spindel.

Steg 3: Om spindlar - singel- och bultrådar

Om spindlar - enkla och buntrådar
Om spindlar - enkla och buntrådar

Bollspindlarna, på bilden till vänster, har halvcirkelformade kanaler där bollarna rullar. De är relativt dyrare och har låg friktion jämfört med enkelskruvspindlar, vilket leder till ett mycket högre utbyte (rullande friktion).

De enkelgängade spindlarna på bildens högra sida har vanligtvis trapetsprofiler, eftersom denna geometri är mer lämplig för att applicera krafter i axiell riktning och smidig överföring av rörelse. De är relativt billiga och har hög friktion jämfört med återcirkulerande kulspindlar, vilket leder till lågt utbyte, dvs slipfriktion.

Steg 4: Om spindlar - applikationer

Om spindlar - applikationer
Om spindlar - applikationer

Spindlar kan appliceras på alla mekanismer där linjär rörelse krävs. De används ofta i industrin inom maskiner och processer.

Några applikationer inkluderar:

  • Lasthissar
  • Pressar
  • Jordgubbar och svarvar
  • CNC -utrustning
  • Inslagningsmaskiner
  • 3D -skrivare
  • Laserskär- och skärutrustning
  • Industriella processer
  • Positionerings- och linjära rörelsessystem

Steg 5: Om spindlar - parametrar

Om spindlar - parametrar
Om spindlar - parametrar

Det finns flera egenskaper hos en spindel som måste beaktas vid utformning av en mekanism. Förutom dess diameter och tonhöjd är det nödvändigt att känna igen dess tryckhållfasthet, dess tröghetsmoment (motstånd mot förändring i dess rotationsläge), konstruktivt material, den rotationshastighet som den kommer att utsättas för, driftriktning (horisontellt eller vertikal), bland annat den applicerade lasten.

Men, baserat på redan konstruerade mekanismer, kan vi intuitera flera av dessa parametrar.

Låt oss känna igen några gemensamma fördelar. Låt oss börja med STEG.

Steg 6: Om spindlar - Steg (förskjutning och hastighet)

Om spindlar - steg (förskjutning och hastighet)
Om spindlar - steg (förskjutning och hastighet)

Bestämmer längden som muttern färdades vid varje varv. Detta är vanligtvis i mm / varv.

En 2 mm spindel per varv kommer att orsaka en förskjutning på 2 mm vid varje varv som spindeln utför. Det kommer att påverka mutterns linjära hastighet, eftersom med ökningen av rotationshastigheten kommer antalet varv per tidsenhet att öka och följaktligen också den resta sträckan.

Om ett 2 mm snurr per varv snurrar med 60 varv / min (ett varv per sekund), rör sig muttern med 2 mm per sekund.

Steg 7: Montering

hopsättning
hopsättning
hopsättning
hopsättning

I vår samling har jag två motorer och vårt tangentbord med displayen, som såg ut som en miniräknare, eftersom jag gjorde ett lock till dem i 3D -skrivaren. På Nokia -skärmen har vi följande alternativ:

F1: Crescent - Fuso går från den aktuella positionen till den position jag bestämmer

F2: Fallande - Vänd

F3: Hastighet - Kan jag ändra pulsbredden

F4: ESC

Steg 8: Montering - Material

Montering - Material
Montering - Material

A - 10 mm linjära guider

B - Trapezformade spindlar i steg 2 och 8 mm

C - Borrbas

D - Lager för spindlar

E - Styrhållare

F - Kastanjer

G - Kullager

H - Kopplingar

I - Motorer

J - Olika plastdelar (markörer, motorfästen, kilar, tangentbordstöd och display

Steg 9: Montering - Steg 01

Montering - Steg 01
Montering - Steg 01

Efter borrningen av basen (C) monterar vi de två motorerna (I). För att fästa dem använder vi konsoler gjorda i 3D -skrivaren (J). Dra inte åt någon av skruvarna i detta positioneringssteg. Detta möjliggör nödvändiga justeringar i justeringssteget.

Steg 10: Montering - Steg 02

Montering - Steg 02
Montering - Steg 02

Efter att ha borrat basen (C), placera styrskenorna (E) och lagren (D). Detalj för plastplattan (J) som används för att justera höjden på lagren.

Steg 11: Montering - Steg 03

Montering - Steg 03
Montering - Steg 03

Vi skapar en markör med en tryckt del för att ansluta lagret (G) till muttern (F). Vi använde två markörer, en höger en annan vänster. Dess funktion är att indikera positionen på en skala när vi vill bestämma förskjutningen som orsakas av spindeln.

Steg 12: Montering - Steg 04

Montering - Steg 04
Montering - Steg 04
Montering - Steg 04
Montering - Steg 04

För in styrningen (A) och spindeln (B) i respektive lager (D) och stöd (E), motsatt motorn, sätt sedan in styrningen och spindeln i lagret (G) och kastanjen (F) och vid spindelns spets infogar vi också kopplingen (H). Vi tar dem båda tills de når sina slutpunkter (motsatt stöd och motor).

Dra åt skruvarna lätt för att möjliggöra en senare justering. Upprepa proceduren med den återstående guiden och spindeln. Med alla komponenter placerade utför vi justeringen av delarna och avslutar det mekaniska monteringssteget.

Steg 13: Montering - Elektronik

Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik
Montering - Elektronik

Med en tryckt plasthållare säkrade vi Nokia 5110 -skärmen och en 4x4 -matris knappsats. I stativets nedre utrymme kommer Arduino Uno, drivrutinen DRV8825.

Med hjälp av den tillgängliga borrningen i basen fäster vi monteringen.

Steg 14: Elschema

Elschema
Elschema

Kopplingsschemat är enkelt. Vi har DRV8825 och samma två 17 speglar, det vill säga samma steg som vi skickar till en går till en annan. Vad som förändras är att i en av motorerna har jag en 8 mm spindel och i den andra en 2 mm spindel. Tydligt alltså att den första, med 8 mm spindel, går snabbare. Fortfarande i diagrammet finns displayen och 4x4 -tangentbordet, som måste vara matris.

Steg 15: Källkod

Inkludering av bibliotek och skapande av objekt

Vi har här en Lib som jag gjorde, vilket är StepDriver.h. Den är förberedd för drivrutinerna 8825, 4988 och även TB6600. Jag skapar i detta steg objektet DRV8825, 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 - Seriell urkoppling (SCLK) // pin 5 - Serial data out (DIN) // pin 4 - Data/Command select (D/C) // pin 3 - LCD chip select (CS/CE) // pin 2 - LCD reset (RST) Adafruit_PCD8544 display = Adafruit_PCD8544 (6, 5, 4, 3, 2); // Biblioteca de motor de passo #include // Instancia o driver DRV8825 DRV8825 d1;

Konstanter och globala variabler

I denna del av koden behandlar jag matrisen, som jag undervisade i en annan videolektion (LINK KEYBOARD). Ändå pratar jag om knappsatsobjektet, förutom avstånd och hastighet.

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 '}}; byte 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 Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); // variáveis resposnsáveis por armazenar o valor digitado char customKey; osignerad lång distans = 0; osignerad lång velocidade = 2000;

Tangentbordsläsningsfunktion

I detta steg har vi koden som hänvisar till displayen, som fungerar för ökande och minskande utskrift.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- osignerade långa lerValor () {// Skapa en undermeny där vi inte har någon display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (VIT); display.print ("VALOR"); display.setTextColor (SVART); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (VIT); display.print ("CLR"); display.setTextColor (SVART); display.setCursor (23, 26); display.print ("LIMPAR"); display.fillRect (0, 36, 21, 11, 2); display.setCursor (5, 38); display.setTextColor (VIT); display.print ("F4"); display.setTextColor (SVART); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); String valor = ""; char tecla = false;

slinga i väntan på att knappen trycks in

Här förklarar vi Loop -programmering, det vill säga där du anger värdena.

// 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': fall '7': fall '8': fall '9': fall '0': valor += tecla; display.print (tecla); display.display (); ha sönder; // Se 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 (); ha sönder; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); ha sönder; // Se tecla F4 (ESC) foi pressionada case 'D': return -1; standard: paus; }} // Limpa o char tecla tecla = false; }}

Motordrivningsfunktion

"Flytta" -funktionen bearbetas i detta steg. Jag får antalet pulser och riktningen och sedan gör jag ett "för".

// Funcao responsavel por mover o motor -------------------------------------- void mover (unsigned long pulsos, bool direcao) {for (unsigned long i = 0; i <pulsos; i ++) {d1.motorMove (direcao); }}

uppstart ()

Nu flyttar jag bildskärmen och förarkonfigurationen, och jag lägger till och med fästningen inuti källkoden för att göra det enklare. Jag initierar vissa värden och hanterar de metoder som genererar inställningarna.

void setup () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (SVART); // Konfiguration av drivrutin DRV8825 ----------------------------------------- // pin GND - Aktivera (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Sleep (SLP) // pin 8 - Step (STP) // stift 7 - Riktning (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.sömn (LÅG); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1: a delen - Ritningsmeny

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

loop () - Del 2 - Ritningsmeny

display.fillRect (0, 36, 15, 11, 2); display.setCursor (2, 38); display.setTextColor (VIT); display.print ("F4"); display.setTextColor (SVART); display.setCursor (17, 38); display.print ("ESC"); display.display (); bool esc = falskt;

loop () - Del 3 - Löpning

// 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 (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } annat {// Skapa ett "Movendo" -skärm, display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (VIT); display.print ("MOVENDO"); display.setTextColor (SVART); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Del 4 - Löpning

// Flytta till motorflyttare (distancia, LOW); // Volta ao meny esc = true; } ha sönder; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } annat {// Skapa ett "Movendo" -skärm utan visning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (VIT); display.print ("MOVENDO"); display.setTextColor (SVART); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Del 5 - Löpning

// Flytta till motorflyttare (distancia, HIGH); // Volta ao meny esc = true; } ha sönder; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); om (velocidade == -1) {esc = true; } annat {// Skapa en "Velocidade" utan visning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (VIT); display.print ("VELOCIDADE"); display.setTextColor (SVART); display.setCursor (2, 14); display.print (velocidade); display.print (tecken (229)); display.print ("s");

loop () - Del 6 - Löpning

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (VIT); display.println ("OK!"); display.setTextColor (SVART); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); fördröjning (2000); // Volta ao meny esc = true; } ha sönder; // 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; standard: paus; }} // Limpa o char customKey customKey = false; }}

Steg 16: Om spindlar - maskinkonfigurationer

Om spindlar - maskinkonfigurationer
Om spindlar - maskinkonfigurationer

I CNC -maskiner som 3D -skrivare och routrar till exempel måste programmet som ansvarar för positioneringskontroll veta hur rörelserna kommer att ske som en funktion av antalet pulser som ges till stegmotorn.

Om stegmotordrivrutinen tillåter tillämpning av mikrosteg måste denna konfiguration beaktas vid beräkningen av den producerade förskjutningen.

Till exempel, om en 200-stegs motor per varv är ansluten till en förare som är inställd på 1/16, kommer 16 x 200 pulser att krävas för ett enda varv på spindeln, det vill säga 3200 pulser för varje varv. Om denna spindel har en stigning på 2 mm per varv, kommer det att ta 3200 pulser i föraren för muttern att röra sig 2 mm.

I själva verket använder programvarukontroller ofta en anledning för att ange detta förhållande, "antalet pulser per millimeter" eller "steg / mm".

Steg 17: Marlin

Svärdfisk
Svärdfisk

I Marlin, till exempel, ser vi i avsnittet @section motion:

/ **

* Standardaxelsteg per enhet (steg / mm)

* Åsidosätt med M92

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

* /

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

I detta exempel kan vi dra slutsatsen att X- och Y -axlarna har en noggrannhet på 80 pulser för att röra sig 1 mm, medan Z behöver 3200 pulser och extrudern E0 behöver 100.

Steg 18: GRBL

GRBL
GRBL

Nedan ser vi GRBL -konfigurationskommandona. Med kommandot $ 100 kan vi justera antalet pulser som krävs för att orsaka en millimeters förskjutning på X-axeln.

I exemplet nedan kan vi se att strömvärdet är 250 pulser per mm.

Y- och Z -axlarna kan ställas in respektive $ 101 respektive $ 102.

Rekommenderad: