- Componentes requeridos:
- Funcionamiento del sensor de color TCS3200
- Pinout del sensor de color TCS3200:
- Diagrama de circuito
- Explicación del código
En este proyecto vamos a trabajar en una idea innovadora de proyecto arduino, donde podemos contar los billetes de papel moneda y calcular su monto, detectando el papel moneda usando Color Sensor y Arduino. El sensor de color TCS230 se utilizará para detectar los billetes y Arduino UNO para procesar los datos y mostrar el saldo restante en la pantalla LCD de 16x2.
Componentes requeridos:
- Arduino UNO
- Sensor de color TCS230
- Sensor de infrarrojos
- Tablero de circuitos
- LCD alfanumérico de 16 * 2
- Conexión de cables
Funcionamiento del sensor de color TCS3200
El sensor de color TCS3200 se utiliza para detectar una amplia gama de colores. Anteriormente interconectamos el sensor de color TCS3200 con Arduino y Raspberry pi, y también construimos algunos proyectos útiles como la máquina clasificadora de colores.
El sensor TCS230 tiene LED infrarrojos incorporados que se utilizan para iluminar el objeto cuyo color se va a detectar. Esto asegura que no habrá impactos de la luz externa circundante sobre el objeto. Este sensor lee un fotodiodo de matriz 8 * 8, que consta de 16 fotodiodos con filtros rojos, 16 con filtros azules, 16 con filtros verdes y 16 fotodiodos sin ningún filtro. Cada una de las matrices de sensores de estas tres matrices se selecciona por separado según los requisitos. Por eso se le conoce como sensor programable. El módulo se puede presentar para detectar el color particular y dejar los demás. Contiene filtros para ese propósito de selección. Hay un cuarto modo llamado "modo sin filtro" en el que el sensor detecta la luz blanca.
La señal de salida del sensor de color TCS230 es una onda cuadrada con un ciclo de trabajo del 50% y su frecuencia es proporcional a la intensidad de la luz del filtro seleccionado.
Pinout del sensor de color TCS3200:
VDD- Pin de suministro de voltaje del sensor. Se suministra con 5V DC.
GND- Pin de referencia de tierra de un sensor de color
S0, S1- Entradas de selección de escalado de frecuencia de salida
S2, S3- Entradas de selección de tipo de fotodiodo
OUT- Pin de salida de un sensor de color
OE- Habilitar pin para frecuencia de salida
También hemos utilizado un sensor IR en este proyecto, cuyo funcionamiento se puede entender en el siguiente enlace.
Diagrama de circuito
A continuación se muestra el diagrama de circuito del contador de dinero Arduino:
Aquí, hice una pequeña estructura como una máquina de deslizar moneda POS usando cartones. En esta estructura, un sensor de color y un sensor de infrarrojos se fijan con el cartón como se muestra en la imagen de abajo.
Aquí, el sensor de infrarrojos se utiliza para detectar la presencia de moneda dentro de la ranura y, si hay una nota, el sensor de color detectará el color de la nota y enviará el valor del color a Arduino. Y Arduino calcula además el valor de la moneda en función del color del billete.
Explicación del código
El código completo junto con un video de demostración se proporciona al final del artículo. A continuación, se proporciona la explicación paso a paso del código completo.
Primero, incluya todas las bibliotecas en el programa. Aquí solo necesitamos que la biblioteca LCD esté incluida en el programa. Luego declare todas las variables utilizadas en el código.
#incluir
Dentro de setup (), imprima el mensaje de bienvenida en la pantalla LCD y defina todas las direcciones de datos de los pines digitales utilizados en este proyecto. A continuación, establezca la escala de frecuencia de salida del sensor de color, en mi caso, se establece en 20% que se puede establecer dando pulso ALTO a S0 y pulso BAJO a S1.
configuración vacía () {Serial.begin (9600); lcd. comienzo (16, 2); lcd.setCursor (0, 0); lcd.print ("Cartera inteligente"); lcd.setCursor (0, 1); lcd.print ("Resumen de circuitos"); retraso (2000); lcd.clear (); pinMode (2, OUTPUT); // S0 pinMode (3, OUTPUT); // S1 pinMode (11, OUTPUT); // S2 pinMode (12, OUTPUT); // S3 pinMode (13, INPUT); // OUT escritura digital (2, ALTA); digitalWrite (3, BAJO); }
Dentro del bucle infinito (), lea todas las salidas de datos de los sensores. La salida del sensor de infrarrojos se puede encontrar leyendo el pin A0 y las frecuencias de color de salida se pueden encontrar llamando a las funciones individuales escritas como rojo (), azul () y verde (). Luego imprímalos todos en el monitor serial. Esto es necesario cuando necesitamos agregar una nueva moneda a nuestro proyecto.
int sensor = digitalRead (A0); int red1 = red (); int azul1 = azul (); int green1 = green (); Serial.println (red1); Serial.println (blue1); Serial.println (verde1); Serial.println ("-----------------------------");
A continuación, escribe todas las condiciones para comprobar la frecuencia de salida del sensor de color con la frecuencia de referencia que hemos establecido anteriormente. Si coincide, deduce la cantidad especificada del saldo de la billetera.
if (rojo1> = 20 && rojo1 <= 25 && azul1> = 30 && azul1 <= 35 && verde1> = 30 && verde1 <= 35 && a == 0 && sensor == ALTO) {a = 1; } más si (sensor == BAJO && a == 1) {a = 0; if (total> = 10) {lcd.setCursor (0, 1); lcd.print ("¡¡¡10 rupias !!!"); total = total-10; retraso (1500); lcd.clear (); }}
Aquí solo hemos establecido las condiciones para el color de la nota de 10 rupias y 50 rupias, puede establecer más condiciones para detectar más no. de billetes.
Nota: La salida de frecuencia puede ser diferente en su caso, dependiendo de la iluminación externa y la configuración del sensor. Por lo tanto, se recomienda verificar la frecuencia de salida de su moneda y establecer el valor de referencia en consecuencia.
El siguiente código mostrará el saldo disponible en la billetera en la pantalla LCD de 16x2.
lcd.setCursor (0, 0); lcd.print ("Total Bal:"); lcd.setCursor (11, 0); lcd.print (total); retraso (1000);
La siguiente función obtendrá la frecuencia de color de salida del contenido rojo en la moneda. De manera similar, podemos escribir otras funciones para obtener valor para los contenidos de color azul y verde.
int red () {digitalWrite (11, LOW); digitalWrite (12, BAJO); frecuencia = pulseIn (OutPut, LOW); frecuencia de retorno; }
Así es como se puede construir fácilmente un contador de dinero basado en Arduino usando pocos componentes. Podemos modificarlo aún más integrando algún procesamiento de imagen y cámara para detectar la moneda usando la imagen, de esa manera será más precisa y podrá detectar cualquier moneda.