Introduccion a los sistemas embebidos

122
Sistemas Embebidos y Control Septimo Semestre Microcontroladores Programables M.C. Andrés Gerardo Fuentes Covarrubias Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica Ingeniería en Sistemas Computacionales Academia de Arquitectura de Computadoras

description

Unidad inicial de la materia Sistemas Embebidos y Control. Se compila en la primera parte algún material e imagenes de otros autores, el material restante es original del autor.

Transcript of Introduccion a los sistemas embebidos

Page 1: Introduccion a los sistemas embebidos

Sistemas Embebidos y ControlSeptimo Semestre

Microcontroladores Programables

M.C. Andrés Gerardo Fuentes Covarrubias

Universidad de ColimaFacultad de Ingeniería Mecánica y Eléctrica

Ingeniería en Sistemas ComputacionalesAcademia de Arquitectura de Computadoras

Page 2: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 2

¿Que es un procesador?

1.1. Conceptos básicos sobre microcontroladores

Page 3: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 3

¿Donde estan los procesadores?

Page 4: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 4

¿Que es un microcontrolador?

Page 5: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 5

Microprocesadores vs Microcontroladores

Page 6: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 6

Hardware

Page 7: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 7

Aplicaciones

Page 8: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 8

Repertorio de instrucción

Page 9: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 9

Hardware

Page 10: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 10

Hadware de un microcontrolador

Page 11: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 11

Unidad central de proceso

Page 12: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 12

CPU (Esquema)

Page 13: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 13

Tareas de un CPU

Page 14: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 14

Tareas del CPU cont…

Page 15: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 15

Tareas de …

Page 16: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 16

Tipos de CPU

Page 17: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 17

Sistema de memoria

Page 18: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 18

Sistema de memoria

Page 19: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 19

Los microcontroladores

Page 20: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 20

Aplicaciones

Page 21: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 21

Microcontroladores comunes

1.2. Los microcontroladores PIC y Atmel

Page 22: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 22

Escalabilidad en Microchip

Page 23: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 23

ConceptoCircuito integrado que incluye en su

interior las tres unidades

funcionales de un ordenador: CPU,

Memoria y Unidades de E/S, es decir, se trata

de un computador completo en un

solo circuito integrado.

Page 24: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 24

Usos

Page 25: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 25

Page 26: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 26

Page 27: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 27

Ciclo de vida de un programa para sistema embebido:

Page 28: Introduccion a los sistemas embebidos

1.3. El entorno de desarrollo para Microcontroladores

Microchip

� Modelo de programación del uC PIC18F4550

� Modelado de programas en Mplab� Simulación de programas en Proteus VSM

Page 29: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 29

Modelo de programación con elmicrocontrolador PIC18F4550

� El PIC18F4550, pertenece a los microcontroladores PIC18 de gama alta. Posee una arquitectura RISC (reduced instruction set computer) de 16 bits longitud de instrucciones y 8 bits de datos. La tabla muestra en resumen las características fundamentales de este microcontrolador y de sus antecesores los PIC18F2455/2550/4455.

Page 30: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 30

Page 31: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 31

Organización de la memoriaEl uC PIC18F4550 dispone de las siguientes memorias:

� Memoria de programa: memoria flash interna de 32.768 bytes. Almacena instrucciones y constantes/datos. Puede ser escrita/leída mediante un programador externo o durante la ejecución programa mediante unos punteros.

� Memoria RAM de datos: memoria SRAM interna de 2048 bytes en la que están incluidos los registros de función especial. Almacena datos de forma temporal durante la ejecución del programa Puede ser escrita/leída en tiempo de ejecución mediante diversas instrucciones.

� Memoria EEPROM de datos: memoria no volátil de 256 bytes. Almacena datos que se deben conservar aun en ausencia de tensión de alimentación Puede ser escrita/leída en tiempo de ejecución a través de registros.

� Pila: bloque de 31 palabras de 21 bits. Almacena la dirección de la instrucción que debe ser ejecutada después de una interrupción o subrutina.

Page 32: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 32

Organización de la memoria

� Memoria de configuración: memoria en la que se incluyen los bits de configuración (12 bytes de memoria flash) y los registros de identificación (2 bytes de memoria de solo lectura). Se trata de un bloque de memoria situado a partir de la posición 30000H de memoria de programa (más allá de la zona de memoria de programa de usuario). En esta memoria de configuración se incluyen:

Bits de configuración: contenidos en 12 bytes de memoria flash permiten la configuración de algunas opciones del uC como:

- Opciones del oscilador. - Opciones de reset. - Opciones del watchdog.- Opciones de la circuitería de depuración y programación.- Opciones de protección contra lectura de memoria de

programa y memoria EEPROM de datos.

Estos bits se configuran generalmente durante la programación del uC, aunque también pueden ser leídos y modificados durante la ejecución del programa.

� Registros de identificación: se trata de dos registros situados en las direcciones 3FFFFEH y 3FFFFFH que contienen información del modelo y revisión del dispositivo. Son registros de solo lectura y no pueden ser modificados por el usuario.

Page 33: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 33

Mapa de memoria

Page 34: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 34

Arquitectura HarvardEl uC PIC18F4550 dispone buses diferentes para el acceso a memoria de programa y memoria de datos (arquitectura Harvard):

� Bus de la memoria de programa:- 21 líneas de dirección- 16/8 líneas de datos (16 líneas para instrucciones/8 líneas para datos)

� Bus de la memoria de datos:- 12 líneas de dirección- 8 líneas de datosEsto permite acceder simultáneamente a la memoria de programa y a la memoria de datos. Es decir se puede ejecutar una instrucción (lo que por lo general requiere acceso a memoria de datos) mientras se lee de la memoria de programa la siguiente instrucción (proceso pipeline).

Por tanto la ejecución completa de 1 instrucción (lectura instrucción +ejecución) se hace en un 1 ciclo de instrucción (4 Tosc). EXCEPCIÓN: las instrucciones que modifican el contenido del PC requieren 2 ciclos de instrucción.

Page 35: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 35

Modelado de programas en MPLAB

� Microchip provee una buena herramienta para el desarrollo de aplicaciones con microcontroladores PIC, esta es el MPLAB

� Con MPLAB se puede:� Editar programas� Ensamblarlos si estan escritos en ensablador� Compilarlos si estan escritos en un lenguaje de

alto nivel� Depurarlos con el MPLAB Sim

Page 36: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 36

Simulación de programas con Proteus VSM

Como una funcionalidad adicional, MPLAB permite invocar al Proteus desde el entorno de desarrollo para efectuar la depuración directamente en el esquemático de la aplicación Hardware.

Page 37: Introduccion a los sistemas embebidos

1.4. Diseño de aplicaciones con PIC

� Repertorio de instrucciones

� Temporizadores, Puertos de E/S y manejo de datos

� Interrupciones

Page 38: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 38

Formato de un programa en ensamblador Pic18F4550(1)

LIST P=18F4550 ;Directiva para definir el procesador

#include "P18F4550.INC"

;******** Bits de configuracion **********CONFIG PWRT = ON ;PWRT habilitadoCONFIG WDT = OFF ;Watchdog deshabilitado CONFIG MCLRE = ON ;MCLR como entradaCONFIG PBADEN = OFF ;Todos los pines del puerto B como entradas analogicasCONFIG DEBUG = OFF ;Deshabilitar modo DEBUGCONFIG LVP = OFF ;Deshabilitacion del modo programacion de bajo nivelCONFIG FOSC = HSPLL_HS ;Oscilador de alta velocidad con PLL habilitado;********* Bits de proteccion ******************CONFIG CP0 = OFF ;los bloques del codigo de programaCONFIG CP1 = OFF ;no estan protegidosCONFIG CP2 = OFFCONFIG CP3 = OFFCONFIG CPB = OFF ;Sector Boot no esta protegidoCONFIG CPD = OFF ;La EEPROM no esta protegida

Page 39: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 39

Formato de un programa en ensamblador Pic18F4550(2)

CBLOCK 0x000 ;Variables en la ACCESS RAM (Banco 0) max 96 bytes;Aqui va la declaracion de variablesENDC

ORG 0xf00000 ;Area de definicion de variables de la EEPROM;DE "Test Data",0,1,2,3,4,5

ORG 0x0000 ;vector de interrupcion del resetgoto main

ORG 0X0008 ;vector de interrupcion de baja prioridadgoto main

ORG 0X0018 ;vector de interrupcion de alta prioridadgoto main

main: ;Programa principal

fin: goto finend

Page 40: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 40

Repertorio de instrucciones

El juego de instrucciones es altamente ortogonal y esta dividido en 4 grupos:

� Operaciones orientadas al Byte� Operaciones orientadas al Bit� Operaciones con literales� Operaciones de control

Page 41: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 41

Operaciones orientadas al Byte

Page 42: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 42

Operaciones orientadas al Bit

Page 43: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 43

Operaciones de control

Page 44: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 44

Operaciones con literales

Page 45: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 45

Temporizadores, Puertos de Entrada/Salida y Manejo de datos

� El uC PIC18F4550 dispone 5 puertos de E/S que incluyen un total de 35 líneas digitales de E/S:

Todas las líneas digitales de E/S disponen de al menos una función alternativa asociada a alguna circuitería especifica del uC. Cuando una línea trabaja en el modo alternativo no puede ser utilizada como línea digital de E/S estándar.

Page 46: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 46

Puertos de Entrada/Salida

� REGISTROS DE UN PUERTO DE E/S: Cada puerto de E/S tiene asociado 3 registros:

� Registro TRIS: mediante este registro se configuran cada una de las líneas de E/S del puerto como ENTRADA (bitcorrespondiente a '1') o como SALIDA (bit correspondiente a '0').

� Registro PORT: mediante este registro se puede leer el nivel de pin de E/S y se puede establecer el valor del latch de salida.

� Registro LAT: mediante este registro se puede leer o establecer el valor del latch de salida.

Page 47: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 47

Puertos de Entrada/Salida

Page 48: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 48

Puerto A� Dispone de 7 líneas de E/S. Las funciones alternativas son:

■ RAO: entrada analógica (ANO)/ entrada de comparación (C1IN-)■ RAÍ: entrada analógica (AN1)/ entrada de comparación (C2IN-)■ RA2: entrada analógica (AN2)/ entrada de comparación (C2IN+)■ RA3: entrada analógica (AN3)/ entrada de comparación (C1IN+)■ RA4: entrada de reloj del Temporizador 0 (TOCKI)/salida de comparación (C1OUT)

■ RA5: entrada analógica (AN4)/ salida de comparación (C2OUT)/HLVDIN entrada de detección de tensión alta/baja

■ RA6: entrada del oscilador principal (OSC2)/salida de señal de reloj (CLKO)

En el reset las líneas RAO, RAÍ, RA2, RA3 y RA5 se configuran como líneas de entrada analógicas. Para poder utilizarlas como líneas digitales de E/S hay que desactivar la función analógica:

MOVLW 0FH ; Se desactiva la función de entrada analógicaMOVWF ADCON1 ; para las líneas RAO, RA1, RA2, RA3 y RA4MOVLW 07H ; Configura los comparadores para entrada digital.MOVWF CMCON ;para las líneas RAO, RA1, RA2 y RA3MOVLW 3CH ; Se configuran RA5, RA4, RA3 y RA2 como entradasMOVWF TRISA ; y RA1 y RAO como salidas

Page 49: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 49

Registro ADCON1

– VCFG1: Bit de configuración de la tensión de referencia VREF-:VCFG1=‘0’: VREF- se conecta a VSSVCFG1=‘1’: VREF- se conecta a la línea física RA2

– VCFG0: Bit de configuración de la tensión de referencia VREF+:VCFG1=‘0’: VREF+ se conecta a VDDVCFG1=‘1’: VREF+ se conecta a la línea física RA2

– PCFG3..PCFG0: Bits configuración de los puertos de conversión A/D. Mediante estos bits se establecen que líneas físicas (RA5..RA0, RB4..RB0, RE1 y RE0) van a trabajar como entradas del convertidor A/D (Ver Tabla de configuración de líneas de conversión A/D).

Page 50: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 50

Registro ADCON1

Page 51: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 51

Puerto B� Dispone de 8 líneas de E/S. Las funciones alternativas son:

■ RBO: entrada analógica (AN12)/ interrupción externa 0 (INTO)/entrada de fallodel ECCP (FLTO)/entrada de datos del SPI (SDI)/línea de datos del PC (SDA)

■ RB1: entrada analógica (AN10)/ interrupción externa 1 (INTl)/línea de reloj delSPI (SDI)/línea de reloj del PC (SDA)

■ RB2: entrada analógica (AN8)/ interrupción externa 2 (INT2)/salida de datos delUSB (VCMO)

■ RB3: entrada analógica (AN9)/ línea de E/S del CCP2 (CCP2)/salida de datos del USB (VPO)

■ RB4: entrada analógica (AN11)/ interrupción por cambio en pin (KBIO)/ salida deCS del SSP (CSSP)

■ RB5: interrupción por cambio en pin (KBI1)/ línea de programación (PGM)■ RB6: interrupción por cambio en pin (KBI2)/ línea de programación (PGC)■ RB7: interrupción por cambio en pin (KBI3)/ línea de programación (PGD)

Page 52: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 52

Puerto B� Resistencias de pull.up: Todas las líneas del puerto B disponen de resistencias de

pull-up internas que pueden ser activadas poniendo el bit RBPU del registro INTCON2 a '0' (RPBU=T después de un reset). Si una línea del puerto B se configura como salida la resistencia de pull-up correspondiente se desactiva automáticamente.

Por defecto, en el reset las líneas RB4..RB0 están programadas como entradasanalógicas. Existen dos formas de configurar RB4..RB0 como líneas de E/S digitales:

■ Poniendo a '0' el bit PBADEN del registro de configuración CONFIG3H=> en el reset RB4..RB0 se configuran como líneas de E/S digitales

■ Si PBADEN='l' (valor por defecto) se pueden configurar RB4..RB0 como líneas el E/S digitales desactivando la función analógica:

MOVLW 0x07 ; Se desactiva la función de entrada analógicaMOVWF ADCON1 ; para las líneas RBO, RB1, RB2, RB3 y RB4MOVLW 0xF0 ; Se configuran RB7, RB6, RB5 y RB4 como entradasMOVWF TRISB ; y RB3, RB2, RB1 y RBO como salidas

Page 53: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 53

Puerto C� Dispone de 5 líneas de E/S (RCO, RCl, RC2, RC6 y RC7) y 2 líneas de solo entrada (RC4

y RC5). Las funciones alternativas son:

■ RCO: salida del oscilador del Temp. 1 (T1OSO)/ entrada de contador de los temporizadores 1 y 3 (T13CKI)

■ RCl: entrada del oscilador del Temporizador 1 (TIOSI)/ línea de E/S del CCP2 (CCP2)/ salida OE del transceiver del USB (UOE)

■ RC2: línea de E/S del CCP1 (CCP1)/ salida PWM del ECCP1 (PÍA)

■ RC4: línea menos del bus USB (D-) / línea de entrada del USB (VM)

■ RC5: línea más del bus USB (D-) / línea de entrada del USB (VP)

■ RC6: salida de transmisión del EUSART (TX)/ línea de reloj del EUSART (CK)

■ RC7: entrada de recepción del EUSART (RX)/ línea de datos síncrona del EUSART (DT)/ salida de datos del SPI (SDO)

En el reset todas las líneas del puerto C quedan configuradas como entradas digitales

Page 54: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 54

Puerto D� Dispone de 8 líneas de E/S. Las funciones alternativas son:

■ RDO: línea de datos del SPP (SPPO)

■ RD1: línea de datos del SPP (SPP1)

■ RD2: línea de datos del SPP (SPP2)

■ RD3: línea de datos del SPP (SPP3)

■ RD4: línea de datos del SPP (SPP4)

■ RD5: línea de datos del SPP (SPP5) / salida PWM del ECCP1 (P1B)

■ RD6: línea de datos del SPP (SPP6) / salida PWM del ECCP1 (P1C)

■ RD7: línea de datos del SPP (SPP7) / salida PWM del ECCP1 (P1D)

� Resistencias de pull.up: Todas las líneas del puerto D disponen de resistencias de pull-up internas que pueden ser activadas poniendo el bit RDPU del registro PORTE a T (RPDU='O' después de un reset). Si una línea del puerto D se configura como salida la resistencia de pull-up correspondiente se desactiva automáticamente.

Page 55: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 55

Puerto E� Dispone de 3 líneas de E/S (REO, RE1 y RE2) y 1 línea de solo entrada (RE3). Las

funciones alternativas son:

■ REO: entrada analógica (AN5)/ salida de reloj 1 del SPP (CK1SPP)

■ RE1: entrada analógica (AN6)/ salida de reloj 2 del SPP (CK2SPP)

■ RE2: entrada analógica (AN7)/ salida de habilitación del SPP (OESPP)

■ RE3: Línea de reset externo (MCLR) / línea de programación (VPP)

� En el reset todas las líneas RE2..RE0 se configuran como entradas analógicas. Para poder utilizarlas como líneas digitales de E/S hay que desactivar la función analógica:

� MOVLW 0FH ; Se desactiva la función de entrada analógicaMOVWF ADCON1 ; para las líneas REO, RE1 y RE2MOVLW 06H ; Se configuran RE2 y RE1 como entradasMOVWF TRISE ; y RE0 como salida

La línea RE3 por defecto tiene la función de Reset del uC. Si se desea desactivar la función de Reset y utilizar RE3 como línea de entrada digital hay que poner a '0' el bitMCLRE del registro de configuración CONFIG3H.

Page 56: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 56

Oscilador� El PIC18F4550, tiene un oscilador

interno de 32 KHZ. Este PIC ejecuta una instrucción en un ciclo de máquina (4 periodos de reloj).

� Cuando se requiere aumentar la velocidad de procesamiento se debe conectar un oscilador externo con frecuencias de osciladores de 8, 10, 12, 16, 20, 32, 40 y 48 MHz.

� Los capacitores cerámicos entre 15 a 33 pF.

Page 57: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 57

Reset

� Es la acción con la cual inicia el trabajo del uC.

� Existe el pin 1 MCLR (masterclear) que puede ser configurado como RESET.

� Cuando se conecta a un nivel bajo este pin, en el uC se produce un reset. Para operación normal este pin debe encontrarse a un nivel alto.

Page 58: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 58

Armado del Sistema Mínimo

Page 59: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 59

El sistema mínimo en PCB

Page 60: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 60

¿Qué es un Bootloader?

� El termino bootloader hace referencia a un pequeño programa que se realiza para determinado microcontrolador, ya sea PIC, Freescale, Atmel, etc. Este código lo que hace es tomar los datos que se le enviaran por puerto serial (UART), USB, Ethernet, el que sea que pueda enviar una cadena de Bytes al microcontrolador. El microcontrolador va tomando esos datos que le van llegando y los va "Programando" en su propia memoria Flash.

Page 61: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 61

¿Qué es un Bootloader?� Es necesario tener un programador para usarlo solo una vez y así

grabarle el programa residente en memoria FLASH. Ya después de esto se usa el Bootloader para grabar la flash del micro.

� El programa residente ocupa memoria flash y por ende tienes un poco menos de memoria para la aplicación real del micro. No es mucha la que quita, pero hay que tener eso claro.

� Por ningún motivo se puede sobrescribir las posiciones de memoria FLASH en la que se encentra el programa residente Bootloader. Si se borra por algún error, pierdes el bootloader y toca nuevamente programarlo con un grabador externo.

� No todos los micros pueden soportar Bootloder, esto se limita a aquellos que tienen la capacidad de autograbar su memoria FlLASH. Por ejemplo el 16F84 no lo permite, por eso sacaron la versión PIC16F628A que si lo deja y además tiene mejores prestaciones.

Page 62: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 62

Configuración del HidBootloader

� Microchip provee un Bootloader para agilizar el tiempo de desarrollo de aplicaciones para Pic que cuentan con interfaz USB

� Tan solo es necesario cargar el microcontrolador con el firmware y proteger el área de booteo

� Adicionar los fuses convenientes en el código� Relocalizar los vectores de interrupción para que no

toquen los vectores originales.

Page 63: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 63

HIDBootloader� El diagrama del sistema mínimo incluye la circuitería para

sostener el HIDBootloader

� Para entrar en modo Bootloader, se debe presionar el botón conectado en RB4, manteniéndolo presionado, después se debe dar RESET al pic con otro pulsador en el pin MCLR. Al resetear el PIC, lo primero que hace el PIC es preguntar por el estado del PIN RB4 donde esta el pulsador. De estar presionado este botón, el PIC entra en modo Bootloader y si no ejecuta el código normal que le grabamos al PIC.

� El led conectado en el puerto RD1 se enciende y apaga cuando entra en modo Bootloader.

Page 64: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 64

HIDBootloader software

Page 65: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 65

Formato de los fuses en Ensamblador;--------------------------------------------------------------------------------------;Bits de configuración;----------------------------

CONFIG PWRT = ON ;PWRT habilitadoCONFIG WDT = OFF ;Watchdog deshabilitado CONFIG MCLRE = ON ;MCLR como entradaCONFIG PBADEN = OFF ;Todos los pines del puerto B como entradas

;analogicasCONFIG DEBUG = OFF ;Deshabilitar modo DEBUGCONFIG LVP = OFF ;Deshabilitacion del modo programacion de bajo nivelCONFIG FOSC = HSPLL_HS ;Oscilador de alta velocidad con PLL habilitadoCONFIG BOR = OFFCONFIG USBDIV = 1CONFIG PLLDIV = 5CONFIG CPUDIV = OSC1_PLL2CONFIG VREGEN = ON;********* Bits de protección ******************CONFIG WRTB = ON ;bit de proteccion del area de booteoCONFIG CP0 = OFF ;los bloques del codigo de programaCONFIG CP1 = OFF ;no estan protegidosCONFIG CP2 = OFFCONFIG CP3 = OFFCONFIG CPB = ON ;Sector Boot esta protegidoCONFIG CPD = ON ;La EEPROM esta protegida

Page 66: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 66

Formato de llamadas en ensamblador

;------------------------------------------------------------------------------------;vector de interrupcion del reset;--------------------------------

ORG 0x1000goto main

;-----------------------------------------------------------------------------------;vector de interrupcion de alta prioridad;----------------------------------------

ORG 0X1008goto main

;-----------------------------------------------------------------------------------;vector de interrupcion de baja prioridad;----------------------------------------

ORG 0X1018goto main

Page 67: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 67

El lenguaje de programación C para microcontroladores

� Repertorio de instrucciones� Diseño de aplicaciones básicas en lenguaje C� Puertos de E/S, temporizadores y manejo de datos� Interrupciones

Page 68: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 68

El compilador CCS

� Si queremos realizar la programación de los microcontroladores PIC en un lenguaje como el C, es preciso utilizar un compilador de C.

� Dicho compilador nos genera ficheros en formato Intel-hexadedimal, que es el necesario para

� programar (utilizando un programador de PIC) un microcontrolador de 6, 8, 18 ó 40 patillas.

Page 69: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 69

El compilador CCS

� Mas productividad� Permite codificado en línea de ASM� Soporta compilado en línea con MPLAB� Portabilidad de código en lenguaje C� Soporta recursividad de funciones� Amplia gama de microcontroladores� Capacidad de relocalización de código y

vectores de interrupción

Page 70: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 70

Formato de programa (1)#include "18f4550.h"#device adc=10 //Resolucion del ADC 8/10 bits//----------------------------------------------------------------------------------------------------//Bits de configuración#fuses HSPLL,NOWDT,NOBROWNOUT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,MCLR,NOPBADEN,WRTB,CPB

//----------------------------------------------------------------------------------------------------//USES de configuracion de perifericos//Configuración del oscilador del CPU#use delay(clock=48000000)

//Configuracion de la USART1#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8, parity=N)

//----------------------------------------------------------------------------------------------------//Redireccionamiento de los vectores de interrupción para adaptarlos al HidBootloader#build(reset=0x1000,interrupt=0x1008)#org 0x0000,0x0FFF {}

//----------------------------------------------------------------------------------------------------//Definición de simbolos#define LED PIN_B1

Page 71: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 71

Formato de programa (2)//----------------------------------------------------------------------------------------------------//Programa principalvoid main(void){

//------------------------------------------------------------------------------------------------//Variables y constantes del programa

//------------------------------------------------------------------------------------------------//Inicialización del microcontrolador//-----------------------------------

disable_interrupts(global);disable_interrupts(int_timer1);disable_interrupts(int_rda);disable_interrupts(int_ext);disable_interrupts(int_ext1);disable_interrupts(int_ext2);setup_spi(FALSE);setup_psp(PSP_DISABLED);setup_comparator(NC_NC_NC_NC);setup_vref(FALSE);port_b_pullups(FALSE);setup_adc_ports( AN0 || VSS_VDD );setup_adc(ADC_CLOCK_DIV_64 || ADC_ACQT_2TAD );set_adc_channel(0);

Page 72: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 72

Formato de programa (3)//------------------------------------------------------------------------------------------------//Rutina principal//-------------------

while(1) // Ciclo infinito{

/* Programaprincipal */

}}

Page 73: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 73

Operadores

� Asignación:

Page 74: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 74

Operadores

� Aritméticos

Page 75: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 75

Operadores

� Relacionales

Page 76: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 76

Operadores

� Lógicos

� De manejo de bits

Page 77: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 77

Operadores

� Incremento, decremento y desplazamiento de bits

Page 78: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 78

Operadores� Dirección e Indirección

� Ejemplos:

� p = &contador; /* p apunta a la dirección de contador */

� El operador de indirección *, nos da el valor o contenido de la variable cuya dirección está apuntada por el puntero.

� p = &contador; /* p apunta a la dirección de contador */� a = *p; /* guarda en a el contenido de la var. apuntada por p */

Page 79: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 79

Expresiones

Page 80: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 80

Manejo de datos� Tipos: El lenguaje C proporciona

cinco tipos básico de datos, con cuatro modificadores posibles. Podemos utilizar variables de cualquiera de esos tipos.

� La tabla siguiente muestra los tipos

disponibles:

� CCS permite una "forma corta" para escribir algunos de los tipos. Concretamente, podemos utilizar unsigned, short, o long en lugar de unsigned int, short int, o long int.

Page 81: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 81

Declaración de variables

� Las variables deben ser declaradas antes de ser utilizadas en el programa. El proceso de declaración de variables le dice a CCS de que tipo son y como se llaman. Al igual que las demas instrucciones de CCS, deben terminar con “;”.

� La forma en que se declara

una variable es la siguiente:

tipo nombre_de_la_variable; Donde:

tipo es alguno de los enumerados en la tabla anterior.

Unos ejemplo son:

int temperatura;

int a = 0;

signed long a = 125, b, c = -10; char nombre = 'juan perez';

Page 82: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 82

Conversiones entre tipos� CCS nos permite mezclar

diferentes tipos de variables dentro de una misma expresión. Y existen un conjunto de reglas que nos permiten saber de que tipo será el resultado de la misma.

� El CCS convertirá a int cualquier expresión que contenga variables char, short o int. Esta conversión solo tiene efecto mientras se realizan los cálculos. Las variables en sí mismas no cambian su tipo.

� Las reglas de conversión de tipos hacen que el resultado de una operación sea siempre el mismo que el de la variable más larga que intervenga en ella. Sin embargo, podemos forzar a que el resultado sea de un tipo en particular, de la siguiente forma:

� (tipo) valor

donde tipo es el tipo al que queremos que pertenezca valor. El siguiente ejemplo nos aclarará todo esto:

int a = 250, b = 10; long c; c = a * b;

Page 83: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 83

Ejemplo 1

� “Hola Mundo” con un simple led

Page 84: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 84

Esquemático en Proteus VSM:

Page 85: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 85

Podemos definir un puerto en CCS

1. Por medio de su dirección física2. Por medio de una referencia simbólica3. Por medio de comandos del CCS

Page 86: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 86

Mapa de registro de funciones especiales.

Page 87: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 87

Por medio de la dirección física

� Se declaran los registros TRISx y PORTxdefiniendo su posición en la memoria RAM como variables de programa.

� Se accesan de manera individual asignándoles el valor correspondiente

� Se pueden definir también bits individuales de los puertos siguiendo el mismo procedimiento.

Page 88: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 88

Por medio de la dirección física

Ejemplo:

#BYTE TRISB=0xf93;#BYTE TRISC=0xf94;#BYTE PORTB=0xf81;#BYTE PORTC=0xf82;

Bits individuales:

#BIT TB1=TRISB.1;#BIT RB1=PORTB.1;

Hágase referencia en el programa a los puertos o bits individuales previamente definidos como si fuesen estos variables de programa.

Page 89: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 89

Por medio de comandos CCS

� Siempre puede definirse un bit:� #define <simbolo> PIN_<PORT>#pin

� Después ponerlo a un nivel:� output_bit(<simbolo>,[0|1])

� Obtener el nivel:input(<simbolo>)==[1|0]

Nunca olvidar definir como va a usarse cada bit:set_tris_<port>(<estado de los bits>);

Page 90: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 90

Programas ejemplo:(Ens y CCS)

� Programa “hola mundo”� Corrimientos a la derecha y a la izquierda� Rotación de bits a la derecha y a la izquierda� Contador binario de 8 bits(0-255)� Pausas en milisegundos� Detección de nivel con pushboton

Page 91: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 91

Temporizadores

� Los temporizadores son contadores que al activarlos empiezan una cuenta y cuando esta cuenta se acaba se activa el flanco de interrupción por el temporizador, entrando el micro en la rutina de interrupción del temporizador.

� El PIC18F4550 tiene 4 temporizadores, de los cuales 1 de ellos es de 8 bits y el resto de una precisión de 16 bits.

Page 92: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 92

Timer 0

Existe la posibilidad de activar un preescaler en los temporizadores de forma que se pueda “alargar” la duración del temporizador, dependiendo del temporizador puede ser de 2,4,8 e incluso 16.

Page 93: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 93

Timer 1Resolución de los temporizadores:

Timer0 -> Temporizador configurable de 8 ó 16 bits.Timer1 -> Temporizador de 16 bits.Timer2 -> Temporizador de 8 bits.Timer3 -> Temporizador de 16 bits.

Page 94: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 94

Interrupciones

� Las interrupciones son tareas programas que el micro realiza cuando el flanco de interrupción se activa, con lo que el micro deja el programa principal y accede a una parte reservada de la memoria que se llama rutina de interrupción, donde una vez acabada la rutina de interrupción, se baja el flanco de interrupción que lo ha provocado y el micro continua el programa principal donde lo había dejado antes de ir a la rutina de interrupción.

Page 95: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 95

Interrupciones

� Las interrupciones en el micro pueden darse de varios tipos:

� Interrupciones externas.� Interrupciones por desbordamiento del contador.� Interrupciones de EUSART.� Interrupciones USB.� Interrupciones del CAD.� Interrupciones por periféricos externos.

Page 96: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 96

Interrupciones

� El micro puede tener varias interrupciones programadas a la vez, pero hay que tener en cuenta que una vez que el código entra en una rutina de interrupción, el micro no puede acceder a otra interrupción hasta que la rutina de interrupción que se está ejecutando finalice.

� En el caso de que saltasen a la vez 2 o más interrupciones, el micro accedería aleatoriamente a una de ellas, es por ello que suele darse prioridad a las interrupciones si tenemos alguna rutina de interrupción más importantes que otras.

Page 97: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 97

Interrupciones

� El Pic18F4550 cuenta con tres vectores de interrupcion, mismo que apuntan a las rutinas de servicio correspondientes:

� Reset (0000h)� Usuario alta prioridad (0008h)� Usuario baja prioridad (0018h)

Page 98: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 98

Interrupciones� ¿Como se codifican las interrupciones?

;--------------------------------------------------------------------------;vector de interrupción del reset;--------------------------------

ORG 0x0000goto main ;Etiqueta donde inicia la ISR

;--------------------------------------------------------------------------;vector de interrupción de alta prioridad;----------------------------------------

ORG 0X0008goto main ;Etiqueta donde inicia la ISR

;--------------------------------------------------------------------------;vector de interrupción de baja prioridad;----------------------------------------

ORG 0X0018goto main ;Etiqueta donde inicia la ISR

� Las instrucciones GOTO <label>, transfieren el control a una parte de nuestro programa donde reside la ISR

� ISR significa Interrupt ServiceRoutine, es decir rutina de servicio a interrupción y en pocas palabras y lenguaje coloquial no es otra cosa que el código que deberá ejecutar el microcontrolador cuando ocurra el estímulo hardware que desencadena la interrupción, por ejemplo presionar el botón de RESET.

Page 99: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 99

1.5. Interconexión de periféricos

� Botones y Leds� Teclado de matriz � Display led, alfanumérico y gráfico

Page 100: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 100

Manejo de botones y leds� Botones, usados para la introducción

de estimulos como teclados� Pueden mantener una resistencia de

pull-up para dar valores reales� Detectarse cambios de nivel por

medio de programa� Pueden manejarse como arreglos

mediante un solo nibble de registro con estructuras switch.

•Puede declararse una entrada en cualquier momento:

//Definición de simbolos#define LED PIN_B7#define Boton PIN_B6

•También definir si es entrada o salida:

set_tris_b(0x40); //0b0100 0000

•Finalmente usar el botón:

if(input(Boton)==0){

delay_ms(100);while(input(Boton)==0)output_bit(LED,0);lcd_putc('\f');a=0;

}

Page 101: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 101

LCD 16x2El LCD cuenta en sus señales de control de patillas para gobernar el intercambio de datos y comandos entre el microcontrolador y el LCD. Básicamente:

� E (Enable): Después de enviar un dato o comando al LCD un impulso positivo no menor de 450nS valida el bus de datos y hace que el LCD tome en consideración lo que este presente en el.

� R/W’ (Lectura/Escritura’): Si esta en nivel 1 pone el bus de datos en modo de lectura, si es 0 lo pone en modo de escritura, por lo general esta señal permanentemente se hace 0, a menos que el programador vaya a efectuar operaciones de lectura a la memoria del LCD.

� RS (Selección de Registro): Por medio de esta señal, el LCD discrimina si lo que esta presente en el bus de datos es un Comando (RS=0) o un código ASCII para desplegar en el display. (RS=1).

Page 102: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 102

LCD 16x2

� Juego de señales

Page 103: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 103

INTERCONEXIÓN CON EL SISTEMA MINIMO

Page 104: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 104

Inicialización del LCD

� El comando init_lcd() ejecuta el proceso de inicialización del LCD

� La instrucción lcd_putc() envía datos hacia el LCD

� Se puede redirigir la salida de consola por medio de printf reenviandola al LCD mediante printf(lcd_putc,…)

Page 105: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 105

Ejemplo 2

� “Hola mundo” con LCD 16x2 alfanumérico

Page 106: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 106

1.6. Convertidores de datos y operaciones básicas

� El Convertidor Analógico Digital y medición de temperaturas

� El DAC con resistencias� Interconexión de un MC1408-0 y

control de potencia en DC

Page 107: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 107

Convertidor analógico-digital

� Microchip PIC18F4550 contiene 13 convertidores analógicos digitales, los cuales pueden ser seleccionados en modos de resolución de 8 ó 10 bits, para ello antes habrá que configurar las entradas en modo CAD.

Page 108: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 108

Convertidor analógico-digital

Page 109: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 109

Convertidor analógico-digital

� Otra de sus características es que tiene dos patillas de referencia donde podemos dar la tensión de referencia para todas o algunas de las entradas del CAD.

� Otra posibilidad es configurar el tiempo de adquisición de datos, pues tiene un registro habilitado especialmente pare ello ya que en algunas ocasiones hay que esperar al interruptor de muestreo que se cierre y que el condensador (Chold) se descargue para poder hacer otra adquisición.

Page 110: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 110

Convertidor analógico-digital

Se recomienda que la máxima resistencia de entrada (Rs) sea de 2.5K, pues sino la conversión no sería del todo fiable, por lo que habría que hacer una adaptación de impedancias entre las partes.

Page 111: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 111

Modelo de conversión

� El multiplexor.- El ADC es un convertidor de aproximaciones sucesivas de 10 bits, el cual puede realizar la conversión de una de las 8 entradas (o canales) analógicas AN0,...,AN7 multiplexadas por la lógica interna que utiliza como líneas de selección del canal los bits CHS2:CHS0, en donde se coloca el número en binario del canal a convertir.

� Voltajes de Referencia.- Todo convertidor ADC requiere voltajes de referencia que determinan el valor de mínima escala (VREF-) y el de plena escala (VREF+), de manera que la conversión de un valor de voltaje analógico Vin en el rango de VREF- a VREF+ producirá un valor equivalente binario D en el rango de 0 a 2n, donde n es la resolución del convertidor (n = 10).

Page 112: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 112

Page 113: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 113

Inicialización del ADC

� Encabezado

� #include "18f4550.h"� #device adc=10 //Resolucion del ADC 8/10 bits

� Inicialización del ADC y el canal a muestrear� int ADC_ACQT_2TAD=0x1;

� setup_adc_ports( AN0 || VSS_VDD );� setup_adc(ADC_CLOCK_DIV_64 || ADC_ACQT_2TAD );

� Muestreo� set_adc_channel(0);� a= read_adc();� delay_us(10);

Page 114: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 114

Page 115: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 115

Aplicación práctica

� Medición de temperatura� Sensor LM35 grados centígrados� Sensor lineal� Necesidad de un Circuito Acondicionador de Señal

(CAS)� Regulación de la velocidad de muestreo� Tipos de variables en control análogo� Acciones de control según la variable controlada.

Page 116: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 116

El sensor de temperatúra LM35Z� Sensor en grados centígrados� Escala de medición 10mV/°C� Salida lineal� Fuente de alimentación unipolar

positiva

Page 117: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 117

Comportamiento lineal

� Solo temperaturas positivas

� Resistencia única de linealización

� Polarización totalmente positiva

� Sin CAS� Interfaz directa con el

microcontrolador, entrada analógica

Page 118: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 118

¿Porqué usar un CAS?•En la aplicación típica con una fuente unipolar, la salida de voltaje esta autoelevada para permitir la lectura de temperaturas positivas y negativas.

•Rango de medición de (-55) a (+150°C)

•Se usa una resistencia de calibración de 18k

•La salida es la diferencia de tensión entre las terminales de salida del sensor.

Page 119: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 119

Circuito de Acondicionamiento de Señal

24.0

3

1

VOUT 2

U1

LM35

V15V

3

21

84

U2:ALM358

U1(VOUT)

R2

10k

R1

10k

D11N4148

D21N4148

R318k

R410k

R5

10k

U2:A(OP)

R1(1)

LM35Z Comparador deGanancia unitaria

Salida

Page 120: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 120

El amplificador operacional� LM358, OpAmp cuadruple unipolar� Usado para CAS para uC unipolares� Baja señal y bajo voltaje de conversión

Page 121: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 121

Acondicionamiento Lineal de SeñalesEl amplificador diferencial

� (V+) se obtiene de la división de voltajes: (V+) = [R2/(R2 + R1)]V2� Las corrientes IA e IB se calculan usando la ley de Ohm.

� IA = IB y (V+) = (V-)

� Vo se obtiene de una substitución sencilla.

Page 122: Introduccion a los sistemas embebidos

M.C. Andrés Gerardo Fuentes Covarrubias 122

Dudas y preguntas:

[email protected][email protected][email protected]� FACEBOOK: /Andres.FuentesCovarrubias