Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Teknologi Industri

Sistem Kontrol Gerbang Kereta Api Otomatis – Sirkuit &Kode Sumber

Sirkuit Pengontrol Gerbang Kereta Api Otomatis Kecepatan Tinggi Menggunakan Sensor Arduino dan Ultrasonik

Dalam tutorial ini, kita akan belajar bagaimana merancang sistem pengontrol gerbang kereta api kecepatan tinggi otomatis yang sederhana dan efisien. Ini adalah pendekatan yang relatif sederhana untuk proyek ini tetapi Anda dapat menganggap ini sebagai blok bangunan dasar dan dalam modifikasi lebih lanjut kami juga dapat melacak kecepatan kereta yang dilaluinya dan banyak lagi. Namun sebelum kita langsung masuk ke tutorial, kita perlu mendapatkan gambaran tentang apa itu otomatisasi dan apa yang sebenarnya bisa diharapkan darinya.

Otomasi pada dasarnya berarti merancang metode untuk mengurangi atau menghilangkan upaya/intervensi manusia. Dalam tutorial ini kita akan menjelaskan cara mengotomatisasi gerbang kereta api dengan Arduino menggunakan motor servo beserta software Proteus.

Kompleksitas otomatisasi dapat bervariasi dari "kontrol hidup/mati" dasar hingga algoritme multivariabel yang sangat kompleks. Sistem kontrol untuk tujuan otomatisasi dapat berupa loop terbuka atau loop tertutup yang berarti dapat bekerja baik dengan parameter input tunggal atau sebagai respons terhadap output yang diumpankan sebagai input seperti dalam kasus sistem loop tertutup. Otomatisasi dalam industri perkeretaapian merupakan kebutuhan penting saat kita memasuki era maju dan untuk mengurangi risiko kecelakaan akibat kesalahan yang disebabkan oleh manusia, sangat penting bagi kita untuk membiarkan tugas-tugas ini ditangani oleh mesin pintar ini.

Seperti halnya setiap otomatisasi teknologi juga memiliki pro dan kontra:

Pro

  1. Peningkatan produktivitas
  2. Kualitas yang dapat diprediksi (Peningkatan Kualitas)
  3. Meningkatkan ketahanan
  4. Konsistensi keluaran yang bagus
  5. Pengurangan biaya tenaga kerja manusia
  6. Sangat akurat
  7. Mengurangi upaya manusia dalam pekerjaan yang monoton

Kontra

  1. Rentan terhadap ancaman keamanan
  2. Biaya pengembangan mungkin melebihi perkiraan
  3. Biaya penyiapan tinggi
  4. Penyebab pengangguran di banyak sektor

Pro yang disebutkan jauh lebih banyak daripada yang kontra dan itulah sebabnya seluruh dunia melangkah ke era otomatisasi.

Dalam tutorial ini kami mencoba mengotomatiskan gerbang kereta api untuk membuka dan menutup setiap kali sirkuit mendeteksi kereta di sepanjang trek dan kami juga akan memulai bel atau alarm yang menggambarkan kecepatan kereta lebih tinggi dari ambang batas tertentu dan untuk mencapai itu kita akan menggunakan dua komponen elektronik yang sangat banyak digunakan yaitu Arduino dan motor servo.

Sensor yang akan kita gunakan dalam tutorial ini adalah sensor ultrasonik tetapi tidak wajib menggunakan sensor ini, kita juga dapat membuat versi lain dari proyek ini menggunakan sensor IR modul dan itu tergantung pada pilihan kita, apa yang ingin kita gunakan dan apa yang tersedia untuk kita.

Komponen yang Diperlukan untuk Pengontrol Gerbang Kereta Api

  1. Arduino UNO
  2. Buzzer
  3. Sensor Ultrasonik (HC-SR04)
  4. Motor Servo

Perlu Perangkat Lunak:

  1. IDE Arduino
  2. Proteus

Diagram Sirkuit Pengendali Gerbang Kereta Api 

Deskripsi Komponen

Arduino UNO

Arduino pada dasarnya adalah papan pengembangan yang open source dan terutama menggunakan mikrokontroler Microchip ATmega328P dan diproduksi oleh Arduino.cc. Papan ini dilengkapi dengan satu set pin input/output yang terdiri dari digital dan analog yang dapat dihubungkan ke papan ekspansi dan sirkuit eksternal yang berbeda.

Papan dilengkapi dengan 14 pin digital bersama dengan 6 pin analog yang digunakan atau dibuat dapat diprogram dengan bantuan IDE (Integrated Development Environment) yang menyertainya yaitu Arduino ide. Program dibakar melalui kabel USB tipe B. Cara menyalakan papan dapat dilakukan dengan kabel USB atau dengan menyambungkan catu daya 9 volt dc. Rentang tegangan yang dapat diterima bervariasi dari 7 hingga 20 volt. Dari segi desain dan cara kerja tidak terlalu berbeda dengan anggota keluarga lainnya yaitu Arduino Nano dan Arduino Leonardo.

STK500 masih merupakan protokol asli untuk berkomunikasi dengan Uno. Perbedaan utama dari pendahulunya adalah tidak menggunakan chip driver FTDI USB-to-serial. Sebaliknya menggunakan ATmega 16U2 (Atmega8U2 hingga versi R2) yang diprogram seperti konverter USB-to-serial.

Sensor Ultrasonik (HC-SR04)

Sensor ultrasonik adalah sensor dasar yang kami gunakan untuk menentukan jarak suatu objek. Dengan cara lain kita dapat mengatakan bahwa itu digunakan untuk mengukur seberapa jauh objek berada dari titik referensi tertentu. Ini pada dasarnya memiliki 4 pin;

Bagaimana cara kerja ultrasonik? Pemancar (trig) mengirimkan sinyal suara frekuensi tinggi yang kemudian dipantulkan oleh objek dan kemudian sinyal yang dipantulkan tersebut kemudian diterima di penerima (echo). Oleh karena itu kecepatan suara di udara diketahui oleh kita, kita dapat menghitung jaraknya. Sensor ini sangat populer di kalangan pembuat Arduino yang menggunakan ini dalam proyek mereka setiap hari dan untuk memicu sensor ini kami memerlukan pulsa tinggi 10 mikrodetik atau lebih.

Fitur sensor ultrasonik:-

Postingan Terkait:Sistem Pengairan &Irigasi Tanaman Otomatis – Sirkuit, Kode &Laporan Proyek

Motor Servo

Ini adalah jenis motor khusus yang digunakan untuk gerakan yang sangat spesifik pada sudut tertentu. Ini adalah aktuator putar atau linier yang memungkinkan kontrol presisi pada posisi sudut atau linier tertentu. Motor servo bukanlah satu kesatuan tetapi kombinasi dari motor yang sesuai dengan sensor yang memberikan umpan balik dari posisi motor saat ini.

Untuk menggunakan motor servo ini, beberapa modul lanjutan lainnya harus digunakan karena tidak serupa dalam hal kemudahan menggunakan motor DC. Motor ini pada dasarnya digunakan dalam robotika dan industri manufaktur skala besar.

Motor ini memiliki sedikit kesamaan dengan motor stepper yang mewakili kontrol loop terbuka. Motor stepper memiliki langkah bawaan di mana mereka berputar tetapi dengan kurangnya sistem umpan balik, penggunaannya terbatas pada satu aplikasi spesifik yang dirancang dan diproduksi.

Kurangnya umpan balik inilah yang membedakan motor servo dari motor stepper ini dan memberikan keunggulan karena dinamis dan dapat disesuaikan sesuai dengan tugas yang dihadapi dengan sedikit perubahan dalam pemrograman. Modul pengontrol khusus umumnya disediakan bersama motor servo oleh pabrikan.

Mekanisme – Ini pada dasarnya adalah servomekanisme loop tertutup yang memanfaatkan sistem umpan balik untuk memperbarui gerakan dan posisi akhir rotor. Input ke kontrol motor dapat berupa input analog atau digital.

Sebuah encoder dari beberapa jenis dipasangkan ke motor untuk memberikan umpan balik posisi dan kecepatan ke kontrol yang menghasilkan sinyal kesalahan hingga output yang diinginkan tidak tercapai. Dan untuk mengurangi sinyal kesalahan ini, motor dapat bergerak ke kedua arah untuk akhirnya mengurangi sinyal kesalahan menjadi nol. Ketika kondisi ini tercapai, output yang diinginkan tercapai. Motor servo yang disempurnakan dan canggih memiliki rotary encoder optik pada poros keluaran untuk mengukur kecepatannya.

Buzzer

Buzzer dapat bersifat mekanis, elektronik, elektromekanis, dan piezoelektrik. Umumnya kita menggunakan yang elektronik di oven, acara permainan dan peralatan dll. Buzzer ini memiliki sirkuit internal. Suara yang dihasilkan adalah karena gerakan dari disk. Disk ini bersifat feromagnetik. Ini adalah perangkat yang digerakkan arus yang memiliki sumber tegangan sebagai inputnya.

Bekerja Kontroler Gerbang Kereta Api Otomatis

Dalam rangkaian ini kami telah menggunakan sensor ultrasonik dan motor servo untuk meniru cara kerja perlintasan kereta api. Kedua sensor dipicu dengan bantuan pin pemicu yang terpasang pada papan Arduino dan jarak dihitung. Kerja lebih lanjut dari sirkuit sepenuhnya tergantung pada jarak yang diukur.

Jika lintasan bersih maka motor servo tidak akan melakukan apa-apa kecuali jika kereta tiba di kedua sisi lintasan maka jarak yang diukur oleh salah satu sensor akan berbeda dari jarak sebelumnya. Dengan cara ini kita akan mendapat informasi tentang kedatangan kereta dan dalam waktu singkat, Arduino akan menyetel pin digital 7 dan 8 ke HIGH.

Pin ini terhubung dengan dua motor servo dan kemudian servo akan menempuh jarak sudut 90 o dan karenanya gerbang akan ditutup untuk menghalangi jalan bagi kendaraan. Saat kereta menjauh dari sensor lain, Arduino akan diberitahu tentang keberangkatan kereta dan motor servo akan kembali ke posisi sebelumnya untuk membuka gerbang.

Mengingat keselamatan orang-orang, kami telah menambahkan satu fitur lagi ke sirkuit ini dan ini tentang memperingatkan mereka jika ada kereta berkecepatan tinggi. Hal ini dicapai dengan menghitung waktu antara transisi dua sensor dalam satu siklus. Jika waktu ditemukan kurang dari nilai tertentu maka buzzer akan mengeluarkan suara mendengung untuk memperingatkan orang-orang di sekitar penyeberangan.

Kode Sumber &Penjelasan Proyek

Dalam sketsa ini, kami telah mendefinisikan lima variabel tipe integer dan empat tipe panjang. Variabel tr1, tr2, eh1 dan eh2 digunakan untuk mengirim pulsa dan menerima nilai waktu dalam mikrodetik sedangkan variabel val1, val2, dis1 dan dis2 digunakan untuk menyimpan nilai waktu dalam mikrodetik dan jarak dalam cm. Kecepatan baud diatur ke 9600 bit/dtk dan bertanggung jawab atas komunikasi antara papan dan monitor serial.

const int tr1 = 13, eh1 = 12, tr2 = 3, eh2 = 2;;
 int bz = 11;
unsigned long val1, dis1, val2, dis2;
#include 
Servo myservo1;
Servo myservo2;
int pos=-1;

Fungsi yang termasuk dalam void setup () hanya akan berjalan satu kali selama eksekusi dan tugasnya adalah menentukan baud rate dan mode pin sebagai input atau output.

void setup() {
  // put your setup code here, to run once:
pinMode(tr1, OUTPUT);
pinMode(tr2, OUTPUT);
pinMode(bz, OUTPUT);
 
  pinMode(eh1, INPUT);
  pinMode(eh2, INPUT);
  myservo1.attach(8);
 myservo2.attach(7);

  Serial.begin(9600);
}

