Laboratorio Mecatronico

Desde el comienzo del semestre al equipo se le dio el tema a abordar en el proyecto, para el caso de nuestro clase el tema fue el de música. Desde ese dia el equipo se centró en idear y desarrollar un mecanismo mecatrónico relacionado de alguna manera al tema asignado.. Al principio fue difícil relacionar la ingeniería mecatrónica con este tema un tanto alejado de los temas vistos en clase o de proyectos pasados, sin embargo, después de buscar se encontró un proyecto que llamó la atención a todos los integrantes del equipo: un mecanismo sensor/actuador capaz de jugar una conocida aplicación de iPad que trata sobre tocar un piano conforme aparezcan teclas al azar, para lograr interpretar una canción.

Step 1: Paso 1: Hacer El CAD

Las herramientas CAD o CADD (diseño y dibujo asistido por computadora) permiten hacer uso de las tecnologías informáticas para el diseño y la documentación sobre diseño. El software de diseño remplaza los dibujos a mano con procesos automatizados.

Si trabaja en los sectores de arquitectura, MEP o ingeniería estructural, es muy probable que haya usado programas CAD 2D o 3D. Estos programas pueden ayudarlo a explorar ideas de diseño, visualizar conceptos mediante renderizaciones fotorrealistas y simular el rendimiento de un diseño en el mundo real. El software AutoCAD fue el primer programa CAD, y sigue siendo la aplicación CAD más utilizada.

Step 2: Paso 2: Imprimir Las Piezas En 3D

La impresión 3D es un grupo de tecnologías de fabricación por adición donde un objeto tridimensional es creado mediante la superposición de capas sucesivas de material. Las impresoras 3D son por lo general más rápidas, más baratas y más fáciles de usar que otras tecnologías de fabricación por adición, aunque como cualquier proceso industrial, estarán sometidas a un compromiso entre su precio de adquisición y la tolerancia en las medidas de los objetos producidos. Las impresoras 3D ofrecen a los desarrolladores del producto la capacidad para imprimir partes y montajes hechos de diferentes materiales con diferentes propiedades físicas y mecánicas, a menudo con un simple proceso de ensamble. Las tecnologías avanzadas de impresión 3D pueden incluso ofrecer modelos que pueden servir como prototipos de producto.

Step 3: Paso 3: Comprar Los Componentes

Desde la fase de idealización del proyecto fue notorio la carga que el diseño e implementación de nuestro mecanismo iba a tener por la parte eléctrica/electrónica, al pasar la fase de diseño y comenzar con la parte de conseguir e implementar los materiales eléctricos el equipo se dió cuenta que efectivamente estaba en el correcto.

CANTIDAD PROVEEDOR COSTO UNITARIO

Motor de Pasos NEMA 17

Tarjeta CNC Shield V3

Sensor Sharp 4

Arduino UNO 1

Servomotor 2

Sensor LDR

Resistencias

Driver drv8825

Adaptador electrico 12v

Arduino Mega 1

Step 4: Paso 4: Hacer Ensamble

Primer prototipo:

En esta parte del proyecto hubo bastante inconvenientes, mismos que causaban retraso considerable debido a que cambiar una pieza de las que se requería fabricar en 3D era cuestión de bastante tiempo, primero por la parte del tiempo que se requiere para fabricar la pieza y en segundo por el uso de las impresoras 3D de la escuela. Debido a retrasos de este tipo al comienzo del semestre se decidió trabajar la estructura de nuestro proyecto de una manera más “manual”, utilizando más piezas fabricadas físicamente por el equipo.

A pesar del esfuerzo del equipo el resultado final de un mecanismo ensamblado en su mayoría por piezas de madera trabajadas manualmente iba ser cero profesional y visualmente nada estetico, asi que se decidió descartar esta idea y comenzar con un proyecto basado en piezas impresas en 3D y una diferente base más llamativa.

Step 5: Ensamble Final

En nuestro ensamble final dejamos de utilizar madera por que no tenias las herramientas necesarias para hacer los cortes tan precisos. Para la base del proyecto fue una hoja de acrílico de dimensiones 50x40 cm y en lugar de usar los agarres de la banda de madera utilizamos unas piezas impresas en 3D de PLA. Para los sensores de detección de color utilizamos unas fotoresistencias que tenían la capacidad de diferenciar entre color blanco y negro y para la que todo funcionara usamos un micro procesador que movía los steppers con una gran precisión.

Step 6: Step 6: Coding De Arduino (Coding Arduino Mega)

#include

Servo servoMotorl;

Servo servoMotorr;

const int b1=5;

const int b2=6;

const int b3=7;

int ml=0;

int mr=0;

void setup()

{ Serial.begin(9600);

servoMotorr.attach(10);

servoMotorl.attach(9);

pinMode(11, OUTPUT);

pinMode(b1,OUTPUT);

pinMode(b2,OUTPUT);

pinMode(b3,OUTPUT);

} void loop()

{

digitalWrite(11,HIGH);

int l1=analogRead(A1);

int l2=analogRead(A2);

int r1=analogRead(A3);

int r2=analogRead(A4);

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

if (l1<750 && ml==0){

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

delay(250); //

servoMotorl.write(0);

delay(100);

servoMotorl.write(90);

delay(1000);

} if (l1<750 && ml==1)

{ //digitalWrite(left,HIGH);

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,HIGH);

delay(250);

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

servoMotorl.write(0);

delay(100);

servoMotorl.write(90);

delay(1000); ml=0;

} if (l2<830 && ml==1)

{

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

delay(250);

servoMotorl.write(0);

delay(100);

servoMotorl.write(90);

delay(1000);

} if (l2<830 && ml==0){

//digitalWrite(left,HIGH)

digitalWrite(b1,LOW);

digitalWrite(b2,HIGH);

digitalWrite(b3,LOW);

delay(250);

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

servoMotorl.write(0);

delay(100);

servoMotorl.write(90);

delay(1000);

ml=1;

} if (r1<850 && mr==0){

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

delay(250); // servoMotorr.write(90);

delay(100); servoMotorr.write(0);

delay(1000); }

if (r1<850 && mr==1){

//digitalWrite(right,LOW);

digitalWrite(b1,HIGH);

digitalWrite(b2,HIGH);

digitalWrite(b3,LOW);

delay(250);

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

servoMotorr.write(90);

delay(100);

servoMotorr.write(0);

delay(1000);

mr=0;

} if (r2<600 && mr==1){

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

delay(250);

servoMotorr.write(90);

delay(100);

servoMotorr.write(0);

delay(1000); }

if (r2<600 && mr==0){

//digitalWrite(right,LOW);

digitalWrite(b1,HIGH);

digitalWrite(b2,LOW);

digitalWrite(b3,HIGH);

delay(250);

digitalWrite(b1,LOW);

digitalWrite(b2,LOW);

digitalWrite(b3,LOW);

servoMotorr.write(90);

delay(100);

servoMotorr.write(0);

delay(1000);

mr=1;

}

}

Step 7: Codigo Steppers

#define EN 8

//Direction pin #define X_DIR 5 #define Y_DIR 6 #define Z_DIR 7

//Step pin #define X_STP 2 #define Y_STP 3 #define Z_STP 4

//DRV8825 int delayTime=30; //Delay between each pause (uS) int stps=3200;// Steps to move

void step(boolean dir, byte dirPin, byte stepperPin, int steps)

{

digitalWrite(dirPin, dir);

delay(100);

for (int i = 0; i < steps; i++) {

digitalWrite(stepperPin, HIGH);

delayMicroseconds(delayTime);

digitalWrite(stepperPin, LOW);

delayMicroseconds(delayTime);

}

}

void setup(){

Serial.begin(9600);

pinMode(X_DIR, OUTPUT); pinMode(X_STP, OUTPUT);

pinMode(Y_DIR, OUTPUT); pinMode(Y_STP, OUTPUT);

pinMode(Z_DIR, OUTPUT); pinMode(Z_STP, OUTPUT);

pinMode(EN, OUTPUT);

digitalWrite(EN, LOW);

pinMode(9,INPUT);

pinMode(10,INPUT);

pinMode(11,INPUT);

// Mi Y es motor derecho // Mi X es motor izquierdo

}

void loop(){

int b1=digitalRead(9);

int b2=digitalRead(10);

int b3=digitalRead(11);

If (b1==LOW && b2==LOW && b3==LOW){

delay(100);

} if (b1==LOW && b2==LOW && b3==HIGH){

step(false, X_DIR, X_STP, stps);

//X, Clockwise delay(300);

} if (b1==HIGH && b2==LOW && b3==HIGH){

step(false, Y_DIR, Y_STP, stps); //Y, Clockwise

//step(false, Z_DIR, Z_STP, stps);

//Z, Clockwise delay(300);

} if (b1==LOW && b2==HIGH && b3==LOW){

step(true, X_DIR, X_STP, stps);

Counterclockwise delay(300); }

if (b1==HIGH && b2==HIGH && b3==LOW){

step(true, Y_DIR, Y_STP, stps);

(true, Z_DIR, Z_STP, stps);

Counterclockwise delay(300);

}

}

Share

    Recommendations

    • PCB Contest

      PCB Contest
    • First Time Author

      First Time Author
    • Make it Glow Contest 2018

      Make it Glow Contest 2018

    Discussions