Inhoudsopgave:
- Stap 1: Gebruikte bronnen
- Stap 2: Over spindels - wat zijn ze?
- Stap 3: Over spindels - enkele en kogeldraden
- Stap 4: Over spindels - Toepassingen
- Stap 5: Over spindels - parameters
- Stap 6: Over spindels - Stap (verplaatsing en snelheid)
- Stap 7: Montage
- Stap 8: Montage - Materialen
- Stap 9: Montage - Stap 01
- Stap 10: Montage - Stap 02
- Stap 11: Montage - Stap 03
- Stap 12: Montage - Stap 04
- Stap 13: Montage - Elektronica
- Stap 14: Elektrisch schema
- Stap 15: Broncode
- Stap 16: Over spindels - Machineconfiguraties
- Stap 17: Marlijn
- Stap 18: GRBL
- Stap 19: Zie meer van mijn werk:
Video: Arduino Uno met spindel en pitchmotor - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
Vandaag gaan we het hebben over een heel belangrijk onderwerp in de mechanica en mechatronica: de elementen van machines. In dit artikel zullen we specifiek ingaan op de spindels, met enkele interessante functies en toepassingen. Toch zullen we enkele manieren demonstreren om de beweging veroorzaakt door een spindel te berekenen en een testopstelling presenteren.
Ik heb daarom de montage hieronder gemaakt, die de voortgang van een spindel van 2 mm en een andere van 8 mm blootlegt. Deze TR8-assen die ik gebruik, worden vaak gebruikt in kleine routers en 3D-printers, vooral op de Z-as. Onthoud dat door enkele concepten te beheersen waaraan we hier zullen werken, u elk type machine kunt ontwerpen.
Stap 1: Gebruikte bronnen
- Trapeziumvormige spindel met een diameter van 8 mm en een steek van 2 mm
- Trapeziumvormige spindel met een diameter van 8 mm en een spoed van 8 mm
- 8x2 spindel flens kastanje
- 8x8 spindel flens kastanje
- Lagers voor spindels met een diameter van 8 mm
- Lineaire cilindrische geleider met een diameter van 10 mm
- Cilindrische rollagers voor 10 mm geleiders
- Beugels voor cilindrische geleiders van 10 mm
- NEMA 17-motoren
- Askoppelingen
- Arduino Uno
- Stuurprogramma DRV8825
- 4x4 matrixtoetsenbord
- Weergave Nokia 5110
- Diverse kunststof onderdelen
- Bouten en moeren
- Houten basis
- Externe 12V voeding
Stap 2: Over spindels - wat zijn ze?
Spindels zijn onderdelen van machines, zoals schroeven. Dat wil zeggen, het zijn rechte staven gevormd door draden van continue stappen. Ze worden gebruikt in mechanismen die lineaire beweging en positionering vereisen. Ze kunnen hoge trek- en drukkrachten uitoefenen en koppel overbrengen. Ze laten beweging toe met automatische vergrendeling. Ze kunnen worden gemaakt van verschillende materialen, de meest voorkomende aluminium en staal.
Aangezien Chinese bedrijven de trapeziumvormige spindels vervaardigen, raad ik u aan dit type product te kopen in plaats van de bekende moerbout. Dit komt door de aantrekkelijkere prijs en de weerstand, die ik afschuwelijk vind.
Op de foto heb ik de beste spindel gezet die naar mijn mening de recirculerende kogelspil is. Het is meestal gemaakt van heel hard staal en de ballen draaien eromheen, in de kastanje. Naast de precisie die geweldig is, benadruk ik ook de duurzaamheid, aangezien dit type spindel miljarden bewegingen kan reproduceren zonder het mechanisme te beschadigen. Een goedkopere optie, die we hier gebruiken, is de trapeziumvormige spindel.
Stap 3: Over spindels - enkele en kogeldraden
De kogelspindels, op de foto links, hebben halfronde kanalen waar de kogels rollen. Ze zijn relatief duurder en hebben een lage wrijving in vergelijking met spindels met enkele schroef, wat leidt tot een veel hoger rendement (rolwrijving).
De spindels met één schroefdraad aan de rechterkant van de afbeelding hebben meestal trapeziumvormige profielen, omdat deze geometrie meer geschikt is om krachten in axiale richting uit te oefenen en beweging soepel over te brengen. Ze zijn relatief goedkoop en hebben een hoge wrijving in vergelijking met recirculerende kogelspindels, wat leidt tot een lage opbrengst, dwz slipwrijving.
Stap 4: Over spindels - Toepassingen
Spindels kunnen worden toegepast op elk mechanisme waar lineaire beweging vereist is. Ze worden veel gebruikt in de industrie in machines en processen.
Sommige toepassingen omvatten:
- Ladingliften
- Persen
- Aardbeien en draaibanken
- CNC-apparatuur
- Verpakkingsmachines
- 3D-printers
- Lasersnij- en snijapparatuur
- Industriële processen
- Positionerings- en lineaire bewegingssystemen
Stap 5: Over spindels - parameters
Er zijn verschillende kenmerken van een spindel waarmee rekening moet worden gehouden bij het ontwerpen van een mechanisme. Naast de diameter en spoed, is het noodzakelijk om de druksterkte, het traagheidsmoment (weerstand tegen verandering in de rotatietoestand), het constructieve materiaal, de rotatiesnelheid waaraan het zal worden onderworpen, de werkingsrichting (horizontaal of verticaal), onder andere de toegepaste belasting.
Maar op basis van reeds geconstrueerde mechanismen kunnen we verschillende van deze parameters intuïtief aanvoelen.
Laten we een gemeenschappelijk goed erkennen. Laten we beginnen met STAP.
Stap 6: Over spindels - Stap (verplaatsing en snelheid)
Bepaalt de lengte die de moer bij elke omwenteling aflegt. Dit is meestal in mm / omwenteling.
Een spindel van 2 mm per omwenteling zal een verplaatsing van 2 mm veroorzaken bij elke omwenteling die de spindel uitvoert. Het zal de lineaire snelheid van de moer beïnvloeden, aangezien met de toename van de rotatiesnelheid het aantal omwentelingen per tijdseenheid zal toenemen en bijgevolg ook de afgelegde afstand.
Als een spin van 2 mm per omwenteling draait met 60 RPM (één omwenteling per seconde), zal de moer met 2 mm per seconde bewegen.
Stap 7: Montage
In onze montage heb ik twee motoren en ons toetsenbord met het display, dat eruitzag als een rekenmachine, omdat ik er een hoes voor heb gemaakt in de 3D-printer. Op het Nokia display hebben we de volgende opties:
F1: Crescent - Fuso gaat van de huidige positie naar de positie die ik bepaal
F2: Afdalen - Draaien
F3: Snelheid - Kan ik de pulsbreedte wijzigen?
F4: ESC
Stap 8: Montage - Materialen
A - 10 mm lineaire geleiders
B - Trapeziumvormige spindels van stappen 2 en 8 mm
C - Boorbasis
D - Lagers voor spindels
E - Gidshouders
F - Kastanjes
G - Lagers
H - Koppelingen
I - Motoren
J - Diverse plastic onderdelen (cursors, motorsteunen, wiggen, toetsenbordsteun en display)
Stap 9: Montage - Stap 01
Na het boren van de basis (C), assembleren we de twee motoren (I). Om ze vast te maken, gebruiken we haakjes gemaakt in de 3D-printer (J). Draai geen van de schroeven vast in deze positioneringsstap. Dit zorgt voor de nodige aanpassingen in de uitlijningsstap.
Stap 10: Montage - Stap 02
Nog steeds na het boren van de basis (C), positioneer de geleiderails (E) en de lagers (D). Detail voor de plastic shim (J) die wordt gebruikt om de hoogte van de lagers aan te passen.
Stap 11: Montage - Stap 03
We maken een cursor met behulp van een gedrukt onderdeel om het lager (G) te verbinden met de moer (F). We gebruikten twee cursors, de ene rechts en de andere links. Zijn functie is om de positie op een schaal aan te geven wanneer we de verplaatsing willen bepalen die door de spil wordt veroorzaakt.
Stap 12: Montage - Stap 04
Steek de geleider (A) en de spil (B) in hun respectieve lager (D) en steun (E), tegenover de motor, steek dan de geleider en de spil in het lager (G) en kastanje (F) en aan de punt van de spindel plaatsen we ook de koppeling (H). We nemen ze allebei totdat ze hun eindpunt hebben bereikt (tegenover ondersteuning en motoriek).
Draai de schroeven licht vast om later af te stellen. Herhaal de procedure met de resterende geleider en spil. Met alle componenten gepositioneerd, voeren we de uitlijning van de onderdelen uit en voltooien we de mechanische montagefase.
Stap 13: Montage - Elektronica
Met behulp van een bedrukte plastic houder hebben we het Nokia 5110-scherm en een 4x4 matrixtoetsenbord vastgezet. In de onderste ruimte van de standaard bevindt zich de Arduino Uno, de driver DRV8825.
Met behulp van de aanwezige boringen in de basis bevestigen we het geheel.
Stap 14: Elektrisch schema
Het bedradingsschema is eenvoudig. We hebben de DRV8825 en dezelfde twee 17 spiegels, dat wil zeggen, dezelfde stap die we naar de ene sturen, gaat naar de andere. Wat verandert is dat ik in een van de motoren een spindel van 8 mm heb en in de andere een spindel van 2 mm. Het is dus duidelijk dat de eerste, met een spindel van 8 mm, sneller gaat. Nog steeds in het diagram zijn het display en het 4x4-toetsenbord, dat matrix moet zijn.
Stap 15: Broncode
Opname van bibliotheken en creatie van objecten
We hebben hier een Lib die ik heb gemaakt, namelijk StepDriver.h. Het is voorbereid voor de 8825, 4988 en ook de TB6600-stuurprogramma's. Ik maak in deze stap het object DRV8825, de 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 - Seriële klok uit (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 of driver DRV8825 DRV8825 d1;
Constanten en globale variabelen
In dit deel van de code behandel ik de matrix, die ik in een andere videoles (LINK KEYBOARD) heb geleerd. Toch heb ik het over het Keypad-object, naast afstand en snelheid.
const-byte LINHAS = 4; // nummer van 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 op de tecla pressionada Keypad customKeypad = Keypad (makeKeymap (SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); //varieer reacties op armazenar of valor digitado char customKey; ongetekende lange afstand = 0; unsigned lange velocidade = 2000;
Toetsenbordleesfunctie
In deze stap hebben we de code die verwijst naar het display, dat de toenemende en afnemende afdrukken werkt.
//Funcao responsavel por ler o valor do usuario pelo teclado-------------------------------------- ---unsigned long lerValor() {//Escreve o submenu que coleta os valores geen weergave display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(27, 2); display.setTextColor(WIT); display.print("VALOR"); display.setTextColor(ZWART); display.fillRect(0, 24, 21, 11, 2); display.setCursor(2, 26); display.setTextColor(WIT); display.print("CLR"); display.setTextColor(ZWART); 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(ZWART); display.setCursor(23, 38); display.print("VOLTAR"); display.setCursor(2, 14); weergave.weergave(); String waarde = ""; char tecla = onwaar;
looping wachtend op de toets ingedrukt
Hier leggen we de lusprogrammering uit, dat wil zeggen, waar u de waarden invoert.
//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': geval '7': geval '8': geval '9': geval '0': valor += tecla; display.print(tecla); weergave.weergave(); pauze; //Se tecla CLR foi pressionada case 'c': //Limpa a string valor valor = ""; //Apaga o valor display.fillRect (2, 14, 84, 8, 0); display.setCursor(2, 14); weergave.weergave(); pauze; //Se tecla ENT foi pressionada case 'e': //Retorna o valor return valor.toInt(); pauze; //Se tecla F4 (ESC) foi pressionada case 'D': return -1; standaard: pauze; } } //Limpa o char tecla tecla = false; } }
Motoraandrijffunctie:
In deze stap wordt aan de functie "verplaatsen" gewerkt. Ik krijg het aantal pulsen en de richting en dan maak ik een "voor".
//Funcao responsavel por mover o motor --------------------------------------void mover (niet ondertekend lange pulsos, bool direcao) { for (unsigned long i = 0; i < pulsos; i++) { d1.motorMove(direcao); } }
opstelling ()
Nu verplaats ik het display en de configuratie van het stuurprogramma, en ik heb zelfs de pinning in de broncode geplaatst om het gemakkelijker te maken. Ik initialiseer bepaalde waarden en behandel de methoden die de instellingen genereren.
void setup() {//Configuracao do display ---------------------------------------- -------- display.begin(); display.setContrast(50); display.clearDisplay(); display.setTextSize(1); display.setTextColor(ZWART); // Driver DRV8825 configureren ----------------------------------------- // pin GND - inschakelen (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Slaapstand (SLP) // pin 8 - Step (STP) // pin 7 - Richting (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1.slaap (LAAG); d1.reset(); d1.stapPerMm(100); d1.stepPerRound(200); d1.stepConfig(1); d1.motionConfig(50, velocidade, 5000); }
loop () - 1e deel - Tekenmenu
void loop() {//Escreve o Menu do Programa geen weergave ----------------------------------- weergave.clearDisplay(); display.fillRect(0, 0, 15, 11, 2); display.setCursor(2, 2); display.setTextColor(WIT); display.print("F1"); display.setTextColor(ZWART); 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(ZWART); display.setCursor (17, 14); display.print("DALING"); display.fillRect(0, 24, 15, 11, 2); display.setCursor(2, 26); display.setTextColor(WIT); display.print("F3"); display.setTextColor(ZWART); display.setCursor (17, 26); display.print("VELOCIDADE");
loop () - Deel 2 - Tekenmenu
display.fillRect(0, 36, 15, 11, 2); display.setCursor(2, 38); display.setTextColor(WIT); display.print("F4"); display.setTextColor(ZWART); display.setCursor (17, 38); display.print("ESC"); weergave.weergave(); bool esc = onwaar;
loop () - Deel 3 - Hardlopen
//Loop enquanto een tecla F4 (ESC) nao voor pressionada while (!esc) { //captura een 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; } else { //Escreve a tela "Movendo" no display display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor(WIT); display.print("VERPLAATS"); display.setTextColor(ZWART); display.setCursor(2, 14); display.print(afstand); display.print(" Passos"); weergave.weergave();
loop () - Deel 4 - Hardlopen
// Verplaats de motorverhuizer (distancia, LAAG); //Volta oa menu esc = true; } pauze; //Se tecla F2 foi pressionada case 'B': distancia = lerValor(); //Se tecla 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(WIT); display.print("VERPLAATS"); display.setTextColor(ZWART); display.setCursor(2, 14); display.print(afstand); display.print(" Passos"); weergave.weergave();
loop () - Deel 5 - Hardlopen
// Verplaats de motorverhuizer (afstand, HOOG); //Volta oa menu esc = true; } pauze; //Se tecla F3 foi pressionada case 'C': velocidade = lerValor(); if (velocidade == -1) { esc = waar; } else { //Escreve een tela "Velocidade" geen weergave display.clearDisplay(); display.fillRect(0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor(WIT); display.print("VELOCIDADE"); display.setTextColor(ZWART); display.setCursor(2, 14); display.print(velocidade); display.print(char(229)); display.print("s");
loop () - Deel 6 - Hardlopen
display.fillRect(31, 24, 21, 11, 2); display.setCursor(33, 26); display.setTextColor(WIT); display.println("OK!"); display.setTextColor(ZWART); weergave.weergave(); //Configura nova velocidade oa motor d1.motionConfig(50, velocidade, 5000); vertraging (2000); //Volta oa menu esc = true; } pauze; //Se tecla F4 (ESC) foi pressionada case 'D': //Se tecla CLR foi pressionada case 'c': //Se tecla ENT foi pressionada case 'e': //Volta oa menu esc = true; standaard: pauze; } } //Limpa of char customKey customKey = false; } }
Stap 16: Over spindels - Machineconfiguraties
In CNC-machines zoals 3D-printers en routers bijvoorbeeld, moet het programma dat verantwoordelijk is voor de positioneringscontrole weten hoe de bewegingen zullen plaatsvinden als functie van het aantal pulsen dat aan de stappenmotor wordt gegeven.
Als de stappenmotordriver de toepassing van microstappen toestaat, moet met deze configuratie rekening worden gehouden bij de berekening van de geproduceerde verplaatsing.
Als bijvoorbeeld een motor met 200 stappen per omwenteling is aangesloten op een driver die is ingesteld op 1/16, dan zijn 16 x 200 pulsen nodig voor een enkele omwenteling van de spil, dat wil zeggen 3200 pulsen voor elke omwenteling. Als deze spindel een spoed heeft van 2 mm per omwenteling, heeft de moer 3200 pulsen nodig om 2 mm te bewegen.
In feite gebruiken softwarecontrollers vaak een reden om deze verhouding te specificeren, het "aantal pulsen per millimeter" of "stappen / mm".
Stap 17: Marlijn
In Marlin zien we bijvoorbeeld in de sectie @section motion:
/ **
* Standaard asstappen per eenheid (stappen / mm)
* Overschrijven met M92
* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]
* /
#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}
In dit voorbeeld kunnen we concluderen dat de X- en Y-as een nauwkeurigheid hebben van 80 pulsen om 1 mm te verplaatsen, terwijl de Z 3200 pulsen nodig heeft en de extruder E0 100.
Stap 18: GRBL
Hieronder zien we de GRBL-configuratieopdrachten. Met het $ 100-commando kunnen we het aantal pulsen aanpassen dat nodig is om een verschuiving van één millimeter op de X-as te veroorzaken.
In het onderstaande voorbeeld kunnen we zien dat de huidige waarde 250 pulsen per mm is.
De Y- en Z-as kunnen respectievelijk $ 101 en $ 102 worden ingesteld.
Aanbevolen:
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Start uw diavoorstelling met vakantiefoto's met een vleugje magie! 9 stappen (met afbeeldingen)
Lanceer uw diavoorstelling met vakantiefoto's met een vleugje magie!: In de loop der jaren heb ik de gewoonte ontwikkeld om een klein beeldje mee te nemen op reis: ik koop vaak een kleine, lege artoy (zoals die op de foto) en verf het past bij de vlag en het thema van het land dat ik bezoek (in dit geval Sicilië). T
Pro-mini programmeren met Uno (Arduino Basics): 7 stappen (met afbeeldingen)
Programma Pro-mini met Uno (Arduino Basics): Hallo allemaal, In deze instructable wil ik je mijn ervaring delen met mijn onlangs gekochte Arduino pro-mini en hoe ik erin slaagde om de code er voor de eerste keer naar te uploaden, met behulp van mijn oude Arduino Uno.Arduino pro-mini heeft de volgende kenmerken:Het is i