TODOPIC
Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: Piston 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.
-
;******************************************************
;******* 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
-
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.
-
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.
-
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
-
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.
-
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.
-
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
-
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
-
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.
-
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
-
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.
-
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
-
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
-
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.
-
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.
Siempre son bienvenidas las recomendaciones, almenos para futura gente que pueda leer esto, lo digo porque el hilo lleva casi 5 años sin movimiento, y me imagino que el proyecto ya estara mas que finalizado o abandonado.
Un saludo