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

sinwt

Üye
Katılım
10 Haz 2019
Mesajlar
1
Puanları
1
Yaş
37
Merhaba arkadaşlar, mikrodenetleyiciler dersi ödevi için hazırlamış olduğum transistör test cihazı projesini sizlerle paylaşmak istedim, proje makalesini olduğu gibi buraya aktarıyorum. Projeye ait tüm bilgilere, projenin kaynak kodlarına ve devrenin çalışma videosuna aşağıdaki bağlantıdan ulaşabilirsiniz.
https://transistortest.blogspot.com/2019/06/arduino-uno-ile-cift-kutup-yuzeyli.html



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


Ö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.

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.
54870
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.


54871


Ş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ü

Kod:
/*
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ü

Kod:
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ü

Kod:
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ü
Kod:
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.

Kod:
/******************************************************************************/
/***************************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ü

Kod:
//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.

54872

Ş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.

54873

Şekil 4. Devrenin Isis ile benzetimi.




5. 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.


54874

Ş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.


54875

Ş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.


54876

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


6. 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://transistortest.blogspot.com/2019/06/arduino-uno-ile-cift-kutup-yuzeyli.html
 

Forum istatistikleri

Konular
127,969
Mesajlar
913,975
Kullanıcılar
449,614
Son üye
Canipk

Yeni konular

Geri
Üst