Isi kandungan:

TA-ZON-BOT (Line Follower): 3 Langkah (dengan Gambar)
TA-ZON-BOT (Line Follower): 3 Langkah (dengan Gambar)

Video: TA-ZON-BOT (Line Follower): 3 Langkah (dengan Gambar)

Video: TA-ZON-BOT (Line Follower): 3 Langkah (dengan Gambar)
Video: BOT ML VS HUMAN || MLBB 2024, Julai
Anonim
TA-ZON-BOT (Pengikut Talian)
TA-ZON-BOT (Pengikut Talian)
TA-ZON-BOT (Pengikut Talian)
TA-ZON-BOT (Pengikut Talian)

TA-ZON-BOT

El tazón siguelineas

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

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

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

peniaga google

TA-ZON-BOT

Garisan berikut mangkuk

Kami telah membuat robot ini mengikuti anda dengan bantuan pelajar kami, (terima kasih minimakers).

Sudah menjadi projek ekspres untuk menyertai OSHWDEN A Coruña.

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

penterjemah Google

Langkah 1: Langkah 1: Komponen

Langkah 1: Komponen
Langkah 1: Komponen
Langkah 1: Komponen
Langkah 1: Komponen
Langkah 1: Komponen
Langkah 1: Komponen

Los komponenes 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 motors con las siguientes especificaciones:

Especificaciones (Para 6V):

Dimensi: 26 x 10 x 12 mm

Nisbah de la reductora: 30: 1

Diámetro del eje: 3mm (con ranura de bloqueo)

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

Velocidad de giro sin carga: 1000rpm

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

Tork: 0.6kg / cm (maksimum)

Peso: 10 gram

Masukkan de tienda dalam talian:

1 placa Arduino UNO (reciclada de un proyecto antiguo)

1 perisai untuk motor 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;

Spesifikasi untuk Array Sensor Refleksi QTR-8x • Dimensi: 2.95 "x 0.5" • Voltan operasi: 3.3-5.0 V • Arus bekalan: 100 mA • Format output untuk voltan analog QTR-8A: 8 dari 0 V hingga voltan yang dibekalkan • Format output untuk isyarat serasi I / O digital QTR-8RC: 8 yang dapat dibaca sebagai nadi tinggi berjangka • Jarak penginderaan optimum: 0.125 "(3 mm) • Jarak penginderaan maksimum yang disyorkan untuk QTR-8A: 0.25" (6 mm) • Jarak penginderaan maksimum yang disyorkan untuk QTR-8RC: 0.375 "(9.5 mm) • Berat tanpa pin header: 0.11 oz (3.1 g) Lo podéis encontrar en:

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

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

Komponen yang telah kami gunakan adalah berikut.

Sekeping bulat metakrilat. (Anda boleh menggunakan reka bentuk apa pun, ukuran dasar kami cukup untuk meletakkan mangkuk terbalik).

1 mangkuk sarapan (digunakan untuk menumpukan robot pada talian).

2 roda mainan kitar semula.

2 enjin dengan spesifikasi berikut:

Spesifikasi (Untuk 6V): Dimensi: 26 x 10 x 12 mm Nisbah pengurang: 30: 1 Diameter poros: 3mm (dengan alur pengunci) Voltan nominal: 6Vdc (dapat beroperasi antara 3 hingga 9Vdc) Kelajuan putaran tanpa beban: 1000rpm Penggunaan tanpa beban: 120mA (1600mA dengan muatan) Tork: 0.6kg / cm (maksimum) Berat: 10 gram

Pautan kedai dalam talian:

1 papan Arduino UNO (dikitar semula dari projek lama)

1 perisai untuk mesin Adafruit v2.3:

1 Pemegang bateri 8 bateri AAA (kami tidak menggunakan 2 bekalan kuasa).

6 skru dan mur untuk bergabung dengan elemen seperti yang dilihat dalam gambar

bebibir untuk motor, getah elastik untuk menahan pemegang bateri dan sehelai kepingan plastik untuk alas pemegang bateri.

1 array sensor QTR-8RC dengan ciri-ciri berikut;

Spesifikasi untuk Array Sensor Refleksi QTR-8x • Dimensi: 2.95 "x 0.5" • Voltan operasi: 3.3-5.0 V • Arus bekalan: 100 mA • Format output untuk voltan analog QTR-8A: 8 dari 0 V hingga voltan yang dibekalkan • Format output untuk isyarat serasi I / O digital QTR-8RC: 8 yang dapat dibaca sebagai nadi tinggi berjangka • Jarak penginderaan optimum: 0.125 "(3 mm) • Jarak penginderaan maksimum yang disyorkan untuk QTR-8A: 0.25" (6 mm) • Jarak penginderaan maksimum yang disyorkan untuk QTR-8RC: 0.375 "(9.5 mm) • Berat tanpa pin header: 0.11 oz (3.1 g) Anda dapat menemuinya dalam:

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

Himpunkan semuanya … tidak lama lagi video yang lebih terperinci …

Langkah 2: Langkah 2: Inspiración

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 perisai.

Para calibrar el sensor QTR-8RC podéis seguir el tutorial de

Y un ultimo enlace que os puede ayudar es este diarahkan;

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

Untuk menguji prestasi enjin, kami telah mengikuti sokongan blog ini www.programarfacil.com

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

Ringkasan enjin yang sangat baik yang dikawal oleh perisai ini.

Untuk menentukur sensor QTR-8RC, anda boleh mengikuti tutorial

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

Dan satu pautan terakhir yang dapat menolong anda ialah cara ini;

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

Langkah 3: Langkah 3: Kod

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 austan sugerencias)

#sertakan

#sertakan

#sertakan

#sertakan

// Buat objek perisai motor dengan alamat I2C lalai

Adafruit_MotorShield AFMS = Adafruit_MotorShield ();

// Atau, buat dengan alamat I2C yang berbeza (katakan untuk susun)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield (0x61);

// Pilih 'port' mana M1, M2, M3 atau M4. Dalam kes ini, M1

Adafruit_DCMotor * motor1 = AFMS.getMotor (1);

// Anda juga boleh membuat motor lain di port M2

Adafruit_DCMotor * motor2 = AFMS.getMotor (2);

// Ubah nilai di bawah ini agar sesuai dengan motor robot, berat, jenis roda, dll.

#tentukan KP.2

#tentukan KD 5

#tentukan M1_DEFAULT_SPEED 50

#tentukan M2_DEFAULT_SPEED 50

#tentukan M1_MAX_SPEED 70

#tentukan M2_MAX_SPEED 70

#tentukan MIDDLE_SENSOR 4

#tentukan NUM_SENSORS 8 // bilangan sensor yang digunakan

#define TIMEOUT 2500 // menunggu 2500 kami agar output sensor menjadi rendah

#define EMITTER_PIN 12 // pemancar dikawal oleh pin digital 2

#define DEBUG 0 // tetapkan ke 1 jika output debug bersiri diperlukan

QTRSensorsRC qtrrc ((tanda tidak ditandatangani ) {8, 9, 2, 3, 4, 5, 6, 7}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);

Nilai sensor int yang tidak ditandatangani [NUM_SENSORS];

persediaan tidak sah ()

{

kelewatan (1000);

manual_kalibrasi ();

set_motors (0, 0);

}

int lastError = 0;

int last_proportional = 0;

int integral = 0;

gelung kosong ()

{

Serial.begin (9600); // sediakan pustaka bersiri pada 9600 bps

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

AFMS.begin (); // buat dengan frekuensi lalai 1.6KHz

//AFMS.begin(1000); // ATAU dengan frekuensi yang berbeza, katakan 1KHz

// Tetapkan kelajuan untuk memulakan, dari 0 (mati) hingga 255 (kelajuan maksimum)

motor1-> setSpeed (70);

motor1-> larian (KEHADIRAN);

// hidupkan motor

motor1-> larian (SIARAN);

motor2-> setSpeed (70);

motor2-> lari (KEHADIRAN);

// hidupkan motor

motor2-> larian (SIARAN);

sensor int tidak bertanda [5];

kedudukan int = qtrrc.readLine (sensor);

ralat int = kedudukan - 2000;

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

errorError = ralat;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - motorSpeed;

// tetapkan kelajuan motor menggunakan dua pemboleh ubah kelajuan motor di atas

set_motors (leftMotorSpeed, rightMotorSpeed);

}

void set_motors (int motor1speed, int motor2speed)

{

jika (motor1speed> M1_MAX_SPEED) motor1speed = M1_MAX_SPEED; // hadkan kelajuan tertinggi

jika (motor2speed> M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // hadkan kelajuan tertinggi

jika (motor1speed <0) motor1speed = 0; // simpan motor di atas 0

jika (motor2speed <0) motor2speed = 0; // jaga kelajuan motor di atas 0

motor1-> setSpeed (motor1speed); // tetapkan kelajuan motor

motor2-> setSpeed (motor2speed); // tetapkan kelajuan motor

motor1-> larian (KEHADIRAN);

motor2-> lari (KEHADIRAN);

}

batal manual_kalibrasi () {

int i;

untuk (i = 0; i <250; i ++) // penentukuran akan mengambil masa beberapa saat

{

qtrrc.calibrate (QTR_EMITTERS_ON);

kelewatan (20);

}

if (DEBUG) {// jika benar, hasilkan sensor sensor melalui output bersiri

Serial.begin (9600);

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

{

Serial.print (qtrrc.calibratedMinimumOn );

Cetakan bersiri ('');

}

Bersiri.println ();

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

{

Serial.print (qtrrc.calibratedMaximumOn );

Cetakan bersiri ('');

}

Bersiri.println ();

Bersiri.println ();

}

}

Bueno a ver que tal se nos da este proyecto "express" en la competición del OSHWDEM.

Disyorkan: