Академический Документы
Профессиональный Документы
Культура Документы
Descripción Características
Procesador Núcleo RISC, Arq. Harvard, 20 MHz. 5 MIPS
Interrupciones 14 fuentes posibles de interrupción
Reloj 0-20 MHz.
Reset Master Clear, Brown Out, Watchdog
Instrucciones 35 instrucciones de 14 bits
Registros Registros
de propósito de propósito
general general
96 bytes 80 bytes
Registro de estado
7 0
IRP RP1 RP0 TO PD Z DC C
Direccionamiento Reset Flags ALU
DC= Flag de acarreo intermedio, indica en las sumas y restas desbordamiento entre los bits tres y cuatro.
C= Flag de Carry. Si vale 1 después de una suma indica desbordamiento, Si vale 1 después de una resta indica que
NO ha habido desbordamiento.
Set de instrucciones.
Formato de una instrucción:
[etiqueta] mnemónico [operando1[, operando2]] [; comentario]
Instrucciones de transferencia
Flags modif..
CLRF f 0? f Z
CLRW 0? W Z
MOVLW k8 k8 ? W Ninguno
MOVWF f W? f Ninguno
MOVF f, d Si d=0, f ? W. si d=1 f? f Z
Intercambia los dos nibbles (4 bits) de f,
SWAPF f, d Ninguno
dejando el resultado en W o f según d
Instrucciones aritméticas
Flags modif..
ADDLW k8 W+k8 ? W C, DC, Z
ADDWF f, d Si d=0, W+f? W. si d=1 W+f? f C, DC, Z
SUBLW k8 k8-W ? W C, DC, Z
SUBWF f, d Si d=0, W-f? W. si d=1 W-f? f C, DC, Z
Instrucciones lógicas
Flags modif..
ANDLW k8 W? k8 ? W Z
ANDWF f, d Si d=0, W? f? W. si d=1 W? f? f Z
COMF f,d Si d=0, Ca1(f)? W. si d=1 Ca1(f)? f Z
IORLW k8 W? k8 ? W Z
IORWF f, d Si d=0, W? f? W. si d=1 W? f? f Z
XORLW k8 W? k8 ? W Z
XORWF f, d Si d=0, W? f? W. si d=1 W? f? f Z
Incrementos/Decrementos
Flags modif..
DECF f, d Si d=0, f-- ? W. si d=1 f-- ? f Z
INCF f, d Si d=0, f++ ? W. si d=1 f ++? f Z
Microcontroladores Versión 1.26 24/01/2003 pág. 8
Instrucciones de rotación
Flags modif..
Rotación a la izquierda a través de carry de f,
RLF f, d C
dejando el resultado en W o f según d
Rotación a la derecha a través de carry de f,
RRF f, d C
dejando el resultado en W o f según d
Flags modif..
BCF f, b 0 ? bit(b) de f Ninguno
BSF f, b 1 ? bit(b) de f Ninguno
Instrucciones de control
Flags modif..
CLRWDT Poner a 0 el Watch Dog Timer. TO , PD
SLEEP Pasar a modo standby TO , PD
Flags modif..
CALL k11 PC ? pila, bits 4,3 de PCLATH + k11 ? PC Ninguno
GOTO k11 bits 4,3 de PCLATH + k11 ? PC Ninguno
RETFIE pila ? PC, 1 ? GIE GIE
RETLW k8 pila ? PC; k8 ? W Ninguno
RETURN pila ? PC Ninguno
Proceso de ensamblado
RADIX
RADIX hex|dec|oct
CBLOCK
CBLOCK [<expresión>]
<NomVar>[:<incremento>][,<NomVar>[:<incremento>][, ...]]
ENDC
CBLOCK 0x20
Var1, Var2, Var3
ENDC
CBLOCK 0x30
DobleByte:0, DobleByteAlto, DobleByteBajo
Nombre: TAM_NOMBRE
Word1:2, Word2: 2
Var1, Var2, Var3
ENDC
RES
[<NomVar>] RES <Unidades_de_memoria>.
UDATA
ValorActual RES 1
Aux1 RES 1
Aux2 RES 2
Aux3 RES 1
INCLUDE
INCLUDE <Fichero_a_incluir>
Microcontroladores Versión 1.26 24/01/2003 pág. 12
LIST
LIST [<opción>, ... , <Opción>]
ORG
[Etiqueta] ORG <expresión>
ORG 0x20
EQU
<NomVar> EQU 0x20
#DEFINE
#define <nombre> [<cadena_de _caracteres>]
EXTERN
EXTERN <Etiqueta> [, <Etiqueta> ... ]
EXTERN Var1
.......
MOVF Var1, W
GLOBAL
GLOBAL <Etiqueta> [, <Etiqueta> ... ]
UDATA
Var1 RES 1
Var2 RES 2
GLOBAL Var1, Var2
Microcontroladores Versión 1.26 24/01/2003 pág. 13
ORG 0
goto Inicio
ORG 0x10
Inicio
; En primer lugar inicializaremos el puerto C para que configure todas sus líneas
; como salidas. Se supone que a este puerto se han conectado los siete segmentos
;de un display
; Inicializamos las variables
clrf ValorActual
;*******************************
Espera1
;*******************************
; Realiza 256 llamadas a la rutina Espera2
movlw 0xff
movwf Aux2
Bucle1
call Espera2
decfsz Aux2, F
goto Bucle1
return
;*******************************
Espera2
;*******************************
; Recorre 256 veces el bucle Bucle2.
movlw 0xff
movwf Aux3
Bucle2
decfsz Aux3, F
goto Bucle2
return
Microcontroladores Versión 1.26 24/01/2003 pág. 14
;****************************************
hex27seg
;****************************************
; Subrutina hex27seg, que recibe un valor hexadecimal de un dígito en W,
; y devuelve en el mismo registro el valor correspondiente al de un
; display de 7 segmentos.
; A continuación se muestra el nombre de cada segmento en un Display
; -----
; | a |
; f| |b
; | |
; -----
; | g |
; e| |c
; | |
; -----
; d
; Se asignará el bit 7 al segmento 'a', el 6 al 'b', ... , el 1 al 'g'
; El bit 0 queda sin asignar. Se puede usar para el punto digital del display
; Los segmentos a iluminar para cada dígito son:
; Bits 7,6,5,4,3,2,1,0 Valor binario
; ==== =============== =============
; 0 = a,b,c,d,e,f B'11111100'
; 1 = b,c B'01100000'
; 2 = a,b, d,e, g B'11011010'
; 3 = a,b,c,d, g B'11110010'
; 4 = b,c, f,g B'01100110'
; 5 = a, c,d, f,g B'10110110'
; 6 = a, c,d,e,f,g B'10111110'
; 7 = a,b,c B'11100000'
; 8 = a,b,c,d,e,f,g B'11111110'
; 9 = a,b,c, f,g B'11100110'
; A = a,b,c, e,f,g B'11101110'
; B = c,d,e,f,g B'00111110'
; C = a, d,e,f B'10011100'
; D = b,c,d,e, g B'01111010'
; E = a, d,e,f,g B'10011110'
; F = a, e,f,g B'10001110'
ANDLW B'00001111'
ADDWF PCL, F
retlw B'11111100'
retlw B'01100000'
retlw B'11011010'
retlw B'11110010'
retlw B'01100110'
retlw B'10110110'
retlw B'10111110'
retlw B'11100000'
retlw B'11111110'
retlw B'11100110'
retlw B'11101110'
retlw B'00111110'
retlw B'10011100'
retlw B'01111010'
retlw B'10011110'
retlw B'10001110'
end
Microcontroladores Versión 1.26 24/01/2003 pág. 15
Inicio
; En primer lugar inicializaremos el puerto C para que configure todas sus líneas
; como salidas. Se supone que a este puerto se han conectado los siete segmentos
; de un display
Bucle
BANKSEL ValorActual
movf ValorActual, W ; Muevo ValorActual a W
call hex27seg ; Llamamos a rutina de conversión
BANKSEL PORTC
movwf PORTC ; ponemos resultado en PORTC (el display)
BANKSEL ValorActual
incf ValorActual, F ; Incrementamos el valor para la siguiente
btfsc ValorActual, 4 ; iteración, y si se activa el bit 4, hemos
clrf ValorActual ; llegado a 10H, y reseteamos la variable.
movlw 8 ; Inicializamos Aux1 a 8 para conseguir
movwf Aux1 ; una espera algo mayor que 1 segundo.
Espera
call Espera1 ; Rutina con un retardo de 0,13 seg. Aprox.
decfsz Aux1, F
goto Espera
goto Bucle ; Retornar al bucle principal
Microcontroladores Versión 1.26 24/01/2003 pág. 16
;*******************************
Espera1
;*******************************
; Realiza 256 llamadas a la rutina Espera2
movlw 0xFF
movwf Aux2
Bucle1
call Espera2
decfsz Aux2, F
goto Bucle1
return
;*******************************
Espera2
;*******************************
; Recorre 256 veces el bucle Bucle2.
movlw 0xFF
movwf Aux3
Bucle2
decfsz Aux3, F
goto Bucle2
return
end
Microcontroladores Versión 1.26 24/01/2003 pág. 17
Módulo Display.ASM
; Módulo Display.asm. Presenta la subrutina hex27seg, que recibe
; un valor hexadecimal de un dígito, y devuelve el valor correspondiente
; al de un display de 7 segmentos.
; A continuación se muestra el nombre de cada segmento en un Display
; -----
; | a |
; f| |b
; | |
; -----
; | g |
; e| |c
; | |
; -----
; d
; Se asignará el bit 7 al segmento 'a', el 6 al 'b', ... , el 1 al 'g'
; El bit 0 queda sin asignar. Se puede usar para el punto digital del display
; Los segmentos a iluminar para cada dígito son:
; Bits 7,6,5,4,3,2,1,0 Valor binario
; ==== =============== =============
; 0 = a,b,c,d,e,f B'11111100'
; 1 = b,c B'01100000'
; 2 = a,b, d,e, g B'11011010'
; 3 = a,b,c,d, g B'11110010'
; 4 = b,c, f,g B'01100110'
; 5 = a, c,d, f,g B'10110110'
; 6 = a, c,d,e,f,g B'10111110'
; 7 = a,b,c B'11100000'
; 8 = a,b,c,d,e,f,g B'11111110'
; 9 = a,b,c, f,g B'11100110'
; A = a,b,c, e,f,g B'11101110'
; B = c,d,e,f,g B'00111110'
; C = a, d,e,f B'10011100'
; D = b,c,d,e, g B'01111010'
; E = a, d,e,f,g B'10011110'
; F = a, e,f,g B'10001110'
W equ 0
F EQU 1
PCL EQU 2
CODE
hex27seg
global hex27seg
ANDLW B'00001111'
ADDWF PCL, F
retlw B'11111100'
retlw B'01100000'
retlw B'11011010'
retlw B'11110010'
retlw B'01100110'
retlw B'10110110'
retlw B'10111110'
retlw B'11100000'
retlw B'11111110'
retlw B'11100110'
retlw B'11101110'
retlw B'00111110'
retlw B'10011100'
retlw B'01111010'
retlw B'10011110'
retlw B'10001110'
end
Microcontroladores Versión 1.26 24/01/2003 pág. 18
Interrupciones.
Microcontroladores Versión 1.26 24/01/2003 pág. 19
La rutina debe:
1º Salvar en algún registro reservado al efecto el contenido del registro de Status y el acumulador.
2º Haciendo polling se detecta cual ha sido la fuente de la interrupción.
3º Ejecutar la rutina de atención a la interrupción.
4º Desactivar el flag correspondiente a esa interrupción
5º Ejecutar la instrucción RETFIE de retorno de interrupción y que reactiva GIE.
Microcontroladores Versión 1.26 24/01/2003 pág. 20
main
Reset.
Coloca a la CPU en un estado conocido.
Causas:
? Power On Reset POR.
? MCLR en estado normal.
? MCLR en estado SLEEP.
? WDT en estado normal.
? Brown-out Reset.
Power On Reset
PCON STATUS
Significado
POR BOR TO PD
0 X 1 1 Power-on Reset
0 X 0 X Estado incorrecto
0 X X 0 Estado incorrecto
1 0 1 1 Brown-out Reset
1 1 0 1 WDT Reset
1 1 0 0 WDT Wake-up
1 1 u u
MCLR reset during normal operation
1 1 1 0
MCLR reset during SLEEP
Tabla 8 Bits indicativos de la última reinicialización
Brown-out reset: Se produce al bajar la tensión de alimentación por debajo de un umbral (~4V.)
WDT:
? Timer que genera un reset al desbordarse.
? Usa una fuente de reloj interna.
? Puede definirse un valor para un postscaler, que permite definir diferentes tiempos.
? Instrucciones CLRWDT y SLEEP.
Existen tablas indicando como se inicializan los registros de la RAM con un reset, pero se distinguen básicamente
tres situaciones:
Reset generado por POR / BOR : Se inicializan prácticamente todos los registros.
Reset generado por MCLR /WDT: Se inicializan los registros de algunos periféricos y algunos básicos
como el contador de programa y parte del registro de flags.
Reset generado por MCLR /WDT mientras se estaba en modo SLEEP: Prácticamente ningún registro
cambia su contenido.
Modo Sleep
Detiene a la CPU. Principal ventaja: el consumo de la CPU baja a niveles muy bajos.
Se despierta mediante:
? Activación de MCLR
? Activacón de INT, RB4..RB7 y algunas interrupciones asociadas a periféricos internos.
Reloj.
Existen cuatro fuentes posibles para el reloj de la CPU:
Bits de Configuración.
A partir de la dirección 0x1FFF de la memoria de programa, se dispone de 8 palabras extras. Estas direcciones no
son legibles desde el programa o la aplicación, pero si pueden ser leídas en el aparato de grabación.
Las 7 primeras words (0x2000 a 0x2006) se denominan ID Location, sirve para almacenar un nº de serie, o un nº de
versión de software instalada, etc.
La siguiente word (0x2007) , es la palabra de configuración, sus bits tiene los siguiente significados:
Bits 13-12 y 5-4: Están relacionados con varios niveles de protección de nuestro SW.
Bit 11: DEBUG. Si vale 0 se desactiva el modo ICD, y RB6 y RB/ quedan como líneas I/O estándar.
Bit 9: WRT. Permite o no, escribir en la memoria Flash de programa.
Bit 8. CPD Protección de los datos de la EEPROM.
Bit 7: LVP. Permite la grabación a bajo voltaje.
Bit 6: Habilita el control del Brown-out.
Bit 3. PWRT . Permite activar o desactivar el Power-up Timer.
Bit 2: WDTE. Permite activar o desactivar el Watch Dog.
Bit 1- 0. Selección de tipo de generador de reloj:
__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON &
_LVP_ON & _DEBUG_OFF & _CPD_OFF
Periféricos.
? Puertos programables de E/S
? Timers/Counters
? Puertos de captura/comparación de datos
? Moduladores de ancho de pulso (PWM)
? Conversor Analógico/Digital de 10 bits
? Puerto serie síncrono
? USART
? Parallel Slave Port
Las líneas de E/S están agrupadas en 5 puertos: A (6 bits), B (8 bits), C (8 bits), D (8 bits) y E (3 bits).
Cada puerto de E/S tiene asociados dos registros TRISX y PORTX. El primer registro dispone de un bit por cada
línea del puerto, y controlará si funciona como entrada (Input, 1) o como salida (Output, 0).
El segundo registro nos permite acceder al puerto. Con una escritura se modifican los bits configurados como salida,
y con una lectura accedemos tanto a los de entrada como a los de salida. Si se realiza una escritura y de forma
inmediata una lectura, puede que la salida no haya alcanzado el nivel adecuado generando incoherencias.
El puerto A tiene todas sus salidas Totem pole, excepto la RA4 que es del tipo Open collector (open drain de forma
más exacta).
El puerto B dispone de resistencias Pull-up que pueden activarse por software cuando funcionan como entradas. La
activación se realiza con el bit RBPU (bit 7) del registro OPTION_REG (direcciones 81h y 181h).
Además la línea RB0 puede funcionar como entrada de petición de interrupción. Para ello se debe activar el bit
INTE (bit 4) del registro INTCON (direcciones 0Bh, 8Bh, 10Bh y 18Bh). Con el bit INTDEG (bit 6) de
OPTION_REG (direcciones 81h y 181h) se selecciona si se activa la interrupción con flanco de subida (1) o de
bajada (0).
Los puertos A y B cuando se configuran como entradas, trabaja con niveles TTL (salvo la línea RA4) y los puertos
C, D y E como Schmitt Trigger (también RA4).
Timers
Disponemos de 3 timers numerados del 0 al 2 y del Watch Dog Timer.
Timer0
Timer de 8 bits Puede ser leído y escrito a través del registro TMR0 (direcciones 1 y 101h)
La entrada de reloj del temporizador puede seleccionarse que sea interna o externa.
Interna: Frecuencia de reloj CPU dividida por 4.
Externa: Entrada RA4/T0CKI
Bit T0CS (bit 5) del OPTION_REG (direcciones 81h y 181h). 0 = reloj interno, 1 = reloj externo. Si se usa un reloj
externo, su frecuencia como máximo será la mitad de la frecuencia de la entrada de reloj de la CPU.
Si se selecciona el reloj externo, se puede utilizar como contador de pulsos en dicha entrada. En este caso se puede
seleccionar si se activa la entrada por flanco de subida o de bajada: T0SE (bit 5) del OPTION_REG (direcciones
81h y 181h). 0 = flanco de subida, 1 = flanco de bajada.
A este timer se le puede asociar un circuito divisor de la frecuencia de la entrada de reloj. Se le denomina Prescaler.
Este circuito puede ser utilizado también por el Watch dog. En cualquier caso debe ser asignado a uno u otro. esto es
seleccionado por el bit PSA (bit 3) del OPTION_REG (direcciones 81h y 181h). 0 = Timer 0, 1 = Watch dog.
También es posible seleccionar el factor de división. Se dispone de tres bits: PS2, PS1 y PS0, (bits 2, 1 y 0) del
OPTION_REG (direcciones 81h y 181h) que introducen los factores de división que se muestran en la siguiente
tabla:
Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupción cada vez
que se desborda el Timer0 cuando pasa de FFH a 0. Son los bits T0IE y T0IF del registro INTCON.
Timer1
Timer de 16 bits Puede ser leído y escrito a través de los registros TMR1H y TMR1L.
La entrada de reloj del temporizador puede seleccionarse que sea interna o externa.
Interna: Frecuencia de reloj CPU dividida por 4.
Externa: Entradas RC1/T1OSICCP2 y RC0/T1OSO/T1CKI
Bit TMR1CS (T1CON<1>). 0 = reloj interno, 1 = reloj externo. Si se usa un reloj externo, su frecuencia como
máximo será la mitad de la frecuencia de la entrada de reloj de la CPU.
También con reloj externo existen dos alternativas, colocar un cristal como fuente de reloj (hasta 200 KHz) o utilizar
una señal digital. En el segundo caso solo se utiliza la línea de entrada RC0/T1OSO/T1CKI. Para seleccionar una
alternativa u otra, se dispone del bit T1OSCEN (T1CON<3>). Si vale 1 se usará el cristal activando el oscilador
interno, si vale 0 se usan pulsos generados externamente. En este caso puede funcionar como contador de pulsos.
Además se dispone de un bit que permite activar y desactivar el Timer: TMR1ON (T1CON<0>)
El timer dispone de un prescaler controlado por los bits T1CKPS1 y T1CKPS0 (T1CON<5:4>) cuyos factores de
división que se muestran en la siguiente tabla:
Bits Timer1
T1CKPS
00 1:1
01 1:2
10 1:4
11 1:8
Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupción cada vez
que se desborda el Timer1 cuando pasa de FFFFH a 0. Son los bits TMR1IE y TMR1IF necesitando además que
estén activados los bits que habilitan las interrupciones de los periféricos (PEIE) y el general (GIE).
Microcontroladores Versión 1.26 24/01/2003 pág. 28
Timer2
Timer de 8 bits Puede ser leído y escrito a través del registro TMR2.
La entrada de reloj del temporizador es interna, concretamente la frecuencia de reloj CPU dividida por 4.
El timer dispone de un prescaler controlado por los bits T2CKPS1 y T2CKPS0 (T2CON<1:0>) cuyos factores de
división que se muestran en la siguiente tabla:
Bits Timer2
T2CKPS
00 1:1
01 1:4
1x 1:16
La salida del contador puede ser conectada a un postscaler, que dispone de 4 bits de control T2OUTPS3:T2OUTPS0
cuya salida pasa a controlar el flag de interrupción asociado a este Timer. Los factores de división se muestran en la
siguiente tabla:
Bits Salida de
T2OUTPS interrupción
0000 1:1
0001 1:2
0010 1:3
. .
. .
. .
1101 1:14
1110 1:15
1111 1:16
Finalmente existen los dos bits mencionados en las interrupciones que permiten generar una interrupción cada vez
que se desborda el Timer2 cuando pasa de FFH a 0. Son los bits TMR2IE y TMR2IF necesitando además que estén
activados los bits que habilitan las interrupciones de los periféricos (PEIE) y el general (GIE).
Microcontroladores Versión 1.26 24/01/2003 pág. 29
CAPTURE/COMPARE/PWM
Módulos de captura, comparación y modulación por ancho de pulso.
Existen dos módulos de este tipo: CCP1 y CCP2 cuyo funcionamiento es prácticamente idéntico diferenciándose en
que el CCP2 podrá comenzar una conversión en el módulo A/D.
Modo captura. En este modo, el módulo CCPx captura el contenido del Timer1 cuando se produce un evento. Los
eventos posibles, se refieren a los cambios en las entradas RC1/T1OSI/CCP2 ó RC2/CCP1 y se distinguen las
siguientes situaciones:
? Un flanco de bajada.
? Un flanco de subida.
? Cada 4 flancos de subida.
? Cada 16 flancos de subida.
En este modo se pueden calcular intervalos de tiempo entre dos sucesos de forma muy exacta. Si se han activado las
interrupciones, se generará una por cada captura realizada.
Modo comparación. En este modo, el módulo CCPx comparará el contenido de los registros de 16 bits del módulo
con el Timer1, de tal manera que cuando se produzca una coincidencia, se producirá la interrupción correspondiente
cuando las interrupciones estén activadas y podrá hacerse que las líneas asociadas RC1/T1OSI/CCP2 ó RC2/CCP1
se pongan a nivel alto, bajo o no cambien. Finalmente resetearán el Timer1 y en el caso del CCP2 además se lanzará
una conversión A/D si el conversor está activado (permite hacer muestreos periódicos)
Modo PWM. En este caso se produce una salida PWM en el puerto CCPx, con una resolución de 10 bits.
Una señal PWM señal con onda rectangular de frecuencia fija, en la que se puede variar el tiempo en el que la
misma permanece a 0 o a 1. Sustituye en la mayoría de los casos a un conversor D/A. La frecuencia de la señal se
establece por medio del Timer2 y el tiempo que permanece a 1 (Duty cycle) se controla por medio de los registros
del CCP que se esté utilizando.
Microcontroladores Versión 1.26 24/01/2003 pág. 30
SPI: Serial Peripheral Interface. Este interface suele ser utilizado para comunicar dos dispositivos entre si, uno se
configura como master y el otro como esclavo. En este interface se definen las líneas:
Permite velocidades de hasta 8 Mbps con reloj a 20 MHz. El master inicia las transferencias activando la línea SCK,
el esclavo recibe y transmite información cuando detecta que la línea SCK se activa. Cada vez que recibe un byte, en
modo esclavo, se puede activar la interrupción correspondiente.
I2C: Inter-Integrated Circuit. Permite la interconexión de múltiples dispositivos formando un bus. A cada dispositivo
se le asigna una dirección y las tramas que se envían por el bus llevan direccionamiento para identificar los actores
de la misma. En general se configura un dispositivo como master y el resto como esclavos, no obstante, se permiten
buses multi-master, en este caso se dispone de mecanismos de detección de colisiones y gestión (arbitration) del
Bus. se pueden alcanzar velocidades de 1 Mbps, y conectar hasta 128 o 1.024 dispositivos en función del tipo de
direccionamiento utilizado..
Analog/Digital Converter.
Este módulo permite la conexión de entradas analógicas para convertirlas en valores discretos obteniendo su valor.
Aunque se dispone de un solo conversor, el microcontrolador dispone de un multiplexor analógico que permite la
conexión de hasta ocho entradas analógicas.
Microcontroladores Versión 1.26 24/01/2003 pág. 31
PICMIN
Pines en el 16F84
Microcontroladores Versión 1.26 24/01/2003 pág. 34
Electrónica
Componentes electrónicos
Resistencias
Pasivos Condensadores
Inductancias.
Componentes Diodos
electrónicos Transistores
Triacs
........ Reguladores de tensión
Activos Analógicos Amplificadores operacionales
..........
Circuitos
integrados Puertas
Multiplexores
Digitales Memoria
Microcontroladores
........
Fuente de alimentación
Esquema básico:
Transformador:
Microcontroladores Versión 1.26 24/01/2003 pág. 35
Rectificador:
Media onda:
Filtro:
Se construye con un condensador de alta capacidad entre la salida del rectificador y masa. Se recomiendan
capacidades de entre 2.000 y 5.000 ? F por amperio que pueda proporcionar la F.A.
A la salida del regulador se suelo poner otro condensador de filtro pero de una capacidad inferior (entre 100 nF. y 10
? F.)
Microcontroladores Versión 1.26 24/01/2003 pág. 36
Regulador:
La forma más simple utilizar reguladores integrados tales como la familia 78xx y 79xx.
Cortocircuitables.
Con protección térmica y contra sobrecargas.
Corrientes de hasta 1 A.
Dispositivos E/S
Interruptores/pulsadores:
Suelen utilizarse resistencias de Pull-up o Pull-down. Se debe disponer de un sistema de supresión de rebotes que
puede ser HW. (biestable, red RC, ...) o SW.
Teclados
También necesitan resistencias pull-up o Pull-down. Pueden conectarse de dos formas:
Un ejemplo de dispositivo es el CNY70, que contiene un emisor y un receptor de luz. Permite detectar por reflexión
de la luz, si está en la proximidad de un objeto de color claro.
Microcontroladores Versión 1.26 24/01/2003 pág. 38
Dispositivos de salida:
Diodos LED
Funcionan a 1,8 V. 10-20 mA. Tienen polaridad
Displays 7 segmentos
Varios diodos LED agrupados con el ánodo o el cátodo común.
Microcontroladores Versión 1.26 24/01/2003 pág. 39
Displays LCD
Microcontroladores Versión 1.26 24/01/2003 pág. 40
Microcontroladores Versión 1.26 24/01/2003 pág. 41
Microcontroladores Versión 1.26 24/01/2003 pág. 42
Microcontroladores Versión 1.26 24/01/2003 pág. 43
Transistores:
Existen enormes tratados sobre las diferentes maneras de conectar los transistores, y las diferentes formas en las que
pueden trabajar. Nosotros nos vamos a centrar en una forma de conectarlos (Emisor común) y dos zonas de trabajo
(corte y saturación). Trabajando en estas condiciones, son muy pocas las cosas que debemos tener en cuenta para
decidir que transistores utilizar y que componentes conectar asociados a los mismos.
Seleccionar un transistor: Los elementos a tener en cuenta son Ic, hFE y VCEO.
Ic: Define la máxima corriente que se puede controlar a partir de ese transistor. Será algo mayor que la corriente
máxima del circuito que vamos a conectar.
hFE: Define la ganancia. hFE = IC/IB. A partir de la ganancia, obtendremos la corriente que circulará por la Base, que
es la que suministraremos para activar el transistor.
VCEO Define la máxima diferencia de potencial entre colector y emisor, es decir la máxima tensión de trabajo.
Esquema básico:
IB es la corriente que suministrará nuestro circuito de control. Por ejemplo la salida máxima de un pin de I/O de un
PIC es de 25 mA: aunque no es conveniente llegar a las corrientes máximas.
La carga es el dispositivo que queremos controlar con el transistor: Un relé, un motor, una lámpara, ... Es importante
conocer la corriente máxima que circulará por el dispositivo, para seleccionar un transistor adecuado.
Transistores comerciales:
Existen miles de referencias diferentes. Mostraremos aquí solamente 4 referencias de transistores muy conocidos.
Microcontroladores Versión 1.26 24/01/2003 pág. 44
BC107
Es un transistor de baja potencia. Su IC es de 100 mA, su hFE es 110 y VCEO es de 45 V. El transistor
complementario (mismas características salvo que es PNP, es el BC177).
Es muy adecuado para pequeñas cargas, tales como: el terminal común de un display de 7 segmentos, un relé, ...
Por ejemplo supongamos que se debe activar un relé de 12 V. 80 mA. desde un PIC. El circuito sería:
BD 139
Es un transistor de media potencia. Su IC es de 2 A, su hFE varía entre 25 y 60 en función de IC y VCEO es de 80 V.
El transistor complementario (mismas características salvo que es PNP, es el BD140).
Microcontroladores Versión 1.26 24/01/2003 pág. 45
TIP122
Es un transistor de potencia darlington (dos transistores conevtados en cascada para aumentar la ganancia). Su IC es
de 5 A, su hFE es de 1.000 y VCEO es de 100 V. El transistor complementario (mismas características salvo que es
PNP, es el TIP 127).
Su elevada ganancia permite conectar la base al microcontrolador, y el colector a circuitos de elevada potencia, sin
ninguna etapa previa.
2N3055
Es un transistor de potencia. Su IC es de 15 A, su hFE varía entre 2 y 100 en función de IC y VCEO es de 60 V. El
transistor complementario (mismas características salvo que es PNP, es el MJ2955).
Microcontroladores Versión 1.26 24/01/2003 pág. 46
TRIACS
Circuitos que pueden ser clasificados como relés para corriente alterna de estado sólido. Permiten conducir o
bloquear el paso de la corriente alterna.
Microcontroladores Versión 1.26 24/01/2003 pág. 47
MOTORES
Motores CC
S1 S3
VCC
MOTOR
GND
S2 S4
Circuito L293
VCC TTL
EN1 1 16 Vcc TTL 1 L293B
IN1 IN4 ON/OFF 1 EN1
VCC
CONTROL 1 IN1 IN4 CONTROL4
OUT1 OUT4
OUT1 OUT4
MOTOR 1 MOTOR 2
GND GND
GND GND
GND GND GND
GND
OUT2 OUT3
OUT2 OUT3
IN2 IN3 CONTROL2 CONTROL3
IN2 IN3
v+ motor 8 9 EN2 ON/OFF 2
v+ motor EN2
V+ MOTOR
VCC TTL
1 L293B
ON/OFF 1 EN1
VCC
DIR1 IN1 IN4 DIR2
OUT1 OUT4
MOTOR 1 MOTOR 2
GND GND
GND
GND
OUT2 OUT3
IN2 IN3
ON/OFF 2
v+ motor EN2
V+ MOTOR
Servocontrol
Discos/codificadores
Motores Unipolares
Microcontroladores Versión 1.26 24/01/2003 pág. 49
Motor Bipolar
Motor Unipolar
A B C D S1 S2 S3 S4 CA CB CC CD
1 - - ON OFF ON OFF 1 0 1 0
2 - - OFF ON ON OFF 0 1 1 0
3 - - OFF ON OFF ON 0 1 0 1
4 - - ON OFF OFF ON 1 0 0 1
Motor bipolar
A B C D S1 S2 S3 S4 S5 S6 S7 S8 CA CB CC CD
1 - + - + OFF ON ON OFF OFF ON ON OFF 1 0 1 0
2 + - - + ON OFF OFF ON OFF ON ON OFF 0 1 1 0
3 + - + - ON OFF OFF ON ON OFF OFF ON 0 1 0 1
4 - + + - OFF ON ON OFF ON OFF OFF ON 1 0 0 1
Microcontroladores Versión 1.26 24/01/2003 pág. 50
N.C 1 16 N.C
B D
Reset Reset 2 15 Clock
Sentido Sentido 3 14 VCC 1
RX 4 13 VCC 2
GND GND 1 5 12 GND 2
A 6 11 D
A C
N.C 7 10 N.C
B 8 9 C