Inhoudsopgave:

TA-ZON-BOT (Lijnvolger): 3 stappen (met afbeeldingen)
TA-ZON-BOT (Lijnvolger): 3 stappen (met afbeeldingen)

Video: TA-ZON-BOT (Lijnvolger): 3 stappen (met afbeeldingen)

Video: TA-ZON-BOT (Lijnvolger): 3 stappen (met afbeeldingen)
Video: Pruebas siguelineas TA ZON BOT 2024, Juli-
Anonim
TA-ZON-BOT (Lijnvolger)
TA-ZON-BOT (Lijnvolger)
TA-ZON-BOT (Lijnvolger)
TA-ZON-BOT (Lijnvolger)

TA-ZON-BOT

El tazon 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/

traductor google

TA-ZON-BOT

De kom volgtlijn

We hebben deze robot gemaakt om je te volgen met de hulp van onze studenten (bedankt minimakers).

Het was een uitdrukkelijk project om deel te nemen aan de OSHWDEN van A Coruña.

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

Google vertaler

Stap 1: Stap 1: Componenten

Stap 1: Componenten
Stap 1: Componenten
Stap 1: Componenten
Stap 1: Componenten
Stap 1: Componenten
Stap 1: Componenten

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 motoren met de volgende especificaciones:

Bijzonderheden (Para 6V):

Afmetingen: 26 x 10 x 12 mm

Ratio de la reductora: 30:1

Diámetro del eje: 3 mm

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

Velocidad de giro sin carga: 1000rpm

Verbruik sin carga: 120mA (1600mA met carga)

Koppel: 0,6 kg/cm (max.)

Peso: 10 gram

Enlace de tienda online:

1 bord Arduino UNO (reciclada de un proyecto antiguo)

1 schild voor 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 para los motores, un goma elástica para sujetar el porta pilas en een trozo de un lamina de plásticos para la base del porta pilas.

1 array van sensoren QTR-8RC met bijbehorende kenmerken;

Specificaties voor de QTR-8x reflectiesensorarray • Afmetingen: 2,95" x 0,5" • Bedrijfsspanning: 3,3-5,0 V • Voedingsstroom: 100 mA • Uitgangsformaat voor de QTR-8A: 8 analoge spanningen variërend van 0 V tot voedingsspanning • Uitgangsformaat voor de QTR-8RC: 8 digitale I/O-compatibele signalen die kunnen worden gelezen als een getimede hoge puls • Optimale detectieafstand: 0,125" (3 mm) • Maximaal aanbevolen detectieafstand voor de QTR-8A: 0,25" (6 mm) • Maximaal aanbevolen detectieafstand voor de QTR-8RC: 0,375" (9,5 mm) • Gewicht zonder koppennen: 0,11 oz (3,1 g) Lo podéis encontrar en:

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

Ensamblar todo … próximamente un video más detallado…

De componenten die we hebben gebruikt zijn de volgende.

Een rond stuk methacrylaat. (U kunt elk ontwerp gebruiken, onze basis meet net genoeg om de kom ondersteboven te plaatsen).

1 Ontbijtkom (gebruikt om de robot op de lijn te concentreren).

2 wielen van een gerecycled speelgoed.

2 motoren met de volgende specificaties:

Specificaties (Voor 6V): Afmetingen: 26 x 10 x 12 mm Verhouding van het verloopstuk: 30:1 Asdiameter: 3mm (met borggroef) Nominale spanning: 6Vdc (kan werken tussen 3 en 9Vdc) Draaisnelheid onbelast: 1000rpm Verbruik onbelast: 120mA (1600mA met belasting) Koppel: 0,6 kg / cm (max) Gewicht: 10 gram

Link naar online winkel:

1 Arduino UNO-bord (gerecycleerd van een oud project)

1 schild voor Adafruit v2.3-motoren:

1 Een batterijhouder van 8 AAA batterijen (wij gebruiken geen 2 voedingen).

6 schroeven en moeren om de elementen samen te voegen zoals te zien is in de afbeelding

flenzen voor de motoren, een elastisch rubber om de batterijhouder vast te houden en een stuk plastic voor de basis van de batterijhouder.

1 array van QTR-8RC-sensoren met de volgende kenmerken;

Specificaties voor de QTR-8x Reflectance Sensor Array • Afmetingen: 2,95 "x 0,5" • Bedrijfsspanning: 3,3-5,0 V • Voedingsstroom: 100 mA • Uitgangsformaat voor de QTR-8A: 8 analoge spanningen variërend van 0 V tot voedingsspanning • Uitgangsformaat voor de QTR-8RC: 8 digitale I/O-compatibele signalen die kunnen worden gelezen als een getimede hoge puls • Optimale detectieafstand: 0,125 "(3 mm) • Maximaal aanbevolen detectieafstand voor de QTR-8A: 0,25" (6 mm) • Maximaal aanbevolen detectieafstand voor de QTR-8RC: 0,375 "(9,5 mm) • Gewicht zonder koppennen: 0,11 oz (3,1 g) U vindt het in:

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

Zet alles in elkaar … binnenkort een meer gedetailleerde video …

Stap 2: Stap 2: Inspiratie

Para probar el funcionamiento del los

motores hemos seguido esta ayuda del blog www.programarfacil.com

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

Es un hervat muy bueno de los diferentes motores que controla esta shield.

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

Om de prestaties van de motoren te testen, hebben we deze blog-ondersteuning gevolgd www.programarfacil.com

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

Het is een zeer goede samenvatting van de verschillende motoren die dit schild aanstuurt.

Om de QTR-8RC-sensor te kalibreren, kunt u de tutorial volgen van:

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

En een laatste link die u kan helpen, is deze instructable;

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

Stap 3: Stap 3: Coderen

Image
Image

las conexiones entre el array de

sensores y las placas las hicimos de la siguiente manera:

El Led ON va al pin digitaal 12

Los 8 sensoren van desde el

número 1 al pin 8

nummer 2 al pin 9

número 3 al pin 2

número 4 al pin 3

número 5 al pin 4

número 6 al pin 5

número 7 al pin 6

nummer 8 al pin 7

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

#erbij betrekken

#erbij betrekken

#erbij betrekken

#erbij betrekken

// Maak het motor shield-object met het standaard I2C-adres

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Of maak het met een ander I2C-adres (bijvoorbeeld voor stapelen)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Selecteer welke 'poort' M1, M2, M3 of M4. In dit geval M1

Adafruit_DCMotor *motor1 = AFMS.getMotor(1);

// Je kunt ook een andere motor maken op poort M2

Adafruit_DCMotor *motor2 = AFMS.getMotor(2);

// Pas de onderstaande waarden aan de motoren, het gewicht, het wieltype, enz. van uw robot aan.

#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 // aantal gebruikte sensoren

#define TIMEOUT 2500 // wacht 2500 ons totdat de sensoruitgangen laag worden

#define EMITTER_PIN 12 // emitter wordt bestuurd door digitale pin 2

#define DEBUG 0 // ingesteld op 1 als seriële debug-uitvoer nodig is

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

unsigned int sensorValues[NUM_SENSORS];

ongeldige setup()

{

vertraging (1000);

handmatige_kalibratie();

set_motoren(0, 0);

}

int lastError = 0;

int last_proportioneel = 0;

int integraal = 0;

lege lus()

{

Serieel.begin(9600); // stel seriële bibliotheek in op 9600 bps

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

AFMS.begin(); // creëren met de standaard frequentie 1.6KHz

//AFMS.begin(1000); // OF met een andere frequentie, zeg 1KHz

// Stel de snelheid in om te starten, van 0 (uit) tot 255 (max. snelheid)

motor1->setSpeed(70);

motor1-> rennen (VOORUIT);

// zet motor aan

motor1->run(RELEASE);

motor2->setSpeed(70);

motor2-> rennen (VOORUIT);

// zet motor aan

motor2->run(RELEASE);

niet-ondertekende int-sensoren[5];

int positie = qtrrc.readLine(sensoren);

int fout = positie - 2000;

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

lastError = fout;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSnelheid;

// stel motorsnelheden in met behulp van de twee motorsnelheidsvariabelen hierboven

set_motoren (linksMotorSpeed, rechtsMotorSpeed);

}

void set_motoren (int motor1speed, int motor2speed)

{

als (motor1snelheid > M1_MAX_SPEED) motor1snelheid = M1_MAX_SPEED; // beperk topsnelheid

als (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // beperk topsnelheid

als (motor1snelheid < 0) motor1snelheid = 0; // houd motor boven 0

als (motor2speed < 0) motor2speed = 0; // houd de motorsnelheid boven 0

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

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

motor1-> rennen (VOORUIT);

motor2-> rennen (VOORUIT);

}

void manual_calibration() {

int ik;

voor (i = 0; i < 250; i++) // de kalibratie duurt een paar seconden

{

qtrrc.kalibreren(QTR_EMITTERS_ON);

vertraging(20);

}

if (DEBUG) {// indien waar, genereer sensorgegevens via seriële output

Serieel.begin(9600);

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

{

Serial.print(qtrrc.calibratedMinimumOn);

Serieel.print(' ');

}

Serieel.println();

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

{

Serial.print(qtrrc.calibratedMaximumOn);

Serieel.print(' ');

}

Serieel.println();

Serieel.println();

}

}

Dit is een goed voorbeeld van een proyecto "express" en een wedstrijd van OSHWDEM.

Aanbevolen: