Anda di halaman 1dari 15

UNIVERSIDAD DE TARAPACÁ

Escuela Universitaria de Ingeniería Eléctrica y Electrónica

INFORME DE DISEÑO ELECTRONICO

INFORME Informe proyecto

3 BRAZO ROBOTICO CON SERVOMOTOR

Nombre Alumnos Apellidos, OBSERVACIONES

1.- PTRRZA

2.-

FECHA REALIZACIÓN

FECHA ENTREGA

Diseño Electrónico

PROFESOR: NOTA
UNIVERSIDAD DE TARAPACÁ

CONTENIDO
1.-Objetivos Generales

2. Objetivos Específicos

3. Descripción del proyecto

4. Componentes

5. Desarrollo

5.1. Simulación

5.2. Pruebas del sensor infrarrojo

5.3. Pruebas del servo motor

5.4. Programación

5.5. Protoboard

5.6. Fuente de alimentciòn

5.7. Diseño placa

5.8. Impresión y soldado

5.9. Construcción del cuerpo del brazo

6. Aportes 5

7. Carta Gant 6

8. Conclusión 6

9. Bibliografía 7

2|Página
UNIVERSIDAD DE TARAPACÁ

INTRODUCCIÓN
Hoy en día, es usual ver robots, drones, entre otros con sistemas
automáticos de control y sin percatarnos, muchos de esos dispositivos tienen una
variedad de sensores para optimizar el trabajo asignado.

Trabajos en automatización y telecomunicaciones, con desarrollo en


modelado, simulación, control e instrumentación mediante tecnología de visión,
manipulación robotizada de materiales integrada a sistemas de visión por
computador y sensores de distancia láser, control basado en modelos aplicado a
robótica móvil, detección de proximidad y evaluación de volúmenes, la
manufactura de equipos mineros entre otros.

Es por ello que se realizará la experiencia del manejo de un brazo robotico


para aprender sobre el tema. Se describirá los pasos para el desarrollo del
proyecto.

3|Página
UNIVERSIDAD DE TARAPACÁ

1.- Objetivos generales

• Adquirir capacidades y conocimientos que permitan desarrollar el proyecto


que se proponga para el ramo de diseño electrónico. (investigación,
implementación, conocimientos técnicos y teóricos).

• Construir un brazo robotico que sea controlado con una computadora a


través de conexión bluetooth.

2.- Objetivos específicos

• Configurar el microcontrolador Atmega 328P-UP.

• Realizar una programación capaz de controlar los movimientos de servo


motores.

4|Página
UNIVERSIDAD DE TARAPACÁ

3.- Descripción del proyecto

El proyecto consiste en brazo robotico, que es controlado mediante una señal


infrarroja y recibida por el microcontrolador mediante un pin de entrada análoga.
El microcontrolador controlar los servos y dar el movimiento del brazo de forma
autómoma.

4.- Componentes.

Para el proyecto utilizamos una gran variedad de componente, muchos de


los cuales se fueron incluyendo a medida que avanzaba el proyecto, los
componentes utilizados fueron:

Nro nombre Marca Nro parte Descripcion

1 Limitador L7805CV Limita el paso de voltaje a


5V para el controlador

1 Microprocesador ATMEGA328P Microcontrolador que


contiene el programa

1 Sensor infrarrojo SHARP 2Y0A21 Sensor que detecta


distancia de 7cm a 120 cm.

1 Condensador 10uF

2 Condensador 22pF Protege al cristal del


microcontrolador.

1 condensador 1nF Para el BUTTON del


microcontrolador.

1 Cristal 16MHz Frecuencia de trabajo del


microcontrolador.

1 servomotor Tower Pro 995 Mueve al eje


correspondiente a la pinza.

1 Led emisor de luz rojo Indica operación del motor


cuando la señal es
detectada.

3 Resistencias 1k, 220 Ohm Limitador de corriente que


circula hacia la red.

5|Página
UNIVERSIDAD DE TARAPACÁ

5.- Desarrollo.

5.1.- Simulación.

Se procede a simular el proyecto, para eso se realiza el programa PROTEUS, con


los componentes reales del proyecto trabajamos con una simulación de este,
utilizando el software Proteus. Con esta simulación fuimos capaces de corregir
fallas de conexión y de programación.

Fig.1.-Simulacion Proteus.

5.2.- Pruebas del sensor infrarrojo.

Para poder probar la comunicación entre el microcontrolador y sensor , fue


necesario crear una programación que nos indicara que el brazo esta recibiendo la
información enviada por el sensor. Para realizar la programación utilizamos el
BOOTLOADER del ATMEGA 328P-UP.

6|Página
UNIVERSIDAD DE TARAPACÁ

5.3.- Pruebas de SERVO MOTOR

El servo motor trabaja en un rango determindo de corriente y voltaje, por lo que


fue necesario conectar un cristal externo al microcontrolador de 16Mhz, además
de configurar el microcontrolador.

5.4.- Programación

La programación debía de comunicar el microcontrolador para luego mover


los servomotores según se lo indicára el sensor.
#include <Servo.h>
Servo myservo1; // crea el objeto servo1
Servo myservo2; // crea el objeto servo2
Servo myservo3; // crea el objeto servo3
Servo myservo4; // crea el objeto servo4
Servo myservo5; // crea el objeto servo4

int pos = 0; // posicion del servo


const int LED =4; //funcionamiento del ON menor 8cm
const int LED2 =13; //funcionaiento ON menor a 30 cm

const int velocidadgiro=10; //movimiento rapido, limite 5 seg


const int velocidadgiro2=10; //movimiento lento, limite 20 seg
const int angulo=180; //no pasar 180 grados!
const int angulo1=180;
int val = 0; //val se emplea para almacenar el estado del boton
int state = 0; // 0 LED apagado, mientras que 1 encendido
int old_val = 0;

void setup() {
myservo1.attach(8);
myservo2.attach(9); // vincula el servo al pin digital 9
myservo3.attach(10); //vincula el servo al pin digit al 10
myservo4.attach(11); // vincula el servo al pin digital 11
myservo5.attach(12); //vincula el servo al pin digital 12

// Comunicación seria a 9600 baudios


Serial.begin(9600);
pinMode(LED2, OUTPUT);
pinMode(LED,OUTPUT); // establecer que el pin digital 4 es una señal de
salida
}

void loop() {

//Imprime datos por pantalla


long tiempo=millis(); //tiempo antes de iniciar la lectura
int D_cm=distancia(20); //lectura de distancia
tiempo=millis()-tiempo; //milisegundos que duró la lectura
Serial.print("Tiempo de lectura: ");

7|Página
UNIVERSIDAD DE TARAPACÁ

Serial.print(tiempo);
Serial.print("ms Distancia: ");
Serial.print(D_cm);
Serial.println(" cm");
delay(100);

//-------------------------- logica de accion enciente led a menor


distancia

val= D_cm;

if ((D_cm < 8))//0 0 0 1


{
digitalWrite(LED, HIGH); // encinde el LED
val=0;

//----------------------------------------------------------------------
//----------------------------------------------------------------------

//---------------------------------------------------
// PROGRAMA DE LOS SERVO MOTORES inicio S=SERVOS:1,2,3,4,5
//--------------------------------------------------
//Posicion 1
// s1=0
// s2=+180
// s3=+180
// s4=+45
// s5=+180 (cierra)
// s4=-45
// s3=-180
// s2=-180
// s1=+180 (Giro de base)

//posicion 2
// s2=+90
// s3=+30
// s4=+10
// s5=-30 (abre)
// s3=-30
// s4=-10
// s4=-90
// s1=-180 (Retorno base)

//loop

//---------------------------apetura S2-S3------------------------

for (pos = 0; pos <= 45; pos += 1)


{
myservo2.write(pos);
myservo3.write(pos);
delay(velocidadgiro2);
}

8|Página
UNIVERSIDAD DE TARAPACÁ

//------------------------------------------apertura S5-S4--------------
-*****Se cierran las pinzas*****

for (pos = 0; pos <= 40; pos += 1)


{
myservo5.write(pos);
myservo4.write(180-pos);
delay(velocidadgiro2);
}

//--------------------cierre S2-S3------------------------------

//varia la posicion de (pos) a 0, con esperas de (velocidadgiro)


for (pos =45; pos >= 0; pos -= 1)
{
myservo2.write(pos);
myservo3.write(pos);

delay(velocidadgiro2);
}

//---------------------------------apertura S1 -------------------------
-
//varia la posicion de 0 a (pos) grados con espera de (velocidad)
for (pos = 0; pos <= angulo1; pos += 1)
{
myservo1.write(pos);
delay(velocidadgiro2);
}

//---------------------------apetura S2-S3------------------------

for (pos = 0; pos <=45; pos += 1)


{
myservo2.write(pos);
myservo3.write(pos);
delay(velocidadgiro2);
}

//-------------------------cierre S5-S4--------------------------------
--**********Se abren las pinzas****

//varia la posicion de (pos) a 0, con esperas de (velocidadgiro)


for (pos = 40; pos >= 0; pos -= 1)
{
myservo5.write(pos);
myservo4.write(180+pos);
delay(velocidadgiro2);

9|Página
UNIVERSIDAD DE TARAPACÁ

//--------------------cierre S2-S3------------------------------

//varia la posicion de (pos) a 0, con esperas de (velocidadgiro)


for (pos = 45; pos >= 0; pos -= 1)
{
myservo2.write(pos);
myservo3.write(pos);

delay(velocidadgiro2);
}
delay(2);

//--------------------------cierre s1-----------------------------

for (pos = angulo1; pos >= 0; pos -= 1)


{
myservo1.write(pos);

delay(velocidadgiro2);
}

val=0;

//-----------------------------------------------------------------------
------------------
//-----------------------------------------------------------------------
------------------
else

digitalWrite(LED,LOW); // enciende el LED

val=0;
delay(2);

//--------------------------(CORRECTO)

float distancia(int n)
{
long suma=0;

10 | P á g i n a
UNIVERSIDAD DE TARAPACÁ

for(int i=0;i<n;i++)
{
suma=suma+analogRead(A0);

float adc=suma/n; //filtro de armonicos


float distancia_cm = 17569.7 * pow(adc, -1.2062);
if(distancia_cm <30){ //distancia de hasta 30 centimetros para prender un
LED
digitalWrite(LED2, HIGH); // enciende el LED
}
else
digitalWrite(LED2, LOW); // enciende el LED
return(distancia_cm);

5.5.- Protoboard

Ya probada la programación, debíamos pasar las conexiones desde el Proteus


hacia el protoboard. Luego de probar todas las conexiones, cargamos el
programa.

5.6.- Fuente de alimentaciòn.

Se realiza el uso de dos fuentes de alimentaciòn, para el circuito teniendo


presente que uno es para el uso de los servos y el otro para el microcontrolador.

5.7.- Diseño de la Placa

La placa fue diseñada en el programa Ares el cual es una extensión del Proteus.
Como las conexiones ya se habían corregido y revisado, solo fue necesario
ordenar los componentes en el programa, para luego imprimir la placa.

11 | P á g i n a
UNIVERSIDAD DE TARAPACÁ

12 | P á g i n a
UNIVERSIDAD DE TARAPACÁ

5.8.- Impresión y soldado de la placa.

El proceso de impresión de la placa fue visto durante el transcurso del curso, El


soldado de los componentes a la placa debido a la inexperiencia generò muchas
complicaciones.

5.9.- Construcción del cuerpo del brazo.

La construcción del brazo tuvo muchos imprevistos `por un lado la impronta de no


contar con la herramienta de la màquina 3D a tiempo. Y la modificacion a la carta
hizo alterar los objetivos de manera radical.

6.- Aportes.

El desarrollo de la programaciòn de giro invertido para las pinzas, no existentes en


la internet.

//PTRRZA UNIVERSIDAD DE TARAPACA SERVO INVERTIDO V 1.0


#include <Servo.h>
Servo myservo1; // crea el objeto servo1
Servo myservo2; // crea el objeto servo2

int pos = 0; // posicion del servo

const int velocidadgiro=10;


const int angulo1=180; //no pasar 180

void setup(){ // definir si la variable es de entrada // o salida.


myservo1.attach(8); // vincula el servo al pin digital 9

13 | P á g i n a
UNIVERSIDAD DE TARAPACÁ

myservo2.attach(9);

void loop ()
{

for (pos = 0; pos <= angulo1; pos += 1)


{
myservo1.write(pos);
myservo2.write(angulo1-pos);

delay(velocidadgiro);
}

//varia la posicion de 0 a 180, con esperas de 15ms


for (pos = angulo1; pos >= 0; pos -= 1)
{
myservo1.write(pos);
myservo2.write(angulo1+pos);

7.- Carta gant

Al inicio del ramo fue pedida una carta Gant , la que debía servir como guía
para el transcurso del proyecto.

14 | P á g i n a
UNIVERSIDAD DE TARAPACÁ

8.- Conclusión.

Se concluye que el desarrollo del trabajo fue muy satisfactorio siguiendo los
pasos establecidos por la carta gran. El inconveniente de la placa generó
problemas inicialmente pero con el transcurso del tiempo fue solucionando. Se
concluye el trabajo de diseño electrónico.

5.-BIBLIOGRAFÍA
[1] http://www.alciro.org/alciro/Plotter-Router-Fresadora-CNC_1/Motores-
reluctancia-variable_42.htm

[2] https://es.wikipedia.org/wiki/Motor_paso_a_paso

[3] https://es.wikipedia.org/wiki/Orden_de_explosi%C3%B3n

[4] http://www.javierarnedo.com/arduino/driver-a4988-nema-17-ajuste-voltaje-
referencia/

[5] https://www.youtube.com/watch?v=L0RwBb-lLts

15 | P á g i n a