Índice:

TA-ZON-BOT (seguidor de linha): 3 etapas (com imagens)
TA-ZON-BOT (seguidor de linha): 3 etapas (com imagens)

Vídeo: TA-ZON-BOT (seguidor de linha): 3 etapas (com imagens)

Vídeo: TA-ZON-BOT (seguidor de linha): 3 etapas (com imagens)
Vídeo: Nem eu ,Dentista, Jamais tinha Visto ISSO em Toda minha vida !! #shorts 2024, Julho
Anonim
TA-ZON-BOT (seguidor de linha)
TA-ZON-BOT (seguidor de linha)
TA-ZON-BOT (seguidor de linha)
TA-ZON-BOT (seguidor de linha)

TA-ZON-BOT

El tazón siguelineas

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

Foi um projeto expresso para poder participar do OSHWDEN de A Coruña.

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

Google Tradutor

TA-ZON-BOT

A tigela segue a linha

Fizemos este robô seguindo você com a ajuda de nossos alunos, (obrigado minimakers).

Tem sido um projeto expresso participar no OSHWDEN de A Coruña.

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

tradutor Google

Etapa 1: Etapa 1: Componentes

Etapa 1: Componentes
Etapa 1: Componentes
Etapa 1: Componentes
Etapa 1: Componentes
Etapa 1: Componentes
Etapa 1: Componentes

Los componentes que hemos utilizados

han sido los siguientes.

Una pieza redonda de metacrilato. (Podéis usar 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):

Dimensões: 26 x 10 x 12 mm

Ratio de la reductora: 30: 1

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

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

Velocidade de giro sem carga: 1000 rpm

Consumo sem carga: 120mA (1600mA com carga)

Torque: 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 (não utilizamos 2 fuentes de alimentación).

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

bridas para os motores, uma goma elástica para sujetar el porta pilas e um trozo de uma lâmina plástica para la base del porta pilas.

1 array de sensores QTR-8RC com as características siguientes;

Especificações para a matriz do sensor de refletância QTR-8x • Dimensões: 2,95 "x 0,5" • Tensão operacional: 3,3-5,0 V • Corrente de alimentação: 100 mA • Formato de saída para o QTR-8A: 8 tensões analógicas variando de 0 V à tensão fornecida • Formato de saída para o QTR-8RC: 8 sinais digitais compatíveis com E / S que podem ser lidos como um pulso alto cronometrado • Distância de detecção ideal: 0,125 "(3 mm) • Distância de detecção máxima recomendada para o QTR-8A: 0,25" (6 mm) • Distância máxima de detecção recomendada para o QTR-8RC: 0,375 "(9,5 mm) • Peso sem pinos de cabeçalho: 0,11 onças (3,1 g) Lo podéis encontrar en:

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

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

Os componentes que usamos são os seguintes.

Um pedaço redondo de metacrilato. (Você pode usar qualquer desenho, nossa base mede apenas o suficiente para colocar a tigela de cabeça para baixo).

1 tigela de café da manhã (usada para concentrar o robô na linha).

2 rodas de um brinquedo reciclado.

2 motores com as seguintes especificações:

Especificações (para 6V): Dimensões: 26 x 10 x 12 mm Relação do redutor: 30: 1 Diâmetro do eixo: 3mm (com ranhura de travamento) Tensão nominal: 6Vdc (pode operar entre 3 a 9Vdc) Velocidade de giro sem carga: 1000 rpm Consumo sem carga: 120mA (1600mA com carga) Torque: 0,6kg / cm (máx.) Peso: 10 gramas

Link da loja online:

1 placa Arduino UNO (reciclada de um projeto antigo)

1 escudo para motores Adafruit v2.3:

1 Um suporte de bateria de 8 baterias AAA (não usamos 2 fontes de alimentação).

6 parafusos e porcas para unir os elementos como visto na imagem

flanges para os motores, uma borracha elástica para segurar o porta-baterias e um pedaço de folha de plástico para a base do porta-baterias.

1 matriz de sensores QTR-8RC com as seguintes características;

Especificações para a matriz do sensor de refletância QTR-8x • Dimensões: 2,95 "x 0,5" • Tensão operacional: 3,3-5,0 V • Corrente de alimentação: 100 mA • Formato de saída para o QTR-8A: 8 tensões analógicas variando de 0 V à tensão fornecida • Formato de saída para o QTR-8RC: 8 sinais digitais compatíveis com E / S que podem ser lidos como um pulso alto cronometrado • Distância de detecção ideal: 0,125 "(3 mm) • Distância de detecção máxima recomendada para o QTR-8A: 0,25" (6 mm) • Distância máxima de detecção recomendada para o QTR-8RC: 0,375 "(9,5 mm) • Peso sem pinos de cabeçalho: 0,11 oz (3,1 g) Você pode encontrá-lo em:

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

Monte tudo … em breve um vídeo mais detalhado …

Etapa 2: Etapa 2: Inspiração

Para probar el funcionamiento del 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 o sensor QTR-8RC, podéis seguir o tutorial de

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

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

Para testar o desempenho dos motores seguimos este blog de suporte www.programarfacil.com

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

É um ótimo resumo dos diferentes motores que este escudo controla.

Para calibrar o sensor QTR-8RC, você pode seguir o tutorial de

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

E um último link que pode ajudá-lo é este instrutível;

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

Etapa 3: Etapa 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 pino 8

número 2 al pino 9

número 3 al pino 2

número 4 al pino 3

número 5 al pino 4

número 6 al pino 5

número 7 al pino 6

número 8 al pino 7

El código va sin repasarlo (se aceptan sugestões)

#incluir

#incluir

#incluir

#incluir

// Crie o objeto de blindagem do motor com o endereço I2C padrão

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// Ou crie-o com um endereço I2C diferente (digamos, para empilhamento)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Selecione qual 'porta' M1, M2, M3 ou M4. Neste caso, M1

Adafruit_DCMotor * motor1 = AFMS.getMotor (1);

// Você também pode fazer outro motor na porta M2

Adafruit_DCMotor * motor2 = AFMS.getMotor (2);

// Altere os valores abaixo para se adequar aos motores, peso, tipo de roda, etc. do seu robô

# 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 usados

# define TIMEOUT 2500 // espera por 2500 us para que as saídas do sensor caiam

# define EMITTER_PIN 12 // o emissor é controlado pelo pino digital 2

# define DEBUG 0 // definido como 1 se a saída de depuração serial necessária

QTRSensorsRC qtrrc ((unsigned char ) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);

unsigned int sensorValues [NUM_SENSORS];

void setup ()

{

atraso (1000);

calibração_manual ();

conjunto_motores (0, 0);

}

int lastError = 0;

int last_proportional = 0;

integral int = 0;

void loop ()

{

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

Serial.println ("Adafruit Motorshield v2 - Teste do motor DC!");

AFMS.begin (); // cria com a frequência padrão de 1,6 KHz

//AFMS.begin(1000); // OU com uma frequência diferente, digamos 1KHz

// Defina a velocidade para iniciar, de 0 (desligado) a 255 (velocidade máxima)

motor1-> setSpeed (70);

motor1-> funcionar (AVANÇAR);

// liga o motor

motor1-> funcionar (RELEASE);

motor2-> definirSpeed (70);

motor2-> funcionar (AVANÇAR);

// liga o motor

motor2-> funcionar (RELEASE);

sensores internos sem sinal [5];

posição interna = qtrrc.readLine (sensores);

erro interno = posição - 2000;

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

lastError = erro;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// definir as velocidades do motor usando as duas variáveis de velocidade do motor acima

set_motors (leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

if (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // limitar a velocidade máxima

if (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // limitar a velocidade máxima

if (motor1speed <0) motor1speed = 0; // mantenha o motor acima de 0

if (motor2speed <0) motor2speed = 0; // mantenha a velocidade do motor acima de 0

motor1-> setSpeed (motor1speed); // definir a velocidade do motor

motor2-> definirSpeed (motor2speed); // definir a velocidade do motor

motor1-> funcionar (AVANÇAR);

motor2-> funcionar (AVANÇAR);

}

void manual_calibration () {

int i;

para (i = 0; i <250; i ++) // a calibração levará alguns segundos

{

qtrrc.calibrate (QTR_EMITTERS_ON);

atraso (20);

}

if (DEBUG) {// se verdadeiro, gera dados do sensor via saída serial

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 do este projeto “express” en la competición del OSHWDEM.

Recomendado: