1 Şubat 2015 Pazar
İlginç Projeler
6 Nisan 2014 Pazar
Texas Instrument Programlanabilir Kol Saati İle Visual C#
Öncelikle saati internette görüp aşık olan elektroniçilerden birisi olarak aldıktan sonra yazılım konusunda ciddi sıkıntılar çektiğimi belirtmek isterim. Çünkü texas instrument şirketi kullanıcılarından daha çok yazılım konusunda para koparan bir şirket olduğu için sunduğu derleyicilerden ciddi miktarda para istiyor. İnternette texas instument’ın sunduğu crack li derleyiciyi bulup kullanabilmek cehennem azabından farksız bir şey. Dahası yazdığınız programı chip’e gömmeniz için bir de programlayıcısına ihtiyacınız olacak ki bunu da korsan bulamıyorsunuz. Bulsanız da bir dünya sorun çıkartıyor.
Neyse bu kadar sitem ettikten sonra saati biraz tanıtayım size. Ez 430 Chronos isimli bu kol saati, Texas Insturument şirketinin elektronikçilere ve programcılara sunduğu gayet kullanışlı bir kol saati aslında. Saat üzerinde 3 eksen ivme ölçer, sıcaklık sensörü, basınç sensörü, ve saatin pil durumunu gösteren sensörler mevcut. Texas Instruments’ın bu saat için geliştirdiği arayüz programı ile bu özellikler hızlıca kullanılabiliyor ve bilgisayar ekranında görüntülenebiliyor. Saatin diğer bir özelliği ise bilgisayarın sistem saatini okuyup RF üzerinden tek tuşla saati ayarının yapılabilmesi. Saatin yanında hazır olarak gelen USB RF modülü ile saat ile bilgisayar arasında bağlantı kurabiliyorsunuz. Ayrıca saatin içerisindeki mikrodenetleyiciyi programlayabilmek için yine USB programlayıcısı da yanında veriliyor. RF USB yi bağladığınızda data alışverişini görebilmeniz için ayrıca hazır bir de arayüz programı var. Bu arayüz programı ile saat içerisindeki sensörleri bilgisayar üzerinden kalibre edebiliyor ve bilgilerini okuyabiliyorsunuz.
Saatin üzerinde Texas Instruments’ın CC430 olarak adlandırılan ve içerisinde hem MSP430 mikrodenetleyicisini hem de 1GHz’in altında RF Transceiver modülünü taşıyan bir yapı bulunuyor. Bu iki kısımın tek çip halinde birleşmiş modellerine TI, CC430 ismini veriyor. Ve saat üzerindeki CC430F16137 mikrodenetleyicisi bu ailenin en güçlü üyesi.
Saatin 433 Mhz, 868 Mhz ve 915 Mhz olmak üzere üç farklı modeli bulunuyor. Bu farklar fiyata yansımıyor fakat alırken yüksek frekanslarda haberleşme hızının daha hızlı olabileceğini de göz önünde bulundurmanız iyi olabilir.
Saati belki Texas İnsturument ‘in sunduğu kendi derleyicisi üzerinden programlanız sıkıntı olabilir ama avantajlı bir alternatif mevcut. Saat’in şirket tarafından sunulan Visual c# kütüphanesi mevcut. Bu kütüphane gerçekten gayet başarılı. Visual C# ile saatten gelen dataları okuyan bir arayüz programı yazmak ve buradan yine seri haberleşme ile bu bilgileri herhangi bir dizaynınıza aktarmak oldukça heyecan verici.
Saatin Visual c# kütüphanesini su linkten indirebilirsiniz;
http://sourceforge.net/projects/ez430chronosnet/files/
Yayınlanan bu dll kütüphanesini kullanarak saati visual C # üzerinden haberleştirmek oldukça kolaylaşacaktır.. Tabi bu dll dosyasını kullanabilmek için, projenize eklemeniz gerekiyor. Yazılıma da import etmeniz gerekecektir.
using eZ430ChronosNet; // eZ430 Kütüphanesi.
Bu koddan sonra artık kütüphanenin içerdiği fonksiyonları kullanabilirsiniz. Şimdi örnek bir kaç fonksiyon yazacağım;
saat=new eZ430ChronosNet.Chronos(); // eZ430 surumunu saat değişkenine aktardım.
saat.OpenComPort //RF Access Point in bağlı olduğu port u açmaya yarar.
saat.CloseComPort // RF Access Point in bağlı olduğu port u kapamaya yarar.
saat.GetComPortName // Bağlı bulunulan portun ismini string olarak okumamıza yarar.
saat.GetData // Saat ten gelen dataları okumamıza yarar.
saat.StartSimpiliciTI // Saat ile haberleşmede kullanılacak olan haberleşme protokolünü başlatmaya yarar.
Kolay gelsin…
Texas Instrument Programlanabilir Kol Saati İle Visual C#
31 Mart 2014 Pazartesi
Visual C# ile Arayüz Oluşturmak
Bilgisayarın portlarındaki data alışverişini kontrol eden programları arayüz programlar olarak tanımlayabiliriz Port, bir bilgisayarla dış aygıtlar arasındaki iletişimi sağlayan veri kanalıdır. Portlar, seri (COM) ve paralel (LPT) olmak üzere iki temel kısımda incelenir. SCSI,USB, PCMCIA gibi aynı anda birden fazla dış aygıtın bilgisayara bağlanabilmesine olanak tanıyan portlar da bulunmaktadır.
Bilgisayarın çevresel üniteleri kontrol edebilmesi için bu portların veri alışverişi bir ara program tarafından işlenmesi gerekir. Ve bu veri aktarımından sorumlu programlar vardır. Genellikle bu programlara cihazın driver’ı deniyor. Mesela aldığınız bir mausenin driver ını yüklemez iseniz mause den porta gelen bilgiler bilgisayar için anlamsız olacak ve tanımlanamayacaktır. Driver’ı yüklediğinizde mause den gelen dataları işleyen arayüz programını yüklemiş olursunuz böylelikle mause yi kullanabilirsiniz.
Bilgisayarın seri portları olan COM0,1,2,3,4,5,6,7… gibi portlarındaki dataları kontrol eden bir arayüz programı Visual C# üzerinden kolay bi şekilde yazılabilir. Pic mikrodenetleyicisi ile yaptığınız bir kart mevcut ise bu kartı hazır seri iletişim protokolleri ile bilgisayarla haberleştirebilirsiniz. Bunun için hazır olan RS232 data hattını ve protokolünü kullanmak en kolayı olacaktır.
Bu portlardaki data alışverişini kontrol eden hazır programlar da mevcuttur.”Hyper terminal”, “Putty” gibi programlar kullanacağınız portun çıkışlarındaki dataları görebilmenize olanak sağlar. Yani visual C# üzerinde yazdığınız bir programın hyper terminal ile düzgün çalışıp çalışmadığını görebilirsiniz.
Şimdi visual C# üzerinde basit bir uygulama yapalım. Yazacağımız program, bir kutuya yazacağımız text mesaj bilgilerini seri portlara göndersin. Bunun için Visual Studio yu açtıp
File>>new>>project ti seçelim ve açılan pencereden “Windows Forms Application” ‘ı ve “C#” ı seçip çalışma alanımızı açalım.
Bir windows penceresine resimdeki gibi tool köşesinden iki button ve bir tane rich box ekleyelim. Ve ayrıca bir de serialport ekliyoruz. Böylelikle serial port protokollerini hazır olarak kullanabiliyoruz. Serial portun üzerine tıkladığınızda sağ taraftaki “properties” özelliklerinden hangi portu kullanıma açacağınıza karar verebilir ve porunuzun ismini değiştirebilirsiniz. Ben COM1 portunu kullandım ve ismini serialport1 dedim. Yani default. Aynı şekilde butonların üzerine tıklayarak properties özelliklerinden isimlerini değiştirmeniz mümkün. Ben bir tanesini “gonder” diğerini de “port ac” olarak değiştiriyorum. Ve “Port Aç” butonunun içine şu kodları yazıyorum;
Biraz programlama bilgisi olan arkadaşlar kodlara bakınca ne anlama geldiğini kolaylıkla anlayacaktır. Program “Port aç” butonuna bastığımızda portu açacak ve rich box ımıza açıldı yazısı yazacaktır. İkinci program kodu olarak gönder butonuna çift tıklıyoruz ve içine şu kodu yazıyoruz;
Şimdi ise Hyper Terminal programını çalıştırarak COM2 portunu seçiyoruz. Çünkü Com1 portu Com2 portu ile eşlenmiştir. COM2 portundan gönderdiğiniz verileri kontrol etmeniz mümkün olacaktır. Ve sonuç olarak;
Gördüğünüz gibi yazdığımız mesajı hyper terminal programından COM2 terminalinde görüyoruz.
Visual C# ile Arayüz Oluşturmak
28 Mart 2014 Cuma
I²C İletişim Protokolü
Cihazların haberleşmesini sağlamak için geliştirilen çok farklı protokoller vardır. Mesela USB için geliştirilen protokol seri haberleşmede kullanılan en yeni ve en evrensel protokoldür. I²C protokolü, senkron seri haberleşmede geliştirilen ilk protokollerdendir. Protokol dediğimiz şey verilerin gönderilip alınırken kullanılan kurallar bütünüdür. I²C protokolü data transferini en azami hat sayısı ile gerçekleştirebilmek için geliştirilmiştir. Philips, bu protokolü kendi ürettiği cihazların haberleşmesinde kullandı. Fakat protokol gayet kullanışlı olunca bir çok gömülü sitemin içerisindeki veri transferi için de bu protokol kullanılmaya başlandı. Mesela MicroChip firmasının ürettiği Pic ailesi mikrodenetleyicilerin içindeki ram gibi birimlerin kendi arasında kullandığı protokolde I²C protokolüdür.
I²C protokolünü anlamak için senkron seri haberleşmeyi bilmek gerekiyor. Senkron seri haberleşmede iki hat vardır. Birincisi esas gönderilen data hattıdır. İkincisi ise senkron, yani belli bir sabit frekansa sahip kare dalga hattıdır. I²C iletişim protokolünde de bu durum aynıdır. Fakat isimleri farklıdır.
Şu yazıya göz atmanız daha yararlı olacak;
http://elektronikhobi.net/usb-ile-senkron-seri-haberlesme-protokoluuygulama/
Protokolde kullanılan iki hat vardır.
SDA-Seri Veri Giriş/Çıkış ucu
SCL-Senkron Sinyal Ucu
Protokolde Master Cihaz ve Slave Cihaz terimleri kullanılır. Master Cihaz haberleşme ağına bağlanan ve haberleşmeyi kontrol eden cihazdır. Senkron sinyalini bu cihaz üretir. Slave cihaz yada cihazlar ise sadece data alışverişi yaparlar. Her bir slave cihazın bir adresi bulunur. Çünkü gönderilen datalar sadece belli bir cihaz tarafından kabul edilmesi istenebilir.
Bu yüzden iletişimde genelde 8 ve ya 10 bitlik adresler kullanılır. İletişime başlamadan önce start biti gönderilir. Start biti gönderildikten sonra adres ve daha sonra ise transfer edilecek bilgi gönderilir.
Adres bilgisinin son biti R/W bitidir. Bu bit okuma/yazma bitidir. Logic-1 ise okuma yapılacağı logic-0 ise yazma işleminin yapılacağı anlama gelir. Master cihazdan bu bilgiler gittikten sonra slave elemandan bilginin alındığına dair ACK biti gönderilir. Aynı zamanda master cihaz da slave cihazdan aldığı her veri için slave cihaza bir ACK biti gönderir.
Master cihaz slave cihazdan veri okurken ise start şartından sonra master cihaz yine adre bilgisini ve okuma yapacağı bilgi bitini gönderir. Slave cihaz ise ACK bitinden sonra kaç bitlikse artık veri bitini gönderir. Master cihaz ise veriyi okuduktan sonra slave cihaza ACK biti gönderir.
I²C protokolünün en çok kullanıldığıuygulama alanı harici EEPROM uygulamalarıdır. Çünkü EEPROM dan veri alıp okumada en kullanışlı protokoldür. Bu yüzden PIC CCS C programlar I²C protokolünü hem donanımsal olarak hem de yazılımsal olarak destekler. Protokol için oluşturulmuş hazır kütüphaneler, ve fonksiyonlar mevcuttur.
I²C İletişim Protokolü
I²C İletişim Protokolü
Cihazların haberleşmesini sağlamak için geliştirilen çok farklı protokoller vardır. Mesela USB için geliştirilen protokol seri haberleşmede kullanılan en yeni ve en evrensel protokoldür. I²C protokolü, senkron seri haberleşmede geliştirilen ilk protokollerdendir. Protokol dediğimiz şey verilerin gönderilip alınırken kullanılan kurallar bütünüdür. I²C protokolü data transferini en azami hat sayısı ile gerçekleştirebilmek için geliştirilmiştir. Philips, bu protokolü kendi ürettiği cihazların haberleşmesinde kullandı. Fakat protokol gayet kullanışlı olunca bir çok gömülü sitemin içerisindeki veri transferi için de bu protokol kullanılmaya başlandı. Mesela MicroChip firmasının ürettiği Pic ailesi mikrodenetleyicilerin içindeki ram gibi birimlerin kendi arasında kullandığı protokolde I²C protokolüdür.
I²C protokolünü anlamak için senkron seri haberleşmeyi bilmek gerekiyor. Senkron seri haberleşmede iki hat vardır. Birincisi esas gönderilen data hattıdır. İkincisi ise senkron, yani belli bir sabit frekansa sahip kare dalga hattıdır. I²C iletişim protokolünde de bu durum aynıdır. Fakat isimleri farklıdır.
Şu yazıya göz atmanız daha yararlı olacak;
http://elektronikhobi.net/usb-ile-senkron-seri-haberlesme-protokoluuygulama/
Protokolde kullanılan iki hat vardır.
SDA-Seri Veri Giriş/Çıkış ucu
SCL-Senkron Sinyal Ucu
Protokolde Master Cihaz ve Slave Cihaz terimleri kullanılır. Master Cihaz haberleşme ağına bağlanan ve haberleşmeyi kontrol eden cihazdır. Senkron sinyalini bu cihaz üretir. Slave cihaz yada cihazlar ise sadece data alışverişi yaparlar. Her bir slave cihazın bir adresi bulunur. Çünkü gönderilen datalar sadece belli bir cihaz tarafından kabul edilmesi istenebilir.
Bu yüzden iletişimde genelde 8 ve ya 10 bitlik adresler kullanılır. İletişime başlamadan önce start biti gönderilir. Start biti gönderildikten sonra adres ve daha sonra ise transfer edilecek bilgi gönderilir.
Adres bilgisinin son biti R/W bitidir. Bu bit okuma/yazma bitidir. Logic-1 ise okuma yapılacağı logic-0 ise yazma işleminin yapılacağı anlama gelir. Master cihazdan bu bilgiler gittikten sonra slave elemandan bilginin alındığına dair ACK biti gönderilir. Aynı zamanda master cihaz da slave cihazdan aldığı her veri için slave cihaza bir ACK biti gönderir.
Master cihaz slave cihazdan veri okurken ise start şartından sonra master cihaz yine adre bilgisini ve okuma yapacağı bilgi bitini gönderir. Slave cihaz ise ACK bitinden sonra kaç bitlikse artık veri bitini gönderir. Master cihaz ise veriyi okuduktan sonra slave cihaza ACK biti gönderir.
I²C protokolünün en çok kullanıldığıuygulama alanı harici EEPROM uygulamalarıdır. Çünkü EEPROM dan veri alıp okumada en kullanışlı protokoldür. Bu yüzden PIC CCS C programlar I²C protokolünü hem donanımsal olarak hem de yazılımsal olarak destekler. Protokol için oluşturulmuş hazır kütüphaneler, ve fonksiyonlar mevcuttur.
I²C İletişim Protokolü
26 Mart 2014 Çarşamba
Zamanlayıcı Devreler ve Çalışma Mantıkları
Transistörlerin ani olarak doyuma ve kesime gittiği zamanlayıcı devrelerine shmitt trigger tipi zamanlayıcı deniyor. Bu tip devreler dijital, analog elektronikte bol miktarda kullanılır. Çoğunlukla transistorlerin doyuma ve kesime uğramasının sağlanmasında kapasitorlerin dolup boşalma özelliği kullanılır.
Kapasitorlerin voltaj denklemine göz atacak olursak;
Formüldeki e^-t/tou ifadesi capasitorun dolup boşalma süresi ile alakalıdır. Çoğu kitapta kapasitörlerın 5*tou süresinde dolduğu referans alınır. Tou=R*C yani direnç*kapasitansc olduğunu hesaba katarsak herhangi bir RC devresinde kapasitörümüzün dolup boşalma süresini direnç ve kapasitans değeri ile değiştirmemiz mümkün olacaktır.
Bu durumda basit olarak şöyle bir zamanlayıcı devre kurduğumuzu düşünürsek;
Böyle bir devrenin nasıl çalıştığını anlayabilmek için devrenin t=0 ve t=sonsuz zamanlarındaki devre durumlarını düşünmemiz gerekiyor.
t=0 anında yani butona bastığımız ilk anda kapasitörümüz kısa devre gibi davranacak ve voltajın direk toprağa akmasına sebep olacaktır. Böyle bir durumda transistör kapalı olur. Yani ledimiz yanmaz. Fakat çok kısa bir süre sonra kapasitor 1-2 volt civarında bir değere ulaştığında transistörün base-emmiter bacakları arasına 07V ya da daha yüksek bir voltaj değeri düşecek ve bu voltaj transistörün açılmasına sebep olacaktır. Bu durumda ise led yanar.
t= sonsuz anında yani butona basılı olarak epey bir süre tuttuğumuzda kapasitör tamamen dolup açık devre gibi davranacaktır. Bu durumda bütün akım transistörün bas bacağından akar ve transistör açıktır. Yani ledimiz halen yanar.
Butondan elimizi çektiğimizde kapasitörde biriken voltaj, transistör üzerinden 5*R*C süresi boyunca deşarj olmaya başlar. Yani normal şartlar altında 5*100uf*10kohm= 5sn boyunca kapasitördeki tüm voltaj boşalacaktır. Ancak transistörün tetikleme voltajının 0.7 volt olmasından dolayı kapasitör transistörün tetikleme voltajına kadar boşalır. Bu durumda transistör, kapasitör voltajı ile bir süre açık kalacak, yavaş yavaş kapanmaya başlayacak böylelikle led de yavaş yavaş sönmeye başlayacaktır. Ledin sönme süresini direnç ve kapasitans değerlerini değiştirerek ayarlamamız mümkün olacaktır.
İkinci aşama olarak şöyle bir devreyi göz önüne alalım;
Böyle bir devrede yine t=0 anını düşünün. İki kapasitör de kısa devre gibi davranacaktır. Teorik olarak başlangıçta transistörlerin ikisi de açıktır. Ve kapasitörlerin ikisi de dolar. Fakat pratikte bu durum belli bir süre sonra bozulur. Transistörlerin ve kapasitörlerin bazı çok düşük töleranstaki tetikleme parametrelerinden dolayı herhangi biri açık diğeri kapalı konuma geçer.
Mesela Q1 transistörünün açık duruma geçtiğini düşünelim. Bu durumdan Q1 transistörünün base tetikleme voltajı, C2 kapasitörünün deşarj olması ile sağlanır. Ve C1 kapasitörü R1 üzerinden şarj olmaya başlar.
C1 kapasitörü 0.7 volt’a ulaştığında Q2 transistörünü aktive eder ve aynı zamanda Q1 transistörünün kollektır ve base voltajı düşmüştür. Bu durumda akım Q2 transistörü üzerindeki yolu kullanacaktır.
Bu durum tekrarlanıp durur. Böylece ledlerin biri yanarken diğeri söner. Ledlerin yanıp sönme sürelerini hesaplamak için yazının başında verdiğim denklem kullanılabilir. Yani akımın aktığı yol üzerindeki devre elemanlarının kapasitans ve direnç değerleri hesaba katılarak bu yanıp sönme süreleri ayarlanabilir.
Bu devreler elektronikte zamanda osilatör kaynaklarında ve sinyal üreteçlerinde kullanılırlar. Ayrıca zamanlama içerikli uygulamalarda bol miktarda kullanılabilirler.
Zamanlayıcı Devreler ve Çalışma Mantıkları