Sommario:

TA-ZON-BOT (inseguitore di linea): 3 passaggi (con immagini)
TA-ZON-BOT (inseguitore di linea): 3 passaggi (con immagini)

Video: TA-ZON-BOT (inseguitore di linea): 3 passaggi (con immagini)

Video: TA-ZON-BOT (inseguitore di linea): 3 passaggi (con immagini)
Video: Puntura d’ape 2024, Novembre
Anonim
TA-ZON-BOT (Inseguitore di linea)
TA-ZON-BOT (Inseguitore di linea)
TA-ZON-BOT (Inseguitore di linea)
TA-ZON-BOT (Inseguitore di linea)

TA-ZON-BOT

El tazón siguelineas

Hemos realizado este robot siguelineas con la ayuda de los 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/

Google Traduttore

TA-ZON-BOT

La ciotola segue la linea

Abbiamo realizzato questo robot seguendoti con l'aiuto dei nostri studenti, (grazie minimaker).

È stato un progetto esplicito partecipare all'OSHWDEN di A Coruña.

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

Google Traduttore

Passaggio 1: Passaggio 1: Componenti

Passaggio 1: componenti
Passaggio 1: componenti
Passaggio 1: componenti
Passaggio 1: componenti
Passaggio 1: componenti
Passaggio 1: componenti

I componenti che utilizzano gli hemos

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 motori con le specifiche specifiche:

Specifiche (Para 6V):

Dimensioni: 26 x 10 x 12 mm

Rapporto di riduzione: 30:1

Diametro dell'eje: 3mm (con ranura de bloqueo)

Tensione nominale: 6Vcc (puede funcionar entre 3 a 9Vcc)

Velocità del giro sin carga: 1000rpm

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

Coppia: 0,6 kg/cm (max)

Peso: 10 grammi

Collegamento online:

1 placa Arduino UNO (reciclada de un proyecto antiguo)

1 scudo per motori Adafruit v2.3:

1 Un porta pilas de 8 pilas AAA(non utilizamos 2 fonti di alimentazione).

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

bridas para los motors, una gomma elastica per sujetar el porta pilas e un trozo de una lamina de plastics per la base del porta pilas.

1 array di sensori QTR-8RC con le sue caratteristiche principali;

Specifiche per l'array di sensori di riflettanza QTR-8x • Dimensioni: 2,95" x 0,5" • Tensione di esercizio: 3,3-5,0 V • Corrente di alimentazione: 100 mA • Formato di uscita per il QTR-8A: 8 tensioni analogiche che vanno da 0 V alla tensione di alimentazione • Formato di uscita per il QTR-8RC: 8 segnali digitali compatibili con I/O che possono essere letti come un impulso alto temporizzato • Distanza di rilevamento ottimale: 0,125" (3 mm) • Distanza di rilevamento massima consigliata per il QTR-8A: 0,25" (6 mm) • Distanza di rilevamento massima consigliata per il QTR-8RC: 0,375" (9,5 mm) • Peso senza perni di testata: 0,11 oz (3,1 g) Lo podéis encontrar en:

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

Ensamblar todo … prossimamente un video più dettagli…

I componenti che abbiamo utilizzato sono stati i seguenti.

Un pezzo tondo di metacrilato. (Puoi usare qualsiasi disegno, la nostra base misura quanto basta per posizionare la ciotola capovolta).

1 Ciotola colazione (usata per concentrare il robot sulla linea).

2 ruote di un giocattolo riciclato.

2 motori con le seguenti specifiche:

Specifiche (per 6V): Dimensioni: 26 x 10 x 12 mm Rapporto del riduttore: 30: 1 Diametro albero: 3mm (con scanalatura di bloccaggio) Tensione nominale: 6Vdc (può funzionare da 3 a 9Vdc) Velocità di rotazione a vuoto: 1000rpm Consumo senza carico: 120mA (1600mA con carico) Coppia: 0,6kg/cm (max) Peso: 10 grammi

Link al negozio online:

1 scheda Arduino UNO (riciclata da un vecchio progetto)

1 shield per motori Adafruit v2.3:

1 Un portabatterie da 8 batterie AAA (non usiamo 2 alimentatori).

6 viti e dadi per unire gli elementi come si vede nell'immagine

flange per i motori, una gomma elastica per contenere il portabatteria e un pezzo di un foglio di plastica per la base del portabatteria.

1 array di sensori QTR-8RC con le seguenti caratteristiche;

Specifiche per l'array di sensori di riflettanza QTR-8x • Dimensioni: 2,95 "x 0,5" • Tensione di esercizio: 3,3-5,0 V • Corrente di alimentazione: 100 mA • Formato di uscita per il QTR-8A: 8 tensioni analogiche che vanno da 0 V alla tensione di alimentazione • Formato di uscita per il QTR-8RC: 8 segnali digitali compatibili con I/O che possono essere letti come un impulso alto temporizzato • Distanza di rilevamento ottimale: 0,125 "(3 mm) • Distanza di rilevamento massima consigliata per il QTR-8A: 0,25" (6 mm) • Distanza di rilevamento massima consigliata per il QTR-8RC: 0,375 "(9,5 mm) • Peso senza perni di testata: 0,11 once (3,1 g) È possibile trovarlo in:

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

Assemblate il tutto…a breve un video più dettagliato…

Passaggio 2: Passaggio 2: Ispirazione

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.

Per calibrare il sensore 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…

Per testare le prestazioni dei motori abbiamo seguito questo blog support www.programarfacil.com

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

È un ottimo riassunto dei diversi motori controllati da questo scudo.

Per calibrare il sensore QTR-8RC puoi seguire il tutorial di

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

E un ultimo collegamento che può aiutarti è questo istruibile;

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

Passaggio 3: Passaggio 3: Codice

Image
Image

las conexiones entre el array de

sensori e las placas las hicimos de la siguiente manera:

El Led ON va al pin digitale 12

Los 8 sensori van desde el

numero 1 al pin 8

numero 2 al pin 9

numero 3 al pin 2

numero 4 al pin 3

numero 5 al pin 4

numero 6 al pin 5

numero 7 al pin 6

numero 8 al pin 7

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

#includere

#includere

#includere

#includere

// Crea l'oggetto scudo motore con l'indirizzo I2C predefinito

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Oppure, crealo con un indirizzo I2C diverso (ad esempio per lo stacking)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

// Seleziona quale 'porta' M1, M2, M3 o M4. In questo caso, M1

Adafruit_DCMotor *motor1 = AFMS.getMotor(1);

// Puoi anche creare un altro motore sulla porta M2

Adafruit_DCMotor *motor2 = AFMS.getMotor(2);

// Modifica i valori sottostanti per adattarli ai motori, al peso, al tipo di ruota, ecc. del tuo 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 // numero di sensori utilizzati

#define TIMEOUT 2500 // attende 2500 us affinché le uscite del sensore scendano

#define EMITTER_PIN 12 // l'emettitore è controllato dal pin digitale 2

#define DEBUG 0 // imposta a 1 se è necessario l'output di debug seriale

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

unsigned int sensorValues[NUM_SENSORS];

configurazione nulla()

{

ritardo(1000);

calibrazione_manuale();

set_motors(0, 0);

}

int lastError = 0;

int last_proportional = 0;

intero intero = 0;

ciclo vuoto()

{

Serial.begin(9600); // imposta la libreria seriale a 9600 bps

Serial.println("Adafruit Motorshield v2 - Test motore CC!");

AFMS.begin(); // crea con la frequenza predefinita 1.6KHz

//AFMS.begin(1000); // OPPURE con una frequenza diversa, diciamo 1KHz

// Imposta la velocità per iniziare, da 0 (off) a 255 (velocità massima)

motor1->setSpeed(70);

motore1->run(AVANTI);

// accendi il motore

motore1->run(RELEASE);

motor2->setSpeed(70);

motore2->run(AVANTI);

// accendi il motore

motor2->run(RELEASE);

sensori int senza segno[5];

int posizione = qtrrc.readLine(sensori);

errore int = posizione - 2000;

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

lastError = errore;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// imposta la velocità del motore utilizzando le due variabili di velocità del motore sopra

set_motors(leftMotorSpeed, rightMotorSpeed);

}

void set_motors(int motor1speed, int motor2speed)

{

if (motor1speed > M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // limita la velocità massima

if (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // limita la velocità massima

if (velocità motore1 < 0) velocità motore1 = 0; // mantieni il motore sopra 0

if (motor2speed < 0) motor2speed = 0; // mantiene la velocità del motore sopra 0

motor1->setSpeed(motor1speed); // imposta la velocità del motore

motor2->setSpeed(motor2speed); // imposta la velocità del motore

motore1->run(AVANTI);

motore2->run(AVANTI);

}

void manual_calibration() {

int io;

for (i = 0; i < 250; i++) // la calibrazione richiederà alcuni secondi

{

qtrrc.calibrate(QTR_EMITTERS_ON);

ritardo(20);

}

if (DEBUG) { // se vero, genera i dati del sensore tramite l'uscita seriale

Serial.begin(9600);

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

{

Serial.print(qtrrc.calibratedMinimumOn);

Serial.print(' ');

}

Serial.println();

for (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.

Consigliato: