Cuprins:

TA-ZON-BOT (Line Follower): 3 pași (cu imagini)
TA-ZON-BOT (Line Follower): 3 pași (cu imagini)

Video: TA-ZON-BOT (Line Follower): 3 pași (cu imagini)

Video: TA-ZON-BOT (Line Follower): 3 pași (cu imagini)
Video: Experimente ILEGALE cu BOXY BOO de la POPPI PLAYTIME și HAGI WAGI în VR! 2024, Noiembrie
Anonim
TA-ZON-BOT (Line Follower)
TA-ZON-BOT (Line Follower)
TA-ZON-BOT (Follower Line)
TA-ZON-BOT (Follower Line)

TA-ZON-BOT

El tazón siguelineas

Hemos realizated this robot siguelineas with the help of our our students, (gracias minimakers).

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

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

traducator Google

TA-ZON-BOT

Castronul urmează linia

Am făcut ca acest robot să vă urmărească cu ajutorul studenților noștri (mulțumesc creatorilor).

A fost un proiect expres să particip la OSHWDEN din A Coruña.

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

Google Traducere

Pasul 1: Pasul 1: Componente

Pasul 1: Componente
Pasul 1: Componente
Pasul 1: Componente
Pasul 1: Componente
Pasul 1: Componente
Pasul 1: Componente

Los componentes que hemos utilizados

han sido los siguientes.

Una pieza redonda de metacrilat. (Podéis use any design, nuestra base mide lo justo para colocar el tazón bocabajo).

1 Tazón de desayuno (care sirve pentru concentrarea robotului în linie).

2 ruedas de un juguete reciclado.

2 motoare cu următoarele specificații:

Specificații (Para 6V):

Dimensiuni: 26 x 10 x 12 mm

Raportul reducerii: 30: 1

Diámetro del eje: 3mm (cu ranura de bloco)

Voltaj nominal: 6Vcc (poate funcționa între 3 și 9Vcc)

Viteza de gir fără încărcare: 1000rpm

Consum fără încărcare: 120mA (1600mA cu încărcare)

Cuplu: 0,6 kg / cm (max)

Peso: 10 gramos

Enlace de tienda online:

1 placa Arduino UNO (reciclată de un proiect vechi)

1 scut pentru motoare 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 pentru motori, o goma elástica pentru subiectul portii pilas si un trozo de o lamina de plastici pentru baza bazei portilor pilas.

1 matrice de senzori QTR-8RC cu următoarele caracteristici;

Specificații pentru matricea senzorului de reflexie QTR-8x • Dimensiuni: 2,95 "x 0,5" • Tensiune de funcționare: 3,3-5,0 V • Curent de alimentare: 100 mA • Format de ieșire pentru QTR-8A: 8 tensiuni analogice variind de la 0 V la tensiunea furnizată • Format de ieșire pentru QTR-8RC: 8 semnale digitale compatibile I / O care pot fi citite ca un impuls înalt temporizat • Distanță de detectare optimă: 0,125 "(3 mm) • Distanță maximă de detectare recomandată pentru QTR-8A: 0,25" (6 mm) • Distanța maximă de detectare recomandată pentru QTR-8RC: 0,375 "(9,5 mm) • Greutate fără știfturi de antet: 3,1 g (0,11 oz)

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

Adunați totul … în prealabil un videoclip mai detaliat …

Componentele pe care le-am folosit au fost următoarele.

O bucată rotundă de metacrilat. (Puteți utiliza orice design, baza noastră măsoară suficient cât să plasați bolul cu capul în jos).

1 castron pentru micul dejun (folosit pentru a concentra robotul pe linie).

2 roți ale unei jucării reciclate.

2 motoare cu următoarele specificații:

Specificații (pentru 6V): Dimensiuni: 26 x 10 x 12 mm Raportul reductorului: 30: 1 Diametru ax: 3mm (cu șanț de blocare) Tensiune nominală: 6Vdc (poate funcționa între 3 și 9Vdc) Viteza de virare fără sarcină: 1000rpm Consum fără sarcină: 120mA (1600mA cu sarcină) Cuplu: 0,6 kg / cm (max) Greutate: 10 grame

Link magazin online:

1 placa Arduino UNO (reciclată dintr-un proiect vechi)

1 scut pentru motoarele Adafruit v2.3:

1 Un suport pentru baterii de 8 baterii AAA (nu folosim 2 surse de alimentare).

6 șuruburi și piulițe pentru a uni elementele așa cum se vede în imagine

flanșe pentru motoare, un cauciuc elastic pentru a ține suportul bateriei și o bucată dintr-o foaie de plastic pentru baza suportului bateriei.

1 gamă de senzori QTR-8RC cu următoarele caracteristici;

Specificații pentru matricea senzorului de reflexie QTR-8x • Dimensiuni: 2,95 "x 0,5" • Tensiune de funcționare: 3,3-5,0 V • Curent de alimentare: 100 mA • Format de ieșire pentru QTR-8A: 8 tensiuni analogice variind de la 0 V la tensiunea furnizată • Format de ieșire pentru QTR-8RC: 8 semnale digitale I / O compatibile, care pot fi citite ca un impuls înalt temporizat • Distanță de detectare optimă: 0,125 "(3 mm) • Distanță maximă de detectare recomandată pentru QTR-8A: 0,25" (6 mm) • Distanța maximă de detectare recomandată pentru QTR-8RC: 0,375 "(9,5 mm) • Greutate fără știfturi antet: 3,1 g (0,11 oz) O puteți găsi în:

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

Asamblați totul … în curând un videoclip mai detaliat …

Pasul 2: Pasul 2: Inspirație

Pentru probarea funcționării del

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.

Pentru calibrarea senzorului QTR-8RC se poate urmări tutorialul

Y un ultimo enlace that os can help is este instructable;

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

Pentru a testa performanța motoarelor, am urmărit acest suport de blog www.programarfacil.com

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

Este un rezumat foarte bun al diferitelor motoare pe care le controlează acest scut.

Pentru a calibra senzorul QTR-8RC puteți urma tutorialul

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

Și un ultim link care vă poate ajuta este acest lucru instructiv;

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

Pasul 3: Pasul 3: Cod

Image
Image

las conexiuni intre el array de

senzorii și plăcile la următorul mod:

El Led ON va al pin digital 12

Los 8 sensores van de el

numărul 1 la pinul 8

numărul 2 la pinul 9

numărul 3 la pinul 2

numărul 4 la pinul 3

numărul 5 la pinul 4

numărul 6 la pinul 5

numărul 7 la pinul 6

numărul 8 la pinul 7

El code va sin repasarlo (se acceptă sugerențe)

#include

#include

#include

#include

// Creați obiectul ecranului motorului cu adresa I2C implicită

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// Sau, creați-o cu o altă adresă I2C (să zicem pentru stivuire)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Selectați „portul” M1, M2, M3 sau M4. În acest caz, M1

Adafruit_DCMotor * motor1 = AFMS.getMotor (1);

// De asemenea, puteți face un alt motor pe portul M2

Adafruit_DCMotor * motor2 = AFMS.getMotor (2);

// Schimbați valorile de mai jos pentru a se potrivi cu motoarele robotului, greutatea, tipul de roată 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 // numărul de senzori utilizați

#define TIMEOUT 2500 // ne așteaptă la 2500 pentru ca ieșirile senzorului să scadă

#define EMITTER_PIN 12 // emițătorul este controlat de pinul digital 2

#define DEBUG 0 // setat la 1 dacă este necesară o ieșire de depanare serială

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

unsigned int senzorValori [NUM_SENSORS];

configurare nulă ()

{

întârziere (1000);

manual_calibration ();

set_motors (0, 0);

}

int lastError = 0;

int last_proportional = 0;

int integral = 0;

bucla nulă ()

{

Serial.begin (9600); // configurați biblioteca serial la 9600 bps

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

AFMS.begin (); // creați cu frecvența implicită 1.6KHz

//AFMS.begin(1000); // SAU cu o frecvență diferită, să zicem 1KHz

// Setați viteza de pornire, de la 0 (oprit) la 255 (viteză maximă)

motor1-> setSpeed (70);

motor1-> rulează (ÎNAINTE);

// porniți motorul

motor1-> rulați (ELIBERAȚI);

motor2-> setSpeed (70);

motor2-> rulează (ÎNAINTE);

// porniți motorul

motor2-> rulați (ELIBERAȚI);

senzori int nesemnați [5];

int position = qtrrc.readLine (senzori);

int eroare = poziție - 2000;

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

lastError = eroare;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// setați turațiile motorului utilizând cele două variabile de turație ale motorului de mai sus

set_motors (leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

if (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // limitează viteza maximă

if (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // limitează viteza maximă

if (motor1speed <0) motor1speed = 0; // mențineți motorul peste 0

if (motor2speed <0) motor2speed = 0; // mențineți viteza motorului peste 0

motor1-> setSpeed (motor1speed); // setați turația motorului

motor2-> setSpeed (motor2speed); // setați turația motorului

motor1-> rulează (ÎNAINTE);

motor2-> rulează (ÎNAINTE);

}

void manual_calibration () {

int i;

pentru (i = 0; i <250; i ++) // calibrarea va dura câteva secunde

{

qtrrc.calibrate (QTR_EMITTERS_ON);

întârziere (20);

}

dacă (DEBUG) {// dacă este adevărat, generați datele senzorului prin ieșire serială

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 this project “express” in the competition of OSHWDEM.

Recomandat: