Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Fresadora CNC 3 Ejes DIY: Construye una Máquina de Precisión

Componentes y materiales

ComponenteCantidad
Arduino Nano R31
Raspberry Pi 3 Model B1
Driver de motor paso a paso A4988 (SparkFun)1
Shield RepRap Arduino Nano 4-step 1-DC (Adafruit)1
Separadores aluminio OpenBuilds1
Fuente alimentación 12V/5A1
Soporte en L OpenBuilds1
Tuercas en T M5 OpenBuilds (pack 10)1
Tornillos perfil bajo M5 OpenBuilds (pack 10)1
Tornillos cabeza cilíndrica M3 OpenBuilds1
Tornillo prisionero OpenBuilds1
Arandela ranurada 15x5x2mm OpenBuilds1
Bloque tuerca anti-retroceso husillo Acme 8mm OpenBuilds1
Placa husillo roscado NEMA 17 OpenBuilds1
Husillo Acme métrico 8mm OpenBuilds1
Rodamiento 625 2RS 5x16x5 OpenBuilds1
Barra lisa guiada1
Ventilador refrigeración BLDC1
Motor DC genérico1
Servomotor Tower Pro MG996R1
Driver doble puente H L293D (Texas Instruments)1

Herramientas necesarias

Aplicaciones y servicios online

Descripción del proyecto

Nuestro prototipo es basado en IoT, lo que le da una arquitectura escalable para controlarlo desde prácticamente cualquier lugar con conexión a internet. Es una CNC de 350x350 mm con área de trabajo 250x240 mm, funcionando con software de control de movimiento open-source (GRBL). El hardware también es mayormente open-source, reduciendo drásticamente costes. La máquina está construida íntegramente con componentes locales y puede mecanizar madera, plásticos, goma dura, resina dura, etc. El objetivo principal es fabricación de PCB de bajo coste; también permite grabado en madera.

Planeamos añadir soporte para mecanizado láser en futuras versiones.

Actualmente el sistema se controla desde una red local inalámbrica; queremos escalarlo a una aplicación web distribuida para conectar un ecosistema de múltiples dispositivos.

Especificaciones mecánicas

Arquitectura IoT / Industria 4.0

El control remoto se realiza desde pantalla sin cabeza (móvil/tablet como HMI) vía internet. Usamos Raspberry Pi + router (seguridad) con servidor web para interfaz de control inalámbrico. También planeamos monitorizar en tiempo real: par motor, consumo, vibración, ruido, etc., y visualizar insights en plataforma web para mejor colaboración. Esto es lo que en manufactura se llama IIoT (Industria 4.0).

Código

G-code de ejemplo (VHDL)

(Scribbled version of C:\Users\ABDERR~1\AppData\Local\Temp\ink_ext_XXXXXX.svgISF45X @ 3000.00)
(unicorn.py --tab="plotter_setup" --pen-up-angle=50 --pen-down-angle=30 --start-delay=160 --stop-delay=150 --xy-feedrate=3000 --z-feedrate=150 --z-height=0 --finished-height=0 --register-pen=true --x-home=0 --y-home=0 --num-copies=1 --continuous=false --pause-on-layer-change=true C:\Users\ABDERR~1\AppData\Local\Temp\ink_ext_XXXXXX.svgISF45X)
G21 (métrico) G90 (modo absoluto) G92 X0.00 Y0.00 Z0.00 (origen)
M300 S30 (pluma abajo) G4 P160 (espera 160ms)
M300 S50 (pluma arriba) G4 P150 (espera 150ms)
M18 (desactivar drivers) M01 (¿test registro ok?)
M17 (activar drivers si SÍ) M01 (Capa 'Calque 1')
(Poliínea 29 segmentos)
G1 X16.85 Y4.97 F3000.00 M300 S30.00 G4 P160
G1 X14.07 Y5.98 F3000.00 ... (archivo truncado, descargar completo)

Código control paso a paso (Arduino)

// AMIT
#include <Servo.h>
#include <AFMotor.h>
#define LINE_BUFFER_LENGTH 512
char STEP = MICROSTEP;
const int penZUp = 115;
const int penZDown = 83;
const int penServoPin = 10;
const int stepsPerRevolution = 48;
Servo penServo;
AF_Stepper myStepperY(stepsPerRevolution,1);
AF_Stepper myStepperX(stepsPerRevolution,2);

struct point { float x; float y; float z; };
struct point actuatorPos;

float StepInc = 1; int StepDelay = 0; int LineDelay = 0; int penDelay = 50;
float StepsPerMillimeterX = 100.0; float StepsPerMillimeterY = 100.0;
float Xmin = 0, Xmax = 40, Ymin = 0, Ymax = 40, Zmin = 0, Zmax = 1;
float Xpos = Xmin, Ypos = Ymin, Zpos = Zmax;
boolean verbose = false;

void setup() {
  Serial.begin(9600);
  penServo.attach(penServoPin);
  penServo.write(penZUp); delay(100);
  myStepperX.setSpeed(600); myStepperY.setSpeed(600);
  Serial.println("Mini CNC Plotter vivo!");
  Serial.print("Rango X: "); Serial.print(Xmin); Serial.print(" a "); Serial.print(Xmax); Serial.println(" mm.");
  Serial.print("Rango Y: "); Serial.print(Ymin); Serial.print(" a "); Serial.print(Ymax); Serial.println(" mm.");
}

