Πίνακας περιεχομένων:

TA-ZON-BOT (Line Follower): 3 βήματα (με εικόνες)
TA-ZON-BOT (Line Follower): 3 βήματα (με εικόνες)

Βίντεο: TA-ZON-BOT (Line Follower): 3 βήματα (με εικόνες)

Βίντεο: TA-ZON-BOT (Line Follower): 3 βήματα (με εικόνες)
Βίντεο: ΠΩΣ ΝΑ ΡΥΘΜΙΣΕΤΕ το L4D2 2024, Νοέμβριος
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 minimalakers).

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

Η συνέχεια του μπολ

Φτιάξαμε αυτό το ρομπότ να σας ακολουθεί με τη βοήθεια των μαθητών μας, (ευχαριστώ τους minimalakers).

Projectταν ένα έργο γρήγορης συμμετοχής στο OSHWDEN της A Coruña.

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

Μεταφραστής Google

Βήμα 1: Βήμα 1: Συστατικά

Βήμα 1: Συστατικά
Βήμα 1: Συστατικά
Βήμα 1: Συστατικά
Βήμα 1: Συστατικά
Βήμα 1: Συστατικά
Βήμα 1: Συστατικά

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 motores con las siguientes especificaciones:

Especificaciones (Παράγραφος 6V):

Διαστάσεις: 26 x 10 x 12 mm

Αναλογία αναγωγής: 30: 1

Διάμετρο del eje: 3mm (con ranura de bloqueo)

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

Velocidad de giro sin carga: 1000 στροφές ανά λεπτό

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

Ροπή: 0,6kg/cm (max)

Πέσο: 10 γραμμάρια

Enlace de tienda online:

1 placa Arduino UNO (reciclada de un proyecto antiguo)

1 shield para motores 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, 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 array de sensores QTR-8RC con las siguientes características;

Προδιαγραφές για τη σειρά αισθητήρων ανακλαστικότητας QTR-8x • Διαστάσεις: 2,95 "x 0,5" • Τάση λειτουργίας: 3,3-5,0 V • Μορφή εξόδου για QTR-8RC: 8 ψηφιακά συμβατά με I/O σήματα που μπορούν να διαβαστούν ως χρονομετρημένος μεγάλος παλμός • Βέλτιστη απόσταση ανίχνευσης: 0,125 "(3 mm) • Μέγιστη συνιστώμενη απόσταση ανίχνευσης για το QTR-8A: 0,25" (6 mm) • Μέγιστη συνιστώμενη απόσταση ανίχνευσης για το QTR-8RC: 0,375 "(9,5 mm) • Βάρος χωρίς ακίδες κεφαλίδας: 0,11 ουγκιές (3,1 g) Lo podéis encontrar en:

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

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

Τα στοιχεία που χρησιμοποιήσαμε ήταν τα ακόλουθα.

Ένα στρογγυλό κομμάτι μεθακρυλικού. (Μπορείτε να χρησιμοποιήσετε οποιοδήποτε σχέδιο, τα βασικά μας μέτρα είναι αρκετά για να τοποθετήσετε το μπολ ανάποδα).

1 μπολ πρωινού (χρησιμοποιείται για τη συγκέντρωση του ρομπότ στη γραμμή).

2 τροχοί ανακυκλωμένου παιχνιδιού.

2 κινητήρες με τις ακόλουθες προδιαγραφές:

Προδιαγραφές (Για 6V): Διαστάσεις: 26 x 10 x 12 mm Αναλογία μειωτήρα: 30: 1 Διάμετρος άξονα: 3mm (με αυλάκι ασφάλισης) Ονομαστική τάση: 6Vdc (μπορεί να λειτουργήσει μεταξύ 3 έως 9Vdc) Ταχύτητα στροφής χωρίς φορτίο: 1000rpm Κατανάλωση χωρίς φορτίο: 120mA (1600mA με φορτίο) Ροπή: 0,6kg / cm (max) Βάρος: 10 γραμμάρια

Σύνδεσμος ηλεκτρονικού καταστήματος:

1 πίνακας Arduino UNO (ανακυκλωμένος από παλιό έργο)

1 ασπίδα για κινητήρες Adafruit v2.3:

1 Κάτοχος μπαταρίας 8 μπαταριών AAA (δεν χρησιμοποιούμε 2 τροφοδοτικά).

6 βίδες και παξιμάδια για να ενώσετε τα στοιχεία όπως φαίνεται στην εικόνα

φλάντζες για τους κινητήρες, ένα ελαστικό καουτσούκ για να συγκρατεί τη θήκη της μπαταρίας και ένα κομμάτι από ένα φύλλο πλαστικού για τη βάση της θήκης μπαταρίας.

1 συστοιχία αισθητήρων QTR-8RC με τα ακόλουθα χαρακτηριστικά.

Προδιαγραφές για τη σειρά αισθητήρων ανακλαστικότητας QTR-8x • Διαστάσεις: 2,95 "x 0,5" • Τάση λειτουργίας: 3,3-5,0 V • Μορφή εξόδου για QTR-8RC: 8 ψηφιακά συμβατά με I / O σήματα που μπορούν να διαβαστούν ως χρονομετρημένος μεγάλος παλμός • Βέλτιστη απόσταση ανίχνευσης: 0,125 "(3 mm) • Μέγιστη συνιστώμενη απόσταση ανίχνευσης για το QTR-8A: 0,25" (6 mm) • Μέγιστη συνιστώμενη απόσταση ανίχνευσης για το QTR-8RC: 0,375 "(9,5 mm) • Βάρος χωρίς καρφίτσες κεφαλίδας: 0,11 ουγκιές (3,1 g) Μπορείτε να το βρείτε σε:

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

Συγκεντρώστε τα πάντα … σύντομα ένα πιο λεπτομερές βίντεο…

Βήμα 2: Βήμα 2: Έμπνευση

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.

Για να ελέγξετε τον αισθητήρα QTR-8RC μπορείτε να παρακολουθήσετε το σεμινάριο

Y un ultimo enlace que os puede ayudar es este instructable?

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

Για να δοκιμάσουμε την απόδοση των κινητήρων ακολουθήσαμε αυτήν την υποστήριξη ιστολογίου www.programarfacil.com

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

Είναι μια πολύ καλή περίληψη των διαφορετικών κινητήρων που ελέγχει αυτή η ασπίδα.

Για να βαθμονομήσετε τον αισθητήρα QTR-8RC, μπορείτε να ακολουθήσετε το σεμινάριο

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

Και ένας τελευταίος σύνδεσμος που μπορεί να σας βοηθήσει είναι αυτός ο οδηγός.

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

Βήμα 3: Βήμα 3: Κωδικός

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

número 1 al pin 8

número 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

número 8 al pin 7

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

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

#περιλαμβάνω

// Δημιουργήστε το αντικείμενο προστασίας κινητήρα με την προεπιλεγμένη διεύθυνση I2C

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// Or, δημιουργήστε το με διαφορετική διεύθυνση I2C (πείτε για στοίβαγμα)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Επιλέξτε ποια «θύρα» M1, M2, M3 ή M4. Στην περίπτωση αυτή, Μ1

Adafruit_DCMotor *motor1 = AFMS.getMotor (1);

// Μπορείτε επίσης να φτιάξετε έναν άλλο κινητήρα στη θύρα M2

Adafruit_DCMotor *motor2 = AFMS.getMotor (2);

// Αλλάξτε τις παρακάτω τιμές για να ταιριάζουν στους κινητήρες του ρομπότ σας, το βάρος, τον τύπο τροχού κ.λπ.

#ορίστε ΚΠ.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 // αριθμός αισθητήρων που χρησιμοποιήθηκαν

#define TIMEOUT 2500 // περιμένει 2500 us για να μειωθούν οι έξοδοι του αισθητήρα

#define EMITTER_PIN 12 // ο πομπός ελέγχεται από ψηφιακή ακίδα 2

#define DEBUG 0 // ορίστε σε 1 εάν απαιτείται σειριακή έξοδος εντοπισμού σφαλμάτων

QTRSensorsRC qtrrc ((χωρίς υπογραφή char ) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);

ανυπόγραφο int sensorValues [NUM_SENSORS];

void setup ()

{

καθυστέρηση (1000)?

manual_calibration ();

set_motors (0, 0);

}

int lastError = 0;

int last_proportional = 0;

int ολοκλήρωμα = 0;

κενός βρόχος ()

{

Serial.begin (9600); // ρυθμίστε τη σειριακή βιβλιοθήκη στα 9600 bps

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

AFMS.begin (); // δημιουργία με την προεπιλεγμένη συχνότητα 1.6KHz

//AFMS.begin(1000); // OR με διαφορετική συχνότητα, ας πούμε 1KHz

// Ρυθμίστε την ταχύτητα έναρξης, από 0 (απενεργοποίηση) έως 255 (μέγιστη ταχύτητα)

motor1-> setSpeed (70);

μοτέρ1-> τρέξιμο (ΜΠΡΟΣΤΑ)?

// ενεργοποιήστε τον κινητήρα

μοτέρ1-> τρέξιμο (ΑΠΕΛΕΥΘΕΡΩΣΗ)?

motor2-> setSpeed (70);

motor2-> run (ΕΜΠΡΟΣ)?

// ενεργοποιήστε τον κινητήρα

motor2-> run (ΑΠΕΛΕΥΘΕΡΩΣΗ)?

ανυπόγραφοι αισθητήρες int [5].

int position = qtrrc.readLine (αισθητήρες);

σφάλμα int = θέση - 2000;

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

lastError = σφάλμα;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// ρυθμίστε τις στροφές του κινητήρα χρησιμοποιώντας τις δύο παραπάνω μεταβλητές στροφών κινητήρα

set_motors (leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

εάν (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED? // περιορίστε την τελική ταχύτητα

εάν (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED? // περιορίστε την τελική ταχύτητα

εάν (motor1speed <0) motor1speed = 0? // κρατήστε τον κινητήρα πάνω από 0

εάν (motor2speed <0) motor2speed = 0; // κρατήστε την ταχύτητα του κινητήρα πάνω από 0

motor1-> setSpeed (motor1speed); // ρυθμίστε την ταχύτητα του κινητήρα

motor2-> setSpeed (motor2speed); // ρυθμίστε την ταχύτητα του κινητήρα

μοτέρ1-> τρέξιμο (ΜΠΡΟΣΤΑ)?

motor2-> run (ΕΜΠΡΟΣ)?

}

void manual_calibration () {

int i?

για (i = 0; i <250; i ++) // η βαθμονόμηση θα διαρκέσει μερικά δευτερόλεπτα

{

qtrrc.βαθμονόμηση (QTR_EMITTERS_ON);

καθυστέρηση (20)?

}

εάν (DEBUG) {// εάν ισχύει, δημιουργήστε ημερομηνίες αισθητήρων μέσω σειριακής εξόδου

Serial.begin (9600);

για (int i = 0; i <NUM_SENSORS; i ++)

{

Serial.print (qtrrc.calibratedMinimumOn );

Serial.print ('');

}

Serial.println ();

για (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.

Συνιστάται: