Innholdsfortegnelse:

Arduino Uno med spindel og pitchmotor: 19 trinn
Arduino Uno med spindel og pitchmotor: 19 trinn

Video: Arduino Uno med spindel og pitchmotor: 19 trinn

Video: Arduino Uno med spindel og pitchmotor: 19 trinn
Video: DIY Radar With Ultrasonic Sensor And Chat-GPT Generated Arduino Code | Coders Cafe 2024, November
Anonim
Image
Image
Ressurser brukt
Ressurser brukt

I dag skal vi snakke om et veldig viktig emne innen mekanikk og mekatronikk: maskinelementene. I denne artikkelen vil vi spesielt ta for oss spindlene, med noen interessante funksjoner og applikasjoner. Likevel vil vi demonstrere noen måter å beregne bevegelsen forårsaket av en spindel og presentere en testenhet.

Jeg lagde derfor monteringen nedenfor, som viser ekspansjonen til en spindel på 2 mm og en annen på 8 mm. Disse TR8 -spindlene jeg bruker, brukes ofte i små rutere og 3D -skrivere, spesielt på Z -aksen. Husk at ved å mestre noen konsepter som vi skal jobbe med her, vil du kunne designe alle typer maskiner.

Trinn 1: Ressurser brukt

  • Trapesformet spindel 8 mm i diameter og 2 mm skråning
  • Trapesformet spindel 8 mm i diameter og 8 mm i stigning
  • 8x2 spindelflens kastanje
  • 8x8 spindelflenset kastanje
  • Lagre for 8 mm diameter spindler
  • Lineær sylindrisk føring 10 mm i diameter
  • Sylindriske rullelagre for 10 mm føringer
  • Braketter for 10 mm sylindriske føringer
  • NEMA 17 Motorer
  • Akselkoblinger
  • Arduino Uno
  • Driver DRV8825
  • 4x4 matrisetastatur
  • Vis Nokia 5110
  • Diverse plastdeler
  • Bolter og muttere
  • Trebase
  • Ekstern 12V strømforsyning

Trinn 2: Om spindler - hva er de?

Om spindler - hva er de?
Om spindler - hva er de?

Spindler er elementer av maskiner, for eksempel skruer. Det vil si at de er rette stenger dannet av tråder med kontinuerlige trinn. De brukes i mekanismer som krever lineær bevegelse og posisjonering. De kan utøve høye strekk- og trykkrefter og overføre dreiemoment. De tillater bevegelse med automatisk låsing. De kan konstrueres av forskjellige materialer, og er det vanligste aluminium og stål.

Siden kinesiske selskaper produserer trapesformede spindler, vil jeg foreslå at du får denne typen produkter i stedet for den velkjente mutterbolten. Dette skyldes den mer attraktive prisen og drag, som jeg anser som fryktelig.

På bildet legger jeg den beste spindelen som har, etter min mening, det er den resirkulerende kulespindelen. Den er vanligvis laget av et veldig hardt stål, og kulene roterer rundt den, inne i kastanjen. Foruten presisjonen som er stor, fremhever jeg også holdbarheten, siden denne typen spindel kan reprodusere milliarder av bevegelser uten å skade mekanismen. Et billigere alternativ, som er det vi bruker her, er den trapesformede spindelen.

Trinn 3: Om spindler - enkelt- og balltråder

Om spindler - enkelt- og balltråder
Om spindler - enkelt- og balltråder

Kulespindlene, på bildet til venstre, har halvcirkelformede kanaler der ballene ruller. De er relativt dyrere og har lav friksjon sammenlignet med enkeltskruespindler, noe som fører til et mye høyere utbytte (rullende friksjon).

Enkeltrådede spindler på høyre side av bildet har vanligvis trapesformede profiler, siden denne geometrien er mer passende for å påføre krefter i aksial retning og jevn overføring av bevegelse. De er relativt rimelige og har høy friksjon sammenlignet med resirkulerende kulespindler, noe som fører til lavt utbytte, det vil si slipfriksjon.

Trinn 4: Om spindler - applikasjoner

Om spindler - applikasjoner
Om spindler - applikasjoner

Spindler kan påføres hvilken som helst mekanisme der lineær bevegelse er nødvendig. De er mye brukt i industrien i maskiner og prosesser.

Noen applikasjoner inkluderer:

  • Lastheiser
  • Trykk
  • Jordbær og dreiebenker
  • CNC -utstyr
  • Innpakningsmaskiner
  • 3D -skrivere
  • Laserskjære- og skjæreutstyr
  • Industrielle prosesser
  • Posisjonering og lineære bevegelsessystemer

Trinn 5: Om spindler - parametere

Om spindler - parametere
Om spindler - parametere

Det er flere kjennetegn ved en spindel som må tas i betraktning ved utforming av en mekanisme. I tillegg til diameter og stigning, er det nødvendig å gjenkjenne dens trykkfasthet, treghetsmoment (motstand mot endring i rotasjonstilstand), konstruktivt materiale, rotasjonshastigheten det vil bli utsatt for, operasjonsretning (horisontalt eller vertikal), den påførte lasten, blant andre.

Men, basert på allerede konstruerte mekanismer, kan vi intuitere flere av disse parameterne.

La oss kjenne igjen noen felles gode. La oss starte med TRINN.

Trinn 6: Om spindler - trinn (forskyvning og hastighet)

Om spindler - trinn (forskyvning og hastighet)
Om spindler - trinn (forskyvning og hastighet)

Bestemmer lengden som mutteren reiste ved hver omdreining. Dette er vanligvis i mm / omdreining.

En 2 mm spindel per omdreining vil føre til en forskyvning på 2 mm ved hver sving spindelen utfører. Det vil påvirke mutterens lineære hastighet, siden med økningen av rotasjonshastigheten vil antall omdreininger per tidsenhet øke og følgelig også tilbakelagt distanse.

Hvis et 2 mm spinn per omdreining snurrer med 60 o / min (ett omdreining per sekund), vil mutteren bevege seg med 2 mm per sekund.

Trinn 7: Montering

montering
montering
montering
montering

I vår samling har jeg to motorer og tastaturet vårt med displayet, som så ut som en kalkulator, fordi jeg laget et deksel for dem i 3D -skriveren. På Nokia -skjermen har vi følgende alternativer:

F1: Halvmåne - Fuso går fra nåværende posisjon til posisjonen jeg bestemmer

F2: Fallende - Sving

F3: Hastighet - Kan jeg endre pulsbredden

F4: ESC

Trinn 8: Montering - Materialer

Montering - materialer
Montering - materialer

A - 10 mm lineære guider

B - Trapesformede spindler i trinn 2 og 8 mm

C - Borebase

D - Lagre for spindler

E - Guideholdere

F - Kastanjer

G - Lagre

H - Koblinger

I - Motorer

