lunes, 25 de octubre de 2010

CONVERTIR NUMEROS CON PUNTO DECIMAL A BINARIOS



CONTADOR 0 A 99 (2do. Parcial)

En este enlace se muestra el video del exámen del 2do. parcial, el contador de 0 a 99 visualizado en 2 displays de 7 segmentos. Para poder ver el video, haga click aquí.

Además,a continuación se encuentra el código utilizado para realizar este trabajo.
 
list p=16f877a
#include
__CONFIG _WDT_OFF&_PWRTE_ON&_XT_OSC&_LVP_OFF&_CP_OFF

retardo1 equ 0x10
retardo 2 equ 0x11
contador equ 0x13

CERO       equ 0x3F   ;    01111110B
UNO        equ 0x06   ;    01001000B
DOS         equ 0x5B   ;    00111101B
TRES       equ 0x4F   ;    01101101B
CUATRO  equ 0x66   ;    01001011B
CINCO    equ 0x6D   ;    01100111B
SEIS         equ 0x7D   ;    01110111B
SIETE        equ 0x07   ;   01001110B
OCHO     equ 0x7F   ;     01111111B
NUEVE    equ 0x6F   ;    01101111B

       org 0x00
       bsf STATUS,RP0 
       bcf STATUS,RP1 
       movlw 0x00
       movwf TRISB     ;Configura Puerto B como salida
       movwf TRISC     ;Configura Puerto C como salida
       bcf STATUS,RP0 
       bcf STATUS,RP1

Decenas:     
       clrf contador
       clrf PORTC     
ciclo:  
       movlw CERO    
       movwf PORTB
       call RETARDO
       movlw UNO
       movwf PORTB
       call RETARDO
       movlw DOS
       movwf PORTB
       call RETARDO
       movlw TRES
       movwf PORTB
       call RETARDO
       movlw CUATRO
       movwf PORTB
       call RETARDO
       movlw CINCO
       movwf PORTB
       call RETARDO
       movlw SEIS
       movwf PORTB
       call RETARDO
       movlw SIETE
       movwf PORTB
       call RETARDO
       movlw OCHO
       movwf PORTB
       call RETARDO
       movlw NUEVE
       movwf PORTB
       call RETARDO

       incf contador,1
       movlw 0x10
       xorwf contador,w
       btfsc STATUS,Z 
       goto  Decenas                   
      
Unidades     
       movlw 0x01
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=1;
       goto PRINT1
      
       movlw 0x02
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=2;
       goto PRINT2

       movlw 0x03
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=3;
       goto PRINT3

       movlw 0x04
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=4;
       goto PRINT4

       movlw 0x05
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=5;
       goto PRINT5
      
       movlw 0x06
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=6;
       goto PRINT6

       movlw 0x07
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=7;
       goto PRINT7

       movlw 0x08
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=8;
       goto PRINT8

       movlw 0x09
       xorwf contador,w
       btfsc STATUS,Z   ;Verifica si contador=9;
       goto PRINT9
      

;Muestra Decenas en el Display
PRINT1:
       movlw UNO       
       movwf PORTC
       goto ciclo
PRINT2:
       movlw DOS       
       movwf PORTC
       goto ciclo
PRINT3:
       movlw TRES       
       movwf PORTC
       goto ciclo
PRINT4:
       movlw CUATRO       
       movwf PORTC
       goto ciclo
PRINT5:
       movlw CINCO       
       movwf PORTC
       goto ciclo
PRINT6:
       movlw SEIS       
       movwf PORTC
       goto ciclo
PRINT7:
       movlw SIETE       
       movwf PORTC
       goto ciclo
PRINT8:
       movlw OCHO       
       movwf PORTC
       goto ciclo
PRINT9:
       movlw NUEVE       
       movwf PORTC
       goto ciclo

RETARDO
       movlw 0x23 
       movwf retardo1
dos movlw 0x23
        movwf retardo 2
uno decfsz retardo 2
        goto uno
        decfsz retardo 1
        goto dos
        return
end

lunes, 23 de agosto de 2010

PRESENTACION MPLAB

Este es el link para checar la presentación donde se describe qué es Mplab y cómo comenzar a usarlo.

COMPARATIVA PIC16F84 VS PIC16F877

     Ahora realizaré una comparativa entre los microcontroladores PIC16F84 y el PIC16F877, analizando sus características y estructuras internas.

PIC16F84

• Tiene una arquitectura Harvard, es decir memoria de programa y memoria de datos se acceden por buses separados.
• Las instrucciones se ejecutan en un sólo ciclo de reloj, con excepción de las instrucciones de salto que se ejecutan en 2 ciclos de reloj.
• El bus de programa es de 14 bits de ancho.
• 15 registros de funciones especiales.
• Memoria de datos RAM de 68 bytes o registros.
• Contiene una memoria EEPROM de 64 bytes.
• Memoria de programa Flash de 1k x 14 bits.
• Dispone de 2 puertos paralelos(A y B) los cuales se pueden programar individualmente como entradas o salidas.
• Dependiendo del tipo de encapsulado tiene 18 ó 20 pines.
• Contiene un contador/temporizador de 8 bits.
• ALU de 8 bits y Registro de Trabajo W no direccionable.
• 40 años de retención de la memoria EEPROM.
• Puede operar bajo 4 modos diferentes de oscilador.
• Repertorio de 35 instrucciones.
• Pila de 8 niveles.
• Modos de direccionamiento directo, indirecto y relativo.
• Rango de alimentación de 4 a 5.5 V en configuración de oscilador XT, RC y LP, y de 4.5 a 5.5 V en configuración de oscilador HS.
• 4 fuentes de interrupción.
• Modo de bajo consumo SLEEP.
• 13 pines E/S con control individual de dirección.
• Protección de código.
• Programación en serie a través de dos pines.



Estructura Interna PIC16F84



PIC16F877

• Repertorio de 35 instrucciones.
• Tipo de arquitectura Harvard.
• Memoria de programa Flash de 8k x 14 bits.
• Memoria de datos RAM de 368 x 8 bytes
• Contiene una memoria EEPROM de 256 x 8 bytes.
• 40 pines.
• Pila de 8 niveles.
• Protección programable de código.
• Modo de bajo consumo SLEEP.
• 2 canales PWM.
• Modos de direccionamiento directo, indirecto y relativo.
• Contiene 3 timers y 14 interrupciones.
• 8 canales de entrada de CAD de 10 bits.
• 5 puertos de E/S (A, B, C, D, E).
• Las instrucciones se ejecutan en un sólo ciclo de reloj, con excepción de las instrucciones de salto que se ejecutan en 2 ciclos de reloj.
• Rango de voltaje de alimentación: 2.0 a 5.5 V.
• Soporta modo de comunicación serial para lo cual posee 2 pines.

Estructura Interna PIC16F877


CONCLUSIONES:

     Como se puede observar en la lista de características de ambos microcontroladores así como en sus diagramas de bloques, estos PIC’s poseen ciertos componentes y funciones muy similares entre ellos, como lo es una memoria RAM, memoria EEPROM, memoria Flash, pines de E/S, modos de direccionamiento, rangos de alimentación y operación, modos de comunicación y arquitectura, entre otros.

     Por otra parte sus principales diferencias se basan en cuanto a las memorias de programa y/o de datos, ya que el PIC 16F877 posee mayores capacidades, además de que tiene un mayor número de timers e incorpora algunas operaciones extras como por ejemplo el covertidor A/D de 10 bits y los canales de PWM. Además de algunas otras como el número de pines, número de puertos paralelos y de interrupciones, etc. Pero básicamente se puede observar que el principio de operación es muy similar entre ambos microcontroladores, asimismo la forma de direccionar e interpretar la información.

sábado, 21 de agosto de 2010

MICROPROCESADOR Z80

A continuación muestro una breve descripción acerca del microprocesador Z-80


Tipos de Encapsulados del Microprocesador Z-80

El microprocesador Z80 fue lanzado al mercado en julio de 1976 por la compañía Zilog. Es un microprocesador de 8 bits cuya arquitectura se encuentra a medio camino entre la organización de acumulador y de registros de propósito general. Es uno de los procesadores de más éxito del mercado, del cual se han producido infinidad de versiones clónicas, y sigue siendo usado de forma extensiva en la actualidad en multitud de sistemas embebidos.

Sus características fundamentales son:

         1. El transporte de señales se realiza sobre tres buses, el bus de direcciones, el bus de datos,así como el bus de control.

         2. Régimen de interrupción uniforme, con la posibilidad de encadenar las prioridades de los circuitos periféricos.

         3. Alto grado de programabilidad.

         4. Reloj único.

         5. Fuente de voltaje única de +5 Volts.



El microprocesador Z80 contiene las siguientes unidades funcionales;

1).- Unidad aritmética y lógica
2).- El contador de programa
3).- El apuntador del stack
4).- Registros de propósito general
5).- Registros de indice
6).- Registros de interrupciones
7).- Registro de banderas
8).- Registro para refrescar memorias dinámicas


Diagrama de Bloques del Z80


LA UNIDAD ARITMÉTICA Y LÓGICA (ALU)
Las operaciones del CPU Z80 se realizan con un grupo de dispositivos lógicos conocidos comúnmente como unidad aritmética y lógica (ALU) esta efectúa las siguientes operaciones:

   1. Suma binaria.
   2. Operaciones lógicas.
   3. Complementar a dos.
   4. Corrimiento de un bit a la derecha o a la izquierda.
   5. Registro de resultados importantes como el acarreo, signo, acarreo auxiliar, paridad o si el resultado es  zero.
   6. Comparaciones
   7. Poner, Limpiar o probar un bit


El funcionamiento del sistema consiste en que las instrucciones del microprocesador, que están en la memoria ROM, se ejecutan en una forma secuencial de operación, la fuente de datos es, la propia CPU, los periféricos o las memorias, la transferencia interna de datos es a través del CPU, exceptuando la transferencia de datos en el proceso de acceso directo a memoria.

Los registros constituyen una especie de pequeña memoria interna al microprocesador. El Z-80 tiene registros de 8 y 16 bits. Todas las operaciones que realiza el Z-80 se hacen entre números contenidos en los registros, o bien, entre un registro y una posición de memoria; por eso se dice que el Z-80 es un microprocesador orientado hacia los registros. La posibilidad de agrupar dos registros de 8 bits para formar uno de 16, permite al Z-80 realizar operaciones de 16 bits a pesar de ser un microprocesador de 8 bits.

El Z-80 tiene en total, 18 registros de 8 bits y 4 registros de 16 bits. Algunos son de uso general y otros tienen asignadas funciones específicas.


BIBLIOGRAFIA.

http://www.speccy.org/curso-cm/contenido/cap3.html

http://proton.ucting.udg.mx/dpto/maestros/mateos/z80/arquitectura/arquitectura.html






sábado, 14 de agosto de 2010

Clasificación de Sensores

SENSOR. Dispositivo capaz de medir magnitudes físicas o químicas, llamadas variables de instrumentación y transformarlas en variables eléctricas. Las variables de instrumentación pueden ser: temperatura, aceleración, presión, fuerza, humedad, etc. Algunas de las características técnicas de un sensor son:
  1. Rango de medida.
  2.  Precisión.
  3. Linealidad.
  4.  Sensibilidad.
  5. Resolución.
  6. Rapidez de respuesta, entre otras.


Debido al gran número de sensores que existen es necesario clasificarlos, y para ello existen diversos criterios como los que se muestran a continuación.


En los sensores modulares, la energía de la señal de salida procede en su mayor parte de una fuente de energía auxiliar; la energía suele suministrarse mediante hilos distintos a los empleados para la señal. Su sensibilidad se puede modificar a través de la señal de alimentación.
En los sensores generadores la energía de salida es suministrada por la entrada, requieren menos hilos que los moduladores pero su sensibilidad no se puede modificar.


En los sensores analógicos, la salida varía a nivel macroscópico de forma continua. La información está en la amplitud aunque se suelen incluir en este grupo los sensores  con salida en el dominio del tiempo.
En los sensores digitales, la salida varía en forma de saltos o pasos discretos. No requieren conversión A/D y la transmisión de su salida es más fácil. Tienen mayor fidelidad y muchas veces mayor exactitud, aunque lamentablemente no hay modelos digitales para muchas de las magnitudes físicas.

Los sensores que funcionan por deflexión, la magnitud medida produce algún efecto físico, que engendra algún efecto similar pero opuesto, en alguna parte del instrumento y que está relacionado con alguna variable útil, como por ejemplo el dinamómetro.
Los sensores que funcionan por comparación, se intenta mantener nula la deflexión mediante la aplicación de un efecto conocido, opuesto al generado por la magnitud a medir. Hay un detector del desequilibrio y un medio para restablecerlo, por ejemplo una balanza manual. Las medidas por comparación suelen ser más exactas porque el efecto conocido opuesto se puede calibrar con un patrón o magnitud de referencia. Su desventaja es que tienen menor respuesta dinámica, por lo que normalmente no se logra una respuesta tan rápida como en los de deflexión.

