Controla una gran cantidad de sensores IR con Arduino / Construye un tablero de juego

3

¿Es posible controlar mucho (supongamos 100) de los sensores de distancia IR TCRT5000 con un Arduino? ¿Entonces solo usa uno o unos pocos pines pero no 100?

Soy relativamente nuevo en el área de Arduino / electronics y sé sobre el protocolo I2C que lo permitiría, pero el TCRT5000 no es compatible con I2C por lo que sé.

He visto gente que lo usa, pero no estoy seguro de cómo, ¿tal vez se requiere otro chip? ¿Alguna recomendación por dónde empezar?

Hoja de datos TCRT5000

ACTUALIZAR

Wow, que respuesta tan abrumadora! Gracias a todos por todo el tiempo y esfuerzo que ponen en esto. Agregaré más detalles aquí, lamento no haberlos incluido en primer lugar.

PREGUNTA CLARIFICADA

Como no es necesario usar el TCRT5000 y creo que podría haber mejores opciones, tengo que aclarar más lo que estoy tratando de crear:

Quiero crear el concepto para una única ficha en un juego de mesa que sea capaz de:

  • Ilumine el azulejo en cualquier color: ya tengo una buena solución al usar una tira de LED direccionable de bajo costo y la controlo a través de la biblioteca Fast LED
  • Detectar si hay una pieza en la parte superior del mosaico: aquí es donde quiero (ed) usar el TCRT5000 para - y es muy barato. Pero como ya hay luz en la baldosa, tal vez una fotocélula que mida la luz reflejada también sería una opción.
  • Opcionalmente, puede detectar qué tipo de la pieza está encima del mosaico, eso no es necesario, pero abriría algunas puertas más en el desarrollo del software que impulsa el juego. Pensado en detectores de imán o RFID de bajo costo. No creo que sea posible obtener este costo lo suficientemente eficiente.
  • Debería ser escalable, de modo que, preferiblemente, una ficha funcionaría de forma independiente.

La cantidad de fichas utilizadas en el juego será determinada por el costo de una ficha única, por lo tanto, tiene que ser lo más rentable posible.

La rentabilidad si no es para mí: si encuentro buenas soluciones para el concepto, me gustaría publicarlo. Y eso solo es posible si el juego es asequible.

TIENDA DE JUEGO

Un mosaico podría tener este aspecto (no se ha escalado correctamente, solo un boceto) y contiene un LED 5050 SD de una tira de LED y un TCRT5000 para detectar si hay algo encima.

Laelectrónicaestarácubiertaporunaplacaacrílicaescarchadaparadifundirlaluzyprotegerloscomponentes:

Ahora la tarea es detectar una pieza del juego en la parte superior del mosaico:

Obviamente, la pieza no siempre está perfectamente centrada ya que el jugador simplemente la colocará en algún lugar encima de ella. Pero el mosaico debe ser capaz de detectar si hay algo o no.

HELP

Cuando esto comienza a ir más allá de la pregunta inicial y me di cuenta de lo mucho que no sé sobre electrónica, me gustaría pedir ayuda con el proyecto.

Si a alguien le parece interesante esta idea, me encantaría discutir más detalles sobre el proyecto fuera de StackOverflow.

Como este es un proyecto privado, realmente no puedo pagar dinero, pero si llegamos a la etapa donde se publica el juego, obtendrás una copia gratuita del juego y al menos un cartón de cerveza;)

Por favor escríbeme en ledboardgame / gmail.com (reemplaza el / por @) incluyendo tu experiencia (solo retoques, malvado cerebro, ...)

    
pregunta Marc

6 respuestas

4

Algunas respuestas han explicado cómo "multiplexar" los emisores y los sensores. El esquema sugerido aquí puede usar eso, o no. Para los emisores no hay necesidad si los sensores están bien aislados de los emisores.

Pareces estar muy preocupado por los costos, como lo estoy yo. La forma más económica de hacer un sensor reflectivo simple es con un emisor de infrarrojos (IR) y un fototransistor de infrarrojos. Ese par estará bien por debajo de 0.20GBP, que tiene un costo mucho menor que el TCRT5000.

Por ejemplo, 940nm 5mm IR emitter < a href="http://uk.farnell.com/kingbright/l-53p3c/phototransistor-5mm-940nm/dp/2290444"> 940nm 5mm IR fototransistor . La mayoría de los distribuidores deben tener partes en este rango de precios. Para dar un poco de contexto, estos costarían alrededor de £ 4.60 por 100 emisores de IR, y £ 7.50 por 100 fototransistores. Estos son los precios de Farnell, que es uno de los distribuidores más caros. Así que deberías poder hacer mucho mejor

Podría conducir los emisores de IR con una cadena de registros de desplazamiento. Utilice los registros de desplazamiento 'Serial In Parallel Out' (SIPO). Tomarán un patrón de datos en serie para elegir qué emisores conducir. Eso consumiría tres o cuatro pines (reloj, datos, habilitación, enganche) para los 100 emisores. Por ejemplo, TLC5916

Si la estructura interna de la placa protege a los fototransistores IR de los emisores IR, podría incluso conducir muchos emisores al mismo tiempo usando cada pin de un chip como el TLC5916, que conduciría mucha más corriente que un pin Arduino. Por lo tanto, es posible que pueda conducir todos los emisores con un par de TLC5916.

Con un poco de experimento, deberías poder leer todos los sensores usando también simples registros de desplazamiento de nivel lógico. Entrada paralela, salida en serie (PISO) registros de desplazamiento. El problema no es el poder, por lo que las piezas más baratas son suficientes, por ejemplo, un 74HC165 (que debería estar disponible por menos de $ 1). Estos pueden ser 'encadenados' de extremo a extremo, e incluso usarse con un esquema de multiplexación.

La luz del día o la iluminación eléctrica pueden interferir y "confundir" los sensores IR. Una forma de afrontarlo es "modular" el IR LED / emisor. Usando un sensor LED + como ejemplo: encienda el LED IR, tome una medida del sensor, apague el LED y tome otro. Cuando la diferencia es muy pequeña, hay mucha interferencia de luz y muy poca luz reflejada, por lo que la pieza es poco probable en el cuadrado. Cuando la diferencia es grande, es probable que la pieza se encuentre en el cuadrado porque hay muy poca interferencia de luz y la luz reflejada es fuerte.

Los experimentos pueden demostrar que esto no es un problema. Sin embargo, tener la flexibilidad para lidiar con este tipo de interferencia puede llegar a ser muy importante. Así que trate de asegurarse de que sea práctico con IR LED / emisor encendido y apagado, hasta que tenga alguna evidencia real que demuestre que no es un problema.

    
respondido por el gbulmer
4

Echa un vistazo a este simple circuito de matriz. Requiere solo sqrt (n) * 2 GPIOs. El escaneo a través de "filas" se realiza encendiendo y apagando los LEDs IR. Solo se enciende una 'fila' a la vez, lo que también ahorra energía.

Muestra 9 sensores en matriz 3x3 conectados a 6 GPIOs.

SenecesitantransistoresexternosporqueconunmayornúmerodeLED,elconsumodecorrientesevuelvesignificativo.ObienN-MOSFEToNPNloharán.G[0..2]eslaentradaparalosLEDdeconmutación,C[0..2]seenvíadesdelosfototransistores.Luz=lógicabaja,sinluz=lógicaalta.

Editar:comoseñaló@gbulmer,esimportantecancelarcualquierluzambiental.Parahaceresto,elcircuitodebemodificarseligeramente:losemisoresdefototransistoresE[0..2]seconmutanentrebaja(fotocorriente,yaseadeledsoambiente,puedefluir)ytri-estado(nofotocorriente).LosLEDpuedencambiarsetodosalavezoengruposcomoenelcircuitoanterior.LassalidasC[0..2]sonleídasporADC,primeroconlosLEDapagadosyluegoconlosLEDencendidos.

    
respondido por el venny
1

A continuación hay una matriz de 10 X 10 que creo que es tan simple como se obtiene con solo 5 I / Os necesarios para su MCU, y aquí hay un esquema de LTspice si quieres jugar con el circuito.

    
respondido por el EM Fields
0

Probablemente sea mejor que selecciones un dispositivo más inteligente.

Estoy seguro , hay sensores IR que tienen I2C (o similar) en ellos, algunos de los cuales satisfacen sus requisitos. Pero por otro lado, ¿realmente necesitas 100 de ellos? Tales nidos de ratas masivos a menudo crean problemas de confiabilidad, especialmente si están conectados a través de cables y / o placa de pruebas.

¿Qué tal si movemos uno de estos mecánicamente en su lugar?

    
respondido por el Dzarda
0

Todo es posible :)

La respuesta de Dzarda sería la más fácil y probablemente la mejor, pero si está fuera de discusión, esta sería otra posibilidad:

Construya una "máquina de estados" con transistores que controlen desde qué sensor está leyendo los datos. Por ejemplo, utilizando una sola entrada analógica para leer datos de sensores y 7 salidas digitales para conducir la máquina de estado que conecta un determinado sensor a la entrada en ese momento. Con 7 IOs puedes controlar 2 ^ 7-1 = 123 sensores. Esto solo requiere un circuito de máquina de estado adicional algo complejo junto con su arduino.

    
respondido por el olltsu
0

gbulmer sugirió leer la salida usando los registros de desplazamiento. Puede ser posible conectar todas las salidas del detector juntas, luego cambiar un bit al registro de control del emisor IR y desplazarlo a lo largo de toda la línea. De esa forma, obtendrías efectivamente datos en serie y eliminarías los registros de salida. No tengo mucha experiencia, por lo que no sé si esto funcionaría, pero sería interesante analizarlo.

    
respondido por el tehwalris

Lea otras preguntas en las etiquetas