Innholdsfortegnelse:

TA-ZON-BOT (linjefølge): 3 trinn (med bilder)
TA-ZON-BOT (linjefølge): 3 trinn (med bilder)

Video: TA-ZON-BOT (linjefølge): 3 trinn (med bilder)

Video: TA-ZON-BOT (linjefølge): 3 trinn (med bilder)
Video: Pruebas siguelineas TA ZON BOT 2024, Juli
Anonim
TA-ZON-BOT (Line Follower)
TA-ZON-BOT (Line Follower)
TA-ZON-BOT (Line Follower)
TA-ZON-BOT (Line Follower)

TA-ZON-BOT

El tazón siguelineas

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

Jeg kan ikke bruke ekspressen for deltakere i OSHWDEN de A Coruña.

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

traductor google

TA-ZON-BOT

Bollen følger linjen

Vi har laget denne roboten til å følge deg ved hjelp av våre studenter, (takk minimakere).

Det har vært et ekspressprosjekt å delta i OSHWDEN i A Coruña.

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

Google Oversetter

Trinn 1: Trinn 1: Komponenter

Trinn 1: Komponenter
Trinn 1: Komponenter
Trinn 1: Komponenter
Trinn 1: Komponenter
Trinn 1: Komponenter
Trinn 1: Komponenter

Los componentes que hemos utilizados

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 motorer med følgende spesifikasjoner:

Especificaciones (punkt 6V):

Dimensjoner: 26 x 10 x 12 mm

Forhold de la reductora: 30: 1

Dimensjon: 3 mm (con ranura de bloqueo)

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

Velocidad de giro sin carga: 1000 o / min

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

Dreiemoment: 0,6 kg/cm (maks)

Peso: 10 gram

Legg til tienda online:

1 plass Arduino UNO (reciclada de un proyecto antiguo)

1 skjold for motorer Adafruit v2.3:

1 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 rekke de sensorer QTR-8RC con las siguientes características;

Spesifikasjoner for QTR-8x refleksjonssensormatrisen • Dimensjoner: 2,95 "x 0,5" • Driftsspenning: 3,3-5,0 V • Forsyningsstrøm: 100 mA • Utgangsformat for QTR-8A: 8 analoge spenninger fra 0 V til medfølgende spenning • Utgangsformat for QTR-8RC: 8 digitale I/O-kompatible signaler som kan leses som en tidsbestemt høy puls • Optimal føleavstand: 3 mm (0,125 tommer) • Maksimal anbefalt føleavstand for QTR-8A: 0,25 tommer (6 mm) • Maksimal anbefalt sanseavstand for QTR-8RC: 0,375 "(9,5 mm) • Vekt uten toppnål: 3,11 g (0,11 oz) Lo podéis encontrar en:

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

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

Komponentene vi har brukt har vært følgende.

Et rundt stykke metakrylat. (Du kan bruke hvilken som helst design, basen vår måler akkurat nok til å plassere bollen opp ned).

1 frokostskål (brukes til å konsentrere roboten på linjen).

2 hjul av en resirkulert leketøy.

2 motorer med følgende spesifikasjoner:

Spesifikasjoner (for 6V): Dimensjoner: 26 x 10 x 12 mm Forhold mellom reduksjonsenheten: 30: 1 Akseldiameter: 3 mm (med låsespor) Nominell spenning: 6Vdc (kan fungere mellom 3 til 9Vdc) Svinghastighet uten belastning: 1000rpm Forbruk uten belastning: 120mA (1600mA med belastning) Dreiemoment: 0,6kg / cm (maks) Vekt: 10 gram

Lenke til nettbutikk:

1 Arduino UNO -brett (resirkulert fra et gammelt prosjekt)

1 skjold for Adafruit v2.3 -motorer:

1 En batteriholder med 8 AAA -batterier (vi bruker ikke 2 strømforsyninger).

6 skruer og muttere for å feste elementene som vist på bildet

flenser for motorene, en elastisk gummi for å holde batteriholderen og et stykke plastark til bunnen av batteriholderen.

1 utvalg av QTR-8RC-sensorer med følgende egenskaper;

Spesifikasjoner for QTR-8x refleksjonssensormatrisen • Dimensjoner: 2,95 "x 0,5" • Driftsspenning: 3,3-5,0 V • Forsyningsstrøm: 100 mA • Utgangsformat for QTR-8A: 8 analoge spenninger fra 0 V til medfølgende spenning • Utgangsformat for QTR-8RC: 8 digitale I / O-kompatible signaler som kan leses som en tidsbestemt høy puls • Optimal føleavstand: 3 mm (0,125 tommer) • Maksimal anbefalt føleavstand for QTR-8A: 0,25 tommer (6 mm) • Maksimal anbefalt føleavstand for QTR-8RC: 0,375 tommer (9,5 mm) • Vekt uten toppnål: 3,11 g (0,11 oz) Du finner den i:

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

Sett sammen alt … snart en mer detaljert video …

Trinn 2: Trinn 2: Inspirasjon

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 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…

For å teste ytelsen til motorene har vi fulgt denne bloggstøtten www.programarfacil.com

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

Det er en veldig god oppsummering av de forskjellige motorene som dette skjoldet styrer.

For å kalibrere QTR-8RC-sensoren kan du følge opplæringen til

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

Og en siste lenke som kan hjelpe deg er denne instruerbare;

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

Trinn 3: Trinn 3: Kode

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

nr 1 1 pin 8

nummer 2 av pin 9

nr 3 og pin 2

nr 4 og pin 3

nr 5 og pin 4

nummer 6 og pin 5

nr. 7 og pin 6

nummer 8 og pin 7

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

#inkludere

#inkludere

#inkludere

#inkludere

// Lag motorskjermobjektet med standard I2C -adresse

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// Eller, opprett den med en annen I2C -adresse (si for stabling)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Velg hvilken 'port' M1, M2, M3 eller M4. I dette tilfellet, M1

Adafruit_DCMotor *motor1 = AFMS.getMotor (1);

// Du kan også lage en annen motor på port M2

Adafruit_DCMotor *motor2 = AFMS.getMotor (2);

// Endre verdiene nedenfor for å passe til robotens motorer, vekt, hjultype, etc.

#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 // antall sensorer som brukes

#define TIMEOUT 2500 // venter på 2500 oss for at sensorutgangene skal bli lave

#define EMITTER_PIN 12 // emitter styres av digital pin 2

#define DEBUG 0 // satt til 1 hvis seriell feilsøkingsutgang er nødvendig

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

usignerte int sensorValues [NUM_SENSORS];

ugyldig oppsett ()

{

forsinkelse (1000);

manuell_kalibrering ();

set_motors (0, 0);

}

int lastError = 0;

int last_proportional = 0;

int integral = 0;

hulrom ()

{

Serial.begin (9600); // sette opp seriebibliotek med 9600 bps

Serial.println ("Adafruit Motorshield v2 - DC Motor test!");

AFMS.begin (); // lage med standardfrekvensen 1,6KHz

//AFMS.begynner (1000); // ELLER med en annen frekvens, si 1KHz

// Still inn hastigheten til å starte, fra 0 (av) til 255 (maks hastighet)

motor1-> setSpeed (70);

motor1-> kjør (FREM);

// slå på motoren

motor1-> run (RELEASE);

motor2-> setSpeed (70);

motor2-> kjøre (FREM);

// slå på motoren

motor2-> run (RELEASE);

usignerte int -sensorer [5];

int posisjon = qtrrc.readLine (sensorer);

int feil = posisjon - 2000;

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

lastError = feil;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// angi motorhastigheter ved å bruke de to motorhastighetsvariablene ovenfor

set_motors (leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

hvis (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // begrense toppfarten

hvis (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // begrense toppfarten

hvis (motor1speed <0) motor1speed = 0; // holde motoren over 0

hvis (motor2speed <0) motor2speed = 0; // holde motorhastigheten over 0

motor1-> setSpeed (motor1speed); // sett motorhastighet

motor2-> setSpeed (motor2speed); // sett motorhastighet

motor1-> kjør (FREM);

motor2-> kjøre (FREM);

}

void manual_calibration () {

int i;

for (i = 0; i <250; i ++) // vil kalibreringen ta noen sekunder

{

qtrrc.calibrate (QTR_EMITTERS_ON);

forsinkelse (20);

}

hvis (DEBUG) {// hvis det er sant, generer sensordata via seriell utgang

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.

Anbefalt: