Professional Documents
Culture Documents
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.
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();
}
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;
}
}
}
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
Energa
El Arduino Nano posee seleccin automtica de la fuente de alimentacin y
puede ser alimentado a travs de:
Diagrama de Pines
Arduino Nano
and v3.x
Compatibilidad
Pines
de
entrada/salida
(VCC/GND/SIGNAL)
tipo
servomotor
14
Pines analgicos
Pines PWM
Salida
AREF
Voltaje de salida
3.3V
Tamao
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