jueves, 2 de mayo de 2013

Proyecto de prueba con MPLAB/PIC16F84A

Proyecto con MPLAB y PROTEL ISIS
En este proyecto vamos a realizar un programa sencillo utilizando el MPLAB y vamos a poder visualizarlo con el PROTEUS/ISIS de una mejor forma.

En este proyecto vamos a conectar un led al pin  RB7 del PIC16F84A. El programa deberá encender y apagar un led utilizando un clock de 4MHz.

Lo primero, será realizar el programa en MPLAB para ello vamos a seguir los siguientes pasos.
Opción 1 para crear un proyecto
Posteriormente de abrir el programa ir a la solapa superior Proyect
-> Proyect Wizard 
-> Siguiente 
-> Elegimos el Device, es decir el integrado en cual vamos a realizar el programa 
-> Siguiente
-> Elegimos el MPASM Asembler que es la herramienta con que vamos a trabajar
-> Siguiente 
-> Nombramos el proyecto y elegimos una carpeta donde se guardará nuestro programa 
-> Siguiente 
-> Si tenemos creado un archivo .asm podemos unirlo a nuestro proyecto sino ponemos continuar 
-> Finalizar
Luego de realizar el proyecto si no tenemos ningún archivo nuevo vamos a
-> File 
-> New

Opción 2 para crear un proyecto
-> Configure, select device, y seleccionamos el PIC que utilizaremos.
->Realizamos el programa.
->Una vez finalizado lo guardamos como archivo .asm
->Creamos un nuevo proyecto con el mismo nombre, Proyect, New.
->Y lo guardamos en la misma carpeta que está el .asm

COMÚN PARA SENDAS OPCIONES
Después de crear el archivo guardarlo en la misma carpeta que guardamos el proyecto con el mismo nombre. Poner View Projetc y luego ir a Sources Files y una vez seleccionado poner clic derecho añadir el archivo y buscamos el archivo en la carpeta.

Ahora realizaremos el programa 

Para finalizar ponemos Build All -> Ponemos Absolute y deberá decir BUILD SUCCESCED

Para Visualizar el Programa se podrá hacer de dos maneras
1) Con el MPLAB
2) Con el PROTEUS ISIS, con este programa será mas fácil visualizarlo

CON EL MPLAB
Primero debemos seleccionar la frecuencia en la cual estará dado el tiempo de instrucción, para ello iremos a:
-> Debugger 
-> Settings 
-> Y en la solapa Osc/Trace seleccionar 4MHz.

Para visualizarlo iremos a View -> Special Function Register, donde visualizaremos el RB7 y con el debugger correremos el programa viendo como cambia el PORTB7 de 0 a 1.

Luego reseteamos y con el Stop Watch que se encuentra en Debugger -> StopWatch podremos observar cuantos milisegundos se encuentra encendido y apagado el LED.
En este caso el LED permanece encendido 1mseg. y el LED permanece apagado 3mseg, ya que las instrucciones de salto tardan el doble que las normales.

CON EL PROTEUS ISIS
Esta manera es más visual ya que la persona que va a ver como corre el programa podrá visualizar como prende y apaga el led (se verá que se prende y apaga muy rápidamente). Además se podrá medir con un osciloscopio la salida del puerto RB7 y visualizar como un osciloscopio real, la señal y el tiempo de encendido y apagado.
Deberemos abrir el PROTEUS ISIS y con el icono PIC on library (una P que se encuentra en la barra lateral izquierda) poner el integrado, el led, su resistencia, masa, vdd y realizar las conexiones.

Para cambiar el valor de la resistencia, clic derecho -> Edit Properties y cambiarlo.
Para cambiar el Power y seleccionar Vdd clic derecho -> Edit Properties y poner Vdd.

Otro paso muy importante son las Propiedades del PIC16F84A.
Para editarlo, clic derecho -> Edit properties, le cambiamos la frecuencia a 4MHz.
Le cambiamos la configuración del programa, para ello tendremos que abrir el archivo creado por el MPLAB.
Además hay que ver la configuración del programa, para ello abrir el archivo .lst en nuestra carpeta del proyecto y abrirlo con el txt y buscar la configuración del Programa (__CONFIG)
Ya con eso podremos visualizar con la barra inferior dándole al PLAY como prende y apaga el Led  muy rápidamente.

Para visualizarlo con el osciloscopio digital y medir el tiempo que permanece encendido y apagado el led deberemos ir a Virtual Instrument Mode en la barra lateral izquierda y conectarlo en la entrada del led.
Al poner play se abrirá automáticamente el Osciloscopio pero si no lo hace tendremos que seleccionar el osciloscopio, clic derecho y poner clic en DIGITAL OSCILLOSCOPE.

Deberemos desactivar los canales que no utilizamos, y el que utilizamos ponerlo en continua.
Cambiar la escala con el regulador de tensión. Con el Trigger level lo movemos de tal forma que se detenga la imagen para poder visualizarla.
Para medir el tiempo en trigger poner cursor y seleccionar en la señal donde empieza y termina el bit alto (encendido del led) y lo mismo con el bit bajo (apagado del led).


Finalmente guardamos el diseño en la misma carpeta que está hecho el proyecto para eso ir a:
File-> Save Design -> Nombrar al diseño y poner guardar.

Luego de realizarlo en la computadora vamos a hacerlo en un protoboard por lo que vamos a realizar el circuito y probrarlo con nuestro programador antes hecho.
Luego de realizado el circuito conectaremos el programador a la pc y realizaremos el cable para conectar del programador al protoboard.


Para aferrar los terminales al RJ12 macho vamos a utilizar la crimpeadora.

1) Abrimos el PICKIT 2, vamos a tools, Check comunication y deberá reconocer la ID. Luego de realizarlo conectar el RJ12 macho al programador y los terminales al uC según corresponda, OJO conectaremos primero los terminales para no hacer ningún cortocircuito.
2) Conectamos el RJ12 al programador y desde la PC, pulsamos Read y deberá reconocer el PIC16F84A

3) Vamor a File -> Import Hex y buscamos el programa hex que creamos, en nuestro caso Tes.hex

4) Pulsamos Write, esperamos que escriba el programa en el uC y deberá decir Programming Successful

5) Luego alimentaremos con 5V y conectaremos un osciloscopio a la entrada del led
En el osciloscopio el trigger lo seteamos como barrido único, la tensión la pondremos en 2V y se verán los 1 y 0 .

martes, 30 de abril de 2013

Ensamblador y Memoria PIC16F84A

MPLAB
Esta herramienta la utilizamos para escribir nuestro código, el lenguaje nativo es el ASEMBLAR.
El código se escribe en un archivo con formato .asm, la hoja donde programemos se divide en 4 columnas.
  1. La primera es Labels, que son las etiquetas 
  2. La segunda es Código de Operación, es la instrucción
  3. La tercera es el Operando
  4. Y la última se utiliza para los comentarios, anteriormente se ponen ";" para hacer comentarios.

Las Etiquetas, su principal función es identificar una determinada instrucción del programa, asignando a esa etiqueta el valor de la dirección del programa.
Ejemplo:
Aca
       goto   Aca   ; salta a la posción de memoria especificada (Aca)
Empieza con letras y después admiten letras números y guión bajo, no puede haber espacios o expresiones reservados como sleep, goto, etc.

El Código de Operación especifica la tarea a realizar por el microcontrolador.
Los Operandos o datos, pueden contener uno o más operandos separados por copas, dependiendo de la instrucción puede ser números o etiquetas que representan constantes o direcciones.
Los comentarios son elementos indispensables porque ayuda al programador a documentar su programa, aclarando el sentido de las instrucciones.
             
Todo programa se escribe en asemblar, se compone de instrucciones que componen el programa que tiene que ejecutar el uC y las directivas al ensamblador, estas son órdenes que se le dan al programa que nos va a  instruir nuestro programa escrito en asemblar cada empresa tiene directivas propias.

El archivo .asm es la fuente y es el mas importante, el archivo .hex es el ejecutable, no es hexadecimal puro, Intel lo estandarizó y Microchip se adecuó a las normas de Intel.

DIRECTIVAS E INSTRUCCIONES UTILIZADAS
DIRECTIVAS
Son comandos insertados en el programa que controlan el proceso de ensamblado, no son parte de las instrucciones del programador por ende no tiene traducción al código máquina, se las llama también pseudoinstrucciones.

END                            Indica el fin del programa, con esta directiva el programa sabe donde tiene que
                                   detener el proceso.
                                              
EQU                            Es una directiva de asignación, lo que hace es asignar una expresión a una
                                   etiqueta label
Sintaxis: <laber> EQU <exp>

ORG                            Esa directiva indica al programa ensamblador la dirección de memoria a partir de
                                    la cual deber ensamblarse las instrucciones.
Sintaxis: ORG <exp>

__CONFIG                Esta directiva indica la configuración para el proceso de grabación:
                                   _XT_OSC        = Utiliza un oscilador de cristal de cuarzo
                                   _WDT_OFF     = El Watch Dog t esta deshabilitado
                                   _PWRTE_ON  = EL Power-Up Timer esta habilitado
                                   _CP_OFF         = No está activada la Protección de Código
Si no se especifica la configuración por defecto es:  _RC_OSC, _WDT_ON, _PWRTE_OFF, _CP_OFF
Ejemplo: __CONFIG   _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

LIST                           Indica el procesador utilizado
Ejemplo: LIST P=PIC16F84A

INCLUDE                  Señala el fichero donde se localiza las etiquetas que nombran los diferentes registros
Ejemplo: INCLUDE <PIC16F84A.INC>

ERROR LEVEL         Omite el error en la linea 302
Ejemplo: ERRORLEVEL -302

#DEFINE                  Esta directiva define el reemplazo de una cadena de caracteres por otra
Sintaxis: #DEFINE <name><string>
Ejemplo: #DEFINE Banco0 bcf STATUS,RP0

INSTRUCCIONES
Son comandos que interpreta el microcontrolador para funcionar de cierta manera, sin las instrucciones el microcontrolador no haría nada.

bcf  f,b   (bit clear file)                   Pone en 0 el bit "b" del registro "f"
bsf  f,b   (bit set file)                      Pone en 1 el bit "b" del registro "f"
Ejemplo: bsf  STATUS,RP0       ; vamos al bank 1
               bcf  TRISB,7              ; seteamos como salida el puertob 7 (0 es salida)
           
goto k                                        Instrucción de salto, salta a la dirección k, esta instrucción tarda el doble
                                                  que las normales
Ejemplo:  ACA
                        goto   ACA
nop                                            No realiza ninguna operación, ocupa un espacio de salto                

clrwdt   (clear watch dog timer)  Borra el WDT

retfie                                          Vuelve hacia la interrupción
Ejemplo: ORG 0x004  ; interrupción
              retfie              ; vuelve hacia la interrupción

btfsc   (bit test file,skip if clear)    Si el bit f es 1 la instrucción que sigue continua normalmente
                                                      Si el bit f es 0 la instrucción que sigue la salta, solo salta una instrucción
btfss   (bit test file,skip if set)      Si el bit f es 0 la instrucción que sigue continua normalmente
                                                      Si el bit f es 1 la instrucción que sigue la salta, solo salta una instrucción

MEMORIA PIC16F84A

EL PIC16F84A dispone de:
  • Una memoria de programa ROM flash que tiene 1024 posiciones, cada posición dispone de 14 bits, esta memoria se mantiene por más que le saques la alimentación. Comienza en la posición 000h (posición inicial de reset) y llega hasta la 3ffh. La memoria esta paginada, dividida en 4 partes con 256 posiciones cada uno, cada página tiene un nombre Page0,Page1,Page2,Page3.
  • Memoria de datos dividida en: 
    • Área RAM constituía por 22 registros de propósito específico SFR cada uno de los registros cumple un propóstito específico y 68 de general propósito GPR son de uso general se usa para guardar los datos temporales del programa que se esta ejecutando, se guardan los datos y las variables, estos desaparecen cuando desaparece la alimentación.
      - La memoria de datos cuenta con dos bancos Banco 0 y Banco 1.
      - Los registros SFR van desde la dirección 00h a 0Bh en el Banco 0 y 80h a 8Bh para el Banco 1
      - Los registros GPR se acceden desde el banco 0, porque el Banco 1 se mapea sobre el 0, es decir si se apunta a un GPR  del banco 1 estas accediendo al Banco 0.
      -Para acceder al Banco 0 RP0=0 para acceder al Banco 1 RP0=1. Las zonas de memoria 50h-1Fh y D0h-FFh no son empleadas y devuelven un 0 si se las lee.

    • Área EEPROM de datos formado por 64 registros de 8 bits, es una pequeña área de memoria de datos de lectura y escritura no volátil, por lo que la información no se pierde.
  • ALU de 8 bits y registro de trabajo W, se encarga de hacer las operaciones aritmeticologicas que requiere la ejecución del programa con dos operandos, uno proviene del registro de trabajo W y el otro el el propio código de instrucción.
  • Contador de Programa de 13 bits, es un resgistro interno que se utiliza para redireccionar las intrucciones del programa que estan almacendas en la memoria del programa.
  • 2 puertos PORTA de 5 bits y PORTB de 8 bits
PORTA se encuentra en la posición 05h del banco 0, puerto de entrada/salida de 5 bits, se puede leer o escribir como si se tratara de un registro cualquiera, el registro que controla el sentido (entrada y salida) se llama TRISA.
PORTB se encuentra en la posición 06h del banco 0, puerto de entrada/salida de 8 bits, se puede leer o escribir como si se tratara de un registro cualquiera, el registro que controla el sentido (entrada y salida) se llama TRISB.
TRISA se encuentra en la posición 85h del banco 1, es el registro de configuración de las líneas del puerto A. Un 0 en el bit corresponde a salida y un 1 como entrada.
TRISB se encuentra en la posición 86h del banco 1, es el registro de configuración de las líneas del puerto B. Un 0 en el bit corresponde a salida y un 1 como entrada.

Registro de configuración
Se encuentran el FOSC,que es para la selecion del oscilador que puede ser:
  • FOSC = 00    LP (bajo consumo): 32KHz - 200KHz
  • FOSC = 01    XT (estandar): 100KHz - 4MHz
  • FOSC = 10    HS (alta velocidad): 4MHz - 20MHz
  • FOSC = 11    RC (bajo coste)
El WDTE, que es el bit de habilitación del Watch Dog Timer, sirve por si el programa se va de ruta a un lugar donde nosotros no queremos que vaya , el WDT hay que ir reseteándolo en el transcurso del programa.
  • WDTE = 0 Watchdog está deshabilitado
  • WTDE = 1 Watchdog está habilitado
EL PWRTE, es la activación del temporizador Power-Up que espera 72mseg antes de arrancar
  • PWRTE = 0 Temporizador Power-Up habilitado
  • PWRTE = 1 Temporizador Power-UP deshabilitado
CP, es la protección del codigo, si esta activado no podremos exportar el programa que creamos
  • CP = 0 Toda la memoria esta protegida contra lecturas indeseables
  • CP = 1 La memoria se puede leer, no está protegido.

miércoles, 27 de marzo de 2013

Programador con PIC18F2550



Índice:
  
- Introducción                                                                  
- Desarrollo
- Materiales
- Circuito eléctrico
- Armado de las Plaquetas
- Imágenes del Programador
- Pasos antes de su conexión
- Funcionamiento                                                           
- Conclusiones                                               

Introducción
Esta actividad tiene el objetivo de aprender a usar una herramienta profesional de diseño de circuitos impresos electrónicos, y la resolución de un circuito complejo con la herramienta de desarrollo elegida, en nuestro caso KICAD, un software libre.

En este caso realizaremos un circuito complejo que es un programador  para microcontroladores PIC - PICKIT2 (clon) con interfaz USB.
Luego de su realización explicaremos en forma consisa como se comunica el el Programador PICKIT 2 y como funciona.
Utilizaremos el integrado PIC18F2550. http://www.datasheetcatalog.org/datasheet/microchip/39617a.pdf

Materiales:
1 Plaqueta epoxi de 10x10 cm.
2 Resistores de 470Ω
2 Resistores de 4K7Ω
3 Resistores de 330Ω
1 Resistor de 1K Ω
1 Resistor de 2K7 Ω
1 Resistor de 100K Ω
3 Resistores de 10K Ω
1 Resistor de 100 Ω
1 LED Rojo de 5mm
1 LED Verde de 5mm
1 Capacitor de 10uF
2 Capacitores de 100nF
2 Capacitores de 47Uf x 25V
2 Capacitores de 15pF
2 Diodos 1N4148
3 Transistores BC548
1 Transistor de BC557
1 Inductor de 680mH
1 Zócalo langosta de 28 patas
1 Switch
1 Integrado PIC 18F2550
1 Cristal de 20MH
4 Tornillos y 4 tuercas
Acrílico negro.
Separadores plásticos.


Circuito eléctrico


Circuito Impreso.
    ·      EN KICAD
Lado pista




Serigrafía





    ·      EN PCB WIZARD
Lado pista




Serigrafía


Armado de la plaqueta
Plaqueta
1) Confeccionamos el circuito en el KICAD:
Para ello tuvimos que abrir el programa KiCad, y crear un nuevo archivo, y guardarlo en una carpeta donde almacenaremos nuestro archivos.
Presionaremos en el EeSchema (editor de esquema) y copiaremos el esquema del progamador:

Luego de hacer el circuito hay que pulsar Annotate Eschematic, que este nombrará automáticamente los componentes, luego presionar el Perform electric rules check (ERC) para corroborar que este todo bien conectado. Finalmente pulsaremos Generated netlist, para que nos cree una lista de componentes.
Luego presionaremos  Cvpcb (Asosiación Componentes/Módulos) donde tendremos que ver que cada componente este con su respectivo modulo (en tamaño).
Finalmente Pcbnew (editor de circuitos impresos) donde pulsaremos Read Neatlist y examinaremos y leeremos la netlist, para luego ordenar los componentes y proceder a finalizar la plaqueta.

2) Imprimimos la serigrafía y el circuito del lado pista en una hoja ilustración. Luego lo planchamos 60 segundos en la plaqueta y cortamos el excedente de la plaqueta.

3) Procesamos la plaqueta en el percloruro férrico aprox. 30 minutos, y luego le pasamos virulana para sacarle el excedente de toner. Finalmente le pasamos flux de lado del cobre.

4) Agujereamos la plaqueta:
- Para los sujetores del RJ12 una de 3 mm.
- Para la masa del conector USB una de 1mm.
- Para los tornillos una de 3,25mm.
- Para el resto de los componentes una de 0,8 mm.   
         
5) Luego soldamos cada componente en el lugar correspondiente, para ello nos guíamos en la serigrafía que planchamos en la parte posterior al cobre.
En la soldadura utilizamos estaño 60/40 de 1mm.

6) Con el acrílico medimos con respecto a la plaqueta y cortamos dos trozos para poner en la misma, sujetamos los dos cortes con tornillos y pusimos separadores entre el lado de cobre y el lado de componentes.


Imágenes del programador terminado
                          

               Vista lateral                                                                                  Vista superior
Pasos antes de su conexión
¿Qué debemos hacer antes de conectar el programador a la PC?
1) Verificar el circuito electrico, y que otra persona, que no haya hecho la plaqueta, verifique el circuito (que los pads no estén en cortocircuito, etc)
2) Verificar con un multímetro que el conector USB este bien conectados al terminar USB
3) Verificar con un multímetro la línea de 5V, GND, D+ y D- que estén bien conectados al uC y el pin 20 del zócalo (5V) con puntos claves, L1 entre 5V y GND
4) Conectamos el cable USB sin el Microcontrolador, si el led se enciende es por que funciona; si no enciende tendremos que ver si está mal conectado el LED o volver a verificar el circuito eléctrico.
5) Conectamos el uC y medimos entre los pines del uC, entre los pines 20 y 19, y; 20 y 8, para ver si hay aproximadamente 5V, también verificar entre los pines 19 y 8 para saber si hay 0 V.
6) Medir entre el emisor Q3 y tierra, donde tiene que haber 5V menos la caída de tensión del inductor y el diodo.
7) Estando conectado el programador a la PC, vamos a Administrador de dispositivos para saber si está bien instalado el dispositivo, o si no lo reconoce es porque hay algo mal en el circuito.
8) Abrir el programa PICKIT 2, al iniciarlo deberá decir PICKIT 2 ID=Hoss corrected, y para verificar si están bien las conexiones vamos a tools, check comunicación y deberá encenderse y apagarse el LED Bussy.
9) Ir a Tools, Rename, Clear Unit ID, para cambiar el nombre; e ir a tools, troubleshoot, ir a la Step 2 y testear el VPP, si aparece Test passed estará andando correctamente.
Funcionamiento
Cuando el programador está conectado, el transistor Q1 está abierto, por ende le llegan 5V al emisor del transistro Q3.
Al conectarlo a la pc, el microcontrolador envia pulsos a través de Vpp_Pump haciendo que Q1 cierra y abra constantemente. El Inductor se opone al cambio de corriente, generando picos de tensión más altos, estos se almacenan en el capacitor y el diodo permite que se almacene sin que descargue a tierra.
Al mismo tiempo el resistor R8 y R9 funcionan como divisor de tensión, y este mide la diferencia entre la tensión que cae en el divisor y la tensión que se encuentra en el emisor Q3, enviándolo al microcontrolador, donde este modifica constantemente los pulsos dependiendo si se excedió o llega a faltar tensión, enviándolo nuevamente por Vpp_Pump

Conclusiones




El funcionamiento del programador es simple: El programador lo que hace es comunicarse con la pc para tomar los datos de un archivo ejecutable .hex (hexadecimal), esto es un archivo de texto que va a contener un programa y el programador genera las señales nesesarias para que el microcontrolador entienda estos datos que surgen de haber hecho el programa.

El flujo de trabajo es:     
  ·       Escritura del programa (pqm) en lenguaje asm.
  ·       Ensamblaje  del programa (es decir traduce el programa a un lenguaje entendible por la máquina)
  ·       Simulación / Debug
  ·       Programación


El programador es una herramienta de desarrollo.
El PIC18F2550 hace un puente entre la Pc y el micro, saca la data y la acomoda de tal manera que pase por 5 cables, especialmente por (PGD y PGC).
Antes de ponerlo en marcha hay que programarlo.
Para ponerlo en modo programación hay que utilizar la tensión Vpp, que es una tensión especial, que se utiliza para ponerlo en el modo mencionado.
El microchip primero es programado y luego se corre el programa.

jueves, 21 de marzo de 2013

Señales infrarrojas y medición con Osciloscopio

Nota: Se denomina ingeniería a la inversa cuando se investiga las caracterìsticas de un dispositivo existente para saber còmo fue construido, y saber como hacerlo en una situación posterior.
Actividad 1:
Vamos a realizar el siguiente circuito para aprender a utilizar el osciloscopio digital y para saber como funciona los protocolos de controles remoto como TV,DVD,VCR,Audio,AA,etc.

Funcionamiento y circuito del integrado IRM8601:

Es un integrado que actúa como receptor de señales infrarrojas.
Dicho integrado tiene tres terminales; 1)Out 2)Masa 3)Vcc.
Armamos un circuito para que se comporte como un receptor de señal infrarroja

Imagen 1


Posee una resistencia llamada pullup de 47K que se utiliza para polarizar el transistor, y este toma la señal de luz como un "0" y lo cambia a un "1", es decir se comporta como una llava abierta, eso se llama señal inversora.

Y también posee un filtro pasabajos RC, de 47 ohm y 47uf respectivaente, este se utiliza para no tener interferencias con otras señales de similar longitud de onda como por ejemplo un tubo fluorescente.
Este filtro mudula la señal y la toma como un codigo en el que el LED infrarrojo se prenda y apague en un tiempo determinado, para tener buena inmunidad, durante un determinado tiempo se prende y apaga muchas veces. Dicha frecuencia se denomina Portadora o Carrier.

Protocolo:
Es un conjunto de reglas normalizadas para la representación, señalización, autenticación y detección de errores necesario para enviar información a través de un canal de comunicación, y asi tener un buen funcionamiento de los dispositivos,el acuerdo  sobre la forma en que se entenderán o asumirá el intercambio de información entre los equipos transmisores de datos para que estos pueda entenderse unos a otros. 

Protocolos mas usados:

RC-5: Philips
SIRC: Sony
Japanese Format: Producido por Sanyo, comercializado por NEC
JVC Potocol
Mitsubishi Protocl
Nokia NRC17 


El circuito mostrado anteriormente lo utilizaremos para medir, capurar y almacenar en formato de imagen la señar capturada, para ello tendremos que seguir los siguentes pasos en el osciloscopio digital.


Imagen 2


Luego de armar el circuito y conectar el osciloscopio digital, vamos a pulsar un botón del control remoto que nosotros trajimos, en este caso es el de un SAMSUNG, para que el osciloscopio nos indique la señal decodificada de lo que nos envía el botón (en este caso es el de encendido) del protocolo que tiene el  led inflarrojo de samsung.
Imagen 3

Aclaración: Acoplar el CH que estamos usando en DC (corriente continua) ya que si está en alterna, el capacitor interno cargará y este se reflejará en la señal medida.
En el MENU de Trigger cambiar el flanco descendente a la segunda opción porque queremos empezar a ver desde que desciende la señar
Y poner Modo único para que memorize la señar al pulsar el botón y se congele la imagen
Imagen 4

Luego de variar los controles de amplitud para poder ver una mejor imagen nos quedará una señal así:

                                                                       Imagen 5

El uno y el cero, es respectivamente cuando la señal es más grande es un 1; y cuando es más chica es un 0; el 1 polariza el led y prende y el 0 apaga.


 Otra señal de otro botón (en este caso el botón 1) se ve así:
                                                                        Imagen 6


Una última señal es del botón de V+ (volumen más) que se ve así:

                                                                        Imagen 7



Luego de tener la señal en la pantalla del osciloscopio medimos los tiempos de subida y bajada para así buscar en Internet el código predeterminado con el que está configurado dicho control remoto para que el receptor de señales lo reconozca y así cumplir su función óptima.
Acá vemos que el protocolo IR del control remoto utilizado (samsung) corresponde al protocolo utilizado por Samsung. Click aquí para ver
                                                                        Imagen 8

La señal Ir se modula para poder enviarla a través de bits, además se modula para que no haya interferencias con señales de similar magnitud.
Se transmiten en total 32 bits, la trama esta compuesta por un Leader (cabecera), seguido de un Custom Code (codigo customizado) de 2 bytes (8 bits cada codigo), un Data code (codigo de datos) y finalmente un End bit (bit final).
El leader determina el comienzo de la trama, seguido del Custom code, que es el codigo que viene ya de fábrica y el Data Code que es propiamente el código
El periodo que se repite entre la primer trama y la segunda trama es de 108ms,el medido por nosotros nos dio con un error de 1ms, ya que posicionamos mal el cursor.
[VER IMAGEN 7] 

Imagen 9




Antes de realizar dicha experiencia con el control remoto "Samsung" tratamos de hacerla con un control remoto de un aire acondicionado cuya marca desconocíamos, el problema lo tuvimos para buscar el protocolo de dicho control, cuyos tiempos medidos no aparecían en ningún lado.



Imagen 10

Esta es la señal completa de los Bits que mostraba el osciloscopio de la función "ON/OFF" del control.

Imagen 11



Imagen 12
Actividad 2:
En esta práctica vamos a conocer más sobre el protocolo serie 232 a través de un conector DB9 en el que solo utilizaremos los terminales TX y GND.
 Este lo conectaremos a la PC y por medio del programa Hyperterminal, que se encuentra en Inicio->Programas->Accesiorios->Comunicaciones, y configuraremos el puerto, código postal y demás; sin tomarle importancia y en propiedades del Puerto COM1 vamos a seleccionar : Bits por segundo: 9600; Bits de datos: 8;  Paridad: Ninguno; Bis de Parada: 1; Control de Flujo: Ninguno. Posteriormente ajustaremos el osciloscopio de esta manera: sensibilidad del canal 5V/div.; escala de tiempos a 200us/div.; poner el trigger en flanco ascendente y barrido único para poder capturar una buena señal, la señal propia de dicha tecla.
Conexionado del conector DB9 al osciloscopio.

Luego de soldar el DB9 y disponer de pines, colocándolos en el protoboard, comenzamos a realizar la medición; los pines se colocan para tener un mejor agarre de los cables VNC, ya que no querremos hacer ningun cortocircuito entre los terminales y estropear la computadora.




Conexionado del DB9 al protoboard.



Después de tener todo listo comenzamos la práctica presionaremos la tecla "A" en velocidad de transmisión a 9600b/s y recibimos una señal de este tipo:
Medimos el tiempo del bit de start y nos dió como resultado 104us, con una tension de 22,2V;cuando esta en estado de reposo tenemos una tension de -12V, ya que nosotros no le envias ninguna señal a través del teclado.
Como sabemos que esta señal es la tecla "A", bueno para eso hay que ponerse a buscar un poco el protocolo del RS-232, y el codigo ASCII, donde encontramos que la convencion  que se usa en el RS-232 es:
Nivel logico 0, tension entre +3 a +15V, control on.
Nivel logico 1, tension entre -3 a -15V, control off.
Esto quiere decir que el 0 es el bit alto y el 1 es el bit bajo.
Buscando el codigo ASCII de la letra A vimos que coinciden, donde se lee el código al revés, el codigo ASCII es un código de caracteres basado en el alfabeto latino. El código ASCII utiliza 7 bits para representar los caracteres, aunque inicialmente empleaba un bit adicional (bit de paridad) que se usaba para detectar errores en la transmisión.
Luego realizamos varias mediciones con la letra "a" en minúscula para comprobar si funcionaba correctamente, y no nos quedamos solo con un resultado:

                                                 

                   Acá también comprobamos que estábamos midiendo correctamente














Luego realizamos las mediciones cambiándole la velocidad de transmisión de 19200b/s:


                             
                                                               Letra "a"

El Bit de stop no se puede observar con detalle ya que aparece en el mismo esta que en el de reposo.
El tiempo en que tarda a 9600bps, un bite (8 bits) es de 323us (104us x 8bits).





FOTOS DE LA EXPERIENCIA:
                                       
                                     Soldadura de los cables a los terminales TX(3) y GND (5).

                                      
                                                         DB9 listo para conectar.

Conclusiones:
Estas experiencias nos ayudaron a ver de manera real y práctica como un control remoto se comunica con otro aparato para que este funcione de manera correcta y con las indicaciones adecuadas. Aprendimos como se puede saber los protocolos y códigos que se usaron para armar el "lenguaje" de dicho control remoto, es decir, que con el aparato ya armado nosotros podemos hacer el paso inverso y saber como fue armado, esto es muy importante porque así es como uno puede saber como armar un control remoto.También conocimos cómo funciona el protocolo serie 232 a través de un conector DB9 conectado a la PC y a un osciloscopio digital, el cual nos dará el tipo de señal de cualquier tecla que presionemos con el programa "Hyperterminal". Esta experiencia fue muy productiva, porque además aprendimos a utilizar el osciloscopio digital con puerto USB para poder guardar imágenes y posteriormente analizarlas con mayor precisión y calidad, el conector DB9 y el programa Hyperterminal.