Buat Robot Pengikut Line ini untuk Projek Fair Science

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Dalam catatan ini kita belajar bagaimana membuat rangkaian robot pengikut baris menggunakan Arduino, yang akan berjalan melalui susun atur garis yang dilukis secara khusus dan akan mengikutinya dengan setia selagi ia tersedia dan dapat dikesan oleh sensornya.

Oleh navneet sajwan



Apa itu Line Follower Robot

Robot autonomi adalah mesin yang dapat melakukan serangkaian tindakan seperti yang diperintahkan oleh pengaturcara, tanpa dikendalikan secara manual oleh manusia secara real-time.

Pengikut garis (LFR) juga merupakan kereta robot autonomi yang dipandu oleh satu atau lebih sensor dan jalur garis hitam atau putih. Mereka membentuk asas kereta memandu sendiri moden.



Seperti setiap robot autonomi, pengikut garis mempunyai unit pemprosesan isyarat dan keputusan, sensor dan penggerak. Sekiranya anda seorang pemula dalam robotik dan ingin mengambilnya dengan serius, di sinilah anda harus bermula. Mari mula membuatnya.

Saya telah menggunakan dua sensor infra-merah dan pacuan tiga roda untuk membuat projek ini. Bilangan minimum sensor yang boleh digunakan adalah satu dan maksimum lapan mencukupi untuk garis berikut berdasarkan PID.

Komponen yang Diperlukan:

Arduino uno

Casis

Dua motor yang dikendalikan oleh bateri (b.o.) Dan tayar yang serasi

Bola kastor

Dua sensor inframerah

Modul pemandu motor

Bekalan Kuasa

Perisian Arduino IDE

Sekarang, mari lihat komponen kami:

ARDUINO SATU : Bayangkan ia sebagai ruang kawalan robot kami. Sekarang, ada banyak papan pengembangan, yang dipertimbangkan untuk projek ini, tetapi Arduino UNO sama sekali tidak sesuai dengan yang lain. Bukannya protagonis kita lebih unggul dari segi ciri multidimensinya.

Sekiranya itu berlaku, Raspberry Pi dan Intel Edison pasti akan memukulnya di antara kedua mata. Argumen paling menarik yang menyebabkan pemilihan Arduino UNO dibentuk oleh gabungan ciri, harga, ukuran dan keperluan untuk projek tersebut.

Beberapa sebab yang relevan adalah:

SAIZ : Ini agak kecil jika dibandingkan dengan papan pengembangan berasaskan Atmega16 atau Atmega8, menghabiskan sedikit ruang pada casis, sehingga anda mendapat bot yang ringkas dan berguna.

Ini sangat penting dalam pertandingan robotik. Percayalah, anda pasti tidak suka berkeliaran dengan bot jelek besar itu, bertukar tempat sepanjang hari.

Lebih kecil saiznya, lebih pantas robot dan lebih efisien gilirannya.

LEMBAGA PERLINDUNGAN TERBAIK : Tidak dinafikan, Arduino UNO mempunyai gabungan ciri terbaik untuk prototaip . Setelah litar anda siap dan projek anda berfungsi dengan sempurna, anda boleh menggantinya dengan sesuatu yang lebih kecil dan lebih murah seperti Arduino Nano dan Attiny85 ic.

Bagi mereka, yang menjadi pengikut baris untuk projek kuliah, saya cadangkan untuk menggantikan UNO dengan Nano pada akhirnya.

CHASSIS : Ia adalah bingkai yang menahan semua komponen dalam kedudukannya. Terdapat beberapa perkara yang perlu dipertimbangkan semasa membeli casis baru,

Ia mesti ringan dan kuat.

Untuk projek, lebih baik jika anda membelinya dari pasaran. Tetapi jika anda bersiap untuk persaingan, saya sangat menyarankan anda menyesuaikan sendiri, dengan memperhatikan dimensi dan keperluan pertandingan.

