Daftar Isi:

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, November
Anonim
TA-ZON-BOT (Pengikut Baris)
TA-ZON-BOT (Pengikut Baris)
TA-ZON-BOT (Pengikut Baris)
TA-ZON-BOT (Pengikut Baris)

TA-ZON-BOT

El tazon siguelineas

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

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

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

pedagang google

TA-ZON-BOT

Mangkuk mengikuti garis

Kami telah membuat robot ini mengikuti Anda dengan bantuan siswa kami, (terima kasih pembuat mini).

Merupakan proyek ekspres untuk berpartisipasi dalam OSHWDEN A Coruña.

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

penerjemah 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 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 motor dengan spesifikasi khusus:

Spesifikasi khusus (Para 6V):

Dimensi: 26 x 10 x 12 mm

Rasio de la reduktora: 30: 1

Diameter del eje: 3mm (con ranura de bloqueo)

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

Kecepatan de giro sin carga: 1000rpm

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

Torsi: 0.6kg/cm (maks)

Peso: 10 gram

Enlace de tienda online:

1 tempat Arduino UNO (reciclada de un proyecto antiguo)

1 shield para motor Adafruit v2.3:

1 Un porta pilas de 8 pilas AAA(tidak ada 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 susunan sensor QTR-8RC dengan cara yang berbeda;

Spesifikasi Array Sensor Reflektansi QTR-8x • Dimensi: 2,95" x 0,5" • Tegangan pengoperasian: 3,3-5,0 V • Arus suplai: 100 mA • Format output untuk QTR-8A: 8 voltase analog mulai dari 0 V hingga voltase yang disuplai • Format output untuk QTR-8RC: 8 sinyal digital yang kompatibel dengan I/O yang dapat dibaca sebagai pulsa waktu tinggi • Jarak penginderaan optimal: 0,125" (3 mm) • Jarak penginderaan maksimum yang disarankan untuk QTR-8A: 0,25" (6 mm) • Jarak penginderaan maksimum yang disarankan untuk QTR-8RC: 0,375" (9,5 mm) • Berat tanpa pin header: 0,11 oz (3,1 g).

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

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

Komponen yang kami gunakan adalah sebagai berikut.

Sepotong bulat metakrilat. (Anda dapat menggunakan desain apa pun, ukuran dasar kami cukup untuk menempatkan mangkuk terbalik).

1 Mangkuk sarapan (digunakan untuk memusatkan robot pada garis).

2 roda mainan daur ulang.

2 mesin dengan spesifikasi sebagai berikut:

Spesifikasi (Untuk 6V): Dimensi: 26 x 10 x 12 mm Rasio peredam: 30: 1 Diameter poros: 3mm (dengan alur pengunci) Tegangan nominal: 6Vdc (dapat beroperasi antara 3 hingga 9Vdc) Kecepatan putar tanpa beban: Konsumsi 1000rpm tanpa beban: 120mA (1600mA dengan beban) Torsi: 0,6kg / cm (maks) Berat: 10 gram

Tautan toko online:

1 papan Arduino UNO (didaur ulang dari proyek lama)

1 perisai untuk mesin Adafruit v2.3:

1 Tempat baterai 8 baterai AAA (kami tidak menggunakan 2 catu daya).

6 sekrup dan mur untuk bergabung dengan elemen seperti yang terlihat pada gambar

flensa untuk motor, karet elastis untuk menahan dudukan baterai dan selembar plastik untuk alas dudukan baterai.

1 array sensor QTR-8RC dengan karakteristik sebagai berikut;

Spesifikasi Larik Sensor Reflektansi QTR-8x • Dimensi: 2,95 "x 0,5" • Tegangan pengoperasian: 3,3-5,0 V • Arus suplai: 100 mA • Format output untuk QTR-8A: 8 voltase analog mulai dari 0 V hingga voltase yang disuplai • Format output untuk QTR-8RC: 8 sinyal digital yang kompatibel dengan I / O yang dapat dibaca sebagai pulsa waktu tinggi • Jarak penginderaan optimal: 0,125 "(3 mm) • Jarak penginderaan maksimum yang disarankan untuk QTR-8A: 0,25" (6 mm) • Jarak penginderaan maksimum yang disarankan untuk QTR-8RC: 0,375 "(9,5 mm) • Berat tanpa pin header: 0,11 oz (3,1 g) Anda dapat menemukannya di:

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

Kumpulkan semuanya … segera video yang lebih detail …

Langkah 2: Langkah 2: Inspirasi

Para probar el funcionamiento del los

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

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

Terakhir, enlace que os puede ayudar es este dapat diinstruksikan;

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

Untuk menguji kinerja mesin kami telah mengikuti dukungan blog ini www.programarfacil.com

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

Ini adalah ringkasan yang sangat bagus dari berbagai mesin yang dikontrol oleh perisai ini.

Untuk mengkalibrasi sensor QTR-8RC Anda dapat mengikuti tutorial dari

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

Dan satu tautan terakhir yang dapat membantu Anda adalah instruksi ini;

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

Langkah 3: Langkah 3: Kode

Image
Image

las conexiones entre el array de

sensor y las placas las hicimos de la siguiente manera:

El Led ON va al pin digital 12

Los 8 sensor 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)

