Autor Tema: Tablero Electronico Multideportivo (marcador) Ayuda!  (Leído 14233 veces)

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

Desconectado Piston

  • PIC10
  • *
  • Mensajes: 10
Tablero Electronico Multideportivo (marcador) Ayuda!
« en: 18 de Junio de 2006, 17:21:34 »
Como estan, estoy a poco de presentar un proyecto para calificar un curso en la universidad, se trata de un tablero electronico deportivo, que lleve el tiempo de juego, periodo o set, numero de faltas y marcadores, las prestaciones del tablero son para Futsal, Voley y Basket y tenemos todo el hardware operativo. Estamos trabajando con 11 displays de 7 segmentos, cada segmento consta de 3 filas de leds, 6 y 6 filas de leds a los extremos y la fila del medio de 7 leds, cada fila de leds con sus respectivas resistencias, estamos trabajando con leds ultrabrillantes, y hemos escogido una logica comun para la multiplexion de segmentos.
Tenemos una tarjeta de control para cada display, basada en un latch 74373 que recibe datos del uC y los manda a los Tip122, y por el otro lado de los Tip122 tenemos un shift register 74164 y seguido un driver inversor ULN2003, este ultimo bloque se encarga de la mutiplexion de segmentos.
Los segmentos de los displays estan diseñados para funcionar a 17VDC y con un determidado duty cycle generado por la mutiplexion de segmentos.
El problema se presenta cuando pasamos de los 14VDC, pasada esta tension el los leds, el programa ya no responde y se encienden todos los segmentos, poniendose a a cero todo, estamos estudiando este problema, y al quere monitorear el ruido presente en el habilitador del latch con un osciloscopio, al poner la punta del osciloscopio en este pin del latch el problema se va y el osciloscopio no mide nada, no es nada raro ya que la punta de osciloscopio tiene una capacitancia de 9pF y una resistencia de 1megaohmio, ya se nos ha pasado por la cabeza comprar 11 puntas de osciloscopio y dejarlas cada una en cada pin de los latch (broma  :lol:), pero no solucionamos el problema.
Estoy pensando que podria ser mi programa, estoy trabajando con el Atmega8L de ATMEL y de otros colegas he recibido recomendaciones diversas, como aumentar el tiempo del dato en los pines de latch, y el tiempo de habilitacion de latch, el reloj del uC trabaja a 1MHz.
Espero sugerencias
aqui les dejo el esquematico de la tarjeta de control donde suponemos esta la falla, y parte del programa para que lo vean, lo pongo en la parte de PIC porque supongo que mas usuarios lo estaran viendo.
« Última modificación: 18 de Junio de 2006, 17:25:04 por Piston »

Desconectado Piston

  • PIC10
  • *
  • Mensajes: 10
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #1 en: 18 de Junio de 2006, 17:28:28 »

;******************************************************
;*******   Programa Tablero Electronico 2006   *******
;*******   Marcador electronico para los       *******
;*******   deportes Futsal, Basket, Voley      *******
;*******   Lleva la cuenta del tiempo, goles o   *******
;*******   puntos, controlado y configurado    *******
;*******   via control remoto RF.            *******
;*******   REV 2.0_v3                     *******
;******************************************************

.nolist
.include "m8def.inc"
.list

.DSEG

.org $60

cont_col:       .byte 1
min_dec:       .byte 1
numerito:       .byte 1
seg:          .byte 1
min:          .byte 1
seg_uni:       .byte 1
most:          .byte 1
less:          .byte 1
temp   :       .byte 1
numfalt:       .byte 1
periodo:       .byte 1
faltvis:       .byte 1
faltloc:       .byte 1
bits_disp:       .byte 1
ptoloc:       .byte 1
dep   :          .byte 1
ptovis:       .byte 1
inic_cont:       .byte 1
boton:          .byte 1
dato:          .byte 1
cambio:       .byte 1
cnt_int:       .byte 1
cnt_int2:       .byte 1
cnt2:         .byte 1
mat:         .byte 1
numero:         .byte 1




.CSEG

;*******************************************
;******* Vectores de interrupción **********
;*******************************************

.org 0
rjmp Inicio

.org $003
rjmp barrido    ;Timer2 Comp CTC 9Khz

;.org $006      
;rjmp ult_minuto   ;Timer1 CompA CTC

.org $008
rjmp int_tmr1



;*********************************************************
;*********** Rutina que cuenta 1 segundo *****************
;***********    100 cuentas de 1 ms        **************
;*********************************************************

int_tmr1:

push    r16
in       r16, sreg
push    r16
push    r17

ldi    r17, $d8
ldi    r16, $f0
out    TCNT1H, r17
out    TCNT1L, r16

lds    r16, cnt_int
lds      r17,cnt2
inc      r17
inc    r16
sts      cnt2,r17
sts    cnt_int, r16

            ;lds   r17,numerito
            ;cpi r17,0
            ;breq art
            ;dec r17
            ;sts   numerito,r17
            ;rjmp sigue
;art:         ;rjmp lazo1            

;sigue:
cpi    r16, $64
brne    finalTMR1

ldi    r16, $0
sts    cnt_int, r16

;ldi r16,1
;sts   cambio,r16

lds    r16, seg
inc    r16
sts    seg, r16
   
cpi    r16,60
brlo    finalTMR1

ldi      r16,0
sts      seg,r16

lds    r16,min
inc    r16
sts      min,r16

cpi    r16,60
brlo   finalTMR1
ldi      r16,0
sts      min,r16

finalTMR1:
      pop r17
      pop r16
      out sreg, r16
      pop r16

      reti


;**************************************************
;*******   Subrutina de Interrupcion que   *******
;*******   que se encarga del Barrido y    *******
;*******   multiplexion de los segmentos   *******
;*******    y displays                  *******
;**************************************************


Barrido:
      push    r16            ;PB0 = clock
      in       r16, sreg      ;PB1 = A/B
      push    r16
      push    r17
      push    r18

      lds    r16, cont_col   ;inicialmente cont_col=0

retorno:

      cpi    r16, 0
      breq    es0

      cpi    r16,56      ;OJO! con este parametro vario la intemsidad de
                     ;los leds, a mayor numero menos intensidad, con 56
                     ;logre el mejor trabajo
      brsh    rst      

      rjmp    no_es_mayor_q_N

rst:
      
      
      ldi    r16,0b00000010      
      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N         
      out    portb,r16   
      
      
      ldi    r16, 0
      sts    cont_col,r16
      rjmp    retorno               ;PROBAR CON rjmp Fin

no_es_mayor_q_N:

      rjmp    multiplo_7

fin_multiplo_7:

      ldi    r16,0b00000001         ;Flanco de subida para mandar un "0"
      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N   
      out    portb,r16      



      ldi    r16,0b00000000      
      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N         
      out    portb,r16
      
      
      rjmp    fin

es0:
      ldi    r16,0b00000010          ;PB0=clk PB1=A/B      
      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N         
      out    portb, r16         


      ldi    r16,0b00000011         ;Solo aqui se manda el "1", solo al principio   
                              ;de la rutina barrido, se puede ver el cambio   
                              ;de flanco

      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N               

      out    portb, r16
      
               
      ldi    r16,0b00000000      
      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N      
      out    portb, r16

fin:
      lds    r18, cont_col
      inc    r18
      sts    cont_col, r18

      pop    r18
      pop    r17
      pop    r16
      out    sreg, r16
      pop    r16
      reti                     ;esta interrupcion se repite con una freq
                              ;de 9Khz aprox




;*****************************************************
;*************** Subrutina doble flanco    **********
;***********   asociada a mi rutina de      **********
;***********     interrupcion Barrido      **********
;*****************************************************


multiplo_7:

      mov    r17, r16
      cpi    r17, 7
      brsh    resta
      rjmp    fin_flanco
resta:
      subi    r17, 7
      cpi    r17, 7
      brsh    resta
      cpi    r17, 0
      brne    fin_flanco
      
      ldi    r16,0b00000001      
      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N      
      out    portb, r16            ;mando un "0" con el flanco de subida
      
      ldi    r16,0b00000000
      in      r17,pinb             ;N      
      andi    r17,0b00111100         ;N   //// probar!!!
      or      r16,r17             ;N      
      out    portb, r16

fin_flanco:

      rjmp    fin_multiplo_7         ;cuando mi N es 7 o multiplo de 7 el programa
                              ;debe desplazar dos veces para que el "1" del 
                              ;pin 7 del S-R pase al pin 8 y este 
                              ;que esta conectado al A/B del siguiente S-R
                              ;con el siguiente flanco de subida pase al pin 1
                              ;del mismo S-R


;***********************************************
;********   Programete Principal        ********
;********   Probado para N displays      ********
;***********************************************

Inicio:

ldi    r16, high(RAMEND)
out    sph, r16
ldi    r16, low(RAMEND)
out    spl, r16

rcall    Init_TRM1
rcall    conf_timer2

ldi    R16, $FF           ;PB0(CLK) y PB1(A/B)             -----> Reg de desplazamiento
out    DDRB, R16          ;PB2(A), PB3(B), PB4(C), PB5(HAB) ----> selectores del demux
ldi      r16,1
out      DDRC,r16
ldi    R16, $FE          ;PD0(Comunicacion Serial)
out    DDRD, R16          ;PD1(a) ... PD7(g) : Datos

ldi    R16, 0
out    portD, R16
out    portB, R16
sts    cnt_int, R16
sts    cont_col, R16
sts    seg, R16
sts      min,r16
sts      less,r16
sts     most,r16
sts     boton,r16
sts     bits_disp,r16
sts      cnt2,r16
sts      mat,r16
;rcall   cero


;EsperaP:
;sbis   pinC,0
;rjmp   EsperaP
;EsperaFP:
;sbic   pinC,0
;rjmp   EsperaFP      ;al presionar y soltar el pulsador
                  ;conectado el PC empiezan las interrupciones

;sei

;ldi   r16,99
;sts numerito,r16
sei

lazo:

      lds      r16,mat
      cpi      r16,1
      breq   nosalta


      rcall   Rel_Cro   
      rjmp   lazo

nosalta:

      lds      r16,cnt2
      cpi      r16,100
      breq   lala
      rjmp   lazo

lala:

      ldi      r16,0
      sts      cnt2,r16
      ldi      r16,0
      sts      mat,r16


      rjmp   lazo



;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%      Rutina de Actualizacion del Reloj   %%%%%%
;%%%%%%%%%%      Mostrado en displays            %%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Rel_cro:
      
      push   r16
      push   r17
      
      lds      r16,seg            ;Mostramos Segundos
      sts      boton,r16      
      rcall   Separa_dig
      
      lds      r16,less
      ldi      r17,0b00100000      ;habilitamos primer display
      sts      bits_disp,r17      
      rcall   visualiza         ;mostramos unidades de segundo
      
      lds      r16,most
      ldi      r17,0b00100100      ;habilitamos segundo display
      sts      bits_disp,r17            
      rcall   visualiza         ;mostramos decenas de segundo


;/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/
      

      lds      r16,min            ;Mostramos Minutos
      sts      boton,r16
      rcall   separa_dig

      lds      r16,less
      ldi      r17,0b00101000      ;habilitamos tercer display
      sts      bits_disp,r17
      rcall   visualiza         ;mostramos   unidades de minutos
      
      lds      r16,most
      ldi      r17,0b00101100      ;habilitamos cuarto display
      sts      bits_disp,r17
      rcall   visualiza         ;mostramos decenas de minutos


      ldi      r16,1      ;<-------------------
      sts      mat,r16      
      pop      r17
      pop      r16
      ret



;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%  Rutina  que muestra cero      %%%%%%%%%
;%%%%%%%%%%%%      reseteo del tablero    %%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Cero:
      
      push    r16
      push    r17      
      
      
      clr      r16   
                  
      sts      boton,r16         ;Mostramos Segundos
      rcall   Separa_dig
      
      lds      r16,less
      ldi      r17,0b00100000      ;habilitamos primer display
      sts      bits_disp,r17      
      rcall   visualiza         ;mostramos unidades de segundo
      
      lds      r16,most
      ldi      r17,0b00100100      ;habilitamos segundo display
      sts      bits_disp,r17            
      rcall   visualiza         ;mostramos decenas de segundo


;/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/
      

      clr      r16            
      sts      boton,r16         ;Mostramos Minutos
      rcall   separa_dig

      lds      r16,less
      ldi      r17,0b00101000      ;habilitamos tercer display
      sts      bits_disp,r17
      rcall   visualiza         ;mostramos   unidades de minutos
      
      lds      r16,most
      ldi      r17,0b00101100      ;habilitamos cuarto display
      sts      bits_disp,r17
      rcall   visualiza         ;mostramos decenas de minutos

   
      pop r17
      pop r16
      ret
      


;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%  Rutina selccion de Deporte      %%%%%%%%%
;%%%%%%%%%%%%   y configuracion del tablero    %%%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Conf_dep:


   push   r16
   
   in      r16,pinc
   
   push   r16
   andi   r16,0b00000001
   cpi      r16,1
   breq   futsal            ;configuracion de Futsal
   pop      r16
   
   push   r16
   andi   r16,0b00000010
   cpi      r16,2
   breq   basket            ;configuacion   de Basket
   pop      r16   
   
   push   r16
   andi   r16,0b00000100
   cpi      r16,4
   breq   voley            ;confuguracion de Voley

   rjmp   Conf_dep         ;si no se ha preisonado ningun pulsador
                        ;PC0(futsal),PC1(basket),PC2(voley) regresa
                        ;al inicio de la subrutina
                        ;hasta que se haga la seleccion de deporte



futsal:

   ldi      r16,6
   sts      numfalt,r16
   ldi      r16,20
   sts      tiempo,r16
   ldi      r16,2
   sts      periodo,r16
   ldi      r16,1
   sts      dep,r16
   rjmp   fin_conf   

Basket:

   ldi      r16,6
   sts      numfalt,r16
   ldi      r16,20
   sts      tiempo,r16
   ldi      r16,4
   sts      periodo,r16
   ldi      r16,2
   sts      dep,r16
   rjmp   fin_conf   

Voley:
   
   ldi      r16,5
   sts      numfalt,r16
   ldi      r16,10
   sts      tiempo,r16
   ldi      r16,4
   sts      periodo,r16
   ldi      r16,3
   sts      dep,r16   

fin_conf:

   pop      r16
   ret




;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%  Rutina de incremento y visualizacion %%%%%%%%%%
;%%%%%%%%%            de puntos y faltas          %%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



PtoFal:

   pop      r17
   pop      r18
   pop      r19   

   lds      r17,numfalt
   lds      r18,tiempo
   lds      r19,periodo



   in      r16,pinc
   
   push   r16
   andi   r16,0b00001000      ;PC3 incrementa puntos del local
   cpi      r16,8
   breq   Pto_loc
   pop      r16
   
   push   r16
   andi   r16,0b00010000
   cpi      r16,16            ;PC4 incrementa puntos del visitante
   breq   Pto_vis
   pop      r16

;   push   r16
;   andi   r16,0b00100000
;   cpi      r16,32
;   breq   falta_loc
;   pop      r16

;   push   r16
;   andi   r16,0b01000000
;   cpi      r16,64
;   breq   falta_vis
   
   rjmp   PtoFal


Pto_loc:

   
   lds      r16,ptoloc   
   inc      r16   
   sts      ptoloc,r16

   push   r16
   push   r17
   sts      boton,r16
   rcall   separa_dig
   
   lds      r16,less
   ldi      r17,0b00110000
   sts      bits_disp,r17
   rcall   visualiza
   
   lds      r16,most
   ldi      r17,0b00110100
   sts      bits_disp,r17
   rcall   visualiza
   pop      r17
   pop      r16

   cp      r16,r17
   breq   rst_ptoloc
   rjmp   ptofal

rst_ptoloc:

   ldi      r16,0
   sts      ptoloc,r16

   rjmp   ptofal



Pto_vis:

      
   lds      r16,ptovis   
   inc      r16   
   sts      ptovis,r16

   push   r16
   push   r17
   sts      boton,r16
   rcall   separa_dig
   
   lds      r16,less
   ldi      r17,0b00111000
   sts      bits_disp,r17
   rcall   visualiza
   
   lds      r16,most
   ldi      r17,0b00111100
   sts      bits_disp,r17
   rcall   visualiza
   pop      r17
   pop      r16

   cp      r16,r17
   breq   rst_ptovis
   rjmp   ptofal

rst_ptovis:

   ldi      r16,0
   sts      ptovis,r16

   rjmp   ptofal
            

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%   Rutina que modifica y visuliza   %%%%%%%%
;%%%%%%%%%%%   el reloj en displays         %%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


Conf_rel:

      push   r16
      push   r17
      
      


      

      ldi      r16,1
      sts      inic_cont,r16

      pop      r16
      pop      r17


;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%%  Rutina de Visualizacion      %%%%%%%%
;%%%%%%%%%%%%   en cualquier Display        %%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

      
      
Visualiza:
      
      push   r16
      push   r17
      
      lsl      r16            ;el carry luego de la instruccion lsl es el bit7,
                        ;entonces para estos valores ya es cero porque el bit
                        ;7 de cada numero es "0" mirar tabla bcd_7seg
                        ;no es necesario utilizar CLC

      in       r17,pinD      
      andi     r17,0b00000001
      or      r17,r16
      out      portD,r17      ;enviando el dato por los pines PD1-PD7
                        ;teniendo cuidado de no modificar el
                        ;dato que hay en PD0
      
      
      ;rcall   tiempo   

      
      in       r16,pinB         
      andi   r16,0b00000011      ;guardo solo los bits pertenecientes
                           ;a CLK y A/B

      push   r16                     
      lds      r17,bits_disp      ;100000-disp1, 100100-disp2, 101000-disp3
                           ;101100-disp4, 110000-disp5, 110100-disp6
                           ;111000-disp7, 111100-disp8
      or      r16,r17
      out      portB,r16         ;ya esta habilitado el primer display
      
      ;rcall   tiempo
      
      pop    r16
                           ;PB4=0,PB3=0,PB2=0      
      
      lds      r17,bits_disp      ;bits_disp:   variable que lleva los datos para
      andi   r17,0b00011111
                           ;los selectores del decodificador
                           ;habilita un determinado display
      out      portB,r17         ;Display x desabilitado

      ;rcall   tiempo   

      pop      r17
      pop    r16
      ret      


;********************************************************
;************   Rutina que muestra en displays   *********
;************   decenas y unidades            *********
;********************************************************

Separa_dig:
   
   push    r16
   lds      r16,boton
   
   ldi      zh, high(tablacomb*2)
   ldi      zl, low(tablacomb*2)
   add    zl,r16
   clr    r16
   adc    zh, r16
   lpm      r16, z
   
;decenas y unidades
   
   push    r16
   andi    r16,$0f
   ldi      zh, high(bcd_7seg*2)
   ldi      zl, low(bcd_7seg*2)
   add    zl,r16
   clr    r16
   adc    zh, r16
   lpm      r16, z
   sts      less,r16      ;unidades
   pop      r16
   
   swap   r16
   andi    r16,$0f
   ldi      zh, high(bcd_7seg*2)
   ldi      zl, low(bcd_7seg*2)
   add    zl,r16
   clr    r16
   adc    zh, r16
   lpm      r16, z
   sts      most,r16      ;decenas
   pop      r16   
   ret
      
;***********************************************
;********          Tablas BCD          ********
;***********************************************


tabla_BCD:
ldi ZH, high (bcd_7seg*2)
ldi ZL, low (bcd_7seg*2)
lds r16, numero
add ZL, r16
clr r16
adc ZH, r16
lpm r16, Z
out portD, R16

ret


;******************************************
;*****   Tablas a usar en el programa
;******************************************

bcd_7seg:

;      gfedcba   
.db 0b00111111, 0b00000110   ;0, 1
.db 0b01011011, 0b01001111   ;2, 3
.db 0b01100110, 0b01101101   ;4, 5
.db 0b01111101, 0b00000111   ;6, 7
.db 0b01111111, 0b01101111   ;8, 9


tablacomb:

.db $00,$01,$02,$03,$04,$05
.db $06,$07,$08,$09,$10,$11
.db $12,$13,$14,$15,$16,$17
.db $18,$19,$20,$21,$22,$23
.db $24,$25,$26,$27,$28,$29
.db $30,$31,$32,$33,$34,$35
.db $36,$37,$38,$39,$40,$41
.db $42,$43,$44,$45,$46,$47
.db $48,$49,$50,$51,$52,$53
.db $54,$55,$56,$57,$58,$59




;*********************************************************
;******* Subrutina que configura la interrupcion    ******
;******* del timer 1 (interrup de 1 seg.)         ******
;*********************************************************

Init_TRM1:
push r16

ldi r16, $00
out TCCR1A, r16

ldi r16, $01
out TCCR1B, r16

in r16, TIMSK
ldi r17, $04
add r16, r17
out TIMSK, r16

ldi r16, $04
out TIFR, r16

pop r16
ret



;**********************************************
;*******    Subrutina de configuración    *******
;*******   de Timer2 CTC 9KHz aprox   *******
;**********************************************

Conf_timer2:

push R16

ldi R16, $0A ;modo CTC 0000 1010
out TCCR2, R16 ;prescalamiento 8

ldi R16, 14   ;era 14 para 9khz
out OCR2, R16 ;(1us)(8)(14) = 9 KHz

in R16, TIMSK ;hab interrupcion
ori R16, $80 ;timer2 comp
out TIMSK, R16

pop R16
ret



;*****************************************
;Subrutina q genera un Retardo de 3ms aprox
;*****************************************

tiempo:
   
      push r16
      push r17

      ldi      r17,3
nol:    ldi      r16,$ff
lanza:   dec      r16
      cpi      r16,0
      brne   lanza
      
      dec      r17
      cpi      r17,0
      brne   nol      


      pop r17
      pop r16

      ret            

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%%%%%%%%%%   Relacion de botones del control   %%%%%%%%
;%%%%%%%%%%%   remoto con sus respectivos       %%%%%%%%
;%%%%%%%%%%%   codigos   en hexadecimal         %%%%%%%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



;reset general         $00
;activar Futsal         $01
;activar basket         $02
;activar Voley         $03
;anotacion local +1      $04
;anotacion local -1      $05
;anotacion visita +1   $06
;anotacion visita -1   $07
;foul local +1         $08
;foul local -1         $09
;foul visita +1         $0a
;foul visita -1         $0b
;start time            $0c
;stop time            $0d
;aumenta segundos +1   $0e
;disminuye segundos -1   $0f
;aumenta minutos +1      $10
;disminuye minutos -1   $11
;aumenta periodo +1      $12
;disminuye periodo -1   $13
;tocar chicharra      $14
;reset anotaciones      $15
;reset tiempo         $16
;reset foul            $17




Desconectado jfh900

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #2 en: 18 de Junio de 2006, 17:32:59 »
No será que necesita polarizar la patilla de habilitación del lanch ?, por que no probais a poner una resistencia de 1M entre la patilla y masa.

Un saludo.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #3 en: 18 de Junio de 2006, 18:51:35 »
Hola Piston, en realidad ese circuito que as posteado no tiene mucho sentido, ¿que estas queriendo hacer con el mismo? ¿Por que los emisores de los TIP122 van al ULN?

Explicame un poco lo que quieres hacer con ese circuito y te puedo dar una mano con el diseño, ya que el posteado te aseguro no tiene mucho sentido, aparte ese ULN seguro se quemará.

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 Piston

  • PIC10
  • *
  • Mensajes: 10
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #4 en: 18 de Junio de 2006, 20:44:46 »
Hola Carlos, gracias por responder, la gracia de conectar la salida de los ULN a los emisores de los Tip es que estos ULN le den una tierra "virtual" a los Tip y asi puedan saturarlos para dejar pasar el dato que viene del Latch, entonces x el shift register que esta antes del dirver(inversor) ULN2003 hago mi multiplexion por software, puedes ver la subrutina barrido de mi programa. (PB0 --> CLK del shift register, y PB1 --> A/B del shift register)
No entiendo por que pueda quemarse el ULN si estoy trabajando a niveles TTL, por otro lado, cuando le quitamos la multiplexion por hardaware el programa funciona muy bien, pero tambien consume mucha corriente, y eso puede quemar los leds y tambien no se veria muy bueno un trabajo con alto consumo.
espero sugerencias
saludos
« Última modificación: 18 de Junio de 2006, 20:47:59 por Piston »

Desconectado MSK

  • PIC12
  • **
  • Mensajes: 53
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #5 en: 18 de Junio de 2006, 21:18:44 »
Hola la verdad es medio raro el sistema de usar los tip a masa a traves del uln2003, ya que estos son de 500ma. y otra cosa fijate la pata 9 del uln tiene que estar a la tension de los display (no a 5v) por los diodos en inversa que tiene.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #6 en: 18 de Junio de 2006, 23:56:02 »
Hola Piston, en este caso tu estas usando dos tensiones distintas en tu circuito, por lo tanto olvidate de las masas virtuales ya que en el diseño de tu circuito al entrar el corte el ULN estas polarizando en inversa el TIP122 y podrias quemarlo tanto como al lanch.

el ULN se puede quemar poruqe solo soporta el maximo de 500mA en la suma de todas la potencias disipadas por los 7 transistores internos, y no debes superar los 200mA maximo por transistor.

Ahora yo no me explico, por que haces tan complicado el circuito si con uno más sencillo puedes hacer lo mismo.

Una pregunta ¿Ese circuito va por cada digito? o ¿Acciona varios digitos?

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 Piston

  • PIC10
  • *
  • Mensajes: 10
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #7 en: 19 de Junio de 2006, 12:16:04 »
Es un poco complicado explicar esto por este medio, el esquematico de la tarjeta que les deje es solo de un display, como ven hay 7 transistores darlington, 1 para cada segmento, en total, 7 segmentos, tenemos 11 cifras en total, por lo tanto tenemos 11 tarjetas de control como la anterior.
No polarizo en inversa al Tip, solo lo saturo para que deje pasar la señal del Latch, el shift register desplaza un 1 logico, que entra al ULN y como es inversor este deplazara un cero por cada pata del de emisor de los tips, es asi que cuando se tenga un uno por la entrada del ULN tendremos un cero logico a su salida y el emisor de Tip conectado a esa salida del ULN es saturara el mismo tip.
Estamos trabajando 2 meses con ese ckto hasta trabajamos sin multiplexar consumiendo grandes corrientes por display, y nunca se han quemado ni los tips ni los uln ni los latches, lo que sucede es que es un poco complicado de entender. El bloque del Shift register en cacada con el ULN es para la multiplexion de segmentos y me ayudara a ahorrar energia en el tablero.
mas sugerencias.
Estamos probando con un filtro en el clk del latch en estos momentos
mas noticias en 30 minutos
saludos
« Última modificación: 19 de Junio de 2006, 12:18:21 por Piston »

Desconectado MSK

  • PIC12
  • **
  • Mensajes: 53
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #8 en: 19 de Junio de 2006, 14:34:38 »
Hola si es complicado porque no es muy logico, para multiplexar o ahorrar corriente simplemente poder unir todos los emisores de los TIP y conectarlos a un solo transistor ( TIP o FET) y este es el encargado de darle la masa al display, de esta manera solo un display a la vez esta encendido ( 60 a 100hz).
Bueno es una idea.      Saludos

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #9 en: 19 de Junio de 2006, 14:38:31 »
Hola MSK, no puedes costar los emisores de los TIP, ya que estarías polarizando es inversa sus bases con la posibilidad de quemar el 74373.

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 MSK

  • PIC12
  • **
  • Mensajes: 53
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #10 en: 19 de Junio de 2006, 15:17:46 »
 Carlos que se queme el 373 no lo creo, si tiene resistencias en sus salidas.. pero es verdad que no es un muy eficas el sistema ya que el TIP necesita 2.5 v base emisor, mas lo que se agrega el emisor.
 Otra forma mejor seria usar el  OUTPUT CONTROL del 373 y listo   

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #11 en: 19 de Junio de 2006, 15:52:54 »
Hola MSK, que tengas las resistencias en las bases de los TIP no evitara que lo quemes porque si lo quemas es por tension y no por corriente.

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 Piston

  • PIC10
  • *
  • Mensajes: 10
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #12 en: 22 de Junio de 2006, 22:03:42 »
el problema se solcuiono dandole alimentacion indepependiente a las tarjetas de control de los displayas, antes estaban alimentadas en serie, lo que hacia que de bloque en bloque aumentara el ruido, ahora las conectamos en paralelo, cada una de frente de nuestra fuente de 5Vdc.

Ahora solo me queda programar.

saludos

Desconectado Piston

  • PIC10
  • *
  • Mensajes: 10
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #13 en: 03 de Septiembre de 2006, 16:03:44 »
Holas como estan, les escribo de nuevo porque ya tenemos listo el tablero pero cuando reorganizamos el cableado de todo, otra vez reaparecio el problema del ruido, nos esta molestando bastante, ya no sabemos que hacer, el tablero funciona a la perfeccion, el control remoto RF tambien funciona, pero el ruido no para, los display parpadean demasiado, estoy buscando x google alo que me diga como atenuar eso, pero no encuentro, los leds parpadean mucho!!
ayuda

Desconectado ogctronik

  • PIC10
  • *
  • Mensajes: 1
Re: Tablero Electronico Multideportivo (marcador) Ayuda!
« Respuesta #14 en: 07 de Agosto de 2011, 12:43:22 »
Hola, Piston Carlos y demas. Soy nuevo en este foro, pero les puedo hacer llegar algunas recomendaciones. Primero respecto al circuito como coincidian los que tratamos de ayudar, no seria el adecuado, ya que por lo que veo estas intentando mutiplexar digitos y ademas los segmentos de cada digito. Pero si esta intentando realizar un marcador deportivo estos deben de ser visibles hacia el publico, por lo que si utilizas multiplexion la visivilidad de los leds se degrada y claro esto se puede superar aumentando la corriente pico de los leds con lo que incrementas nuevamente la potencia consumida, asi que estas en lo mismo.
Por otro lado es problema que tienes con respecto a las fallas con el aumento del voltaje, eso es simple, al aumentar el voltaje aumenta el ruido electrico y dependiendo del diseño del PCB este puede influir en mayor o menor grado dentro del circuito. Yo te recomendaria revisar como es estan ruteadas algunas PCBs digitales que utilizan reglas respecto a como llevar la alimentacion a cada uno de los ICs, esto solucionaria tu problema.