Multiplexación
La multiplexacion es utilizada para combinar varios canales de información en un solo medio, se logra combinando o sincronizando señales por diferentes métodos. El dispositivo que transmite los mensajes es llamado multiplexor.
Tipos de multiplexación
La multiplexación por división de tiempo:
Es un medio de transmitir dos o mas camañes de información en el mismo circuito utilizando una técnica de tiempo compartido, es muy útil para señales binarias puesto que solo requieren una unidad de tiempo.
Multiplexión por división de frecuencia
En este tipo de multiplexion se utiliza para transmitir varios canales, el espectro de frecuencias, donde cada canal ocupa continuamente una pequeña fracción del espectro de frecuencias transmitido.
Multiplexado estadístico o asíncrono
Este es un caso particular de la division por tiempo y consiste en que los tiempos de espera entre una señal y otra dependen del tráfico existente por cada canal en cada momento así que se podría decir que es adaptativo.
Ejemplos de aplicacion del método:
- Telegrafia
- Telefonia
- Procesamiento digital
- transmisiones digitales
- Transmisiones analogas
Código ejemplo - Contador hexagesimal con dos displays
Como ejemplo para esta publicación construí un código de un contador hexagesimal con dos display que comparten el mismo canal para encender las lineas que forman los números.
Materiales:
- 2 display de cátodo
- 7 resistencias de 220 Ohms
- PIC16F628A
- 7805-CT Regulador Tension 5V
Código:
#include "pic16f628a.h"
#define __16f628a
unsigned int __at 0x2007 __CONFIG = _INTOSC_OSC_CLKOUT &
_WDT_OFF&
_LVP_OFF&
_DATA_CP_OFF&
_PWRTE_ON;
unsigned short int i, j, z; //Declara 3 variables contadores
unsigned short int contador[2] = {0,0};//Un contador para cada display
int main(void){
TRISB = 0x00;// Define los puertos del registro TRISB como salidas
TRISA = 0x00;// Hace lo mismo para el registro TRISA
PORTA = 0b00000000;
PORTB = 0x00;
while(1){
for(i = 0; i < 20; i++){// Aquí es donde se lleva a cabo el multiplexado
for( z = 0; z < 2; z++){
if( z == 0){
PORTA = 0b00000001;//Aquí manda los datos por el primer canal
}else{
PORTA = 0b00000010;//Aquí manda los datos por el segundo canal
}
if(contador[z] == 0) PORTB = 0b01111110;// Todos estos if mapean un número con los elementos con los elementos que deben encenderen el display.
if(contador[z] == 1) PORTB = 0b01001000;
if(contador[z] == 2) PORTB = 0b00111101;
if(contador[z] == 3) PORTB = 0b01101101;
if(contador[z] == 4) PORTB = 0b01001011;
if(contador[z] == 5) PORTB = 0b01100111;
if(contador[z] == 6) PORTB = 0b01110111;
if(contador[z] == 7) PORTB = 0b01001100;
if(contador[z] == 8) PORTB = 0b01111111;
if(contador[z] == 9) PORTB = 0b01001111;
if(contador[z] == 10) PORTB = 0b01011111;
if(contador[z] == 11) PORTB = 0b01110011;
if(contador[z] == 12) PORTB = 0b00110110;
if(contador[z] == 13) PORTB = 0b01111001;
if(contador[z] == 14) PORTB = 0b00110111;
if(contador[z] == 15) PORTB = 0b00010111;
for( j = 0; j < 1000; j++);//Este es el tiempo de espera para que tenga tiempo de encenderse el display
}
}
if( contador[0] == 15){// Estas instrucciones sirven como contador
contador[0] = 0;
contador[1] = 0;
}else{
if(contador[1] == 15){
contador[0]++;
contador[1] = 0;
}else{
contador[1]++;
}
}
}
return 0;
}
Video:
Como puede observarse hay cierto parpadeo mientras se muestra el número debido a que se turnan las señales entre canal, pero aun así los números en los display son legibles así que por esas razones fue que elegí esta técnica para mapear el juego de la vida en la matriz de leds para el proyecto PIC.
Referencias:
http://www.slideshare.net/ggordillo/que-es-la-multiplexacin-presentation
http://www.mitecnologico.com/Main/TecnicasDeTransmisionMultiplexacionYConmutacion

9 pts lab de integrados
ResponderBorrar