You are on page 1of 14

UNIVERSIDAD ANDINA NESTOR CACERES VELAQUEZ

FACULTAD DE CIENCIAS PURAS


ESCUELA PROFESIONAL DE INGENIERIA MECATRONICA
INFORME DE PORYECTO FINAL
(ARAA CUADRUPEDA)

PRESENTADO POR: Jimmy Alexander Mamani charca


DOCENTE: Ing. Carlos Ccama Polanco

PUNO_PERU 07 DE NOVIEMBRE DE 2016

RESUMEN
La araa cuadrpeda consiste una imitacin de la araa en forma de vida. La
imitacin fue que al ver simple vista podemos observar que tiene los rasgos de
tener 4 patas con sus ojos bien escondidos. El proyecto consisti en imitarlo los
mismos rasgos de una araa de verdad. Entonces pudimos hacerlo pero hubo
algunos obstculos que no nos dejaron por que no pudimos sacarlo al 100% de
sus rasgos. Segn en el proyecto hubo algunas fallas que pudimos corregirlo
mediante su programacin como tambin por su forma mecnica que algunas
partes fallaban por las malas instalaciones o por errores mnimos. Tambin
tuvimos perdida de materiales por no utilizar los materiales correspondientes
como guantes etc.
MATERIALES
Los materiales fueron el siguiente:
1. MICRO SERVOS 9G.
DESCRIPCION.
El servo SG90 Tower Pro un servo miniatura de gran calidad y diminutas
dimensiones, adems es bastante econmico. Funciona con la mayora de
tarjetas electrnicas de control con microcontroladores y adems con la
mayora de los sistemas de radio control comerciales. Funciona especialmente
bien en aeronaves de aeromodelismo dadas sus caractersticas de torque,
tamao y peso.
El servo SG90 tiene un conector universal tipo S que encaja perfectamente en
la mayora de los receptores de radio control incluyendo los Futaba, JR, GWS,
Cirrus, Hitec y otros. Los cables en el conector estn distribuidos de la
siguiente forma: Rojo =Alimentacin (+), Cafe = Alimentacin () o
tierra, Naranja= Seal PWM.
Este tipo de servo es ideal para las primeras experiencias de aprendizaje y
prcticas con servos, ya que sus requerimientos de energa son bastante bajos
y se permite alimentarlo con la misma fuente de alimentacin que el circuito de
control. Por ejemplo, si se conecta a una tarjeta arduino, se puede alimentar
durante las pruebas desde el puerto USB del PC sin mayor problema.

CARACTERISTICAS.

Micro Servo Tower-pro


Velocidad: 0.10 sec/60 @ 4.8V

Torque: 1.8 Kg-cm @ 4.8V


Voltaje de funcionamiento: 3.0-7.2V
Temperatura de funcionamiento: -30 ~ 60
ngulo de rotacin: 180
Ancho de pulso: 500-2400 s
Longitud de cable de conector: 24.5cm

PROGRAMACION.
#include <Servo.h>
int TrigPin = A0;
int EcPin = A1;
const unsigned long TrigCycle = 50000;
const unsigned long TrigSig = 10;
const unsigned long MaxEc = 25000;
const unsigned long MinEc = 125;
unsigned long TrigTimer = 0;
int TrigVal = LOW;
unsigned long EcInterval;
unsigned long distance;
unsigned long distanceRIGHT;
unsigned long distanceLEFT;
const unsigned long MINdistance = 30;
const unsigned long CRITdistance = 15;
Servo R_BACK_1;
Servo R_FRONT_1;
Servo L_FRONT_1;
Servo L_BACK_1;
Servo R_BACK_2;
Servo R_FRONT_2;
Servo L_FRONT_2;
Servo L_BACK_2;
Servo R_BACK_3;
Servo R_FRONT_3;
Servo L_FRONT_3;
Servo L_BACK_3;

int R_BACK_1_angle;
int R_FRONT_1_angle;
int L_FRONT_1_angle;
int L_BACK_1_angle;
int R_BACK_2_angle;
int R_FRONT_2_angle;
int L_FRONT_2_angle;
int L_BACK_2_angle;
int R_BACK_3_angle;
int R_FRONT_3_angle;
int L_FRONT_3_angle;
int L_BACK_3_angle;
int R_BACK_1_PREVangle;
int R_FRONT_1_PREVangle;
int L_BACK_1_PREVangle;
int L_FRONT_1_PREVangle;
int L_FRONT_1_MAXangle = 98;
int L_FRONT_1_MINangle = 45;
int R_BACK_1_MAXangle = 98;
int R_BACK_1_MINangle = 45;
unsigned long prevmicros;
const unsigned long stepBwdSpeed = 11000;
const unsigned long stepFwdSpeed = 2000;
const unsigned long turnBwdSpeed = 17000;
const unsigned long turnFwdSpeed = 5000;
const unsigned long stallSpeed = 20000;
int R_BACK_STALLvar;
int R_FRONT_STALLvar;
int L_BACK_STALLvar;
int L_FRONT_STALLvar;
int R_BACK_stepUP;
int R_FRONT_stepUP;
int L_BACK_stepUP;
int L_FRONT_stepUP;
int turnRightVAR;
int turnLeftVAR;
int stallVAR;
int ultrasoundSWITCH;
int randomTURN;
int CRITvar;
unsigned long prevmillis;
void setup() {
pinMode(TrigPin,OUTPUT);
pinMode(EcPin,INPUT);
prevmillis = millis();
while(millis() - prevmillis < 5000) {
Ultrasound();
}
R_BACK_1.attach(2,520,2470);
R_FRONT_1.attach(3,350,2390);
L_FRONT_1.attach(4,580,2500);
L_BACK_1.attach(5,400,2500);
R_BACK_2.attach(6,400,2500);
R_FRONT_2.attach(7,350,2200);
L_FRONT_2.attach(8,600,2650);
L_BACK_2.attach(13,350,2500);
R_BACK_3.attach(12,500,2450);
R_FRONT_3.attach(11,500,2500);
L_FRONT_3.attach(10,400,2450);
L_BACK_3.attach(9,500,2600);
R_BACK_1_angle = 90;
R_FRONT_1_angle = 90;

L_FRONT_1_angle = 90;
L_BACK_1_angle = 90;
R_BACK_2_angle = 59;
R_FRONT_2_angle = 122;
L_FRONT_2_angle = 59;
L_BACK_2_angle = 122;
R_BACK_3_angle = 83;
R_FRONT_3_angle = 98;
L_FRONT_3_angle = 83;
L_BACK_3_angle = 98;
R_BACK_1.write(R_BACK_1_angle);
R_FRONT_1.write(R_FRONT_1_angle);
L_FRONT_1.write(L_FRONT_1_angle);
L_BACK_1.write(L_BACK_1_angle);
R_BACK_2.write(R_BACK_2_angle);
R_FRONT_2.write(R_FRONT_2_angle);
L_FRONT_2.write(L_FRONT_2_angle);
L_BACK_2.write(L_BACK_2_angle);
R_BACK_3.write(R_BACK_3_angle);
R_FRONT_3.write(R_FRONT_3_angle);
L_FRONT_3.write(L_FRONT_3_angle);
L_BACK_3.write(L_BACK_3_angle);
prevmillis = millis();
while(millis() - prevmillis < 2000) {
Ultrasound();
}
}
void loop() {
randomTURN = random(1,4);
if(distance > MINdistance) {
ultrasoundSWITCH = 0;
walkFWD();
while((R_BACK_1_angle == 98 || L_BACK_1_angle == 83) && ultrasoundSWITCH == 0) {
Ultrasound();
}
}
else if(distance <= MINdistance && distance > CRITdistance) {
resetPREVangle();
ultrasoundSWITCH = 1;
stallVAR = 0;
turnRightVAR = 0;
turnLeftVAR = 0;
rotate();
}
else if(distance <= CRITdistance) {
CRITvar = 1;
switch(CRITvar) {
case 1 :
resetPREVangle();
prevmillis = millis();
while(millis() - prevmillis < 5000) {
walkBWD();
CRITvar = 2;
}
case 2 :
resetPREVangle();
ultrasoundSWITCH = 1;
stallVAR = 0;
turnRightVAR = 0;
turnLeftVAR = 0;
rotate();
break;
}

}
}
void walkFWD() {
RightBackFWD();
RightFrontFWD();
LeftBackFWD();
LeftFrontFWD();
}
void walkBWD() {
LeftFrontBWD();
LeftBackBWD();
RightFrontBWD();
RightBackBWD();
}
void turnLEFT() {
RightBackTRNL();
RightFrontTRNL();
LeftFrontTRNL();
LeftBackTRNL();
}
void turnRIGHT() {
LeftBackTRNR();
LeftFrontTRNR();
RightFrontTRNR();
RightBackTRNR();
}

2. SENSOR ULTRASNICO HC-SR04


El sensor de ultrasonidos se enmarca dentro de los sensores para medir
distancias o superar obstculos, entre otras posibles funciones.
En este caso vamos a utilizarlo para la medicin de distancias. Esto lo consigue
enviando un ultrasonido (inaudible para el odo humano por su alta frecuencia)
a travs de uno de la pareja de cilindros que compone el sensor (un
transductor) y espera a que dicho sonido rebote sobre un objeto y vuelva,
retorno captado por el otro cilindro.

Este sensor en concreto tiene un rango de distancias sensible entre 3cm y 3m


con una precisin de 3mm.

Cmo vamos a traducir dicho tiempo en distancia?


Aprovechando que la velocidad de dicho ultrasonido en el aire es de valor 340
m/s, o 0,034 cm/microseg (ya que trabajaremos con centmetros y
microsegundos). Para calcular la distancia, recordaremos que v=d/t (definicin
de velocidad: distancia recorrida en un determinado tiempo).
De la frmula anterior despejamos d, obteniendo d=vt, siendo v la constante
anteriormente citada y t el valor devuelto por el sensor a la placa Arduino.
Tambin habr que dividir el resultado entre 2 dado que el tiempo recibido es el
tiempo de ida y vuelta.

El sensor consta de 4 pines: "VCC" conectado a la salida de 5V de la placa,


"Trig" conectado al pin digital de la placa encargado de enviar el pulso
ultrasnico, "Echo" al pin de entrada digital que recibir el eco de dicho pulso y
"GND" a tierra.

PROGRAMACION.

ULTRASONIDO ----------------------------------------------*/

void Ultrasound() {
if (TrigVal == LOW && micros()- TrigTimer > TrigCycle) {
TrigVal = HIGH;
digitalWrite (TrigPin,TrigVal);
TrigTimer = micros();
}
else if (TrigVal == HIGH && micros()- TrigTimer > TrigSig) {
TrigVal = LOW;
digitalWrite (TrigPin,TrigVal);
}
else if (TrigVal == LOW) {
EcInterval = pulseIn(EcPin,HIGH,TrigCycle);
if (EcInterval > 0 && EcInterval <= MaxEc) {
distance = map (EcInterval, MinEc, MaxEc, 2, 470);
ultrasoundSWITCH = ultrasoundSWITCH + 1;
}
else if (EcInterval > MaxEc) {
distance = 470;
ultrasoundSWITCH = ultrasoundSWITCH + 1;
}
}
}

/* ------------------------------- ULTRASONIDO ----------------------------------------------*/

/* ------------------------------- RESETEO ----------------------------------------------*/

void resetPREVangle() {
R_BACK_1_PREVangle = 0;
R_FRONT_1_PREVangle = 0;
L_BACK_1_PREVangle = 0;
L_FRONT_1_PREVangle = 0;
}

3. CABLES
Macho hembra.

4. CHASIS

5. ARDUINO NANO

Descripcin
El Arduino Nano es una pequea y completa placa basada en el ATmega328
(Arduino Nano 3.0) o el ATmega168 en sus versiones anteriores (Arduino Nano
2.x) que se usa conectndola a una protoboard. Tiene ms o menos la misma
funcionalidad que el Arduino Duemilanove, pero con una presentacin
diferente. No posee conector para alimentacin externa, y funciona con un
cable USB Mini-B.
Caractersticas

Microcontrolador: Atmel ATmega328 (ATmega168 versiones anteriores)


Tensin de Operacin (nivel lgico): 5 V
Tensin de Entrada (recomendado): 7-12 V
Tensin de Entrada (lmites): 6-20 V
Pines E/S Digitales: 14 (de los cuales 6 proveen de salida PWM
Entradas Analgicas: 8 Corriente mx por cada PIN de E/S: 40 mA
Memoria Flash: 32 KB (ATmega328) de los cuales 2KB son usados por
el bootloader (16 KB ATmega168)
SRAM: 2 KB (ATmega328) (1 KB ATmega168)
EEPROM: 1 KB (ATmega328) (512 bytes ATmega168)
Frecuencia de reloj: 16 MHz
Dimensiones: 18,5mm x 43,2mm

Energa
El Arduino Nano posee seleccin automtica de la fuente de alimentacin y
puede ser alimentado a travs de:

Una conexin Mini-B USB.


Una fuente de alimentacin no regulada de 6-20V (pin 30).
Una fuente de alimentacin regulada de 5V (pin 27)

Al alimentar el arduino a travs del Mini USB, el FTDI FT232RL proporciona


una salida de 3.3V en el pin 16 de la placa. Por ende, cuando se conecta a una
fuente externa (no USB), los 3.3V no se encuentran disponibles.

Diagrama de Pines

6. TARJETA DE EXPANSIN PARA EL ARDUINO NANO


Mdulo de expansin arduino nano, compatible con arduino Nano v2.x y V3.x,
no tiene la necesidad de usar ningn tipo de cable externo. Esta board permite
la conexin de varios mdulos externos, como sensores, servomotores, rels,
interruptores, potencimetros, entre otros. Este mdulo permite facilitar el uso
entre la board arduino y cualquier otro hardware. En esencia se podra decir

que esta board se encarga de expandir la funcionalidad de cualquier placa


arduino, generando un mayor orden en la circuitera.
CARACTERISTICAS.

Arduino Nano
and v3.x

Compatibilidad
Pines
de
entrada/salida
(VCC/GND/SIGNAL)

tipo

servomotor
14

Pines analgicos

Pines PWM

Pines de alimentacin (servo)

Pines de expansin I2C

Salida

AREF

Voltaje de salida

3.3V

Tamao

8cm x 9cm x 9cm

Peso

200 gramos

v2.x

7. ARMADO.
Lo siguiente debemos de tener todos sus materiales.
1. armar el chasis.
2. colocar los tornillos.
3. colocar los servos.
4. instalar correctamente las instalaciones de los cables de los
servos ubicarlos bien.
5. Instalarlo el sensor ultrasnico ala frentero del mvil o en este
caso araa
6. Colocar el arduino con la tarjeta de expansin.
7. Conectar los cables a cada pin del servomotor con la tarjeta de
expansin.
8. Colocar los cables de sensor ultrasnico con la tarjeta de
expansin indicando cada pines

You might also like