Arduino Bant yüksekliği ve Hızı Ayarlanabilir Konveyör Sistemi By Konuk Yazar Posted on 8 Haziran 2016 9 min read 2 0 12,502 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr 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. Tavsiye Edilen Ürün Linkleri ve 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. 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ı [php] 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(); } }} [/php] Arduino Kodları [php] 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); } [/php]