Innehållsförteckning:
- Steg 1: Resurser som används
- Steg 2: Om spindlar - vad är det?
- Steg 3: Om spindlar - singel- och bultrådar
- Steg 4: Om spindlar - applikationer
- Steg 5: Om spindlar - parametrar
- Steg 6: Om spindlar - Steg (förskjutning och hastighet)
- Steg 7: Montering
- Steg 8: Montering - Material
- Steg 9: Montering - Steg 01
- Steg 10: Montering - Steg 02
- Steg 11: Montering - Steg 03
- Steg 12: Montering - Steg 04
- Steg 13: Montering - Elektronik
- Steg 14: Elschema
- Steg 15: Källkod
- Steg 16: Om spindlar - maskinkonfigurationer
- Steg 17: Marlin
- Steg 18: GRBL
- Steg 19: Se mer av mitt arbete:
Video: Arduino Uno med spindel och pitchmotor: 19 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
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?
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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:
Arduino -robot med avstånd, riktning och rotationsgrad (öst, väst, norr, söder) som styrs med röst med hjälp av Bluetooth -modul och autonom robotrörelse .: 6 steg
Arduino -robot med avstånd, riktning och rotationsgrad (öst, väst, norr, söder) som styrs med röst med hjälp av Bluetooth -modul och autonom robotrörelse.: Denna instruktion förklarar hur man gör Arduino -robot som kan flyttas i önskad riktning (framåt, bakåt , Vänster, höger, öst, väst, norr, syd) krävs Distans i centimeter med röstkommando. Roboten kan också flyttas autonomt
Arduino 4-hjulsdriven Bluetooth RC-bil med UNO R3, HC-05 och L293D Motorshield med kodning och Android-app: 8 steg
Arduino 4 Wheel Drive Bluetooth RC Car Using UNO R3, HC-05 and L293D Motorshield With Coding and Android App: Idag ska jag berätta om hur man gör en arduino 4 wheel drive bluetooth RC car using HC 05, L293 motor shield, 4 likströmsmotor, med kodning och app för android för att styra bil.Komponent som används: -1-Arduino UNO R32-Bluetooth HC-053-Motorshield L293
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid
LED -CD -spindel: 6 steg
LED -CD -spindel: Jag satt bara och letade efter något att sätta in lysdioder i och jag försökte detta. Det ser bra ut bredvid en dator och det finns många möjligheter för detta