Tarih: 19.07.2024 13:19
Bu projede Arduino Uno kullanarak çizgi izleyen robot projesi yapacağız. Çizgi izleyen robotun çalışma prensibi oldukça basittir. Robotun ön tarafında çizgi izleyen sensör modülü bulunmaktadır. Çizgi izleyen sensör CNY70 veya QTR serisi bir modül olabilir. Bizim projemizde 3'lü CNY70 modülü kullanılacaktır. Robot sürekli ileri yönde hareket ederken beyaz zemin üzerinde siyah çizgiyi takip etmesi gerekmektedir.
Bu projede Arduino Uno kullanarak çizgi izleyen robot projesi yapacağız. Çizgi izleyen robotun çalışma prensibi oldukça basittir. Robotun ön tarafında çizgi izleyen sensör modülü bulunmaktadır. Çizgi izleyen sensör CNY70 veya QTR serisi bir modül olabilir. Bizim projemizde 3'lü CNY70 modülü kullanılacaktır. Robot sürekli ileri yönde hareket ederken beyaz zemin üzerinde siyah çizgiyi takip etmesi gerekmektedir.
Sensör Durumuna Göre Hareketler:
- 3'lü CNY70 sensör modülünün ortasındaki sensörden veri alıyorsak eğer robotumuz çizginin ortasındadır.
- Modülün sol sensöründen veri aldıysak eğer robot sağa kaymış demektir. Bu durumda robotumuzu sola hareket ettirmemiz gerekmektedir.
- Modülün sağ sensöründen veri aldıysak eğer robot sola kaymış demektir. Bu durumda robotumuzu sağa hareket ettirmemiz gerekmektedir.
Gerekli Malzemeler:- Arduino Uno
- USB Kablo
- L298N Motor Sürücü Modülü
- 3'lü CNY70 Sensör Modülü
- 4x DC Motor
- 4x Geçmeli Tekerlek
- Robot Gövdesi
- 8x M3 Vida ve Somun
- 5x Dişi-Erkek Jumper Kablo
Çizgi İzleyen Robotun Full Setine Buradan Ulaşabilirsiniz:
Arduino Çizgi İzleyen Robot Seti Satın Al |ALPGEN Robotics
Yapım Aşamaları- Öncelikle DC motorlarımızın kablolarını takarak (lehim kullanabilirsiniz) 3D baskı robot gövdemize M3 vidalar ile takıyoruz.
- Sonra motorlarımızın kablolarını L298 motor sürücü modülümüzün motor girişlerine takıyoruz. L298 motor sürücümüzün 2 adet motor girişi olduğu için motorlarımızı ikişer olarak girişlere takıyoruz. En son çalıştırdığımızda robotumuzun tekerleri ters yöne doğru dönen olursa eğer ters dönen motorun kablolarını yer değiştirmemiz yeterlidir.
- L298 üzerindeki data pinlerini (ENA, IN1, IN2, IN3, IN4, ENB) Arduino'ya takmamız gerekmektedir. Bu pinlerden ilk üçü motor1, diğer 3'ü motor2'yi kontrol etmektedir. IN pinleri data pinleri olup dijital pinlerden dilediğinize takabilirsiniz. ENA ve ENB ise PWM pinleri olup motorun hızını ayarlamamıza yarar. Direkt 5v pinine de bağlayabilirsiniz. O zaman motorlar tam hızda dönecektir. Bu projedeki devre şeması aşağıdaki gibi bağlanmıştır.
Çizgi izleyen robot projesinde şemada 2 motorlu devre gösterilmiştir ancak girişlere 2şer motor takılabilmektedir. Bir Motor girişine 2 motor taktığınızda motorlar aynı yöne dönmelidir. Eğer ters yönde dönen motor olursa motorun pinlerini yer değiştirip takmanız sorunu çözecektir.
L298N Motor Sürücü | Arduino UNO |
ENA | 5 |
IN1 | 7 |
IN2 | 8 |
IN3 | 9 |
IN4 | 10 |
EN | 6 |
Çizgi İzleyen Sensör | Arduino UNO |
Sol | 2 |
Orta | 3 |
Sağ | 4 |
Arduino Çizgi İzleyen Robot Kodu:#defineenA5
#defineenB6
#definein17
#definein28
#definein39
#definein410
#definesol2
#defineorta3
#definesag4
intsag_s=0;
intorta_s=0;
intsol_s=0;
voidsetup()
{
Serial.begin(9600);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);}voidloop(){
sag_s=digitalRead(sag);
Serial.print("Sağ Sensor: ");
Serial.println(sag_s);
orta_s=digitalRead(orta);
Serial.print("Orta Sensor: ");
Serial.println(orta_s);
sol_s=digitalRead(sol);
Serial.print("Sol Sensor: ");
Serial.println(sol_s);
delay(1000);if(sag_s==0&&orta_s==0&&sol_s==0)
{
ileri();
}
if(sag_s==0&&orta_s==1&&sol_s==0)
{
ileri();
}
if(sag_s==0&&orta_s==1&&sol_s==1)
{
soldon();
}
if(sag_s==0&&orta_s==0&&sol_s==1)
{
soldon();
}
if(sag_s==1&&orta_s==1&&sol_s==0)
{
sagdon();
}
if(sag_s==1&&orta_s==0&&sol_s==0)
{
sagdon();
}
}voidileri(){
analogWrite(enA,200);
digitalWrite(in1,0);
digitalWrite(in2,1);
analogWrite(enB,200);
digitalWrite(in3,0);
digitalWrite(in4,1);}voidsoldon(){
analogWrite(enA,200);
digitalWrite(in1,0);
digitalWrite(in2,1);
analogWrite(enB,200);
digitalWrite(in3,0);
digitalWrite(in4,0);
}voidsagdon(){
analogWrite(enA,200);
digitalWrite(in1,0);
digitalWrite(in2,0);
analogWrite(enB,200);
digitalWrite(in3,0);
digitalWrite(in4,1);
}