Mikrodenetleyici Programlamaya Nereden Başlamalı?

Güncelleme 16/08/2024

Eğer bu konu hakkında internette araştırma yaptıysanız, yüzlerce sayfa tartışma, onlarca farklı fikirle karşılaşmışsınızdır. Genel kanı üç aşağı beş yukarı aynı olmakla birlikte bende yeni başlayanlara ışık tutması amacıyla bu konuda fikirlerimi sunmak istiyorum.

Öncelikle şunu ayırt edelim mikrodenetleyiciler (PIC,MCU), çoğunlukla mikroişlemciler (CPU) ile karıştırılır. Mikroişlemciler şuanda konumuz değil, biz mikrodenetleyicileri ele alacağız. Mikrodenetleyici yani PIC, peripheral interface controller, türkçesi çevresel arabirim denetleyicisi demektir. PIC tanımı aynı tüm kağıt mendillere selpak dememiz gibi, her zaman Microchip firmasının ürettiği mikrodenetleyiciler ile anılır. Fakat bu tanım tüm mikrodenetleyicileri kapsar. Çevresel arabirim denetleyicisi ile kastedilen şey, örneğin; ısı sensöründen sıcaklık bilgisi oku, bu değeri lcd ekrana yaz, ısı kullanıcının tuş takımından girdiği sıcaklık değerini geçerse ledi yak… gibi işlemlerdir. Burada görüldüğü gibi çevresel birimler sensör, tuş takımı, led, ekran gibi cihazlar, bunlara hükmeden ve denetleyende kullandığımız mikrodenetleyicidir. İçine yüklediğimiz yazılıma göre adım adım istenen tüm işlemleri gerçekleştirir.

Peki neden mikrodenetleyiciler? Bu tarz düşük sistem gereksinimi isteyen her bir iş için bilgisayar kullanılsaydı ne kadar maliyetli ve büyük olurdu değilmi? İşte tam bu noktada çözüm olarak mikrodenetleyici denen şey ortaya çıkıyor. Mikrodenetleyicilerde aynı bir bilgisayar gibi giriş ve çıkışlara, programın yazıldığı sabit bir hafızaya (rom,flash hafıza), geçici bilgilerin saklandığı ram’e, çeşitli iletişim protokollerine, matematiksel işlemlerin yapıldığı bir üniteye sahiptir. Kısaca temel bir bilgisayarın sahip olduğu herşeye. Tek farkla! sıradan bir bilgisayarın belkide 10000’de 1’inden daha küçük özellik, boyut, hız ve fiyatta. İkinci olarakta bir işletim sistemi yoktur (bazı üst düzey ürünler hariç). Böylece içine yüklediğimiz yazılımdan başka bir yazılıma ihtiyaç duymayız. İçindeki kod ne iş yaptırıyorsa odur. Zaten istenilende bu, düşük maliyet, küçük hacim, akıllı cihazlar. Bir nevi mikrobilgisayar diyebiliriz. Peki ne iş yaparlar? Bu aletlere yaptırılmayacak iş yok gibi, aklınıza ne gelirse. O kadar yaygınlarki günümüzde Amerika’da standart bir evdeki elektronik ürünlerin içinde ortalama 35 tane mikrodenetleyici bulunduğunu okumuştum. O kadar uzağa gitmeye gerek yok, nerelerde karşımıza çıkar bunlar, çamaşır makinasının içinde, arabaların xenon far balastlarının içinde, kablosuz klavye mouse kitimizin içinde, televizyonumuzun içinde, evimizdeki yeni nesil elektronik sayaçlarda efendime söyleyeyim aklımıza gelemeyecek kadar çok yerde vardır.

Mikrodenetleyici tabanlı cihazlar tasarlayabilmek istiyoruz, bunu yapabilmek içinde mikrodenetleyicileri programlayabilmek istiyoruz, ne yapmalıyız? Kendi tecrübelerime dayanarak görüşlerimi söyleyeyim. Öğreneceğiniz programlama dili farklı platformlara taşıma kolaylığı açısından ve üniversal olması açısından C tabanlı bir dil olsun. İleride farklı denetleyiciler için farklı dillere ihtiyacınız olabilir fakat yeni başladığınızı düşünürsek şimdilik macera aramaya gerek yok. Ben CCS C dilini kullanıyorum. Bu dil Custom Computer Services firmasının Microchip firmasının ürettiği denetleyicileri programlamak için yapılmış, C tabanlı bir dildir. C dilinin verdiği kuvvetle beraber herhangi bir denetleyici için yazdığınız bir kodu kolayca başka bir denetleyiciye taşıyabiliyorsunuz. Bu da dilde esneklik demektir ve çok önemli bir husustur. Öğrenmek için piyasada çeşitli kurslar bulunmakta (büyük şehirlerde yaşayanlar bu konuda daha şanslı), ayrıca üniversitelerden de yardım alabilirsiniz. Eğer ilgili bölümde ders olarak okutuluyorsa bir şekilde dışarıdan katılmanın yolu vardır diye düşünüyorum (misafir öğrenci vb. şeklinde). İnternette size bu konuda oldukça büyük yardım sağlayacaktır. İlk adım olarak benim size tavsiyem; türkçe kaynak bolluğu, çok miktarda uygulama notları, piyasada kolayca bulunabilmesi, programlayıcılarının kolayca bulunabilmesi sebeplerinden dolayı Microchip firmasının denetleyicilerinden işe başlayın.

Bu firmanın ürettiği denetleyicilerden ilk olarak 16F84 ile yapılabilecek basit birkaç uygulama yapın. Genel mantığı biraz kavramaya çalışın. Çeşitli şekillerde denetleyiciye hükmetmeye çalışın. Portları kontrol edebilmeyi öğrenin. Fakat çok fazla üzerinde oyalanmayın, popülerliğini yitirmiş bir denetleyicidir ama pek özelliğe sahip olmaması nedeniyle başlamak için uygun olacaktır. Sonra ardından 16F628’e geçin göreceksinizki diğerinden pek bir farkı yok. Sadece ufak tefek artıları var. Bunda da biraz eğlendikten sonra geliyoruz 16F877’ye hop bir bakıyoruz bacak sayıları artıyor, çeşitli özellikler ekleniyor, kapasitesi daha fazla. İşte bu kısımda bir müddet duruyoruz. Bol giriş çıkışa sahip olması ve bir takım özelliklere sahip olması sebebiyle başlangıçta bu denetleyici ile birçok şey yapabilirsiniz. Bunun üzerinde iyice pişin. Step motor, karakter lcd, grafik lcd, servo motor, ledler, sensörler vb. bulabildiğiniz kadar bol çevre birimi edinin ve bunlar üzerinde kendinizi geliştirin. Çeşitli denetleyiciler üzerinde tecrübe sahibi olmak nasıl önemliyse, çeşitli çevre birimlerini tanımakta çok önemlidir. Daha sonra 18F542, 18F4550 gibi orta üst seri denetleyicilere ihtiyaçlarınıza göre geçiş yaparsınız. Zaten bu noktaya geldiğinizde, kendiniz duruma göre fikir yürütecek bilgiye az çok sahip olursunuz.

Buraya kadar ilerlettik kendimizi diyelim, peki neden hep bir markaya bağımlı kalalım? Artık işi kıyısından köşesinden biliyoruz, bu markanın 3-5 ürünü üzerinde çaba sarfettik, artık bu denetleyicinin genel mantığına hakimiz. Bu noktadan sonra biraz çeşitlilik gerek. Çok popüler olan veya üretici firmaların daha çok pazar payına sahip olmak için çok uygun fiyata programlayıcılarıyla beraber piyasaya sunduğu bazı ürünler vardır. Uygun fiyatlarla bunlara sahip olup, o firmanın ürettiği denetleyicilerin mimarisini zamanla öğrenebilirsiniz. Bu şekilde çeşitli ürünler üzerinde deneyiminiz olur. Yeni cihazların gerektirdiği yeni dilleri ve program yapılarını öğrenmiş olursunuz. Bu da size çalışmalarınızda duruma göre her bakımdan en uygun denetleyiciyi seçme özgürlüğü tanır. Bu tarz denetleyicilerin programlanmasıyla ilgili tecrübeli kişilerin hazırladığı dersler internette bol miktarda mevcut. Günümüzde öğrenme açısından alınabilecek, öne çıkan ürünler, dünyada çok popüler olan Arduino Uno(atmel tabanlı), Texas İnstruments’in ürettiği denetleyicilere giriş olabilecek, fiyat ve güç tüketimi konusunda iddialı MSP430 Launchpad kit, ST firmasının ürettiği uygun fiyatlı ve üzerinde çeşitli özellikler barındıran STM32F4 Discovery kit(arm tabanlı) olarak görünür. Gerçi şu anda PIC programlama ile ilgili hiçbir bilginiz yoksa siz kendinizi geliştirdiğinizde bu ürünlerde artık polülaritesini yitirmiş olacaklardır fakat yinede eklemekte fayda var. Bu konuda edindiğim izlenimler ve genel görüşlerim bu şekilde.

Beni soracak olursanız okulumdan dolayı ve şu anda yurt dışında olmamdan dolayı hem malzemelere ulaşmakta güçlük çekiyorum hemde yeterli boş vakit bulamıyorum. O yüzden 16F877’de takılı kaldım. Yanıma getirdiğim ve burada bulabildiğim malzemelerle vakit buldukça değişik birşeyler yapmaya çalışıyorum. İmkan bulduğumda ilerlemeyi düşündüğüm yol bir üst paragrafta yazdığım şekilde. Açıkcası bu işin başlangıç kısmı oldukça zorlu fakat kavradıkça yeni şeylere daha kolay adapte olabiliyorsunuz. Uğraşmayı düşünenlere kolay gelsin…

Yazar: Ali Celal

- Elektronik Mühendisi
- E.Ü. Tıp Fakültesi Kalibrasyon Sorumlusu Test kontrol ve kalibrasyon sorumlu müdürü (Sağ.Bak. ÜTS)
- X-Işınlı Görüntüleme Sistemleri Test Kontrol ve Kalibrasyon Uzmanı (Sağ.Bak.)
- Usta Öğretici (MEB)
- Hatalı veya kaldırılmasını istediğiniz sayfaları diyot.net@gmail.com bildirin