4 Ocak 2022 Salı

Arduino ile Çizgi izleyen Robot Yapımı






Kullanılan Malzemeler;
Arduino Uno
L298N Motor Sürücüsü
2 Adet Teker ve DC Motor
1 Adet Sarhoş Teker
2 Adet IR Sensor
4 Adet 1,5 V Pil
1 Adet 9V Pil

Kullanılan Yazılımlar;
C

Kullanılan Yazılım Programları;
Arduino



                                                                  Projenin Tinkercad Taslağı




Yapımı

İlk başta Dc motorlarının - ve + hatlarını l298n motor sürücümün output kısmına bağlıyorum.
Daha sonrasında l298n motor sürücümde bulunan ENA,ENB,IN1,IN2,IN3,IN4 pinlerini Arduino'da 2,3,4,5,6,7 pinlerine bağladım. Bu pimler benim motorlarımın sol hızı, sağ hızı , sol motorlarımın ileri-geri hareketi ve sag motorlarımın ileri-geri hareketleri anlamına geliyor.
Daha sonra 9V Pilimin - hattını motor sürücümdeki Gnd kısmına bağlıyorum.Aynı şekilde 9V Pilden çıkan + hattınıda 12V hattına bağlıyorum.
Motor sürücümde yer alan Gnd'yi   Sağ ir sensörümün ve sol ir sensörümün gnd kısmıyla birleştirip Arduino'daki Gnd pinine bağlıyorum.
Aynı şekilde Motor sürücümde yer alan 5v kısmını ir sensörlerimin vcd kısmı ile birleştirip Arduinodaki 5V pinine bağlıyorum.
Motor sürücümden çıkan 12V pininide pilin + kısmıyla birleştirdikten sonra Arduino üzerindeki Vin pinine bağlıyorum.
Son olarak Sol ir sensörümden çıkan out pinini Arduinoda 11 pinine sağ ir sensörümü ise arduinodaki 12 pinine baglıyorum.
Artık Tüm bağlanması gereken pinler bağlandı. Son olarak 1,5V x 4 pillerimi destek olarak bağlayıp, Arduinoyu beslemesi için arduino üzerindeki şarj kısmına bağlıyorum.

Arduino Kodu;

#define SENSORSAG 11
#define SENSORSOL 12
#define MOTOR_SPEED 180

//Sag Motor
int enablesagMotor=2;
int sagMotorPin1=3;
int sagMotorPin2=5;

//Sol motor
int enableLeftMotor=7;  
int leftMotorPin1=6;
int leftMotorPin2=4;

void setup()
{

  TCCR0B = TCCR0B & B11111000 | B00000010 ;
  
  // sag ve sol motorlarımı çıkış olarak tanımlıyorum
  pinMode(enablesagMotor, OUTPUT); 
  pinMode(sagMotorPin1, OUTPUT);
  pinMode(sagMotorPin2, OUTPUT);
  
  pinMode(enablesolMotor, OUTPUT);
  pinMode(leftMotorPin1, OUTPUT);
  pinMode(leftMotorPin2, OUTPUT);

  pinMode(SENSORSAG, INPUT);
  pinMode(SENSORSOL, INPUT);
  rotateMotor(0,0);   
}


void loop()
{

  int sagIRSensorValue = digitalRead(SENSORSAG);
  int solIRSensorValue = digitalRead(SENSORSOL);

  //İki sensörde hiçbir şey algılamazsa robot ilerlesin.
  if (sagIRSensorValue == LOW && solIRSensorValue == LOW)
  {
    rotateMotor(MOTOR_SPEED, MOTOR_SPEED);
  }
  //sag sensör siyahı algılarsa saga dönsün
  else if (sagIRSensorValue == HIGH && solIRSensorValue == LOW )
  {
      rotateMotor(-MOTOR_SPEED, MOTOR_SPEED); 
  }
  //sol sensör siyahı algılarsa sola dönsün
  else if (sagIRSensorValue == LOW && solIRSensorValue == HIGH )
  {
      rotateMotor(MOTOR_SPEED, -MOTOR_SPEED); 
  } 
 
  else 
  {
    rotateMotor(0, 0);
  }
}


void rotateMotor(int sagMotorSpeed, int solMotorSpeed)
{
  
  if (sagMotorSpeed < 0)
  {
    digitalWrite(sagMotorPin1,LOW);
    digitalWrite(sagMotorPin2,HIGH);    
  }
  else if (sagMotorSpeed > 0)
  {
    digitalWrite(sagMotorPin1,HIGH);
    digitalWrite(sagMotorPin2,LOW);      
  }
  else
  {
    digitalWrite(sagMotorPin1,LOW);
    digitalWrite(sagMotorPin2,LOW);      
  }

  if (solMotorSpeed < 0)
  {
    digitalWrite(solMotorPin1,LOW);
    digitalWrite(solMotorPin2,HIGH);    
  }
  else if (solMotorSpeed > 0)
  {
    digitalWrite(solMotorPin1,HIGH);
    digitalWrite(solMotorPin2,LOW);      
  }
  else 
  {
    digitalWrite(solMotorPin1,LOW);
    digitalWrite(solMotorPin2,LOW);      
  }
  analogWrite(enablesagMotor, abs(sagMotorSpeed));
  analogWrite(enablesolMotor, abs(solMotorSpeed));    
}


Robotun Platformda Gidişi








Paylaş

Benzer Yayınlar

Arduino ile Çizgi izleyen Robot Yapımı
4/ 5
Oleh

Abone Olun!

Yazımı Beğendiniz mi? Abone Olun Yayınları Kaçırmayın.