Haz una pregunta
  Foros de Electrónica » Temas de Interés » Robótica, Domótica y Mecatrónica
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/12/2012 #1


Sensor de color TCS230 problemas
compre este sensor específicamente para detectar color rojo y azul en un pequeño proceso en el que utilizo arduino, el vendedor me paso un código que aquí posteare, pero la verdad no he logrado hacer que funcione de manera correcta con ese código ni con otros varios que he utilizado , si alguien pudiera echarme la mano le agradecería mucho.

CÓDIGO PARA ARDUINO:
#include <TimerOne.h>

#define OUT 2
#define S2 4
#define S3 3
#define S0 6
#define S1 5
#define OE 7

#define Filters_R 0
#define Filters_G 1
#define Filters_B 2

int Count[3] = {0};
int G_flag = 1;


void setup()
{
TCS230_init();
Select_Filters(3); //default, no fiter
Timer1.initialize(); // default 1S
Timer1.attachInterrupt(callback);
Serial.begin(19200);
}

void TCS230_init()
{
pinMode(OUT, INPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(OE, OUTPUT);

digitalWrite(S0, LOW); // 2% of Output Frequence
digitalWrite(S1, HIGH);
digitalWrite(OE, LOW);
}

void Select_Filters(int RGB)
{
switch(RGB)
{
case Filters_R: //Red
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
Serial.println("-----select Red color");
break;

case Filters_G: //Green
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
Serial.println("-----select Green color");
break;

case Filters_B: //Blue
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
Serial.println("-----select Blue color");
break;

default: //Clear(no filter)
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
Serial.println("-----no filter");
break;
}
}

void Measure_Count(int RGB ) //For white balance correction
{
int tmp = 0;
while(1)
{
if(digitalRead(OUT) == 1)
{
if(G_flag == 0)
{
Count[RGB] = tmp;
Serial.print("tmp=");
Serial.println(tmp);
break;
}
tmp++;
}
}
}


void callback()
{
G_flag = 0;
}

void loop()
{
Timer1.restart();
for(int i=0; i<3; i++)
{
Select_Filters(i);
Timer1.setPeriod(10000); //set 10ms
Measure_Count(i);
G_flag = 1;
Serial.println(Count[i]);
}
delay(3000);
}
04/12/2012 #2
Moderador general

Avatar de DOSMETROS

TCS230 Color Sensor Module User's Guide

Sensing color with the TAOS TCS230

tcs230 color sensor module with appmod adapter - Parallax, Inc
04/12/2012 #3


pero yo utilizo este sensor http://www.okaphone.nl/product/images/TSC230CR.jpg y es muy distinto a los que me pasaste amigo
05/12/2012 #4


entiendes el programa q te han pasado como funciona y para que sirve??

javascript:openreq('http://www.datasheetcatalog.org/datasheets2/10/103569_1.pdf')

ahi tendras informacion de lo que es el sensor en si, el entramado de resistencias que usan en el que tiene tu me gustaria saberlo, de todas formas yo con solo el sensor lo hago, no se si todo lo bien q podria pero lo hago funcionar....

Me gustaria si alguien sabe, como puedo amplificar la supuesta señal puesto q con cable largo se me producen fallos a veces y ceo estar seguro de que es por la longitud pues con cable mas largo aun me fallaba mas, y en el datasheet pone que habria que usar un river o algo para cables de mas de 28cm
05/12/2012 #5


rukymon dijo: Ver Mensaje
compre este sensor específicamente para detectar color rojo y azul en un pequeño proceso en el que utilizo arduino, el vendedor me paso un código que aquí posteare, pero la verdad no he logrado hacer que funcione de manera correcta con ese código ni con otros varios que he utilizado , si alguien pudiera echarme la mano le agradecería mucho.

CÓDIGO PARA ARDUINO:
#include <TimerOne.h>

#define OUT 2
#define S2 4
#define S3 3
#define S0 6
#define S1 5
#define OE 7

#define Filters_R 0
#define Filters_G 1
#define Filters_B 2

int Count[3] = {0};
int G_flag = 1;


void setup()
{
TCS230_init();
Select_Filters(3); //default, no fiter
Timer1.initialize(); // default 1S
Timer1.attachInterrupt(callback);
Serial.begin(19200);
}

void TCS230_init()
{
pinMode(OUT, INPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(OE, OUTPUT);

digitalWrite(S0, LOW); // 2% of Output Frequence
digitalWrite(S1, HIGH);
digitalWrite(OE, LOW);
}

void Select_Filters(int RGB)
{
switch(RGB)
{
case Filters_R: //Red
digitalWrite(S2, LOW);
digitalWrite(S3, LOW);
Serial.println("-----select Red color");
break;

case Filters_G: //Green
digitalWrite(S2, HIGH);
digitalWrite(S3, HIGH);
Serial.println("-----select Green color");
break;

case Filters_B: //Blue
digitalWrite(S2, LOW);
digitalWrite(S3, HIGH);
Serial.println("-----select Blue color");
break;

default: //Clear(no filter)
digitalWrite(S2, HIGH);
digitalWrite(S3, LOW);
Serial.println("-----no filter");
break;
}
}

void Measure_Count(int RGB ) //For white balance correction
{
int tmp = 0;
while(1)
{
if(digitalRead(OUT) == 1)
{
if(G_flag == 0)
{
Count[RGB] = tmp;
Serial.print("tmp=");
Serial.println(tmp);
break;
}
tmp++;
}
}
}


void callback()
{
G_flag = 0;
}

void loop()
{
Timer1.restart();
for(int i=0; i<3; i++)
{
Select_Filters(i);
Timer1.setPeriod(10000); //set 10ms
Measure_Count(i);
G_flag = 1;
Serial.println(Count[i]);
}
delay(3000);
}
-Incluye librería timerone.h
-Define que I/O utilizaran las terminales del sensor en arduino
-Define filtros a utilizarse
-Declara enteros que ni idea para que sean (int Count[3] = {0};
int G_flag = 1; )
-Se llama a la función TCS230 en la que se declara como funcionaran las I/O de arduino, se inicia el timer de la lbrería, también la comunicación serial, selección de filtros(no se como demonios lo hacen)
-Ponen a 2% la frecuecia que entregara por lo que dice el datasheet
-Utiliza el switch case para los diferentes casos que son los colores y luego si detecta cierto color imprimirá en serial monitor el color que es
-Se hace un ajuste de blanco pero admito que de ahi en delante no entiendo el código


....soy estudiante NO PROFESIONAL apenas me adentro en este mundo de programación así que por favor no se desesperen
05/12/2012 #6
Moderador general

Avatar de DOSMETROS

rukymon dijo: Ver Mensaje
pero yo utilizo este sensor http://www.okaphone.nl/product/images/TSC230CR.jpg y es muy distinto a los que me pasaste amigo
Título :

sensor de color TCS230 problemas

05/12/2012 #7


DOSMETROS dijo: Ver Mensaje
Título :

sensor de color TCS230 problemas

da la casualidad que los que tu me pasaste tiene muchoas mas pines que el que uso yo y son diferentes ....
14/11/2014 #8


Aprovechando el hilo sobre el sensor de color TCS230, he estado leyendo el datasheet, y creo entender sus funciones, básicamente se trata de leer la frecuencia que proporciona cada filtro ( rojo, verde, azul), por lo que tengo previsto utilizar un contador por interrupción, ahora bien, lo que no logro entender es como convertir la frecuencia leída por cada filtro de color a valores entre 0-255 de cada color?
14/11/2014 #9

Avatar de Ardogan

Es un sensor obsoleto. Ha no ser que ya los hayas comprado, sugeriría usar alguno más moderno. Hay unos cuantos que se leen por I2C el valor de cada componente R,G,B.
Para tener una idea de que es lo que hay:
http://www.digikey.com/product-searc...ensors/1966828

Filtra los resultados por longitud de onda (optico/infrarrojo), tipo de salida (analógica/I2C/frecuencia), etc
15/11/2014 #10


Okk. Echaré un vistazo a ver lo que hay. De experiencia por I2C solo lo he usado con el rtc ds1307, no debería de tener problemas.
25/11/2014 #11


Finalmente he pedido el TCS3414CS que utiliza el bus I2C para la interpretación de colores. Crearé el driver para controlar este chip mediante el compilador CCS version 5.025. Seguramente necesitaré un poco de ayuda.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Robótica, Domótica y Mecatrónica

La electrónica Aplicada a la Robótica y sus técnicas de interface.

Cerrar
Foros de Electrónica » Temas de Interés » Robótica, Domótica y Mecatrónica

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.