Ana Sayfa Arduino Bant yüksekliği ve Hızı Ayarlanabilir Konveyör Sistemi

Bant yüksekliği ve Hızı Ayarlanabilir Konveyör Sistemi

9 min read
2
0
1,475

Merhaba Arkadaşlar,

Sakarya Üniversitesi Teknoloji Fakültesi Mekatronik Mühendisliği öğrencilerinden Cevat İleri,Furkan Gültürk ve Barış Kızılkaya’nın Makine Elemanları dersi proje ödevi kapsamında  yaptıkları projeyi anlatacağız.

Konveyör sistemi günümüzde havaalanları, maden ocakları, paketleme üniteleri gibi pek çok alanda kullanılmakta ve kullanıldığı yere ve yüke göre değişik tasarımları bulunmaktadır. Biz bu projede mekatronik bir sistem tasarlamayı amaçladık. Bu yüzden sistem kontrolünü (hızını ve konveyör yüksekliğini) bilgisayar üzerinden yaptık. Şimdi projemizi daha yakından inceleyelim.

konveyor_tasarim

 

Kullanılan Malzemeler

  • Mikrodenetleyici olarak Arduıno Mega 2560
  • Step motoru sürmek için drv8825 step motor sürücü
  • 12V DC motor (Redüktörlü)
  • Rulmanlar, miller, cıvata somunlar ve segmanlar
  • 12V Step motor ve sonsuz vida ve karşılığı

Konveyörümüzün yapımına tasarımını yaparak başladık. Konveyör yüksekliğini ayarlamak için masa üstü bilgisayarlardaki CD Room içindeki step motoru kullandık. CD Roomun içini söktüğünüzde görürsünüz step motor ile bütünleşik sonsuz vida ve karşılığı vardır. Biz bu sistemi komple (İki tane milini, sonsuz vida karşılığını ve step motorunu) kullandık. Yani tasarımı bu parçaları referans alıp kumpas ile ölçümleri yaparak bütün sistemi bu parçalara göre uyarladık.Konveyörün stl dosyalarına buradan ulaşabilirsiniz.

Konveyör parçalarını 3d printerdan çıkarmak için bizimle buradan iletişime geçebilirsiniz.

Tasarımı yaptıktan sonra parçalarımızı 3d printerdan çıkardık. Daha sonra montajını yaptık.

Sıra geldi sistemimizi kontrol etmeye. Kontrolümüzü C# üzerinden Arduıno ile haberleştirerek yaptık.

konveyor_c#_programı

C# üzerinden gelen değerlere göre Arduıno üzerinden karşılaştırma yapıp bant hızı mı yoksa konveyör yüksekliği mi kontrol edilmek isteniyor ona göre pinlere veriyi yolladık. Yüksekliği kontrol ederken önceki duruma göre aşağı mı indirilmek isteniyor, yoksa yukarı mı kaldırılmak isteniyor durumunu ilk değer ve yeni değer diye iki değişkeni karşılaştırıp duruma göre motor sürücü devresindeki DIR (direction pini) 1 veya 0 yaptık. Bant hızını Arduıno analog pini üzerinden kontrol ettik. Son olarak form application olaylarından form application kapandığında olayını kullanarak konveyörün ilk konumuna gelmesi için gerekli kodları yazdık.

C# Kodları


namespace WindowsFormsApplication1

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        int eskiDeger = 0;

        private void Form1_Load(object sender, EventArgs e)

        {

        }

        private void button2_Click(object sender, EventArgs e)

        {

            int sayi = Bant_Hizi.Value;

            hiz.Text = Convert.ToString(sayi);

            string yuzler = Convert.ToString(sayi / 100);

            string onlar = Convert.ToString((sayi % 100) / 10);

            string birler = Convert.ToString(sayi % 10);

            serialPort1.Open();

            serialPort1.Write(yuzler);

            serialPort1.Write(onlar);

            serialPort1.Write(birler);

            serialPort1.Write("a");

            serialPort1.Close();

        }

        private void button1_Click(object sender, EventArgs e)

        {

            int yeniDeger = Konveyor_yukseklik.Value;

            int gonder = yeniDeger-eskiDeger;

            string  Yon = "u";

            eskiDeger = yeniDeger;

            if (gonder < 0) {  

                gonder = gonder*(-1);

                Yon = "d";

            }

            string yuzler = Convert.ToString( gonder/ 100);

            string onlar = Convert.ToString((gonder % 100) / 10);

            string birler = Convert.ToString(gonder % 10);

            serialPort1.Open();

            serialPort1.Write(Yon);

            serialPort1.Write(yuzler);

            serialPort1.Write(onlar);

            serialPort1.Write(birler);

            serialPort1.Write("b");

            serialPort1.Close();

        }

        private void Konveyor_yukseklik_Scroll(object sender, EventArgs e)

        {

            int sayi = Konveyor_yukseklik.Value;

            Konum.Text = Convert.ToString(sayi);

        }

        private void Bant_Hizi_Scroll(object sender, EventArgs e)

        {

            int sayi = Bant_Hizi.Value;

            hiz.Text = Convert.ToString(sayi);

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            Bant_Hizi.Value = 0;

            Konveyor_yukseklik.Value = 0;

            int yeniDeger = Konveyor_yukseklik.Value;

            int gonder = yeniDeger-eskiDeger;

            string  Yon = "d";

            string yuzler = Convert.ToString(gonder/ 100);

            string onlar = Convert.ToString((gonder % 100) / 10);

            string birler = Convert.ToString(gonder % 10);

            serialPort1.Open();

            serialPort1.Write("0");

            serialPort1.Write("a");

            serialPort1.Write(Yon);

            serialPort1.Write(yuzler);

            serialPort1.Write(onlar);

            serialPort1.Write(birler);

            serialPort1.Write("b");

            serialPort1.Close();

        }   }}

Arduino Kodları


String veri = "";

bool yon = HIGH;

void kontrolcu (String veri, int karar);

void konveyor_motor (int hiz);

void step_konum (int konum);

void setup() {

  Serial.begin(9600);

  pinMode(5,OUTPUT);

  pinMode(6,OUTPUT);

  pinMode(7,OUTPUT);

}

int deger = 0;

void loop() {

    digitalWrite(7,HIGH);

    while (Serial.available() > 0) {

      int inChar = Serial.read();

      if (isDigit(inChar)) {

          veri += (char)inChar;

      }else if(inChar == 'a' || inChar == 'b'){

          kontrolcu(inChar);

      }else if(inChar == 'd'){

          yon = LOW;

      }else if(inChar == 'u'){

          yon = HIGH;

      }

  }

}

void kontrolcu ( int karar){

    if (karar == 'a') {    konveyor_motor(veri.toInt());    }

    else if(karar == 'b'){    step_konum(veri.toInt());    }

    veri = "";

}

void konveyor_motor(int hiz){

    analogWrite(3, hiz);

}

void step_konum(int konum){

    digitalWrite(7,LOW);

    digitalWrite(6,yon);

    while(konum>0){

        digitalWrite(5,HIGH);

        delay(20);

        digitalWrite(5,LOW);

        delay(20);

        konum--;

    }

  digitalWrite(7,HIGH);

}

 

 

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Konuk Yazar
Daha Fazla Göster -  Arduino

2 Yorumlar

  1. Resul

    8 Ocak 2017 at 11:06

    stl dosyasının linkinde hata var . yardımcı olur musununz acaba

    Reply

    • admin

      11 Ocak 2017 at 22:24

      Merhaba Resul, uygun bir fiyat’a bu konveyör’ü 3D yazıcı’dan sana çıkarabiliriz. İletişim için roboturkacom@gmail.com adresine e-posta atabilirsin.

      Reply

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Esnek Algılayıcı Kontrollü Robotik El

Merhaba arkadaşlar… Ben İbrahim GÖKBAYRAK. Mekatronik mühendisiyim. Bu çalışmada sizlere e…