Elektronik Devre Şemaları, Projeler, Bilgiler: Blog 320volt

PIC16F877 İle lcd göstergeli renk algılayıcı devresi

PIC 16F877 İLE RENK ALGILAYICI DEVRESİ PICBASIC PRO

Bu devrede PIC 16f877 mikrodenetleyicisi kullanılarak LCD (Liquid Crystal Display) üzerinde renk algılayıcı uygulaması yapılmıştır. Devre tasarımı ve baskı devre işlemleri için Proteus ISIS ve Proteus ARES programları kullanılmıştır. Devrenin çalışma mantığı kapalı bir ortamda LDR’nin sırayla yanıp sönen ledlerin yaydığı ışıktan etkilenerek direncini değiştirmesi esasına dayanır.

LDR önüne konan cisimden yansıyan ışığın etkisiyle analog bir sinyal üretir bu sinyal 16F877 mikrodenetleyicisinin ADC pinlerinden PORTA.0 ‘a girilerek ölçüm yapılır. Bu devrede daha önce belirlenmiş renkli kartonlar LDR önüne konarak her rengin kendine ait sinyal tablosu çıkarılmıştır.

led-rengi-renk-toblosu

Elde edilen tablodan MAVİ rengin toplamda 515-525 aralığında YEŞİL rengin 505-515 aralığında KIRMIZI renginse 490-500 aralığında olduğu gözlenmiştir. Bu değerler kullanılarak LDR önüne konan cismin rengi algılanmaktadır. Ölçüm yaparken cisimle LDR ve ledlerin önünü tamamen kapatmalısınız.

LDR BAĞLANTISI

ldr-baglantisi

LDR şekildeki gibi üç ledin ortasında olacak şekilde delikli pertinaksa lehimlenir ve direnç bağlantıları yapılır. Daha sonra devremizin sensör kısmını kapatacak şekilde herhangi bir kutu, kapak vs. ve ledlerin etrafını kapatmak için siyah renkli kartondan bir üçgen şekli yapılır.

NOT: Devre içinde LDR’den gelen sinyal kablosuna paralel bir led koyarsanız bu değerlere yakın değerler bulursunuz. Değerleri bu şekilde bulmak için direnç denedim ama elimde 330Ω’dan küçük direnç olmadığı için çok küçük değerler çıkıyordu bende led bağladım :)

Ön panel Görünümü

renk-algilayici-on-panel-lcd-buton

1: Renk algılama işlemine başlama butonu

Devre şeması ve baskı devre alt üst görünüm
pic16f877-picbasic-pro-renk-algilayici-devre-semasi pic16f877-picbasic-pro-renk-algilayici-baski-devre pic16f877-picbasic-pro-renk-algilayici-pcb

NOT: Bu devreyi kronometre ve geri sayım devresinde kullanmak için yapmıştım dolayısıyla yanyana olan 10kΩ dirençlerden sadece PORTA.4 pinine direnç bağlamalısınız.

Malzeme listesi ve fiyatlar

renk-algilama-malzeme-listesi

Devreye ait mikrodenetleyici kodları MicroCode Studio PlusPICBASIC PRO derleyicisinde yazılmış ve derlenmiştir. Derleme işlemi için bilgisayarınızda PBP246 ve MPASM assembly derleyici dosyaları bulunmalıdır.

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2009 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 07.04.2009                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
PORTA=0:PORTB=0:PORTC=0
TRISA=%00010001    'Bit0 ve bit 2 giriş diğerleri çıkış yapıldı
TRISB=%00000001    'PortB tuş takımı için ayarlandı 1-2-3 giriş diğerleri çıkış
TRISC=%10000000    '7. bit'e tuş bağlandı giriş oldu          '

'-----------------------------------------------------------------
@ DEVICE PIC16F877                      'işlemci 16F876
@ DEVICE PIC16F877, WDT_on              'Watch Dog timer açık
@ DEVICE PIC16F877, PWRT_ON             'Power on timer açık
@ DEVICE PIC16F877, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE PIC16F877, XT_OSC              'XT osilatör kullanılacak
'-----------------------------------------------------------------
DEFINE LCD_DREG		PORTB	'LCD data bacakları hangi porta bağlı?
DEFINE LCD_DBIT		4		'LCD data bacakları hangi bitten başlıyor?
DEFINE LCD_EREG		PORTB	'LCD Enable Bacağı Hangi Porta bağlı?
DEFINE LCD_EBIT		3		'LCD Enable Bacağı Hangi bite bağlı ?
define LCD RWREG    PORTB   'LCD R/W Bacağı Hangi Porta bağlı?
define LCD_RWBIT    2       'LCD R/W Bacağı Hangi bite bağlı ?
DEFINE LCD_RSREG	PORTB	'LCD RS Bacağı Hangi Porta bağlı ?
DEFINE LCD_RSBIT	1		'LCD RS bacağı Hangi Bite bağlı  ?
DEFINE LCD_BITS		4		'LCD 4 bit mi yoksa 8 bit olarak bağlı?
DEFINE LCD_LINES	2		'LCD Kaç sıra yazabiliyor
DEFINE OSC 4
DEFINE ADC_BITS	  8	        'A/D çevirim sonucu kaç bit olacak
DEFINE ADC_CLOCK  3	        'Clock kaynağı (3=rc)
DEFINE ADC_SAMPLEUS  100
'-----------------------LCD KARAKTER TANIM [BAŞLA]------------------------
LCDOUT $FE,$40, $04, $00, $0E, $04, $04, $04, $0E, $00   'CGRAM 0. "İ"
LCDOUT $FE,$48, $0E, $11, $10, $10, $11, $0E, $04, $00   'CGRAM 1. "Ç"
LCDOUT $FE,$58, $00, $0E, $11, $11, $11, $11, $0E, $00   'CGRAM 3. "LED OFF"
LCDOUT $FE,$60, $00, $0E, $1F, $1F, $1F, $1F, $0E, $00   'CGRAM 4. "LED ON"
'----------------------LCD KARAKTER TANIM [BİTİŞ]-----------------------
OPTION_REG.7=1   'Pull up dirençleri İPTAL
ADCON1=%00000100 'PORTA.0 VE PORTA.1 ANALOG DİĞERLERİ DİGİTAL
HAM     VAR BYTE
KIRMIZI VAR BYTE
YESIL   VAR BYTE
MAVI    VAR BYTE
SYMBOL  TUS=PORTA.4
symbol  LED_KIR=PORTA.1
SYMBOL  LED_YES=PORTA.2
SYMBOL  LED_MAV=PORTA.3
INPUT PORTA.0
'------------------------------------------------------------------------
LOW PORTB.2
LCDOUT $FE,1
PAUSE 300
LCDOUT $FE,$86, "RENK"
LCDOUT $FE,$C0,"ALGILAMA ","S",0,"STEM",0
PAUSE 1500
'----------------------------OKUMA OLCME [BAŞLA]---------------------------
BASLA:
      LCDOUT $FE,1,  "ALGILAMA ",0,1,0,"N"
      LCDOUT $FE,$C0,"BUTON'A BASIN..."
      PAUSE 200
      IF TUS=0 THEN ALGILA
      GOTO BASLA
ALGILA:
      LCDOUT $FE,1
      HIGH LED_KIR
      LCDOUT $FE,$80,  "C",0,"SM",0,"N  RENG",0,"N",0
      LCDOUT $FE,$C0,"ALGILIYOR   ",3,3,4
      PAUSE 200
      GOSUB ADCAL
      KIRMIZI=HAM
      PAUSE 200
      LOW LED_KIR

      HIGH LED_YES
      LCDOUT $FE,$80,  "C",0,"SM",0,"N  RENG",0,"N",0
      LCDOUT $FE,$C0,"ALGILIYOR   ",3,4,3
      PAUSE 200
      GOSUB ADCAL
      YESIL=HAM
      PAUSE 200
      LOW LED_YES

      HIGH LED_MAV
      LCDOUT $FE,$80,  "C",0,"SM",0,"N  RENG",0,"N",0
      LCDOUT $FE,$C0,"ALGILIYOR   ",4,3,3
      PAUSE 200
      GOSUB ADCAL
      MAVI=HAM
      PAUSE 200
      LOW LED_MAV

'-----------------OKUMA OLCME [BİTİŞ]----------------------------------      

RENK_BUL:
        IF KIRMIZI+YESIL+MAVI=>490 AND KIRMIZI+YESIL+MAVI=<500 THEN GOTO KIRMIZI_RENK
        IF KIRMIZI+YESIL+MAVI=>505 AND KIRMIZI+YESIL+MAVI=<515 THEN GOTO YESIL_RENK
        IF KIRMIZI+YESIL+MAVI=>515 AND KIRMIZI+YESIL+MAVI=<525 THEN GOTO MAVI_RENK           

      LCDOUT $FE,1,  "OKUMA VEYA HESAP"
      LCDOUT $FE,$C0," HATASI VAR  !!!"
      pause 2000
      goto BASLA

KIRMIZI_RENK:
      LCDOUT $FE,1,  "C",0,"SM",0,"N RENG",0,"  "
      LCDOUT $FE,$C0,"==> KIRMIZIDIR"
      PAUSE 100
      IF TUS=0 THEN GOTO BASLA
      GOTO KIRMIZI_RENK
YESIL_RENK:
      LCDOUT $FE,1,  "C",0,"SM",0,"N RENG",0,"  "
      LCDOUT $FE,$C0,"==>YESILDIR"
      PAUSE 100
      IF TUS=0 THEN GOTO BASLA
      GOTO YESIL_RENK
MAVI_RENK:
      LCDOUT $FE,1,  "C",0,"SM",0,"N RENG",0,"  "
      LCDOUT $FE,$C0,"==> MAVIDIR"
      PAUSE 100
      IF TUS=0 THEN GOTO BASLA
      GOTO MAVI_RENK

ADCAL:
      ADCIN PORTA.0,HAM
GIT: IF ADCON0.2=1 THEN GIT
      RETURN
      END

Teşekkür: Bu devreyi yaparken bilgilerinden yararlandığım Mine Cüneyitoğlu ve ETE hocamıza değerli bilgilerini internette paylaştıkları için teşekkür ederim.

PIC16F877 İle renk algılayıcı devresine ait tüm dosyalar isis simülasyon ares pcb ve kaynak picbasic pro yazılım dosyaları pic16f877-renk-algilayici-devresi.rar

Projenin yapım aşaması tamamlanmış hali ve test aşamalarına ait resimler

pic16f877-pic-basicpro-renk-algilayici

renk-algilayici-trimpot

renk-algilayici-led

cisim-renk-algilama-baslangic

pic16f877-pic-basicpro-renk-algilayici-2

renk-algilayici-mavi-test

renk-algilayici-yesil-test

renk-algilayici-kirmizi-test

okum-veya-hesap-hatasi-var

mavi-isik

yesil-isik



Benzer Yazılar
Robot projeleriniz için sensör, algılama örnekleri

Robot projeleriniz için sensör, algılama örnekleri

Özellikle mikrodenetleyici tabanlı robot projeleriniz için kullanabileceğiniz çeşitli sensör, algılama uygulama devreleri, örnekler ve bilgiler bulunuyor Ayrıca pic16f serisi ile hazırlanmış...

Diyot ve Transistör

Diyot ve Transistör

SAKARYA ÜNİVERSİTESİ Temel Elektronik Dersleri 7.Hafta Diyot-Transistör Diyotlar yapım tekniğine bağlı olarak; 1) Nokta temaslı diyotlar, 2) Yüzey birleşmeli diyotlar olmak üzere iki...

Verimi yüksek led dimer devresi pwm kontrol

Verimi yüksek led dimer devresi pwm kontrol

Led dimer devresinde lm358 opamplar ile pwm tekniği kullanılmış ledli el feneri olarak kullanılabilir. Proje hakkında tüm bilgiler (ingilize) verilmiş. Dosyalar:...

makas
direnc-net

Yorumlar

« Önceki 1 2 3 [4]

  • konyalı Diyor ki:

    5 metreden herhangi bir sensörle algılama yapabileceğinizi sanmam ancak bir webcam aracılığıyla bilgisayara kontrol ettirebilirsiniz

  • beyza Diyor ki:

    ben bu devreyi eksizsiz yaptım herşey normal ama lcd’ye data gelmiyor. lcd test ediyorum çalışıyor karakterler görünüyor.tekrar devreye taktığımda çalışmıyor..bunun nedeni ne olabilir ben bulamadım.yada neyı yanlış yapmış olabilirim..

  • texas Diyor ki:

    merhabalar.ben de aynı şekilde devreyi eksiksiz kurdum.LCD ve PIC normal olarak çalışıyor fakat benim sorunum algılama kısmında.LDR etrafını kapatmama rağmen hep hatalı okuma alıyorum.Bu algılama sorununun herhangi bir çözümü var mı ? yardımcı olabilirseniz sevinirim.

  • Konyalı Diyor ki:

    Beyza büyük ihtimalle lcd bağlantılarını yanlış yapıyorsun.
    Texas kullandığın ldr omajı farklı olabilir, ledlerin parlaklığından kaynaklanabilir veya algılamaya çalıştığın renklerin tonu farklıdır programda küçük değişiklikler yaparak okuduğun rengin değerini lcd de göster ve elde ettiğin değerleri kullanarak programı tekrar düzenle.
    Kolay gelsin

lutfen-dikkat

320volt.com © | Altyapı: Worpdress | Tema: Sleepy Blue’ WordPress Theme Tasarım: Eyoung | Çeviri ve Düzenleme 320volt.com