TCS230 / TCS3200 Renk Sensörünün Arduino ile Kullanımı
Renk sensörleri, karmaşık otomasyon sorunlarına daha güvenilir çözümler sağlar. Yiyecek ve içecek, otomotiv ve imalat endüstrileri dahil olmak üzere çeşitli endüstrilerde, malzeme tespiti, parçalardaki renk izlerini tespit etme, üretim sürecindeki adımları doğrulama vb. Amaçlarla kullanılırlar.
Endüstriyel uygulamalarda pahalı renk sensörleri kullanılırken, TCS230 renk sensörü gibi ucuz sensörler daha az sıkı uygulamalar için kullanılabilir.
TCS230 renk sensörü (aynı zamanda TCS3200 olarak da bilinir) oldukça popülerdir, ucuzdur ve kullanımı kolaydır. Bu renk sensörünü Arduino projemizde kullanmadan önce, bir renk sensörünün gerçekte nasıl çalıştığını görmek iyi olur.
Renk Sensörleri Nasıl Çalışır?
Beyaz ışık, farklı dalga boylarına sahip üç ana renkten (Kırmızı, yeşil ve mavi) oluşur. Bu renkler, farklı renk tonları oluşturmak için birbirleriyle birleşir.
Beyaz ışık herhangi bir yüzeye düştüğünde, yüzey malzemesinin özelliklerine bağlı olarak ışığın bir kısmı emilir ve bir kısmı yansıtılır. Gördüğümüz renk, hangi dalga boylarının gözlerimize geri yansıdığının bir sonucudur.
Şimdi sensöre dönersek, tipik bir renk sensörü, nesneye modüle edilmiş bir ışık yansıtan yüksek yoğunluklu beyaz bir LED içerir. Yansıtılan ışığın rengini algılamak için, neredeyse tüm renk sensörleri, aşağıdaki resimde gösterildiği gibi, ' Bayer Filtresi ' olarak da bilinen, renge duyarlı bir filtre ızgarasından ve altında bir dizi fotodiyottan oluşur.
Tek bir piksel, biri kırmızı, biri mavi, biri yeşil ve biri açık filtreli (filtresiz) olmak üzere 4 filtreden oluşur. Bu model aynı zamanda ' Bayer Modeli ' olarak da bilinir . Her filtre, aşağıda gösterildiği gibi, ışığı olduğu gibi geçirirken, her filtre alttaki fotodiyoda yalnızca tek bir renkteki ışığı geçirir. Şeffaf filtreden geçen bu ekstra ışık, düşük ışık koşullarında büyük bir avantajdır.
İşlem çipi daha sonra her bir fotodiyodu (her seferinde bir renk) adresler ve ışığın yoğunluğunu ölçer. Bir dizi fotodiyot olduğu için, sonuçların önce ortalaması alınır ve ardından işlenmek üzere gönderilir. Kırmızı, yeşil ve mavi ışığın göreceli seviyesi ölçülerek nesnenin rengi belirlenir.
TCS230 Renk Sensörü Modülü
Modülün merkezinde Texas Advanced Optoelectronic Solutions - TCS230'dan ucuz bir RGB sensör çipi bulunur. TCS230 Renk Sensörü, neredeyse sonsuz sayıda görünür rengi algılayıp ölçebilen eksiksiz bir renk detektörüdür.
Sensörün kendisi, dört beyaz LED ile çevrili modülün merkezinde görülebilir. Modüle güç verildiğinde LED'ler yanar ve algılanan nesneyi aydınlatmak için kullanılır. Bu LED'ler sayesinde sensör, nesnenin rengini veya parlaklığını belirlemek için tamamen karanlıkta da çalışabilir.
TCS230, 2,7 ila 5,5 volt besleme voltajında çalışır ve TTL mantık düzeyinde çıkışlar sağlar.
TCS230 İşletimi
TCS230, 16 fotodiyotun kırmızı filtreli, 16 fotodiyotun yeşil filtreli, 16 fotodiyotun mavi filtreli ve kalan 16 fotodiyotun filtresiz temiz olduğu 8 x 8 fotodiyot dizisi yardımıyla rengi algılar.
Sensöre yakından bakarsanız, aslında bu filtreleri görebilirsiniz.
16 fotodiyotun her biri paralel olarak bağlanır, bu nedenle S2 ve S3 iki kontrol pini kullanarak hangisini okuyacağınızı seçebilirsiniz. Örneğin, yalnızca kırmızı rengi algılamak istiyorsanız, tabloya göre iki pini DÜŞÜK olarak ayarlayarak 16 kırmızı filtreli fotodiyot seçebilirsiniz.
Benzer şekilde, farklı S2 ve S3 kombinasyonları ile farklı fotodiyot türleri seçebilirsiniz.
Dahili bir akım-frekans dönüştürücü, fotodiyotlardan gelen okumaları, frekansı seçilen rengin yoğunluğuyla orantılı olan bir kare dalgaya dönüştürür. Tipik çıkış frekansı aralığı 2HZ ~ 500KHZ'dir.
Sensörde, çıkış frekansını ölçeklendirmek için kullanılan iki kontrol pini daha vardır, S0 ve S1. Frekans,% 2,% 20 veya% 100 olmak üzere üç farklı ön ayar değerine ölçeklenebilir. Bu frekans ölçekleme işlevi, sensörün çeşitli mikro denetleyiciler ve diğer cihazlarla kullanılmasına izin verir.
Farklı S0 ve S1 kombinasyonları ile farklı ölçeklendirme faktörleri elde edebilirsiniz. Arduino için çoğu uygulama% 20 ölçeklendirmeyi kullanır.
TCS230 Renk Sensörü Modülü Pin Çıkışı
Aşağıdaki şema, ortak bir TCS230 modülünün pini göstermektedir.
GND bir toprak pimidir.
OEÇıkışı Etkinleştirme pinidir. Bu pin nadiren kullanılır ve çoğu modülde kalıcı olarak etkinleştirilir. Zaten etkinleştirilmemişse, DÜŞÜK çekin.
S0 & S1 pimler frekans ölçeklendirmesini seçmek için kullanılır.
S2 & S3 renk dizisini seçmek için iğneler kullanılır.
DIŞARI pin bir TTL seviyesi kare dalgadır.
VCCpin modüle güç sağlar. 2.7V ila 5.5V güç kaynağına bağlayın.
TCS230 Renk Sensörünü Arduino UNO'ya Kablolama
TCS 230'u bir Arduino'ya bağlamak çok basittir. Her pin, Çıkış Etkinleştirme pini dışında kullanılır ve modül, Arduino'nun 5 voltluk çıkışından güvenli bir şekilde beslenir.
TCS230 ile deneyler için bağlantı aşağıdadır:
Arduino'da kullanılan pinlerin hiçbiri kritik değildir çünkü modül herhangi bir pime özgü özellik gerektirmez, bu nedenle farklı pinler kullanmak istiyorsanız bunu güvenle yapabilirsiniz. Kablolardaki herhangi bir değişikliği yansıtmak için koddaki pin numaralarını değiştirdiğinizden emin olun.
Sensörünüz Arduino ya bağlandıktan sonra, bir kod yazma zamanı!
Sensörü Kalibre Etme
TCS230 renk sensörüyle çalışmak için aslında iki taslak kullanacağız.
- İlk taslak (kalibrasyon taslağı) sensörden ham verileri elde etmemize yardımcı olacaktır.
- İkinci taslak (ana Arduino çizimi), algılanan renk için RGB değerlerini görüntülemek için önceden alınan ham verileri kullanacaktır.
Her iki çizimin de aynı donanım bağlantısını kullanacağını unutmayın.
Aşağıda kalibrasyon taslağı verilmiştir. Bu taslak, TCS230 sensörünü renge göre ele alır ve çıkış piminin darbe genişliğini okur. Çıkış daha sonra seri monitörde görüntülenir.
Çizimi Arduino'nuza yükleyin ve sensörü nesnelere bakacak şekilde monte edin. Beyaz ve siyah renk için bir referans nesne bularak başlayın. Bu referans nesneleri, üç rengin tümü için hem maksimum hem de minimum değerlerde okumalar üretecektir.
Kod yükledikten sonra bu tür okumalar alacaksınız. Her iki uçta da aldığınız okumaları kaydedin.
Kod Açıklaması:
Taslak, TCS230'u bağlamak için kullanılan pimlerin tanımlanmasıyla başlar. Bazı değişkenler ayrıca kırmızı, yeşil ve mavi renk dizisinin darbe genişliklerini temsil edecek şekilde tanımlanmıştır.
Kurulumda S0-S3 pinlerini çıkış olarak tanımlıyoruz. Bu pinler, frekans ölçeklendirmesini ve ele almak istediğimiz rengi seçmek için kullanılacaktır. S0 ve S1 pinleri, bu renk sensörünü bir Arduino ile kullanırken ortak bir değer olan frekans ölçeklendirmesini% 20'ye ayarlamak için kullanılır. Ardından, sensörlerin Çıkış pini Arduino'ya bir giriş olarak tanımlanır, burası kare dalgayı alacağımız yerdir. Son olarak, seri monitörü kurduk.
Döngü bölümünde, üç işlevi çağırır getRedPW()
, getGreenPW()
ve getBluePW()
darbe genişliği elde edildi. getRedPW()
Örnek olarak inceleyelim .
getRedPW()
İşlev kırmızı darbe genişliği alır. Kırmızı filtreyi seçmek için S2 ve S3 pinlerini ayarlayarak başlar. Bu, bu işlevin yeşil ve mavi emsallerinden farklı olduğu tek adımdır.
Ardından, darbe genişliğini saklamak için bir tam sayı tanımlanır. Darbe genişliği daha sonra Arduino pulseIn()
işlevi kullanılarak belirlenir . Bu fonksiyon darbe genişliğini ölçer, bunu darbenin DÜŞÜK kısmının genişliğini ölçecek şekilde yapılandırdığımızı unutmayın. Sonuç milisaniye cinsinden zamandır. Bu değer daha sonra döndürülür ve işlev sona erer.
Döngüde, renkli darbe genişliklerini okumak için üç işlev çağırıyoruz ve sensörün stabilize olmasını sağlamak için aralarına 200 ms'lik bir gecikme ekliyoruz. Daha sonra değerleri seri monitörde yazdırıyoruz ve döngüyü tekrarlıyoruz.
Arduino Kodu - TCS230'dan RGB Değerlerini Okuma
Okumalarınızı aldıktan sonra, TCS230 renk sensöründen RGB değerlerini okuyacağımız bir sonraki taslağı yükleyebilirsiniz.
Krokiyi yüklemeden önce, çizimin üst kısmındaki kalibrasyon çiziminden elde ettiğiniz altı kalibrasyon değerini girin. "0" ı gerçek değerlerinizle değiştirin.
Kddu yükleyin ve sonuçları farklı renk örnekleriyle gözlemleyin. Gerekirse kalibrasyon değerlerinde küçük ayarlamalar yapabilirsiniz.
Kod Açıklama
Aşağıdakiler dışında, bu çizimin çoğunun önceki çizimle tamamen aynı olduğunu fark edeceksiniz:
Kalibrasyon çiziminden elde ettiğiniz altı kalibrasyon değeri, çizimin üst kısmına girilir.
Çıktısını almak istediğimiz RGB değerleri için üç yeni değişken tanımlandı.
Döngü bölümünde, önceki çizimde kullanılan aynı işlevi kullanarak değerlerin her birini okuruz. Ardından map()
, kalibrasyon değerlerimizi referans olarak kullanarak bu değerleri RGB değerlerine dönüştürmek için Arduino işlevini kullanırız.
Aralığı tersine çevirdiğimize dikkat edin (Min değer 255 amd Maks değer 0'a eşlenir) çünkü fonksiyonlarımız frekansı değil darbe genişliğini döndürür.
Son olarak, değerleri seri monitörde çıkarıyoruz. Bu son okumalar, taranan öğenin RGB değerlerine karşılık gelecektir.
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook robotic.code
instagram @roboticcode
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.
Hiç yorum yok:
Yorum Gönder
Yorum yazdığınız ve üye olduğunuz için Size teşekkür ederim.Burada olduğunuza göre hepimizin ilgi alanı Elektronik ve Programlama sonsuz bir dünyadayız.Hepimize Başarılar...
Not: Yalnızca bu blogun üyesi yorum gönderebilir.