TCS3200 / TCS230 Renk Sensörü
Renk sensörleri, karmaşık otomasyon sorunlarına daha güvenilir çözümler sunar. Gıda ve içecek, otomotiv ve imalat sanayi, giyim imalat sektöründe kumaşın rengini tespit etmek gibi çeşitli sektörlerde malzeme tespiti, parçalar üzerindeki renk işaretlerinin tespiti, üretim sürecindeki adımların doğrulanması gibi amaçlarla kullanılırlar. Pahalı renk sensörleri endüstriyel uygulamalarda kullanılırken, TCS3200/TCS230 renk sensörü gibi ucuz sensörler daha az katı gereksinimlere sahip uygulamalar için kullanılabilir.
TCS3200 renk sensörü, üzerindeki foto diyotlar aracılığıyla gördüğü rengi algılayıp çıkış veren bir sensördür. TCS3200, bir nesnenin yansıttığı veya yaydığı ışığın rengini ölçmek için tasarlanmıştır. Dalga boylarına bağlı olarak çok çeşitli renkleri algılayabilir. Sensör, TCS3200 ya da TCS230 olarak adlandırılır.

Bu sensör özellikle renk eşleştirme, renk sınıflandırma, test şeridi okuma ve çok daha fazlası gibi renk tanıma projeleri için kullanışlıdır. TCS3200 renk sensörü, rengi algılamak için bir TAOS TCS3200 RGB sensör çipi kullanır. Ayrıca önündeki nesneyi aydınlatan dört beyaz LED içerir.
Sensör, bir dizi filtre ve foto diyot içerir. Filtreler, gelen ışığı kırmızı, yeşil ve mavi renk bileşenlerine ayırır ve foto diyotlar bu bileşenlerin yoğunluğunu ölçer. Bu yoğunluk değerleri, RGB renk uzayında rengin temsil edilmesini sağlar.
TCS3200 / TCS230 Renk Sensörünün Yapısı ve Çalışması
1. TCS3200/TCS230 Çip: Modülün kalbi, sensörün kendisine de adını veren TCS3200 (veya bazı versiyonlarda TCS230) entegresidir. Bu çip, "Programlanabilir Renk Işığı - Frekans Dönüştürücü" (Programmable Color Light-to-Frequency Converter) olarak sınıflandırılır.
Çip, nesneden yansıyan ışığın rengini algılamak için, “Bayer Filtresi” ne benzer yapıdaki renk duyarlı mikro-optik filtrelerden oluşan bir ızgara ve altında bir dizi foto diyottan oluşur. Bu filtreler ve foto diyotlar, 8 x 8'lik bir matris şeklinde dizilmiştir. 8 x 8 = 64 adet filtre ve altında 64 adet foto diyot yer almaktadır. Foto diyotlar 110 μm x 110 μm boyutlarındadır ve 134 μm aralıklarla yerleştirilmiştir.

Bu 64 adet foto diyotun her biri belirli bir renk filtresine sahiptir:
16 adet Kırmızı (Red) filtreli foto diyot.
16 adet Yeşil (Green) filtreli foto diyot.
16 adet Mavi (Blue) filtreli foto diyot.
16 adet Filtresiz (Clear) foto diyot (Işığın toplam şiddetini ölçer).
TCS3200; görünür spektrumda sırasıyla yaklaşık 470 nm (Mavi), 524 nm (Yeşil) ve 640 nm (Kırmızı) dalga boylarında mikro-optik filtrelere ve bir de geniş bantlı şeffaf (Clear) filtreye sahiptir. Filtreler renkleri ayırırken, foto diyotlar ise ışık miktarını ölçerler. Böylelikle sensör, neredeyse sonsuz sayıda görünür rengi algılayabilen ve ölçebilen eksiksiz bir renk dedektörü haline gelir.
2. R1 - R9 Dirençleri: Bu dirençler genellikle beyaz LED'lerin akımını sınırlamak ve kontrol pinlerini (S0-S3) kararlı tutmak için kullanılır.
3. C1 - C2 Kapasitörleri: Çipin güç girişindeki gürültüyü filtreler.
4. LED'ler: Çipin hemen etrafındaki 4 büyük beyaz ışık kaynağı, U1 çipinin nesneyi her zaman aynı ışık altında "görmesini" sağlar. LED'ler modül çalıştırıldığında yanar ve algılanan nesneyi aydınlatmak için kullanılır. Aynı zamanda ortam ışığının (oda lambası, güneş vb.) yanıltıcı etkisini de azaltır. Bu LED'ler sayesinde sensör, nesnenin rengini veya parlaklığını karanlık ortamda da belirleyebilir.
TCS3200 / TCS230 Sensörünün Çalışması
Sensörün çalışmasını anlatmadan önce renklerin nasıl göründüğüne bakalım. Beyaz ışık, farklı dalga boylarına sahip üç ana renkten (kırmızı, yeşil ve mavi) oluşur. Bu renkler birbirleriyle birleşerek farklı renk tonları oluşturur. Beyaz ışık herhangi bir yüzeye düştüğünde, yüzey malzemesinin özelliklerine bağlı olarak ışığın bazı dalga boyları emilir, bazıları ise yansıtılır. Aşağıdaki resimde de görüldüğü üzere gördüğümüz renk, gözlerimize geri yansıyan dalga boylarının bir sonucudur.

Sensör 4 beyaz LED ile herhangi bir nesneye ışık gönderdiğinde, nesneden yansıyan ışık aşağıda gösterildiği gibi çip üzerindeki filtrelere gelir. Her filtre, kendi rengiyle aynı olan ışığı geçirirken, şeffaf filtreler ise ışığı olduğu gibi geçirir. Filtreden geçen ışık foto diyot üzerine düşer.

Foto diyot, ışığı akıma dönüştüren bir yarı iletken cihazdır. Foto diyotlar ışığı algıladığında, çip içerisinde bulunan Akım-Frekans Dönüştürücü (Current-to-Frequency Converter), foto diyotlardan gelen akımla doğru orantılı olarak bir kare dalga (square wave) sinyali üretir. Işık yoğunluğu ne kadar güçlüyse, çıkıştaki frekans o kadar yüksek olur. Parlak ışık/yoğun renk daha yüksek frekans, düşük ışık/zayıf renk ise daha düşük frekans demektir. Tipik çıkış frekansı, %50 görev döngüsünde 2 Hz ile 500 kHz arasındadır. Kırmızı, yeşil ve mavi ışığın yoğunluk seviyeleri ölçülerek nesnenin rengi belirlenir.
Sensör aynı anda tüm renkleri okumaz. Mikro denetleyici üzerinden sensörün S2 ve S3 pinlerine gönderilen HIGH/LOW kombinasyonları ile o an hangi renk filtrelerine ait foto diyotların aktif olacağı seçilir. Örneğin, S2 ve S3 pinleri ile "Kırmızı" mod seçildiğinde, sensör sadece kırmızı filtreli foto diyotlardan gelen veriyi işleme alır ve diğerlerini görmezden gelir.
Sensörde, çıkış frekansını ölçeklendirmek için kullanılan S0 ve S1 olmak üzere iki kontrol pini daha bulunmaktadır. Frekans, %2, %20 veya %100 olmak üzere üç farklı değere ölçeklendirilebilir. Bu frekans ölçeklendirme işlevi, sensörün çeşitli mikrodenetleyiciler ve diğer cihazlarla kullanılmasını sağlar. Genellikle Arduino projelerinde kararlılık için %20 modu tercih edilir.
Renk Nasıl Belirlenir?
Sensör nesneye bakar ve sırayla şu soruları sorar:
"Bu yüzeyden ne kadar Kırmızı ışık yansıyor?" (Frekans 1)
"Bu yüzeyden ne kadar Yeşil ışık yansıyor?" (Frekans 2)
"Bu yüzeyden ne kadar Mavi ışık yansıyor?" (Frekans 3)
Sensör doğrudan "bu renk şudur" demez. Her bir ana rengin yansıma yoğunluğunu temsil eden sayısal frekans değerlerini mikro denetleyiciye gönderir. Mikro denetleyici ile bu yoğunluklar alındıktan sonra aralarındaki orana bakılır. Örneğin; Kırmızı ve Yeşil yoğunluğu çok yüksek, Mavi çok düşükse; Mikro denetleyici bunun bir "Sarı" olduğunu anlar ya da üç yoğunluk da birbirine çok yakın ve yüksekse; bu "Beyaz" veya çok açık bir renktir.
TCS3200'de "Clear" (Filtresiz) foto diyotlar olduğundan bahsetmiştik. Bu foto diyotlar, renklerden bağımsız olarak toplam ışık yoğunluğunu ölçer. Bu veri, ortamın ne kadar aydınlık olduğunu anlayıp diğer renk yoğunluklarını "kalibre etmek" için kullanılır.
TCS3200 / TCS230 Sensörünün Pin Yapısı

VCC :Modüle güç sağlar. 2,7V ila 5,5V arası güç kaynağına bağlanır.
GND :Bu pin topraklama pinidir.
OE :Çıkış etkinleştirme pinidir. Bu pin nadiren kullanılır ve çoğu modülde kalıcı olarak LOW durumundadır. Eğer değilse, LOW durumuna çekin.
S0 , S1 :Frekans ölçeklendirmesi için kullanılan pinlerdir.
S2 , S3 :Hangi renk filtrelerine ait foto diyotların aktif olacağı bu pinler ile seçilir. Kısaca renk seçimi yapılır.
OUT :Çıkış pinidir. TTL seviyesinde kare dalga sinyali gönderir.

TCS3200/TCS230 renk sensörü çok hassas bir sensör değildir. Ancak basit projelerde renkleri algılamak için gayet iyi çalışır. Foto diyotlar her ışık dalga boyuna eşit şekilde tepki vermediğinden, sonuçlar üç renk arasında doğrusal değildir. Bu doğrusal olmama durumları, mikro denetleyici tarafından telafi edilmeye çalışılır. Çoğu uygulamada, sonuçların doğrusal olmaması veya çıktının gerçek RGB değerleri olmaması aslında önemli değildir. Tespit etmeye çalıştığımız hangi renkte hangi değeri verdiğidir. Bunu bilmek genellikle yeterlidir. Bazı TCS230 ve TCS3200 modüllerinde, performansı artırmak için resimdeki gibi ışık kalkanı veya lens bulunur.
TCS3200 / TCS230 Sensörünün Arduino İle Kullanımı

Sensörden Verilerin Okunması
Sensör, foto diyotlardan gelen akımla doğru orantılı olarak bir kare dalga sinyali üretir demiştik. Yaptığımız uygulamalarda, pulseIn(); komutuyla bu kare dalganın LOW kısmının süresini (darbe genişliği) mikrosaniye cinsinden ölçtük. Bu, sensörün verdiği ham değerdir. Ham değerleri ölçerken, her renk için, sensörü nesneye en yakın (rengin en yoğun olduğu durum) şekilde tutarak minimum değeri ve siyah bir yüzeye (rengin hiç olmadığı durum) tutarak maksimum değeri kaydettik. Yani kırmızı, mavi ve yeşil için maksimum ve minimum değerleri belirledik. Buna kalibrasyon işlemi denir. Unutmayın, darbe genişliği frekansın tersidir. Dolayısıyla daha kısa bir darbe genişliği daha yüksek bir frekansa karşılık gelir. Bu nedenle seri port ekranına yazdırdığımız ham değerlerden küçük olanların frekansı yüksek, renk yoğunluğu fazla iken, büyük olanların frekansı düşük, renk yoğunluğu azdır.
Daha sonra bu ham verileri kullanarak, algılanan rengin gerçek RGB değerlerine denk gelen değerlerini hesapladık. Bunun için bu ham verileri, map(); komutunu kullanarak 0 - 255 arasındaki gerçek RGB değerlerine oranladık. map(); komutunda, herhangi bir rengin maksimum ham değeri karşılığı 0’a, minimum ham değeri karşılığı 255’e eşlendi.
Örnek: Kırmızı renk için; redMin = 25 ve redMax = 125 ise;
map(kirmizi_ham_deger, redMin, redMax, 255, 0); olur.
Burada bir terslik var gibi duruyor olsa da gerçek şöyledir:
Gerçek RGB değerinde “0 = renk yoğunluğu en az”, “255 = renk yoğunluğu en çok” şeklindedir. Bizim okuduğumuz ham değerlerde ise, ham değer büyükse LOW süresi uzun yani frekans düşük dolayısıyla renk yoğunluğu az demektir. Bu nedenle redMax, 0 ile eşleşmiştir. Ham değer küçükse de tam tersidir. Bu nedenle map(); komutu bu şekilde kullanılır.
map(); komutu “kirmizi_ham_deger” değişkeninin değeri, redMin ve redMax aralığı dışına çıksa bile, bu orantıyı bozmadan hesaplamaya devam eder. TCS3200 sensörü stabil değer üretemediği için ve ortam ışığından etkilendiği için, bu maksimum ve minimum değerleri dışına çıkabilir ve böyle bir durumda seri port ekranında 255 üstü ve 0 altı değerler görebiliriz. Bunu önlemek için komutları şu şekilde kullanabiliriz:
sonuc = map(kirmizi_ham_deger, redMin, redMax, 255, 0);
sonuc = constrain(sonuc, 0, 255);
constrain komutunu kullandığımızda, “sonuc” değişkeni 0'dan küçükse 0 yap, 255'ten büyükse 255 yap anlamına gelir.
Renklerin Oluşumu

R, G, B’nin 0 ile 255 arasındaki aldığı değerlere göre ara renkler oluşur.
NOT: Sensörün verdiği değerler ortamdaki ışık durumuna göre değişiklik gösterebilir. Bu nedenle maksimum ve minimum değerlerde de bazı farklılıklar olabilir. Uygulama yapılırken buna dikkat edilmelidir.
0 comments:
Yorum Gönder