Bilgisayar Kontrollü Araba

10155663_1443385625919247_8284121495920933140_n

Öncelikle merhabalar,

Bu yazımda hobi olarak geliştirdiğim bir çalışmayı paylaşacağım. Temel olarak proje piyasada satılan bir oyuncak arabanın bilgisayar ile kontrol edilmesini amaçlamaktadır. Mikro kontrolcü olarak ARM STM32F0 geliştirme kiti kullanılmıştır. Bilgisayar iletişimi ise UART TTL Converter ile gerçekleştirilmektedir. Seri port üzerinden devre ile bilgisayar arasındaki iletişim sağlanmıştır. Bilgisayar arayüzü c# ile yazılmıştır. C# ile geliştirilen arayüz oldukça sadedir. Görsele aşağıdan göz atabilirsiniz.

10356261_1443385605919249_4014913707832946860_n

Bu basit devre ile birlikte oyuncak araba klavyenin ok tuşları ile hareket ettirilebilmektedir. Kaynak dosyalarını ilerleyen zamanlarda derleyip burada paylaşacağım.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Sarım Açısı Faktörünün Hesaplanması

kayis_kasnak_hesabi_nasil_yapilir

Öncelikle Merhabalar,

Geliştirmekte olduğum kayış kasnak hesap uygulamasında sona doğru yaklaşıyorum. Bu güncelleme ile beraber sarım açısı faktörü ilgili tablolardan çekilerek hesaplanıyor. Burada tablodan gelen 4 değer ve hesaplanan sarım açısı arasında interpolasyona tabi tutuluyor. Ayrıca kasnaktaki kanal sayısını hesaplamak için gerekli olan değerleri de ayrı bir form içerisinde göstermeye başladım.

İlgili videoyu aşağıdan izleyebilirsiniz.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Dar ve Normal V Kayış Hesap Programı-3

kayis_boyu_factorunun_hesaplanmasi

Öncelikle Merhabalar,

Geliştirmekte oldugum kayis kasnak hesap programında artık sona dogru yaklaşıyoruz. Bugün yaptıgım eklemeler ile beraber, program artık kayış boyu faktörünü hesaplayabiliyor. Referans olarak verilen bir Lp değeri için kayış profiline göre ilgili tablodan 4 değer çekmektedir. Bu değerleri enterpolasyona tabi tutarak referans verilen Lp değeri için kayış boyu faktörünü hesaplamaktadır. İşlem yapılan dataları görmeniz adına iki adet data grid view ekledim. Çalışma videosuna aşağıdan göz atabilirsiniz.

İyi Çalışmalar.

Burak Gökberk ÖZÇİÇEK

Dar ve Normal V Kayış Hesap Programı-2

v_kayis_hesap_programi

Öncelikle Merhabalar,

V kayış hesap programında bazı güncellemeler yaptım. Matematiksel hesapların bir çoğu tamamlandı denebilir. Rulman seçimi ve mil çapı kontrol hesabında kullanacağımız Fç ve Fn kuvvetleri hesaplayabiliyorum. Ayrıca Lp(Kayış Boyu) matematiksel olarak hesaplanabiliyor. Hesaplanan bu Lp değeri, kayış profiline göre en yakın standart kayış boyuna yuvarlanıyor. Bundan sonraki güncellemelerde kasnaktaki kanal sayısını hesaplamak için sarım açısı faktörü,kayış boyu faktörü ve iletilen güç katsayısını tablolardan belirlenen parametrelere göre çekmek olacak. Şimdilik aşağıdaki sonuçları elde edebiliyoruz. Kalın olarak yazdığım sonuçlar, önümüzdeki günlerde geliştirilecek.

  • Burulma Momenti:40,5875Nm
    Fç Kuvveti:1082,33333333333N
    F1 Kuvveti:1098,60470498458N
    F2 Kuvveti:16,2713716512441N
    Fn Kuvveti:1113,9931725179N
    Motor Gücü:8,5KW
    İşletme Faktörü:1,2
    Döndüren Kasnak Çapı:75mm
    Seçilen Döndürülen Kasnak Çapı:150mm
    Hesaplanan Çıkış Devri:1000rpm
    İletim Oranı:2
    Sarım Açısı(Derece):160,901406828973
    Sarım Açısı(Radyan):2,80825932025646
    Eksenler Arası Mesafe:225mm
    Hesaplanan Kayış Boyu:809,679173528852mm
    Seçilen Kayış Boyu:812mm
    Kayış Sürtünme Katsayısı:0,5
    Kayış Profili:SPZ
    Sarım Açısı Faktörü:
    Kayış Boyu Faktörü:
    Ni Faktörü:

Örnek çalışma videosuna aşağıdan göz atabilirsiniz.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Dar ve Normal V Kayış Hesap Programı-1

kayis_kasnak_hesap_programi

Öncelikle Merhabalar,

Bilindiği gibi makine elemanlarının tasarımında standart parçalardan faydalanmak önemlidir. Standart parçalar sonuca ulaşmak için harcadığımız süreyi ve maliyeti düşürürler. Bu küçük yazılım ile normal ve dar V kayışların seçiminde harcanan hesaplama süresini azaltmayı planlıyorum. Referans olarak stomil sanok tasarım kitabını kullanacağım. Bu kitabın pdf formatına aşağıdaki bağlantıdan ulaşabilirsiniz.

Stomil Sanok Designer Book

Kayış kasnak mekanizmalarının tasarımında tabloları sıklıkla kullanırız. Hesap esnasında harcadığımız sürenin büyük bir kısmını bu tablolardan değer okurken kaybederiz. Tablolardan baktığımız değerler ise şu şekilde sıralanabilir;

  • İşletme Faktörü(Ki)
  • Kayış Boyu (Lp)
  • Sarım Açısı Faktörü (Kß)
  • Kayış Boyu Faktörü(Kl)
  • Nominal İletilen Güç Katsayısı (Ni)
  • Döndüren Ve Döndürülen Kasnak Çapları
  • Kasnak Kanal Zayısı (Z)

Bu ifadeler bazı referans kitaplarda farklı sembollerle tanımlanabilir. Kayış kasnak mekanizmalarının hesabında aşağıda listelenen parametreler belirlendiğinde artık rulman seçimi ve mil çapı hesabına geçilebilir.

  • F1 Kuvveti
  • F2 Kuvveti
  • Burulma Momenti
  • Fç Kuvveti
  • Fn Kuvveti
  • Kasnak Genişliği
  • Kayış İçin Gerekli Gerdirme Kuvveti

Bu ufak uygulamayla birlikte kayış kasnak hesaplarında harcadığımız sürenin %70-80 oranında azalacağı kanısındayım. Uygulamayı C# ile geliştirmeye başladım. Bu süreç içerisinde en çok tablolardaki değerleri veritabanına girmek ve onları işleyebilmek uzun sürecek. Başlangıç olarak yaptığım çalışmaya aşağıdaki videodan göz atabilirsiniz.

İyi Çalışmalar.

Burak Gökberk ÖZÇİÇEK

Devrenin Similasyonu

pneumatic_similator

Geliştirmekte olduğum pnömatik similasyon uygulamasında artık devre analizi aşamasına geçmiş bulunmaktayım. Uygulama, aşağıdaki ekipmanlar ile kurulan herhangi bir devreyi rahatça analiz edebilmektedir.

  • Basınç kaynağı
  • 3/2 tutmalı yay geri dönüşlü valf
  • Ve valfi
  • Veya valfi
  • İş elemanı(Tek etkili yay geri dönüşlü silindir)

Bir kalıp içerisinde çalışmak yerine kullanıcıyı özgür bırakmaktadır. Çalışma videosuna aşağıdan izleyebilirsiniz.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

3/2 Valf Düzenlemesi ve Veya Valfi

pneumatic_similator_8

Geliştirmekte olduğum pnömatik similasyon uygulamasında bugün bazı değişiklikler yaptım. Sisteme yeni bir ekipman ekledim. Bu yeni ekipmanın adı “Veya Valfi”. Diğer adıyla Shuttle Valve. Veya valfi mantıksal kontrol devreleri kurmak için kullanılan bir ekipmandır. 3 adet portu bulunur. Bunlarda ikisi giriş, biri ise çıkış portudur. Giriş portlarından birine veya ikisine birden hava geldiğinde, çıkış portundan hava geçişine izin verir. Bu valf ile benzer olan “Ve Valfi” ise, giriş portlarının ikisine birden hava geldiğinde, çıkış portundan hava geçişine izin verir. Ve valfi, literatürde “Dual Pressure Valve” olarak geçmektedir. Bu son yaptığım revizyon ile pnömatik similasyon uygulaması kritik gördüğüm şu pnömatik ekipmanları içerisinde barındırmaktadır.

  • 3/2 Tutmalı Yay Geri Dönüşlü Yön Kontrol Valfi
  • Ve Valfi
  • Veya Valfi
  • Pnömatik Silindir
  • Basınç Kaynağı

Yapılan değişiklikleri incelemek için aşağıdaki videoya göz atabilirsiniz.
İyi Çalışmalar.
Burak Gökberk ÖZÇİÇEK

Ekipmanların Ve Hortum Bağlantılarının Silinebilmesi

Öncelikle Merhabalar,

Geliştirmekte olduğum pnömatik similasyon uygulamasında, bu düzenleme ile beraber oldukça mesafe kat etmiş bulunmaktayım. Artık ekipmanlar veya hortum bağlantıları kolaylıkla silinebiliyor. Bu kullanıcılara daha etkili bir kullanım arayüzü sunmuş olacak. Yanlışlıkla eklenen elemanlar veya hat bağlantıları silinebiliyor. Herhangi bir ekipman silindiğinde, eğer o ekipman ile yapılmış bir bağlantı var ise, otomatik olarak o bağlantıda silinmiş oluyor. Çalışma videosuna aşağıdan göz atabilirsiniz.

İyi Çalışmalar.

Burak Gökberk ÖZÇİÇEK

Aktüatörler

Aktüatör, bir mekanizmaya hareket veren ekipman olarak tanımlanabilir. Endüstride kullanımı oldukça yaygındır. Dairesel, lineer ve hem dairesel hem lineer hareket edebilir. Bu hareketleri gerçekleştirmek için bir enerji kaynağına ihtiyaç duyarlar. Genelde de bu enerji kaynağının türüne göre gruplandırılırlar. Aktüatörler çok geniş bir alana yayıldığı için bu yazımda, endüstriyel borulamada kullanılan bazı aktüatörler hakkında bilgi vereceğim. Yani vanaları açıp kapayan ekipmanlar üzerine bir yazı olacak

diaphram_actuator

Diaframlı Aktüatörler

Genellikle lineer hareket yapan türleri tercih edilir. Globe, gate gibi valflerde kapama ve açma işlemini üstlenir. Geri dönüş hareketi yay ve pilot hava ile sağlanır. Yaylı tiplerinde(Single Acting), eğer yay, pilot hava çekildikten sonra kapama işlemi yapıyor ise bu diaframa air to open spring to close(fail closed) diafram denir. Yay açma işlemini yürütüyor ise, Air to close spring to open(fail opened) diafram denir. Geri dönüş işlemide hava ile gerçekleşiyorsa buna double acting diafram denir. Yay yerine diaframın üst ve alt kapaklarından hava girişi mevcuttur. Hareket bu şekilde üretilir. Diaframlı aktüatörlerin P&ID sembolleri ise şu şekildedir;

single-double-acting-diaphram-actuator

Çift ve Tek Etkili Diaframlı Aktüatör

 Silindirli Aktüatörler

Diaframlı aktüatörler ile benzer bir mantıkta çalışır. Geri dönüş işlemi yay ile olabileceği gibi pilot hava ile de sağlanabilir. Yaylı tiplerine single acting, pilot hava ile geri dönüşü sağlayan tiplerine double action denir. p&ID sembolleri ise şu şekildedir;

cylinder_actuator

Çift Etkili ve Tek Etkili Silindir Aktüatör

Elektrik Motorlu Aktüatörler

Asenkron,step veya servo motor ile çalışabilir. Genellikle ball, kelebek veya plug vanalarda kullanılır. Dönme hareketi daireseldir. P&ID sembolü ise şu şekildedir;

motor-actuator-PID-symbol

Bu bazen dikdörtgen içerisindeki bir M harfi ile de ifade edilebilir. Aktüatörleri bu başlıklar ile sınırlamak doğru değildir. Farklı tipte bir çok aktüatör bulunabilir. Aktüatörler hakkında incelediğim bazı videoları da aşağıda paylaşıyorum. İncelemeniz faydalı olacaktır.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK (daha&helliip;)

Bağlantı Algoritmasında Yapılan Değişiklikler Ve Eklemeler

online_pneumatic_similator

Öncelikle Merhabalar,

Pnömatik similasyon uygulamasında yeni geliştirmeler yaptım. Artık ekipmanların portları arasındaki bağlantı işlemi daha kararlı bir hal aldı. Önceden iki nokta arasında eğimli bir çizgi ile işlem gerçekleştiriliyordu. Artık köşeli bir bağlantı sitili hakim. FluidSim programında oldugu gibi. Aynı zamanda bağlantı yaparken, uygulama biraz daha seçiçi. Yeni özellikleri şu şekilde;

  • Aynı ekipmanın portları birbiri arasında bağlantı yapamıyor.
  • Giriş ve Çıkış işlemi gören portlar belirlendi. Artık Girişler çıkışlar ile bağ kurabiliyor. Aynı şekilde çıkışlarda girişler ile bağ kurabiliyor. Bu işlemi seçili noktaların tipini değişkenlerde tutarak kontrol altına alıyorum. Eğer FirstPointType==SecondPointType olur ise bağ gerçekleşmiyor.
  • Daha önceden var olan bağlantı tekrardan oluşturulamıyor.

Yapılan bu düzenlemeler ile beraber,uygulamanın en kritik noktalarından biri bitmiş oldu. Artık sınırsız ekipman eklenebiliyor. Bu ekipmanlar arasında bağlantı işlemi gerçekleştirilebiliyor. Bağlantı algoritmasında yaptıgım değişiklikler, similasyonu gerçekleştirirken büyük kolaylık sağlayacak. Örnek videoya aşağıdan göz atabilirsiniz.

İyi Çalışmalar.

Burak Gökberk ÖZÇİÇEK

Pnömatik Ekipmanların Düzlem Üzerinde Taşınması

snap_svg_moving

Öncelikle Merhabalar,

İçerisinde çizim işlemi barındıran yazılımlarda, çizilen elemanların taşınabilmesi önemli bir konudur. Bende üzerinde çalıştığım pnömatik similasyon uygulamasında, düzlem üzerinde bulunan pnömatik ekipmanları taşınabilir hale getirmeye karar verdim. Aslında SnapSVG kütüphanesi içerisinde nesne taşımak için bir fonksiyon mevcut fakat benim çizdirdiğim pnömatik ekipmanlar bir blok halinde değil. Blok halinde bulunmamasının bir çok sebebi var. Bunlara ilerleyen zamanlarda değinirim. Bu sebeple taşıma işlemi için yeni bir algoritma geliştirmem gerekti.

Pnömatik similatorün arkaplanında 3 adet dizi değişken bulunmakta. Bunlar Items,Connections ve Points. Dizilerin içerisinde tuttuğu değerler ise aşağıdaki gibidir.

Items

  • Item_Type
  • Item_ID
  • IsOpen
  • Item_Position
    -X
    -Y

Points

  • Position
    -X
    -Y
  • Parent_Type
  • Parent_ID
  • Name
  • Pressure

Connections

  • Connection_ID
  • From
    -Name
    -Parent_ID
  • To
    -Name
    -Parent_ID

Yukarıdada görüldüğü gibi bir pnömatik elemanın konumu ile bağlantı noktalarının konumu farklı dizilerde tutulmaktadır. Taşıma esnasında elemanın ve noktalarının konumları eş zamanlı olarak değiştirilmelidir. Bunun için eski hat çizdirme yöntemimi revize etmem gerekti. Artık iki nokta arasındaki bağlantı sadece noktaların ID ve isimleri ile ifade ediliyor. Önceden Connections dizisi konumlara göre gerçekleşiyordu. 3 dizide değişiklik yapmak yerine küçük bir revizyon ile 2 dizide değişiklik yapmak daha mantıklı. Şimdiki taşıma algoritmam bu şekilde.

Çalışma videosuna aşağıdan göz atabilirsiniz.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Pnömatik Devrelerin Yazılım İle Çözümlenmesi-2

javascript_online_pneumatic_similator

 

Öncelikle Merhabalar,

Bu aralar pnömatik devrelerin yazılım ile çözümlenmesini hedefleyen basit ölçekli bir uygulama üzerinde çalışıyorum. Vakit buldukça kafamda belirlediğim hedefe ulaşmak için ufak ufak geliştirmeler yapıyorum. Son yaptığım değişiklikten bu yana uzun bir süre geçti. Bu günkü çalışmamda Ve Valfi(And Valve) eklemiş bulunmaktayım. Bir sonraki adım ise Veya Valfi(Or Valve) pnömatik ekipmanını uygulamaya eklemek. Bu iki valf sayesinde koşullu devreler kurabileceğiz. Zaman zaman yine çalışmalarımı aynı başlıkla yayınlayacağım. Ve valfinin çalışmasına ait test videosunu aşağıdaki videodan izleyebilirsiniz.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Pnömatik Devrelerin Yazılım İle Çözümlenmesi

online_pneumatic_similator

Öncelikle Merhabalar,

Yaklaşık 2 haftadır pnömatik devrelerin yazılım teknolojileri ile modellenmesi üzerine çalışıyorum. Bu süre zarfında iyi bir mesafe katettiğimi düşünüyorum. Uygulamayı web teknolojilerini kullanarak geliştiriyorum. Grafik tabanı olarak SVG teknolojisini kullanıyorum. SVG için kullandığım bir kütüphane mevcut. SnapSVG. Oldukça kullanışlı bir kütüphane. Diğer SVG kütüphanelerine nazaran daha stabil. Mantıksal karşılaştırmalar ve mouse işlemlerini yakalamak için JQuery kullanıyorum. Aşamalar ile ilgili zaman zaman videolar çekiyorum. Son yayınladığım test videosunu aşağıdan izleyebilirsiniz.

Peki bu proje ile neyi amaçlıyorum?

Öncelikle şunu belirtmek isterim ki bu uygulama ticari bir ürün olmayacak. Amacım mühendislik problemlerinin çözümlenmesinde kullanılan algoritmalar hakkında Türkçe kaynak oluşturmak. Örnekleme olarak aşağıdaki pnömatik ekipmanların çizimi ve analizini gerçekleştirdiğimde, bir döküman hazırlayarak yayınlamayı planlıyorum.

  • 3/2 Mekanik Tahrikli Yay Geri Dönüşlü Valf
  • Pnömatik Basınç Kaynağı
  • Pnömatik Silindir
  • And Valve
  • Or Valve

Çalışmalarımı zaman zaman burada paylaşacağım.  Şimdilik İyi Çalışmalar.

Burak Gökberk ÖZÇİÇEK

Matlab Polynomial Curve Fitting

yaprak1

Öncelikle Merhabalar,

Matlab ile curve fitting uygulaması yaparken çok kullanışlı bir uygulamayı farkettim. Normalde scipy paketlerinde fonksiyon ile oluşturduğum grafikler, bir GUI yardımı ile matlab’da kolayca gerçekleştirebiliyor. Örnek olarak yukarıdaki çiçeğin yaprağından aldığım dataları kullandım. Ölçümleri ilkel yöntemlerle yapmama rağmen sonuçlar gayet başarılı. Curve Fitting uygulamasından bir görüntü.

cf

 

Kullandığım örnek datalara aşağıdan ulaşabilirsiniz.

5 7
10 12
15 16
20 20
25 25,5
30 29,5
35 33,5
40 36
45 39,5
50 41
55 43,5
60 45
65 47
70 49
75 50
80 50,5
85 51,5
90 53
95 53,5
100 54,5
105 55
110 55
115 55
120 55
125 55,5
130 55,5
135 55,5
140 55
145 54,6
150 54,5
155 54,3
160 54,2
165 53
170 53
175 52
180 51
185 50
190 49
195 48
200 47
205 46
210 45
215 44
220 43
225 41
230 40
235 39
240 38
245 35
250 33
255 31
260 29
265 27
270 25
275 21
280 18
285 16
290 13
295 10

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Bilgisayar Konrrollü Gripper Projesi

11227623_758762320888003_3431641035943724799_n

Öncelikle Merhabalar,

Hızlı prototipleme dersi kapsamında, arkadaşım Sercan Aksoy ile beraber tasarladığımız bir gripper projesini sizlere tanıtmak istiyorum. Gövde solidworks ile tasarlandı. Servo motor kontrolü için PIC16F628A kullanıldı. Bilgisayar arayüzü ise c# ile tasarlandı. Gövdeyi üniversite bünyesinde bulunan 3d yazıcı ile yaptık. Gripper çalışma videosunu aşağıdan izleyebilirsiniz.

İyi Çalışmalar,

Burak Gökberk ÖZÇİÇEK

Matlab Dersleri

Apps-Matlab-icon

Öncelikle Merhabalar,

Uzun süredir çekmeyi planladığım matlab eğitimi serisine sonunda başladım. İlk videolar matlab yazım kurallarını kavrama adına olacak. İlerlerleyen dersler ile beraber sayısal analiz yöntemlerinin matlab ile nasıl uygulandığına değineceğim. Oynatma listesine aşağıdaki bağlantıdan ulaşabilirsiniz.

https://www.youtube.com/playlist?list=PLpL_oneFRLDuVRpHFA6xcT8mttXzwDR7f

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Matlab’a Geçiş

Apps-Matlab-icon

 

Öncelikle Merhabalar,

Sayısal yöntemler ile ilgili çalışmalarımı, uzun süredir Scipy ile gerçekleştiriyordum. Simulink’e olan merakım ve piyasanın Scipy paketlerinden bir haber olması sebebiyle çalışmalarıma artık matlab ile devam edeceğim. Yaklaşık 1 haftadır syntax ile ilgili örnekler yapıyorum. Başlangıç için oldukça keyifli bir deneyim oldu. Matlab’ın sevdiğim en önemli yanı ise dökümantasyon noktasında çok zengin olması. Mathworks dökümantasyon işini oldukça önemsiyor. Kullanım kitleside geniş oldugu için soru cevap sitelerinde aradıgınız sonuçlara ulaşmak oldukça kolay. En büyük dökümantasyon kaynağı ise aşağıdaki bağlantıda;

http://www.mathworks.com/help/pdf_doc/

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

 

 

Python Curve Fitting-Eğri Uydurma

curve_fitting_python

Eğri uydurma, kısaca deneysel çalışmalardan elden edilen verileri sağlayan veya yakınsayan başka bir fonksiyon oluşturma işlemidir. Örnek bir problem ile sanırım konu daha detaylı anlaşılacaktır.

Şekildeki dik tankın boşalma süresini hesaplamak için analitik yöntemler mevcuttur. Fakat bu problem için analitik çözüm metodunun hiç keşfedilmediğini yada çözümü uygulamaya çalışan kişinin analitik çözüm metodunu bilmediğini varsayalım.

 

Kabuller

  • Tank newtonian bir sıvı ile doludur.
  • Tank içerisindeki sıvının maksimum yüksekliği 7.3 metredir. 0.1 metre aralıklarla saniye cinsinden verilerin elimizde olduğu varsayılmıştır.

Amaç

  • Belirtilen tank için, eğri uydurma yöntemi ile bir denklem elde etmek. Analitik çözüm ile uydurulan çözüm arasındaki farkı incelemek.

Problemin Analitik Çözümü

Eğri uydurmak için kullanacağımız datalar, analitik çözümden elde edilecektir. Problemin analitik çözümü ise şu şekildedir;

akis_denklem

A= Tankın kesit alanı (m2)

t= boşalma zamanı (sn)

A0= çıkış deliğinin kesit alanı (m2)

C0= Orifis katsayısı (Bu tip orifislerde katsayı 0.6 alınır)

g= yerçekimi ivmesi (9.8 m/sn2)

h1= Sıvının ilk seviyesi (m)

h2=  Sıvının son seviyesi (m)

Bu analitik metodu kullanarak, Python programlama dili yardımı ile deneysel veriler elde edelim. Deneysel verileri elde etmek  için python ile bir f(x) fonksiyonu tanımlanmıştır. 7.3m değeri 0.1m aralıklarla azaltılarak fonksiyonda yerine konulmuştur. Örnek Python kodu aşağıdan incelenebilir.

Program neticesinde elde edeceğimiz datalar aşağıdaki gibi olacaktır.

akis_datalari

 

Eğri uydurmak için polyfit fonksiyonundan faydalanacağız. Bunun için bir önceki kodumuza bazı ilaveler yapıyoruz.

Uydurulan eğrinin C katsayıları:

C1 3.80512431e-01
C2 -9.29588114e+00
C3 8.91892240e+01
C4 -4.27811877e+02
C5 1.10103597e+03
C6 -1.85420269e+03
C7 3.15319253e+03

Uydurulan eğrinin grafiği:

curve_fitting_graphics

Elde ettiğimiz polinom için cf(x) adında bir python fonksiyonu oluşturalım.

Şimdi elimizde 2 adet fonksiyon mevcut. Doğruluklarını ölçmek için uygulamanın tam kodu aşağıdaki gibi olacaktır. Bu kod karşılaştırma işlemini gerçekleştirmekte, C katsayılarını yazdırmakta ve aynı zamanda grafiği çizmektedir.
Uygulamanın Tam Python Kodu

Analitik Çözüm ve Uydurulan Çözümün Karşılaştırılması

H         f(x)                  cf(x)                Hata Payı

7.3        0.0                   17.5498           17.5498

7.2        22.6706           25.8027           3.1321

7.1        45.4992           38.9286           6.5706

7.0        68.4891           56.0122           12.4769

6.9        91.6438           76.2511           15.3927

6.8        114.967           98.9471           16.0199

6.7        138.4622         123.4987         14.9635

6.6        162.1335         149.3932         12.7403

6.5        185.9848         176.1997         9.7851

6.4        210.0203         203.5618         6.4585

6.3        234.2443         231.1908         3.0535

6.2        258.6613         258.8592         0.1979

6.1        283.2761         286.3946         3.1185

6.0        308.0934         313.6736         5.5802

5.9        333.1184         340.6162         7.4978

5.8        358.3565         367.1802         8.8237

5.7        383.813           393.3562         9.5432

5.6        409.4939         419.1629         9.669

5.5        435.405           444.6421         9.2371

5.4        461.5529         469.8546         8.3017

5.3        487.944           494.8762         6.9322

5.2        514.5852         519.7938         5.2086

5.1        541.4839         544.7021         3.2182

5.0        568.6476         569.7              1.0524

4.9        596.0843         594.8881         1.1962

4.8        623.8025         620.3656         3.4369

4.7        651.8109         646.2282         5.5827

4.6        680.1189         672.5658         7.5531

4.5        708.7363         699.4609         9.2754

4.4        737.6735         726.9865         10.687

4.3        766.9414         755.2054         11.736

4.2        796.5516         784.1685         12.3831

4.1        826.5166         813.9148         12.6018

4.0        856.8492         844.4704         12.3788

3.9        887.5634         875.8482         11.7152

3.8        918.674           908.0485         10.6255

3.7        950.1967         941.0586         9.1381

3.6        982.1483         974.8542         7.2941

3.5        1014.5469       1009.3997       5.1472

3.4        1047.4117       1044.6494       2.7623

3.3        1080.7635       1080.5494       0.2141

3.2        1114.6246       1117.0387       2.4141

3.1        1149.019         1154.0516       5.0326

3.0        1183.9727       1191.5198       7.5471

2.9        1219.5141       1229.3748       9.8607

2.8        1255.6737       1267.5509       11.8772

2.7        1292.485         1305.9884       13.5034

2.6        1329.9845       1344.6363       14.6518

2.5        1368.2124       1383.4568       15.2444

2.4        1407.2128       1422.4286       15.2158

2.3        1447.0345       1461.5513       14.5168

2.2        1487.7317       1500.8495       13.1178

2.1        1529.3649       1540.3782       11.0133

2.0        1572.0017       1580.2272       8.2255

1.9        1615.7184       1620.5264       4.808

1.8        1660.6016       1661.4518       0.8502

1.7        1706.7497       1703.2308       3.5189

1.6        1754.2764       1746.1484       8.128

1.5        1803.313         1790.554         12.759

1.4        1854.0132       1836.8672       17.146

1.3        1906.5589       1885.5857       20.9732

1.2        1961.1675       1937.2916       23.8759

1.1        2018.103         1992.6594       25.4436

1.0        2077.6909       2052.4636       25.2273

0.9        2140.3404       2117.5865       22.7539

0.8        2206.5785       2189.0268       17.5517

0.7        2277.1031       2267.9079       9.1952

0.6        2352.8726       2355.4868       2.6142

0.5        2435.2671       2453.1635       17.8964

0.4        2526.4045       2562.4898       36.0853

0.3        2629.85           2685.1792       55.3292

0.2        2752.5555       2823.1173       70.5618

0.1        2912.4685       2978.371         65.9025

0.0        3298.5324       3153.2             145.3324

Hata payları saniye cinsindendir. Uygulamada kullandığımız datalar analitik çözümden türetildiği için oluşturulan denklem sınırlı bir çözümdür. Yinede eğri uydurmayı kavramak için yeterli bir örnek olduğunu düşünüyorum.

PolyFit() Fonksiyonunun Algoritma Çözümlemesi

Yaptığımız uygulamalarda, uydurulan eğrinin denklemi numerik analizler için oluşturulan NumPy sınıfı ile gerçekleştiriliyordu. NumPy sınıfı içerisindeki PolyFit() fonksiyonu ile [x,y] ikililerine eğri uydurulabiliyor. Bu başlık altında PolyFit() fonksiyonunun nasıl işlem yaptığını görmek adına fonksiyonu numerik olarak çözümleyeceğiz.

Örnek Soru:

X 0 0,25 0,5 0,75 1
Y 1 1,284 1,6487 2,117 2,7183

 

Verilen X ve Y datalarını kullanarak 2.dereceden bir fonksiyon öneriniz.

Çözüm

Bu dataları kullanarak 2.dereceden bir fonksiyon önermek için 3X3 bir matris oluşturulmalıdır. Şimdi problemi çözümleyen, kendimize ait bir polinomsal eğri uydurma fonksiyonu yazalım.

Geliştirilen Yeni Fonksiyonun Çözümleri

[0.84365714285713367, 0.8641828571428658, 1.0051371428571414]

Varsayılan PolyFit Fonksiyonunun çözümleri

[ 0.84365714 0.86418286 1.00513714]

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Not:Uygulamanın tüm kodlarını içeren kısımda açıklama satırlar // ile ifade edilmiştir. Bu yazıyı normalde Word ile hazırladığım için PHP’den gelen bir alışkanlık ile açıklama satırı // işareti ile başlatılmıştır. Kodu çalıştırmadan önce // yerine # işaretini yerleştirmenizi tavsiye ederim :)

Python-Secant Metodu

Öncelikle Merhabalar,

Secant metodunu daha önceki yazımda PHP ile uygulamıştım. Bu yazıda da Python ile secant algoritmasını çözümleyeceğiz.

secant

 

Secant metodunda iki adet başlangıç değerine ihtiyaç duyulur. Bir örnek ile secant metodunu uygulayalım.

Resim1

Yüksekliği h, boru çapı D ve kuleye bağlı düşey aşağıya doğru akan ve sonrasında yatay olarak arzu edilen dağıtım noktasına ulaştırılan L uzunluğundaki boru içerisinden su geçmektedir. Bu sistemde akış debisi olan Q için aşağıdaki denklem verilmektedir. Secant yöntemini kullanarak köklerini bulunuz. (X0=5,X1=1)

secant-ornek

Python Kodu

 

Sonuçlar

secant-ornek2

Kontrolü ile |Xn-Xp| arasındaki fark 0.0’a eşit ise döngüyü durdurmuş olduk.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Python ile Newton Raphson Metodu

newton_raphson_method_with_python_1

Öncelikle Merhabalar,

Sayısal analiz ile denklemlerin çözümlenmesinde artık Python kullanıyorum. Daha önceki yazılarımda Python’un Scientific Programming(Bilimsel Programlama) için ne kadar uygun olduğuna zaman zaman değinmiştim. Bu yazımda Newton Raphson metodunun python ile nasıl uygulanacağına değineceğim. (daha&helliip;)

Python İle Basit İterasyon Metodu

figure_1

Bu kategori altında yayınladığım yazılarımı genellikle PHP ve C# ile gerçekleştiriyordum. Fakat Python ve Scipy paketleri beni oldukça etkiliyordu. Şu aralar python syntax ile uğraşıyordum. Basit bir iterasyon işlemi gerçekleştirebilecek kadar döngüleri kullanmayı, dizileri, fonksiyon tanımlamayı öğrendim. İlk örneğim ise aşağıdaki gibidir. (daha&helliip;)

Regula Falsi Metodunun PHP ile Uygulanması

Bazı literatürlerde sabit kesen metodu olarakta adlandırılır. Bisection ve secant metodunun birleştirildiği bir metottur. Regula Falsi yöntemi, PHP ile şu şekilde uygulanabilir.

regula_falsi() fonksiyonu içerisinde f() adında bir fonksiyon kullanıyorum. Bu fonksiyon içerisinde problemimi, matematiksel olarak ifade ediyorum.

Çözüm aralığını [2,3] kabul ederek, çözümü gerçekleştirdim.

regula_falsi

Denklemi için sonuçlar şu şekildedir;

2.7356352845967
2.7460718104393
2.7472082413726
2.7473315411888
2.7473449136504
2.7473463638967
2.7473465211756
2.7473465382324
2.7473465400822
2.7473465402828
2.7473465403046
2.7473465403069
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072
2.7473465403072

B-PLOT ile çizilmiş grafiği ise şu şekildedir;

regula_falsi-grafik

 

İterasyon değerlerinin sona doğru tekrar ettiğini görebilirim. O halde denklemimi sıfıra eşitleyen kök 2.7473465403072 değeridir.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

 

Secant Metodunun PHP ile Uygulanması

Secant metodu, aslında Newton Raphson Metodu ile hemen hemen aynıdır. Newton Raphson metodunda Türev analitik olarak hesaplanmaktadır. Secant metodunda ise Türev sayısal olarak hesaplanmaktadır. İki metodu birbirinden ayıran fark budur.

PHP ile sayısal analiz çözümlemesi yapmak bir çok kişiye tuhaf gelebilir. Fakat özünde iterasyon işlemi yapabilen herhangi bir dil veya  program ile sayısal analiz çözümlemesi gerçekleştirilebilir. Genelde bu tür işlemleri C# ile gerçekleştiriyordum. Taki Python ve Scipy ikilisini keşfedene dek. Şuanda python syntax üzerinde çalışmalarım devam ediyor. Yaza doğru ilk çözümlemeleri de blogumda paylaşmayı düşünüyorum. Şimdilik daha etkin kullanabildiğim PHP ile idare edeceğim. Sonuçların grafiklerini ise C# ile geliştirdiğim basit grafik uygulaması ile çizdireceğim.

PHP bir web programlama dili olması sebebiyle sayısal analiz yöntemleri için hazırlanmış sınıfları bulmak hayli güç. Bu sebeple ihtiyaçlarım doğrultusunda fonksiyonları kendim oluşturuyorum. Secant Metodu için geliştirdiğim fonksiyon şu şekilde;

Aşağıdaki denklem için secant metodunun nasıl uygulandığını inceleyelim.

denklem-secant

Denklemi yazmak için equation adında bir fonksiyon oluşturdum. Ayrıca e üzeri …. gibi ifadeler için e_pow adında yeni bir fonksiyon tanımlıyorum.

Gerekli fonksiyonları tanımladığımıza göre for döngüsü ile çözüm işlemini gerçekleştirebilirim. Başlangıç değeri olarak $x0 ve $x1 adında iki değişken tanımlıyorum.

50 iterasyon için sonuçlar aşağıdaki gibidir. İterasyon sayısı $i<=50 kısmından değiştirilebilir.

0.61269983678028
0.57218141209051
0.56770321423578
0.56720555263302
0.5671502142405
0.5671440603751
0.56714337603392
0.56714329993163
0.56714329146866
0.56714329052754
0.56714329042288
0.56714329041124
0.56714329040995
0.5671432904098
0.56714329040979
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978
0.56714329040978

Sonuçlar üzerinden çıkarım yapmak 50 adımlı bir iterasyon için kolay olabilir. Fakat iterasyon sayısı arttıkça tekrarı görmek zorlaşacaktır. Bunun için grafiklerden faydalanmak daha sağlıklı bir yöntem olacaktır. Üst satırlarda bahsettiğim B-PLOT, bu noktada büyük bir kolaylık sağlayacak. B-PLOT txt dosyaları içerisinden veri okuyup grafik çizdirme işlemi yapabiliyor. Şuanda çok ilkel bir yapıda olsada iş görecek düzeyde. İlerleyen çalışmalarda daha stabil bir hal alacaktır.

b-plot-secant-metodu

Resimdeki grafikten, iterasyonun son adımlarına doğru tekrarın başladığını görebiliyorum. 0.56714329040978 değeri denklemde yerine konulduğunda sonuç sıfıra yakınsamaktadır.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Makine mühendisleri için faydalı bir site

fdengizek

Öncelikle Merhabalar,

Bu yazıda, uzun süredir takip ettiğim muhendislikbilgileri.com  hakkında bilgi vermeye çalışacağım. Site, saygıdeğer büyüğüm M. Feridun DENGİZEK tarafından düzenlenmekte. Feridun Hocam, diğerlerinden farklı. Mühendisleri, alaylı ve mektepli diye ayıracak olsak, o hem mektepli hem alaylı. Sektörde devirdiği uzun yılların ardından edindiği bilgi ve tecrübelerini web sayfasında paylaşmakta.

Mühendislik Bilgileri’ni ilk ziyaret ettiğim de çok şaşırmıştım. Eğitim hayatım boyunca, bir sürü kitap karıştırıp bulamadığım bilgilerin, Feridun Hocamın sitesinde bir arada görmek  beni epey heycanlandırmıştı. Özellikle sektöre yeni atılan veya atılacak olan mühendisler için bir başucu kitabı niteliğinde. Bu sebeple Mühendislik Bilgilerini kendi web sayfamda tanıtmak istedim. Umarım Feridun Hocamın bu girişimi, sektördeki diğer tecrübeli mühendislere de örnek olur ve benzer sitelerin sayısı gün geçtikçe artar.

İyi Çalışmalar.

Burak Gökberk ÖZÇİÇEK

 

NX’ten Solidworks’e Geçiş

siemens-nx

Öncelikle merhabalar,

Uzun bir aradan sonra CAD programları ile çalışmaya tekrardan başladım. Daha profesyonel bir ürün olması sebebiyle ilk tercihim Siemens NX’ten yanaydı. Çıkarımlarıma göre program, hayat kurtaran bir unsur ağacı düzenine sahip. Bu yönü beni cezbetmişti. Fakat NX, nacizane kölem Dell Inspiron N5110 üzerinde performansını tam gösteremiyor. Bunun aşırı ışınmadan kaynaklandığını düşünüyorum. Anakart üzerindeki yalama yapmış vidayı sökebilirsem, termal macunu değiştirmeyi planlıyorum. O zamana dek Solidworks 2012 ile devam edeceğim.

İyi Çalışmalar

Burak Gökberk ÖZÇİÇEK

Oto pilot Sistemi İçin Telemetri Yazılımı Geliştirmek

3

Öncelikle Merhabalar,

Arkadaşlarım Ahmet Yasin ve Hasan Esad ile beraber dahil olduğumuz bir BAP Projesinde, oto pilot sistemi geliştirmekteyiz. Bu projedeki görevim, araç ile iletişimi sağlayacak olan telemetri yazılımını geliştirmek. Yazılımı C# ile geliştiriyorum. GMAP.NET kütüphanesini kullanarak çok kaliteli sonuçlar elde edilebiliyor. İlk çıktılar ise görsellerde görüldüğü gibidir. Kütüphane içerisinde bir çok harita servisi bulunmakta. Bunlar arasında kolayca geçiş yapabiliyorsunuz. Yazılımın şimdiki kabiliyetlerini sıralayacak olursak; (daha&helliip;)

İlk Kitabım Yayınlandı

Öncelikle Merhabalar,
Uzun süredir çalışmalarını yürüttüğüm “WordPress Tema Programlama” ismindeki kitabım resmi olarak yayınlandı. Bu yazımda, kitap çalışmamın başlangıcı ve bitişi arasında yaşadıklarımı aktarmaya çalışacağım.İlk olarak yayın evi görüşmelerinden bahsetmek istiyorum. Aslında kitap fikri uzun süredir aklımı kurcalıyordu. Fakat bir türlü, vakit bulup işe koyulamıyordum. KODLAB ile ilk görüşmelerim olumlu sonuçlanmıştı. Fakat vakit olarak müsait olmadığım için daha ileri bir tarihe  ertelemek zorunda kaldım. Bu süre zarfında, görüşmeleri yürüttüğüm kişi işinden ayrılmıştı. Bu sebeple süreç tekrardan başladı. Görüşmeler neticesinde referanslarım uygun görüldü ve örnek bir bölüm yazmam istendi. Örnek bölüm istemelerinin amacı, anlatım kabiliyetinizi ölçmek. Bu aşamayı da tamamladıktan sonra, kitap sözleşmesi adresinize gönderiliyor. Okuyup imzaladıktan sonra süreç başlamış oluyor. (daha&helliip;)

Kategoriler

Yayınlarım