Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
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
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
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.