Autor Tema: duda con leds a 12 volts  (Leído 13290 veces)

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

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:duda con leds a 12 volts
« Respuesta #30 en: 05 de Febrero de 2016, 00:15:06 »
Muchachos! gracias por la pronta respuesta!

Chaly29 te respondo entre lineas:

Hola luchoc, por supuesto que tal como está el programa no te funcionaría.

* El primer error que veo, es que solo estás trabajando con el dígito de las decenas u el de las unidades no lo tomas en cuenta.

* Luego y aunque las decenas sean = 0, pues igual debes de incorporarlas al multiplexado.

Y como no programo en Basic, pues solo te daré unas simples pautas para que realices el programa:

Suponiendo las variables:

Decenas
Unidades

Creeria q esta multiplexando decenas y unidades, mira el video:

Colocamos el valor de Decenas (codificación BCD) en los pines B0, B1, B2, y B3.
Pin B4 en alto.
Pausa de 100 useg (ejemplo)
Pin B4 en bajo

Colocamos el valor de Unidades (codificación BCD) en los pines B0, B1, B2, y B3.
Pin B5 en alto.
Pausa de 100 useg (ejemplo)
Pin B5 en bajo

Y vuelta a empezar.

Código: [Seleccionar]
INICIO:
    IF UNIDEC=0 THEN
        PORTB=%010110   ;Acá los dos primeros digitos del lado izquierdo son los puertos 4 y 5, en este caso el decena estaría LOW     
        UNIDEC = 1
        PAUSE 100
        GOTO INICIO
    ENDIF
    IF UNIDEC=1 THEN
        PORTB=%100001 ;En este caso unidad estaria LOW y decena HIGH.       
        UNIDEC = 0
        PAUSE 100
        GOTO INICIO
    ENDIF
    GOTO INICIO ;Vuelvo al inicio.
END

Eso es un multiplexado, primero encendemos un display y luego el otro, por supuesto con los valores debidos, terminado con el último display volvemos al primero. Esto se debe de repetir en un bucle continuo de parejo, de lo contrario verás "apagones" o "destellos" indeseados en el display.

Espero te sea de ayuda.

Un saludo.

Atte. CARLOS.

Como siempre de muchisima aydua! Creo que tenia razon KILLERJC:
Y una cosa mas... empeza a probarlo en el PIC, por que en la simulacion parece MUUUUY lento , como se nota que se encienden y apagan, es decir para la simulacion podrias comentar el "PAUSE". Pero en fisico deberias tener esa pausa.

Haber que opinan ustedes que son la voz de la experiencia, le di PAUSE 100 ml como bien decía Chaly29 y no mostró mas errores pero como decia KYLLERJC en el programa de simulación se ve muy lento, como ustedes lo ven en el video. En un rato lo voy a pasar a la protoboard para ver como se ve pero les parece bien 100 ML de pausa?
« Última modificación: 05 de Febrero de 2016, 00:17:33 por luchoc »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:duda con leds a 12 volts
« Respuesta #31 en: 05 de Febrero de 2016, 00:26:49 »
        PORTB=%010110   ;Acá los dos primeros digitos del lado izquierdo son los puertos 4 y 5, en este caso el decena estaría LOW

Lamentablemente no se BASIC y deberias preguntar en el foro del mismo pero eso deberias poder dividirlo en 2 partes. Uno es el numero a poner, y lo otro los pines a modificar. En C haria algo asi (Suponiendo que RB4 unidades y RB5 decenas):

// unidades
PORTB = (numero_unidades & 0x0F);
PORTB.RB4 = 1;
//pausa
// decenas
PORTB = (numero_decenas & 0x0F);
PORTB.RB5 = 1;

Es pero que se entienda.  Lo primero que hago es tomar el numero que voy a poner y pasarlo por una AND con el valor 0000 1111 de esa forma no supera ese valor y la parte alta del PORTB es 0 (Apagando de paso todos los displays ), luego enciendo las unidades, espero, y luego apago todo y cargo el nuevo numero, enciendiendo ahora las decenas.
Realmente no se como se hace esto en BASIC, por eso si no sabes como hacerlo podes recurrir al foro y preguntar.

¿Para que es esto?, es para que vos unicamente cambies los valores de unidades o decenas y esa "rutina" siempre quede igual sin modificarse.

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:duda con leds a 12 volts
« Respuesta #32 en: 05 de Febrero de 2016, 01:06:18 »
La verdad yo nose lenguaje C pero use el ejemplo que había hecho con el cd4511 y lo ajuste a este nuevo ejemplo para el 74LS48.
Cabe aclarar que el otro 74LS48 es para el display grande por eso es que lo ven desconectado.

Bueno muchachos así quedo el código:

Código: [Seleccionar]
DEFINE osc 4 'Definimos la frecuencia
allDigital

TRISA.0 = 1
TRISA.1 = 1
TRISA.2 = 1
TRISB = 0
w1 VAR  WORD   
w2 VAR  WORD         
w3 VAR  WORD

INICIO:
if PORTA.3 = 0 THEN ;SUMA
    PAUSE 200
    w1=w1+1
   
   
    goto MOSTRAR   
endif
if PORTA.2 = 0 THEN ;RESTA
    PAUSE 200
    IF w1>000 THEN
        w1=w1-1
       
       
        goto MOSTRAR   
    ENDIF
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 | w3
    low  PORTB.5
    high PORTB.4             
    PAUSE 100 

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

GOTO INICIO   
END

Les adjunto otro video donde se ve funcionando, mañana me toca pasarlo a la protoboard y ver como funciona, lo veo medio raro todavía porque en la simulación cuando pasas de numero tiene una pausa mayor (PAUSE 200) y por ende parece trabarse, tal vez en la protoboard/vida real eso no pase, no lose.


Por favor si esta mal corrijanme las veces que sea necesario y les pido disculpas de antemano por la ignorancia, la verdad es que habeces da ganas de tirar todo a la merd... y ponerse a armar barcos con palitos de helado pero bueno, mientras tanto sigo y sigo y sigo hasta q me den el ok ustedes. Por otro lado ya es hora de dormir así que mañana seguiré.

Muchas gracias muchachos por la paciencia!!!
Si todo va bien en marzo arranco el curso de electrónica y ahí sin dudas aportare mi conocimiento y ejemplos a el foro!

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re:duda con leds a 12 volts
« Respuesta #33 en: 05 de Febrero de 2016, 09:21:25 »
Hola luchoc, no me gusta mucho el programa tal como lo planteaste. Fíjate como te lo planteo aquí (recuerda que no se de basic):

Código: [Seleccionar]
DEFINE osc 4 'Definimos la frecuencia
allDigital

TRISA.0 = 1
TRISA.1 = 1
TRISA.2 = 1
TRISB = 0
w1 VAR  WORD   
w2 VAR  WORD         
w3 VAR  WORD

;-------------------------------------------
INICIO:
call MOSTRAR

if PORTA.3 = 0 THEN ;SUMA
    call MOSTRAR
    w1=w1+1
endif

if PORTA.2 = 0 THEN ;RESTA
    call MOSTRAR
    IF w1>000 THEN
        w1=w1-1 
    ENDIF
endif

if PORTA.4 = 0 THEN ;RESET
    call MOSTRAR
    w1 = 0
    w2 = 0
    w3 = 0
endif

goto INICIO
;-------------------------------------------
MOSTRAR:
IF w1=100 THEN w1=0
    w2=w1 DIG 0
    w3=w1 DIG 1

    PORTB=240 | w3
    high PORTB.4             
    PAUSE 100                ; Este tiempo debe de ser de 10 mseg. máximo
    low  PORTB.4

    PORTB=240 | w2   
    high PORTB.5
    PAUSE 100                ; Este tiempo debe de ser de 10 mseg. máximo
    low  PORTB.5

return
;-------------------------------------------
END

Puedes ver que las PAUSE 200 dentro de las sentencias IF de restar, sumar y reset las e reemplazado por "call mostrar", no se si esto es posible, pero lo que ganarías es evitar el tiempo muerto de una simple pausa y aprovecharlo para dos funciones al mismo tiempo, te genera la pausa de 200 y refresca el display.

Tal como lo planteaste vos, cuando presionas alguno de los pulsadores verías en el display un "apagón" y de esta manera no.

Igualmente no termino de comprender como funciona tu sub rutina "MOSTRAR".

Por otro lado, el tiempo recomendable para el multiplezado es de 10 mseg, o sea que cada display permanezca encendido 10 mseg. No más tiempo porque ya empezarías a ver el destello en los mismos. Y fíjate que te e reformado como enciendes cada display, de la forma tal como tu lo tenías verías en el display un "flash" de los led, cuando ponías los datos del display opuesto sin haber "apagado" el display que estás trabajando.

Un saludo.

Atte. CARLOS.

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:duda con leds a 12 volts
« Respuesta #34 en: 11 de Febrero de 2016, 00:55:08 »
Buenas muchachos!

Antes que nada disculpas por colgarlos tanto tiempo pero mi trabajo estas semanas me saco todo el tiempo.

Les cuento que hice las pruebas en base a la programacion q me recomendaron y no funciona, le busque la 5ta pata al gato y tampoco, lo que yo programe es lo único que se acerco, como bien decían ustedes, no saben programar en basic y mi básico conocimiento también nos juega en contra así que voy a consultar en el sub foro de basic "que me recomiendan para este turnero".

Esta demas decirles que les re contra agradezco por toda la ayuda tecnica que me dieron y que ni bien tenga resuelto el problema de programacion voy a mostrarles como funciona en la vida real y si todo lo que me fueron pasando funciono como creiamos!

Nuevamente mil gracias y en breve le estaré mostrando avances!

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:duda con leds a 12 volts
« Respuesta #35 en: 25 de Abril de 2016, 06:34:35 »
He tenido que modificar la Respuesta #23 porque había algún problema con las imágenes.

luchoc, si puedes intenta añadirlas de nuevo o házmelas llegar y las incluyo yo mismo.

Disculpad las molestias

Desconectado luchoc

  • PIC10
  • *
  • Mensajes: 47
Re:duda con leds a 12 volts
« Respuesta #36 en: 25 de Abril de 2016, 20:43:01 »
He tenido que modificar la Respuesta #23 porque había algún problema con las imágenes.

luchoc, si puedes intenta añadirlas de nuevo o házmelas llegar y las incluyo yo mismo.

Disculpad las molestias

Hola xocas, como estas?

Q pena, sinceramente ya no las tengo a esas imágenes, eran del 02 de Febrero de 2016.

Saludos