INHOUDSOPGAWE:

TA-ZON-BOT (lynvolgers): 3 stappe (met foto's)
TA-ZON-BOT (lynvolgers): 3 stappe (met foto's)

Video: TA-ZON-BOT (lynvolgers): 3 stappe (met foto's)

Video: TA-ZON-BOT (lynvolgers): 3 stappe (met foto's)
Video: Как убрать ОТЕКИ, ДВОЙНОЙ ПОДБОРОДОК и подтянуть ОВАЛ лица. Моделирующий МАССАЖ лица, шеи и декольте 2024, November
Anonim
TA-ZON-BOT (lynvolgers)
TA-ZON-BOT (lynvolgers)
TA-ZON-BOT (lynvolgers)
TA-ZON-BOT (lynvolgers)

TA-ZON-BOT

El tazón siguelineas

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

Ons kan ook 'n uitdruklike deelname aan 'n deelnemer aan OSHWDEN de A Coruña gee.

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

traductor google

TA-ZON-BOT

Die bak volg lyn

Ons het gemaak dat hierdie robot u volg met die hulp van ons studente, (dankie minimakers).

Dit was 'n uitdruklike projek om deel te neem aan die OSHWDEN van A Coruña.

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

Google vertaler

Stap 1: Stap 1: Komponente

Stap 1: Komponente
Stap 1: Komponente
Stap 1: Komponente
Stap 1: Komponente
Stap 1: Komponente
Stap 1: Komponente

Los komponente wat ons kan gebruik

hy sido los siguientes.

Una pieza redonda de metacrilato. (Ons kan dit meer gereeld gebruik, maar dit is 'n basiese basis vir 'n kolocar 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 spesies met die volgende spesifikasies:

Spesifikasies (Para 6V):

Afmetings: 26 x 10 x 12 mm

Verhoudingsverhouding: 30: 1

Afmetings: 3 mm (con ranura de bloqueo)

Nominale volume: 6Vcc (funksie tussen 3 en 9Vcc)

Snelheid van die motor: 1000 rpm

Verbruik: 120mA (1600mA)

Wringkrag: 0,6 kg/cm (maksimum)

Pesos: 10 gram

Skep die tyd aanlyn:

1 plek Arduino UNO (reciclada de un proyecto antiguo)

1 skild vir motors Adafruit v2.3:

1 Een pilas van 8 pilas AAA (geen gebruik van 2 fuentes de alimentación).

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

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 reeks sensore QTR-8RC con las siguientes características;

Spesifikasies vir die QTR-8x-refleksiesensoropstelling • Afmetings: 2,95 "x 0,5" • Uitsetformaat vir die QTR-8RC: 8 digitale I/O-versoenbare seine wat as 'n tydsberekende hoë pols gelees kan word • Optimale waarnemingsafstand: 0,125 "(3 mm) • Maksimum aanbevole waarnemingsafstand vir die QTR-8A: 0,25" (6 mm) • Maksimum aanbevole meetafstand vir die QTR-8RC: 0,375 "(9,5 mm) • Gewig sonder koppenne: 3,11 g (0.11 oz) Lo podéis encontrar en:

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

Soek ons…

Die komponente wat ons gebruik het, was die volgende.

'N Ronde stuk metakrylaat. (U kan enige ontwerp gebruik; ons basis meet net genoeg om die bak onderstebo te plaas).

1 Ontbytbak (gebruik om die robot op die lyn te konsentreer).

2 wiele van 'n herwinde speelding.

2 enjins met die volgende spesifikasies:

Spesifikasies (vir 6V): afmetings: 26 x 10 x 12 mm Verhouding van die verkleiner: 30: 1 asdiameter: 3 mm (met vergrendelingsgroef) Nominale spanning: 6Vdc (kan tussen 3 en 9Vdc werk) Draaisnelheid sonder las: 1000 rpm Verbruik sonder vrag: 120mA (1600mA met las) Wringkrag: 0.6kg / cm (maksimum) Gewig: 10 gram

Skakel aanlyn winkel:

1 Arduino UNO -bord (herwin uit 'n ou projek)

1 skild vir Adafruit v2.3 -enjins:

1 'n Batteryhouer van 8 AAA -batterye (ons gebruik nie 2 kragbronne nie).

6 skroewe en moere om die elemente aan te sluit soos in die prentjie gesien

flense vir die motors, 'n elastiese rubber om die batteryhouer vas te hou en 'n stuk plastiek vir die basis van die batteryhouer.

1 reeks QTR-8RC-sensors met die volgende eienskappe;

Spesifikasies vir die QTR-8x-refleksiesensoropstelling • Afmetings: 2,95 "x 0,5" • Uitsetformaat vir die QTR-8RC: 8 digitale I / O-versoenbare seine wat gelees kan word as 'n tydsberekende hoë pols • Optimale waarnemingsafstand: 0,125 "(3 mm) • Maksimum aanbevole waarnemingsafstand vir die QTR-8A: 0,25" (6 mm) • Maksimum aanbevole waarnemingsafstand vir die QTR-8RC: 0,375 "(9,5 mm) • Gewig sonder kopstukke: 0,11 oz (3,1 g) U kan dit vind in:

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

Monteer alles … binnekort 'n meer gedetailleerde video …

Stap 2: Stap 2: Inspirasie

Para probar el funcionamiento del los

motor's hemos seguido esta ayuda del blog www.programarfacil.com

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

Dit is 'n resumen wat die verskillende motors kan kontroleer.

Met die QTR-8RC-sensor kan u die tutoriaal ken

U kan uiteindelik leer dat ons dit kan leer;

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

Om die prestasie van die enjins te toets, het ons hierdie blogondersteuning www.programarfacil.com gevolg

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

Dit is 'n baie goeie opsomming van die verskillende enjins wat hierdie skild beheer.

Om die QTR-8RC-sensor te kalibreer, kan u die handleiding volg van

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

En 'n laaste skakel wat u kan help, is hierdie instruksionele;

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

Stap 3: Stap 3: Kode

Image
Image

las conexiones entre el array de

Sensors en las placas las hicimos de la siguiente manera:

El Led ON digitaal 12

Los 8 sensores van desde el

nommer 1 van pen 8

nommer 2 of pen 9

nommer 3 of pen 2

nommer 4 of pen 3

nommer 5 of pin 4

nommer 6 of pin 5

nommer 7 of pen 6

nommer 8 of pen 7

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

#insluit

#insluit

#insluit

#insluit

// Skep die motorskermvoorwerp met die standaard I2C -adres

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// Of, skep dit met 'n ander I2C -adres (sê vir stapel)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Kies watter 'poort' M1, M2, M3 of M4. In hierdie geval, M1

Adafruit_DCMotor *motor1 = AFMS.getMotor (1);

// U kan ook nog 'n motor op poort M2 maak

Adafruit_DCMotor *motor2 = AFMS.getMotor (2);

// Verander die onderstaande waardes volgens u motor se motors, gewig, wieltipe, ens.

#definieer KP.2

#definieer KD 5

#definieer M1_DEFAULT_SPEED 50

#definieer M2_DEFAULT_SPEED 50

#definieer M1_MAX_SPEED 70

#definieer M2_MAX_SPEED 70

#definieer MIDDLE_SENSOR 4

#definieer NUM_SENSORS 8 // aantal sensors wat gebruik word

#define TIMEOUT 2500 // wag vir 2500 ons totdat sensoruitsette laag word

#define EMITTER_PIN 12 // emitter word beheer deur digitale pen 2

#define DEBUG 0 // gestel op 1 indien reeksopsporingopsporing nodig is

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

ongetekende int sensorWaardes [NUM_SENSORS];

leemte opstelling ()

{

vertraging (1000);

handleiding_kalibrasie ();

stel_motors (0, 0);

}

int lastError = 0;

int last_proportioneel = 0;

int integraal = 0;

leemte lus ()

{

Serial.begin (9600); // Stel die seriële biblioteek op teen 9600 bps

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

AFMS.begin (); // skep met die standaardfrekwensie 1.6KHz

//AFMS.begin(1000); // OF met 'n ander frekwensie, sê 1KHz

// Stel die beginsnelheid in, van 0 (af) tot 255 (maksimum spoed)

motor1-> setSpeed (70);

motor1-> hardloop (VOORUIT);

// skakel motor aan

motor1-> hardloop (RELEASE);

motor2-> setSpeed (70);

motor2-> hardloop (VOORUIT);

// skakel motor aan

motor2-> hardloop (RELEASE);

ongetekende int sensors [5];

int posisie = qtrrc.readLine (sensors);

int fout = posisie - 2000;

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

lastError = fout;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// stel motorsnelhede in met behulp van die twee motorsnelheidsveranderlikes hierbo

set_motors (leftMotorSpeed, rightMotorSpeed);

}

leeg stel_motors (int motor1speed, int motor2speed)

{

as (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // beperk spoed

as (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // beperk spoed

as (motor1snelheid <0) motor1snelheid = 0; // hou motor bo 0

as (motor2speed <0) motor2speed = 0; // hou motorsnelheid bo 0

motor1-> setSpeed (motor1speed); // stel motorsnelheid in

motor2-> setSpeed (motor2speed); // stel motorsnelheid in

motor1-> hardloop (VOORUIT);

motor2-> hardloop (VOORUIT);

}

leegte handmatige_kalibrasie () {

int ek;

vir (i = 0; i <250; i ++) // sal die kalibrasie 'n paar sekondes neem

{

qtrrc.kalibreer (QTR_EMITTERS_ON);

vertraging (20);

}

as (DEBUG) {// indien waar, genereer sensordata via seriële uitvoer

Serial.begin (9600);

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

{

Serial.print (qtrrc.calibratedMinimumOn );

Serial.print ('');

}

Serial.println ();

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

{

Serial.print (qtrrc.calibratedMaximumOn );

Serial.print ('');

}

Serial.println ();

Serial.println ();

}

}

Ons kan nie 'n “uitdrukking” in die kompetisie van OSHWDEM hê nie.

Aanbeveel: