TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: luchoc en 11 de Febrero de 2016, 01:26:54

Título: Problema con multiplexacion en turnero...
Publicado por: luchoc en 11 de Febrero de 2016, 01:26:54
Hola como están?

Tengo un problema al intentar la multiplexacion de un turnero que estoy diseñando.

Antes que nada les paso imágenes para que vean como es el armado que estuvimos pensando en este post (http://www.todopic.com.ar/foros/index.php?topic=45807.msg383104#msg383104)

 - Tienes que ingresar para ver archivos adjuntos -
En este diseño se pueden observar 2 74ls48, uno es para los dos display de 7 segmentos y el otro es para los otros dos displays grandes que abajo muestro.

 - Tienes que ingresar para ver archivos adjuntos -

Por otro lado tengo el codigo:
Código: [Seleccionar]
DEFINE osc 4 'Definimos la frecuencia
allDigital

TRISA.0 = 1
TRISA.1 = 1
TRISA.2 = 1
TRISB.0 = 0
TRISB.1 = 0
TRISB.2 = 0
TRISB.3 = 0
PORTB.4 = 0
PORTB.5 = 0

w1 VAR  WORD   
w2 VAR  WORD         
w3 VAR  WORD

INICIO:
if PORTA.3 = 0 THEN ;SUMA
    w1=w1+1
    goto MOSTRAR     
endif
if PORTA.2 = 0 THEN ;RESTA
    IF w1>000 THEN
        w1=w1-1   
    ENDIF
    goto MOSTRAR
endif
if PORTA.4 = 0 THEN ;RESET
    w1 = 0
    w2 = 0
    w3 = 0
    goto MOSTRAR 
endif

MOSTRAR:
IF w1=100 THEN w1=0
   
    w2=w1 DIG 0
    w3=w1 DIG 1

    PORTB=240 | w2
    low  PORTB.5
    high PORTB.4             
    PAUSE 100 

    PORTB=240 | w3   
    low  PORTB.4
    high PORTB.5
    PAUSE 100

   
GOTO INICIO   
END

Esto solo lo probé simulándolo en ISIS, tengo todos los componentes pero todavía no hice tiempo de pasarlo a la protoboard pero el error que encuentro es que en la simulación parpadea muy lento, si lo pongo en 10 o menos la PAUSE el programa ISIS muestra el siguiente error:
 - Tienes que ingresar para ver archivos adjuntos -

Mi nivel es básico, es por eso que si todo lo que hice esta mal no tengo problema en hacerlo de nuevo. Intento aprender asi que todos los consejos serán bien tomados!

Muchas gracias!
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 13 de Febrero de 2016, 11:50:20
No uso Proteus por lo que no te puedo ayudar con ese tema, pero me he entretenido en probar tu programa en la realidad, funcionando con los pauses a 100mSeg y a 10mSeg.

A 100mSeg por dígito:

A 10mSeg por dígito:
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 03:44:37
No uso Proteus por lo que no te puedo ayudar con ese tema, pero me he entretenido en probar tu programa en la realidad, funcionando con los pauses a 100mSeg y a 10mSeg.

A 100mSeg por dígito:

A 10mSeg por dígito:

Hola dogflu66  como estas?!

Antes que anda te quería agradecer por tomarte el tiempo de pasar a la etapa de prueba esto y encima filmarlo y subirlo.

Te quería comentar que ya hice la prueba en protoboard y por lo que veo hay algo que esta mal, no debería pasar de números solo, o sea hasta no presionar un botón para avanzar o retroceder la cuenta no deberia pasar, tenes idea porque puede estar pasandome esto? En la simulacion funciona perfecto.

En mi protoboard desconecte todo y deje solo lo que se ve en la foto, o sea que desconecte los botones + - y reset por si había algún switch clavado pero aun así sigue aumentando solo.

 - Tienes que ingresar para ver archivos adjuntos -

Saludos y nuevamente muchas gracias!
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 15 de Febrero de 2016, 11:40:35
La verdad es que no he montado los botones, le echare otro vistazo a ver si le saco algo.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 15 de Febrero de 2016, 17:29:06
No declaraste el Porta.3 y Porta.4 como entradas, por eso se incrementa la variable W1.
De todas formas una vez que te funcionen las teclas, se te van a repetir muchas veces por segundo cuando las pulses.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 17:37:26
Excelente!

Ahora que me recomendas para que no pase lo q decís de que pasen los numero rápidamente al pulsar los botones?

Pensa en que esto esta en total etapa de desarrollo y yo estoy aprendiendo, asi que lo que me recomiendes sera de gran utilidad.

Muchas gracias de antemano!
Mientras voy a probar lo que me comentaste!

Título: Re:Problema con multiplexacion en turnero...
Publicado por: PalitroqueZ en 15 de Febrero de 2016, 17:49:42
el error que te muestra el proteus es debido a que no puede simular a la velocidad de conmutación de los transistores.

prueba quitándole los transistores, conecta directamente la salida del pic al común de los 7-seg

igual con los botones, sustitúyelos por LOGICTOGGLE (en debbuging tools)


Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 17:57:24
el error que te muestra el proteus es debido a que no puede simular a la velocidad de conmutación de los transistores.

prueba quitándole los transistores, conecta directamente la salida del pic al común de los 7-seg

igual con los botones, sustitúyelos por LOGICTOGGLE (en debbuging tools)




Hola PalitroqueZ

Si se que el simulador no puede simular la multiplexion tan rápida, eso esta solucionado ahora el tema es que avanza sin parar sin tocar nada.

Ya probé en la protoboard lo de poner como entrada Porta.3 y Porta.4 y sigue haciendo lo mismo, avanza sin darle bola a nada.

Respecto a LOGICTOGGLE seguramente debe ser algún botón pero la realidad es que mi problema ahora esta en la vida real, en la protoboard. ahora voy a subir un video para que lo vean!
Título: Re:Problema con multiplexacion en turnero...
Publicado por: PalitroqueZ en 15 de Febrero de 2016, 18:14:12
pusiste el MCLR a VDD ?

Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 19:04:34
pusiste el MCLR a VDD ?

Si, en esta imagen se puede ver:
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=45906.0;attach=25530;image)
La resistencia 4 que esta al lado del pin 5 (vdd) es la de MCLR

Aca dejo el video para que vean lo que comentaba
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 19:38:17
Aca les dejo otro video con la multiplexacion con una puasa de 10 ms ya que con 20 se notaba.


Pero presiento q esto esta muy mal encarado. Nose que opinan ustedes. si hay que volver a programarlo no tengo drama, el tema es cual es el mejor camino para hacer este turnero de prueba.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 19:50:12
Aca dejo también la simulación, para que vean q en la simulación funciona bien pero en la vida real no.


El codigo quedo asi:
Código: [Seleccionar]
DEFINE osc 4 'Definino la frecuencia
allDigital

TRISA.0 = 1
TRISA.1 = 1
TRISA.2 = 1
TRISA.3 = 1
TRISA.4 = 1

TRISB.0 = 0
TRISB.1 = 0
TRISB.2 = 0
TRISB.3 = 0
PORTB.4 = 0
PORTB.5 = 0

w1 VAR  WORD   
w2 VAR  WORD         
w3 VAR  WORD

INICIO:
if PORTA.3 = 0 THEN ;SUMA
    w1=w1+1
    goto MOSTRAR     
endif
if PORTA.2 = 0 THEN ;RESTA
    IF w1>000 THEN
        w1=w1-1   
    ENDIF
    goto MOSTRAR
endif
if PORTA.4 = 0 THEN ;RESET
    w1 = 0
    w2 = 0
    w3 = 0
    goto MOSTRAR 
endif

MOSTRAR:
IF w1=100 THEN w1=0
   
    w2=w1 DIG 0
    w3=w1 DIG 1

    PORTB=240 | w2
    low  PORTB.5
    high PORTB.4             
    PAUSE 10 

    PORTB=240 | w3   
    low  PORTB.4
    high PORTB.5
    PAUSE 10
   
GOTO INICIO   
END
Título: Re:Problema con multiplexacion en turnero...
Publicado por: PalitroqueZ en 15 de Febrero de 2016, 20:03:19
le colocaste el retardo antirebotes al código de sensar el estado de los pulsadores?

Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 20:05:21
le colocaste el retardo antirebotes al código de sensar el estado de los pulsadores?

Vos decís de ponerle una pausa a los botones cuando esta pulsado?
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 15 de Febrero de 2016, 20:07:06
Revisa el hardware, tiene que estar mal, por más que lo miro no veo el fallo.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: PalitroqueZ en 15 de Febrero de 2016, 20:11:04
if PORTA.3 = 0 THEN ;SUMA
    pausa 15ms
   if PORTA.3 = 0 THEN
     w1=w1+1
     goto MOSTRAR     
  end if
endif
if PORTA.2 = 0 THEN ;RESTA
pausa 15ms
   if PORTA.2 = 0 THEN
    IF w1>000 THEN
        w1=w1-1   
    ENDIF
    goto MOSTRAR
   endif
end id
if PORTA.4 = 0 THEN ;RESET
pausa 15ms
  if PORTA.4 = 0 THEN
    w1 = 0
    w2 = 0
    w3 = 0
    goto MOSTRAR
  end if
endif
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 20:21:39
Revisa el hardware, tiene que estar mal, por más que lo miro no veo el fallo.

Gracias dogflu66  voy a sacar todo lo del pic y a armarlo de nuevo a ver q pasa. En un rato les cuento, nuevamente gracias!

Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 15 de Febrero de 2016, 20:55:08
No es necesario que lo desmontes, con un polímetro o multímetro con la opción "LOGIC" podrías comprobar los niveles lógicos y ahorrarías tiempo.

Palitroquez ya te dejo un código, pero en fin te dejo otro que cumple con las normas actuales de programación para un lenguaje de alto nivel como este:

No puede haber subrutinas dentro de otra subrutina.
No puede haber más de un goto en el programa, se pone uno solo por tradición para generar el bucle de la subrutina principal, en este caso inicio.
No se emplean las pausas en programación, como esto es más difícil de implementar solo las elimino en la validación de las teclas como ejemplo.

Código: Visual Basic
  1. Define CLOCK_FREQUENCY = 4  'Definimos la frecuencia
  2. 'Define SIMULATION_WAITMS_VALUE = 1
  3. Include "_FuncionesGeneralLibrary.bas"
  4.  
  5. AllDigital
  6. TRISA.0 = 1
  7. TRISA.1 = 1
  8. TRISA.2 = 1
  9. TRISA.3 = 1
  10. TRISA.4 = 1
  11.  
  12. TRISB.0 = 0
  13. TRISB.1 = 0
  14. TRISB.2 = 0
  15. TRISB.3 = 0
  16. PORTB.4 = 0
  17. PORTB.5 = 0
  18.  
  19. Dim w1 As Word
  20. Dim w2 As Word
  21. Dim w3 As Word
  22.  
  23. 'Contadores validación teclas
  24. Dim dl_ra3 As Word
  25. Dim dl_ra2 As Word
  26. Dim dl_ra4 As Word
  27. dl_ra3 = 0
  28. dl_ra2 = 0
  29. dl_ra4 = 0
  30. Dim wait As Word
  31. wait = 10  'Tiempo para validar tecla
  32.  
  33. inicio:
  34.         If PORTA.3 = 0 Then  ';suma
  35.                 dl_ra3 = dl_ra3 + 1  'Contador tiempo tecla pulsada
  36.                 If dl_ra3 > wait Then  'Valida la tecla
  37.                         w1 = w1 + 1
  38.                         dl_ra3 = 0  'Reset contador tecla
  39.                 Endif
  40.         Endif
  41.         If PORTA.2 = 0 Then  ';resta
  42.                 dl_ra2 = dl_ra2 + 1
  43.                 If dl_ra2 > wait Then
  44.                         dl_ra2 = 0
  45.                         If w1 > 0 Then
  46.                                 w1 = w1 - 1
  47.                         Endif
  48.                 Endif
  49.         Endif
  50.         If PORTA.4 = 0 Then  ';reset
  51.                 dl_ra4 = dl_ra4 + 1
  52.                 If dl_ra4 > wait Then
  53.                         w1 = 0
  54.                         w2 = 0
  55.                         w3 = 0
  56.                         dl_ra4 = 0
  57.                 Endif
  58.         Endif
  59.  
  60.         Gosub mostrar
  61.        
  62.         'Reset contador teclas
  63.         If PORTA.3 = 1 Then dl_ra3 = 0
  64.         If PORTA.2 = 1 Then dl_ra2 = 0
  65.         If PORTA.4 = 1 Then dl_ra4 = 0
  66.  
  67. Goto inicio
  68. End
  69. 'Subrutinas ***************************                                              
  70. mostrar:
  71.         If w1 = 100 Then w1 = 0
  72.  
  73.         w2 = _getdig32(w1, 0)
  74.         w3 = _getdig32(w1, 1)
  75.  
  76.         PORTB = 240 Or w2
  77.         Low PORTB.5
  78.         High PORTB.4
  79.         WaitMs 10  'pause 10
  80.  
  81.         PORTB = 240 Or w3
  82.         Low PORTB.4
  83.         High PORTB.5
  84.         WaitMs 10  'pause 10
  85. Return

Recuerda que la variable Wait es la que aumenta el tiempo que se necesita para que la tecla pueda ser validada.
Solo lo he probado en simulación, pero parece que funciona, es cuestión de que lo pruebes y lo ajustes a tus necesidades.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 15 de Febrero de 2016, 21:37:32
Perdon, se ve que justo cuando envio el codigo de ejemplo Palitroquez se me fue internet. Recien volvio.

Probe el codigo de Palitroquez y luego de corregir algunas cositas que estaban mal tipeadas lo pase a la protoboard y sigue haciendo lo mismo.

Respecto a tu codigo dogflu66, me tira una lista de errores que seguramente tenga que ver con esa libreria:
Include "_FuncionesGeneralLibrary.bas"


 - Tienes que ingresar para ver archivos adjuntos -

De donde la saco?
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 16 de Febrero de 2016, 07:12:43
No uso la misma versión de lengauje Basic, no puedes compilar el programa exactamente como está.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 16 de Febrero de 2016, 10:52:34
Gracias por la respuesta, con que compilas?
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 16 de Febrero de 2016, 11:18:13
Lenguaje Basic del Pic Simulator IDE.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 16 de Febrero de 2016, 11:35:26
Disculpa mi ignorancia pero con el mismo simulador compilas? Q programas usas en total? para saber si sirve lo q estoy usando o no.

Este seria?
 - Tienes que ingresar para ver archivos adjuntos -
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 16 de Febrero de 2016, 13:33:33
Todo pertenece al mismo entorno, el editor y compilador del lenguaje Basic es una herramienta más del simulador (Pic Simulator IDE), se abren mediante los menus.
Título: Re:Problema con multiplexacion en turnero...
Publicado por: luchoc en 17 de Febrero de 2016, 03:21:38
Todo pertenece al mismo entorno, el editor y compilador del lenguaje Basic es una herramienta más del simulador (Pic Simulator IDE), se abren mediante los menus.

Claro pero esa librería parece una librería creada por vos, o viene con el programa?
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 17 de Febrero de 2016, 05:26:54
La librería no tiene importancia, está escrita por mí y tiene entre otras la función DIG equivalente al Protón que no tiene mi lenguaje.

DIG equivalente a _getdig32().
Título: Re:Problema con multiplexacion en turnero...
Publicado por: dogflu66 en 18 de Febrero de 2016, 19:55:32
He probado las teclas en la realidad y me funcionan correctamente.