Bu yazı dizisinde hobi elektronik üzerine yapacağım haftalık çiçek sulama projesi ile ilgili detaylar vermek istiyorum. Bunun için proje planlamasının aşamalarına göz atabiliriz.
TANIMLAMA
Amaçlar
Projenin amacı, saksı çiçeklerinin istenilen gün, saat ve süre boyunca otomatik olarak sulanması için bir cihaz tasarlanması ve prototip imal edilmesidir.
Özellikler
- Çeşitli butonlar ve LCD ekran vasıtasıyla zaman ve takvim ayarı
- Çeşitli butonlar ve LCD ekran vasıtasıyla sulama ayarı
- Tüm ayarların menü üzerinden yapılabilmesi
- Güç kaynağı olarak 220-240 VAC 50-60 Hz kullanılabilmesi
- Enerji kesintisi sonrasında zaman, takvim ve sulama parametrelerinin hafızadan silinmemesi
- Enerji tasarrufu
- Ergonomik tasarım
Sorumluluklar
- Projeyi yürütebilmek için sabırlı ve azimli olunması
- Araştırmacı ruha sahip olunması
- C programlama diline hakim olunması
- Temel elektrik ve sayısal elektronik bilgisine sahip olunması
- Profesyonel çalışma yetkinliği seviyesinde İngilizce diline hakim olunması
Görevler
Seçimler
- Cihaz kutusu seçimi
- Elektronik devre elemanları seçimi
- Yazılım için IDE seçimi
- Simülasyon ve PCB tasarımı için yazılım seçimi
Uygulamalar
- Devrenin tasarımı, simülasyonunun yapılması, devre tahtasında testi ve baskı devresinin oluşturulması
- Gereken yazılımın oluşturulması
- Cihaz kutusu tasarımı
- Devrenin montajının yapılması
- Montajı yapılan devrenin testi
- Devrenin kutusuna montajı
Projenin sağlıklı bir şekilde yürütülebilmesi için yapılan tanımlamanın ardından görevler başlığı ile yol alabiliriz. Her şeyde olduğu gibi proje için de doğru bir seçim ile başlamak çok önemlidir. Güzel bir seçim güzel bir uygulama ile taçlandığında iyi bir iş çıkarılmış olunacaktır.
1. Seçimler
Bu bölümde, projemizde kullanacağımız elektrik, elektronik, mekanik donanım ile programlama, simülasyon ve tasarım için kullanacağımız yazılım seçimleri üzerinde duracağız.
Cihaz Kutusu Seçimi
Projede kullanılmak üzere elektronik cihazlar için kutular üreten ALTINKAYA firmasının DT-255 model eğimli kutusu seçilmiştir. Firmanın web sitesinden alınan DT-255 model eğimli kutuya ait görseller aşağıdaki galeride yer almaktadır.



Elektronik Devre Elemanları Seçimi
– Güç Devresi
Sistemimiz güç kaynağı olarak 220-240 VAC 50-60 Hz kullanacak ve enerji kesintisi sonrasında zaman, takvim ve sulama parametrelerinin hafızadan silinmeme özelliklerine haiz olacaktır. Aşağıda maddeler halinde belirlenen kısıtlayıcı hususlar göz önüne alınarak devre elemanları seçimi yapılacaktır.
- Microchip PIC16F877A mikrodenetleyicisi, 2.0 ile 5.5 VDC kaynak gerilimi altında beslenebilmektedir.
- Microchip PIC16F877A mikrodenetleyicisinin besleme pini (Vdd) en fazla 250 mA akım çekebilir, toprak pini (Vss) ise en fazla 300 mA akım döndürebilir.
- Halihazırda elimizde 100-240 VAC/12 VDC 500 mA 2.5 mm çıkışlı adaptör bulunmaktadır.
Yukarıdaki maddeler göz önüne alındığında elimizde mevcut adaptör ile 12 VDC gerilim altında 500 mA akım verebilecek durumda gelinmiştir. Mikrodenetleyicimiz en fazla 250 mA çekebileceği için akım açısından bir sorun görünmemektedir. Ancak mikrodenetleyici 2.0 ile 5.5 VDC besleme gerilimi aralığında çalıştığı için 12 V gerilim değerini 2.0 ile 5.5 VDC arasında bir değere indirmemiz gerekmektedir. Bu yüzden gerilimi dönüştürmek için bir gerilim düzenleyici entegre devre (ing. Voltage Regulator Integrated Circuit) kullanılabilir.
Texas Instruments firmasının imal etmiş olduğu LM2576HV-ADJ model gerilim düzenleyici entegre tercih edilebilir. Kullanmış olduğumuz LM2576HV modeli ayarlanabilir çıkış gerilim versiyonudur. Bunun yanına LM2576HV-5V gibi sabit çıkış gerilimli versiyonları da mevcuttur. İleride yapmayı planladığım projelerde kullanabilmem üzere değişik çıkış gerilimlerine ihtiyacım olabileceği düşüncesi ile ayarlanabilir (ing. adjustible) versiyonlarından almıştım.
Mikrodenetleyici besleme gerilimini 5 VDC olarak belirleyebiliriz. Bu belirlemenin yapılmasının ardından LM2576HV-ADJ modelinin veri sayfasından (ing. data sheet) yararlanarak güç devresi elemanlarını belirleyebiliriz.

Yukarıda yer alan görselde belirtilen devre elamanlarının kapasite hesabı için tasarım parametreleri belirlenmesi gereklidir.
TASARIM PARAMETRESİ | DEĞER |
Düzenlenmiş Çıkış Gerilimi, VOUT | 5 V |
Maksimum Giriş Gerilimi, VIN (Max) | 12 V |
Maksimum Yük Akımı, ILOAD (Max) | 3 A |
Anahtarlama Frekansı, F | 52 kHz ‘de sabitlenmiş |
* Direnç Seçimi (R1 ve R2)
Aşağıda yer alan eşitlikler incelendiğinde R1 değerini, 1 k ve 5 k Ohm değerleri arasında alabileceğimiz görülmektedir. Seçim olarak 3K9 1/4W %1 Tolerans Metal Film Direnç seçimi yaptım. Eşitlikten R2 değeri 12 k Ohm çıkmaktadır. Bu yüzden 12K 1/4W %1 Tolerans Metal Film Direnç kullandım. En iyi sıcaklık sabiti ve kararlılık için %1 toleranslı metal film dirençleri kullanılmıştır.
V_{OUT}=V_{REF}\left ( 1+\frac{R_{2}}{R_{1}} \right )
R_{2}=R_{1}\left ( \frac{V_{OUT}}{V_{REF}} -1\right );\; V_{REF}=1.23\; V, \; 1 \; k\leq R_{1}\leq 5\; k
* Bobin Seçimi (L1)
Bobin seçimi için ilk önce bobinin doyma sınırını ifade eden Volt ⋅ mikrosaniye sabitini hesaplamalıyız.
E \; x \; T = (V_{IN}-V_{OUT} )\frac{V_{OUT}}{V_{IN}}x\frac{1000}{F(in \; kHz)}(V\; x\: \mu s)
E \; x \; T = (12-5 )\frac{5}{12}x\frac{1000}{52}=56.09\:Vx\:μs
E ⋅ T (56.09 V x μs) ve ILOAD(Max) (3 A) değerlerini kullanarak aşağıda verilen bobin değer seçim kılavuzu grafiğinde gerekli kapasiteyi ortaya çıkarabiliriz.

Bobin değer seçim kılavuzundan L68 bölgesi belirlenmiştir. Bu demek oluyor ki bobin kapasitemiz en az 68 μH olmalıdır. Kapasite belirlenmesinin yanında bobin seçiminde LM2576 anahtarlama frekansı (52 kHz) ve 1.15 x ILOAD akım sınıfı seçimine dikkat edilmelidir.
Bu bilgiler ışığında bobinimiz 68 μH 3.45 A kapasitede olmalıdır. Ancak elimde 100 μH 4 A bobinler olduğundan onu kullanabilirim.
* Çıkış Kondansatörü Seçimi (COUT)
Bobin ile birlikte çıkış kondansatörünün değeri, anahtarlama düzenleyici döngüsünün baskın kutup çiftini tanımlar. Kararlı bir işlem için kondansatör aşağıda yer alan eşitliği karşılamalıdır.
C_{OUT}\geq 13,300\frac{V_{IN(Max)}}{V_{OUT}\; x\; L(\mu H)}(\mu F)
C_{OUT}\geq 13,300\frac{12}{5\; x\; 68}=469.41\;\mu F
Ancak kabul edilebilir çıkış dalgalanma gerilimi için COUT yukarıdaki değerden birkaç kat büyük alınabilir. Ben COUT = 1000 µF sığalı elektrolitik kondansatör kullanacağım.
Sığayı belirledikten sonra elektrolitik kondansatörün gerilim derecesine ihtiyaç duyulmaktadır. Gerilim derecesi, çıkış geriliminden en az 1.5 kat büyük olmalıdır. Bu yüzden an az 7.5 V gerilim dereceli kondansatör seçilmelidir. Ben 10 V gerilim dereceli elektrolitik kondansatör seçtim.
* Tutucu Diyot Seçimi (D1)
Tutucu diyot akım derecesi, maksimum yük akımından 1.5 kat büyük olmak zorundadır. Ayrıca güç kaynağı tasarımı, sürekli kısa devre çıkışa dayanmak zorunda ise diyot akım derecesi, LM2576’nın maksimum akım limitine eşit olmak zorundadır. Diyot için en çok stresli durum, aşırı yüklenme veya kısa devre çıkıştır. Bizim örneğimizde 3.3 A akım derecesi yeterli olacaktır.
Bir diğer parametre olan diyotun ters gerilim derecesi ise maksimum giriş geriliminin en az 1.25 katı olmalıdır. Bizim örneğimize göre en az 15 V olmalıdır. Ben 40 V ters gerilim dereceli 1N5822 Schottky diyot seçtim.
* Giriş Kondansatörü Seçimi (CIN)
Kararlı bir işlem için düzenleyiciye yakın konumlandırılmış alüminyum veya tantalyum elektrolitik baypas kondansatörü gereklidir. Giriş ve toprak bacaklarına yakın konumlandırılmış 100 µF alüminyum elektrolitik kondansatör yeterli baypas etmeyi sağlar. Proje için 100 µF 100 V alüminyum elektrolitik kondansatör seçtim.
Sonuç olarak 5 V düzenlenmiş gerilim çıkışı için güç devresi aşağıda belirtilen kapasitelere sahip elemanlardan oluşacaktır.
- 100 µF 100 V kutuplu giriş kondansatörü (CIN)
- 1000 µF 10 V kutuplu çıkış kondansatörü (COUT)
- 100 µH 4 A bobin (L1)
- 1N5822 3 A 40 V Schottky Diyot (D1)
- 3.9 kΩ direnç (R1)
- 12 kΩ direnç (R2)
– Mikrodenetleyici
Projemde kullanılmak üzere Microchip firmasının 8 bit PIC16F877A serisi mikrodenetleyici tercih edilmiştir. Proje için aşağıdaki kriterler yeterli olacağından dolayı tercih edilmiştir.
- 8 bit veri yoluna sahip olması
- 20 MHz çalışma frekansı
- 8K flash program hafızasına sahip olması
- 5 adet giriş/çıkış portuna sahip olması
– Osilatör (Salınım) Devresi
Mikrodenetleyiciler başta olmak üzere elektronik devrelerin çalışması için belirli bir dalga formunda sinyal gereklidir. Bu dalga formu sinüs, kare, testere ve üçgen formunda olabilir. PIC16F87XA veri sayfasında, mikrodenetleyicinin 4 farklı osilatör (salınım) modunda çalıştırılabileceği belirtilmiştir. Bunlar;
- LP Düşük-Güç Kristal
- XT Kristal/Rezonatör
- HS Yüksek-Hız Kristal/Rezonatör
- RC Direnç/Konsansatör
Kristal osilatör dalga formu oluşturur ancak oluşturulan dalganın kararlı ve düzgün olması önemlidir. Bu yüzden osilatör devresi, kristal osilatörün yanında muhtelif kapasiteli kondansatör çiftlerinden oluşmalıdır. Resim 3.’de seri Rs direncinin AT strip cut kristalleri için gerekli olabileceği belirtilmiştir.

Çizelge 2.’de değişik osilatör türlerine göre seçilecek minimum kondansatör kapasiteleri yer almaktadır. Yüksek sığa, osilatörün kararlığını artırır ama aynı zamanda başlama süresini de arttırır.
Osilatör Türü | Kristal Frekansı | Sığa Aralığı, C1 | Sığa Aralığı, C2 |
LP | 32 kHz | 33 pF | 33 pF |
200 kHz | 15 pF | 15 pF | |
XT | 200 kHz | 47-68 pF | 47-68 pF |
1 MHz | 15 pF | 15 pF | |
4 MHz | 15 pF | 15 pF | |
HS | 4 MHz | 15 pF | 15 pF |
8 MHz | 15-33 pF | 15-33 pF | |
20 Mhz | 15-33 pF | 15-33 pF |
Projenin osilatör devresi için 4 MHz XT kristal osilatör ve 33 pF 50 V seramik kondansatör çifti seçtim.
– Reset (Sıfırlama) Devresi
Olası enerji kesintilerinde veya mikrodenetleyicinin donması vb. gibi durumlarda programın baştan başlatılması gerekir. Bahse konu durumlarda sıfırlama için harici bir sıfırlama olan MCLR kullanılır. Resim 4.’de MCLR sıfırlaması için önerilen devre gösterilmektedir.

Donma, takılma vb. sorunların önlenmesi için C1 kondansatörüne paralel bağlı bir buton ile enerjiyi kesmeden manuel olarak sıfırlama mümkün olacaktır. Projede, Resim 5.’de gösterildiği üzere buton kullanımın yanı sıra R2 direnci kullanmadan sadece R1 pull-up direncini kullanacağım. Pull-up direnci ile kararsızlığın, C1 kondansatörü ile de gerilim dalgalanmasının önüne geçilmiş olunur. R1 direnci için 10K 1/4 W, C1 kondansatörü için ise 100 pF 63 V seçimi yaptım.

– LCD
Projede kullanılmak üzere 20×4 (20 sütun, 4 satır) LCD tercih edilmiştir. LCD, HITACHI HD44780U Nokta Matris Sıvı Kristal Ekran Sürücüsüne sahiptir. LCD mavi arka aydınlatmaya sahiptir. Ekranın kontrast ayarı için 10K yatık trimpot kullanılmıştır.
– Mini Yatay Dalgıç Su Pompası
Saksı sulama işleminde suyun rezervuardan saksıya basınçlandırılması için mini yatay dalgıç pompaya ihtiyaç duyulmaktadır. Kullanılacak olan dalgıç pompa aşağıda verilen özelliklere sahiptir.
- Çalışma Gerilimi : 2.5 – 6 VDC
- Çalışma Akımı : 130 – 220 mA
- Gücü : 0.4 – 1.5 W
- Basma Yüksekliği : 40 – 110 cm
- Debi : 80 – 120 L/h
- Fırçasız DC Motor, Manyetik Sürüş
– Zamanlayıcı Devresi
Kullanacağımız LCD arka aydınlatmasının, herhangi bir işlem yapılmadığında belirli bir süre sonra kapanması enerji tasarrufu açısından önemlidir. Tasarım planlamasında 1 dakika içinde sistemde işlem yapılmaması durumunda aydınlatmanın kapanması planlanmıştır. Bu işlem mikrodenetleyicinin çevresel özelliği olan zamanlayıcı (ing. timer) modülleri vasıtası ile yapılamamaktadır. Ön ve son ölçekleyiciler (ing. prescaler and postscaler) ile dahi 60 saniye kesmesine ulaşılamamaktadır. Bu yüzden harici bir zamanlayıcı entegresine ihtiyaç duyulmaktadır. Bu aşamada Texas Instruments şirketinin LM555 zamanlayıcı entegresi imdadımıza yetişmiştir.
LM555 entegre devresi, tek durumlu (ing. monostable) işlem modunda kullanılarak 60 saniye zamanlayıcı olarak kullanılacaktır.

Tek durumlu işlem modu için biraz açıklama yapmak uygun olacaktır. İlk başta harici kondansatör C, zamanlayıcı entegre içinde yer alan transistör tarafından yüksüz tutulur. Tetikleme bacağına (TRIGGER), besleme geriliminin (+VCC) 1/3’ünden az bir negatif tetikleme darbesi uygulanması ile kondansatör boyunca kısa devreyi serbest bırakan flip-flop ayarlanır ve çıkış bacağına (OUTPUT) sinyal sürülür. Daha sonra kondansatör üzerindeki gerilim, sonunda besleme geriliminin (+VCC) 2/3’üne eşit oluncaya kadar t = ln(3) ⋅ R ⋅C periyodu boyunca eksponansiyel olarak artar. Yani şarj olur. Ardından karşılaştırıcı, (ing. comparator) flip-flop’u sıfırlar ve bu da kondansatörü boşaltır ve çıkış bacağında (OUTPUT) sinyal kesilir. Karşılaştırıcının şarj ve eşik seviyeleri, besleme gerilimi ile doğru orantılı olduğundan zamanlama aralığı beslemeden bağımsızdır. Bu açıklamaları aşağıda verilen tetikleme sinyali, kondansatör gerilimi ve çıkış darbesi dalga formları görselini incelediğinizde daha iyi anlayabileceğinizi düşünmekteyim.

Şimdi gelin tetikleme yapılmasının ardından çıkışın 60 saniye boyunca yüksek (aktif) kalması için gerekli direnç ve kondansatör kapasitelerini bulalım.
t=ln(3)\:x\:R\:x\:C
Yukarıda yer alan eşitlik için t = 60 s ve C = 1000 μF alırsak R = 54.61 kΩ buluruz. 54.61 kΩ değerinde bir direncin imalatı olmadığından 55 kΩ seçimi yaparız. Bu durumda t = 60.42 saniye oluyor ama sonuçta hassasiyet gerektiren bir işlem yapmıyoruz. 🙂
Burada dikkat etmemiz gereken husus tetikleme bacağının toprak hattı üzerinde olması hasebi ile görece negatif tetikleme yapıldığıdır. Tetikleme, tetikleme bacağından önce bir basmalı düğme (ing. push button) konularak yapılabilir. Butona basıldığında negatif tetikleme yapılır ve çıkış (OUTPUT) bacağının ayarlanan süre boyunca aktif (yüksek) olması sağlanır.
Tetikleme yapıldıktan sonra çıkış devresi ayarlanan zaman aralığı boyunca çıkışı aktif yapar. Çıkışın alındığı zamanlama aralığı boyunca tekrar tetikleme yapılması çıkışın durumunu etkilemez. Resim 8.’de de görüleceği üzere art arda yapılan tetiklemelerde, tetik sinyalinin düşüp yükselmesine rağmen çıkış sinyalinin etkilenmediği görülmektedir. [7]

Tetikleme darbesinin, istenilen zamanlama aralığından kısa olmasından emin olunmalıdır. Resim 9.’da yer alan devre, bunu elektronik olarak gerçekleştirmenin tek yolunu göstermektedir. S1 anahtarı kapalı olduğu zaman kısa süreli düşük sinyal darbesi üretilir. R1 ve C1, zamanlama aralığından çok daha kısa bir tetik darbesi üretmek için seçilir. [7]

Projemizde, negatif tetikleme buton yerine BC237 transistör ile yapılacaktır. Cihazda kullanacağımız MENÜ, İLERİ, GERİ, TAMAM basmalı butonlarına basıldığında alınan sinyal, BC237 transistörün baz (ing. base) bacağına iletilecektir. VBE geriliminin 0.7 V değerini geçmesinden dolayı transistör açılacaktır. Bu sayede toplayıcı ve yayıcı (ing. collector and emitter) hattı açılarak gereken negatif tetik sinyali LM555 entegresine iletilmiş olacaktır.
– Motor Sürücü Devresi
Proje kullanılacak olan dalgıç pompanın sürülmesi için Texas Instruments şirketinin L293D yarım H köprülü motor sürücüsü kullanılmıştır.
Peki neden motoru çalıştırmak için motor sürücü entegresine ihtiyaç duyulmuş olabilir? Neden direk olarak mikrodenetleyici çıkış bacaklarından besleme yaparak değil de entegre üzerinden motoru sürüyoruz?
Soruların cevabı mikrodenetleyicinin elektriksel karakteristiğinde gizli. PIC16F877A serisi mikrodenetleyicisi veri sayfası elektriksel karakteristikler çizelgesi incelendiğinde herhangi bir giriş/çıkış (I/O) bacağından en fazla 25 mA akım alınabileceği (sink current) ve yine en fazla 25 mA akım gönderilebileceği (source current) görülebilecektir. Bu değerlerin aşılması durumunda mikrodenetleyici içerisinde bulanan yarı iletken entegre unsurlarında hasar görme ihtimali oluşur. Projede kullanmayı planladığımız DC motorlu pompanın 130 – 220 mA aralığında akım çekmesi göz önüne alındığında bir sürücü devresi kullanmak iyi bir seçenek olacaktır.
L293D sürücüsünün kendi iç lojik devrelerinin çalışması için 5 V gerilime (VCC1) sahip olması gereklidir. Sürücü 4.5 V ile 36 V gerilimlerinde en fazla 600 mA akım çeken motorları çalıştırabilir. Motoru beslemek için entegrenin VCC2 bacağı kullanılır. EN bacakları ile istenilen sürücü kanalı aktif edilir, <1:4>A bacakları sürücü girişlerini, <1:4>Y bacakları ise sürücü çıkışlarını ifade eder.

Resim 10.’da, 2 kanal üzerinden 16 V gerilim değerinde 2 adet DC motorun entegreye bağlantı şeması yer almaktadır.
– Gerçek Zamanlı Saat Devresi (RTC)
Sistemimizde saat fonksiyonunun kullanılabilmesi için Maxim Integrated şirketinin DS1302 gerçek zamanlı saat entegresi tercih edilmiştir. Saat ve takvimin çalışma prensibi, kuvars saatlerin çalışma prensibi ile aynıdır. Entegre 32,768 kHz frekanslı kuvars kristali ile kullanılır. Yani kuvars kristali gönderilen gerilim neticesinde kristal saniyede tamı tamına 32.768 kere titreşim (salınım) yapar. Bu titreşimler, entegrenin tarafından gün, ay, yıl, hafta günü, saat, dakika, saniye dijital değerlerine (elektrik sinyali tabii ki) dönüştürülür. Resim 11.’de DS1302 entegresinin tipik operasyon devresi yer almaktadır.

Saat ve takvim değerlerinin enerji kesinti sonrası sıfırlanmaması için VCC1 bacağına bağlı CR2032 3V lityum şarj edilebilir düğme pil kullanılmıştır. Entegrenin içinde bulunan şarj sistemi sayesinde şarj edilebilir düğme pil şarj edilerek kullanılabilecektir.
– Butonlar
Projede, cihaz parametrelerinin tasarlanacak menü vasıtası ile ayarlanabilmesi için MENÜ, İLERİ, GERİ, TAMAM butonları kullanılacaktır. Cihazın çeşitli nedenlerden dolayı (donma vb.) sıfırlanması için RESET butonu da teçhiz edilecektir.
Mikrodenetleyici giriş/çıkış portlarının TTL giriş ve çıkış lojik sinyal seviyelerinde kalınması için MENÜ, İLERİ, GERİ ve TAMAM basmalı butonları yukarı çekme (ing. pull-up) dirençleri, RESET butonu ise denetleyici çalışma prensibi gereği aşağı çekme (ing. pull-down) direnci ile teçhiz edilmiştir. Aksi durumda TTL skalasında kararsız bölgesinde kalınabilir ve butonlar kendiliğinden devreye girip çıkabilir.
– Transistörlü Anahtarlama Devresi
Enerji tasarrufunun sağlanması üzerine butonlara basıldıktan 60 saniye sonra LCD arka aydınlatmasının kapanması için NPN transistörlü anahtarlama devresi seçilmiştir. Devrede, MENÜ, İLERİ, GERİ veya TAMAM butonlarına basıldıktan sonra LM555 zamanlayıcı entegresinin TRIGGER bacağına düşük lojik sinyal gidecek ve 60 saniye boyunca OUTPUT bacağından sinyal çıkışı olacaktır.
Kullanmayı planladığımız BC237 transistörünün veri sayfası incelendiğinde, toplayıcı üzerinden maksimum 100 mA akım akacağı, toplayıcı-yayıcı arası gerilimin (VCE) maksimum 45 V, toplayıcı-baz arası gerilimin (VCB) maksimum 50 V, yayıcı-baz arası gerilimin ise maksimum 6 V olabileceği görülmektedir. Bu maksimum değerleri göz önüne alınarak projede kullanılacak olan transistörlü anahtarlama devresi çizimi Resim 12.’de yer almaktadır.

Tümleşik Geliştirme Ortamı (IDE) Seçimi
Mikrodenetleyici olarak Microchip şirketinin 8 bitlik PIC16F877A serisini tercih etmiştik. Bu nedenle şirketin kendi ürünlerinin programlanması için sunduğu tümleşik geliştirme ortamlarını kullanmak durumundayız. MPLAB X IDE 8 bitlik mikrodenetleyicimiz için tercih edilmek durumundadır.
Konunun anlaşılabilmesi için yazılım geliştirmede kullanılan tümleşik geliştirme ortamları (IDEs) hakkında biraz bilgi vermek istiyorum. IDE, bilgisayar programcılarının hızlı ve rahat yazılım oluşturabilmeleri için gereken tüm bileşenleri içinde barındıran bir yazılımdır. Tipik bir IDE kod editörü, derleyici (ing. compiler), bağlayıcı (ing. linker) ve hata ayıklayıcısından (ing. debugger) oluşur.
Kod editöründe, yazılımcı kaynak kodlarını yazar ve düzenler.
Derleyici, giriş kaynak kodlarını, makine dilinde nesne koduna dönüştürür. Nesne kodu, CPU (merkezi işlem birimi) komutlarının ikili sayı sistemindeki (ing. binary) formudur. Görece yüksek seviyeli programlama dilinde (Python, C#, Java, C/C++) yazılan kodlar, mikroişlemcinin anlayabileceği düşük seviyeli makine diline (ikili sayı sisteminde kodlara) dönüştürülür. Makine dilinde 1 ve 0 rakamlarından oluşan kodlar, gerilim seviyesini temsil eder. CPU’da 1 (HIGH, +5 V), 0 (LOW, 0 V) 2 seviyeli lojik olarak mantık kapıları devreleri ile komut işlenir. CMOS, TTL, ETL, BTL, GTL, düşük gerilim vb. entegre üretim teknolojilerine göre lojik gerilim seviyeleri toleransı değişebilmektedir.
Bağlayıcı, oluşturulan nesne kodlarını çalıştırılabilir tek bir dosyaya (ing. Executable file) dönüştürür.
Hata ayıklayıcısı ise yazılan programı test eden ve hataları tespit eden elemandır. Güncel tümleşik geliştirme ortamlarının hata ayıklayıcılarında yapay zekadan yararlanılmaktadır.
MPLAB X IDE, derleyici konusunda bize esnek davranmaktadır. 8 bit mikrodenetleyicimizin programlanmasında kullanmak üzere orta seviye bir dil olan C programlama dili için XC8, düşük seviye bir dil olan assembly dili için ise pic-as derleyici seçenekleri sunulmaktadır. Bizim tercihimiz XC8 derleyici olacaktır.
Simülasyon ve Baskı Devre Tasarımı Yazılımı Seçimi
Projede, devre şemalarını çizmek, çizilen devrenin gerçek zamanlı simülasyonunu yapmak ve baskı devreyi oluşturmak için Proteus yazılımı tercih edilecektir.
2. Uygulamalar
Bu aşamadan itibaren uygulamalara geçiş yapılacaktır. Devrenin tasarımı, yazılımın oluşturulması, devrenin simülasyonun yapılması, baskı devresinin tasarımı, cihaz kutusunun tasarımı gibi herhangi bir imalat gerektirmeyen uygulamalar ile başlanılacaktır. Devamında, devre tahtası (ing. breadboard) üzerinde devre kurulacak ve yazılım mikrodenetleyiciye yüklenerek devre test edilecektir.
Herhangi bir sorunla karşılaşılmaması durumunda baskı devre ve cihaz kutusu imalata verilecektir. Ardından elektronik bileşenler baskı devresine monte edildikten sonra baskı devre, kutuya monte edilip prototip ortaya çıkarılmış olunacaktır.
– Devre Tasarımı
Proteus yazılımı ortamında tasarlanan devre şeması Resim 13.’de yer almaktadır.
– Yazılımın Oluşturulması
Projemizde MBLAB X IDE ve XC8 derleyicisi kullanılarak yazılım oluşturulacaktır. Sistemde kullanacağımız LCD ve RTC entegrelerinin kendi içlerinde kontrolcüleri ve dolayısıyla yazmaçları (ing. register) bulunmaktadır. DS1302 RTC entegresi 3 kablolu senkron seri haberleşme protokolü ile haberleşirken HD44780U LCD denetleyicisi 4 veya 8 kablolu (2 adet 4 bit veya tek 8 bit işlem) seri haberleşme protokolü ile haberleşir.
Devamı gelecek…
İlk Yorumu Siz Yapın