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
3. HARİCİ DONANIMSAL BİRİMLER
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.
4. TASARLANAN SİSTEMİN GERÇEKLENMESİ
Şekil 6. Baskı Devrenin Tamamlanmış Hali
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
2. ARDUINO UNO VE YAZILIM GELİŞTİRME
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
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.
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
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
Yorum Gönder