Autor Tema: Tiempo de reacción  (Leído 2426 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alexmaq

  • PIC10
  • *
  • Mensajes: 16
Tiempo de reacción
« en: 19 de Mayo de 2018, 12:32:09 »
Necesito ayuda para crear un programa utilizando 3 leds y 3 swiches para tomar los tiempos de reacción entre el momento que prende un led (aleatorio) y se pulsa el swich correcto.
Voy a usar un pic de 8 bits linea 16f o 18f  con una eprom donde quede almacenada el dia y hora del evento, y el tiempo de reacción para luego poder procesar la información en una computadora.


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Tiempo de reacción
« Respuesta #1 en: 19 de Mayo de 2018, 13:10:47 »
Citar
Necesito ayuda

¿Y que ayuda necesitas?

Ya nombraste casi todo....

- Necesitas generar un valor aleatorio, de 0 a 3. O buscar un micro con RNG
- Para captura los tiempos podes guardar el tiempo (Timer) desde que se presiono hasta que se detecta el pulsado de alguna de las teclas ( 3 teclas a una OR hacia la entrada del Timer, con el CCP en modo Capture) Asi podes capturar el valor rápidamente y con la mayor exactitud posible.
- Leer/Escribir la EEPROM por I2C seguramente. Es crear las rutinas para que lo hagan luego de que detecte el botón.
- Para mantener el día y la hora, quedan 2 opciones, o nunca apagas tu circuito y tenes un oscilador de 32Khz, o usas un RTCC con bateria. Asi lo configuras 1 ves y funciona hasta que se termine la pila.
- Si tenes hora/dia, tenes que configurarla, y a no ser que quieras un LCD, lo cual hace inútil la parte de la conexión de la computador y aumenta la complejidad, podrías configurar el reloj desde la conexion con la computadora.
- La conexion con la computadora... ¿USB/RS232?  ya que no especificaste.
- Cual es el tiempo minimo de resolucion que buscas...  ¿ 0.1ms ? Pienso que seria razonable para una entrada de una persona

Y cada uno de esos tópicos investigarlos, juntarlos y ya tenes tu proyecto.

Desconectado alexmaq

  • PIC10
  • *
  • Mensajes: 16
Re:Tiempo de reacción
« Respuesta #2 en: 19 de Mayo de 2018, 14:31:51 »
Gracias por tu respuesta. Basicamente no se como hacer un aleatorio. Pensaba utilizar una INT externa, con un rtos que mida los ms de reacción. No es para medir electrónica sino para personas de edad avanzada o con Narcolepsia(tengo Narcolepsia). Para ahorrar energía lo voy a poner en sleep hasta que en un tiempo aleatorio prenda uno de los leds.  Hice varios cursos de Microchip hace años y estaría mintiendo si me considero programador. La idea es que la conexión sea usb, pero primero, lo primero. Medir los tiempos en una placa Student para ver si la idea es viable y sirve.
« Última modificación: 19 de Mayo de 2018, 14:47:38 por alexmaq »

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 947
Re:Tiempo de reacción
« Respuesta #3 en: 19 de Mayo de 2018, 15:02:03 »
... Basicamente no se como hacer un aleatorio.

Si programás en C ya tenés incluida la función  rand()

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Tiempo de reacción
« Respuesta #4 en: 19 de Mayo de 2018, 15:21:29 »
EDIT: Me gano Eduardo2, pero dejo como hice la respuesta

La forma de obtener un valor aleatorio en el PIC es casi siempre (sin usar ningun otro integrado externo) usar el ADC con un pin al aire libre sin nada conectado. Creo que es lo mas aleatorio que uno podria tener... Pero habria que ver si se cumple. Al menos para darle el valor inicial o Seed ( con seed() ), luego usar rand() para generalos.

Ponerlo en modo SLEEP implica que solo algunos modulos funcionan, lo mas seguro es que obtenido el valor aleatorio, configures alguna interrupcion de un Timer, y contando las interrupciones llegues al tiempo, es decir vas a estar saliendo y entrando del SLEEP continuamente para contar el tiempo.
Para reducir aun mas el consumo, podrias usar una frecuencia mas baja de oscilador. Si es que tu proyecto va a estar alimentado a baterias.

Citar
La idea es que la conexión sea usb

Luego lo implementas, por ahora podrias dedicarle el tiempo al RS232 ( UART + transceiver)  que es mucho mas simple de configurar y hacer funcionar, tanto en la PC como en el micro.

Citar
Medir los tiempos en una placa Student para ver si la idea es viable y sirve.

La idea es viable, me refiero a que es posible realizarla, si sirve ya no te lo podria decir.

Inicialmente pensaba que se trataba de un juego de "destreza" y por eso los 3 pulsadores (esto lo veo para las personas de edad avanzada ), pero para la gente con Narcolepsia esto lo veo mas parecido a un "dispositivo de hombre muerto" como los vistos en los trenes.. con una finalidad distinta al anteriormente nombrado obviamente, que ahora es la de determinar la demora entre que se pulsa. Y justamente se necesita 1 solo botón y no de 3 que complicaría el diseño. Creo que a lo que apuntas si va dirigido a las personas con Narcolepsia es detectar cuando la persona cae en uno de estos episodios. Y que considero distinto (por la forma de aplicacion) al de una persona de edad avanzada desde mi punto de vista, no soy doctor, pero es lo que me imagino.

Otra de las cosas que no comente anteriormente es sobre el tema de guardar dia/horario, como si el dispositivo va a ser portable. Si esto es portable, la persona va a tener que estar mirando (por ser leds) continuamente el dispositivo. No creo que quieras tener a una persona 24hs mirando el mismo. Y la otra es que si lo pensas de esta forma, seguramente la persona lo pueda tener en su bolsillo, no encontrarlo rapidamente, y las medidas van a ser irrelevantes ya que influyen demasiados factores y no solo la velocidad de reaccion.
Ahora si la idea es poner a la persona frente al dispositivo para probarlo durante 30 min por ejemplo (que 30min es mucho tiempo), entonces no le veo sentido el que guarde hora/dia, ya que terminada la sesión se podría descargar los datos. O al menos guardar los datos en "sesiones". Esto se aplicaría por ejemplo a una persona de edad avanzada, pero una persona con Narcolepsia lo veo mas complejo, ya que imagino que los tiempos van a ser mayores ya que como dije, es otra forma de aplicacion.

Desconectado Eduardo2

  • PIC24F
  • *****
  • Mensajes: 947
Re:Tiempo de reacción
« Respuesta #5 en: 19 de Mayo de 2018, 15:50:14 »
Otra forma de aleatorizar sin ADC es aprovechar el instante en que se pulsa un botón.
Cuando ocurre, se leen los últimos bits de un contador de alta frecuencia. Esa lectura se usa de semilla de la secuencia  pseudoaleatoria o directamente si antes de cada número hay una pulsación.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5878
    • Picuino
Re:Tiempo de reacción
« Respuesta #6 en: 19 de Mayo de 2018, 17:33:20 »
Take it easy. Arduino way.

Desconectado alexmaq

  • PIC10
  • *
  • Mensajes: 16
Re:Tiempo de reacción
« Respuesta #7 en: 19 de Mayo de 2018, 20:19:58 »
Muchísimas gracias por las respuestas y las ideas. Muy graciosa la de "Arduino Way" :D :D :D

 
« Última modificación: 24 de Mayo de 2018, 09:49:44 por alexmaq »

Desconectado alexmaq

  • PIC10
  • *
  • Mensajes: 16
Re:Tiempo de reacción
« Respuesta #8 en: 19 de Mayo de 2018, 21:07:43 »
Tengo que aclarar algo que no escribí anteriormente. El código ya lo encontré en Microchip para un 32MX en mplab.
Igualmente quiero agradecer las ideas que han expuesto. No se me habia ocurrido verlo desde el modo que lo explicaron. Gracias otra vez!!!

Alejandro Maqueda
alexmaq@hotmail.com
« Última modificación: 24 de Mayo de 2018, 09:52:44 por alexmaq »


 

anything