Académique Documents
Professionnel Documents
Culture Documents
Objetivo:
Marco Terico:
El proyecto consiste en disear y fabricar un robot velocista, de tal
forma que sea capaz de seguir una lnea negra lo ms rpidamente
sin salirse de ella, El robot se controla por un ARDUINO, en el cual se
ubica el programa que hace que el robot funcione como un velocista.
El robot consta de dos motores que son controlados por el dispositivo
de potencia, que a su vez son dependientes del arduino. Mediante
una seal de PWM hacemos que a nuestro robot le sea posible ir ms
rpido o ms lento, segn las circunstancias que deseemos. Esto lo
hacemos segn la velocidad que imprimamos a los dos motores.
Si la velocidad es igual en ambos motores, el robot ir recto, si un
motor gira ms rpido que otro, har que nuestro robot gire
Materiales:
1 Arduino
2 Motores DC
1 Regulador de voltaje 7805
Un puente H L293D
4 sensores cny70
4 resistencias de 220
4 resistencias de 47 K
1 pulsador
Cables
1 Batera de 7 volts
Cdigo:
#include <QTRSensors.h>
#define MOTORLEFT_DIR_A
#define MOTORLEFT_DIR_B
#define MOTORLEFT_PWM
#define MOTORRIGH_DIR_A
#define MOTORRIGH_DIR_B
#define MOTORRIGH_PWM
#define NUM_SENSORS
7
8
6
4
3
5
analogWrite(MOTORRIGH_PWM,value);
}
// funcin Velocidad Motor Derecho
void setMotorRigh(int value)
{
if ( value >= 0 )
{
// si valor positivo vamos hacia adelante
digitalWrite(MOTORLEFT_DIR_A,HIGH);
digitalWrite(MOTORLEFT_DIR_B,LOW);
}
else
{
// si valor negativo vamos hacia atras
digitalWrite(MOTORLEFT_DIR_A,LOW);
digitalWrite(MOTORLEFT_DIR_B,HIGH);
value *= -1;
}
// Setea Velocidad
analogWrite(MOTORLEFT_PWM,value);
}
// funcin Velocidad Motores
void setMotors(int left, int righ)
{
setMotorLeft(left);
setMotorRigh(righ);
}
// funcin Freno en Motores
void setBrake(boolean left, boolean righ, int value)
{
if ( left )
{
// pines LEFT motor
digitalWrite(MOTORRIGH_DIR_A,HIGH);
digitalWrite(MOTORRIGH_DIR_B,HIGH);
analogWrite (MOTORRIGH_PWM, value);
}
if ( righ )
{
// pines RIGH motor
digitalWrite(MOTORLEFT_DIR_A,HIGH);
digitalWrite(MOTORLEFT_DIR_B,HIGH);
analogWrite (MOTORLEFT_PWM, value);
}
}
void setup()
{
// inicializar pines de salida
pinMode(LEDPIN
,OUTPUT);
pinMode(MOTORRIGH_DIR_A ,OUTPUT);
pinMode(MOTORRIGH_DIR_B ,OUTPUT);
pinMode(MOTORRIGH_PWM ,OUTPUT);
pinMode(MOTORLEFT_DIR_A ,OUTPUT);
pinMode(MOTORLEFT_DIR_B ,OUTPUT);
pinMode(MOTORLEFT_PWM ,OUTPUT);
pinMode(BUTTONPIN
,INPUT);
// presiona botn para activar calibracin
while ( !digitalRead(BUTTONPIN) );
// calibrar sensores QTRA, titilando LED como gua
for ( int i=0; i<70; i++)
{
digitalWrite(LEDPIN, HIGH); delay(20);
qtra.calibrate();
digitalWrite(LEDPIN, LOW); delay(20);
}
// apagar LED
digitalWrite(LEDPIN, LOW);
// presionar botn para correr el robot
while ( !digitalRead(BUTTONPIN) );
// esperar 5 segundos
delay(5000);
// mover el robot suave para ganar inercia
setMotors(130,130);
// durante 0.3 segundos
delay(300);
}
unsigned int position = 0; // posicin actual de los sensores
int derivative = 0;
// derivada
int proportional = 0;
// proporcional
int power_difference = 0; // velocidad diferencial
// Mxima velocidad en el poder diferencial
int max = 140;
// Ultima Proporcional
int last_proportional=0;
// Constantes Proporcional y Derivativa
setMotors(max,max-power_difference);
}
Diseo:
PREINFORME
Proyecto de ROBOTICA
INTEGRANTES DEL GRUPO:
- ANA MAMANI LOPEZ
- RUDDY ANGEL
CABALLOTTI TORRICO
HORARIO:
MARTES 14:15 - 15:45
FECHA:
16/10/14
AUXILIAR:
MARIO ZEVERICH ZURITA
GRUPO:
13
COCHABAMBA BOLIVIA