lunes, 28 de mayo de 2012

Trabajo Práctico N°4

Amplificadores Operacionales

Historia

En 1965, la compañía Fairchild Semiconductor introdujo en el mercado el uA709, el primer amplificador operacional monolítico ampliamente usado. Aunque disfrutó de un gran éxito, esta primero generación de amplificadores operacionales tenía muchas desventajas. Este hecho condujo a fabricar un amplificador operacional mejorado, el uA741. Debido a que es muy barato y sencillo de usar, el uA741 ha tenido un enorme éxito. Otros diseños del 741 han aparecido a partir de entonces en el mercado. Por ejemplo, Motorola produce el MC1741, National Semiconductor el LM741 y Texas Instruments el SN72741. Todos estos amplificadores operacionales son equivalentes al uA741, ya que tienen las mismas especificaciones en sus hojas de características. Para simplificar el nombre, la mayoría de la gente ha evitado los prefijos y a este amplificador operacional de gran uso se le llama simplemente 741





 las características más importantes que posee este circuito integrado son las siguientes
  •  Alta impedancia (resistencia) de entrada: del orden de 1 MW , lo cual implica que la intensidad de corriente por los terminales de entrada será despreciable.
  •  Baja impedancia de salida: del orden de 150 W, pudiendo atacar cualquier carga (circuito) sin que su funcionamiento se modifique dependiendo del valor de ésta.
  •  Tensión máxima de alimentación: ±Vcc = ± 18 V. Implica que la tensión de salida nunca podrá superar a la de alimentación.
  •  Alta ganancia de tensión en lazo abierto (sin conectar ningún componente entre la salida y cualquiera de las entradas) con pequeños valores de tensión en los terminales de entrada se consiguen grandes tensiones de salida. 

Tipos de amplificadores utilizados en la práctica.
Amplificador inversor.
Se llama amplificador inversor a este montaje porque la señal de salida es inversa de la de entrada, en polaridad, aunque puede ser mayor, igual o menor, dependiendo esto de la ganancia que le demos al amplificador en lazo cerrado. La señal se aplica al terminal inversor o negativo del amplificador y el positivo o no inversor se lleva a masa. La resistencia R2, que va desde la salida al terminal de entrada negativo, se llama de realimentación.


Amplificador no inversor.
El circuito del amplificador no inversor es muy parecido al inversor, la diferencia es que la señal se introduce por el terminal positivo o no inversor, lo cual va a significar que la señal de salida estará en fase con la señal de entrada y amplificada.


Amplificador buffer.
En el amplificador buffer, la tensión de la señal de entrada Vi es igual a la tensión de salida Vo, es decir, la señal de salida sigue a la de entrada, de ahí su nombre: Vo = Vi.
Hoja de datos LM741
Link:



Objetivo de la practica:

  • Usar un amplificador operacional realimentado negativamente, en configuración inversor.
  • Medir tensiones de entrada y salida con multímetro y osciloscopio. Con este último tomar muestras de las señales medidas.
  • Medir el comportamiento del amplificador inversor con tensiones continuas y alternas en su entrada.
  • Calcular la ganancia del amplificador dentro de la zona lineal. Expresar su valor en veces y en dB.Graficar la función transferencia (Vo en función de Vs).
  • Reconocer las zonas de saturación y de amplificación lineal.
  • Medir la tensión residual de salida (offset).Apreciar las limitaciones de la ganancia en función de la frecuencia para dos tipos distintos de amplificadores operacionales.


Amplificador inversor(Primera parte)
Armado del circuito
Circuito montado en protoboard

Circuito esquemático en Proteus


Circuito en proteus




"Comportamiento en continua" 


Medición del puente resistivo:

Valor mínimo entregado por el puente resistivo
 (en 0% el preset de 1 k)
-1,74V

Valor maximo entregado por el puente resistivo
(en 100% el preset)
1,81V

Tabla de valores máximos y mínimos de Vs y Vo
 variando el preset.


Gráfico obtenido con los valores de la tabla



"Comportamiento en alterna"

Vo

Visualización de las tensiones pico a pico


Aumentando la tensión

Vo: Azul
Vi:Amarillo
Recorte de la señal de salida aumentando la tensión de entrada

Tensión minima




AO como comparador dentro de un uC(opcional)

Componentes utilizados:
PIC16F683.
R1: 330 Ω
R2: 10 KΩPotenciometro 10 KΩC1: 100 nF
1 Led rojo.

Características del PIC12F683.

Las características básicas de este microcontrolador son las siguiente:
- Dispone de varios tipos de memoria según su utilización:
  * 2048 x 14 palabras de memoria FLASH como memoria de progama.
  * 256 x 8 bytes de memoria EEPROM para guardar datos.
  * 128 x 8 bytes de memoria SRAM para lso registros de propósito general.
- Oscilador interno de 8 MHz. Cada instrucción dura 4 periodos de oscilación, con lo cual una instrucción (1 ciclo) dura 0,25us.
- Dispone de 6 entradas/digital internos de 10 bits de resolución.
- 1 comparador analógico interno.
- 4 conversor analógico/digital internos de 10 bits respectivamente.
- 1 timer de 8 bits y otro de 16 con preescaler de 8 bits respectivamente (el preescaler permite que el timer no se incremente a cada ciclo de procesador sino cada n ciclos, siendo n el valor de preescaler).
- Función SLEEP para un mayor ahorro de energía.
- Watchdog (perro guardián) para evitar bucles infinitos.

Los consumos de este chip son los siguientes:
- Standby Current: 1nA a 2V, typical.
- Operating Current: 8,5 uA a 32 KHz, 2V, typical.
                             100 uA a 1 MHz, 2V, typical.
- Watchdog Timer Current: 1 uA a 2V, typical.







lunes, 7 de mayo de 2012

Trabajo Practico N°3

"Programación de un microcontrolador de 8 bits"

En este trabajo, el objetivo es iniciarse en la programación de microcontroladores (en este caso, específicamente, el PIC16F84A), utilizando los lenguajes de programación Assembler y C. Además, se aprende sobre compiladores (MPASM para la programación en Assembler y PIC-C Compiler para la programación en C) y sobre simuladores (MPLAB SIM para la programación en Assembler y el Isis de Proteus para ambas programaciones). Para ello, se hizo que un LED parpareara cada aproximadamente 200ms.
Circuito esquemático en Kicad. Incluye el PIC16F84A a programar, el circuito oscilador (cristal y capacitores), el pulsador de Reset con una resistencia de 10K y el LED conectado a RB7 con una resistencia de 330Ω, en modo "sink".
Lo primero que realizamos fue dibujar el circuito esquemático con el software Kicad para saber dónde íbamos a conectar cada componente:
Cuando realizamos el circuito esquemático, se tomó la decisión de conectar el LED en el pin RB7 (pin 13 en el encapsulado del microcontrolador PIC16F84A) en modo "SINK" (debido a que el microcontrolador admite una mayor corriente que en el modo "SOURCE"), por lo que se conectó el led a una resistencia de 330Ω (para limitar la corriente que iba a pasar), y ésta a VCC (+5v).
Por eso, el LED se iba a prender cuando el valor de RB7 fuese un 0 lógico y se iba a apagar cuando fuese un 1 lógico.

Luego, procedimos a escribir la programación para que el programa cumpliese su objetivo en lenguaje Assembler, utilizando el software que provee Microchip llamado MPLAB (contiene un editor de código, un ensamblador y un simulador). El código resultante en Assembler fue:

; -----------------------------------------------------------------
; Descripción:
; Este programa hace parpadear a un LED conectado a RB7
; -----------------------------------------------------------------
 LIST  p=PIC16F84A
 INCLUDE  <p16f84a.inc>
 __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
 ERRORLEVEL -302
; -----------------------------------------------------------------
 RP0 EQU 5
 LED EQU 7
; -----------------------------------------------------------------
; Variables
 CBLOCK 0x0c
 d1
 d2
 ENDC
; -----------------------------------------------------------------
; -----------------------------------------------------------------
 #DEFINE BANK1 bsf STATUS,RP0
 #DEFINE BANK0 bcf STATUS,RP0
; -----------------------------------------------------------------
; -----------------------------------------------------------------
; Vectores
 ORG 0x000
 goto Inicio ; Vector de Reset
 
 ORG 0x004
 goto Isr ; Vector de Interrupción
; -----------------------------------------------------------------
; -----------------------------------------------------------------
; Rutina de servicio de interrupción
Isr
 retfie
; -----------------------------------------------------------------
; Programa Principal
; -----------------------------------------------------------------
Inicio
 ; Configuramos el bit 7 de Port B como salida (RB7)
 BANK1
 bcf TRISB,LED
 BANK0


Loop
 bcf PORTB, LED
 call Delay_200ms
 bsf PORTB, LED
 call Delay_200ms
 goto Loop
; -----------------------------------------------------------------
; Sub-Rutinas
; -----------------------------------------------------------------
; Delay = 0.2 seconds
; Clock frequency = 4 MHz


; Actual delay = 0.2 seconds = 200000 cycles
; Error = 0 %
Delay_200ms
    ;199993 cycles
 movlw 0x3E
 movwf d1
 movlw 0x9D
 movwf d2
Delay_200ms_0
 decfsz d1, f
 goto $+2
 decfsz d2, f
 goto Delay_200ms_0


 ;3 cycles
 goto $+1
 nop


 ;4 cycles (including call)
 return
; -----------------------------------------------------------------
END
; -----------------------------------------------------------------

Nota: El código de la rutina del Delay de 200ms fue realizado mediante la página http://www.piclist.com/techref/piclist/codegen/delay.htm 
Una vez realizado esto, se realizó la programación en lenguaje C, con el software CCS. El código resultante en C fue:

#include "D:\Led_84_C\Led_84_C.h" 

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 

   while(TRUE)
   {
      output_high (PIN_B7);
      delay_ms (200);
      output_low (PIN_B7);
      delay_ms (200);
   }

}

Código del Header (Led_84_C.h):

#include <16F84A.h>
#FUSES NOWDT, XT, PUT, NOPROTECT
#use delay(clock=4000000)


Con las dos programaciones realizadas decidimos simular las dos, para asegurarnos de que el software se comportase respetando la programación, verificando de ésta manera el funcionamiento de nuestro código.
Primero, utilizamos el simulador que incluye el MPLAB, el MPSIM. Con éste programa, verificamos el cambio de valor del pin RB7 y que éste se realizase según el tiempo establecido (200ms aproximadamente).
Luego, procedimos a realizar la simulación utilizando el software Isis de Proteus. Para ello, realizamos el circuito esquemático en este software, similar al realizado con el Kicad (con la diferencia de que el clock se configuró mediante herramientas de configuración del Isis, por lo que no se incluyó el oscilador de 4MHz, ni los dos capacitores que se utilizan para manejar el clock).
Después se cargó el archivo ".hex" generado por el compilador del CCS (el PIC-C Compiler) y se verificó el funcionamiento de encendido y apagado del LED y su velocidad mediante un osciloscopio del Isis, para asegurarnos de que funcionase correctamente a 200ms (aproximadamente). Luego se realizó lo mismo, pero con el ".hex" generado por el MPASM (ensamblador del MPLAB).
Se pueden ver las pruebas en el siguiente video:
Habiendo comprobado que todo funcionase según nuestros requerimientos, procedimos a armar el circuito esquemático realizado en el Kicad en una protoboard, incluyendo (en otro sector de la misma) todo el conexionado necesario para la programación del microcontrolador y para la alimentación de la placa con VCC de 5v obtenidos por el puerto usb de la computadora y GND o VSS, obtenida también por el puerto usb.

Circuito armado en el protoboard. En el centro de la protoboard se puede observar el circuito con el PIC16F84A,  cristal, capacitores, resistores, LED, y pulsador (con unos puentes de conexión). En el sector de la derecha de la imagen se puede observar los conectores de programación del PICKIT 2 Clone, donde se colocó el microcontrolador para programarlo y de donde se obtiene la tensión con la que trabaja el circuito (+5V obtenidos por el puerto USB de la computadora).
En la imagen anterior, se puede observar en el sector izquierdo de la protoboard  el sector en que colocamos al microcontrolador cuando debía estar en funcionamiento, y en el derecho el conexionado para colocar al microcontrolador para pasarle la programación, mediante el programador PICKIT 2 Clone, realizado en la práctica 1, con el software "PICkit 2 Programmer", que se obtiene gratuitamente de la página oficial de Microchip (al igual que el MPLAB con todos sus componentes).
Luego, programamos al PIC16F84A con uno de los ".hex" generado anteriormente, comprobamos el tiempo de encendido y apagado del LED mediante un osciloscopio digital. Luego, hicimos lo mismo, pero con el otro ".hex". Los resultados se pueden apreciar en las siguiente imágenes:
Medición del tiempo, para comprobar que tardase los 200ms que corresponden, según las instrucciones de la actividad, con la programación hecha en Assembler.

Medición del tiempo, para comprobar que tardase los 200ms que corresponden, según las instrucciones de la actividad, con la programación hecha en C.
También, decidimos grabar un video del funcionamiento con el microcontrolador programado con uno de los archivos ".hex", utilizados también en el paso anterior:
 

Descarga de los archivos utilizados en éste proyecto (proyecto Kicad con el esquemático, diseño en Isis para simulación, proyecto de MPLAB y proyecto de CCS): http://www.mediafire.com/?v9htc2700g5lsd5

Trabajo Practico N°2

Mediciones con captura de datos usando el osciloscopio


Materiales necesarios

pc-sistema operativo Windows con conectividad a Internet
programa Hyperterminal
Osciloscopio RIGOL DS1102E
Punta para medicion del Osciloscopio
Pendrive de 2 GB
Cable DB9 con terminales para inserción en protoboard
IRM8602 o similar
Resistores y capacitores
control remoto






Conector DB9

pinout



IRM8602

Características del IRM8602

Inmunidad contra interferencias electromagnéticas
Disponible en capsula metálica
Lente elíptico que mejora la recepción
Bajo voltaje y bajo consumo.
Alta inmunidad a la luz ambiente
Foto-diodo con circuito integrado
Compatible con TTL y CMOS
Recepción a larga distancia
_____________________________________________________________________

Medición de la señal 
CON PUERTO SERIE
1)

2)

Configurar puerto serie en Hyperteminal (9600 bps)


Captura del Byte (Puerto serie) 

9600 bps

                                                          Presionando tecla "A"

5) 
-a) En el estado de reposo la tension marca -200mV
-b) El bit de start en el comienzo de la transmision dura 104 micro-segundos y el valor maximo de tension es de 22,8V.
Bit de START

0 (lógico)= 22,8V
1(lógico)= -200mV
c)

   "Letra A 01000001 (en binario)"
   -Presionando tecla A la lectura del osciloscopio es la siguiente:
o1000001 
Despues del bit start el orden de los bit es el inverso al orden original...(en este caso es el mismo)
d)
El bit de STOP no se ve porque concide con el 1 logico al final de la transferencia...
e)
tiempo total de transmision de un BYTE
transmision= 1,04mili-segundos

6)
4800 bps
                                 
                                                       Preionando tecla "B"

B 01000010 (en binario)
Lectura en el osciloscopio:

bit START + 01000010 + bit STOP (..."Despues del bit start el orden de los bit es el inverso al orden original"...)

Tiempo de transferencia:

2.06 micro-segundos
comparacion con 9600 bps presionando la tecla B



Presionando tecla C

Tecla C
C 01000011
Lectura en el osciloscopio:

 bit START +11000010+ bit STOP (..."Despues del bit start el orden de los bit es el inverso al orden original"...)

Tiempo de transferencia:

2.06 micro-segundos

comparacion con 9600 bps presionando la tecla C




UTILIZANDO EL CONTROL REMOTO

-Control remoto SANYO con protocolo NEC

circuito con que trabajamos:


a) Por la duracion del bit
b) 32bit mas el bit de start
d) cada 209 ms
e) Se modula para evitar interferencias y para asignar un control a un solo dispositivo y que; por lo tanto,
no intervenga en el receptor de otro control












_____________________________________________________________________

Datos adicionales

El código binario es el sistema de representación de textos, o procesadores de instrucciones de computadora utilizando el sistema binario (sistema numérico de dos dígitos, o bit: el "0" (cerrado) y el "1" (abierto)). En informática y telecomunicaciones, el código binario se utiliza con variados métodos de codificación de datos, tales como cadenas de caracteres, o cadenas de bits. Estos métodos pueden ser de ancho fijo o ancho variable. Por ejemplo en el caso de un CD, las señales que reflejarán el "láser" que rebotará en el CD y será recepcionado por un sensor de distinta forma indicando así, si es un cero o un uno.

Representación de letras:
Letra Código Binario
A 01000001
B 01000010
C 01000011
D 01000100
E 01000101
F 01000110
G 01000111
H 01001000
I 01001001
J 01001010
K 01001011
L 01001100
M 01001101
N 01001110
O 01001111
P 01010000
Q 01010001
R 01010010
S 01010011
T 01010100
U 01010101
V 01010110
W 01010111
X 01011000
Y 01011001
Z 01011010


Protocolo NEC
  • 8 bits de la dirección y 8 bits de longitud de comandos
  • Dirección y mando se transmiten dos veces por la fiabilidad
  • Pulso distancia de la modulación
  • Frecuencia de la portadora de 38 kHz
  • Poco tiempo de 1.125ms o 2.25ms
El protocolo de NEC utiliza la codificación de impulsos distancia de los bits. Cada pulso es 560μs ráfaga larga portador de 38kHz (cerca de 21 ciclos). Un "1" lógico lleva a 2.25ms para transmitir, mientras que un valor lógico "0" es sólo la mitad de los que, siendo 1.125ms.La compañía recomienda un ciclo de servicio es 1/4 o 1/3. 
NEC modulación

NEC de tren de pulsos
La imagen de arriba muestra un tren de pulsos típica del protocolo NEC. Con este protocolo el LSB se transmite primero. En este caso, Dirección de $ 59 y $ 16 comandos se transmite. Un mensaje es iniciado por una ráfaga 9ms AGC, que se utiliza para establecer la ganancia de los receptores de IR anteriores. Esta explosión de AGC es seguido por un espacio de 4.5ms, que es seguido por la Dirección y el Comando. Dirección y Mando se transmiten dos veces. La segunda vez todos los bits se invierten y se puede utilizar para la verificación del mensaje recibido. El tiempo de transmisión total es constante debido a que cada bit se repite con su longitud invertida. Si usted no está interesado en esta fiabilidad se puede ignorar los valores invertidos, o se puede expandir la Dirección y el Comando de 16 bits cada uno!
NEC repetición

Un comando se transmite una sola vez, aun cuando la tecla del mando a distancia permanece presionado. Cada 110ms un código de repetición es transmitida por el tiempo que se mantiene la tecla abajo. Este código de repetición es simplemente un pulso 9ms AGC seguido por un espacio 2.25ms y una ráfaga 560μs.
Secuencia de NEC
El protocolo de NEC es tan ampliamente utilizado que pronto todas las direcciones posibles, se agotaron. Al sacrificar la redundancia de direcciones del rango de direcciones se amplió de 256 valores posibles para aproximadamente 65,000 valores diferentes. De esta manera el rango de direcciones se amplió de 8 bits a 16 bits sin necesidad de cambiar cualquier otra propiedad del protocolo. 
La redundancia de comandos aún se conserva. Por lo tanto cada dirección aún puede manejar 256 diferentes comandos.
Extendido protocolo de NEC
Tenga en cuenta que 256 valores de la dirección del Protocolo prorrogado no son válidos porque son normales, de hecho, NEC direcciones del protocolo. Siempre que el byte bajo es el inverso exacto del byte alto no es una dirección extendida válida.




INFORMACIÓN ADICIONAL

OSCILOSCOPIO RIGOL DS1102E

lINK:

hoja de datos del receptor de señal IRM8602
http://www.datasheetcatalog.org/datasheets2/24/246557_1.pdf