Otro tipo de sensores pudiera ser de acuerdo a su relación entrada-salida, los cuales pueden ser de orden cero, primer orden, segundo orden o de orden superior. El orden está relacionado con el número de elementos almacenadores de energía independientes que incluye el sensor, y repercute en su exactitud y velocidad de respuesta.

También existen otras clasificaciones, como aquella de acuerdo a la magnitud medida. Por ejemplo sensores de temperatura, presión, caudal, humedad, posición, velocidad, fuerza, etc. Sin embargo esta clasificación difícilmente puede ser exhaustiva ya que la cantidad de magnitudes que se pueden medir es prácticamente inagotable.
Desde el punto de vista de la ingeniería electrónica, es más atractiva la clasificación de los sensores de acuerdo con el parámetro variable: resistencia, capacitancia, inductancia, generadores de tensión, carga o corriente entre otros.

viernes, 13 de agosto de 2010



x

CONVERSIÓN DE SEÑALES

 
Figura obtenida de: http://es.wikipedia.org/wiki/Archivo:ADC-DAC.jpg

La RAE define la “señal” como una variación de la corriente eléctrica u otra magnitud que se utiliza para transmitir información. Por lo tanto, las señales que obtenemos de los distintos aparatos o dispositivos electrónicos son datos o información que debemos recopilar e interpretar adecuadamente; para ello es necesario hacer uso de los convertidores o codificadores de señales.

Antes de describir los codificadores o convertidores de señales, comenzaré con definir primeramente el concepto de señal analógica y señal digital.
Una señal analógica o análoga está definida en un intervalo continuo de tiempo y su amplitud puede tomar cierto intervalo continuo de valores. En cambio la señal digital es aquella que está cuantificada en su amplitud y se representa mediante una secuencia de números que, por lo general son los números binarios. A continuación se muestra una figura donde se observa ambos tipos de señales.



El mundo “real” es básicamente analógico, pero es frecuente encontrarnos en la necesidad de decodificar estas señales análogas en digitales, y viceversa. Muchos de los aparatos electrónicos e industriales parten de una señal analógica obtenida en muchas ocasiones por sensores y debe ser convertida a digital, una vez tratada transformar la señal digital en analógica. Esto debido a que las señales analógicas son difíciles de manipular, guardar y recuperar con exactitud, en cambio si estas señales las transformamos en información digital se facilita su tratamiento y manipulación, además de convertir la señal resultante (digital) más inmune al ruido y a otras interferencias a las que son más susceptibles las señales analógicas.

Es por esta y otras razones que el tema de los convertidores analógico-digital (A/D) ó digital-analógico (D/A) es de gran importancia, y se tratará al inicio de nuestro curso ya que es necesario conocer y comprender estos conceptos para posteriormente comenzar a analizar los principios de los microcontroladores.


CONVERSION ANALÓGICA-DIGITAL (ADC)


http://www.todomonografias.com/images/2007/03/102957.gif

El convertidor analógico-digital ADC (del inglés Analog to Digital Converter) es un dispositivo electrónico que puede realizar la operación de convertir una entrada analógica, como puede ser un voltaje, en un valor binario. Es muy utilizado en equipos como ordenadores, grabadores de audio o video y en equipo de telecomunicaciones.



Primeramente es necesario que definamos la precisión o exactitud que debe de tener nuestra señal digital con respecto a la señal analógica; para ello es necesario hacer un muestreo de la señal analógica.

Para determinar la resolución que tendrá nuestra señal digital establecemos la frecuencia de muestreo, esto quiere decir que la amplitud de la señal analógica se mide sucesivamente cada x segundos, dependiendo de la precisión o calidad que se desee obtener como resultado. Se recomienda que dicha frecuencia sea al menos, el doble de la frecuencia máxima de la señal a muestrear, es decir, de la señal analógica.
En electrónica donde las señales cambian de valor en tiempos muy breves, la mejor forma de llevar a cabo un muestreo es tomar medidas de tiempos muy cortos, del orden de micro o incluso nanosegundos.

El siguiente paso consiste en que la máxima amplitud obtenida de la señal muestreada se divida en 2n zonas, las cuales quedan representadas por un código compuesto de n dígitos binarios o bits. El numero n estará definido por la frecuencia a la cual se muestrea la señal analógica, es decir, por ejemplo si tenemos que una señal se muestrea a 3 kHz, el código de cada muestra consta de n=3 bits y por lo tanto contendrá 23 = 8 zonas de amplitud.



CONVERSION DIGITAL-ANALÓGICA (DAC)

El convertidor digital-analógico es un dispositivo electrónico que transforma una entrada digital a una señal analógica (generalmente un voltaje o carga eléctrica). Este tipo de conversores son la interfaz entre el mundo digital abstracto y la vida real analógica. Son muy utilizados en reproductores de sonido de todo tipo, debido a que actualmente las señales de audio son almacenadas en forma digital y, para ser escuchadas a través de los altavoces, los datos deben ser convertidos a una señal analógica.

http://upload.wikimedia.org/wikipedia/commons/thumb/d/d2/Sistema_anal%C3%B3gico_digital.png/500px-Sistema_anal%C3%B3gico_digital.png




 Otro ejemplo es un teléfono móvil digital, donde la señal de voz se convierte a formato digital; el flujo de bits resultante se envía a otro teléfono receptor, donde un DAC convierte los códigos en una aproximación de la señal analógica original, y esta a su vez se vuelve a convertir en sonido.

Sin embargo, la señal de salida del DAC no es exactamente la misma que la señal analógica de entrada original, y esto se debe a que los códigos obtenidos en el muestreo no contienen toda la información sobre el valor de la señal entre 2 muestras, sino que la salida del DAC es constante entre dos instantes de muestreo. Por lo tanto la señal “reconstruida” es una aproximación escalonada de la señal original. Otra diferencia importante es que los códigos no representan las amplitudes exactas de las muestras, por lo que el DAC debe de aproximar esa amplitud al valor central de la zona correspondiente; aún así existe una diferencia entre los valores de muestreo reales y las amplitudes reconstruidas, a este fenómeno se le denomina error de cuantificación.

Según algunos autores, esta conversión es la más sencilla de entender de las dos, y para explicarla se empleará un ejemplo sencillo con un método comúnmente utilizado.

CONVERSOR DAC DE 4 BITS
Se utilizará un sencillo circuito eléctrico para demostrar los principios de funcionamiento de un conversor digital-analógico; suponiendo que está formado por una fuente de alimentación y una serie de resistencias. Lo primero que se debe lograr es que la intensidad de corriente sea proporcional al contenido de la información binaria de 4 bits (a3, a2, a1, a0).

Por lo tanto si la corriente I0 representa al bit a0, entonces 2I0 representará el valor de a1, 4I0 representará a a2 y así sucesivamente. De lo que se trata es de reducir el valor de R a la mitad cada vez que movemos una posición hacia el bit más significativo.
Una cuestión importante es que las corrientes son aditivas, es decir que si medimos con un amperímetro la corriente que circula por el circuito, obtenemos que es igual a la suma de las corrientes parciales que circulan por las resistencias.
Si al circuito le añadimos un conmutador de dos posiciones en cada entrada de la tensión a las resistencias, estamos confinándolo a tomar dos valores lógicos (0 ó 1) de tal forma que si el interruptor se encuentra cerrado circulará cierto voltaje y su valor será de 1, en cambio si el interruptor se encuentra abierto tendrá voltaje nulo y tomará el valor de 0.

Para este ejemplo consideremos que los valores de las resistencias son de 100k(a0), 50k(a1), 25k(a2) y de 12.5k(a3). Si queremos obtener los valores de las 16 combinaciones posibles que se pueden dar conmutando los  4 bits obtenemos que:


0000 = 0.00 mA
0001 = 0.05 mA
0010 = 0.10 mA
0011 = 0.15 mA
0100 = 0.20 mA
0101 = 0.25 mA
0110 = 0.30 mA
0111 = 0.35 mA
1000 = 0.40 mA
1001 = 0.45 mA
1010 = 0.50 mA
1011 = 0.55 mA
1100 = 0.60 mA
1101 = 0.65 mA
1110 = 0.70 mA
1111 = 0.75 mA


Con un conversor DAC como el del ejemplo, se obtiene una señal analógica cuya forma de onda es escalonada, con un total de 6 escalones, con una diferencia entre uno y otro de 0.05 mA.


http://h10025.www1.hp.com/ewfrf-JAVA/Doc/images/c01532378.gif


BIBLIOGRAFIA:

  • Ruiz Vassallo, Francisco.  Electrónica Digital Fácil.  Editorial Alfaomega. Abril 2007.
  • Hambley, Allan R.  Electrónica 2ª Edición.  Editorial Prentice Hall. Madrid, 2001.
  •  Página Web: http://es.wikipedia.org/wiki/Conversi%C3%B3n_digital-anal%C3%B3gica