RS-232 İletişim İle C# ve PIC18F4550 Kullanılarak Led Yakıp Söndürme Projesi

Merhaba arkadaşlar bugün sizlerle C# kullanılarak RS-232 ile led yakıp söndürme projesini gerçekleştiricez.  Neden bu proje ? bu soruya cevap verecek olursak arkadaşlar  Led yakıp söndürme olayının  röle tetiklenmesinde ve buna bağlı olarak kendin yap projelerinde yer alan PLC devrelerinin temelini oluşturması ,PIC serisinin ŞİRKETLER tarafından tercih edilmesi  beni bu projenin yapımına götürmüştür.Bu cevaptan sonra isterseniz projeye adım adım başlayalım.

PROJENİN AMACI
1) Mikroişlemci, mikrodenetleyeci , RS-232 iletişim protokolü,MAX 232, led, 2×16 LCD ekran kavramlarını öğrenmek.
2) PIC18f4550 mikrodenetleyicisinin CCS C de gömülü yazılım komutlarının ne amaçla kullanıldığını öğrenmek.
3) C# arayüz kontrol panelinin ve gömülü yazılımın  proteus ortamında ve gerçek devrede testinin gerçekleştirebildiğimizi göstermek.


TEORİK BİLGİLER
   Mikroişlemci : Bilgisayara yüklenen programların tüm işlemlerini yerine getiren birimdir ve CPU( Central Processing Unit) olarak da adlandırılır. Mikro işlemciler içerisinde RAM ,ROM, I/O ünitesi bulunmadığı için bunlar kart üzerinde mikroişlemciyle birlikte kart üzerine monte edilir.

    Mikrodenetleyici : Bir tüm devre üzerinde üretilen birime denir. Mikrodenetleyici içerisinde RAM, ROM,EEPROM,RTC,ADC BİRİMİ,PWM BİRİMİ,I2C,USB,UART RS232/RS485 birimlerini içerir.

  RS-232 İletişim Protokolü : Bilgisayar ile Mikrodenetleyici/mikroişlemci içeren devrelerde iletişim kurmamıza yarayan iletişim protokolüdür . Bu iletişim protokolünde tek bir hattan veri gönderilip tek hattan veri alınır paralel iletişime göre yavaş olmasına rağmen uzun mesafelerde kullanılır ve maliyet olarak da düşüktür. Bu seri iletişim ile ilgili temel kavramların tanımlarını yazacak olursak;
1) Start (başlangıç ) biti : Bu alıcıya veri gönderiminin başlandığını bildirir
2) Stop(Bitiş) biti : Bu ise alıcıya gönderilecek bilginin bittiğini belirtir stop biti 1 veya           2 olabilir.
3) Parity(Eşlik) biti : Bu ise alıcı tarafından alınan bilginin iletilip iletilmediğini kontrol          etmek için kullanılır .
4) Baund Rate : Bu ise gönderilecek verinin hızını belirtir.

   Max232 : Seri iletişimlerde sıklıkla kullanılan bu entegrenin Rx bacağı yüksek seviyeli RS-232 sinyalini düşük seviyeli TTL sinyaline çevir iken Tx bacağı ise düşük seviyeli TTL sinyalini yüksek seviyeli RS-232 sinyaline çevirmek için kullanılır.

   Led : Işık yayan diyotlar olarak adlandırılır. Temelinde ise üzerinden geçen elektrik akımı ile katkılandığı maddenin cinsine göre kırmızı, yeşil, mavi gbi ışık yayan yarı iletken malzemelerdir. Elektronik devrelerde ledin uzun bacağı anot(+) , kısa bacağı ise katot (-) dikkat ederek devreye bağlanmalıdır.

   2×16 LCD Ekran : LCD ekrana uygulanan gerilim ile yapı içerisinde oluşan elektrik alan meydana gelir . Elektrik alan etkisiyle kutuplanan sıvı kristaller ekranın en alt tabakasından  gelen ışığı tek fazlı geçirir ve önüne eklenen bir kutuplanma filtresi ile ışığın görünmesi ve ekran üzerinde resim,fotoğraf veya yazı karakterlerinin görünmesi sağlanır. dayanan bir görüntü teknolojisidir.

MALZEME LİSTESİ
Proje kapsamında teorik bilgiler verildikten sonra projenin devamı için gerekli olan malzemeler aşağıdaki tabloda yer verilmiştir.

MALZEME ADI MALZEME ADET MALZEME ADI MALZEME ADET
Breadboard 2 Data Kabloları N TANE
PIC18F4550 1 Kırmızı Led 1
MAX232 1 Yeşil Led 1
D Tipi Erkek Konnektör 1 Mavi Led 1
D Tipi Dişi Konnektör 1 Beyaz Led 1
8 Mhz Kristal 1 10 Kohm Potansiyometre 1
15 pF Kondonsatör 2 10 Kohm 1
100 nf Kondonsatör 1 330 ohm 4
1 nf Kondonsatör 1 100 ohm 1
1 uf  Kondonsatör 4
USB RS232 Dönüştürücü 1
2×16 Karakter LCD 1

ŞEMATİK DEVRE
Bu projenin şematik bölümü Proteus ISIS programının 7.10 sürümünde çizilmiştir. Şematik kısmına bakıldığında mikrodenetleyicinin VDD kısına 100 nf ve Vusb kısmına 1 nf kondansatör kullanılmıştır. Bu nedeni ise sinyal üzerinde oluşabilecek gürültüyü bu kondansatör üzerinden toprağa aktarmak için kullanılmıştır.

Proteus Resim-2
KAYNAK KODLARI
Bu projenin gömülü yazIlımı CCS C derleyecisinin 5.0.1 sürümünde derlenmiştir. Komutlara bakılacak olursa her satır yanında ‘ // ‘ ifadelerinin yanında açıklamaları bulunmaktadır . LCD ekrana ait kütüphane kaynak kodlarının sonunda link olarak verilmiştir.

/*    Program Adı : RS232 ile Led Uygulaması
      Donanım     : PIC18F4550 
      Derleyici   : CSS C 5.0.1
      MCU         : 8 Mhz
      Yazar       : Adil Teoman Kurt
      Adres       : http://electrolog.blog
*/
#include
 // PIC18ff4550 Kütüphanesi dahil ediliyor
#fuses HS,CPUDIV1,NOPROTECT,NOLVP,NOBROWNOUT,NOPUT,NOWRT,NODEBUG,NOCPD
 // Konfigirasyon ayarları yapılıyor
#use delay(clock=8000000)
 // Mikrodenetleyicinin clock frekansı 8 MHz'e ayarlanıyor
#use rs232 (baud=9600,xmit=pin_C6,rcv=pin_C7,parity=N,stop=1)
 // Mikrodenetleyicinin rs-232 ayarları yapılıyor
#use fast_io(b)
 // Port Yönlendrime Komutları B portu için Geçerli
#use fast_io(d)
 // Port Yönlendrime Komutları D portu için Geçerli

/* -- LCD ekranın pin ayarları yapılıyor -- */
#define LCD_ENABLE_PIN PIN_d6
#define LCD_RS_PIN PIN_d7                                  
#define LCD_RW_PIN FALSE
#define LCD_DATA4 PIN_d5                                 
#define LCD_DATA5 PIN_d4                                   
#define LCD_DATA6 PIN_d3                                   
#define LCD_DATA7 PIN_d2

#include// LCD ekran kütüphanesi ekleniyor

//B portunun ilk 6 biti led1,led2,... ile lişkilendiriliyor
#bit led1=0xf81.0
#bit led2=0xf81.1
#bit led3=0xf81.2
#bit led4=0xf81.3
#bit led5=0xf81.4
#bit led6=0xf81.5
char veri;

void main()
{
//B portu ile D portu ilişkilendiriliyor
set_tris_b(0);
set_tris_d(0);

lcd_init();//LCD ekrnan başlatılıyor
printf(lcd_putc,"\felectrolog.blog");
  //2x16  LCD ekrana yazı yazdırılıyor
delay_ms(500);
  // 500 ms bekleme fonksiyonu çalıştırılıyor
printf(lcd_putc,"\nRS-232 Uygulama");
//2x16  LCD ekrana yazı yazdırılıyor
delay_ms(2000);
// 2000 ms bekleme fonksiyonu çalıştırılıyor
printf(lcd_putc,"\fC# Uygulamasi");
//2x16  LCD ekrana yazı yazdırılıyor
delay_ms(500);
// 500 ms bekleme fonksiyonu çalıştırılıyor
printf(lcd_putc,"\nLED YAKMA");
//2x16  LCD ekrana yazı yazdırılıyor
delay_ms(2000);
// 2000 ms bekleme fonksiyonu çalıştırılıyor

while(true)
{
veri=getchar();//PC den gelen mesaj alınıp veri kutucuguna aktarılıyor
if (veri=='A')// PC den A karakteri geldiği zaman  1. Led yanar
{
 led1=1;
 printf(lcd_putc,"\fLED1 YANDI");
 delay_ms(20);
 printf("1.LED YANDI\n");
}
if(veri=='B')// PC den B karakteri geldiği zaman  1. Led söner
{
 led1=0;
 printf(lcd_putc,"\fLED1 SONDU");
 delay_ms(20);
 printf("1.LED SONDU\n");
}
if(veri=='C')// PC den C karakteri geldiği zaman  2. Led yanar
{
 led2=1;
 printf(lcd_putc,"\fLED2 YANDI");
 delay_ms(20);
 printf("2.LED YANDI\n");
}
if(veri=='D')// PC den C karakteri geldiği zaman  2. Led söner
{
 led2=0;
 printf(lcd_putc,"\fLED2 SONDU");
 delay_ms(20);
 printf("2.LED SONDU\n");

}
if(veri=='E')// PC den E karakteri geldiği zaman  3. Led yanar
{
 led3=1;
 printf(lcd_putc,"\fLED3 YANDI");
 delay_ms(20);
 printf("3.LED YANDI\n");
}
if(veri=='F')// PC den F karakteri geldiği zaman  3. Led söner
{
 led3=0;
 printf(lcd_putc,"\fLED3 SONDU");
 delay_ms(20);
 printf("3.LED SONDU\n");
}
if(veri=='G')// PC den G karakteri geldiği zaman  4. Led yanar
{
 led4=1;
 printf(lcd_putc,"\fLED4 YANDI");
 delay_ms(20);
 printf("4.LED YANDI\n");
}
if(veri=='H')// PC den H karakteri geldiği zaman  4. Led söner
{
 led4=0;
 printf(lcd_putc,"\fLED4 SONDU");
 delay_ms(20);
 printf("4.LED SONDU\n");
}
}
}

 

 

C# ARAYÜZ PANELİ
Bu projenin arayüz programı Microsoft Visual Stiduo programının C# bölümü ile oluşturulmuştur . Programın ‘Verilerin Gönderilmesi’ bölümü ile ledlerin durumu kontrol edilirken ‘Verilerin Alınması’ bölümü ise  PIC18f4550 den PC ye gönderilen verilerin alınıp yazıldığı kısımdır.

Rs-232 C#

DEVRENİN VİDEOSU
Bu projede hazırlanan C# programına ait  arayüzünün hem proteus ISIS programı ile similasyonun hemde gerçek elektronik devresi ile ilgili çalışmasını anlatan videoya ya C# +PIC18f4550+ Proteus ISIS ifadesine basarak izleyebilirsiniz.

EK DOSYALAR 

    Bu bölüm ise C# arayüz panelinin .exe dosyasını , gömülü yazılımının .hex dosyasını ve bu yazılımı içerisinde kullanılan LCD ekranın kütüphane dosaysını içermektedir.

https://drive.google.com/file/d/0B_aQGEZxbOrHczFQTU5HZ0pzY2s/view?usp=sharing

3 comments

  1. merhabalar proje için tesekkurler . Verileri c# tarafında nasıl alıyorsunuz . Örnegin sizin projenizdeki sekılde pic den c# a veri gönderiyorum ancak c# tarafında bu veriyi okuyamıyorum. Arduino ile aynı projeyi yaptıgımda c# da sorunsuz okuyorum bu kısım ile ilgili detay verebilir misiniz ?

    Beğen

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.