Arduino Uno İle Çift Kutup Yüzeyli Transistör Test Cihazı Tasarımı


ARDUINO UNO İLE ÇİFT KUTUP YÜZEYLİ TRANSİSTÖR TEST CİHAZI TASARIMI

DESIGN OF BIPOLAR JUNCTION TRANSISTOR TESTING DEVICE WITH ARDUINO UNO




ABSTRACT

In this study, a bipolar junction transistor testing device was designed by using Arduino Uno. In the design, ohm's law has been used to calculate the current passing through the collector and base ends of the transistor. As the voltage on the resistors connected to the base and collector ends of the transistor is read through the analogue input channels of the Arduino Uno, the values ​​of the connected resistors are known and the base and collector currents are calculated and the hFE value of the transistor is calculated from the hFE = Ic / Ib formula. Based on this basis, mathematical calculations and logical comparisons are used to determine the transistor type and emitter, base, collector ends and display them on the LCD screen. Before the application, the prepared code and the circuit were tested by simulating the proteus. Then the circuit was installed on breadboard and tested with real transistors, the program was updated by removing the deficiencies. Finally, the PCB of the designed system was designed with proteus and printed on double-sided copper plate and circuit elements were installed and the design of bipolar junction transistor testing device was completed. 
Keywords: hFE measument, Transistor test, NPN transistor, PNP transistor, Proteus, PCB, Arduino Uno.   



ÖZET

Bu çalışmada, Arduino Uno kullanarak çift kutup yüzeyli transistör test cihazı tasarımı yapılmıştır. Tasarımda, transistörün kollektör ve beyz uçlarından geçen akımı hesaplamak için ohm kanunundan yararlanılmıştır. Transistörün beyz ve kollektör uçlarına bağlı olan dirençlerin üzerlerindeki gerilim arduino unonun analog giriş kanalları vasıtasıyla okunarak bağlı dirençlerin değerleri bilindiğinden beyz ile kollektör akımları hesaplanmış ve hFE=Ic/Ib formulünden transistörün hFE değerinin hesaplanması sağlanmıştır. Bu temele dayanarak matematiksel hesaplamalar ve mantıksal karşılaştırmalarla transistörün tipinin ve emiter, beyz, kollektör uçlarının tespit edilerek LCD ekranda gösterilmesi sağlanmıştır. Uygulamaya geçmeden önce, hazırlanan kod ve devre proteus ta simule edilerek test edilmiştir. Daha sonra devre breadboard üzerine kurularak gerçek transistörlerle test edilmiş ve görülen aksaklıklar giderilerek program güncellemesi yapılmıştır. Son olarak, tasarlanan sistemin baskı devresi proteus ta çizilip çift taraflı bakır plaket üzerine basılarak devre elemanları yerleştirilmiş ve çift kutup yüzeyli transistör test cihazı tasarımı tamamlanmıştır.
Anahtar Kelimeler: hFE ölçümü, Transistör test, NPN transistör, PNP transistör, Proteus, Baskı devre, Arduino Uno.


1. GİRİŞ

Çift Kutup Yüzeyli Transistörler (Bipolar Junction Transistor) elektronik devrelerin en sık kullanılan devre elemanlarından biridir. NPN ve PNP olmak üzere iki çeşidi olan bu transistörlerin emiter, beyz ve kollektör olmak üzere 3 bacağı vardır. Genellikle elektronik devrelerde yükselteç ve anahtarlama olarak kullanılan bu transistörler yükselteç olarak kullanıldıkları durumlarda akım kazancı değerini (hFE) bilmek yüksek önem taşımaktadır. Ayrıca elimizdeki mevcut transistörlerin datasheet i olmadığında ya da transistör üzerindeki model numarası okunamadığı durumlarda transistörün tipinin (NPN, PNP) ve emiter, beyz, kollektör bacaklarının tespit edilmesi büyük bir sorun oluşturmaktadır. Piyasada yaygın olarak kullanılan ölçü aletlerinin birçoğuyla transistörün hFE değerini ölçmek mümkündür, ancak bunun için öncelikle transistörün tipinin ve bacaklarının bilinmesi gerekmektedir.




Yandaki şekilde görüldüğü gibi transistör test kısmı olan ölçü aletleri ile transistör test etmek için öncelikle transistörün tipinin ve ayaklarının bilinmesi zorunludur. Transistörün datasheetinin elimizde olmadığı durumlarda bu tarz ölçü aletleri ile ölçüm yapmak zordur.

Şekil 1. Sıradan ölçü aletinin hFE test kısmı


Bu ihtiyaçlar doğrultusunda transistörün takılış şekli ve tipi farketmeksizin hFE değerini, tipini ve bacaklarını tespit edebilen bir cihaz tasarlama fikri oluşmuştur. Tasarımın başlangıç aşamasında Mikrochip firmasının üretmiş olduğu PIC16F877A mikrodenetleyicisi kullanılması düşünülmüştür, ancak harici osilatör gerektirmesi, programlamak için ayrıca bir programlama kartına ihtiyaç duyması, MikroC ile programlamak için ihtiyaç duyulan yazılımın 249 dolar gibi yüksek bir fiyatı olması sebepleriyle açık kaynak kodlu olan, harici bir osilatör ile programlama kartına ihtiyaç duymayan ve yazılımları tamamen ücretsiz olan Arduino Uno tercih edilmiştir.

Bu bildiride, projede kullanılan malzemelerin açıklanması, Arduino kaynak kodunun hazırlanması, tasarlanacak sistemin önceden bilgisayar ortamında benzetimi yapılarak olası hatalarının giderilmesi ve devrenin gerçekleştirilmesi anlatılmaktadır. İkinci bölümde Arduino Uno özellikleri  ve Arduino derleyicisi ile programın hazırlanmasına yer verilmektedir. Üçüncü bölümde devrede kullanılan harici donanımsal birim elemanlarına bakılmakta, dördüncü bölümde tasarlanması düşülen sistem Proteus ortamında benzetimi yapılarak test edilmesi anlatılmaktadır. Beşinci bölümde sistemin gerçeklenme safhası açıklanmakta ve sonuçlar verilmektir.


2. ARDUINO UNO VE YAZILIM GELİŞTİRME

 2.1. Arduino Uno

Arduino Uno Atmel Atmega 328P mikrodenetleyicisine sahip mikrodenetleyici karttır. Kart üzerinde temel olarak; 14 adet dijital giriş / çıkış pini (6 adeti PWM (Pulse Width Modulation-Darbe / Sinyal Genişlik Modulasyonu), 6 adet analog giriş pini, 16 MHz saat hızı için osilatör, bir adet USB bağlantısı, bir adet DC güç girişi, bir adet ICSP bağlantı başlığı ve bir adet reset düğmesi bulunmaktadır. 32 KB kapasiteli bir flash belleğe sahiptir. Kartın kolaylıkla kullanılabilmesi, bileşenlerin kablo bağlantılarının rahatlıkla yapılabilmesi için pin soket yapısı kullanılmaktadır. Arduino Uno’nun temel bileşenleri aşağıda gösterilmektedir.


Şekil 2. Arduino Uno Temel Bileşenleri


Teknik Özellikleri:
·         Mikrodenetleyici : ATmega328
·         Çalışma gerilimi : +5 V DC
·         Tavsiye edilen besleme gerilimi : 7 - 12 V DC
·         Besleme gerilimi limitleri : 6 - 20 V
·         Dijital giriş / çıkış pinleri : 14 tane (6 tanesi PWM çıkışını destekler)
·         Analog giriş pinleri : 6 tane
·         Giriş / çıkış pini başına düşen DC akım : 40 mA
·         3,3 V pini için akım : 50 mA
·         Flash hafıza : 32 KB (0.5 KB bootloader için kullanılır)
·         SRAM : 2 KB
·         EEPROM : 1 KB
·         Saat frekansı : 16 MHz


2.2. Arduino Derleyicisi ve  Kaynak Programın Hazırlanması

Arduino programlamada arduinonun kendi derleyicisi kullanılır ve tamamen ücretsizdir.
C ve C++  diline oldukça benzer bir programlama dili vardır. Derlenen programı Arduinoya göndermek için harici bir yazılım daha gerektirmez. Devre tasarımının başlangıcında PIC16F877A yerine Arduino Uno nun tercih edilmesin sebeplerinden biriside Arduino derleyicisinin ücretsiz ve kullanışlı olmasıdır.
                                  
Kaynak kodu arduino derleyicisinin LCD kütüphanesi kullanılarak LCD’ye veri gönderimi sağlanmıştır. LCD pinleri tasarladığımız devreye göre programda tanıtılmıştır. Transistörün beyz ve kollektör ucundan giren akımlar hesaplanarak hFE değeri, transistörün tipi ve bacakları tespit edilerek LCD ekranda gösterilmesi sağlanmıştır.

Arduino derleycisi ile hazırlanan kaynak kod  aşağıdaki parçalardan oluşmaktadır:


Kitaplık tanımlamalarının yapıldığı program bölümü
/*
Mikrodenetleyiciler dersi proje ödevidir.
----------------------------------------------------------------
hFE değeri yaklaşık 65 ila 650 arasında olan BJT leri ölçebilir.
Hesaplamalarda kullanılan beyz akımı;
silisyum katklı transistörler için yaklaşık 4,3 mikroamper,
germanyum katkılı transistörler için yaklaşık 4,7 mikroamperdir.
*/

#include <LiquidCrystal.h> //LCD ekran kütüphanesini dahil ediyoruz.
#include <BigNumber.h> //Çok küçük sayılarla çalışmamız gerekeceği için harici BigNumber.h kütüphanesini dahil ediyoruz. (Proje klasöründe mevcut)


Yazılımda kullanılan değişken ve sabitler yapıldığı program bölümü

LiquidCrystal lcd(12, 11, 3, 2, 1, 0); //LCD bacaklarını tanımlıyoruz.

/* Transistör bacaklarına bağladığımız direnç değerlerini giriyoruz.
Bu değerleri transistörün hFE değerini hesaplamada kullanacağız.
Standart dirençlerin değerleri %10'a kadar değişkenlik gösterebileceğinden
devreye bağlayacağımız dirençleri ölçerek net değerlerini buraya gireceğiz.
Bu şekilde daha sağlıklı bir hesaplama yapabilmeyi hedefliyoruz. */
BigNumber r1 ("1009"); //Ohm
BigNumber r2 ("1017000"); //Ohm
BigNumber r3 ("1008"); //Ohm
BigNumber r4 ("1015000"); //Ohm
BigNumber r5 ("987"); //Ohm
BigNumber r6 ("1009000"); //Ohm

//Ölçümler sırasında sağlıklı ölçüm yapabilmek için beklenilecek süreyi ayarlıyoruz.
int bekleme = 40; //mS
int zaman_ayar = 0; //Tüm ölçimlerin eşit sürede tamamlanması için zamanı ayarlıyoruz.

//Dirençler üzerine düşen gerilimleri ve akımları hesaplamak için değişkenlerimizi tanımlıyoruz.
int beyz_gerilimi = 0; //Beyz gerilimi.
int kollektor_gerilimi = 0; //Kollektör gerilimi.
BigNumber beyz_akimi = 0; //Beyz akımı.
BigNumber kollektor_akimi = 0; //Kollektör akımı.
int emiter; //Emiter bacağı.
int beyz; //Beyz bacağı.
int kollektor; //Kollektör bacağı.

//hFE yi, transistör tipini ve transistör bacaklarını hesaplamak için değişkenlerimizi tanımlıyoruz.
int hfe = 0; //hFE değeri.
char * tip[] = {" ", " ", " "}; //Transistörün tipi.
char * birinci_bacak; //1. bacak.
char * ikinci_bacak; //2. bacak.
char * ucuncu_bacak; //3. bacak.

/* Ardunio çıkışları yüke bağlandığında gerilim düşümü meydana geldiğinden dolayı sağlıklı
ölçüm yapabilmek adına yükteki çıkış gerilimlerini ölçerek hesaplamalarda kullanılmak üzere tanımlıyoruz. */
int yukte_beyz_cikis_gerilimi = 1023; //Transistörün beyz ucuna 1 Megaohm gibi yüksek bir direnç bağlandığı için düşük akım çekiyor ve arduino çıkış gerilimi neredeyse hiç düşmüyor.
int yukte_kollektor_cikis_gerilimi = 1014; // Transistörün kollektör ucuna 1 Kiloohm gibi nispeden daha düşük bir direnç bağlandığı için arduino çıkış gerilimi bir miktar düşüyor.


Ayarlamaların Yapıldığı Program Bölümü

void setup()
{
BigNumber::begin(); //Çok küçük sayılarla çalışabilmemizi sağlayacak fonksiyonu başlatıyoruz.
BigNumber::setScale(20); //Hesaplamalarımızı virgülden sonra 20 basamak olacak şekilde ayarlıyoruz.
lcd.begin(16, 2); //LCD ekranı başlatıyoruz.
analogWrite(5,100); //LCD ekran için kontrast ayarı.
}


Ana Program Bölümü

void loop() {
basla: //Transistör ölçüm sonuçlarını gösterdikten sonra yeni bir test için başa dönüyoruz.
 
//Bacakları giriş ve çıkış olarak tanımlıyoruz. 
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
pinMode(A3,INPUT);
pinMode(A4,INPUT);
pinMode(A5,INPUT);
pinMode(0,OUTPUT);
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,INPUT);
pinMode(5,OUTPUT);
pinMode(6,INPUT);
pinMode(7,INPUT);
pinMode(8,INPUT);
pinMode(9,INPUT);
pinMode(10,INPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,INPUT);

/******************************************************************************/
/***************************NPN KONTROL BAŞLANGIÇ*************************/
/******************************************************************************/
//İlk başta transistörün NPN olduğunu varsayarak teste başlıyoruz.
//Transistörün 3 bacağı olduğu için permütasyon formülünden P(3,3) = 3! / (3-3)! = 6 farklı şekilde bağlanma olasılığı vardır.
//Tüm olasılıkları deneyerek transistörün bacaklarını tespit etmeye çalışıyoruz.

/**************************E-B-C TEST BAŞLANGIÇ**************************/
//Pinleri 1-Emiter, 2-Beyz, 3-Kollektör bağlanmış gibi ayarlıyoruz.
emiter = A3; //Emiter ucunu besleyecek bacak.
beyz = 9; //Beyz ucunu besleyecek bacak.
kollektor = 10; //Kollektör ucunu besleyecek bacak.

//kullanacağımız bacakları çıkış olarak ayarlıyoruz, diğerleri giriş olarak kalacak.
pinMode(emiter, OUTPUT); //Emiter bacağı.
pinMode(beyz, OUTPUT); //Beyz bacağı.
pinMode(kollektor, OUTPUT); //Kollektör bacağı.

//E-B-C bağlantı için transistörü besliyoruz.
digitalWrite(emiter, LOW); //Emiter bacağına 0V verdik.
digitalWrite(beyz, HIGH); //Beyz bacağına +5V verdik.
digitalWrite(kollektor, HIGH); //Kollektör bacağına +5V verdik.
delay(bekleme);

//E-B-C bağlantı için transistörün çalışıp çalışmadığını test ediyoruz.
//Eğer çalışıyorsa hFE değerini hesaplıyoruz.

beyz_gerilimi = yukte_beyz_cikis_gerilimi - analogRead(A1); //Transistörün beyz ucuna bağlanan direnç üzerine düşen gerilimi hesaplıyoruz.
kollektor_gerilimi = yukte_kollektor_cikis_gerilimi - analogRead(A2); //Transistörün kollektor ucuna bağlanan direnç üzerine düşen gerilimi hesaplıyoruz.
delay(bekleme);

beyz_akimi = BigNumber(beyz_gerilimi) / BigNumber(r4); //Beyz akımını hesaplıyoruz.
kollektor_akimi = BigNumber(kollektor_gerilimi) / BigNumber(r5); //Kollektör akımını hesaplıyoruz.

if(beyz_gerilimi >= 800 && kollektor_gerilimi >= 60 && beyz_gerilimi >= (kollektor_gerilimi + 250)){ //Eğer transistör E-B-C şeklinde bağlandıysa bu şartları sağlayacaktır, hesaplamaya geçiyoruz.
 
  hfe = kollektor_akimi / beyz_akimi; //hFE değerini hesaplıyoruz.
  tip[0] = "N"; tip[1] = "P"; tip[2] = "N"; //Transistör tipini belirtiyoruz.
  zaman_ayar = 920; // Bekleme süresini 1 saniyeye tamamlıyoruz.
 
  //Hangi bacağın hangi uç olduğunu belirtiyoruz.
  birinci_bacak = "E";
  ikinci_bacak = "B";
  ucuncu_bacak = "C";
  goto sonuc_goster; //Sonuç gösterme kısmına gidiyoruz.
  }

//Bir sonraki adım için bacakları tekrar giriş olarak tanımlıyoruz.
pinMode(emiter, INPUT); //Emiter bacağı.
pinMode(beyz, INPUT); //Beyz bacağı.
pinMode(kollektor, INPUT); //Kollektör bacağı.

//Bir sonraki adım için kullandığımız değişkenleri sıfırlıyoruz.
beyz_gerilimi = 0;
kollektor_gerilimi = 0;
beyz_akimi = 0;
kollektor_akimi = 0;
emiter = 0;
beyz = 0;
kollektor = 0;

/**************************E-B-C TEST BİTİŞ**************************/

Yukarıdaki kodda E-B-C TEST BAŞLANGIÇ ile E-B-C TEST BİTİŞ arasındaki kod NPN transistörün tüm olası bağlantı şekillerini test etmek için 6 kez farklı bacaklara gerilim vererek tekrar etmektedir. Tüm kod buraya eklenmemiştir. Aynı Şekilde aşağıdaki kodda PNP transistörün tüm bacaklarını test edecek şekilde 6 kez tekrar etmektedir.

/******************************************************************************/
/***************************PNP KONTROL BAŞLANGIÇ*************************/
/******************************************************************************/
//İkinci olarak transistörün PNP olduğunu varsayarak teste başlıyoruz.
//Transistörün 3 bacağı olduğu için permütasyon formülünden P(3,3) = 3! / (3-3)! = 6 farklı şekilde bağlanma olasılığı vardır.
//Tüm olasılıkları deneyerek transistörün bacaklarını tespit etmeye çalışıyoruz.

/**************************E-B-C TEST BAŞLANGIÇ**************************/
//Pinleri 1-Emiter, 2-Beyz, 3-Kollektör bağlanmış gibi ayarlıyoruz.
emiter = A3; //Emiter ucunu besleyecek bacak.
beyz = 9; //Beyz ucunu besleyecek bacak.
kollektor = 10; //Kollektör ucunu besleyecek bacak.

//kullanacağımız bacakları çıkış olarak ayarlıyoruz, diğerleri giriş olarak kalacak.
pinMode(emiter, OUTPUT); //Emiter bacağı.
pinMode(beyz, OUTPUT); //Beyz bacağı.
pinMode(kollektor, OUTPUT); //Kollektör bacağı.

//E-B-C bağlantı için transistörü besliyoruz.
digitalWrite(emiter, HIGH); //Emiter bacağına +5V verdik.
digitalWrite(beyz, LOW); //Beyz bacağına 0V verdik.
digitalWrite(kollektor, LOW); //Kollektör bacağına 0V verdik.
delay(bekleme);

//E-B-C bağlantı için transistörün çalışıp çalışmadığını test ediyoruz.
//Eğer çalışıyorsa hFE değerini hesaplıyoruz.

beyz_gerilimi = analogRead(A1); //Transistörün beyz ucuna bağlanan direnç üzerine düşen gerilimi okuyoruz.
kollektor_gerilimi = analogRead(A2); //Transistörün kollektor ucuna bağlanan direnç üzerine düşen gerilimi okuyoruz.
delay(bekleme);

beyz_akimi = BigNumber(beyz_gerilimi) / BigNumber(r4); //Beyz akımını hesaplıyoruz.
kollektor_akimi = BigNumber(kollektor_gerilimi) / BigNumber(r5); //Kollektör akımını hesaplıyoruz.

if(beyz_gerilimi >= 800 && kollektor_gerilimi >= 60 && beyz_gerilimi >= (kollektor_gerilimi + 250)){ //Eğer transistör E-B-C şeklinde bağlandıysa bu şartları sağlayacaktır, hesaplamaya geçiyoruz.
 
  hfe = kollektor_akimi / beyz_akimi; //hFE değerini hesaplıyoruz.
  tip[0] = "P"; tip[1] = "N"; tip[2] = "P"; //Transistör tipini belirtiyoruz.
  zaman_ayar = 440; // Bekleme süresini 1 saniyeye tamamlıyoruz.
 
  //Hangi bacağın hangi uç olduğunu belirtiyoruz.
  birinci_bacak = "E";
  ikinci_bacak = "B";
  ucuncu_bacak = "C";
  goto sonuc_goster; //Sonuç gösterme kısmına gidiyoruz.
  }

//Bir sonraki adım için bacakları tekrar giriş olarak tanımlıyoruz.
pinMode(emiter, INPUT); //Emiter bacağı.
pinMode(beyz, INPUT); //Beyz bacağı.
pinMode(kollektor, INPUT); //Kollektör bacağı.

//Bir sonraki adım için kullandığımız değişkenleri sıfırlıyoruz.
beyz_gerilimi = 0;
kollektor_gerilimi = 0;
beyz_akimi = 0;
kollektor_akimi = 0;
emiter = 0;
beyz = 0;
kollektor = 0;

/**************************E-B-C TEST BİTİŞ**************************/


Sonuç Gösterme Bölümü

//Hiçbir denemede sonuç alınamadıysa BJT takılması yönünde uyarı veriyoruz.
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Transistor Takin");
lcd.setCursor(0, 1);
lcd.print("  (Sadece BJT)  ");
goto sifirla; //Değişkenleri sıfırlıyoruz.

sonuc_goster: //Sonuçları LCD ekrana yazdıracağımız kısım.
//Sonuçları ekrana yazdırıyoruz.
delay(zaman_ayar); //Saniyede 1 kez ölçüm sonucunu ekrana göndermek için bekliyoruz.
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("hFE=");
lcd.setCursor(4, 0);
lcd.print(hfe);
lcd.setCursor(9, 0);
lcd.print("TIP=");
lcd.setCursor(13, 0);
lcd.print(tip[0]);
lcd.print(tip[1]);
lcd.print(tip[2]);
lcd.setCursor(0, 1);
lcd.print("1->");
lcd.setCursor(3, 1);
lcd.print(birinci_bacak);
lcd.setCursor(6, 1);
lcd.print("2->");
lcd.setCursor(9, 1);
lcd.print(ikinci_bacak);
lcd.setCursor(12, 1);
lcd.print("3->");
lcd.setCursor(15, 1);
lcd.print(ucuncu_bacak);

sifirla: //Kullanmış olduğumuz tüm değişkenleri sıfırlıyoruz.
beyz_gerilimi = 0;
kollektor_gerilimi = 0;
beyz_akimi = 0;
kollektor_akimi = 0;
hfe = 0;
tip[0] = " "; tip[1] = " "; tip[2] = " ";
birinci_bacak = " ";
ikinci_bacak = " ";
ucuncu_bacak = " ";
zaman_ayar = 0;

goto basla; //Yeni bir test için başlangıca gidiyoruz.

  }


3. HARİCİ DONANIMSAL BİRİMLER


 3.1. 2x16 LCD

Bu çalışmada harici donanım olarak dirençler dışında sadece qapass firmasının üretmiş olduğu 1602-A serisi 2x16 LCD si kullanılmıştır. Arduinonun LCD kütüphanesi ile uyumlu olup 4 bitlik iletişim modunda LCD ye veri gönderimi sağlanmaktadır. Normalde kontrast ayarı için potansiyometre kullanılmakta olup bu çalışmada kontrast ayarı Arduino nun pwm çıkış kanalları vasıtasıyla ayarlanmaktadır, fazladan bir potansiyometreye ihtiyaç duyulmamıştır. Şekil 3 te LCD nin boyutları ve bacak bağlantıları verilmiştir. Burada görüldüğü gibi 1. bacak toprak, 2. bacak +5V olmak üzere besleme uçlarıdır. 3. bacak kontrast ayarı için kullanılmaktadır. 4. bacak register seçme, 5. bacak veri okuma/yazma, 6. bacak ise enable bacağıdır. 7-14 arası bacaklar veri iletişiminde kullanılmaktadır. 15 anot 16 katot olmak üzere bu bacaklar ise LCD nin arka aydınlatması için besleme uçlarıdır.


Şekil 3. 2x16 LCD boyutları bacak bağlantıları.


4. PROTEUS İLE BENZETİM

 Tasarlanacak sisteme ait çevre birimler kararlaştırılıp bunlara ait Arduino Uno kaynak programı hazırlandıktan sonra olası hatalarının önüne geçmek için devrenin Proteus ile benzetimi yapılmıştır. Proteus programı; elektronik alanında simülasyon, animasyon ve otomatik baskı devre çizimi yapabilen programlardan biridir. İçerisinde Isis ve Ares olarak adlandırılan iki ayrı program mevcuttur. Isis ile grafik tabanlı simülasyon yapabilir, enteraktif (etkileşimli) devre kurma olanağı verir, bir mikro denetleyici tabanlı sistemin devresinin tamamının çizilip, hazırlanmış kaynak kodu etkileşimli olarak test edilebilmektedir. Simülasyonda Arduino Uno kullanmak için ek bir proteus kütüphanesine ihtiyaç duyulmaktadır. Bu kütüphane bu projenin klasöründe mevcuttur.
Devre şeması, Şekil 4’te görüldüğü gibi ISIS programı ile çizilmiştir. Hazırlanan kaynak kodu Arduino Uno içerisine yüklenerek görsel olarak simülasyon yapılmıştır. Burada hatalar ayıklandıktan sonra devre yapım aşamasına geçilmiştir.


Şekil 4. Devrenin Isis ile benzetimi.

4. TASARLANAN SİSTEMİN GERÇEKLENMESİ


Baskı devre şeması, Isis’te hazırlanan simülasyondan Ares’e bağlantı kurarak bu ortamda hazırlanmıştır ve Şekil 5 ile verilmiştir. Burada hazırlanan kartta Arduino Uno nun tam üzerine oturacak şekilde bacak bağlantıları yapılmıştır, bu sayede arduino ile kart arasındaki iletişim için fazladan kablo bağlantıları yapmak gerekmeyecektir, sadece devre kartını arduinonun çıkışları üzerine yerleştirmek yeterli olmaktadır. Baskı devre kartının mümkün olduğunca küçük olması ve atlamaların az olması istenildiğinden çift taraflı olarak tasarlanmıştır.


Şekil 5. Hazırlanan devrenin baskı devre şeması.

Hazırlanan baskı devre şeması ütüleme yöntemi ile çift taraflı bakır plaket üzerine basılmış ve perhidrol - tuz ruhu karışımının içerisinde eritilerek devre yollarının oluşması sağlanmıştır. Şekil 6 da baskı devresi yapılmış kart görülebilir.


Şekil 6. Baskı Devrenin Tamamlanmış Hali

Baskı devre hazırlandıktan sonra devrede kullanılan malzemelerin kart üzerine montajı yapılıp arduino yazılımı ile hazırlanan program kodu yüklenmiş ve devre çalıştırılmıştır. Şekil 7 de devrenin tamamlanmış hali görülebilir.



Şekil 7. Hazırlanan devrenin çalıştırılması.



Video 1. Hazırlanan devrenin çalıştırılması.

5. SONUÇLAR

 Arduino Uno kullanılarak tasarlanan çift kutup yüzeyli transistör test cihazı devresi başarı ile çalıştırılmıştır. Tasarımda Arduino derleyicisi kullanılarak kaynak kodu hazırlanmıştır. Devrenin isis ile bilgisayar ortamında benzetimi yapılmış ve olası hatalar giderilmiştir. Ares ile hazırlanan devre şeması ile montaj tamamlanmış ve devre çalışır hale getirilmiştir. Bu çalışmada metodik olarak Arduino kullanılan bir sistem tasarımı sunulmuştur.

KAYNAKLAR

https://github.com/nickgammon/BigNumber
https://www.arduino.cc/
http://diyot.net/arduino-uno-r3/
https://www.theengineeringprojects.com/
https://en.wikipedia.org/wiki/Bipolar_junction_transistor
https://320volt.com/utu-ile-kolay-baski-devre-pcb-hazirlama/
DPÜ - Dr. Öğr. Üyesi Fırat Ertaç Durak Elektronik 1-2 Dersi Defter Notları, 2019
DPÜ - Dr. Öğr. Üyesi Kadir VARDAR Mikrodenetleyiciler Ders Notları, 2019
1602-A LCD Display datasheet
Arduino Uno R3 datasheet


Projenin kaynak kodları aşağıdaki bağlantıdan indirilebilir.
https://drive.google.com/open?id=12KBPFVgCpPUnVRlpGnCzT-5YszSaWdWn

Yorumlar