Tabla de contenido:

TA-ZON-BOT (Seguidor de línea): 3 pasos (con imágenes)
TA-ZON-BOT (Seguidor de línea): 3 pasos (con imágenes)

Video: TA-ZON-BOT (Seguidor de línea): 3 pasos (con imágenes)

Video: TA-ZON-BOT (Seguidor de línea): 3 pasos (con imágenes)
Video: The Grefg muestra el chat y sale un p*to💀 xD Casi baneo 😂 2024, Mes de julio
Anonim
TA-ZON-BOT (Seguidor de línea)
TA-ZON-BOT (Seguidor de línea)
TA-ZON-BOT (Seguidor de línea)
TA-ZON-BOT (Seguidor de línea)

TA-ZON-BOT

El tazón siguelineas

Hemos realizado este robot siguelineas con la ayuda de nuestros alumnos, (gracias minimakers).

Ha sido un proyecto express para poder participar en la OSHWDEN de A Coruña.

oshwdem.org/2017/06/oshwdem-2017/

traductor de Google

TA-ZON-BOT

El cuenco sigue la línea

Hemos hecho este robot siguiéndote con la ayuda de nuestros alumnos, (gracias minimakers).

Ha sido un proyecto expreso participar en el OSHWDEN de A Coruña.

oshwdem.org/2017/06/oshwdem-2017/

traductor de Google

Paso 1: Paso 1: Componentes

Paso 1: Componentes
Paso 1: Componentes
Paso 1: Componentes
Paso 1: Componentes
Paso 1: Componentes
Paso 1: Componentes

Los componentes que hemos utilizado

han sido los siguientes.

Una pieza redonda de metacrilato. (Podéis utilizar cualquier diseño, nuestra base mide lo justo para colocar el tazón bocabajo).

1 Tazón de desayuno (que sirve para concentrar al robot en la linea).

2 ruedas de un juguete reciclado.

2 motores con las siguientes especificaciones:

Especificaciones (Para 6V):

Dimensiones: 26 x 10 x 12 mm

Ratio de la reductora: 30: 1

Diámetro del eje: 3mm (con ranura de bloqueo)

Voltaje nominal: 6Vcc (puede funcionar entre 3 a 9Vcc)

Velocidad de giro sin carga: 1000rpm

Consumo sin carga: 120mA (1600mA con carga)

Esfuerzo de torsión: 0,6 kg / cm (máx.)

Peso: 10 gramos

Enlace de tienda online:

1 placa Arduino UNO (reciclada de un proyecto antiguo)

1 escudo para motores Adafruit v2.3:

1 Un porta pilas de 8 pilas AAA (no utilizamos 2 fuentes de alimentación).

6 tornillos y tuercas para unir los elementos como se ve en la imagen

bridas para los motores, una goma elástica para sujetar el porta pilas y un trozo de una lamina de plásticos para la base del porta pilas.

1 matriz de sensores QTR-8RC con las siguientes características;

Especificaciones para el conjunto de sensores de reflectancia QTR-8x • Dimensiones: 2,95 "x 0,5" • Voltaje de funcionamiento: 3,3-5,0 V • Corriente de suministro: 100 mA • Formato de salida para el QTR-8A: 8 voltajes analógicos que van desde 0 V al voltaje suministrado • Formato de salida para el QTR-8RC: 8 señales digitales compatibles con E / S que se pueden leer como un pulso alto temporizado • Distancia de detección óptima: 0.125 "(3 mm) • Distancia de detección máxima recomendada para el QTR-8A: 0.25" (6 mm) • Distancia de detección máxima recomendada para el QTR-8RC: 0.375 "(9.5 mm) • Peso sin clavijas de cabezal: 0.11 oz (3.1 g) Lo podéis encontrar en:

tienda.bricogeek.com/componentes/257-array-…

Ensamblar todo… próximamente un vídeo más detallado…

Los componentes que hemos utilizado han sido los siguientes.

Pieza redonda de metacrilato. (Puedes usar cualquier diseño, nuestra base mide lo suficiente para colocar el cuenco boca abajo).

1 Bol de desayuno (utilizado para concentrar el robot en la línea).

2 ruedas de juguete reciclado.

2 motores con las siguientes especificaciones:

Especificaciones (para 6V): Dimensiones: 26 x 10 x 12 mm Relación del reductor: 30: 1 Diámetro del eje: 3 mm (con ranura de bloqueo) Voltaje nominal: 6Vdc (puede operar entre 3 y 9Vdc) Velocidad de giro sin carga: 1000rpm Consumo sin carga: 120mA (1600mA con carga) Par: 0,6 kg / cm (máx.) Peso: 10 gramos

Enlace tienda online:

1 placa Arduino UNO (reciclada de un proyecto antiguo)

1 escudo para motores Adafruit v2.3:

1 Un portapilas de 8 pilas AAA (no utilizamos 2 fuentes de alimentación).

6 tornillos y tuercas para unir los elementos como se ve en la imagen

bridas para los motores, una goma elástica para sujetar el portapilas y un trozo de lámina de plástico para la base del portapilas.

1 conjunto de sensores QTR-8RC con las siguientes características;

Especificaciones para el conjunto de sensores de reflectancia QTR-8x • Dimensiones: 2,95 "x 0,5" • Voltaje de funcionamiento: 3,3-5,0 V • Corriente de suministro: 100 mA • Formato de salida para el QTR-8A: 8 voltajes analógicos que van desde 0 V al voltaje suministrado • Formato de salida para el QTR-8RC: 8 señales digitales compatibles con E / S que se pueden leer como un pulso alto temporizado • Distancia de detección óptima: 0.125 "(3 mm) • Distancia de detección máxima recomendada para el QTR-8A: 0.25" (6 mm) • Distancia de detección máxima recomendada para el QTR-8RC: 0.375 "(9.5 mm) • Peso sin clavijas de cabezal: 0.11 oz (3.1 g) Puede encontrarlo en:

tienda.bricogeek.com/componentes/257-array-de-sensores-infrarojos-qtr-8rc-digital.html

Reúna todo … pronto un video más detallado …

Paso 2: Paso 2: Inspiración

Para probar el funcionamiento de los

motores hemos seguido esta ayuda del blog www.programarfacil.com

programarfacil.com/blog/arduino-blog/adafr…

Es un resumen muy bueno de los diferentes motores que controla esta shield.

Para calibrar el sensor QTR-8RC podéis seguir el tutorial de

Y un ultimo enlace que os puede ayudar es este instructable;

www.instructables.com/id/Arduino-based-lin…

Para probar el rendimiento de los motores hemos seguido este blog de soporte www.programarfacil.com

programarfacil.com/blog/arduino-blog/adafruit-motor-shield-arduino/

Es un muy buen resumen de los diferentes motores que controla este escudo.

Para calibrar el sensor QTR-8RC puede seguir el tutorial de

www.youtube.com/watch?v=_ZeybIDd80s&list=PLlNY7ygeCIzCuq0jSjPD8_LfcAsPKUcGL&index=6

Y un último enlace que puede ayudarlo es este instructivo;

www.instructables.com/id/Arduino-based-line-follower-using-Pololu-QTR-8RC-l/

Paso 3: Paso 3: Código

Image
Image

las conexiones entre el array de

sensores y las placas las hicimos de la siguiente manera:

El Led ON va al pin digital 12

Los 8 sensores van desde el

número 1 al pin 8

número 2 al pin 9

número 3 al pin 2

número 4 al pin 3

número 5 al pin 4

número 6 al pin 5

número 7 al pin 6

número 8 al pin 7

El código va sin repasarlo (se aceptan sugerencias)

#incluir

#incluir

#incluir

#incluir

// Cree el objeto de la pantalla del motor con la dirección I2C predeterminada

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// O créelo con una dirección I2C diferente (digamos para apilar)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Seleccione qué 'puerto' M1, M2, M3 o M4. En este caso, M1

Adafruit_DCMotor * motor1 = AFMS.getMotor (1);

// También puedes hacer otro motor en el puerto M2

Adafruit_DCMotor * motor2 = AFMS.getMotor (2);

// Cambie los valores siguientes para adaptarlos a los motores, el peso, el tipo de rueda, etc. de su robot.

#define KP.2

#define KD 5

#define M1_DEFAULT_SPEED 50

#define M2_DEFAULT_SPEED 50

#define M1_MAX_SPEED 70

#define M2_MAX_SPEED 70

#define MIDDLE_SENSOR 4

#define NUM_SENSORS 8 // número de sensores utilizados

#define TIMEOUT 2500 // espera 2500 us para que las salidas del sensor bajen

#define EMITTER_PIN 12 // el emisor está controlado por el pin digital 2

#define DEBUG 0 // establecer en 1 si se necesita salida de depuración en serie

QTRSensorsRC qtrrc ((carácter sin firmar ) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);

unsigned int sensorValues [NUM_SENSORS];

configuración vacía ()

{

retraso (1000);

calibración_manual ();

set_motors (0, 0);

}

int lastError = 0;

int last_proportional = 0;

int integral = 0;

bucle vacío ()

{

Serial.begin (9600); // configurar la biblioteca serial a 9600 bps

Serial.println ("Adafruit Motorshield v2 - ¡Prueba de motor de CC!");

AFMS.begin (); // crear con la frecuencia predeterminada 1.6KHz

//AFMS.begin(1000); // O con una frecuencia diferente, digamos 1KHz

// Establecer la velocidad de inicio, de 0 (apagado) a 255 (velocidad máxima)

motor1-> setSpeed (70);

motor1-> ejecutar (ADELANTE);

// enciende el motor

motor1-> ejecutar (LIBERAR);

motor2-> setSpeed (70);

motor2-> ejecutar (ADELANTE);

// enciende el motor

motor2-> ejecutar (LIBERAR);

sensores int sin firmar [5];

int position = qtrrc.readLine (sensores);

int error = posición - 2000;

int motorSpeed = KP * error + KD * (error - lastError);

lastError = error;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// establecer las velocidades del motor utilizando las dos variables de velocidad del motor anteriores

set_motors (leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

if (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // limitar la velocidad máxima

if (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // limitar la velocidad máxima

if (motor1speed <0) motor1speed = 0; // mantener el motor por encima de 0

if (motor2speed <0) motor2speed = 0; // mantener la velocidad del motor por encima de 0

motor1-> setSpeed (motor1speed); // establecer la velocidad del motor

motor2-> setSpeed (motor2speed); // establecer la velocidad del motor

motor1-> ejecutar (ADELANTE);

motor2-> ejecutar (ADELANTE);

}

void manual_calibration () {

int i;

for (i = 0; i <250; i ++) // la calibración tardará unos segundos

{

qtrrc.calibrate (QTR_EMITTERS_ON);

retraso (20);

}

if (DEBUG) {// si es verdadero, genera datos del sensor a través de la salida en serie

Serial.begin (9600);

para (int i = 0; i <NUM_SENSORS; i ++)

{

Serial.print (qtrrc.calibratedMinimumOn );

Serial.print ('');

}

Serial.println ();

para (int i = 0; i <NUM_SENSORS; i ++)

{

Serial.print (qtrrc.calibratedMaximumOn );

Serial.print ('');

}

Serial.println ();

Serial.println ();

}

}

Bueno a ver que tal se nos da este proyecto “express” en la competición del OSHWDEM.

Recomendado: