Rs-232 ile Labview ve PIC18F4550 Kullanılarak Led Yakıp Söndürme Projesi

Merhaba arkadaşlar bugün sizlerle  LABVIEW 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 , kendin yap projelerinde yer alan PLC devrelerinin temelini oluşturması ,PIC serisinin ŞİRKETLER tarafından tercih edilmesi ve Ülkemizde otomasyon sistemlerinin kontrol edilmesinde LABVIEW programın 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. Labview arayüz programı ile gerçek elektronik devreye gereksinim duymadan  hem elektronik devrenin hemde gömülü yazılımın proteus ortamında nasıl test edilir sorusuna cevap vermek.

TEORİK BİLGİLER

  1. 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.
  2. 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.
  3. RS-232: 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;
  4.  Start (başlangıç ) biti : Bu alıcıya veri gönderiminin başlandığını bildirir
  5. Stop(Bitiş) biti : Bu ise alıcıya gönderilecek bilginin bittiğini belirtir stop biti 1 veya  2 olabilir.
  6. Parity(Eşlik) biti : Bu ise alıcı tarafından alınan bilginin iletilip iletilmediğini  kontrol etmek için kullanılır .
  7. Baund Rate : Bu ise gönderilecek verinin hızını belirtir.
  8. 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.
  9.  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.
  10. 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ında  ç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ü yazılımı CCS C derleyicisinin 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
      Yazan       : 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);
//B portu çıkış olarak ayarlanıyor
set_tris_d(0);
//D Portu çıkış olarak ayarlanıyor

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,"\fLabview Uyg.");
//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 kutucuğuna aktarılıyor
 if (veri=='A')// PC den A karakteri geldiği zaman  1. Led yanar
 {
  led1=1;
  printf(lcd_putc,"\fLED1 YANDI");//LCD ekrana Yazı yazdırılıyor
  delay_ms(20);
  printf("1.LED YANDI\n");//PC'ye string gönderiliyor
 }
 if(veri=='B')// PC den B karakteri geldiği zaman  1. Led söner
 {
  led1=0;
  printf(lcd_putc,"\fLED1 SONDU");//LCD ekrana Yazı yazdırılıyor
  delay_ms(20);
  printf("1.LED SONDU\n");//PC'ye string gönderiliyor
 }
 if(veri=='C')// PC den C karakteri geldiği zaman  2. Led yanar
 {
  led2=1;
  printf(lcd_putc,"\fLED2 YANDI");//LCD ekrana Yazı yazdırılıyor
  delay_ms(20);
  printf("2.LED YANDI\n");//PC'ye string gönderiliyor
 }
 if(veri=='D')// PC den C karakteri geldiği zaman  2. Led söner
 {
 led2=0;
 printf(lcd_putc,"\fLED2 SONDU");//LCD ekrana Yazı yazdırılıyor
 delay_ms(20);
 printf("2.LED SONDU\n");//PC'ye string gönderiliyor
 }
 if(veri=='E')// PC den E karakteri geldiği zaman  3. Led yanar
 {
  led3=1;
  printf(lcd_putc,"\fLED3 YANDI");//LCD ekrana Yazı yazdırılıyor
  delay_ms(20);
  printf("3.LED YANDI\n");//PC'ye string gönderiliyor
 }
 if(veri=='F')// PC den F karakteri geldiği zaman  3. Led söner
 {
  led3=0;
  printf(lcd_putc,"\fLED3 SONDU");//LCD ekrana Yazı yazdırılıyor
  delay_ms(20);
  printf("3.LED SONDU\n");//PC'ye string gönderiliyor
 }
 if(veri=='G')// PC den G karakteri geldiği zaman  4. Led yanar
 {
  led4=1;
  printf(lcd_putc,"\fLED4 YANDI");//LCD ekrana Yazı yazdırılıyor
  delay_ms(20);
  printf("4.LED YANDI\n");//PC'ye string gönderiliyor
 }
 if(veri=='H')// PC den H karakteri geldiği zaman  4. Led söner
 { 
  led4=0;
  printf(lcd_putc,"\fLED4 SONDU");//LCD ekrana Yazı yazdırılıyor
  delay_ms(20);
  printf("4.LED SONDU\n");//PC'ye string gönderiliyor
 }
 }
}

LABVIEW ARAYÜZ PANELİ
Bu projenin arayüz programı Labview  programında  oluşturulmuştur . Programın ‘Veri Gönderilmesi’ bölümü ile ledlerin durumu kontrol edilirken ‘Veri Alınması’ bölümü ise  PIC18f4550 den PC ye gönderilen verilerin alınıp yazıldığı kısımdır. Gerçek devrenizde kullandığınız USB RS-232 dönüştürücüye ait comport değerini bilgisayarınızdan doğru girmeyi unutmayınız.

Labview rs232

DEVRENİN VİDEOSU

Bu projede hazırlanan Labview 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 Labvıew +PIC18f4550+ Proteus ISIS ifadesine basarak izleyebilirsiniz.

EK DOSYALAR 

Bu bölüm ise Labview 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 dosyasını içermektedir.

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

BİLGİLENDİRME

   Proje hakkında  merak ettiklerinizi  iletişim adresinden sorabilir veya yorum kısmına yazabilirsiniz.

Bir Cevap Yazın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.