#termasuk

#termasuk

#termasuk

#termasuk

// Buat objek pelindung motor dengan alamat I2C default

Adafruit_MotorShield AFMS = Adafruit_MotorShield();

// Atau, buat dengan alamat I2C yang berbeda (misalnya untuk susun)

// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

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

Adafruit_DCMotor *motor1 = AFMS.getMotor(1);

// Anda juga dapat 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.

#menentukan KP.2

#tentukan KD 5

#define M1_DEFAULT_SPEED 50

#define M2_DEFAULT_SPEED 50

#menentukan M1_MAX_SPEED 70

#menentukan M2_MAX_SPEED 70

#define MIDDLE_SENSOR 4

#define NUM_SENSORS 8 // jumlah sensor yang digunakan

#define TIMEOUT 2500 // menunggu 2500 kita hingga output sensor menjadi rendah

#define EMITTER_PIN 12 // emitor dikendalikan oleh pin digital 2

#define DEBUG 0 // set ke 1 jika output debug serial diperlukan

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

unsigned int sensorValues[NUM_SENSORS];

batalkan pengaturan()

{

penundaan (1000);

manual_kalibrasi();

set_motors(0, 0);

}

int kesalahan terakhir = 0;

int terakhir_proporsional = 0;

int integral = 0;

lingkaran kosong()

{

Serial.begin(9600); // mengatur perpustakaan Serial pada 9600 bps

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

AFMS.mulai(); // buat dengan frekuensi default 1.6KHz

//AFMS.begin(1000); // ATAU dengan frekuensi yang berbeda, katakanlah 1KHz

// Atur kecepatan untuk memulai, dari 0 (mati) hingga 255 (kecepatan maksimal)

motor1->setSpeed(70);

motor1->lari(FOWARD);

// hidupkan motor

motor1->jalankan(LEPAS);

motor2->setSpeed(70);

motor2->lari(FOWARD);

// hidupkan motor

motor2->jalankan(LEPAS);

sensor int yang tidak ditandatangani[5];

int posisi = qtrrc.readLine(sensor);

int kesalahan = posisi - 2000;

int kecepatan motor = KP * kesalahan + KD * (kesalahan - kesalahan terakhir);

kesalahan terakhir = kesalahan;

int leftMotorSpeed = M1_DEFAULT_SPEED + motorSpeed;

int rightMotorSpeed = M2_DEFAULT_SPEED - kecepatan motor;

// atur kecepatan motor menggunakan dua variabel kecepatan motor di atas

set_motors (kecepatan motor kiri, kecepatan motor kanan);

}

void set_motors(int motor1speed, int motor2speed)

{

jika (kecepatan motor1 > M1_MAX_SPEED) kecepatan motor1 = M1_MAX_SPEED; // batasi kecepatan tertinggi

jika (motor2speed > M2_MAX_SPEED) motor2speed = M2_MAX_SPEED; // batasi kecepatan tertinggi

jika (kecepatan motor1 < 0) kecepatan motor1 = 0; // menjaga motor di atas 0

jika (kecepatan motor 2 < 0) kecepatan motor 2 = 0; // menjaga kecepatan motor di atas 0

motor1->setSpeed(motor1speed); // atur kecepatan motor

motor2->setSpeed(motor2speed); // atur kecepatan motor

motor1->lari(FOWARD);

motor2->lari(FOWARD);

}

batal manual_kalibrasi() {

di aku;

for (i = 0; i <250; i++) // kalibrasi akan memakan waktu beberapa detik

{

qtrrc.kalibrasi(QTR_EMITTERS_ON);

penundaan (20);

}

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

Serial.begin(9600);

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

{

Serial.print(qtrrc.calibratedMinimumOn);

Serial.print(' ');

}

Serial.println();

untuk (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.

Direkomendasikan: