jueves, 26 de junio de 2014

PIC16F877A ARQUITECTURA

El microcontrolador PIC16F877 consta de un procesador, memoria de programa y memoria de datos, periféricos de entrada / salida, convertidores de AD y DA, módulos de transmisión y recepción de datos.
La arquitectura del microcontrolador es cerrada debido a que no se puede tener ningún contacto directo con el procesador interno del microcontrolador, en cambio en un microprocesador la arquitectura es abierta,  debido a que podemos agregar mas dispositivos en hardware dependiendo de las necesidades.
Los microcontroladores PIC16F877 cuentan con un set de instrucciones reducido en cambio la mayoría de los microprocesadores tienen gran cantidad de instrucciones. La mayoría de los microcontroladores posee una arquitectura Harvard mientras los microprocesadores  poseen una arquitectura Von Neuman.





Los microcontroladores se aplicación en las industrias para resolver problemas específicos por ejemplo: los  electrodomésticos, en la industria automotriz, en el procesamiento de imagen y video entre otros.

Cracterísticas PIC 16F877A
  • Procesador de arquitectura RISC avanzada
  • Juego de 35 instrucciones con 14 bits de longitud.
  • Todas las instrucciones de un solo ciclo, excepto para el programa ramas, que son de dos tiempos
  • Frecuencia de 20 Mhz
  •  Hasta 8K palabras de 14 bits para la memoria de código, tipo flash.
  •  Hasta 368 bytes de memoria de datos RAM
  • Hasta 256 bytes de memoria de datos EEPROM
  • Hasta 14 fuentes de interrupción internas y externas
  • Pila con 8 niveles
  • Código de protección programable
  • Modo Sleep de bajo consumo
  • Programación serie en circuito con 2 patitas
  • Voltaje de alimentación comprendido entre 2 y 5.5 voltios
  • Bajo consumo (menos de 2 mA a 5 V y 5 Mhz)
  • Hasta 256 x 8 bytes de memoria EEPROM de datos
  • Perro guardián (WDT)
  • Modos de direccionamiento directo, indirecto y relativo


ARQUITECTURA INTERNA DEL PIC 16F877A
El  PIC16F877A es un  procesador tipo RICS que es un procesador de instrucciones reducidas, por su pequeño número de instrucciones, además casi todas se realiza en la misma cantidad de tiempo, posee unidades que trabajan en paralelo conectadas por pipes o tuberias. Este procesador emplea una arquitectura Harvard lo que significa que trabaja las zonas de memoria de programa y datos en forma separada. 


La memoria del Programa en la parte superior izquierda con 8K posiciones por 14 bits, también esta la memoria de datos (RAM) de 368 posiciones por 8 bits. La memoria EEPROM 256 posiciones x 8 bits. El procesador que está formado por la ALU (unidad aritmetica lógica) el registro de trabajo W. Tambien están los periféricos I/O Port A, B, C, D, E el TMR0 (temporizador contador de eventos), TMR1 y TMR2 entre otros. También observamos un registro de instrucción que se carga cada vez que el ALU solicita una nueva instrucción a procesar.




En la parte intermedia encontramos el Status Reg. que es el registro de estado encargado de anotar el estado actual del sistema, cada vez que se ejecuta una instrucción se llevan a cabo cambios dentro del PIC 16F877A como desborde, acarreo, etc. Cada uno de esos eventos está asociado a un bit de este registro. Existe el Program Counter o contador de programa este registro indica la dirección de la instrucción a ejecutar. El registro en cuestión no es necesariamente secuencial, esto es no se incrementa necesariamente de uno en uno ya que puede darse el caso en el que salte dependiendo si hay una instrucción de bifurcación de por medio o puede haber alguna instrucción de llamada a función y/o procedimiento. También tenemos el bloque de la pila, cuya  función es ser un buffer temporal en el que se guarda el contador de programa cada vez que se suscita una llamada a un procedimiento y/o función (incluyendo interrupciones). Por tanto el nivel de anidamineto es de hasta 8 llamadas.

ORGANIZACION DE MEMORIA DEL PIC 16F877A


La memoria del PIC 16F877A se divide en memoria de datos y programa. La de datos a su vez se divide en:

• SFR (Registros de propósito especial) :Son registros que ayudan a configurar el hardware interno asi como sirven para escribir o leer valores de los diferentes componente que constituyen el PIC 16F877A. Por ejemplo con el  registro “TRISB” podemos configurar el modo de trabajo de las líneas del puerto B
• GFR (Registros de propósito general): Estos  son posiciones de memoria que podemos usar para almacenar valores que emplean nuestros programa.





La memoria de datos del PIC 16F877A se divide en cuatro bancos. Las posiciones bajas siempre están reservadas para los SFR en tanto que las altas para los GFR.

El PIC 16F877A también cuenta con una memoria EEPROM, con 256 posiciones, para acceder a la memoria no podemos leer o escribir directamente es decir colocar la dirección y obtener o dejar el valor. Para eso haremos uso de registros adicionales de tal manera que la usaremos indirectamente.

INSTRUCCIONES PIC 16F877A
Este PIC 16F877A consta de 35 instrucciones con las cuales las podemos dividir en tres grupos
Instrucciones orientadas a byte : Estas reservan los 7 bits de menor peso donde se  indica la dirección del registro que será operado. Realizada la operación usamos el bit d para indicar donde será almacenado el resultado.
Instrucciones orientas a bit: Estas se encargan  escribir o leer una posición (bit) dentro de un registro. Una los 7 bits inferiores son destinados para indicar la dirección de registro que vamos a operar y los siguientes tres bit especifican el bit dentro del registro.
Literales o de control: nos sirven para crear bucles o llamar subrutinas a realizar.

PRENDER APAGAR UN LED PIC16F877A ASSEMBLER

Comenzaremos a hacer un programa sencillo en el cual podremos en assembler usando el PIC 16F877A para prender y apagar un led presionando un pulsador como se muestra en el diagrama.

Haremos uso de dos puertos del PIC 16F877A, el puerto B y el puerto D, declararemos al puerto B como entrada y el puerto D será configurado como salida.  En el grafico podemos observar que el pin RB0 está puesto el pulsador y una resistencia en  una configuración pull up, cuando no se está presionando el pulsador se pone un valor alto (5V) a la entrada RB0 y cuando se presiona se le pone un nivel bajo (0V).  En la salida RD0 para que encienda el led su salida debe estar a un nivel bajo por eso al momento de desarrollar el programa en assembler deberemos testear el pin BB0 y si esta en un nivel alto pondremos un valor alto en la salida RD0 que mantendra apagado el led, caso contrario pondremos un valor bajo en la salida RD0 lo cual hara que el led encienda.



PROGRAMA EN ASSEMBLER PARA EL PIC 16F877A
Para realizar el programa utilizaremos el MPLABX 2.0
Abrimos el programa MPLABX IDE.

  • Hacemos clic en file, seleccionamos New Project...
  • En ventana “Choose Project” que emerge seleccionamos “ Microchip Embedded “ y “Standalone Project”  ,luego hacemos clic en “next”.
  • En la ventana que emerge ”Select Device” dejamos el recuadro de “Family” en “all  families” y en el recuadro de “Device” digitamos “PIC16F877A” , luego presionamos “next”.
  • En la ventana “Select Tool”  seleccionamos “Simulator” y cliqueamos “Next”.
  • En “Select compiler” seleccionamos “mpasm(v5.54)[……..”.
  • Ahora seleccionamos la ubicación y nombre del proyecto.
  • Una vez creado el proyecto seleccionamos  New File y aparecerá una ventana “Choose File Type” y seleccionamos “assembler” si no aparece en la lista seleccionamos “Other” aparecerá una nueva lista donde podremos seleccionar “assembler”.
  • Luego podrás ponerle nonbre a File y seleccionar una carpeta dentro del proyecto y listo.
Ahora es momento de escribir el programa en assembler que se grabara en el pic 16f877a será el siguiente:

miércoles, 20 de noviembre de 2013

ARQUITECTURA DEL PROCESADOR 8086


El 8086 es un microprocesador de 16 bits, consta de una unidad de ejecución (EU: Execution Unit) y una unidad interfaz del bus (BIU: Bus Interface Unit).

·         Unidad de Ejecución (EU). Es la encargada del proceso de las instrucciones del CPU. Está conformada por los registros generales, los registros índices y apuntadores, los flags, la unidad aritmética lógica, y la lógica de control que maneja todo el proceso para ejecutar las instrucciones
·         Unidad de Interfaz del Bus (BIU). Realiza la búsqueda de datos e  instrucciones. Asi como también se encarga del control de la interacción del CPU y los elementos externos. Está conformada una cola de 6 bytes para instrucciones, por los registros de segmento  y lógica para controlar los buses externos del microprocesador.



REGISTROS
El  8086 tienen 14 registros de 16 bits, de los cuales 4 son de propósito general que también pueden ser accedidos como ocho registros de 8 bits, 4 registros de segmentos, 2 de índices, 2 punteros de pila  y un registro de indicadores de estado (flags).
Registros de Propósito General
Estos son el AX, BX, CX, y DX, de 16 bits. Cada uno de ellos se pueden dividir en dos registros de 8 bits, llamados registros altos (Hight) AH , BH, CH, DH y DL, y en registros de nivel bajo (Low) AL, BL, CL, y DL .
  • Registro AX: Se denomina acumulador de 16 bits, es utilizado para operaciones que implican entrada/salida,  multiplicación y división (estas dos últimas en conjunto con el registro DX)
  • Registro BX: Es el registro base, también se emplea como acumulador, y es el único registro de propósito general que puede ser un índice para direccionamiento indexado
  • Registro CX: Es conocido como el registro contador, se usa para realizar operaciones de conteo, interacciones con las cadenas y rotaciones.
  • Registro DX: ES el registro de datos. En algunas operaciones se indica mediante este registro el número de puerto de entrada/salida, y en las operaciones de multiplicación y división de 16 bits se utiliza junto con el acumulador AX.
Registros Índice
Los registros SI y DI están disponibles para direccionamiento indexado y para operaciones de cadenas de caracteres.

  • SI: Registro de índice fuente (no se puede subdividir). Sirve como puntero fuente para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto.  El SI está asociado con el segmento DS.
  • DI: Registro de índice de destino (no se puede subdividir). Sirve como puntero destino para las operaciones con cadenas. También sirve para realizar direccionamiento indirecto. El DI está asociado con el segmento ES.

Registros de Segmento
Estos definen áreas de 64 Kb dentro del espacio de direcciones de 1 Mb del 8086. Estas áreas pueden solaparse total o parcialmente. No es posible acceder a una posición de memoria no definida por algún segmento: si es preciso, habrá de moverse alguno.
  • Registro CS: El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.
  • Registro DS: La dirección inicial de un segmento de datos de programa es almacenada en el registro DS. Esta dirección, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte específico en el segmento de datos.
  • Registro SS: El registro SS permite la colocación en memoria de una pila, para almacenamiento temporal de direcciones y datos. El DOS almacena la dirección de inicio del segmento de pila de un programa en el registro SS. Esta dirección de segmento, más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica la palabra actual en la pila que está siendo direccionada.
  • Registro ES: Para algunas operaciones con cadenas de caracteres se utiliza el registro extra de segmento para manejar el direccionamiento de memoria. El ES está asociado con el  DI. Un programa que requiere el uso del ES puede inicializarlo con una dirección de segmento apropiada.

Registros Apuntadores Los registros BP y SP están asociados con el registro SS y permiten al sistema acceder a datos en el segmento de la pila.
  • Registro BP: El apuntador base de 16 bits facilita la referencia de parámetros dentro de la pila.
  • Registro SP: El apuntador de pila de 16 bits está asociado con el segmento SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila. El sistema maneja de manera automática este registro, aunque el programa puede hacer ciertas manipulaciones con él.
Registros de Banderas
Es un registro de 16 bits, de los cuales nueve sirven para indicar el estado actual de la del procesador  y el resultado del procesamiento


  • Bit 0 -  CF (indicador de acarreo): Contiene el acarreo del bit de mayor orden después de una operación aritmética; también almacena el contenido del último bit en una operación de desplazamiento o de rotación.
  • Bit 2  - PF (indicador de paridad): Indica si el número de bits 1, del byte menos significativos de una operación, es par (0=número de bits 1 es impar; 1=número de bits 1 es par).
  • Bit 4  -   AF (indicador  auxiliar): Contiene el acarreo del bit 3. Esta bandera se prueba con las instrucciones DAA y DAS para ajustar el valor de AL después de una suma o resta BCD.
  • Bit 6  -  ZF (indicador de cero): Indica el resultado de una operación aritmética o de comparación (0=resultado diferente de cero; 1=resultado igual a cero).
  • Bit 7 - SF (indicador de signo): Contiene el signo resultante de una operación aritmética (0=positivo; 1=negativo).
  • Bit  5 - TF (indicador de trampa): Permite la operación del procesador en modo de depuración (paso a paso)
  • Bit 9 -  IF (indicador de interrupción): Controla el disparo de las interrupciones (1=habilita las interrupciones; 0=deshabilita las interrupciones). La interrupción no enmascarable es la única que no puede ser bloqueada por esta bandera. El estado de la bandera IF se controla con las instrucciones STI y CLI.
  • Bit 10 - DF (indicador de dirección): Controla la selección de incremento o decremento de los registros SI y DI en las operaciones con cadenas de caracteres.
  • Bit 11  -  OF (indicador de overflow, desbordamiento): Indica desbordamiento del bit de mayor orden después de una operación aritmética de números con signo (1=existe overflow; 0=no existe overflow).
Registró Puntero De Instrucciones (IP)
El registro IP, puntero de instrucciones, apunta  o señala la próxima instrucción a ejecutarse en el programa.










lunes, 18 de noviembre de 2013

CONTADOR DIGITAL 7490 MODULO 2, 3, 4, 5, 6, 7, 8, 9 y 10

Ahora mostraremos las diferentes configuraciones deseables con el contador 7490 o contadores de diferentes módulos. debemos saber que el 7490 es un contador asíncrono y decimal pues puede contar de 0 a 9 en código BCD los cuales pueden ser mostrados en un display haciendo uso de un decodificador de binario a 7 segmentos. También haremos uso de un generador de pulsos elaborado con un 555 en configuración astable.


IMPORTANTE

  •  Recordar que el contador 7490 tiene una compuerta nand interno que tiene como entrada los pines 2 y 3 del contador 7090 y su salida al reset de los FLIP FLOP JK internos, por lo tanto para resetear el contador necesariamente los valores de entrada de los pines 2 y 3 deben ser valores altos a la vez (1 logico).



CONTADOR MODULO 2
Este contador de modulo 2 solo cuenta de 0 a 1 y se reinicia, pues se ha conectado el pin 9 a los pines  2 y 3 de contador 7490 respectivamente haciendo que al momento de querer cambiar al numero 2 este se resetee inmediatamente, reiniciando el conteo. 
Contador modulo 2


 CONTADOR DIGITAL MODULO 3.
Este contador de modulo  cuenta de 0 a 2 y se reinicia, pues se ha conectado los pines  9 y 12  a los pines 2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 3 este se resetee inmediatamente, reiniciando el conteo.



Contador modulo 3


CONTADOR DIGITAL MODULO 4.


Este contador de modulo  cuenta de 0 a 3 y se reinicia, pues se ha conectado  el pin 8  a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 4 este se resetee inmediatamente, reiniciando el conteo.
Contador modulo 4

CONTADOR DIGITAL MODULO 5.
Este contador de modulo  cuenta de 0 a 4 y se reinicia, pues se ha conectado los pines 8 y 12 a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 5 este se resetee, reiniciando el conteo.
Contador modulo 5

CONTADOR DIGITAL MODULO 6.
Este contador de modulo  cuenta de 0 a 5 y se reinicia, pues se ha conectado los pines 8 y 9 a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 6 este se resetee  inmediatamente, reiniciando el conteo.
Contador modulo 6

CONTADOR DIGITAL MODULO 7.
Este contador de modulo  cuenta de 0 a 6 y se reinicia, para este circuito se hace uso de una compuerta nand 7408 para resetear el contado, se ha conectado los pines 8 y 9 a los pines  2 y 1 de la compuerta nand y el pin 3 de la compuerta nad va conectado al pin 2 de contador 7490 como también se conectaron los pines 12 y 3 del contador 7490,  haciendo que al momento de  cambiar al numero 7 este se resetee inmediatamente, reiniciando el conteo.

CONTADOR DIGITAL MODULO 8.
Este contador de modulo  cuenta de 0 a 7 y se reinicia, pues se ha conectado el pin 11 a los pines  2 y 3 del contador 7490,  haciendo que al momento de  cambiar al numero 7 este se resetee inmediatamente, reiniciando el conteo.

CONTADOR DIGITAL MODULO 9
Este contador de modulo  cuenta de 0 a 8 y se reinicia, pues se ha conectado los pines 11 y 12 a los pines  2 y 3 de contador 7490 respectivamente,  haciendo que al momento de  cambiar al numero 9 este se resetee inmediatamente, reiniciando el conteo.

CONTADOR DIGITAL MODULO 10.
Este contador de modulo 10 que ya es conocido  cuenta de 0 a 9 y se resetea de manera automática reiniciando el conteo. Los pines 2 y 3 se conectan a tierra.


Materiales para el contador digital
  • contador 7490
  • decodificador 7447
  • un led
  • 2 resistencias de 510
  • compuerta and 7808
  • generador de pulsos
  • fuente de alimentacion de 5 voltios
  • display catodo comun

RELOJ DIGITAL CON CONTADOR 7490 Y DECODIFICADOR 7447

El reloj digital esta realizado 

Materiales para el reloj digital

  • U1, U2, U3, U4, U5 y U6         contador 7490.
  • U7, U8, U9, U10, U11 y U12. decodificador 7447.
  • 2 compuertas lógicas 7408.
  • 6 resistencias de 510 Ω.
  • 6 display ánodo común.
  • generador de pulsos
  • fuente de 5 voltios


jueves, 12 de setiembre de 2013

CONTADOR BINARIO 7493 DE 8 BITS


Descripción del contador.
El contador binario, en si es un contador que muestra el resultado en numeración binaria o de base dos, donde a cada salida del contador se le denomina bit, este bit pude tomar solo dos valores “1 lógico” (valor de voltaje alto) o “0 lógico” (valor de voltaje aproximadamente cero),.

Además estos bits de salida del contador binario tienen un orden establecido donde tomando de derecha a izquierda el primero es el bit menos significativo y el ultimo es el bit más significativo. Además este contador ha sido implementado para poder poner sus salidas a cero cuando sea requerido como también la función de poder desconectar las salidas del, circuito integrado encargado de realizar el conteo, de los leds que nos muestran el valor de las salidas.



Funcionamiento: 
En este diseño se le ha encargado la función de conteo binario al circuito integrado, contador binario asíncrono 7493, el cual es de tecnología TTL por lo cual su voltaje de alimentación debe ser de 5 voltios, el contador 7493 cuenta con dos pines Master Reset (Clear) los cuales emplearemos para resetear nuestro contador 7493, estos dos pines serán conectados y de uno de estos puntos se pondrá un swicht para poder conectar los pines Master Reset (Clear) a tierra para poder realizar el conteo y si queremos resetear a cero el contador 7493 pondremos los pines a un voltaje alto.


Una observación que debe hacerse es que el contador 7493 está constituido internamente por cuatro  flip flops  de los cuales solo están conectados tres, por eso debemos realizar una conexión externa entre los pines 12 y 1 como se muestra en el diagrama. 


El contador contara los flancos de bajada de la señal de pulsos que pondremos a su entrada (pin 14). El circuito triestado 74244, incluido en el diagrama es un circuito que funciona como un swith que permite dejar pasar la señal de entrada ya sea valores “1 lógico” (valor de voltaje alto) o “0 lógico” (valor de voltaje aproximadamente cero), como también puede bloquear la señal de entrada y poner a las salida un estado de alta impedancia, no mostrando nada en los leds. Los leds incorporados en el circuito tienen la tarea de hacer visible el conteo realizado de forma binaria por nuestro contador, para el correcto funcionamiento de los leds se debe poner resistencias en serie a estos para poder limitar la cantidad de corriente que para evitar que se fundan los leds, se recomienda que el valor de las resistencias estén en un rango de 200Ω a 1000Ω y de ¼ de wat. 
A continuación mostraremos un contador sencillo que es un circuito clásico.



Ahora se muestra el circuito contador con el integrado triestado 74244 el cual, de ser requerido, nos ayudara a bloquear la salida del contador.



Materiales para el contador binario.




Nota:
Nótese que en el diagrama tanto el contador 7493 como el triestado 74244 no tienen las conexiones a tierra y a los 5 voltios para su funcionamiento. En el contador 7493 el pin 10 va a tierra y el pin 5 va a los 5 voltios. Para el triestado 74244 el pin 10 va a tierra y el pin 20 va a los 5 voltios.

miércoles, 4 de setiembre de 2013

CONTADOR 7490 DE 00 A 99


Este contador de 00 a 99 es de fácil diseño, cuenta con dos circuitos contadores integrados 7490. El contador  7490  es un contador BCD de flanco negativo, muestra en sus cuatro salidas los números en forma binaria, para lograr el conteo es necesario hacer la conexión entre la salida Q0 con la entrada CLK B, además de tener un pin de  reset que pone el contador a 00 cuando dicho pin es puesto a un nivel alto o “1 lógico” reiniciando la labor del contador, para poder observar los valores en el contador en numeración decimal, conectamos la salida del contador al decodificador 7447 el cual hace que podamos ver los valores del contador en los diplays, en el grafico se podrá notar que en las conexiones de salida del decodificador 7447  con el display no tenemos resistencias, como generalmente se hace, pero se ha colocado una resistencia de 500Ω (este valor puede variar entre 200 Ω  a 1000 Ω ) entre el display y el punto de 5 voltios, el cual limitara la corriente que pase por los leds internos.
Diagrama contador de 00 a 99
Contador con triestado


Aquí tenemos un circuito de un contador  alterno, el cual tiene un circuito triestado entre las salidas del contador BCD y el decodificador 7447. Los triestados pueden tener en sus salida un “0 lógico”, “1 lógico” y un estado de alta impedancia, funciona como un interruptor, para nuestro caso este interruptor se conectara cuando le pongamos un “0 lógico” y mostrara el valor de su entrada que puede ser “0 lógico” ó “1 lógico”, pero al ponerlo en “1 lógico ” el interruptor se abrirá y en su salida habrá una alta impedancia, por lo cual no se verá nada en los displays del contador.
Diagrama del contador 00 a 99 con triestado


Lista de componentes
  • 2 contador 7490
  • 2 decodificador 7447
  • 2 Triestado 74ls244
  • 2 diplay ánodo común
  • R1, R2 500Ω
  • Un interruptor doble
  • Un generador de ondas

NOTA
Debe tener en cuenta que las conexiones de alimentación y tierra no están en el grafico del contador, no olvide realizarlos.
Para ver como construir un generador de pulso click 



jueves, 30 de mayo de 2013

SENSOR DE TEMPERATURA DIGITAL BINARIO CON LM35 Y ADC 0804

Comenzaremos con el diseño de un termómetro que muestra el valor de la temperatura en valores binarios basado en un sensor de temperatura, el LM35 que muestra el valor de la temperatura en proporción de un grado centígrado por 10mv a su salida y  el convertidor analógico a digital ADC0804 que será configurado para que nos muestre una variación de temperatura de 0 ºC hasta 127ºC.
Circuito del termómetro


LM35
Sensor de temperatura de precisión  en grados centígrados
El circuito  integrado LM35 es un sensor de temperatura de precisión, cuya tensión de salida es linealmente proporcional a la temperatura en grados Celsius (centígrados). El LM35 tiene por lo tanto una ventaja sobre los sensores de temperatura lineales calibrados  en grados  Kelvin, ya que el usuario no está obligado a restar un voltaje constante a su salida a obtener el resultado en centígrados. El LM35 no requiere ninguna calibración o recorte para proporcionar precisiones típicas de ± 1/4 ° C a temperatura ambiente y ± 3/4 ° C durante un total -55 a 150 ° C rango de temperatura.  El LM35 tiene una baja impedancia en la salida, salida lineal y calibración inherente preciso para realizar una  interfaz de lectura o de circuitos de control de manera fácil.  Puede ser utilizado con fuentes de alimentación individuales, o con más y suministros de menos. Como sólo hace uso de  60 μA, tiene muy bajo calentamiento espontáneo, menos de 0,1 ° C en el aire inmóvil. El LM35 es esta diseñado ​​para  medir un  rango de temperatura de -55 ° a +150 ° C.
 Usted podrá encontrar diferentes tipos de empaquetado disponibles  de LM35, para este circuitharé uso del LM35D que está disponible en un paquete de transistor TO-92 de plástico.


Vista desde bajo

Características principales
  • Esta calibrado en grados  Celsius (centígrados)
  • Escala lineal  de + 10,0 mV / ° C
  • Posee una exactitud de 0,5 ° C (a 25 ° C)
  • Muestra temperaturas de un rango de -55 ° a +150 ° C
  • Opera de 4 a 30 voltios
  • Consumo de corriente menor a 60 μA
  • Bajo calentamiento espontáneo, 0.08 ° C en aire
  • Salida de baja impedancia, 0.1 W para la carga 1 mA


ADC0804
Con este convertidor analógico a digital podremos cuantificar el valor de la temperatura con una salida de 8 bits, que nos da un rango de variación de 0 a 127 grados centígrados. Conectamos el pin 2 del LM35 Al pin 6 del ADC0804 (Entrada no inversora analógica Vin (+)). 

Para que nuestro termómetro mida de 0 a 1207 grados centígrados tenemos que poner en el pin 9 (Pin de entrada, define la tensión de referencia para la entrada analógica Vref / 2) a un voltaje de 0.64 voltios, lo cual lograremos variando el potenciómetro de manera que por cada incremento de un grado centígrado se incrementara en 10mv la salida del LM35 lo cual hará que la salida del ADC0804 se incremente en un bit valido en nuestro circuito (nótese que para este caso el pin 18 que es el menos significativo no se toma en cuenta). Para este circuito haremos uso del reloj interno del ADC0805 haciendo una configuración como se muestra en la figura siguiente.
Diagrama del sensor de temperatura binario

Lista de componentes
  • R1   10KΩ
  • R2   330Ω
  • R3   330Ω
  • R4   330Ω
  • R5   330Ω
  • R6   330Ω
  • R7   330Ω
  • R8   330Ω
  • R9   10KΩ
  • R10  100Ω
  • RV1   10KΩ (Potenciometro, de 10k para que puedan variar en el pin de referencia de 0 v a 2.5v)
  • C1     100nf  cerámico
  • C2     150nf cerámico
  • C3     1uf   electrolítico
  • LM35 sensor de temperatura
  • ADC0804 convertidor analógico a digital
  • 7 diodos led
  • Fuente de alimentación de 5 voltios
NOTA IMPORTANTE:
Recuerden no ponerle voltajes negativos al adc pues lo dañaran. el valor máximo de la señal a maestrear es de 5Vpp (voltaje pico-pico)



viernes, 24 de mayo de 2013

ADC0804 CONVERSOR ANALOGO DIGITAL

Descripción de los ADC
Los ADC son convertidores analógicos a digitales tienen una gran variedad de aplicaciones, como un dispositivo intermedio que convierte  las señales de forma analógica a digital. Estas señales al ser digitalizadas  se utilizan para el procesamiento de los procesadores digitales. Por ejemplo nosotros encontramos una gran diversidad de sensores que convierten las características físicas del medio en señales analógicas sensores tales como latidos del corazón, la temperatura, presión, fuerza, distancia, etc.

El ADC0804
El ADC0804 es un convertidor  de señal analógica a digital de 8 bits. Este ADC0804 cuenta con un solo canal de entrada analógica  con una salida digital de ocho bits que puede mostra  256 valores de medidas diferentes. El tamaño de paso se ajusta mediante el establecimiento de la tensión de referencia en pin9 la entrada de referencia de voltaje puede ser ajustado para permitir que codificar cualquiera rango de tensión analógica más pequeña para la totalidad de 8 bits de resolución. Cuando en el adc0804 no se conecta el pin tensión de referencia, la tensión de referencia por defecto es la tensión de funcionamiento, es decir, Vcc. El tamaño del paso a 5V es 19.53mV (5V/255), es decir, por cada aumento de 19.53mV en la entrada analógica, la salida varía por 1 unidad. Para establecer un nivel de tensión determinado como valor de referencia, esta clavija está conectada a la mitad de la tensión. Por ejemplo, para establecer una referencia de 2V (Vref), pin9 está conectado a 1V (Vref / 2), reduciendo de este modo el tamaño del paso a 7.84mV (2V/255).


ADC0804 también necesita un reloj para operar. El tiempo de conversión del valor analógico a un  valor digital depende de la fuente de reloj. Podemos conectar un reloj externo en el pin 4 o podemos hacer uso de su reloj incorporado, colocando  de un circuito RC.



  • Pin1 Activa ADC; activo bajo
  • Pin2 Pin de entrada; De mayor a menor pulso trae los datos de los registros internos de los pines de salida después de la conversión
  • Pin3 Pin de entrada; menor a mayor impulso se dio para iniciar la conversión
  • Pin4 Pin de entrada del reloj, para darle reloj externo
  • Pin5 Pin de salida, pasa a nivel bajo cuando la conversión se ha completado
  • Pin6 Entrada no inversora analógica Vin (+)
  • Pin7 Entrada de inversión analógica, normalmente tierra Vin (-)
  • Pin8 Tierra (0 V)
  • Pin9 Pin de entrada, define la tensión de referencia para la entrada analógica Vref / 2
  • Pin10 Tierra (0 V)
  • Pin11 bit salida digital D7
  • Pin12 bit salida digital D6
  • Pin13 bit salida digital D5
  • Pin14 bit salida digital D4
  • Pin15 bit salida digital D3
  • Pin16  bit salida digital D2
  • Pin17 bit salida digital D1
  • Pin18 bit salida digital D0
  • Pin19 Utilizado con el reloj en pin cuando se utiliza fuente de reloj interno
  • Pin20 Tensión de alimentación (5V)

RELOJ
El reloj para el A/D se puede derivar de una fuente externa como el reloj de la CPU o una red RC externa pueden ser añadirse para proporcionar el reloj interno. El CLK IN (pin 4) hace el uso de un disparador de Schmitt, como se muestra en la Figura . Debe evitarse una alta carga capacitiva  o alta carga  DC del R pin CLK ya que esto perturba el funcionamiento normal del convertidor.
Uso del reloj interno

 Reiniciar Durante una conversión
Si se reinicia el convertidor A/D (CS y WR ir bajo y vuelven alto) durante una conversión, el convertidor se pone a cero y un nuevo se inicia la conversión. El pestillo de datos de salida no se actualiza si la conversión en curso no se completa. Los datos de los la conversión anterior permanezca en este pestillo.
Carrera libre
En esta aplicación, la entrada CS está conectada a tierra y el WR de entrada está ligado a la salida INTR. Este WR y el nodo INTR deben ser momentáneamente obligados a la lógica de baja tras un arranque ciclo para asegurar el funcionamiento del circuito.
Carrera libre

  

domingo, 17 de marzo de 2013

SENSOR DE TEMPERATURA DIGITAL CON ADC 0804 Y SRAM 6116


I. PROYECTO TERMÓMETRO DIGITAL
El termómetro digital es instrumentos de medición que miden la  temperatura por medio de un sensor y luego de sensar la temperatura la muestra en una pantalla en números decimales, comúnmente en grados Fahrenheit o Celsius. .
Existen diversos tipos de termómetros digitales cada uno de ellos para una aplicación diferente por lo cual tienen diferentes formas de construcción. Para esta ocación se mostrará la construcción de  de un termómetro digital que mide en un rango de 00 a 99 grados celsius, ya que para su implementación se ha usado circuitos digitales básicos esto nos ayudara a poner en práctica nuestros conocimientos de electrónica digital básica, la presición de medición de nuestro termómetro digital   dependerá de su sensor  lm35, un adc0804 y memoria sram 6116 que funciona como un conversor de binario a BCD de 7 bits.

II. MATERIALES PARA EL TERMÓMETRO DIGITAL

Generador
  • C1 10uf
  • C2 10nf
  • R1 potenciómetro de 200KΩ
  • R2 potenciómetro de 50kΩ
  • R3 1KΩ
  • 1 LED
Contador binario
  • 2 contador 7493
  • 2 triestado  74244
  • 8 resistencias de 500Ω o cercanos
  • 8 leds
Contador decimal
  • 2 contador 7490
  • 2 triestado 74244
  • 2 decodificador 
  • 2 display ánodo común
  • 2 resistencias 500Ω
Sensor binario
  • sensor de temperatura LM35
  • ADC0804
  • 2 triestado 74244
  • C1 100nf
  • C2 150nf
  • C3 1uf
  • R1 10KΩ
  • R2-R8 500Ω
  • R9 10KΩ
  • R10 100Ω
  • Potenciometro 5kΩ
  • 7 leds
Convertidor binario a decimal
  • Sram 6116
  • Compuerta not 7404
  • R 1kΩ
  • 1 switch

III. DESCRIPCIÓN GENERAL DEL TERMÓMETRO DIGITAL
Este diseño del  del termómetro digital tiene varias etapas  o integracion de otros circuitos sencillos como un contador binario, un contador decimal, un clock o generador pulso de reloj el cual servirá para el funcionamiento de los contadores, un sensor de temperatura binario  que mide la temperatura mediante un sensor lm35 que tiene a su salida 10mv por grado centígrado, el cual será llevado a un convertidor analógico/digital que resulta de la integración de los contadores binario y decimal, con una memoria sram 6116, para su respectiva conversión de números binarios a valores  en decimales. El proceso de conversión de binario a decimal se llevara a cabo de una memoria sram en la cual se grabara previamente mediante un circuito, el equivalente decimal en BCD de la dirección en dicha dirección, por ejemplo en la dirección 000 1110 que en decimal es 14 se grabara 0001 0100 los cuales luego se convertirán a decimal a través de decodificador 7447 y se mostrara en los display de cuatro segmentos. Una vez grabado los datos en la memoria sram pasmos a desactivar los contadores para conectar  la salida del ADC cuya salida binaria va conectada al bus de direcciones de la sram la cual muestra a su salida los valores en decimal en los display.


Los switch mostrados en el diagrama son para la grabación de la memoria y luego cambiarlo se pone en modo de lectura.

IV. PROCEDIMIENTO DE IMPLEMENTACIÓN DE UN TERMÓMETRO DIGITAL
En este caso el mostrar todo el diagrama del circuito del termómetro digital podría hacer engorrosa su implementación llevándonos a cometer errores de conexiones, se ha decidido separarlos en partes o circuitos mas simples probando el correcto funcionamiento de cada uno de ellos, una vez probado cada etapa se realizara la integración del circuito.

1. Generador de pulsos
El generador de pulsos es un circuito sencillo de implementar, este circuito depende fundamentalmente de un circuito integrado NE 555 en configuración astable. el diagrama del generador se muestra a continuación.

Donde la frecuencia del generador esta dado por:
Se recomienda usar los siguientes componentes:
C1 10uf
C2 10nf
R1 potenciómetro de 200KΩ
R2 potenciómetro de 50kΩ
R3 1KΩ
1 LED
Por fines prácticos trataremos al circuito como un integrado de la siguiente forma.
Donde la salida sera el pin "3" del NE 555. este generador nos servirá para el proceso de grabación de la memoria sram
2. Contador binario
Implementaremos un contador binario, basado en el integrado 7493 el cual podrá contar de 00000000 a 11111111, ademas cuenta con el triestado 74244 que nos ayudara a poder conectar o desconectar las salidas de nuestro contador al bus de direcciones de  la memoria sram 6116 dependiendo de si queremos grabar la memoria o leer su contenido, lo cual es clave para el correcto funcionamiento de nuestro termómetro digital.
Componentes para el contador binario.

  • 2 contador 7493
  • 2 triestado  74244
  • 8 resistencias de 500Ω o cercanos
  • 8 leds
NOTA: El circuito debe ser implementado como estas en el diagrama para probar el correcto funcionamiento del circuito luego para el ensanblaje final debe de retirar el switch y considetrar el circuito como si fuese un integrado.

Donde clr es el punto de conexión de los pines 2 y 3 del 7493 que servirá para resetear el contador.


3. Contador BDC
El contador decimal esta diseñado con el contador BCD 7490 asíncrono  este circuito cuenta de 00 a 99  y es de fácil construcción. Este circuito no servirá para grabar la memoria sram  6116 pues ira conectado al bus de datos y este ingresara los datos a grabar mientras el contador binario ubica la dirección, cuenta con la opción de resetear y un triestado para activar la salida del contador BCD al momento de grabar la memoria  y desactivar cuando se ponga la memoria en modo lectura.
Lista de componentes
  • 2 contador 7490
  • 2 triestado 74244
  • 2 decodificador 
  • 2 display ánodo común
  • 2 resistencias 500Ω 
NOTA:El circuito sera implementado como estas en el diagrama para probar el correcto funcionamiento del contador BCD pero al momento de integrar el circuito  final debe de retirar el switch y considerar el circuito como si fuese un integrado.

El clr es el punto de conexión de los pines 2 y 3 del 7490 que servirá para resetear el contador.


4. Sensor binario
Es un  termómetro digital binario que tiene un sensor de temperatura (lm35) que muestra a su salida 10mv por cada grado centígrado, cuyo voltaje será convertido a digital por el ADC0804. Para dicha conversión pondremos como temperatura de medida máxima  de 127 grados, lo cual nos da una señal máxima a convertir de 1.27v, entonces pondremos a la entrada de referencia una tensión de 0.640v para hacer que la salida del ADC nos cuente de 0 a 127 omitiendo el bit menos significativo los cuales podremos observar el los leds ente la salida del ADC y los leds pondremos el 74244 para activar y desactiva la salida para primero hacer el grabado en la sram y luego hacer la conexión de la salida del ADC.




Lista de componentes

  • sensor de temperatura LM35
  • ADC0804
  • 2 triestado 74244
  • C1 100nf
  • C2 150nf
  • C3 1uf
  • R1 10KΩ
  • R2-R8 500Ω
  • R9 10KΩ
  • R10 100Ω
  • Potenciometro 5kΩ
  • 7 leds
NOTA: Implementaremos el circuito como esta en el diagrama para probar el correcto funcionamiento del termómetro digital binario, pero al momento de integrar el circuito  final debe de retirar las resistencias de R2 a R8 y todos los leds, y considerar el circuito como si fuese un integrado. No es necesario el clock que se muestra en el diagrama.



5. Convertidor binario a decimal

Para la lectura o escritura del a memoria la podremos elegir a través de swith, los bits de direcciones de A7 a A10 serán conectados a tierra pues solo usaremos 7 bits, y los demás no los podemos dejar al aire pues producirían errores.
Cabe resaltar que para la grabación de la memoria hemos tenido que colocar en pin de activación y de desactivación de la memoria a la salida de la conexión de cuatro compuertas negadas. Estas cuatro compuertas negadas tienen como entrada el clock, la función de esto inversores es de provocar un retraso de la señal en el controlador de memoria para poder realizar la grabación de esta




Componentes
  • Sram 6116
  • Compuerta not 7404
  • R 1kΩ
  • 1 switch




6. CIRCUITO FINAL
El siguiente gráfico se muestra el circuito general del termómetro, una ves integrada todas las partes de nuestro termómetro digital procederemos a ponerlo en funcionamiento



Pasos para el funcionamiento del termómetro digital

V. OBSERVACIONES
El diseño del circuito presento problemas a unir las etapas, estas fueron los errores de conteo de los integrados pues estos en algunos momentos contaban tanto los flancos de subida como los de bajada, en otras ocasiones uno contaba los flancos de bajada y el otro los dos tipos de flanco o simplemente no contaban. Para dar solución a esto problemas, se puso los pines de los decodificadores a un nivel alto como también se colocaron condensadores cerámico de 10nf en la entrada de pulso de los contadores para así evitar el ruido, de esta manera se llego a solucionar este problema.
También mediante el circuito de grabado convertimos a nuestra memoria en un convertidor de 8bits a bcd para poder expresarlo en decimal a través de unos decodificadores, pues un dispositivo que cumpla con esta función esta ausente en el mercado.

Nota importante:
debe tener presente lo dicho en cada nota de las etapas del proyecto, para su correcto funcionamiento.

Para mas detalles ver los siguientes enlaces