Pilih casis plastik atau kayu. Apabila bingkai logam bersentuhan dengan Arduino, sebilangan pin terpendek. Ini adalah faktor besar untuk diberi tumpuan semasa mencari casis.

Pastikan casis anda serendah mungkin - ini memberi kestabilan pada bot.

MOTOR : Gunakan bateri ringan yang dikendalikan (B.O.) d.c. motor.

BOLA KASTOR : Roda biasa memberikan gerakan penerjemahan di sepanjang paksi tunggal tetapi bola kastor dirancang untuk bergerak sepanjang arah di permukaan. Ia memberi kita pacuan tiga roda.

Sebab untuk memilih pemacu tiga roda lebih daripada 4 roda adalah kerana tindakan membalik yang lebih pantas. Anda mungkin telah melihat becak menembus lalu lintas seperti reptilia. Begitu juga dengan robot kita.

SENSOR : Ini adalah alat yang mengesan atau mengukur parameter fizikal persekitaran kita dan mengubahnya menjadi isyarat elektrik. Dalam kes ini parameter yang dikesan adalah sinar infra merah.

Sensor sangat mendasar untuk robot apa pun. Jika arduino adalah otak bot kita, sensor mungkin memainkan peranan sebagai mata. Berikut adalah beberapa perkara mengenai sensor:

Sensor mesti berorientasi dengan cara yang memimpin menghadap ke tanah.

Harus diletakkan di hujung depan bot anda.

Jarak minimum di antara keduanya mestilah lebih besar daripada lebar garis hitam.

LEMBAGA PEMANDU MOTOR : Pemacu motor adalah litar penyangga yang mengambil isyarat voltan rendah untuk menghidupkan motor yang memerlukan voltan lebih tinggi.

Dalam kes kami, Arduino dapat memberikan voltan yang mencukupi untuk menggerakkan motor tetapi tidak dapat memberikan arus yang mencukupi. Pin Arvino UNO 5v dan GND mempunyai penarafan semasa 200mA sementara mana-mana pin GPIO mempunyai penarafan 40 mA. Ini jauh lebih rendah daripada motor arus permulaan dan berhenti yang kita perlukan.

Terdapat dua pemandu motor yang saya lebih gemar untuk projek ini: L298N dan L293D. Kedua-duanya sama-sama sesuai untuk membuat projek ini.

Walaupun, L293D lebih murah tetapi mempunyai peringkat semasa yang rendah. Sambungan mereka hampir sama. Oleh kerana, saya telah memberikan hubungan untuk kedua-duanya, terserah kepada anda bagaimana anda membuat bot anda.

BEKALAN KUASA :

Gunakan penyesuai 12 v atau bateri (tidak lebih daripada 12 volt).

Peletakan komponen (dari depan ke hujung belakang):

Sensor di kepala bot anda.

Roda kastor di tengah.

Motor dan tayar dalam satu barisan di bahagian belakang.

Sambungan:

SENSOR kepada ARDUINO :

Sambungkan pin sensor ke pin arduino seperti yang ditunjukkan,

Pin sensorPin Arduino
VCC (5v)5V
GND (G)GND
SENSOR KIRI KELUAR (DO)pin 6
SENSOR KANAN KELUAR (DO)pin 7

Catatan: Untuk memeriksa apakah sensor anda dihidupkan, arahkan kamera telefon bimbit anda ke LED pemancar IR. Anda akan melihat lampu bersinar di skrin yang tidak dapat dilihat oleh mata kasar kita. Beberapa kamera telefon bimbit moden mempunyai penapis infra merah. Oleh itu, sila ambil kira.

PEMANDU MOTOR hingga MOTOR:

Setiap motor mempunyai dua terminal yang perlu disambungkan ke pemandu motor. Jangan sekali-kali cuba menghubungkannya terus ke arduino. Melihat dari belakang bot anda, dengan motor di dekat anda dan sensor jauh, sambungkannya seperti berikut:

KEJURUTERAANL298NL293D
MOTOR KIRIPIN 1 DAN 2PIN 7 DAN 8
MOTOR KANANPIN 13 DAN 14PIN 9 DAN 10

PEMANDU MOTOR ke ARDUINO UNO:

PEMANDU MOTOR (L298N)ARDUINO SATU
PIN 4WINE
PIN 5GND
PIN 65V
PIN 8 & PIN 9PIN 3 & PIN 9
PIN 10 & PIN 11PIN 5 & PIN 10
PIN 7 & PIN 125V
PEMANDU MOTOR (L293D)ARDUINO SATU
PIN 3WINE
PIN 2GND
PIN 15V
PIN 5 DAN PIN 6PIN 3 & PIN 9
PIN 11 DAN PIN 12PIN 5 & PIN 10
PIN 4 DAN PIN 55V

CATATAN: Pin 8 dan 9 dari l298n digunakan untuk mengawal motor yang disambungkan ke 1 dan 2. Dan, motor kawalan 10 dan 11 yang disambungkan ke pin 13 dan 14. Begitu juga, pin 5 dan 6 dari l293d digunakan untuk mengawal motor yang disambungkan ke 7 dan 8. Dan, motor kawalan 12 dan 11 disambungkan ke pin 9 dan 10.

Di sini kita semua, hingga akhir bahagian reka bentuk. Kami masih mempunyai pengekodan yang harus dilakukan tetapi sebelum itu kami akan melalui prinsip-prinsip yang membolehkan mengikuti garis.

Bagaimana sensor infra merah berfungsi:

Sensor infra merah (sensor IR) dapat digunakan untuk merasakan kontras dalam warna dan jarak objek dengannya. Prinsip yang terletak di sebalik penggunaan sensor IR cukup asas.

Seperti yang dapat kita lihat, ia mempunyai dua led - LED pemancar IR dan fotodioda. Mereka bertindak sebagai pasangan pemancar-penerima. Apabila halangan datang di depan sinar pemancar, ia dipantulkan ke belakang dan dipintas oleh penerima.

Ini menghasilkan isyarat digital yang dapat diberikan kepada pengawal mikro dan penggerak untuk mengambil tindakan yang diperlukan ketika menghadapi halangan.

Fizik asas memberitahu kita bahawa badan hitam menyerap semua kejadian radiasi elektromagnetik di atasnya sementara badan putih memantulkannya. Prinsip ini dimanfaatkan oleh pengikut garis untuk membezakan antara permukaan putih dan hitam.

Bagaimana robot pengikut garis berfungsi:

LAYOUT PENGIKUT LINE

Dalam keadaan normal, robot bergerak sedemikian rupa sehingga kedua-dua sensor berwarna lebih putih dan garis hitam berada di tengah-tengah kedua-dua sensor tersebut.

Ia diprogram untuk memutar kedua motor sehingga bot bergerak ke arah depan.

Secara semula jadi, seiring dengan berlalunya masa, salah satu daripada dua sensor itu berada di atas garis hitam.

Sekiranya sensor kiri berada di atas barisan, motor kiri dibawa ke istirahat dan akibatnya bot mula berpusing ke arah kiri kecuali sensor kiri kembali di permukaan putih dan keadaan normal tercapai.

Begitu juga, ketika sensor kanan datang di atas garis hitam, motor kanan dihentikan dan akibatnya bot sekarang berpusing ke arah kanan kecuali sensor kembali ke permukaan putih. Mekanisme putaran ini dikenali sebagai mekanisme pemacu pembezaan.

RAJAH LITAR:

BUTIRAN WIRING:

PROGRAM DAN KONSEP:

Setelah selesai dengan bahagian litar, kita sekarang akan beralih ke bahagian pengaturcaraan. Di bahagian ini, kita akan memahami program yang mengawal robot kita. Inilah kodnya: / *
Created and tested by Navneet Singh Sajwan
*Based on digital output of two sensors
*Speed control added
*/
int left, right
int value=250
void setup()
{
pinMode(6,INPUT)//left sensor
pinMode(7,INPUT)//right sensor
pinMode(9,OUTPUT)//left motor
pinMode(3,OUTPUT)//left motor
pinMode(10,OUTPUT)//right motor
pinMode(5,OUTPUT)//right motor
// Serial.begin(9600)
}
void read_sensors()
{
left=digitalRead(6)
right= digitalRead(7)
}
void move_forward()
{
analogWrite(9,value)//3,9 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_left()
{
digitalWrite(9,LOW)//9,3 for left motor
digitalWrite(3,LOW)
analogWrite(10,value)//10,5 for right motor
digitalWrite(5,LOW)
}
void turn_right()
{
analogWrite(9,value)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void halt()
{
digitalWrite(9,LOW)// 9,3 for left motor
digitalWrite(3,LOW)
digitalWrite(10,LOW)// 10,5 for right motor
digitalWrite(5,LOW)
}
void print_readings()
{
Serial.print(' leftsensor')
Serial.print(' ')
Serial.print(left)
Serial.print('rightsensor')
Serial.print(' ')
Serial.print(right)
Serial.println()
}
void loop()
{
read_sensors()
while((left==0)&&(right==1)) // left sensor is over black line
{
turn_left()
read_sensors()
print_readings()
}
while((left==1)&&(right==0)) // right sensor is over black line
{
turn_right()
read_sensors()
print_readings()
}
while((left==0)&&(right==0)) // both sensors over the back line
{
halt()
read_sensors()
print_readings()
}
while((left==1)&&(right==1))// no sensor over black line
{
move_forward()
read_sensors()
print_readings()
}
}

Penerangan fungsi yang digunakan:

read_sensors (): Ia memerlukan pembacaan kedua-dua sensor dan menyimpannya dalam pemboleh ubah kiri dan kanan.

move_forward (): Ketika arduino melaksanakan fungsi ini, kedua motor bergerak ke arah depan.

turn_left (): Motor kiri berhenti. Bot menoleh ke kiri.

turn_right (): Motor kanan berhenti. Bot menoleh ke kanan.

berhenti (): Bot berhenti.

print_readings (): Menampilkan bacaan sensor pada monitor bersiri. Untuk ini, anda harus melepaskan 'Serial.begin (9600)' dalam persediaan yang tidak sah.

BACAAN SENSOR:

SENSOR OVER LINEBACAAN SENSOR
MENINGGALKANBETUL
SENSOR KIRI01
SENSOR KANAN10
TIADA11
KEDUA00

PENGENDALIAN SPEED:

Kadang-kadang kelajuan motor sangat tinggi sehingga sebelum arduino menafsirkan isyarat sensor, robot kehilangan talian. Pendek kata, bot tidak mengikut garis kerana kelajuan tinggi dan terus kehilangan garis walaupun algoritma betul.

Untuk mengelakkan keadaan seperti itu, kami menurunkan kecepatan bot menggunakan teknik PWM. Dalam kod di atas terdapat pemboleh ubah bernama nilai.

Turunkan nilai angka dalam fungsi untuk mengurangkan kelajuan. Di Arduino UNO anda boleh mempunyai nilai pwm antara 0 dan 255 sahaja.

analogWrite (pin, nilai)

0<= value <=255

Ini adalah penghujung posting saya di talian pengikut. Saya harap ia cukup terperinci untuk menjawab semua pertanyaan anda dan jika dalam kenyataan yang paling jarang tidak, maka kami selalu menyediakan bahagian komen untuk anda. Komen keraguan anda. Selamat bermain-main!




Sebelumnya: Kereta Robot Dikendalikan Telefon Bimbit Menggunakan Modul DTMF Seterusnya: Suis ON / OFF AC Mains AC Controlled Password