Autor Tema: Duda Sobre Multiplexacion de puertos  (Leído 6115 veces)

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

Desconectado Goodfrey

  • PIC12
  • **
  • Mensajes: 87
Duda Sobre Multiplexacion de puertos
« en: 21 de Marzo de 2010, 00:24:58 »
Buenas noches, saludos cordiales a todos desde venezuela, tengo una duda sobre la multiplexacion de puertos, resulta que tengo que hacer un diseño de un estacionamiento de 2 pisos y mostrarlos en 3 display 7 segmentos, entonces la duda que tengo, es que no tengo pines disponibles para la aplicacion que me estan pidiendo...

Manejo 4 sensores infrarojos 2 de entra de vehiculos y 2 de salidas, y tengo que multiplexar los 3 display con 2 pines del micro, haciendo uso de una logica TTL puedo producir esa multiplexacion, uno de esas entradas de cualquiera de los pisos tienes que ser manejado como una interrupcion (aun no esta diseñado) pero la duda que tengo es la siguiente:

Necesito que me muestre por medio de 2 leds si hay puestos disponibles o no, pero no tengo pines donde controlarlos entonces seria de gran ayuda que me orientaran de como puedo hacer esa multiplexacion por que sinceramente no tengo ni idea de lo que puedo hacer...

Aqui les dejo el codigo de lo que llevo hasta los momentos para que lo miren y me digan que puedo tener mal xq a la hora de decrementar el contador, este me baja 1 o 2 numero y luego se cuelga, y sinceramente no se por que???

el PIC  que estoy utilizando es un PIC 16F628

Código: [Seleccionar]
;***********************************************************
;*********************** ENCABEZADO ************************
;***********************************************************

LIST P=16F628
INCLUDE P16F628.INC
__CONFIG 0x3F61
;0x3F18


CONTADOR EQU 0X0C


;***********************************************************
;**************** DECLARACION DE VARIABLES *****************
;***********************************************************

CBLOCK 0x20

RET
RET1
PDel0
UNIDAD
DECENA
CENTENA
CONT

ENDC

;***********************************************************
;**************** CONFIGURACION DE PUERTOS *****************
;***********************************************************

RESET
ORG 0x00
GOTO INICIO

INICIO
MOVLW 0x07
MOVWF CMCON ; DESHABILITA LOS COMPARADORE
BSF STATUS,RP0 ; CAMBIO AL BANCO 1
MOVLW B'00011100'
MOVWF TRISA
MOVLW B'00000001'
MOVWF TRISB
BCF STATUS,RP0 ; CAMIBO AL BANCO 0
CLRF PORTA ; LIMPIO PORTA
CLRF PORTB ; LIMPIO PORTB
CLRF UNIDAD
CLRF DECENA
CLRF CENTENA
GOTO ACT_DISP

;***********************************************************
;***************** RUTINA SEGUNDO PISO *********************
;***********************************************************

PISO2
BTFSS PORTA,3
GOTO $+2
GOTO AUMENT
BTFSS PORTA,2
GOTO PISO2
GOTO DECREM
AUMENT
BTFSC PORTA,3
GOTO $-1
INCF UNIDAD,1
MOVLW D'10'
SUBWF UNIDAD,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF UNIDAD
INCF DECENA,1
MOVLW D'10'
SUBWF DECENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF DECENA
INCF CENTENA,1
MOVLW D'10'
SUBWF CENTENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF CENTENA
GOTO PISO2
DECREM
BTFSC PORTA,2
GOTO $-1
DECF UNIDAD,1
MOVLW D'0'
SUBWF UNIDAD,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF UNIDAD
DECF DECENA,1
MOVLW D'0'
SUBWF DECENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF DECENA
DECF CENTENA,1
MOVLW D'0'
SUBWF CENTENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF CENTENA
GOTO PISO2

ACT_DISP
MOVFW D'10'
MOVWF CONT
REFRESCO
MOVFW UNIDAD
CALL BCD7SEG
BCF PORTA,0
BSF PORTA,1
RUTINA
MOVWF PORTB
BCF PORTA,0
BCF PORTA,1
MOVFW DECENA
CALL BCD7SEG
BCF PORTA,0
BSF PORTA,1
MOVWF PORTB
BSF PORTA,0
BCF PORTA,1
MOVFW CENTENA
CALL BCD7SEG
BCF PORTA,0
BSF PORTA,1
MOVWF PORTB
BSF PORTA,0
BSF PORTA,1
DECFSZ CONT,1
GOTO REFRESCO
GOTO PISO2

BCD7SEG
ADDWF PCL,1
RETLW B'10000001' ;0
RETLW B'11110011' ;1
RETLW B'01001001' ;2
RETLW B'01100001' ;3
RETLW B'00110011' ;4
RETLW B'00100101' ;5
RETLW B'00000101' ;6
RETLW B'11110001' ;7
RETLW B'00000001' ;8
RETLW B'00110001' ;9
CLRF PCL
RETLW B'10000001' ;0

DEMORA_5MS
MOVLW 0xFF
MOVWF RET
LOOP MOVLW 0x07
MOVWF RET1
DECFSZ RET1,1
GOTO $-1
DECFSZ RET,1
GOTO LOOP
RETURN
END


Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #1 en: 21 de Marzo de 2010, 02:16:32 »
.


¿Qué tal? Si entiendo bien, el total de pines que necesitarías son 16 (10 para los displays, 4 para los sensores y 2 más para cada led). Y en estas circunstancias, el 16F628 te alcanza justo, usando el oscilador interno y deshabilitando el pin MCLR.
Si necesitás este pin y usar un oscilador externo, podrías ahorrar 3 pines en la multiplexión usando un 7447 y 3 transistores (cada transistor habilita el cátodo común del display a utilizar y el 7447 es un "conversor" binario->7 segmentos con 4 líneas de entrada; en total: 7 líneas para el manejo de los displays)
Al código le doy una mirada mañana, porque a estas altas horas ya no entiendo nada  :oops:)
Saludos.


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado MarkKnopfler81

  • PIC12
  • **
  • Mensajes: 64
    • PICs, Electrónica y Robótica
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #2 en: 21 de Marzo de 2010, 08:30:05 »
Hola,

Como dice mtristan puedes usar el reloj interno o un CD4511 para usar 4 pines en lugar de los 7 para los displays o usar 3 shift registers serial-paralelo que usarias 3 pines y contralarías los 3 display y los 2 led sin multiplexar....

saludos.

Desconectado Goodfrey

  • PIC12
  • **
  • Mensajes: 87
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #3 en: 21 de Marzo de 2010, 10:18:50 »
hola gracias por la pronta respuesta, pero se me ha olvidado alcar unas cosas, el 628 solo puedo trabajarlo como si fuera un 84 y no puedo usar ningun tipo de circuiteria externa que no sea la logica TTL para la multixplexacion de los display y mas nada, 0 registres, 0 decodificadores, etc, en un rato anexo el circuito en proteus para que vean como lo tengo conectado... Pero en resumen seria algo asi...

RA0 y RA1 son para el multiplexado de displaY
Ra2 y RA3 son para entradas de entrada y salida de vehiculos...
RA4 y RB0 son para entradas y salidas de otro piso del estacionamiento.
RB1 a RB7 son los pines para los display
Mclr con una res de 10K a vcc
y los 2 pines del oscilador extermo.

Es decir tengo todos mis pines ocupados y no se como hacer esa multiplexacion... e hay mi erredo....

Desconectado MarkKnopfler81

  • PIC12
  • **
  • Mensajes: 64
    • PICs, Electrónica y Robótica
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #4 en: 21 de Marzo de 2010, 10:46:14 »
Ni siquiera puedes usar compuertas?
supongo que transistores si... tendrias que hacer una especie de decodificador BIN2DEC con transistores, me parece demasiado tedioso para el trabajo tan simple que deseas hacer, pero como práctica sería muy didáctico...

saludos.

Desconectado Goodfrey

  • PIC12
  • **
  • Mensajes: 87
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #5 en: 21 de Marzo de 2010, 11:01:16 »
si pana lo unico que puedo hacer es usar una logica de compuerta solo para el multiplexado de los display del resto todo tiene que manejarlo el micro... es tedioso, pero lo que pasa es que en el laboratorio muchos usan el 84 y otros como yo usarn el 628 y el profesor nos limito a los que usamos el 628 que solo podiamos usarlo como 84 por eso...

aqui dejo todo la simulacion en proteus para ver si me siguen... es proteus 7.5



ojala entiendan lo que e echo

Desconectado MarkKnopfler81

  • PIC12
  • **
  • Mensajes: 64
    • PICs, Electrónica y Robótica
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #6 en: 21 de Marzo de 2010, 11:31:07 »
Entonces lo que tienes que hacer es en lugar de usar 3 compuertas AND usa 4 y multiplexa tambien los leds...

saludos.

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #7 en: 21 de Marzo de 2010, 12:35:55 »
.


Los LEDs indican si hay espacio disponible o no; entonces no pueden estar encendidos los dos juntos y cuando uno está encendido el otro está apagado. Entonces podrías usar una compuerta AND más para controlar los LEDs:



(Disculpas por lo desprolijo,  pero solo tengo el Paint  :mrgreen:), así en vez de multiplexarlos, usas las líneas de selección para controlarlos: cuando ambas estén en 1 (no se selecciona ningún display) se enciende el LED de abajo. Sino, se encuentra encendido el de arriba.
Ah, una cosa más: no te olvides de ponerle unos transistores al cátodo común de cada display, porque no se si las compuertas TTL aguantan tanta corriente.
Saludos y espero que sirva.


« Última modificación: 21 de Marzo de 2010, 12:40:35 por mtristan »
When you see a good move, look for a better one (Emanuel Lasker)

Desconectado Goodfrey

  • PIC12
  • **
  • Mensajes: 87
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #8 en: 21 de Marzo de 2010, 12:39:56 »
.


Los LEDs indican si hay espacio disponible o no; entonces no pueden estar encendidos los dos juntos y cuando uno está encendido el otro está apagado. Entonces podrías usar una compuerta AND más para controlar los LEDs (ver adjunto en este mensaje, y disculpas por lo desprolijo,  pero solo tengo el Paint  :mrgreen:), así en vez de multiplexarlos, usas las líneas de selección para controlarlos: cuando ambas estén en 1 (no se selecciona ningún display) se enciende el LED de abajo. Sino, se encuentra encendido el de arriba.
Ah, una cosa más: no te olvides de ponerle unos transistores al cátodo común de cada display, porque no se si las compuertas TTL aguantan tanta corriente.
Saludos y espero que sirva.


ok mi pana eso es lo que estoy haciendo con los transistores xq sinceramente solo me prende 1 solo de 3 display pero la corriente que sueltan los ttl no me activan los transistores voy a ver que puedo hacer... y el no se que imagen estas hablando xq no anexaste nada mi pana...

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #9 en: 22 de Marzo de 2010, 10:48:23 »
.


Ahí modifiqué la respuesta y se ve la imagen. De cualquier forma acabo de darme cuenta de que mi idea no va a servi de mucho  :oops:, porque el led de arriba va a estar prendido siempre más que el de abajo.
Sobre los transistores, yo nunca me acuerdo bien cómo es el cálculo de resistencias, así que me fijo en http://picmania.garcia-cuervo.net/electronica_basica.php#TRANS1
Saludos.


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #10 en: 22 de Marzo de 2010, 10:56:42 »
podrías utilizar para los LEDS, además de RA0 y RA1, alguno de los pines RB1 a RB7, así cuando RA0 y RA1 valen 1, le das por ejemplo un 1 al RB7 (si usas éste), se prende el led conectado a masa, y si le das 0 se prende el led conectado a vcc.   

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #11 en: 22 de Marzo de 2010, 15:25:34 »
.


Citar
podrías utilizar para los LEDS, además de RA0 y RA1, alguno de los pines RB1 a RB7, así cuando RA0 y RA1 valen 1, le das por ejemplo un 1 al RB7 (si usas éste), se prende el led conectado a masa, y si le das 0 se prende el led conectado a vcc.   

¡Gran idea! Estuve pensando un poco y se me ocurrió que pordía quedar algo así:



Cuando RA0 y RA1 están en 1:
- Si RB0=0 y RB1=1 --> Se enciende el LED de arriba
- Si RB0=1 y RB1=0 --> Se enciende el LED de abajo
- Si RB0=1 y RB1=1 --> Ambos LEDs apagados
- Si RB0=0 y RB1=0 --> Ambos LEDs encendidos


PD: ¿Qué significa "pana"?  :huh:
Saludos.


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #12 en: 22 de Marzo de 2010, 16:57:57 »
Pero también se te encienden cuando la salida de la compuerta está en bajo, y RB1 y RB0 están en alto. Esto lo puedes solucionar por software, asegurándote que cuando la compuerta tiene un 0, estas dos salidas también estén en cero.

Desconectado MarkKnopfler81

  • PIC12
  • **
  • Mensajes: 64
    • PICs, Electrónica y Robótica
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #13 en: 22 de Marzo de 2010, 18:32:23 »
A esto me referia a usar 4 compuertas para multiplexar los leds, creo que es la opcion mas sencilla y efectiva



Edito: en la imagen anterior estaban los led al reves...

saludos.
« Última modificación: 22 de Marzo de 2010, 18:37:04 por MarkKnopfler81 »

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Duda Sobre Multiplexacion de puertos
« Respuesta #14 en: 22 de Marzo de 2010, 18:50:07 »
.

Citar
Edito: en la imagen anterior estaban los led al reves...

Muy cierto  :mrgreen:
Disculpas por eso.


When you see a good move, look for a better one (Emanuel Lasker)


 

anything