Sesuai fungsi yang diperlukan, kami terus mengukur jarak dengan memicu sensor ultrasonik dan jarak yang dihitung ditetapkan sebagai parameter pernyataan bersyarat. Jika kondisi ditemukan benar maka variabel “pos” menambah nilainya untuk menjalankan motor servo dan ketika kondisi ditemukan salah maka variabel “pos” menurunkan nilainya untuk mengembalikan motor servo ke posisi semula.

Ada satu lagi pernyataan bersyarat yang memeriksa apakah dua sensor merasakan objek dengan cepat, kemudian akan menyetel pin 11 tinggi untuk menyalakan bel agar memperingatkan orang-orang. Semua proses ini tercakup dalam void loop () dan diulangi sampai Arduino direset atau suplai dihentikan.

void loop() {
  // put your main code here, to run repeatedly:
 
 digitalWrite(tr1, LOW);
 delayMicroseconds(2);
 digitalWrite(tr1, HIGH);
 delayMicroseconds(10);
 digitalWrite(tr1, LOW);
 val1 = pulseIn(eh1, HIGH);
 dis1 = (val1 * 0.0343) / 2;

 digitalWrite(tr2, LOW);
 delayMicroseconds(2);
 digitalWrite(tr2, HIGH);
 delayMicroseconds(10);
 digitalWrite(tr2, LOW);
 val2 = pulseIn(eh2, HIGH);
 dis2 = (val2 * 0.0343) / 2;
  
  Serial.println("distance is ");
 Serial.println(dis1);
  Serial.println(dis2);
  if(dis1 < 100 || dis2 < 100)
  {
    if(pos==-1){
    for (pos = 0; pos <= 90; pos += 1) { 
    myservo1.write(pos); 
    myservo2.write(pos);            
    delay(15);}
  }
     delay(1000);
    digitalWrite(tr1, LOW);
    delayMicroseconds(2);
    digitalWrite(tr1, HIGH);
    delayMicroseconds(10);
    digitalWrite(tr1, LOW);
    val1 = pulseIn(eh1, HIGH);
    dis1 = (val1 * 0.0343) / 2; 
    
    digitalWrite(tr2, LOW);
    delayMicroseconds(2);
    digitalWrite(tr2, HIGH);
    delayMicroseconds(10);
    digitalWrite(tr2, LOW);
    val2 = pulseIn(eh2, HIGH);
    dis2 = (val2 * 0.0343) / 2;
     
      if(dis1 < 100 || dis2 < 100) {digitalWrite(bz, HIGH); Serial.println("distance2 is "); Serial.println(dis1); Serial.println(dis2);} } else if(dis1 >= 100 && dis2 >= 100)
    { if(pos==91){
      for (pos = 90; pos >= 0; pos -= 1) {
    myservo1.write(pos);   
    myservo2.write(pos);           
    delay(15);  
      
    }                  
  }
  digitalWrite(bz, LOW); 
      delay(200);
      }
}

Menghubungkan file Hex dengan Proteus untuk simulasi: Di IDE Arduino Anda, klik File> Preferences dan kemudian di "Show verbose output" periksa kedua opsi kompilasi dan unggah. Dan, setelah kompilasi kode di jendela di bawah ini pilih dan salin lokasi file hex dan di Proteus klik dua kali pada Arduino dan rekatkan lokasi file di opsi File Program dan klik OK. Sekarang sirkuit Anda akan siap untuk disimulasikan ke dalam Proteus.

Proyek Terkait:


Teknologi Industri

  1. NOR Gate S-R Latch
  2. Kemungkinan Kegagalan dalam Sistem Terbukti
  3. gerbang TTL NOR dan OR
  4. Sirkuit Kontrol Motor
  5. Sirkuit dan Kerja Sistem Pembuka Pintu Otomatis Terdeteksi Gerakan
  6. Sistem Kontrol CNC M-TECH
  7. Kontrol Kereta Otomatis
  8. Sistem Alarm Arduino:SERENA
  9. Pusat Kontrol Arduino
  10. Pemantauan awan, sistem kendali jarak jauh