Matlab Simulink & Arduino Haberleşmesi

Bu yazımda Matlab Simulink & Arduino seri haberleşmesinin nasıl sağlandığını ve Real-Time olarak LED yakıp söndüreceğimizi göreceğiz.

Öncelikle MATLAB’ın kendi sitesinden Arduino IO MATLAB eklentisini kurmanız gerekiyor. Buradan üye olup giriş yaparak eklentiyi indirebilirsiniz.

Daha sonra indirdiğimiz rar dosyasını çıkartarak Arduino’ya yüklememiz gerekiyor.

Yükleyeceğimiz dosya; ArduinoIO > pde > adioes.pde dosyasıdır. Bu dosya Arduino programında açarak Matlab ile haberleşmesini sağlayacağız.

Arduino IDE’de File > Open > adioes.pde programımızı upload ediyoruz.

MATLAB’da indirdiğimiz dosyayı açıyoruz.

İlk defa kullanıyorsanız sol tarafta install_arduino.m dosyasını çalıştırmamız gerekiyor, sağ tıklayıp run yapıyoruz. Ve aynı şekilde arduino.m dosyasını seri haberleşmeyi sağlamak için sağ tıklayıp çalıştırıyoruz.

Bu işlemleri gerçekleştirdikten sonra artık Simulink’i açabiliriz.

Açmadan önce biraz Simulink ortamından bahsedelim.

Simulink bize karmaşık sistemleri tasarlama ve similasyon yapma olanağı vermektedir. Simulink; Sayısal İşaret İşleme ve haberleşme, Diferansiyel denklem çözümü, Elektrik devre çözümü, Kontrol sistemleri (Uçuş kontrol, PID kontrolü), Isı, soğutma, süsbansiyon ve fren sistemleri, Uzaktan ve Web tabanlı kontrol ve Robotik çalışmalar gibi birçok elektrik, elektronik,  mekanik ve termodinamik gerçek dünya sistemini simüle edebilir. Ve daha fazlası. Matlab ile ilgili yazılarımızda Simulink’e daha fazla yer vermiş olacağız.

Command Window’da >>simulink yazarak ya da model penceresinden Simulink’i açabilirsiniz.

Açılan pencereden Blank Model’e tıklıyoruz  ve kütüphaneyi açmak için kare içine tıklıyoruz. Görüldüğü gibi Arduino IO Library kütüphaneye yüklenmiş.

Sürükle – bırak mantığıyla çalışmaktadır.

Programlarımızda sürekli olarak yüklememiz gereken bloklar; Arduino IO Setup ve Real-Time Pacer, sırasıyla sağladığımız seri haberleşmede port ile kurulumu sağlıyor ve sistemin gerçek zamanlı çalışmasını sağlıyor.

Arduino hangi port’a bağlı ise Arduino Setup’a çift tıklayıp “DEMO” yerine COMX, 5’e bağlıysa COM5 yazıyoruz. Real-Time Pacer ise simülasyonda hızının ayarlanmasındaki kat sayıdır.

Şimdi de bir LED yakalım.

LED yakmadan önce şunu belirtmekte fayda var. Arduino’da uygulama yapmak için hangi pin’i, giriş ve çıkışları ne için kullanıyorsak burada da aynı şekilde kullanacağız.

LED’i 8 pinine bağladık Constant (Kütüphane üzerinde Simulink> Commonly Used Blocks kısmından seçebilirsiniz) ile pin 8’e 0-1 olarak gönderiyoruz. 0 olduğunda LED yanmıyor, 1 ise LED yanıyor.

Arduino & LED bağlantısı

Şimdi ise Toogle Switch ve lamba (Kütüphane üzerinde Simulink> Dashboard kısmından) ekleyelim. Real-Time olarak Simulink ve Arduino’da aynı işlemlerin gerçekleştiğini göreceğiz. Bunun için buton ve lambayı ekledikten sonra butona çift tıklıyoruz. Açılan pencerede Constant ile bağlantı sağlamak için Constant’a tıklayıp seçiyor ve “OK”a basıyoruz. Aynı şekilde lambaya çift tıklıyoruz ve pin8’e bağlıyoruz. Ayrıca lambanın 0-1 durumundaki rengini buradan değiştirebilirsiniz.

Ve artık programımızı çalıştırmak için her şey hazır. Run’a basarak çalıştırdığımızda butona tıklayarak Real-Time olarak LED ve lambanın yanıp söndüğünü görebiliriz.

LED’in yanıp sönmesini manuel olarak yapmıştık, bu sefer ise zamana bağlı olarak belirli aralıklarla yanıp sönmesini yapalım.

Karşılaştırma yapmak için Repeating Sequence  (Simulink>Sources)  kullanacağız. Toplam 10 saniye boyunca ilk 5 saniyede LED aktif olacak, sonraki 5 saniyede pasif olacak. Tek başına kullanamıyoruz bu yüzden Compares to Constant (Simulink>Logic and Bit Operations) kullanacağız.

Repeating Sequence çift tıklayıp zaman ve çıkış değerlerini giriyoruz, Compares to Constant çift tıklayıp hangi zamanda sönmesini istiyorsak, <=5 seçtik operatör kısmından diğer seçenekleri de seçebilirsiniz, onu seçtik.

Programı çalıştırdığımız zaman ilk 5 saniye çalıştığını ve sonraki 5 saniyede ise söndüğünü göreceksiniz.

Bir sonraki yazımızda ise Real-Time olarak Servo Motorun Matlab Sinulink’te nasıl kontrol edildiğinden bahsedeceğim.

Posted in Arduino, Matlab and tagged , , .

Bir cevap yazın

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