elektrik port üyelik servisleri elektrik port üyelik servisleri

Arduino ile Yangın Söndüren Robot Yapımı

Arduino ile yapılabilecek çok fazla eğlenceli proje bulunuyor. Bu yazımızda hep birlikte yangın söndüren robot yapacağız. Bir robot tasarlayıp, ateşe doğru hareket edip, ateşin yakınına geldiğinde ise su püskürten bir araç. Evet bu robotu Arduino ile tasarlayabiliriz. Detaylar yazımızın devamında.



A- A+
26.01.2022 tarihli yazı 7343 kez okunmuştur.
Yazımızda Arduino ile yangın söndüren robot yapımı için gerekli malzemeleri, çalışma şeklini ve kod satırını derledik.

Yangın Söndüren Robot Malzemeleri

Arduino UNO
Fire Sensor ya da Flame Sensor( 3 tane ) (Ateş Sensörü)
Servo Motor (SG 90)
L298N Motor Sürücü
Mini DC Dalgıç Pompa
Breadbroad
Motorlu (2) ve tekerli (2) robot şasesi
Küçük bir kutu
Jamper kablo
BC237 transistör ve 1N4001 diyot
 

Yangın Söndüren Robotun Çalışma Şekli

Bu projenin ana beyni Arduino‘dur, ancak ateşi algılamak için ateş sensörü gereklidir. Bu sensör 760m nm–1100 nm arasındaki dalga boyuna sahip ateşi tespit etmek için kullanılır. Üzerinde bir tane IR alıcı vardır. Yangın esnasında alevlerin oluşturduğu küçük IR dalgalarını algıladığında çıkış bacağında lojik 1 sinyal üretmektedir. Çalışma voltajı 5 volttur. 


Böylece ateşin hangi yönde olduğunu anlamak için robotun üç yönüne bu sensörü yerleştireceğiz.
 
Motorlarımızı L298N modülü üzerinden sürerek yangının yönüne hareket ediyoruz. Bir ateşin yanındayken su kullanarak söndürmemiz gerekir. Küçük bir kap kullanarak su taşıyabiliriz, kabın içine 5V'luk bir pompa da yerleştirilmiştir ve tüm kap bir servo motorun üzerine yerleştirilmiştir, böylece suyun püskürtülmesi gereken yönü kontrol edebiliriz. Ancak, Arduino’nun dijital pinlerinden verdiği akım, bu motoru çalıştırmak için yetmemektedir. Bundan dolayı transistörlü bir anahtarlama devresi kurulmuştur.

Yukarıdaki devreyi kurmamız gerekiyor, eğer bu anahtarlama devresini kurmazsak su motorumuz çok verimli çalışmıyor. Ayrıca devrede diyot kullandık. Neden? Çünkü devrede oluşacak olan ters emk, motora ve devreye problem çıkarır. Bunu engellemek için bir tane diyot kullandık. Şimdi ise asıl devremizi tasarlayalım.


 

 


İlginizi Çekebilir: Arduino SPI Haberleşme Nedir?


Arduino Yazılımı

Servo motor 12 numaralı pine, ateş sensörleri 7, 8 ve 9 numaralı pinlere, L298N motor sürücünün input pinleri 5, 4, 3 ve 2 numaralı pinlere, ENA 11, ENB 6 numaralı pine, su motoru ise 10 numaralı pine bağlanmıştır.

Servo motoru kullanabilmek için servo motorun kütüphanesi kullanılmıştır.

 
#include <Servo.h>

Araç ilk çalışmaya başladığında servo motor 90 derecelik açıya ayarlanmaktadır.

myServo.write(90);

Ateş sensörlerinden gelen veriler okunur:

  ates_sag=digitalRead(sag_s);
  ates_orta=digitalRead(orta_s);
  ates_sol=digitalRead(sol_s);

Sensörlerden gelen verilere göre araç hareket ettirilir:

if(!ates_sag){
    motor_sag();
  }
  if(!ates_sol){
    motor_sol();
  }
  if(!ates_orta){
     motor_orta();
     ates=true;
  }
  if(ates_sag == 1 && ates_orta==1 &&ates_sol==1){
    motor_dur();
  }

Eğer boolean olarak tanımlanan ateş değişkeni true olduğunda:

while(ates){
    ates_sondur();
  }
Ates_sondur fonksiyonu:
void ates_sondur(){
  Serial.println("Ates sondur");
  motor_dur();
  delay(500);
  digitalWrite(pomp,HIGH);
  delay(500);
  for(pos = 50;pos<=130;pos+=1){
    myServo.write(pos);
    delay(10);
  }
  for(pos = 130;pos>=50;pos-=1){
    myServo.write(pos);
    delay(10);
  }
  digitalWrite(pomp,LOW);
  myServo.write(90);
  ates=false;
}

Kod:

#include <Servo.h>
Servo myServo;
 
#define sol_s 9     
#define sag_s 7     
#define orta_s 8
#define pomp 10
#define in1 5
#define in2 4
#define in3 3
#define in4 2
#define enA 11
#define enB 6
 
 
int ates_sag;
int ates_sol;
int ates_orta;
boolean ates=false;
int pos = 0;
 
void setup (){
 
  Serial.begin(9600);
 
  pinMode(sol_s, INPUT);
  pinMode(sag_s, INPUT);
  pinMode(orta_s, INPUT);
 
  pinMode(pomp, OUTPUT);
 
  pinMode(in1,OUTPUT);
  pinMode(in2,OUTPUT);
  pinMode(in3,OUTPUT);
  pinMode(in4,OUTPUT);
  pinMode(enA,OUTPUT);
  pinMode(enB,OUTPUT);
 
 
  myServo.attach(12);
  myServo.write(90);
}
void loop(){
 
  myServo.write(90);
  ates_sag=digitalRead(sag_s);
  ates_orta=digitalRead(orta_s);
  ates_sol=digitalRead(sol_s);
 
  if(!ates_sag){
    motor_sag();
   
  }
 
  if(!ates_sol){
    motor_sol();
  }
 
  if(!ates_orta){
     motor_orta();
     ates=true;
  }
  if(ates_sag == 1 && ates_orta==1 &&ates_sol==1){
    motor_dur();
  }
  delay(300);
  while(ates){
    ates_sondur();
  }
}
void motor_sag(){
  Serial.println("Motor sag");
  // sag motor
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  analogWrite(enA,0);
  // sol motor
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
  analogWrite(enB,150);
}
void motor_sol(){
  Serial.println("Motor sol");
  // sag motor
  digitalWrite(in1,LOW);
  digitalWrite(in2,HIGH);
  analogWrite(enA,150);
  // sol motor
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
  analogWrite(enB,0);
}
void motor_orta(){
  Serial.println("Motor duz");
  // sag motor
  digitalWrite(in1,LOW);
  digitalWrite(in2,HIGH);
  analogWrite(enA,150);
  // sol motor
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
  analogWrite(enB,150);
  
}
void motor_dur(){
  Serial.println("Motor dur");
  // sag motor
  digitalWrite(in1,LOW);
  digitalWrite(in2,LOW);
  analogWrite(enA,0);
  // sol motor
  digitalWrite(in3,LOW);
  digitalWrite(in4,LOW);
  analogWrite(enB,0);
 
}
void ates_sondur(){
  Serial.println("Ates sondur");
  motor_dur();
  delay(500);
  digitalWrite(pomp,HIGH);
  delay(500);
  for(pos = 50;pos<=130;pos+=1){
    myServo.write(pos);
    delay(10);
  }
  for(pos = 130;pos>=50;pos-=1){
    myServo.write(pos);
    delay(10);
  }
  digitalWrite(pomp,LOW);
  myServo.write(90);
  ates=false;
}


Kaynak:

circuitdigest.com
electronicshub.org
►duino4projects.com
 


Aktif etkinlik bulunmamaktadır.
ANKET
Endüstri 4.0 için En Hazır Sektör Hangisidir

Sonuçlar