J - Ulike plastdeler (markører, motorbraketter, kiler, tastaturstøtte og display

Trinn 9: Montering - Trinn 01

Montering - trinn 01
Montering - trinn 01

Etter boring av basen (C), monterer vi de to motorene (I). For å feste dem bruker vi braketter laget i 3D -skriveren (J). Ikke stram til noen av skruene i dette posisjoneringstrinnet. Dette gir mulighet for nødvendige justeringer i justeringstrinnet.

Trinn 10: Montering - Trinn 02

Montering - Trinn 02
Montering - Trinn 02

Etter at du har boret sokkelen (C), plasserer du skinneskinnene (E) og lagrene (D). Detalj for plastskiven (J) som brukes til å justere høyden på lagrene.

Trinn 11: Montering - Trinn 03

Montering - Trinn 03
Montering - Trinn 03

Vi lager en markør ved hjelp av en trykt del for å koble lageret (G) til mutteren (F). Vi brukte to markører, en til høyre og en til venstre. Dens funksjon er å indikere posisjonen på en skala når vi vil bestemme forskyvningen forårsaket av spindelen.

Trinn 12: Montering - Trinn 04

Montering - Trinn 04
Montering - Trinn 04
Montering - Trinn 04
Montering - Trinn 04

Sett føringen (A) og spindelen (B) i sitt respektive lager (D) og støtten (E), motsatt motoren, sett deretter inn styret og spindelen i lageret (G) og kastanjen (F) og ved spissen av spindelen setter vi også inn koblingen (H). Vi tar dem begge til de når sine siste poeng (motsatt støtte og motor).

Stram skruene lett for å tillate en senere justering. Gjenta prosedyren ved hjelp av gjenværende guide og spindel. Med alle komponentene plassert utfører vi justeringen av delene og fullfører det mekaniske monteringsstadiet.

Trinn 13: Montering - Elektronikk

Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk
Montering - Elektronikk

Ved å bruke en trykt plastholder sikret vi Nokia 5110 -skjermen og et matrisetastatur på 4x4. I den nedre delen av stativet vil Arduino Uno, driveren DRV8825, ligge.

Ved å bruke den tilgjengelige boringen i basen, fester vi monteringen.

Trinn 14: Elektrisk opplegg

Elektrisk opplegg
Elektrisk opplegg

Koblingsskjemaet er enkelt. Vi har DRV8825 og de samme to 17 speilene, det vil si at det samme trinnet vi sender til det ene går til det andre. Det som endrer seg er at i en av motorene har jeg en 8 mm spindel og i den andre en 2 mm spindel. Tydelig, da, at den første, med 8 mm spindel, går raskere. Fremdeles i diagrammet er displayet og 4x4 -tastaturet, som må være matrise.

Trinn 15: Kildekode

Inkludering av biblioteker og opprettelse av objekter

Vi har her en Lib som jeg gjorde, som er StepDriver.h. Den er forberedt for 8825, 4988 og også TB6600 -driverne. Jeg lager i dette trinnet 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 klokke ut (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 og globale variabler

I denne delen av koden behandler jeg matrisen, som jeg underviste i en annen videotime (LINK TASTATUR). Likevel snakker jeg om tastaturobjektet, i tillegg til avstand og 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; usignert lang avstand = 0; usignert lang velocidade = 2000;

Tastaturlesingsfunksjon

I dette trinnet har vi koden som refererer til displayet, som fungerer for økende og synkende utskrift.

// Funcao responsavel por ler o valor do usuario pelo teclado -------------------------------------- --- usignert long lerValor () {// Escreve o undermeny que coleta os valores no display display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (27, 2); display.setTextColor (HVIT); display.print ("VALOR"); display.setTextColor (SVART); display.fillRect (0, 24, 21, 11, 2); display.setCursor (2, 26); display.setTextColor (HVIT); 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 (HVIT); display.print ("F4"); display.setTextColor (SVART); display.setCursor (23, 38); display.print ("VOLTAR"); display.setCursor (2, 14); display.display (); String valor = ""; char tecla = false;

sløyfe og venter på at tasten trykkes

Her forklarer vi Loop -programmering, det vil si der du angir verdiene.

// Sløyfe 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': case '7': case '8': case '9': case '0': valor += tecla; display.print (tecla); display.display (); gå i stykker; // 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 (); gå i stykker; // Se tecla ENT foi pressionada case 'e': // Retorna o valor return valor.toInt (); gå i stykker; // Se tecla F4 (ESC) foi pressionada case 'D': return -1; standard: pause; }} // // Limpa o char tecla tecla = false; }}

Motordriftsfunksjon

"Flytt" -funksjonen arbeides med i dette trinnet. Jeg får antall pulser og retningen, og så lager jeg et "for".

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

oppsett ()

Nå flytter jeg skjermen og driverkonfigurasjonen, og jeg legger til og med låsen inni kildekoden for å gjøre det enklere. Jeg initialiserer visse verdier og håndterer metodene som genererer innstillingene.

ugyldig oppsett () {// Configuracao do display ---------------------------------------- -------- display.begin (); display.setContrast (50); display.clearDisplay (); display.setTextSize (1); display.setTextColor (SVART); // Konfigurasjon av driver DRV8825 ----------------------------------------- // pin GND - Aktiver (ENA) // pin 13 - M0 // pin 12 - M1 // pin 11 - M2 // pin 10 - Reset (RST) // pin 9 - Sleep (SLP) // pin 8 - Step (STP) // pin 7 - Retning (DIR) d1.pinConfig (99, 13, 12, 11, 10, 9, 8, 7); d1. sover (LAV); d1.reset (); d1.stepPerMm (100); d1.stepPerRound (200); d1.stepConfig (1); d1.motionConfig (50, velocidade, 5000); }

loop () - 1. del - Tegningsmeny

void loop () {// Escreve o Menu do Programa no display ----------------------------------- display.clearDisplay (); display.fillRect (0, 0, 15, 11, 2); display.setCursor (2, 2); display.setTextColor (HVIT); 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 (HVIT); 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 (HVIT); display.print ("F3"); display.setTextColor (SVART); display.setCursor (17, 26); display.print ("VELOCIDADE");

loop () - Del 2 - Tegningsmeny

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

loop () - Del 3 - Løping

// 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; } annet {// Skap en "Movendo" uten visning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (HVIT); display.print ("MOVENDO"); display.setTextColor (SVART); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Del 4 - Løping

// Flytt til motorflytter (distancia, LOW); // Volta ao meny esc = true; } gå i stykker; // Se tecla F2 foi pressionada case 'B': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) {esc = true; } annet {// Skap en "Movendo" uten visning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (21, 2); display.setTextColor (HVIT); display.print ("MOVENDO"); display.setTextColor (SVART); display.setCursor (2, 14); display.print (distancia); display.print ("Passos"); display.display ();

loop () - Del 5 - Løping

// Flytt til motorflytter (distancia, HIGH); // Volta ao meny esc = true; } gå i stykker; // Se tecla F3 foi pressionada case 'C': velocidade = lerValor (); hvis (velocidade == -1) {esc = true; } annet {// Skap en "Velocidade" uten visning display.clearDisplay (); display.fillRect (0, 0, 84, 11, 2); display.setCursor (12, 2); display.setTextColor (HVIT); display.print ("VELOCIDADE"); display.setTextColor (SVART); display.setCursor (2, 14); display.print (velocidade); display.print (røyke (229)); display.print ("s");

loop () - Del 6 - Løping

display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor (HVIT); display.println ("OK!"); display.setTextColor (SVART); display.display (); // Configura nova velocidade ao motor d1.motionConfig (50, velocidade, 5000); forsinkelse (2000); // Volta ao meny esc = true; } gå i stykker; // 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: pause; }} // Limpa o char customKey customKey = false; }}

Trinn 16: Om spindler - maskinkonfigurasjoner

Om spindler - maskinkonfigurasjoner
Om spindler - maskinkonfigurasjoner

I CNC -maskiner som 3D -skrivere og rutere for eksempel, må programmet som er ansvarlig for posisjoneringskontroll vite hvordan bevegelsene vil forekomme som en funksjon av antall pulser gitt til trinnmotoren.

Hvis trinnmotordriveren tillater bruk av mikro-trinn, må denne konfigurasjonen tas i betraktning ved beregningen av deplasasjonen som produseres.

For eksempel, hvis en 200-trinns motor per omdreining er koblet til en driver som er satt til 1/16, vil det kreves 16 x 200 pulser for et enkelt omdreining av spindelen, det vil si 3200 pulser for hver omdreining. Hvis denne spindelen har en stigning på 2 mm per omdreining, vil det ta 3200 pulser i driveren for mutteren å bevege seg 2 mm.

Faktisk bruker programvarekontrollere ofte en grunn til å spesifisere dette forholdet, "antall pulser per millimeter" eller "trinn / mm".

Trinn 17: Marlin

Marlin
Marlin

I Marlin, for eksempel, ser vi i delen @section motion:

/ **

* Standard aksetrinn per enhet (trinn / mm)

* Overstyr med M92

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

* /

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

I dette eksemplet kan vi konkludere med at X- og Y -aksene har en nøyaktighet på 80 pulser for å bevege seg 1 mm, mens Z trenger 3200 pulser og ekstruderen E0 trenger 100.

Trinn 18: GRBL

GRBL
GRBL

Nedenfor ser vi GRBL -konfigurasjonskommandoene. Med $ 100-kommandoen kan vi justere antall pulser som kreves for å forårsake en millimeter forskyvning på X-aksen.

I eksemplet nedenfor kan vi se at gjeldende verdi er 250 pulser per mm.

Y- og Z -aksene kan angis henholdsvis $ 101 og $ 102.

Anbefalt: