Professional Documents
Culture Documents
Escuela de Telecomunicaciones
EL MICROCONTROLADOR PIC16F84
y su uso en las comunicaciones
TESIS
PARA OBTENER EL GRADO DE
INGENIERO EN COMUNICACIONES Y ELECTRONICA
PRESENTAN
DIRECTOR DE TESIS
DR. Gerald Medina
1
INTRODUCCIÓN AL MICROCONTROLADOR
¿Qué es un microcontrolador?
Un poco de historia
2
Diferencias entre microprocesador y microcontrolador
3
el controlador en el propio dispositivo al que gobierna. En este caso el controlador
recibe el nombre de controlador empotrado (embedded controller).
Estas ventajas son reconocidas inmediatamente para aquellas personas que han
trabajado con los microprocesadores y después pasaron a trabajar con los
microcontroladores. Estas son las diferencias más importantes:
4
Los microcontroladores hoy día
Cada vez existen más productos que incorporan un microcontrolador con el fin de
aumentar sustancialmente sus prestaciones, reducir su tamaño y coste, mejorar su
fiabilidad y disminuir el consumo.
5
Objetivo.
En el capitulo III y habiendo descrito los recursos con que cuenta el PIC16F84 en
el capitulo I, son presentadas las 35 instrucciones del set RISC de esta familia,
dando algunos ejemplo de uso en ciertos casos. Se hablará también de cómo
6
programar estos dispositivos y varios modelos de programadores existentes, así
mismo se hablará del software empleado en su programación y de otros paquetes
extras que facilitan el trabajo.
7
Planteamiento del Problema.
8
** INDICE **
INTRODUCCION
CAPITULO 1.- CONCEPTOS BASICOS Y FUNDAMENTOS GENERALES 01
1.1.- LA COMPUTADORA 02
1.2.- EL PROCESADOR 04
1.3.- LAS INSTRUCCIONES 07
1.4.- DESARROLLO DE LA COMPUTACION 09
1.5.- CLASIFICACION DE LAS COMPUTADORAS 13
CAPITULO 2.- LOS MICROCONTROLADORES Y EL PIC 16F84. 15
2.1.- DEFINICIONES Y APLICACIONES DE LOS MICROCONTROLADORES. 15
2.2.- MICROCONTROLADORES MAS COMUNES. 17
2.3.- COMPETIDORES DIRECTOS DEL PIC Y SUS PRINCIPALES RECURSOS. 18
2.4.- DESCRIPCION DE LOS PINES. 19
2.5.- DESCRIPCION INTERNA. 23
2.6.- TIPOS DE ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES. 35
2.7.- CONSIDERACIONES MAS COMUNES PARA EL DISEÑO DE LA ARQUITECTURA
36
DEL CONJUNTO DE INSTRUCCIONES.
2.8.- CLASIFICACION DE ISAs CON REGISTRO DE PROPOSITO GENERAL. 39
2.9.- REDUCED INSTRUCTION SET COMPUTER (RISC). 40
2.10.- CONSIDERACIONES PARA EL DISEÑO DEL CONJUNTO DE INSTRUCCIONES RISC. 43
2.11.- DISEÑO DEL CONJUNTO DE INSTRUCCIONES 44
CAPITULO 3.- PROGRAMADORES 57
CAPITULO 4.- DESARROLLO DE CIRCUITOS 70
4.1.- DESARROLLO DE UN DETECTOR DE RUIDO DE ALTA FRECUENCIA DE BAJO 70
COSTO BASADO EN EL MICROCONTROLADOR PIC16F84
4.2.- DESARROLLO DE UN CIRCUITO PARA PWM 77
4.3.- PROYECTOS CON EL PIC16F84 82
BIBLIOGRAFIA 96
CAPITULO I.- CONCEPTOS BASICOS Y FUNDAMENTOS GENERALES
9
Introducción.
10
Tanto el cálculo humano o artificial, contienen los siguientes componentes:
Unidad de
Procesamiento
Central
Entrada
Salida
Memoria
Principal
(a) (b)
Figura 1-1. Componentes principales (a) Cómputo humano (b) Cómputo de una máquina.
1.1 LA COMPUTADORA
11
Figura 1-2. Arquitectura Von Neumann.
12
1.2 EL PROCESADOR
El manejo eficiente del flujo de instrucciones y datos es una tarea básica que
debe desarrollar el procesador.
13
Elementos que lo integran
Unidad de control.
14
La implementación de un “datapath” se crea en base a una tecnología de
“hardware” específica, la cuál es la que dicta la duración del ciclo de reloj, y esta
determinado por los circuitos más lentos que operan durante un periodo de ciclo
de reloj, por lo que es el procesador quien lo determina. Además de que ocupa la
mayor parte de los transistores y del área del procesador.
Unidad de Control
Analiza e interpreta los bits de los campos que componen a una instrucción,
posteriormente genera las señales de control adecuadas para especificar al
Camino de datos la operación que debe realizar, los operandos de entrada y el
lugar donde debe guardar el resultado. Además determina la dirección de la
siguiente instrucción a ejecutar.
15
un conjunto de microprogramas diseñadas para implementar o emular el
funcionamiento de un conjunto de instrucciones en particular. Cada instrucción
origina la búsqueda del microprograma correspondiente. La extracción de la
información contenida en los microprogramas es muy similar a la búsqueda y
ejecución de un programa almacenado en memoria principal. Este tipo de control
es más sistemático al organizar las señales de control en palabras con formato
(microinstrucciones), los cambios en el diseño se pueden realizar fácilmente al
alterar el contenido de la memoria de control. El inconveniente es que son muy
costosas y tienden a ser lentas ya que se debe emplear tiempo extra en la
búsqueda de la microinstrucción dentro de la memoria de control.
(a) (b)
16
Figura 1-5. Campos de una instrucción.
Tanto las unidades de control cableadas como microprogramadas son
estructuradas como instrucciones o microinstrucciones pipelines como una
manera de incrementar la ejecución. El Pipeline es un método de bajo costo para
aumentar el rendimiento del procesador al descomponer su operación en una
secuencia de pasos relativamente independientes. Los procesadores actuales
usan el pipeline para incrementar su porcentaje efectivo de instrucciones
ejecutadas.
3° Etapa. Ejecución
17
4° Etapa. Acceso a memoria
1° Etapa.
18
La mayor actividad se realiza en la Unidad de Control y la Memoria Principal.
La unidad de control envía a la memoria la dirección de la instrucción, recibe su
código, lo interpreta y en fase de ejecución, selecciona la operación en la ALU,
busca los operandos y almacena los resultados. Es un ir y venir de datos e
instrucciones entre la memoria y la unidad de control. Así también las entradas y
salidas que proporcionan y reciben datos.
2° Etapa
19
Figura 1-7. Arquitectura de una computadora CISC.
3° Etapa
20
Las computadoras de memoria caché, al momento de decodificar
instrucciones complejas, hacen que el procesador se tarde más en realizar la
operación que en acceder a la memoria, es por esto que el interés en las
computadoras CISC ha ido disminuyendo.
4° Etapa
21
Figura 1-9. Arquitectura básica de computadoras RISC.
22
CARACTERÍS- G E N E R A C I O N E S
Válvulas
Tecnología Transistores CI SSI-MMI CI LSI CI VLSI
electrónicas
BURROUGHS
Fabricante IBM-UNIVAC DIGITAL APPLE DEC-INTEL
NCR, CDC
Fujitsu
PDP-8 Alpha21164
Máquina IBM 701 CDC 6600 M382
PDP-11 P6
Cray X-MP
Estructurados
Monitor de SO de
Sistema bajo
Muy rudimentario encadenamiento. tiempo Multiprocesamiento
Operativo multiprogramació
Muy primarios compartido
n y multiproceso
Tubos de William. Memorias en CI
Tipo de Núcleos de Memorias
Tambores y cintas Y Caché a varios niveles
Memoría Ferrita Virtuales
magnéticas Memorias Caché
FORTRAM Alto Nivel.
COBOL BASIC FORTRAN Lenguaje natural
Lenguaje Máquina
ALGOL PASCAL extendido “C”
PL1
Aportacion Conexión de los Procesador.
Registros CI de alta escala de
es Canales CI en placas de Memoria
Indexados integración
Hardware circuito impreso Integrada
Mejoras en
Aportacion Gran avance en Extensión de
ensambladores y Fuerte impulso de Intento de sustituir
es los sistemas lenguajes de
macro- FORTAN por hardware
Software operativos alto nivel
ensambladores
Computadora Micro
Producto Computadora Mini computadora Multiprocesador
comercial computadora
23
CAPITULO 2.- LOS MICROCONTROLADORES Y EL PIC 16F84
Introducción.
24
Pueden encontrarse en casi cualquier dispositivo eléctrico como lavadoras, horno
de microondas, teléfonos, etc.
25
2.2.- Microcontroladores más comunes.
Los microcontroladores más comunes en uso son:
AVR Atmel
Hitachi 68HC12
H8 68HC16
Holtek 32-bit
HT8 683xx
Intel NEC
8-bit 78K
8XC42 ST
MCS51 ST 62
8xC251 ST 7
16-bit Texas Instruments
MCS96 TMS370
MXS296 Zilog
National Semiconductor Z8
COP8 Z86E02
Microchip Genérico
12-bit instruction PIC
14-bit instruction PIC
PIC16F84
16-bit instruction PIC
Motorola
8-bit
68HC05
68HC08
68HC11
16 Bit
26
Algunas arquitecturas de microcontrolador están disponibles por tal cantidad
de vendedores y en tantas variedades, que podrían tener su propia categoría.
Entre ellos encontramos, principalmente, las variantes de 8051 y Z80.
AT90S2313 (AVR )
27
2.4.- Descripción de los pines
Como mínimo este terminal debe estar a 0 dos ciclos de máquina para que se
procese el RESET.
Vcc debe estar comprendido entre 2,7 y 6V. Usualmente la alimentación esta en
5V estabilizados
28
Pin 2 PD0 (RX). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al BIT 0 del
puerto D, además puede tener la función especial de recepción de datos serie
para la UART.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 1 del
puerto D, también puede tener la función especial de transmisión de datos serie
desde la UART.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 2 del
puerto D, además puede usarse para la generación externa de interrupción.
29
Pin 7 PD3 (INT1). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al BIT 3 del
puerto D, además puede usarse para la atender interrupciones externas.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 4 del
puerto D, además puede usarse como entrada de reloj para el
temporizador/contador 0.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 5 del
puerto D, además puede usarse como entrada de reloj para el
temporizador/contador 1.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 6 del
puerto D, además puede usarse como entrada de captura de cuenta del
temporizador/contador 0.
30
Pin 12 PB0 (AIN0). (Bidireccional).
Este terminal puede funcionar como entrada o salida digital asociado al BIT 0 del
puerto B, además puede usarse como una de las dos entradas analógicas del
comparador analógico integrado.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 1 del
puerto B, además puede usarse como una de las dos entradas analógicas del
comparador analógico integrado.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 2 del
puerto B.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 3 del
puerto B, además puede usarse como salida del temporizador/contador 1.
Este terminal puede funcionar como entrada o salida digital asociado al BIT 4 del
puerto B.
31
los bits 5,6,7 del puerto B, además pueden usarse como terminales para la
comunicación serie síncrona para la programación de la memoria flash interna.
32
Una EEPROM interna de 128x8, para el almacenamiento de datos que
deban mantenerse, aun cuando no este con alimentación del
microcontrolador.
Una memoria Flash EPROM de 1Kx16 bits para el almacenamiento de las
instrucciones del programa. Esta memoria dispone de un bus dedicado,
distinto del de datos, por el que transitan las instrucciones hacia el
decodificador de instrucciones,encargado de su ejecución.
Un puerto serie asíncrono o UART
Un puerto serie síncrono SPI
Un contador /temporizador de 8 bits
Un contador /temporizador de 16 bits con funciones de PWM, generación
de salida, control, etc.
Un WATCHDOG o perro guardián que vigila el correcto funcionamiento del
programa.
Un comparador analógico
15 líneas de entrada/salida
Una unidad de generación de interrupciones
33
Como podemos observar, el microcontrolador utiliza una arquitectura
HARVARD, donde la memoria de datos y programa tienen buses independientes.
34
Todas las instrucciones que operan con los contenidos de los registros tienen
acceso al conjunto del banco, salvo las instrucciones que cargan datos de forma
inmediata como SBCI, SUBI, CPI, ANDI, ORI y LDI que sólo acceden a la segunda
mitad de los registros (R16..R31) Como ya se dijo con anterioridad, cada registro
está también mapeado en memoria, así el registro r31 ocupa la dirección $1F del
espacio de memoria de datos, etc. Los últimos 6 registros del banco, r26-r31,
pueden tener funciones alternativas como apoyo a los modos de direccionamiento,
en ese caso, se agrupan por pares para constituir los registros X,Y,Z de 16 bits
cada uno.
35
36
La memoria de datos SRAM.
De forma parecida ocurre con los registros de I/O. Las instrucciones de entrada y
salida permiten reasignar un número a cada uno de ellos, de forma que el primer
registro de este tipo que encontramos se numera como 0 (dirección $20), el
siguiente, 1 (dirección $21) y así sucesivamente.
37
Modos de direccionamiento de datos y programas
El AVR AT90S2313 permite 5 modos de direccionamiento de datos:
Directo
Indirecto
Indirecto con predecremento
Indirecto con postincremento
Indirecto con desplazamiento
Inmediato
38
MODO DE REGISTRO DIRECTO (2 REGISTROS)
39
MODO DE DIRECCIONAMIENTO DIRECTO
40
MODO DE DIRECCIONAMIENTO INDIRECTO
Es igual al modo anterior, con la diferencia que en este caso, el registro X,Y,Z
previamente se decrementa en una unidad.
41
MODO DE DIRECCIONAMIENTO INDIRECTO CON POSTINCREMENTO
42
de la memoria de programa y el bus de datos de la memoria de datos, que de
forma controlada, sólo utiliza la instrucción LPM.
43
MODO DE DIRECCIONAMIENTO RELATIVO DE PROGRAMA (RJMP ,RCALL)
44
2.6 TIPOS DE ARQUITECTURA DEL CONJUNTO DE INSTRUCCIONES
45
actual es que los procesadores contengan pocas instrucciones y que éstas
sean sencillas para ejecutarlas en un ciclo de reloj.
46
Operandos almacenados en la CPU. Se refiere a que algunas ISA
guardan los operandos en localidades internas del CPU.
Existen tres tipos de ISA que son las más comunes y son los siguientes:
Instrucción Operación
add A acc - acc + mem[A]
47
Pila - Los operandos se encuentran en el tope de la pila. Así todas las
operaciones se realizan en el tope de la pila. Por ejemplo.
Instrucción Operación
add top - top + next
Instrucción Operación
1 add A B A= A+B
2 add A B C A= B+C
Acumulador
48
Ventajas: Es un modelo simple para evaluar expresiones e instrucciones
cortas.
Desventajas: Una pila no puede ser accedida aleatoriamente, esto hace
difícil la generación de código eficiente. La pila es accedida por una misma
operación varias veces y llega a generar cuellos de botella.
49
ADD R3, R1, ADD R1, R2
R2
or
R3 <-R1 + R2 R1 <- R1 + R2
Tabla 2-1. Instrucción aritmética-lógica
Registro - Registro
ADD R3, R1, R2 (R3 <- R1 + R2)
Registro - Memoria
ADD R1, A (R1 <- R1 + A)
Memoria - Memoria
ADD C, A, B (C <- A + B)
Como se mencionó anteriormente los CPUs modernos son del tipo GPR
(Registro de Propósito General). Como ejemplos de estos CPUs son la IBM 360,
DEC VAX, Intel 80x86 y Motorola 68xxx, sin embargo, estos CPUs fueron
claramente mejores que los CPUs anteriores basados en pila y acumulador, ya
que fueron mitigando inconvenientes en algunas áreas, pero presentaban los
problemas que se mencionan a continuación:
50
2. Las instrucciones aritmético-lógicas pueden tener operandos que son
localidades de memoria. Porque el número de ciclos tomados para acceder a
memoria varía. Esto no es bueno para los diseñadores de compiladores,
“pipelining” y múltiples emisiones.
51
Conjuntos de Instrucciones Reducido
52
2.10.- CONSIDERACIONES PARA EL DISEÑO DEL CONJUNTO DE
INSTRUCCIONES RISC.
53
Hacer que el caso común sea rápido
Conjunto de Instrucciones
54
Formatos
15 12 11 87 43 0
op rf1 rf2 rd
15 12 11 87 0
op registro dirección
15 12 11 87 0
op xxxx desplazamiento
55
Modos de Direccionamiento
Registro
15 12 11 87 0
op registro dirección
Memoria
11 87
R e g. P a g. 0
Memoria
P C +
56
Instrucciones
and Realiza la operación lógica AND Sintaxis and rd, rf1, rf2
Efectúa la operación lógica AND entre los registros rf1 y rf2, depositando el
resultado en rd.
srl Realiza corrimiento lógico a la derecha Sintaxis srl rd, rf1, rf2
sll Realiza corrimiento lógico a la izquierda Sintaxis sll rd, rf1, rf2
57
ld Cargar palabra Sintaxis ld rd, dir
58
clr_c Limpiar bandera de acarreo. Sintaxis clr_c
59
Búsqueda de instrucciones
Incremento
Add
P
Memroira
C
de Instrucción
Instrucciones
input [11:0] pc ;
input rst;
output [15:0] instruccion ;
reg [15:0] instruccion ;
pc Memoria
always @(pc)
begin De Instruccion
if (rst) instruccion = 16'b0; Instrucciones
else begin case (pc)
12'b000000000000 : instruccion = 16'b0111000000001100 ;
12'b000000000001 : instruccion = 16'b1100001100100000 ;
12'b000000000010 : instruccion = 16'b1110010001010001 ;
. . . rst
endcase end
end
endmodule
61
module sumador_PC(dir_PC, PC_incrementado);
Instrucciones Aritmético-Lógicas
Banco de registros
El ISA propuesto realiza las operaciones a través del uso de registros, por lo
que es necesario contar con un banco de registros. El banco de registros,
permite leer o escribir un dato especificando el número de registro.
62
Considerando el formato de las instrucciones aritmético-lógicas, se requieren
de tres operandos de registros, dos para leer los datos del banco de registros y
uno para escribir el resultado en un registro. Por lo que es necesario que el banco
de registros cuente con dos entradas para indicar los registros a leer y dos salidas
para leer el dato contenido en los registros respectivos. Para escribir un dato es
necesario tener una señal que indique cuando se realizará una escritura, así como
una entrada para indicar el registro a escribir y otra para proporcionar el dato.
module Registros (clk, rst, we, wr, r1, r2, wd, d1, d2);
input clk, rst;
...
output [15:0] d1;
we
...
reg [15:0] ram [15:0]; r1
always @(posedge clk or posedge rst) Banco de d1
begin r2
if (rst) begin Registros
ram[0] <= 5; ram[1] <= 1; wr
.......
ram[14] <= 14; ram[15] <= 15; end
wd d2
end
assign d1 = ram[r1];
assign d2 = ram[r2];
endmodule
63
Unidad aritmético-logica (ALU)
64
escribir
Reg1
Reg2
Banco de Memoria
EscReg Dato
Registros de datos
EscDato
Página
Direccion
65
module Pagina (pag_E,, pag, s_Pag);
input pag_E;
input [3:0] pag;
output [3:0] s_Pag; pag_E s_Pag
Pagina
assign s_Pag = pag_E ? pag : 0;
endmodule
Instrucciones de Control
66
En el siguiente capítulo hablaremos de las herramientas que se
utilizaran para el diseño, simulación e implementación del camino de datos o
datapath.
67
el circuito interno de programación de la memoria flash. Debe ser mayor de 12.0
volts. La salida D0 del PC controla esta señal. No hay peligro para el chip si se
aplica esta señal en un momento inadecuado.
Cuando el PIC está enviando datos, las señales SLCTIN y AUTOFD están a
nivel alto, D1 no conduce y D2 y R1 proporcionan la polarización (pull-up). La
resistencia R2 mas la resistencia interna de la línea AUTOFD (dentro del puerto
del PC normalmente 4.7k, auque a veces mucho menos en los nuevos puertos
paralelos CMOS) proporcionan algo de Pull-up adiciona. El PC lee la información
através de la línea BUSY, que es 0.6V mayor que la salida del PIC debido al diodo
D2. El puerto paralelo del Pc tiene (o debería tener) entradas CMOS o Schmitt y
no debería necesitar verdaderos niveles lógicos TTL.
68
Para alimentar el circuito se requieren dos fuentes de alimentacion reguladas
una de 5 volts y una de 12 volts.
El circuito.
69
Se ha probado con éxito a programar los siguientes PICs:
16F627, 16F628.
16C84, 16F83, 16F84.
16F873, 16F874, 16F876, 16F877.
18F242, 18F252, 18F258, 18F442, 18F452, 18F458.
Sin entrar en detalles sobre el funcionamiento del circuito, decir sólo que se
basa en principios muy parecidos a los del JDM2, pero con ciertos retoques en la
temporización y la estabilidad de las señales. En este caso, se utiliza como alimentación de
+5V el condensador C2, que se carga mediante D2, D3 y D4 en los momentos en que las
señales DTR, RTS y TXD del puerto serie son negativas, y su tensión queda estabilizada
mediante D7. D5 fija la tensión de programación en 12V y D6 limita la tensión de la señal
CLOCK a 5V.
70
Figura 3.1
Realización práctica.
71
Figura 3.2
Figura 3.3
72
Figura 3.4
Figura 3.5
Utilización.
Lo primero que hay que tener claro a la hora de utilizar este
programador es el orden en que se deben hacer las cosas para no estropear ni el
programador, ni el PIC, ni el puerto serie del PC. Siempre que queramos insertar o
73
extraer un PIC del zócalo hay que desconectar el programador del puerto serie,
ya que, al extraer la alimentación del puerto serie, mientras esté conectado estará
alimentado. Por tanto, el proceso a seguir consta de los siguientes pasos:
Figura 3.6
74
Figura 3.7
75
tango.pcb, lo usaremos en nuestras practicas del curso de procesadores y sera
herramienta de desarrollo para el grupo Mekatrun en la Universidad Nacional de
Colombia. Apartir de aca, no usaremos mas el popular programa Pony Prog por
considerar JDM mucho mejor, sin embargo es compatible con el programador in-
circuit de pony-prog, ademas es mas pequeño funciona mejor y hace un mejor uso
de la energia del puerto serial de tu PC.
Estas son vistas del programador JDM tipo in-circuit tiene cinco pines que se
insertan en tu protoboard para programar cualquier PIC debes cablear los pines
VPP,VCC,GND,RB7,RB6. y !...............listo..................!
76
Para que el programa IC-PROG lo pueda detectar, se debe configurar el
hardware asi como muestra el grafico siguiente (invierte Vcc).
77
Se debe construir un cable para el puerto serial, de la forma que muestra la
figura siguiente; note que la resistencia de 2.2K se ha instalado sobre el mismo
conector; esto permite ahorrar un hilo y poder usar un popular y economico cable
telefonico de cuatro hilos, con su respectivos conectores tipo RJ-11 para circuito
impreso y cable.
78
Este es el diseño electronico; en el se realizo una modificacion en algunas
componentes del diseño original, para mejorar su desempeño. los diodos 1N4148
se remplazaron por diodos tipo shottky que presentan una caida de tension directa
menor y se le puede robar mas energía al puerto serial de su P.C.
79
Dos transistores son 2N2222,
Zener de 5.1/0.5W
Zener de 8.2/0.5W
Condensador de 100uF/16v y otro de 100uF/6.3v
Resistencia de 10k y de 2.2k , 1/8W.
Cuatro diodos tipo shottky de pequeña señal
El circuito impreso presenta este aspecto y asi como indica el grafico debe
cablearse en el protoboard, te sirve para muchos pics tipo flash o inclusive los que
no lo son, si se cablean los cinco pines; RB7,RB6,Vcc,Gnd,Vpp.
Las uniones de superficie conectan pistas por el lado de las soldaduras, las
puedes obtener de unidades de diskette malas. o circuitos de desecho que tengan
componentes de montaje superficial.
80
CAPITULO 4.- DESARROLLO DE CIRCUITOS
CAUSAS:
EFECTOS:
OBJETIVO:
81
Diseñar y construir un detector de ruido de alta frecuencia que permita:
Medir y detectar una presencia de ruido de al menos el 40% de la señal
fundamental.
DECISIONES:
FILTRO MF10.-
82
Filtro de capacidades conmutadas de frecuencia de corte proporcional a la
frecuencia de reloj.
Permite configuración paso alto.
Máximo 4º orden.
Frecuencia máxima de corte 20kHz para una frecuencia máxima de reloj de
1MHz.
Banda de trabajo mínima hasta 200kHz.
Bajo precio.
83
CIRCUITO DE FRECUENCIA.-
VCC+
13
12
10
14
11
9
8
I6
I5
I4
74'04
O5
O6
O4
VCC
GND
O1
O3
O2
I1
I2
I3
74'4040 74'151
1
2
3
4
5
6
7
10 9 4 6
CLK Q1 7 3 I0 /Z
11 Q2 6 2 I1 5
CLR Q3 I2 Z FREC
4K7 Q4
5 1
I3
1 2 3 15
Q5 2 14 I4 FRECUENCIA AL FILTRO
Q6 I5
2MHz Q7
4 13
I6
1 2 13 12
1
Q8 12 I7
Q9
22K 14 11
1
Q10 15 10 S0
820pF 820pF Q11 S1
1 9
2
Q12 S2
VCC
GND 7
E
VCC
GND
16 I17005
8
VCC+
16
8
VCC+
RB2
1 14
2 E1 VCC 13 VCC+
3 D1 E4 12
RB6 4 O1 74'126 D4 11
5 E2 O4 10 RB5
D2 E3 12K
6 9 1 2 S2
O2 D3
RB7 7
GND O3
8 12K 1 8
1 2 2 7
VCC+
12K 3 6
1 2 4 5
SW DIP-4
FILTRADO.-
84
UMBRAL.-
85
PLACAS DE CIRCUITO IMPRESO.-
SOFTWARE.-
EL PROGRAMA:
Limitado a 1k de memoria.
Tareas:
Controlar y leer el ADC.
Leer la selección de frecuencia.
Permitir y atender la interrupción.
Tratar los datos.
Controlar el LCD y mostrar los datos.
86
EL CIRCUITO Y UN EJEMPLO DE DETECCIÓN.-
87
4.2.- DESARROLLO DE UN CIRCUITO PARA PWM
Con PAM, las muestras de una señal mensaje son utilizadas para modular la
amplitud de un tren de pulsos. El resultado es una señal consistente en pulsos de
ancho constante regularmente espaciados, cuyas amplitudes varían en proporción
a la señal mensaje. (Figura 1(a)).
88
La posición de los pulsos es otro parámetro de tiempo que puede ser
utilizado en PTM. Con PPM, las muestras de la señal mensaje se utilizan para
modular las posiciones de pulsos de ancho y amplitud constantes (ver Figura 1(c)).
PWM y PPM están estrechamente relacionadas. Las señales PPM son
usualmente generadas a partir de señales PWM como lo muestra la Figura 1(b) y
(c).
89
Sin embargo, hay importantes diferencias entre señales PTM y señales PAM.
La información en las señales PTM es llevada en el sincronismo de los pulsos (en
las posiciones de los flancos de los pulsos), en lugar de las amplitudes como en
PAM. Cuando el ancho de banda de canal es grande, los flancos de los pulsos son
casi verticales. Como resultado de esto, las señales PTM son menos sensitivas al
ruido que las señales PAM. Reduciendo el ancho de banda del canal se
incrementa el tiempo de subida (Tr) de los pulsos y el ruido tiene efecto en la
precisión del sincronismo de los pulsos.
Debido a que los pulsos en señales PPM pueden ser muy estrechos, y por lo
tanto se requiere muy baja potencia para transmitirlos, la transmisión PPM puede
ser muy eficiente. PPM es frecuentemente utilizada en sistemas ópticos de
comunicación.
90
que la posición de los pulsos con respecto a una señal de reloj (una señal
cuadrada de igual frecuencia que la señal rampa) depende del nivel de la señal
mensaje.
91
Las señales PPM demoduladas sólo por filtrado pasabajo, pueden producir
una señal reconstruida de muy baja amplitud, si los pulsos son muy estrechos.
92
La Figura 4, finalmente muestra las señales en un receptor PPM.
93
El juego funciona en un PIC16F84 a 12MHz, generando el vídeo en tiempo
real con sólo dos resistencias. La única diferencia electrónica, comparado con el
PONG, es que PONG puede correr en un µC PIC16C84, pero TETRIS requiere
mas memoria RAM (68 bytes, adicionales a los disponibles) por lo que sólo
funciona en un µC PIC16F84. EL circuito electrónico en si es el mismo, por lo que
puede emplearse la misma placa que para el PONG. El joystick 2 no actual en
este juego.
94
mucho con el audio del juego. Actualmente él está pensando hacer el juego
"Boulder Dash" con la misma electrónica del tetris y el pong. La música es una
vieja melodía Rusa llamada "Karaboschka", que es una de las que sonaban en el
tetris del gameboy.
list p=16F84,r=hex
w equ 0
f equ 1
pcl equ 0x02
rd equ 0
rp0 equ 5
95
up1b equ 3
down1b equ 2
left1b equ 5
right1b equ 4
fire1b equ 1
up2b equ 7
down2b equ 6
left2b equ 2
right2b equ 3
fire2b equ 1
up1p equ portb
down1p equ portb
left1p equ portb
right1p equ portb
fire1p equ portb
up2p equ portb
down2p equ portb
left2p equ porta
right2p equ porta
fire2p equ porta
96
y equ 0x16
delaycnt equ 0x17
angle equ 0x18
blockstuff equ 0x19
fallcnt equ 0x1A
points equ 0x1B
random equ 0x1E
stuff equ 0x1F
m_freq equ 0x20
m_cnt equ 0x21
m_songcnt equ 0x22
delay MACRO
LOCAL label
movwf delaycnt
label decfsz delaycnt
goto label
97
ENDM
dnop MACRO
LOCAL label
label goto label+1
ENDM
org 0x000
goto inittetris
;------------ This table contains the 3 note lengthes for the 5 speeds --------
98
setbit call getbit ;get bitbyte and bitmask 20 cycles
iorwf indf ;set bit
return
Quizás una de las aplicaciones mas usual para un micro controlador sea la
elaboración de un contador de turnos o de personas atendidas. En este caso
decidimos diseñar un circuito que requiera la menor cantidad posible de
componentes y que cumpla con las prestaciones típicas de estas aplicaciones.
99
Como se ve en el diagrama el circuito está estructurado alrededor del
PICmicro el cual en su interior lleva la cuenta de las pulsaciones sobre el pulsador
'I' y, a su vez, genera los dígitos a ser mostrados sobre los displays de 7
segmentos de LED's.
Para reducir la cantidad de circuitos integrados a sólo uno hemos optado por
generar los dígitos por soft dentro del mismo micro, evitando así tener que recurrir
a decodificadores de BCD, que si bien no representan costo alguno para
adquirirlos, el hecho de colocarlos en el circuito impreso implica mayor tamaño,
mayor cantidad de pistas y perforaciones.
100
están iluminados simultáneamente, cuando en realidad sólo uno se ilumina por
vez. Por ejemplo, para hacer aparecer en los displays la secuencia 1 2 3 4 habría
que hacer la siguiente rutina:
1. Generar el dígito 1
2. Encender el primer display
3. Generar el dígito 2
4. Encender el segundo display
5. Generar el dígito 3
6. Encender el tercer display
7. Generar el dígito 4
8. Encender el cuarto display
9. Repetir la secuencia a velocidad suficiente.
Para evitar que la velocidad del micro haga avanzar el conteo a mas de una
unidad por pulsación se ha implementado un retardo de 100mS luego de la
pulsación del interruptor marcado como 'I'. Si se quiere hacer avanzar el conteo
hasta una posición no es necesario presionar y soltar el pulsador repetitivamente,
bastará con mantenerlo presionado y el conteo avanzará rápidamente. Para volver
la cuenta a cero basta con resetear el micro, presionando la tecla marcada como
'R'.
101
Los transistores pueden ser reemplazados sin problema por cualquiera de
uso general como el BC548 o similar.
Los displays utilizados son de LED's con cátodo común. Se pueden emplear
displays pequeños y medianos sin problema. Para el uso de displays grandes
deberá emplear algún driver de corriente como el ULN2803A o similar. La
alimentación puede ser tanto 5 como 6 voltios. No se requiere que esté
estabilizada y se puede emplear un adaptador universal, siempre que sea de
calidad aceptable. La corriente requerida es de 300mA.
;Contador de 4 digitos.
102
reset org 00
goto inicio
org 05h
103
incf dig2 ;incrementa el contador de centenas
movf dig2, w ;carga en work el conteo de las centenas
xorlw 0ah ;si work era 10, entonces quedara en cero
btfsc status, z ;si es cero, el flag z queda alto
call s1000 ;incrementa los miles
return
104
retlw b'01111100' ;genera el 3
retlw b'01011001' ;genera el 4
retlw b'01101101' ;genera el 5
retlw b'01101111' ;genera el 6
retlw b'00111000' ;genera el 7
retlw b'01111111' ;genera el 8
retlw b'01111101' ;genera el 9
105
movwf ptoa ;enciende el transistor (display)
movf indo, w ;lee el dato del registro apuntado por fsr
call tabla ;genera el digito de 7 segmentos
movwf ptob ;envia el digito al puerto b
movlw 03h ;retardo de 3ms para visualizacion
call retardo
btfsc rota, 0 ;controla si terminaron las cuatro rotaciones
goto empe ;si termino, vuelve desde el comienzo
bcf status, c ;carry en cero para no afectar las rotaciones
rrf rota ;desplaza el 1 que enciende los displays
incf fsr ;incrementa el puntero. Apunta el proximo
goto disp ;digito a mostrar
end
106