void loop() {
  delay(100);
  char line[LINE_BUFFER_LENGTH]; char c; int lineIndex=0; bool lineIsComment=false, lineSemiColon=false;
  while(1) {
    while(Serial.available()>0) {
      c = Serial.read();
      if(c=='\n' || c=='\r') {
        if(lineIndex>0) {
          line[lineIndex]='\0';
          if(verbose){ Serial.print("Recibido: "); Serial.println(line); }
          processIncomingLine(line, lineIndex);
          lineIndex=0;
        }
        lineIsComment=false; lineSemiColon=false; Serial.println("ok");
      } else {
        if(lineIsComment || lineSemiColon) {
          if(c==')') lineIsComment=false;
        } else {
          if(c<=' ') {} // ignorar espacios/control
          else if(c=='/') {} // block delete no soportado
          else if(c=='(') lineIsComment=true;
          else if(c==';') lineSemiColon=true;
          else if(lineIndex>=LINE_BUFFER_LENGTH-1) { Serial.println("ERROR - desbordamiento buffer"); lineIsComment=false; lineSemiColon=false; }
          else if(c>='a' && c<='z') line[lineIndex++]=c-'a'+'A';
          else line[lineIndex++]=c;
        }
      }
    }
  }
}

void processIncomingLine(char* line, int charNB) {
  int currentIndex=0; char buffer[64]; struct point newPos; newPos.x=0; newPos.y=0;
  while(currentIndex=Xmax) x1=Xmax; if(x1<=Xmin) x1=Xmin;
  if(y1>=Ymax) y1=Ymax; if(y1<=Ymin) y1=Ymin;
  if(verbose){ Serial.print("Xpos,Ypos: "); Serial.print(Xpos); Serial.print(","); Serial.print(Ypos); Serial.println(); }
  if(verbose){ Serial.print("x1,y1: "); Serial.print(x1); Serial.print(","); Serial.print(y1); Serial.println(); }

  x1=(int)(x1*StepsPerMillimeterX); y1=(int)(y1*StepsPerMillimeterY);
  float x0=Xpos, y0=Ypos;
  long dx=abs(x1-x0), dy=abs(y1-y0);
  int sx=x0dy) {
    for(i=0;i=dx){ over-=dx; myStepperY.onestep(sy,STEP); } delay(StepDelay); }
  } else {
    for(i=0;i=dy){ over-=dy; myStepperX.onestep(sx,STEP); } delay(StepDelay); }
  }
  if(verbose){ Serial.print("dx,dy:"); Serial.print(dx); Serial.print(","); Serial.print(dy); Serial.println(); }
  if(verbose){ Serial.print("Yendo a ("); Serial.print(x0); Serial.print(","); Serial.print(y0); Serial.println(")"); }
  delay(LineDelay); Xpos=x1; Ypos=y1;
}

void penUp() { penServo.write(penZUp); delay(penDelay); Zpos=Zmax; digitalWrite(15,LOW); digitalWrite(16,HIGH); if(verbose) Serial.println("Pluma arriba!"); }
void penDown() { penServo.write(penZDown); delay(penDelay); Zpos=Zmin; digitalWrite(15,HIGH); digitalWrite(16,LOW); if(verbose) Serial.println("Pluma abajo."); }

Librería AFMotor (Arduino)

Librería completa para control de motores DC y paso a paso con shield Adafruit Motor Shield. Incluye gestión PWM, microstepping (8/16 pasos), y control de hasta 4 motores DC o 2 paso a paso. Código demasiado extenso para incluir completo; disponible en el repositorio oficial Adafruit.

Piezas personalizadas y envolventes

Esquemáticos

Fresadora CNC 3 Ejes DIY: Construye una Máquina de Precisión Fresadora CNC 3 Ejes DIY: Construye una Máquina de Precisión Fresadora CNC 3 Ejes DIY: Construye una Máquina de Precisión Fresadora CNC 3 Ejes DIY: Construye una Máquina de Precisión Fresadora CNC 3 Ejes DIY: Construye una Máquina de Precisión

Proceso de manufactura

  1. Construya su propio LUMAZOID: Visualizador de música DIY con Arduino
  2. Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
  3. Construye un Skateboard VR Casero con Arduino, Google Cardboard y Bluetooth
  4. Máquina CNC Triple – Mejora Premium
  5. Mesa Auxiliar Zen Garden con Control CNC: Construye tu Propio Mueble Inteligente
  6. Construye un dispositivo de tratamiento radiónico EMR con Arduino DIY
  7. Construye una Máquina CNC Totalmente Funcional con Arduino Nano R3
  8. Simulador de Carreras 2D DIY con Arduino Nano y Servos SG90
  9. Construye tu Propia Máquina CNC Universal – Guía DIY Completa
  10. Mecanizado Vertical y CNC VMC: Introducción Completa
  11. Máquina VMC Mini Explicada: Fresado CNC Compacto para Proyectos de Pequeña Escala