7 Nisan 2013 Pazar

7 kanallı Vumetre - pixel ledlerle

daha önceki pixel led ekranıma vumetre entegre ettim.
7 kanal çıkışı vereb MSGEQ7 entegresini kullandım.

30 Temmuz 2012 Pazartesi

Pixel led ekranı

hazır alınmış pixel ledlerden ekran yaptım. 4 kablo ile bağlı pixeller birbirine.
2'si güç 2'si data ve clock sinyali
kendi devrem ve bilgisayar programım ile kontrol ettim.
pixellerde ucs5903 entegresi kullanılmış; rgb pwm çözünürlüğü 5bit.
5V güç kaynağı ile enerjileniyor.



19 Temmuz 2012 Perşembe

40 kanallı animasyon devresi

40 kanallı led animasyon devresi. 13 tane rgb led için tasarlandı



2 Temmuz 2012 Pazartesi

3 boyutlu yazıcı

arkadaşlarla 3 boyutlu yazıcı aldık.
yazıcı ve ürettiğim bazı parçalar


15 Haziran 2012 Cuma

c# - SQL (MySQL, MSSQL, MS Access) kodbank

using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.Odbc;

 public DataTable dt = new DataTable();
//MS Access bağlantı metni ---------------------------------
//string conn_str = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" +
//    Path.Combine(HostingEnvironment.ApplicationPhysicalPath, @"veritabani.mdb");
//-----------------------------------------------------
//MS SQL bağlantı metni
//public string conn_str = "Server=BS_ismi\\SQLEXPRESS;Database=isim;Trusted_Connection=True";
//public string conn_str = "Server=11.11.11.11;Initial Catalog=vt_isim; User Id=isim;Password=sifre";
//-----------------------------------------------------
//MySQL bağlantı metni
//public string conn_str = "Driver={MySQL ODBC 5.1 Driver};Server=11.11.11.11;Database=vt_isim;User=user;Password=sifre;Option=3";
// public string conn_str = "Driver={MySQL ODBC 5.1 Driver};Server=127.0.0.1;Database=vt_isim; User=username;Option=3";
   
    public OdbcCommand command = new OdbcCommand(); //MS Access veya MySQL için
    public OdbcConnection conn = new OdbcConnection();      //MS Access veya MySQL için
    //public SqlConnection conn = new SqlConnection();      //MSSQL için
    //public SqlCommand command = new SqlCommand();  //MSSQL için

// SELECT TABLO & SÜTUN İFADELERİ (SEÇME OKUMA)
 public DataTable sel(string DB, string columns, string opt)
    {
        string komut_s = "Select " + columns + " from " + DB + " " + opt;
        DataTable dat = new DataTable();
        try
        {
            conn.ConnectionString = conn_str;
            conn.Open();
            //SqlDataAdapter adapter = new SqlDataAdapter(komut_s, conn);
            OdbcDataAdapter adapter = new OdbcDataAdapter(komut_s, conn);
            adapter.Fill(dat);
            conn.Close();
            //lbl_error.Text = "";
        }
        catch (Exception ex)
        {
            //lbl_error.Text = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return dat;
    }

// INSERT İFADESİ  (YENİ VERİ)
public bool ins(string DB, string props, string vals)
    {
        bool result = false;
        string komut_s = "Insert into " + DB + " (" + props + ") values (" + vals + ")";
        try
        {
            conn.ConnectionString = conn_str;
            conn.Open();
            command = conn.CreateCommand();
            command.CommandText = komut_s;
            command.ExecuteNonQuery();
            conn.Close();
            result = true;
            //lbl_error.Text = "";
        }
        catch (Exception ex)
        {
            //lbl_error.Text = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return result;
    }


// UPDATE İFADESİ  (GÜNCELLEME)
    public bool upd(string DB, string vals, string condition)
    {
        bool result = false;
        string komut_s = "Update " + DB + " set " + vals + " where " + condition;
        try
        {
            conn.ConnectionString = conn_str;
            conn.Open();
            command = conn.CreateCommand();
            command.CommandText = komut_s;
            command.ExecuteNonQuery();
            conn.Close();
            result = true;
            //lbl_error.Text = "";
        }
        catch (Exception ex)
        {
            //lbl_error.Text = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return result;
    }
//DELETE TABLODAN SIRA SİLME İFADESİ
    public bool del(string DB, string condition)
    {
        bool result = false;
        string komut_s = "Delete from " + DB + " where " + condition;
        try
        {
            conn.ConnectionString = conn_str;
            conn.Open();
            command = conn.CreateCommand();
            command.CommandText = komut_s;
            command.ExecuteNonQuery();
            conn.Close();
            //lbl_error.Text = "";
            result = true;
        }
        catch (Exception ex)
        {
            //lbl_error.Text = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return result;
    }


// İSTENEN BİR KOMUTU UYGULAMA
    public string command_exec(string komut)
    {
        string result = "false";
        string komut_s = komut;
        try
        {
            conn.ConnectionString = conn_str;
            conn.Open();
            command = conn.CreateCommand();
            command.CommandText = komut_s;
            command.ExecuteNonQuery();
            conn.Close();
            //lbl_error.Text = "";
            result = "true";
        }
        catch (Exception ex)
        {
            result = ex.ToString();
            //lbl_error.Text = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return result;
    }
//SELECT SCHEMA TABLOLAR İLE İLGİLİ BİLGİ OKUMA vb.
    public DataTable sel2(string komut)
    {
        string komut_s = komut;
        DataTable dat = new DataTable();
        try
        {
            conn.ConnectionString = conn_str;
            conn.Open();
            //SqlDataAdapter adapter = new SqlDataAdapter(komut_s, conn);
            OdbcDataAdapter adapter = new OdbcDataAdapter(komut_s, conn);
            adapter.Fill(dat);
            conn.Close();
            //lbl_error.Text = "";
        }
        catch (Exception ex)
        {
            //lbl_error.Text = ex.ToString();
        }
        finally
        {
            conn.Close();
        }
        return dat;
    }

6 Haziran 2012 Çarşamba

Basit Arama Motoru Yapımı

Bir web sitesi işi için arama motoru istemişlerdi. Kendim arama motoru yapmayı denedim ve güzel bilgilendirici bir çalışma oldu.

Bir tane alan adını (domain) kapsayacaktı.
Windows uygulaması olarak tarayıcı ve endekleyici(crawler-indexer) yaptım.
2 temel veretabanı tablosu oluyurdu: "Sayfalar" tablosu alan adı altındaki tüm sayfaları saklıyordu.
"Kelime" tablosu anahtar kelime(keyword) tablosu idi. Anahtar kelimenin hangi sayfada kaç kere bulunduğu tablo idi.

Program sitenin ana sayfasından taramaya başlıyordu.
Sayfadaki bağlantı(link) etiketlerini ( <a href=" ...   ,  <iframe src=".... ) bulup bunu elemeden sonra veritabanına atıyordu.
burada xml okuyucu sınıfı yazımı  (  bağlantı içerebilecek etiket başlangıçları tespiti ve içinin ilgili kısmını okuma)

 ve
bağlantı isimlerini düzeltme işlemi ( mesela href="../haberler/index.html" bağlantısını  http://www.abc.com/haberler/index.html hale getirmek)  vardı.

Alan adı dışına giden bağlantılar eleniyordu. Resim, doküman vb. web sayfası olmayan bağlantılar eleniyordu.
Elemeden geçen bağlantı eğer veritabanında daha önce eklenmemişse veritabanına ekleniyordu.

Sonra sırayla bulunan bağlantılara gidilip yukarıdaki işlem tekrarlanıyordu.
Dolayısıyla dallanan bir bağlantı ağacı oluşuyordu.
Bu noktada kırık bağlantılarda tespit ediliyordu.

"Sayfalar" veritabanı oluştuktan sonra, Sayfaları tek tek gezip içeriklerini okuma kısmı geliyordu.

Burada da yine xml sınıfı kodu ile ilgili etiketler tespit edilip metin kısmı okunuyordu.
Burada okunan metinler tek tek kelimelere ayrılıp, hepsi küçük harfle olacak şekile getiriliyordu.
Çok tekrar eden ve aranması beklenmeyen kelimeler eleniyordu. Örnek "ve, bu, şu, o ... vb." gibi kelimeler eleniyordu.
Bulunan kelimeler "Kelime" tablosuna sayfa ve adet(kaç kere sayfada bulunma) bilgisi ile ekleniyordu.

Bundan sonrası zaten arama motoru sayfası oluşturmak idi.
Aranan kelime "Kelime" tablosunda adet kısmı azalan olacak şekilde okunuyordu.

Çoklu kelime aramalarında ise kelimelerin hepsinin bulunduğu sayfalar ön sırada gösteriliyordu.
mesela aranan kelime "güzel resim" olsun. Diyelim ki A sayfasında "güzel" kelimesi 10 kere geçiyor. B sayfasında "güzel" ve "resim" kelimeleri 3 kere geçiyor. C sayfasında "resim" kelimesi 8 kere geçiyor.
İlk sırada B sayfası sonra A ve C sayfaları listeniyordu.

Sadece web sayfalarını taradım. Tabi ki doc, pdf lerde taranabilir. Aynı şekilde anahtar kelimesi tablosunda bu dosya türleri de eklenbilirdi.

26 Mayıs 2012 Cumartesi

Elektrik Kumanda Projesi Çizimi

Bu yazı bir elektrik projesinde nelerin olması gerektiği ile ilgilidir.

Genel Görünüm
Aşağıdaki resimde bir proje çizimi vardır.
numaralandırılmış öğeler:
1-Açıklamalar
Projenin gösterilen sistemin çalışması, çalışmaya alınması, bakımı, testleri ile ilgili açıklamaların yapıldığı yazılı bölüm.
2-Elektrik Kumanda Şeması
Düşük voltaj/akımlı mantık devresinin gösterildiği çizimler
3-Malzeme Listesi
Projede kullanılan malzemelerin listesi, adedi, standartı tavsiye edilen markasının olduğu liste
4-Pano Görünüşü
Kumanda Panosunun önden görünüşü. Pano tasarımı başlı başına bir iş olsa da burada genel bilgi verici kullanış açısından panonun nasıl olacağı gösterilir.
5-Genel Bağlantı Görünüşleri
Sistemin geometrik olarak nereye konumlanacağı detaylı veya detaysın bir şekilde gösterilir. Çekilecek kablolar şematik olarak gösterilir.
6-Kuvvet Şeması
Yüksek voltaj/akımlı elektrik bağlantılarının gösterildiği detaylandırıldığı yer
7-Antet
Projenin adı, ne zaman çizildiği, çizerinin, müşterinin bilgileri olduğu kısım.


Kumanda Şeması:
Proje 3 fazlı beslemesi olduğu varsayılmıştır. Kumanda devresini besleyecek güç kaynağı bulunmalıdır.
Bu kumanda devremizi beslyecektir.

Kumanda devremizdeki elemanlar genelde 24V ile çalışan elemanlardır. Bu eleman ile yüksek voltajlı/akımlı devre elemanlarını elektrik araçlarını kumanda ederiz. aslında bir nevi transistör gibi çalışır.
Kumanda devresinde genel olarak kullanılan elemanlar:


e1- Minyatür kesici. Kumnada devresi için sigorta elemanı
S1- Kumanda düğmesi. Start/stop düğmesi olarak kullanılabilir. Resimde çift yollu bir düğme vardır.
R1- Röle. Yüksek voltaj/akımlı elemanları açıp kapamak için kullanılır.
D1- Zaman Rölesi. Rölenin zaman gecikmeli olanı. Çekmede gecikmeli, bırakmada gecikmeli olabilir.
KA1- Sınır Anahtarı. Konum bilgisi almak için kullanılır.(ingilizcesi: limit switch)
H1- Lamba. Uyarı, bilgi amaçlı olarak kullanılan eleman. 

Kuuvet Şeması
Kuvvet şeması yüksek voltaj/akımlı elamanları kontrol edildiği kısımdır.
Aşağıda 3 fazlı asenkron motor kontrolü için kuvvet şeması vardır.


e01- Termik Manyetik Sigorta. Motor koruma sigortasıdır.
TH1- PTC Termistör Rölesi. Motor sargılarındaki PTC motor çok ısınırsa sinyal gönderir. Rölede kontaktör ile motora giden devreyi keser.
K3- PTC Termistör Rölesinin kontrol ettiği kontaktör.
K1- Motora yol veren, çalıştıran eleman. Bobinleri kumanda devresindeki ilgili röle tarafından kumanda edilir.
K2- Motoru ters yönde döndüren kontaktör.Bobinleri kumanda devresindeki ilgili röle tarafından kumanda edilir.
M1- 3 Fazlı Asenkron Motor.
PTC- Termistör. Sıcaklık algılayıcı.




Not:Buradaki bilgi çok genel bir bilgi olup her türlü proje çiziminde uygulanmayabilir.