Autor Tema: Ruleta francesa con Pic16f84 y 36 LEDs  (Leído 12943 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado DuguSF

  • PIC10
  • *
  • Mensajes: 13
Ruleta francesa con Pic16f84 y 36 LEDs
« en: 31 de Enero de 2013, 15:38:15 »
Hola muy buenas, soy nuevo en este foro y me he registrado porque no encuentro ayuda ninguna en toda la red para realizar este proyecto.
La idea consiste en el típico juego de casino de la ruleta francesa, que consta de 36 números. He pensado utilizar 3 pic16f84 interconexionados de tal forma que cada uno controle 12 LED. De este modo cuando el primer pic termine con la secuencia de los LED de la ruleta que le corresponde, es decir, aparezca un 1 lógico
en la última patilla que controla el último LED, active el segundo pic y lo mismo ocurriría con el tercero cuando el segundo termine su trabajo.

Este es mi principal problema, no se como conexionar los pic para que esto suceda. Leyendo libros de texto he llegado a la conclusión de que debería usar la patilla MCLR del pic pero no se muy bien cual es su funcional y mucho menos como utilizarla de la forma óptima.

El segundo problema que se me presenta es el siguiente:

La ruleta empezaría a girar a una velocidad constante mientras  mantengamos un pulsador presionado, de manera que al soltarlo  la velocidad empiece a descender hasta que finalmente quede detenida la secuencia de luces en un único número. Había pensado hacerlo programando varios ciclos, uno para el momento en que a la entrada del primer pic haya un 1 lógico (pulsador activado) utilizando delays constantes; otro para cuando el nivel lógico de la entrada pase a 0 se siga un ciclo en el que el retardo entre el paso de un led y el siguiente vaya aumentando de forma exponencial hasta que finalmente parase. Pero no se muy bien cómo lograr que estas etapas tengan lugar a la vez en los 3 Pic...

Si alguien me puede echar un cable con ambas dudas muchas gracias de antemano, es escasa la ayuda que tengo para el desarrollo del proyecto y me qudan 3 semanas para entregarlo, al menos si alguien me resuelve estas dudas tendría una base sobre la que empezar a trabajar de forma experimental. Gracias de antemano ;-)



P.D. comentar también que mis conocimientos del tema de microcontroladores son demasiado básicos, la programación en C no se me da bastante bien y no tengo grandes conocimientos electrónicos, simplemente conozco conceptos básicos.




« Última modificación: 05 de Febrero de 2013, 08:19:22 por DuguSF »

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #1 en: 31 de Enero de 2013, 16:40:38 »
yo emplearía un solo micro y circuito 74hc595 mira el datasheet
puedes ampliar salidas facil y economicamente.
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #2 en: 31 de Enero de 2013, 16:56:59 »
Hola muy buenas, soy nuevo en este foro y me he registrado porque no encuentro ayuda ninguna en toda la red para realizar este proyecto.
La idea consiste en el típico juego de casino de la ruleta francesa, que consta de 36 números. He pensado utilizar 3 pic16f84 interconexionados de tal forma que cada uno controle 12 LED. De este modo cuando el primer pic termine con la secuencia de los LED de la ruleta que le corresponde, es decir, aparezca un 1 lógico
en la última patilla que controla el último LED, active el segundo pic y lo mismo ocurriría con el tercero cuando el segundo termine su trabajo.

Este es mi principal problema, no se como conexionar los pic para que esto suceda. Leyendo libros de texto he llegado a la conclusión de que debería usar la patilla MCLR del pic pero no se muy bien cual es su funcional y mucho menos como utilizarla de la forma óptima.


No lo hagas así hombre, eso es una barbaridad, y más teniendo en cuenta que solo tienes que tener encendido un led a la vez.
Puedes usar una matriz filas-columnas con el PIC y un ULN2803, o incluso solo con el PIC puedes conectar los LED en contraposición y con solo 7 pines puedes encender hasta 42 led.

Fíjate en este esquema, con 5 pines y un PIC12F se controlan 20 leds, con 6 pines podrías controlar 30 leds, y con 7 pines encenderías 42 leds. Eso si, con este conexionado, solo se puede encender un led a la vez, lo cual en tu caso es perfecto, aunque si se barren con rapidez puede parecer que hay varios encendidos al mismo tiempo, como se puede apreciar en el video de abajo.





En este video puedes ver el circuito en funcionamiento, es una especie de estrella de Navidad:

« Última modificación: 31 de Enero de 2013, 18:19:45 por planeta9999 »

Desconectado DuguSF

  • PIC10
  • *
  • Mensajes: 13
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #3 en: 01 de Febrero de 2013, 08:06:55 »
El caso es que tengo que hacerlo utilizando ese integrado, el PIC16F84...
estoy mirando el datasheet del 74HC595, a ver se cómo usarlo.

Gracias

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #4 en: 01 de Febrero de 2013, 15:11:53 »
El caso es que tengo que hacerlo utilizando ese integrado, el PIC16F84...

Eso es lo de menos, obviamente no has captado la esencia de mi post, en el que te estoy diciendo como controlar decenas de leds con tan solo unos pocos puertos, conectando los led en contraposición. Si prefieres liarla con 3 pic o con varios registros de desplazamiento, no llegarás a ninguna parte, y mucho menos con un nivel de conocimientos tan básico.

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #5 en: 01 de Febrero de 2013, 19:24:43 »
No lo hagas así hombre, eso es una barbaridad, y más teniendo en cuenta que solo tienes que tener encendido un led a la vez.
Puedes usar una matriz filas-columnas con el PIC y un ULN2803, o incluso solo con el PIC puedes conectar los LED en contraposición y con solo 7 pines puedes encender hasta 42 led.

Fíjate en este esquema, con 5 pines y un PIC12F se controlan 20 leds, con 6 pines podrías controlar 30 leds, y con 7 pines encenderías 42 leds. Eso si, con este conexionado, solo se puede encender un led a la vez, lo cual en tu caso es perfecto, aunque si se barren con rapidez puede parecer que hay varios encendidos al mismo tiempo, como se puede apreciar en el video de abajo.



/quote]

Ese circuito parece bastante ingenioso, pero personalmente creo que no funcionara todo lo bien que se desea. Me explico, tengo entendido que los PIC's no tienen salidas en triestado, por tanto solo pueden estar a 1, o a 0. Partiendo de ahi, supongamos que solo esta a 1 el pin 2 de ese esquema y el resto de salidas esta a 0, tendriamos entonces encendidos al mismo tiempo los led's 1,9,13 y 19, ya que todos ellos tienen el anodo a la linea del pin 2 y su catodo a distintas lineas que estan a 0.
La unica opcion que se me ocurre para evitar lo anterior, seria poner todas las lineas no implicadas en cada momento como entradas.
Por otro lado el esfuerzo en generar un programa que tenga en cuenta todo eso, no compensa el ahorrarse un simple registro de desplazamiento, maxime cuando los hay ya de potencia que no requieren siquiera transistores para controlar la carga.

Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #6 en: 01 de Febrero de 2013, 19:46:52 »
Citar
Ese circuito parece bastante ingenioso, pero personalmente creo que no funcionara todo lo bien que se desea.

Para muestra el video, y además lo tengo probado personalmente.

Citar
Me explico, tengo entendido que los PIC's no tienen salidas en triestado, por tanto solo pueden estar a 1, o a 0.

Se queda en flotación, si lo defines como entrada. El puerto si que es triestado (nivel alto, bajo y flotación).

Citar
Por otro lado el esfuerzo en generar un programa que tenga en cuenta todo eso, no compensa

 ((:-))

Citar
el ahorrarse un simple registro de desplazamiento, maxime cuando los hay ya de potencia que no requieren siquiera transistores para controlar la carga.

Cinco chips para encender 36 led, eso si que no compensa, cuando se puede hacer por software "fácilmente".  ;-)



Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #7 en: 02 de Febrero de 2013, 20:46:21 »
Citar
Ese circuito parece bastante ingenioso, pero personalmente creo que no funcionara todo lo bien que se desea.

Para muestra el video, y además lo tengo probado personalmente.

Citar
Me explico, tengo entendido que los PIC's no tienen salidas en triestado, por tanto solo pueden estar a 1, o a 0.

Se queda en flotación, si lo defines como entrada. El puerto si que es triestado (nivel alto, bajo y flotación).

Citar
Por otro lado el esfuerzo en generar un programa que tenga en cuenta todo eso, no compensa

 ((:-))

Citar
el ahorrarse un simple registro de desplazamiento, maxime cuando los hay ya de potencia que no requieren siquiera transistores para controlar la carga.

Cinco chips para encender 36 led, eso si que no compensa, cuando se puede hacer por software "fácilmente".  ;-)





Ese circuito parece bastante ingenioso, pero personalmente creo que no funcionara todo lo bien que se desea. Me explico, tengo entendido que los PIC's no tienen salidas en triestado, por tanto solo pueden estar a 1, o a 0. Partiendo de ahi, supongamos que solo esta a 1 el pin 2 de ese esquema y el resto de salidas esta a 0, tendriamos entonces encendidos al mismo tiempo los led's 1,9,13 y 19, ya que todos ellos tienen el anodo a la linea del pin 2 y su catodo a distintas lineas que estan a 0.
La unica opcion que se me ocurre para evitar lo anterior, seria poner todas las lineas no implicadas en cada momento como entradas.
Por otro lado el esfuerzo en generar un programa que tenga en cuenta todo eso, no compensa el ahorrarse un simple registro de desplazamiento, maxime cuando los hay ya de potencia que no requieren siquiera transistores para controlar la carga.


Por favor si citas mis comentarios, deberias ser imparcial. Como puedes ver lo que remarque en negrita, ya lo decia yo en mi comentario, pero tu, muy sutilmente lo eliminaste, para hacerlo tuyo.
Por otro lado yo solo doy mi opinion, que sigue siendo la misma y cada cual decidira si se decanta por tus argumentos, por los mios o simplemente nos ignora a ambos.

Saludos.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #8 en: 02 de Febrero de 2013, 20:58:50 »
No os peleis estamos para ayudar, el que debe de elegir es DuguSF, él eligirá un método u otro, o alguno que aqui no hemos citado, aqui estamos para aprender todos y ayudar, supongo.
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado Darkman_A

  • PIC18
  • ****
  • Mensajes: 288
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #9 en: 02 de Febrero de 2013, 23:22:15 »
Hola muy buenas, soy nuevo en este foro y me he registrado porque no encuentro ayuda ninguna en toda la red para realizar este proyecto.
La idea consiste en el típico juego de casino de la ruleta francesa, que consta de 36 números. He pensado utilizar 3 pic16f84 interconexionados de tal forma que cada uno controle 12 LED. De este modo cuando el primer pic termine con la secuencia de los LED de la ruleta que le corresponde, es decir, aparezca un 1 lógico
en la última patilla que controla el último LED, active el segundo pic y lo mismo ocurriría con el tercero cuando el segundo termine su trabajo.

Este es mi principal problema, no se como conexionar los pic para que esto suceda. Leyendo libros de texto he llegado a la conclusión de que debería usar la patilla MCLR del pic pero no se muy bien cual es su funcional y mucho menos como utilizarla de la forma óptima.

El segundo problema que se me presenta es el siguiente:

La ruleta empezaría a girar a una velocidad constante mientras  mantengamos un pulsador presionado, de manera que al soltarlo  la velocidad empiece a descender hasta que finalmente quede detenida la secuencia de luces en un único número. Había pensado hacerlo programando varios ciclos, uno para el momento en que a la entrada del primer pic haya un 1 lógico (pulsador activado) utilizando delays constantes; otro para cuando el nivel lógico de la entrada pase a 0 se siga un ciclo en el que el retardo entre el paso de un led y el siguiente vaya aumentando de forma exponencial hasta que finalmente parase. Pero no se muy bien cómo lograr que estas etapas tengan lugar a la vez en los 3 Pic...

Si alguien me puede echar un camble con ambas dudas muchas gracias de antemano, es escasa la ayuda que tengo para el desarrollo del proyecto y me qudan 3 semanas para entregarlo, al menos si alguien me resuelve estas dudas tendría una base sobre la que empezar a trabajar de forma experimental. Gracias de antemano ;-)

P.D. comentar también que mis conocimientos del tema de microcontroladores son demasiado básicos, la programación en C no se me da bastante bien y no tengo grandes conocimientos electrónicos, simplemente conozco conceptos básicos.

Hola DuguSF.
Podrias hacer una matriz de 6 x 6 (36 leds) y un registro de desplazamiento como te han indicado. De esta forma solo utilizarias 1 solo puerto del pic.
Saludos.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #10 en: 03 de Febrero de 2013, 02:23:52 »
Placa de pruebas montada por mi hace un par de años (si no recuerdo mal), con 18 leds en contraposición, un PIC18F26K20 y las correspondientes resistencias limitadoras para los led, sin necesidad de usar ningún chip más. Código fuente para la prueba en ensamblador, en C todavía es más sencillo.

Aunque en la prueba se están usando 9 puertos (RA0-5, RC1-3), con 5 hubiera funcionado exactamente igual. Con 5 puertos puedes controlar hasta 20 LED, con 6 puertos hasta 30 LED, con 7 puertos hasta 42 LED, con 8 puertos hasta 56 LED, etc...





Código: [Seleccionar]
;***********************************************
;**** PROGRAMA PRINCIPAL ***********************
;***********************************************
bucle
;-- Puerto A -----
;-- LED 1
     movlw b'11111010' ; 0=salida, 1= entrada
     movwf TRISA  
     movlw b'00000100'
     movwf LATA
     rcall Pausa200ms  
;-- LED 2
     movlw b'00000001'
     movwf LATA
     rcall Pausa200ms
;-- LED 3
     movlw b'11111100' ; 0=salida, 1= entrada
     movwf TRISA      
     movlw b'00000010'
     movwf LATA
     rcall Pausa200ms  
;-- LED 4
     movlw b'00000001'
     movwf LATA
     rcall Pausa200ms  
;-- LED 5
     movlw b'11111001' ; 0=salida, 1= entrada
     movwf TRISA      
     movlw b'00000010'
     movwf LATA
     rcall Pausa200ms  
;-- LED 6
     movlw b'00000100'
     movwf LATA
     rcall Pausa200ms  
;-- LED 7
     movlw b'11100111' ; 0=salida, 1= entrada
     movwf TRISA        
     movlw b'00010000'
     movwf LATA
     rcall Pausa200ms  
;-- LED 8
     movlw b'00001000'
     movwf LATA
     rcall Pausa200ms  
;-- LED 9
     movlw b'11001111' ; 0=salida, 1= entrada
     movwf TRISA        
     movlw b'00100000'
     movwf LATA
     rcall Pausa200ms  
;-- LED 10
     movlw b'00010000'
     movwf LATA
     rcall Pausa200ms  
;-- LED 11
     movlw b'11010111' ; 0=salida, 1= entrada
     movwf TRISA        
     movlw b'00001000'
     movwf LATA
     rcall Pausa200ms  
;-- LED 12
     movlw b'00100000'
     movwf LATA
     rcall Pausa200ms  

     movlw b'11111111' ; 0=salida, 1= entrada
     movwf TRISA  


;-- Puerto C -----
;-- LED 13
     movlw b'11110101' ; 0=salida, 1= entrada
     movwf TRISC        
     movlw b'00001000'
     movwf LATC
     rcall Pausa200ms  
;-- LED 14
     movlw b'00000010'
     movwf LATC
     rcall Pausa200ms
;-- LED 15
     movlw b'11111001' ; 0=salida, 1= entrada
     movwf TRISC        
     movlw b'00000100'
     movwf LATC
     rcall Pausa200ms  
;-- LED 16
     movlw b'00000010'
     movwf LATC
     rcall Pausa200ms
;-- LED 17
     movlw b'11110011' ; 0=salida, 1= entrada
     movwf TRISC        
     movlw b'00001000'
     movwf LATC
     rcall Pausa200ms  
;-- LED 18
     movlw b'00000100'
     movwf LATC
     rcall Pausa200ms

     movlw b'11111111' ; 0=salida, 1= entrada
     movwf TRISC  


     bra bucle

;----------------------------
;---- Subrutina pausa  ------
;----------------------------
Pausa200ms
  movlw 15h
    movwf COUNT1
    movff COUNT1, COUNT2
  Loop1
    decfsz COUNT1, F
    bra Loop1
    setf COUNT1
    decfsz COUNT2, F
    bra Loop1
    return

    end




« Última modificación: 03 de Febrero de 2013, 03:08:47 por planeta9999 »

Desconectado fuente

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 571
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #11 en: 03 de Febrero de 2013, 08:25:01 »
Este sistema sí que funciona. No hay más que buscar en google por  CHARLIEPLEXING.
Lo estoy utilizando para un vu-metro y manejando los tiempos de encendido y apagado se consiguen hasta diferentes niveles de luminosidad para los leds.

http://www.electro-tech-online.com/microcontrollers/40253-boostc-charlieplexed-pwm-32-a.html

La idea la saqué de este proyecto. De esta forma podrías hacer efectos luminosos con la ruleta.
« Última modificación: 03 de Febrero de 2013, 08:50:54 por fuente »

Desconectado DuguSF

  • PIC10
  • *
  • Mensajes: 13
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #12 en: 04 de Febrero de 2013, 09:05:17 »
Muchas gracias por todas vuestras sugerencias. La idea que me convence es la de utilizar el registro de entrada serie salida paralelo, aunque no se muy bien como hacerlo funcionar creo que la idea que tengo es la correcta, si me equivoco y no funcionaría como yo digo por favor, corríjanme:

La cosa sería conectar cada salida de uno de los puertos del PIC a la entrada DS del registro, conectando también la salida de reloj del PIC a la entrada de reloj del registro. De esta forma podría controlar los tiempos que dura cada led encendido por medio de programación, y utilizando varios registros hasta obtener 36 salidas en total. El problema surge cuando quiera hacer que al soltar el pulsador la ruleta descienda de velocidad de "giro", ya que pienso yo que los led irían descendiendo de velocidad de 8 en 8, (programándolo con delays diferentes para cada salida del pic...) no se como solucionar este problema. He de hacerlo con el PIC 16F84 si o si, está así especificado. Si me podéis ayudar a comprender como utilizar el registro me sería de muchísima ayuda ;)

De nuevo muchas gracias a todos por vuestro interés, no pensaba que fuera a tener tan buena acojida en un foro de esta temática :D

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #13 en: 04 de Febrero de 2013, 10:34:07 »
Hola, seguramente, el programa funcionará dentro de un loop, que va activando las salidas... alli mismo, colocas un par de contadores, que se incrementaran con cada vuelta... y esos contadores, serán registros que se cargarán en los registros del delay o demora de cada salida  :mrgreen:
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado DuguSF

  • PIC10
  • *
  • Mensajes: 13
Re: Ruleta francesa con Pic16f84 y 36 LEDs
« Respuesta #14 en: 05 de Febrero de 2013, 08:17:41 »
Hola, seguramente, el programa funcionará dentro de un loop, que va activando las salidas... alli mismo, colocas un par de contadores, que se incrementaran con cada vuelta... y esos contadores, serán registros que se cargarán en los registros del delay o demora de cada salida  :mrgreen:

Eso es lo que tenía pensado  :) sin embargo sigo teniendo la misma duda, dado que cada salida del pic controla en realidad 8 LEDs, la velocidad iría variando en secciones de 8, o me equivoco? si es así, ¿cómo puedo solucionarlo? (Todo ello utilizando el PIC 16f84 y el  74hc595 que me han sugerido por arriba :) )
« Última modificación: 05 de Febrero de 2013, 08:21:13 por DuguSF »