renk sensörü ödevimde yardım!!!

asders

Üye
Katılım
22 Şub 2010
Mesajlar
25
Puanları
1
direnç,kondansatör,ayarlanabilir direnç,indüktans,led,foto direnç kullanarak bir renk sensörü yapmam gerekiyor ama nasıl yapacagım konusunda hiç bir fikrim yok:(:(
bu sensör ile 5 farklı renk için farklı bir led yanacak
 
direnç,kondansatör,ayarlanabilir direnç,indüktans,led,foto direnç kullanarak bir renk sensörü yapmam gerekiyor ama nasıl yapacagım konusunda hiç bir fikrim yok:(:(
bu sensör ile 5 farklı renk için farklı bir led yanacak

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

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

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


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-baski-devre-150x150.png


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.

Devre şeması ve baskı devre alt üst görünüm

pic16f877-picbasic-pro-renk-algilayici-devre-semasi.png


pic16f877-picbasic-pro-renk-algilayici-baski-devre.png


pic16f877-picbasic-pro-renk-algilayici-pcb.png

Devreye ait mikrodenetleyici kodları MicroCode Studio Plus – PICBASIC 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


ALINTIDIR
 
cok tesekkür ederim ama benim istediğim devrede opamp 741 entegresi,led,fotodirenç,direnç falan kullanıllacak pic olmayacak ama yinede eline sağlık tesekkürler ...
 
onun içinde bir araştırırım bulabilirsem yardımcı olmaya çalışırıö kolay gelsin
 
Renk sensörleri üzerine bu ara araştırma yapıyorum da elime güzel bir video geçti paylaşmak istedim.

bu arada incelemelerime göre, renk sensörleri var, fabrikalarda kullanılacak düzeyde kaliteli lakin bunların fiyatları uçuk.
kendi imalatımız olan sensörlere gelince gerek yerli gerekse yabancı kaynaklara baktığımda hep ldr ve led den oluşan algılayıcılar yapılmış. temel mantık, sensör üzerinden gönderilen ışığın (ledlerle) kendi renginden yansıması ve ldr nin direncini değiştirmesi esasına dayanıyor. ya da aydınlık havada nesneler kendi rengini yansıtır, renk filtrelerinden geçirerek hangi ldr nin değeri farklısa oradan rengi tespit edebiliriz... sağlıcakla

$2 Color Detection Sensor | Let's Make Robots!
 

Forum istatistikleri

Konular
128,357
Mesajlar
916,985
Kullanıcılar
450,217
Son üye
hshshjsjsh

Yeni konular

Geri
Üst