Menampilkan nilai RGB suatu object dengan sensor warna TCS3200 / TCS230 berbasis Microcontroller AVR ATMega16 / 8535 / 8

Posted on Updated on

950213_9a8cadea_bc3f_43a1_8c2d_e09b0889061b
Modul Sensor TCS3200

Kali ini saya akan sharing tentang interfacing module sensor warna tcs230 produksi parallax (telah discontinue) atau sensor warna TCS3200 (versi update dari TCS230). Dalam pembacaan data, sebenarnya sensor ini cukup rumit karena data outputnya berupa Squarewave dengan duty cycle 50 %. Output sensor ini bisa diskala dengan setting pada pin S0 dan S1 :

  1. 100 % (1:1) S0=High ; S1=High, keluaran apa adanya sesuai sensor(ini yang saya gunakan)
  2. 20 % (1:5), jika output real sensor 100Hz, lalu kita set scale 20% (S0=High ; S1=Low) maka output sensor menjadi 20Hz.
  3. 2 % (1:50), jika output real sensor 100Hz, lalu kita set scale 2% (S0=Low ; S1=High) maka output sensor menjadi 2Hz

untuk skala ini terserah user yang menggunakan. tapi dalam project ini saya menggunakan skala 100% agar pada coding tidak ada perkalian lagi. Pada project ini saya memfungsikan uC ATMega16 sebagai pembaca frekuensi. saya menggunakan fitur timer/counter uC untuk menghitung frekuensi yang masuk.

modul sensor warna tcs230 (Discontinue)

Sensor ini mempunya 4 buah mode filter warna yaitu mode clear, mode filter merah,mode filter hijau,mode filter biru. disini filter yang dimaksud adalah range panjang gelombang atau lambda  cahaya yang bisa diterima oleh photodioda. grafik range lambda bisa dilihat pada datasheet. output akhir dari sensor ini adalah komposisi warna Red-Green-Blue atau bisa dikenal dengan RGB. Untuk bisa mendapakan RGB dari suatu object, maka sensor harus dikalibrasi dulu dengan warna putih sebagai nilai referensinya. Disini menggunakan kertas HVS sebagai media kalibrasi warna putihnya dan jarak pengambilan data sekitar 2 cm dari sensor. jarak ini sifatnya tetap dari kalibrasi sampai nanti pada penggunaannya.

Mekanisme kalibrasinya yaitu yang pertama filter diset mode merah kemudian frekuensi output dari TCS3200 dicatat, begitu juga berturut-turut untuk filter hijau dan filter biru. untuk media kalibrasi/kertasnya tidak boleh yang mengkilap/glossy. karena pembacaan sensor nanti akan kacau. Nilai frekuensi yang diperoleh pada tahap kalibrasi dari masing2 filter adalah nilai referensi maksimum atau 255 (8-bit) untuk R ,G dan B. Frekuensi referensi maksimum tersebut kemudian dibagi dengan 255 untuk mendapatkan resolusi 8 bit tiap warna.

Untuk mempermudah pemahaman, jika kita punya cat merah, hijau dan biru masing2 persis sama 1 liter, kemudian kita campur maka akan jadi warna putih, sama halnya dengan sensor ini. Nah, saya ambil 1 contoh saja, misal frekuensi kalibrasi filter merah pada saat menggunakan kertas HVS putih = 25000 Hz, lalu kita ganti dengan kertas warna kuning / hijau / ungu (intinya selain putih) maka PASTI nilai frekuensi output sensornya dibawah 25000 Hz. ini berlaku untuk semua filter kecuali filter clear karena memang tidak digunakan.

Pada project ini, mode filter berganti terus-menerus secara otomatis dengan urutan R-G-B. Pin yang digunakan untuk setting mode filter ini adalah pin S2 dan S3, silakan lihat datasheet.

interkoneksi
Interkoneksi Pin

Secara berurutan S0,S1,S2,S3 dan LED dimasukkan pada PORTD.6 , PORTD.7 , PORTA.0, PORTA.1, PORTA.2 dari mikrokontroller. Jika ada Pin OE pada modul sensor bisa digabung di Pin PORTA.2. Data RGB tersebut akan ditampilkan pada LCD 16×2. sourcecode ditulis dalam bahasa C dengan kompiler CodeVisionAVR.

Langkah membuat project sensor warna :

  1. Flash program kalibrasi sensor warna TCS3200, download full source code nya >>> Disini
  2. Catat frekuensi referensi red, green, blue hasil kalibrasi menggunakan kertas HVS putih
  3. Download Program utama project ini >>> Disini, Buka program menggunakan codevision AVR, edit bagian yang ditandai di gambar dibawah ini, lalu masukkan frekuensi referensi hasil kalibrasi sesuai dengan warna red, green dan blue. setelah itu save dan compile / build seperti biasa. Flash ke uC. Done!
set-tcs3200
Edit bagian yang ditandai

 

Jika masih ada yang ditanyakan silakan corat-coret dibawah. 🙂

Advertisements

74 thoughts on “Menampilkan nilai RGB suatu object dengan sensor warna TCS3200 / TCS230 berbasis Microcontroller AVR ATMega16 / 8535 / 8

    baguz88 said:
    September 22, 2009 at 4:47 am

    keren mas,, saya sekalian mau tanya mas,, kalo sensor ini(TCS230) di aplikasiin buat rangkaian led dot matrix (dot matrix sebagai penampilnya) bisa ga mas?

    thanx before..

    Neeraj said:
    September 29, 2009 at 3:35 am

    Dear

    i am interested in this project.

    please guide me its schmatic diagram and its sensor

    regards
    Neeraj Jain

    ADIHOLIX responded:
    October 1, 2009 at 2:03 am

    @baguz88 : ada 3 output dari sensor ini..outputnya berupa frekuensi yang besarnya proporsional terhadap warna objek..jadi kalo anda bisa merubah besaran frekuensi menjadi tegangan, saya kira bisa..maksudnya mas mungkin bukan tampilan dot matrix yang led biasa itukan..tapi display dot matrix yang menggunakan OLED(“Organic LED” led yg bisa berubah-ubah warnanya tergantung masukan tegangan)

    ADIHOLIX responded:
    October 1, 2009 at 2:09 am

    @Neeraj : ok,but not now..maybe few day again..

    rodimus said:
    October 20, 2009 at 12:50 am

    saya mw pake sensor ini, cuman bingung dengan coding nya.Dalam code sensor ini ada yg saya ga ngerti.

    redreg/blueref/greenref & red = (frekuensi/redref) itu untuk apa y ?

    nilai2 redreg/blueref/greenref didapatkan darimana y ?

    “0.0000014400921658986175115207373271889” angka ini dapet darimana y?

    thx atas bantuan nya ^^

      ADIHOLIX responded:
      October 25, 2009 at 1:48 am

      praktek mudahnya gini lho..taruh sensor itu diatas kertas putih,trus pilih filter merah catet frekuensinya berapa? itu dilakukan juga untuk filter warna biru sama hijau…untuk apa? ini digunakan untuk mencari nilai 255 dari setiap filter…kalau nilai R,G,B 255 semua itu kan hasilnya warna putih atau dengan kata lain bila kita mencampurkan warna merah,biru dan hijau dengan konsentrasi yang sama, maka akan dihasilkan warna putih…redref/blueref/greenref itu adalah nilai frekuensi ketika dikenakan warna putih…fungsinya memang untuk referensi….mudah-mudahan bisa memahami kata2 saya yang mbulet…hehehe…trims sudah berkunjung….^^

    rodimus said:
    October 27, 2009 at 9:26 pm

    @ADIHOLIX
    thx, saya sekarang ud ngerti ..
    tp sy msi bingung dgn “0.0000014400921658986175115207373271889”
    angka ini ap y ? & cara mendapatkan angka ini bagaimana ?

    thx again

      ADIHOLIX responded:
      December 9, 2009 at 11:44 am

      @rodimus
      angka 0.0000014400921658986175115207373271889 adalah waktu yang dibutuhkan mikrokontroler untuk eksekusi satu kali perintah “count”,,darimana itu? itu saya peroleh dengan trial error karena seharusnya lama waktu 1 kali eksekusi perintah mikro itu 1/frekuensi_kristal..tetapi itu tidak cocok,makanya saya trial error sendiri..itu satuannya detik mas…ok,semoga lebih paham…gud luck!!!

        ab_setyawan said:
        December 12, 2010 at 10:38 pm

        mas tanya tentang nilai 0.0000014400921658986175115207373271889 itu cara dapetinnya gimana? kok bisa mpe ketemu nilai segitu. ma ijin copas yo.. thx

    LendraAndrian said:
    November 23, 2009 at 6:44 pm

    thanks mas, sebagai bahan referensi tugas akhir memakai sensor warna.

    salam kenal

    Arfan said:
    December 8, 2009 at 6:21 pm

    mas,, beli sensor TCS230 nya dimana ya?? thx^^

    Arfan said:
    December 8, 2009 at 6:22 pm

    berapa harga nya ? ^^

      ADIHOLIX responded:
      December 9, 2009 at 11:30 am

      sekitar 850ribu..

    112 said:
    December 14, 2009 at 12:05 pm

    keren euy

      ADIHOLIX responded:
      December 15, 2009 at 1:21 pm

      iyo ta se? lawas nek keren…haha…

    lendra said:
    December 15, 2009 at 7:52 pm

    mas mau tanya “# #define redref (27795/255)
    # #define greenref (33066.7/255)
    # #define blueref (34720/255)” angka 27795 ini perhitungannya dari mana?
    thanks

      ADIHOLIX responded:
      December 16, 2009 at 7:49 am

      27795 = ini itu 27,795 KHz
      33066.7 = ini itu 33,0667 KHz
      34720 = ini itu 34,720 KHz

      nilai2 diatas diperoleh dari pengukuran frekuensi output sensor ketika difilter merah lalu filter hijau lalu filter biru,,,dengan object sebagai kalibrasi output maksimum( bernilai 255 atau saya asumsikan 8 bit) yaitu saya pake kertas HVS putih. jadi kalo misalkan kita pake filter merah, lalu diarahkan ke object selain warna putih,,output frekuensinya pasti dibawah 27,795 KHz…demikian mas,,semoga bisa memahami penjelasan saya,,..gud luck!!!

    Sigit said:
    January 11, 2010 at 9:37 pm

    saya udah pesen harganya cuman 100 ribuan.. apa masih ada tambahan lagi sampe harus 850 rbu..
    mohon jawabannya
    kalo emnag ada tambahannya apa yg harus di tambahkan kirim email saya sajah ya mas..

    camp_646@yahoo.co.id
    saya lagi butuh referency buat TA nih mas.. maksih sebelumnya..

    putra said:
    May 14, 2010 at 6:30 am

    untuk mas sigit yang 100rb sulit difokuskan ni pengalaman saya, yang 850 bisa fokus cos ada tambahan lensa

    viozz said:
    June 24, 2010 at 9:39 am

    mw tanya…itu yg pin s0 dan s1 pada program kan d tulis 5 volt..apakah bisa cm sekedar di hub k catuan 5 volt aja?jd ga perlu hubungin k mikronya cz sy liat d programmnya jg cm melibatkan port A5(s3) n port A6(s6)
    trus sy mw tny lg, untuk program baris ke 236 yaitu PORTA=0b10011000; itu maksudnya apa ya?
    satu lagi, untuk wiring LCDnya kan ke port C (c0-c7), itu apakah dihubungkan dgn smua jalur data pd LCD atw 3port ke pin control LCD (RD,RS,..) dan 4 port ke jalur data?
    makasih sebelumnya dan maaf klo pertanyaaannya byk..harap maklum,sy masih baru belajar

      ADIHOLIX responded:
      June 24, 2010 at 9:03 pm

      S0 = PORTA.3
      S1 = PORTA.4
      S2 = PORTA.5
      S3 = PORTA.6
      LED putih di sensor PORTA.7

      nah, mksud baris 236 PORTA=0b10011000 itu adalah inisialisasi awal sensor yaitu S0 = 1, S1 = 1 dan PORTA.7 = 1 untuk LED sensor. karena pada project ini saya mengeset scale 100% yaitu S0 & S1 bernilai 1. kalo S0 & S1 langsung dihubungkan ke catuan 5 Volt ya bisa aja, tapi biar gak ribet saya pake pin mikronya buat S0 & S1 nya..

      untuk wiring LCD nya itu sama persis dengan yang ada di code wizardnya CodeVision AVR..

      wiring LCD :
      PORTC.0 = RS(lcd pin 4)
      PORTC.1 = RD(lcd pin 5)
      PORTC.2 = EN(lcd pin 6)
      PORTC.3 = Not Connect(pin free)
      PORTC.4 = DB4 (lcd pin 11)
      PORTC.5 = DB5(lcd pin 12)
      PORTC.6 = DB6(lcd pin 13)
      PORTC.7 = DB7(lcd pin 14)

      iya sama2,,saya juga baru belajar kok,,maaf kalo cuma sedikit yang bisa saya sharingkan..terima kasih sudah berkunjung..

    viozz said:
    June 25, 2010 at 10:58 pm

    trims atas penjelasannya..sudah jelas 🙂

      ADIHOLIX responded:
      June 28, 2010 at 12:27 am

      sama-sama.. 🙂 silakan berkunjung kembali,,,

    yayang said:
    June 27, 2010 at 10:10 pm

    0.0000014400921658986175115207373271889 angka ini dapet dari 1/fcrystarl gt?
    emang bro pake crystal yang frekwensinya brapa?

      ADIHOLIX responded:
      June 28, 2010 at 12:26 am

      itu adalah hasil trial error..aku pake 11.059.200 Hz

    bayu said:
    July 4, 2010 at 8:14 pm

    minta saran donk.. selain pake TCS230 ada lagi ga sensor warna RGB yang murah di buat nya.. contohnya pake LDR itu ada yg punya skematik nya minta link nya donk yang mudah di unduh..

    terimaksih sebelumnya..

      ADIHOLIX responded:
      July 5, 2010 at 9:13 pm

      waduh,,susah mas..setauku bisa kalo pake photodioda..tapi kalo pake LDR aku gak pernah tau…cuma kalo pake photodioda ya tetep susah menurutku…maaf belum bisa ngasih saran,,ilmux masih dangkal mas…

    viozz said:
    July 6, 2010 at 8:46 am

    sori,mw tny lagi…gimana yah caranya mengetahui apakah mikro qta rusak atw ga dan sismin qta benar atw salah..trims

    viozz said:
    July 8, 2010 at 8:13 am

    sensor wrn tcs q udah bs bekerja..tp kq panas bgt ya?kira2 knp ya?trims

    bayu said:
    July 14, 2010 at 12:05 pm

    mas tu buat nampilkan warna nya pake software apa..??? seperti yang di vidio itu

      ADIHOLIX responded:
      July 15, 2010 at 2:36 pm

      Borland Delphi 6.0

    epe said:
    July 21, 2010 at 9:44 pm

    mas sy kan udh nyoba sperti yg punya mas tuh…

    tp kok kadang warna merah nya sk ga brubah….

    klo ada boleh minta contoh hasil pengukurannya ga???
    soalnya sy takut sensor yg sy gunakan rusak…

    kirim email y mas klo blh…
    sleeping_cantique@yahoo.com

    cembem said:
    August 13, 2010 at 4:25 pm

    mas,mau tanya,,,mas kog ganteng sich,,,, :)))))))))

      ADIHOLIX responded:
      August 13, 2010 at 4:31 pm

      So pasti dek,,..hehe..

    akfcode said:
    September 14, 2010 at 7:57 pm

    iki opo tho yo… hohohoho
    Di, blogku ganti, sing anyar, nang FB enek, nggonanmu kok jarang update

      ADIHOLIX responded:
      October 28, 2010 at 1:52 am

      sory bar,,tas buka wp-admin…hehe

    Okta said:
    October 9, 2010 at 8:52 pm

    bro…boleh mnta tolong ga??niyh ttg Proyek akhirku yg pake sensor warna niyh…

    Okta said:
    October 9, 2010 at 8:54 pm

    bro…bisa mnta bantuannya gak??niyh tugas akhir ku berhubungan dgn sensor warna…bisa mnta tolong FB mu apa??biar aq bisa konsultasi

      ADIHOLIX responded:
      October 28, 2010 at 1:54 am

      lha itu apa fb ku…

    restu said:
    October 26, 2010 at 10:54 pm

    Mas mo nanya donk…ku gi buat skripsi titrasi asam basa yg memanfaatkan perubahan warna cairan asam tersebut..aku bingung kalibarasi untuk nilai standar red, green, am blue nya nih, tolong donk mas kirmin saya nilai warna RGB nya buat kaliobarasi saya mas…

    tolong email ke outshoot78@yahoo.co.id

    thanks be 4…sukses selalu mas..!!!

      ADIHOLIX responded:
      October 28, 2010 at 1:58 am

      nilai RGB itu didapat menggunakan kertas putih sebagai kalibrasinya…

      saya kok bingung,,maksudnya kirimin nilai warna RGB itu gimana ya? mungkin bisa dibaca lagi penjelasan saya dan juga dilihat lagi source codenya…trima kasih

    Kolun said:
    October 31, 2010 at 4:36 pm

    oh ya konektor kabel tcs230-db itu sama gak dengan konektor kabel tcs230?

      ADIHOLIX responded:
      November 5, 2010 at 9:36 am

      Ga sama mas..kalo yg tcs230-db itu udah ada adaptorx..yang tcs230 itu cuma sensorx aja(IC)..CMIIW

        Kolun said:
        November 10, 2010 at 9:00 pm

        trus adapter tcs230-Db itu apa namanya???bisa dikasih tahu mas?

        ADIHOLIX responded:
        November 10, 2010 at 11:03 pm

        Gini mas,,kalo tcs230 itu cuma IC aja(cuma sensornya aja)..tapi kalau tcs230 yg ada adapternya,,itu udah 1 paket mas, produknya parallax..smoga bisa mencerahkan..trims

    Budi said:
    December 4, 2010 at 6:17 pm

    bisa jelasin mas bagaimana sebuah mikrokontroler mengukur R,G,B dari sutu obyek?

    Budi said:
    December 4, 2010 at 6:18 pm

    bisa jelasin mas bagaimana sebuah mikrokontroler mengukur R,G,B dari suatu obyek?apakah mendapatkan satu-satu atau langsung RGB itu bisa didapat?

    okta said:
    December 21, 2010 at 7:11 pm

    bro…gw mau outputin tuh sensor ke Suara..untuk kalibrasinya gmn yah??kan bnyak tuh warna??gmn bisa yg keluar tuh bener2 Warna merah…biru dan seterusnya…pokoknya bisa terucap di outputnya….thx

    Ridho said:
    December 24, 2010 at 3:13 pm

    “pada sourcecode dapat dilihat count++ akan mencacah pada high dan low 1 gelombang penuh. jumlah cacahan tersebut dikalikan dengan lama waktu 1 kali pengulangan count++ sehingga diperoleh periodenya”
    maksud kalimat di atas apa ya mas?kita melihat 1 gelombang penuh itu bagaimana?makasih banyak sebelumnya.

    Ridho said:
    January 10, 2011 at 12:07 pm

    “pada sourcecode dapat dilihat count++ akan mencacah pada high dan low 1 gelombang penuh. jumlah cacahan tersebut dikalikan dengan lama waktu 1 kali pengulangan count++ sehingga diperoleh periodenya”
    maksud kalimat di atas apa ya mas?kita melihat 1 gelombang penuh itu bagaimana?makasih banyak sebelumnya.

    woyo said:
    January 26, 2011 at 8:38 pm

    bos mau nanya nih , kan pin yang di tcs 3200 nya dibelakang nya ada 6 pin , padahal ditulisannya cuman ada lima jadi sebenernya itu diapake semua atau gimana?oh iya kalo di program ke lcd buat nentuin nilai rgb nya bisa ga bos? kalo bisa minta tolong programnya lah

    bayu said:
    February 19, 2011 at 9:41 pm

    fungsi PortB.1 untuk apa mas??dihubungkan kemana???

    bayu said:
    February 19, 2011 at 9:43 pm

    fungsi dari portB.0 untuk apa mas??n dihubungkan kemana??

    adam said:
    February 20, 2011 at 4:31 am

    mas tanya,, itu sensor setelah dikasih lens sensitiv bgt ga?kalau dipake buat line follower yang bedain warna kira2 masih stabil ga ya??trims

      ADIHOLIX responded:
      April 12, 2011 at 9:52 am

      lumayan sensitif, dengan catatan jaraknya bener sesuai rekomendasi..ya stabil, soalnya kan cuma bedain 2 warna aja,,tapi mubadzir klo dibuat LF..hehe..cukup optocoupler aja pun bisa lebih murah kok,,,

    um3dsk07 said:
    June 30, 2011 at 2:56 pm

    Bro ane dah nyoba ntu program and sensor berjalan normal tapi ane da masalah dalam pembuatan flowchart

    Bro ada flowcart dari program di atas ga? kalo ada ane minta ya, kirim ke umed.atek@gmail.com,

    trus itu nilai for(a=0; a<=5; a++) ini untuk apa funsinya?
    mana yang menunjukan nilai frekwensinya?

    affan_m said:
    December 7, 2011 at 11:50 pm

    gan…tanya…ane kan pake sensor ini untuk membandingkan warna (merah)..
    menurut agan saya perlu filter warna apa ni d TCS 230 biar lancar???
    yang saya bandingkan hanya warna merah gan ???

    IL Ham said:
    October 24, 2012 at 9:00 am

    Mas tolong d e-mail untuk source interface.x donk… thks…

    e-mail : dpilham99@gmail.com

    Bahrul Ulum said:
    November 6, 2012 at 10:23 am

    mas, tlg bantuannya, bagaimana membuat program DT-sense color sensor tapi hasil pembacaannya ditampilkan lewat LCD melalui komuniksi i2c pada mikrokontroler

    terima kasih

    Muezizz said:
    July 14, 2013 at 1:10 am

    Mas, check emailnya ya.

    mita said:
    October 12, 2013 at 11:20 am

    mas saya mau tanya,saya memakai sensor tcs 230 ini,tapi kenapa tiba-tiba data RGB nya jadi 0 ya???apa sensor saya rusak ya???solusinya apa ya???

    Dodi Siswanto said:
    October 18, 2013 at 3:29 pm

    Mas saya lg ad projek munggunakan sensor warna tcs230, masih bingung dengan cara penggunaan sensor ny pada ATMega, terutama utk kalibrasi sensor nya, mohon bantuan ny mas. Bisa tlng kirim ke email saya nggak source code dan hardware schematic ny utk saya belajar (dodi_xisco@yahoo.co.id). Terima kasih sebelum nya.

    adit said:
    November 20, 2013 at 2:28 pm

    mas kirimkan schematic hardwarenya dunk ke aditya_cools21@yahoo.co.id
    makasih mas refrensiny…

    putri said:
    December 21, 2013 at 11:31 pm

    mas bales email saya

    zulfiqarusretin said:
    March 8, 2014 at 11:16 pm

    mas, kmren kan saya coba,.. eh yg keluar cm red saja,.. ketika saya rubah filternya ke mode hijau ataupun biru kok tetep nol
    jadinya gini R=(sesuai harapan), G=0 B=0, mohon pencerahannya mas

    zulfiqarusretin said:
    March 8, 2014 at 11:16 pm

    mas, kmren kan saya coba,.. eh yg keluar cm red saja,.. ketika saya rubah filternya ke mode hijau ataupun biru kok tetep nol
    jadinya gini R=(sesuai harapan), G=0, B=0, mohon pencerahannya mas

    isroq said:
    July 5, 2014 at 12:14 am

    mas mau nanya..nilai for(a=0; a<=5; a++) apa maksudnya mas ? terimakasih 😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s