Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
Contenido
INDICE..............................................................................................................................1
INTRODUCCION.............................................................................................................5
ARQUITECTURA DE MICROCONTROLADORES.....................................................6
Diferencias entre Microprocesador y Microcontrolador...............................................6
MICROPROCESADOR............................................................................................6
MICROCONTROLADOR........................................................................................6
Arquitectura Interna del microcontrolador PIC y el microcontrolador ATmega...........7
Arquitecturas según el Hardware...............................................................................7
Arquitecturas según el Software................................................................................9
Registros de Propósito General y Especiales...............................................................10
• Registros de propósito específico:.........................................................................10
• Registros de propósito general:.............................................................................10
Distribución de Pines...................................................................................................11
Recursos comunes a todos los microcontroladores..................................................11
Recursos especiales de los microcontroladores.......................................................12
PROGRAMACIÓN DE MICROCONTROLADORES PIC..........................................19
Tipos de Datos.............................................................................................................20
Tipo entero (int).......................................................................................................22
Tipo punto flotante (float)........................................................................................22
Tipo carácter (char)..................................................................................................22
Juego de Instrucciones.................................................................................................23
Fusibles e Interrupciones.............................................................................................24
Fusibles....................................................................................................................24
Interrupciones...........................................................................................................29
Funciones para control DIO.........................................................................................41
Interacción Microcontrolador – PC (USART).............................................................82
EJERCICIO 9...........................................................................................................85
EJERCICIO PROPUESTO......................................................................................87
SEGUNDO PARCIAL....................................................................................................88
MODULO CCP...............................................................................................................88
2
INTRODUCCIÓN:......................................................................................................88
SÍNTESIS:...................................................................................................................88
Módulo CCP1..............................................................................................................90
Módulo CCP2:.............................................................................................................90
MODO CAPTURA:....................................................................................................91
MODO COMPARACIÓN:..........................................................................................93
Modo PWM:................................................................................................................95
Funciones CCP en compilador CCS............................................................................97
SENSORES (LM35, ULTRASÓNICO Y TCRT5000)...................................................98
Características de los sensores.....................................................................................99
Sensor LM35 (sensor de temperatura).........................................................................99
SENSOR ULTRASÓNICO.......................................................................................101
SENSOR INFRARROJO..........................................................................................102
Control PWM para Motores DC y AC..........................................................................104
MOTOR DE CORRIENTE CONTINUA.................................................................104
FUNDAMENTOS DE OPERACIÓN DE LOS MOTORES ELÉCTRICOS...........104
COMUNICACIÓN I2C Y SPI......................................................................................107
Introducción...............................................................................................................107
Marco Teórico............................................................................................................107
COMUNICACIÓN SPI (SERIAL PERIPHERAL INTERFACE)................................112
SPI Data Registers (SPIxDH:SPIxDL)......................................................................118
COMUNICACIÓN BLUETOOTH – ZBEEE - RF......................................................120
BLUETOOTH............................................................................................................120
¿Qué es Bluetooth?....................................................................................................122
¿De dónde viene el nombre Bluetooth?.....................................................................123
Objetivos principales de la tecnología Bluetooth......................................................123
Funcionamiento.........................................................................................................123
ZIGBEE.....................................................................................................................124
ESTRUCTURA......................................................................................................126
Características........................................................................................................127
Ventajas..................................................................................................................128
Tipos de Dispositivos.............................................................................................128
Topología................................................................................................................129
3
Seguridad................................................................................................................131
Futuro del Zigbee...................................................................................................132
EJERCICIOS RESUELTOS..........................................................................................133
Código ejercicio 1......................................................................................................133
Código ejercicio 2......................................................................................................136
Código ejercicio 3......................................................................................................139
Código ejercicio 4......................................................................................................141
Código ejercicio 6......................................................................................................144
Código ejercicio 7......................................................................................................146
Código ejercicio 8......................................................................................................148
Código Ejercicio 9.....................................................................................................151
CUESTIONARIO..........................................................................................................154
TEMA 1.- Diferencias entre el Microprocesador y Microcontrolador..................154
Tema 2.- Arquitectura Interna del Uc PIC..............................................................156
Tema 3.- Registros de propósito General y Especiales..........................................159
Tema 4.- Distribuciones de pines...........................................................................162
Tema 5.- Características Eléctricas........................................................................163
Tema 6.- Tipo de datos...........................................................................................165
Tema 7.- Juego de Instrucciones............................................................................167
Tema 8.- Fusibles e Interrupciones........................................................................168
Tema 9.- Funciones para control............................................................................171
Tema 10.- Interacción Uc – PC (USART)..............................................................173
Tema 11.- SENSORIZACION (LM35, ULTRASÓNICO Y TCR 5000)..............174
Tema 12.- Control PWM para Motores DC y AC..................................................180
Tema 13.- COMUNICACIÓN I2C Y SPI..............................................................185
Tema 14.- ZIGBEE................................................................................................191
Tema 15.- Bluetooth...............................................................................................196
Tema 16.- RF..........................................................................................................201
BIBLIOGRAFÍA...........................................................................................................205
4
INTRODUCCION
El presente trabajo es una introducción primaria a la programación de
microcontroladores, se referencia las características importantes de dos
microprocesadores de gama media y alta como son el pic16f887 y el pic18f4550.
Un microcontrolador es un dispositivo electrónico capaz de llevar a cabo procesos
lógicos. Estos procesos o acciones son programados en lenguaje ensamblador o lenguaje
c por el usuario, y son introducidos en este a través de un programador.
Este resumen está orientado con información básica de los microcontroladores para la
mejor compresión de las bases teóricas. Así pues además de aprender todo sobre el
mundo del PIC, es necesario saber algo de electrónica y electrónica digital, de lo
contrario todo lo que escriba aquí sobre microcontroladores no será entendible.
5
ARQUITECTURA DE MICROCONTROLADORES
Diferencias entre Microprocesador y Microcontrolador
MICROPROCESADOR
Es un dispositivo electrónico que necesita de todos los periféricos para poder funcionar
correctamente, es decir, tener una motherboard como soporte (con todos los buses que
necesite el microprocesador: bus de dirección, datos, control, etc), tener también el
banco de memoria tanto RAM como ROM y más.
Este microprocesador puede hacer cualquier función que se le ordene dependiendo del
software que lo gobierne.
Figura 1 Microprocesador Fuente: Raúl Álvarez Torrico, Entendiendo los bits de configuración en
elPIC16 de Microchip, Disponible Fuente:
MICROCONTROLADOR
Internamente ya están implementados todos los buses, el banco de memoria, clock,
temporizadores, etc y también está el software que lo gobierna, pero este software es
único y tiene una sola función la cual es para el cual fue diseñado. Es un sistema cerrado
mientras que un microprocesador es un sistema abierto desde este punto de vista, puede
realizar muchísima más funciones ahora.
Figura 2 Microcontrolador Fuente: Raúl Álvarez Torrico, Entendiendo los bits de configuración en elPIC16 de
Microchip, Disponible
6
El microcontrolador es en definitiva un circuito integrado que incluye todos los
componentes integrados. Debido a su reducido tamaño es posible montar el controlador
en el propio dispositivo al que gobierna. En este caso el controlador recibe el nombre de
controlador empotrado o embebido.
7
manejar datos e instrucciones de una o más unidades de 8 bits (bytes) de longitud. Si
tiene que acceder a una instrucción o dato de más de un byte de longitud, tendrá que
realizar más de un acceso a la memoria. El tener un único bus hace que el
microprocesador sea más lento en su respuesta, ya que no puede buscar en memoria una
nueva instrucción mientras no finalicen las transferencias de datos de la instrucción
anterior. Las principales limitaciones que nos encontramos con la arquitectura Von
Neumann son: • La limitación de la longitud de las instrucciones por el bus de datos,
que hace que el microprocesador tenga que realizar varios accesos a memoria para
buscar instrucciones complejas. • La limitación de la velocidad de operación a causa del
bus único para datos e instrucciones que no deja acceder simultáneamente a unos y
otras, lo cual impide superponer ambos tiempos de acceso.
Características
Máquina secuencial
Ejecuta solo una operación a la vez
Bus de datos y direcciones compartidos
Lenta
Generalmente se combina con software tipo CISC
Arquitectura Harvard
Este modelo, que utilizan los microcontroladores PIC, tiene la unidad central de proceso
(CPU) conectada a dos memorias (una con las instrucciones y otra con los datos) por
medio de dos buses diferentes.
8
Una de las memorias contiene solamente las instrucciones del programa (Memoria de
Programa), y los otros sólo almacenos datos (Memoria de Datos). Ambos buses son
totalmente independientes lo que permite que la CPU pueda acceder de forma
independiente y simultánea a la memoria de datos y a la de instrucciones. Como los
buses son independientes éstos pueden tener distintos contenidos en la misma dirección
y también distinta lóngitud. Tambien la longitud de los datos y las instrucciones puede
ser distinta, lo que optimiza el uso de la memoria en general. Para un procesador de Set
de Instrucciones Reducido, o RISC (Reduced Instrucción Set Computer), el set de
instrucciones y el bus de memoria de programa pueden diseñarse de tal manera que
todas las instrucciones tengan una sola posición de memoria de programa de longitud.
Además, al ser los buses independientes, la CPU puede acceder a los datos para
completar la ejecución de una instrucción, y al mismo tiempo leer la siguiente
instrucción a ejecutar. Ventajas de esta arquitectura: • El tamaño de las instrucciones no
esta relacionado con el de los datos, y por lo tanto puede ser optimizado para que
cualquier instrucción ocupe una sola posición de memoria de programa, logrando así
mayor velocidad y menor longitud de programa.
Caracteristicas
Separa los buses de datos, direcciones y control, y los hace totalmente
independientes.
Lo anterior permite leer instrucciones con mayor velocidad
Pueden direccionar altas cantidades de memoria
Se combinan con software RISC
9
RISC: Tanto la industria de los ordenadores como la de los microcontroladores están
decantándose hacia la filosofía RISC (Computadores de Juego de Instrucciones
Reducido). En estos procesadores el repertorio de instrucciones máquina es muy
reducido y las instrucciones son simples y, generalmente, se ejecutan en un ciclo (en
realidad en cuatro, pero secuencialmente, de forma que a cada ciclo de reloj se termina
la ejecución de una instrucción excepto en las instrucciones de salto). La sencillez y
rapidez de las instrucciones permiten optimizar el hardware y el software del
procesador.
Reduced Instructio Set Computer
Pocas instrucciones
Más fácil de aprender el método de programación
Mayor tamaño del código de programa
10
Distribución de Pines
Los PIC son integrados capaces de ser programados desde un computador y seguir una
secuencia.
PIC (MicroChip). Familia de microcontroladores que gana popularidad día a día.
Fueron los primeros microcontroladores RISC. Serán los empleados en este módulo.
Es preciso resaltar en este punto que existen innumerables familias de
microcontroladores, cada una de las cuales posee un gran número de variantes.
Memoria.
En los microcontroladores, la memoria de instrucciones y datos está integrada en el
propio chip. Una parte debe ser no volátil, tipo ROM, y se destina a contener las
instrucciones del programa. Otra parte de la memoria será tipo RAM, volátil, y se
destina a guardar las variables y los datos.
11
La RAM en estos dispositivos es de poca capacidad pues sólo debe contener las
variables y los cambios de información que se produzcan en el transcurso del programa.
Los usuarios de ordenadores están habituados a manejar Megabytes de memoria, pero
los diseñadores de aplicaciones con microcontroladores trabajan con capacidades de
ROM comprendidas entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y
512 bytes (en la gama media de microcontroladores, en la alta se superan estas cifras).
Según el tipo de memoria ROM que dispongan los microcontroladores, la aplicación y
utilización de los mismos es diferente. Se describen las cinco versiones de memoria no
volátil que se pueden encontrar en los microcontroladores del mercado.
Puertos de Entrada/Salida.
Los puertos de entrada/salida de un microcontrolador permiten la comunicación con los
periféricos externos. Además, muchas de las patas que configuran el puerto suelen tener
varias funciones multiplexadas, como por ejemplo ser puerto de E/S y entrada analógica
al convertidor A/D.
Temporizadores o “Timers”.
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la cuenta
de acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a continuación
dicho valor se va incrementando o decrementando al ritmo de los impulsos de reloj o
algún múltiplo hasta que se desborde y llegue a 0, momento en el que se produce una
interrupción.
13
Conversor D/A
Transforma datos digitales en su correspondiente señal analógica, que saca al exterior
por una de las patas del micro. La inclusión de un conversor D/A en un micro es mucho
más rara (y cara) que la de un conversor A/D. La salida analógica tiene una limitación
de corriente y de amplitud, por lo que en muchas ocasiones será necesaria una etapa de
salida (amplificador + potencia).
Comparador analógico
Algunos modelos de microcontroladores disponen internamente de un Amplificador
Operacional que actúa como comparador entre una señal fija de referencia y otra
variable que se aplica por una de las patas del micro. La salida del comparador
proporciona un nivel lógico 1 ó 0 según la señal de entrada sea mayor o menor que la de
referencia. También hay modelos de microcontroladores con un módulo de tensión de
referencia que proporciona diversas tensiones de referencia que se pueden aplicar en los
comparadores.
Modulador de anchura de pulsos o PWM
Puerto paralela esclavo para poder conectarse con los buses de otros
microprocesadores.
14
Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
DIAGRAMA DE BLOQUES
El siguiente es su diagrama circuital por bloques, que se debe entender desde la
electrónica, que es la base del trabajo de programación de los PIC:
Fuente: https://es.wikiversity.org/wiki/Estructura_del_microcontrolador
La distribución de pines es la siguiente, así es como se ve por fuera y cada pin tiene una
o más funciones asignadas, cada vez que se utiliza una función hay que tener en cuenta
que no se deben usar las otras asignadas en el mismo pin, es decir, un terminal solo
puede realizar una función al tiempo, así en la etapa de planeación del proyecto se debe
definir que función utilizar para cada pin, de las que este está en habilidad de
desempeñar.
Eficiencia del código: permiten una gran compactación de los programas.
Rapidez de ejecución: a frecuencia de 20MHz->5 millones de instr./seg.
Seguridad en acceso por la separación de memoria de datos y de programa.
Juego reducido de instrucciones y de fácil aprendizaje.
Compatibilidad de pines y código entre dispositivos de la misma familia o sin reducción
de las prestaciones internas (muy versátiles).
15
Gran variedad de versiones en distintos encapsulados (desde 8 hasta 84 pines) sin
reducción de las prestaciones internas (muy versátiles).
Posibilidad de protección del código muy fiable.
Herramientas de desarrollo software y hardware abundantes y de bajo coste.
Pines de configuración
16
Figura 8 Distribución de pines del PIC 16F887 Fuente: Datasheet
17
Figura 9 Distribución de pines del PIC 16F887 Fuente: Datasheet
18
PROGRAMACIÓN DE MICROCONTROLADORES PIC
Programación en Asambler
Definición:
Los lenguajes de programación son la herramienta con que se cuenta para indicar a las
computadoras la secuencia de instrucciones o comandos para realizar las diferentes
funciones que desarrollan.
El nivel más bajo de programación es tratar directamente con el microprocesador, el
cual trabaja en código binario. El lenguaje ensamblador es la codificación que permite
trabajar a este nivel de programación, las instrucciones escritas en código binario se
conocen con el nombre de código de máquina.
El lenguaje ensamblador es una codificación especial que permite agrupar comandos
cortos y con cierto sentido este código de máquina. Cada comando se lo conoce como
mnemónico. [2]
Estructura del lenguaje Ensamblador
- Código de Operación
- Parámetros del Comando
19
Tipos de Datos
Para conocer los tipos de datos vamos a comenzar analizando primero:
¿Qué son las variables?
Pues sencillamente el poder identificar con un nombre una o varias posiciones de
memoria de la RAM de nuestro PIC y de esta manera el poder almacenar allí los datos
(información) que va a utilizar nuestro programa.
En C para poder utilizar una variable primeramente hay que declararla siguiendo la
siguiente sintaxis:
Tipo nombre variable =valor;
Ejemplo de variable declarada:
int i;
Ejemplo de variable declarada e inicializada:
int i=5;
En una misma línea se puede declarar más de una variable siguiendo el siguiente
formato:
Tipo nombre_variable1, nombre_variable2,....;
Hay que tener en cuenta que la línea tiene que acabar en punto y coma.
El tipo de datos es obligatorio ponerlo y le dice al compilador cuantas celdillas de
memoria tiene que reservar para almacenar el valor de la variable. Los tipos de datos
pueden variar de un compilador a otro, vamos a ver los tipos de datos que podemos usar
con nuestro compilador CCS.
Los tipos de datos básicos que utiliza nuestro compilador son los siguientes:
Sin embargo el compilador CCS también admite los siguientes tipos de datos definidos
en el estándar C y que son los que normalmente se utilizan a la hora de programar:
Todos los tipos excepto float son por defecto sin signo, aunque pueden llevar el
especificador unsigned ó signed y su rango de valores será el que corresponda a su tipo
básico.
20
Estos son los tipos básicos, también están los tipos de datos compuestos como
Enumeraciones, Estructuras y Uniones que están formados por una combinación de los
básicos y que los veremos más adelante.
El nombre de la variable no puede ser una palabra clave (reservada por el compilador
para realizar unas funciones determinadas y los caracteres que podemos utilizar son las
letras: a-z y A-Z ( ¡ojo! la ñ o Ñ no está permitida), los números: 0-9 y el símbolo de
subrayado. Además hay que tener en cuenta que el primer carácter no puede ser un
número.
En el lenguaje C, los datos tienen un tipo, o sea, cada dato utilizado en el programa debe
tener su tipo especificado. Esto permite al compilador conocer el tamaño de dato
(número de bytes requerido en la memoria) y su representación. Hay varios tipos de
datos que se pueden utilizar en el lenguaje de programación miPiC dependiendo del
tamaño de dato y del rango de valores. La tabla muestra el rango de valores que los
datos pueden tener cuando se utilizan en su forma básica.
21
char signed char 8 de -128 a 128
int unsigned int 16 de 0 a 65535
short int 8 de 0 a 255
signed short int 8 de -128 a 127
long int 32 de 0 a 4294967295
signed long int 32 de -2147483648 a
2147483647
Tabla 2 Prefijo de Dato
Juego de Instrucciones
El juego de instrucciones para los microcontroladores 16F8XX incluye 35 instrucciones
en total. La razón para un número tan reducido de instrucciones yace en la arquitectura
RISC. Esto quiere decir que las instrucciones son bien optimizadas desde el aspecto de
la velocidad operativa, la sencillez de la arquitectura y la compacidad del código. Lo
malo de la arquitectura RISC es que se espera del programador que haga frente a estas
instrucciones. Por supuesto, esto es relevante sólo si se utiliza el lenguaje ensamblador
para la programación.
Fuente: https://es.wikiversity.org/wiki/Estructura_del_microcontrolador
23
Fusibles e Interrupciones
Fusibles
Armando A. Cuéllar, Aizol Z. Izaguierreen (2008-Pag. 182)
“Los bit's de configuración o más comúnmente llamados "fusibles" permiten
configurar ciertas funciones en los microcontroladores PIC, como el tipo de
cristal para el oscilador, permiten proteger el código en el micro, entre muchas
funciones.”
Fernando E. Valdez, Ramón P. Areny (2007-Pag. 189)
“Son configuraciones de la forma de funcionamiento del microcontrolador, se
transfieren al PIC cada vez que se graba un programa.”
José M. Angulos, Usategui, Susana R. Yesa (2006-Pag. 113)
“Los fusibles se utilizan para configurar parámetros importantes del sistema, a
diferencia de los registros de configuración, estos fusibles están relacionados con
aspectos más básicos e importantes en el funcionamiento del sistema. Además,
su configuración queda grabada en memoria Flash, de forma tal que no se pierda
al cortar la alimentación al microcontrolador.”
Definición Grupal:
Los fusibles permiten configurar ciertas funciones en los microcontroladores
PIC, como por ejemplo el tipo de cristal para el oscilador y principalmente
permite proteger el código en el micro, estos fusibles se encuentran relacionados
con funcionamiento del sistema.
Fusibles de configuración
Los bits de configuración o más comúnmente llamados "fusibles" permiten configurar
ciertas funciones en los microcontroladores PIC, como el tipo de cristal para el
oscilador, permiten proteger el código en el micro, entre muchas funciones. La cantidad
de funciones que se pueden configurar con los fusibles dependen del microcontrolador,
si tenemos en el 16F84A 4 funciones, en el 16F88 son alrededor de 13 funciones.
Sirven para configurar algunas funciones del micro, como el tipo de oscilador, la
protección de código, habilitar el perro guardián, habilitar el reset maestro, habilitar un
reset inicial, habilitar reset por bajo voltage en la fuente, y otros dependiendo del PIC
usado.
Para el microcontrolador PIC 16F887, la descripción de los fusibles se encuentra en
tabla 3.
24
Descripción de los fusibles
NOMBRE DESCRIPCION
DEBUG :Debug in Circuit Debugger Mode bit
1: In Circuit Debugger Disabled RB6/ICSPCLK and RB6/ICSPDAT are
general purpose I/O Pins
DEBUG 0: In Circuit Debugger Disabled RB6/ICSPCLK and RB6/ICSPDAT are
dedicate to the debugger
´ :Code Protectionbit ( 3)
CD
1: Program memory code protection is disabled
´
CD 0: Program memory code protection is enabled
25
FOSC ⟨ 2 :0 ⟩ :Oscillator Selection Bits
111: RC oscillator CLKOUT function on RA6/OSC2/CLKOUT Pin, RC
FOSC on RA7/OSC1/CLKIN
110: RCIO Oscillator: I/O function on RA6/OSC2/CLKOUT Pin, RC on
RA7/OSC1/CLKIN
101: INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, RC
on RA7/OSC1/CLKIN
100: INTOSCIO oscillator I/O Function on RA6/OSC2 /CLKOUT pin
I/O function on RA7/OSC1/CLKIN
011: EC: I/O Function on RA6/OSC2/CLKOUT pin, CLKIN on
RA7/OSC1/CLKIN
010: HS Ocillator: Hig –Speed Crystal /resonator on
RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN
001: XT Oscillator: Crystal/Resonator on RA6/OSC/CLKOUT and
RA7/OSC1/CLKIN
000: LP: Low –Power Crystal on RA6/OSC2/CLKOUT and
RA7/OSC1/CLKIN
Ejemplos
# FUSES LP Low Power
# FUSES XT Cristal Oscilator ≤ 4Mhz.
# FUSES HS High Speed Oscilator >4Mhz.
# FUSES RC Montaje Resistencia Condensador.
# FUSES WDT Watch Dog Timer Activo
# FUSES NOWDT No Watch Dog Timer.
# FUSES PROTECT Proteccion de Lectura.
# FUSES NOPROTECT No Proteccion de Lectura.
# FUSES PUT Power Up Timer.
Tabla 4 Ejemplos de Fusibles
Fusibles PIC16F887
FUSIBLE DESCRIPCION
CP (Code Protection – Codigo de Este fusible si está habilitado en ON evita
Proteccion de Programa) que otras personas puedan leer el
programa contenido en el PIC
Config
1 = Program memory code protection is
disabled
0 = Program memory code protection is
enabled
FOSC<2:0> (Bits de Selección del Define la función de los terminales A6 y
Oscilador.) A7. Ya sea como puertos I/O, como pines
26
para cristal externo o para recibir o emitir
señales de reloj.
Se comporta de acuerdo a:
111: Oscillator RC
110: RC I/O oscillator
101: INTOSC oscillator
100: INTOSCIO oscllator
011: EC: I/O
010: HS oscillator
001: XT oscillator
000: LP oscillator
Fusibles PIC18F4550
FFUSIBLE DESCRIPCION
CCP2 MUX bit El bit de configuración CCP2 MUX
determina qué pin CCP2 es multiplexado.
Por defecto, se le asigna a RC1 (CCP2MX
= 1) y si el bit de configuración se borra,
27
CCP2 se multiplexa con RB3.
System Clock Postscaler Selection Este fusible es el encargado de hacer la
división de frecuencia tanto de la señal de
entrada 96MHz o del cristal u oscilador de
entrada.
PLL Prescaler Selection Este fusible funciona como un
multiplexor. La finalidad es obtener una
frecuencia de 4MHz para el circuito. La
función de este fuse es dividir la
frecuencia de entrada del Oscilador (OS1
y OS2) a las siguientes escalas: /No divide
(1), /2, /3, /4, /5, /6, /10, /12.
PORTB A/D Si uno requiere hacerlo manualmente debe
de configurar los registros ADCON o
ANSEL correspondientes en el MCU.
Esta función habilita o no la conversión
Analógica-Digital.
VREGEN: USB Internal Voltage Habilita o deshabilita la utilización del
Regulator Enable bit (Modifica el regulador interno del Vbus para el USB.
voltaje del USB)
USBDIV: USB Clock Selection bit Permite realizar una configuración para el
oscilador, configura de donde proviene la
velocidad de reloj para el Módulo USB.
WDTPS3: WDTPS0:Watchdog Timer Selección de bits para la configuración del
Postscale Select bits Watchdog Timer y para ello debe de
habilitar el uso de este.
STVREN: Stack Full/Underflow Reset Si está activo por causa de un
Enable bit subdesbordamiento restablece el
dispositivo de lo contrario las condiciones
de subdesbordamiento no restablecen el
dispositivo.
ICPRT: Dedicated In-Circuit Activa o desactiva el puerto de Puede
Debug/Programming Port (ICPORT) configurar el puerto terminal del programa
Enable bit para enviar y recibir datos seriales.
28
MCLRE (Master Resetea el microcontrolador #FUSES MCLR
Clear)
IESO
(Internal/External Conmutación interno externo #FUSES IESO
Oscillator Switchover #FUSES NOIESO
Bit)
29
Interrupciones
Armando A. Cuéllar, Aizol Z. Izaguierreen (2008-Pag. 201)
“Las interrupciones permiten a cualquier suceso interior o exterior interrumpir la
ejecución del programa principal en cualquier momento. En el momento de
producirse, el PIC ejecuta un salto a la rutina de atención a la interrupción
previamente definida por el programador, donde se atenderá a la demanda de la
interrupción.”
Fernando E. Valdés Pérez, Ramón P. Areny (2007-Pag. 217)
“Una solicitud de interrupción o simplemente una interrupción es un evento de
origen interno o externo que, si es atendido, hace que el microcontrolador
interrumpa la ejecución del programa en curso y en su lugar ejecute las
interrupciones de otro programa. Normalmente, cuando el programa que atiende
la solicitud de interrupciones ha completado su ejecución, el microcontrolador
continua con las instrucciones del programa interrumpido, justo con la
instrucción que sigue a la que se estaba ejecutando cuando se produjo la
solicitud de interrupción.”
José M. Angulos, Usategui, Susana R. Yesa (2006-Pag. 150)
“Las interrupciones son un mecanismo por el que un dispositivo, ante la
ocurrencia de un evento, pide al procesador que interrumpa el programa que se
está ejecutando y pase a ejecutar temporalmente una subrutina especifica. Esta
subrutina recibe el nombre de rutina de atención a interrupción. Cuando el
microcontrolador recibe una señal de interrupción, el contador de programa
apunta a la dirección 04H de la memoria de programa, por eso, allí se debe
escribir toda la programación necesaria para atender dicha interrupción.#
Definición Grupal:
Permiten interrumpir la ejecución del programa principal en cualquier
momento, es decir pide al procesador que interrumpa el programa que se está
ejecutando y pase a ejecutar temporalmente una subrutina especifica, el PIC
ejecuta un salto a la rutina de atención a la interrupción previamente definida por
el programador.
Interrupciones
30
Los 16CXX agregan la posibilidad de contar con sistema de interrupciones. Este
sistema consiste en un mecanismo por el cual un evento interno o externo, asincrónico
respecto del programa, puede interrumpir la ejecución de éste produciendo
automáticamente un salto a una subrutina de atención, de manera que pueda atender
inmediatamente el evento, y retomar luego la ejecución del programa exactamente en
donde estaba al momento de ser interrumpido.
Este mecanismo es muy útil por ejemplo para el manejo de timers o rutinas que deben
repetirse periódicamente (refresh de display, antirebote de teclado, etc.), detección de
pulsos externos, recepción de datos, etc.
Existen de tres a doce eventos que pueden generar interrupciones en los PIC16CXX
existentes hasta el momento, pero nada impide que puedan agregarse más en versiones
futuras.
Funcionamiento
En los 16CXX las interrupciones se comportan casi exactamente igual que las
subrutinas. Desde el punto de vista del control del programa, al producirse una
interrupción se produce el mismo efecto que ocurriría si el programa tuviese un CALL
0004h en el punto en que se produjo la interrupción.
En uno de los registros de control del sistema de interrupciones existe un bit de
habilitación general de interrupciones GIE, que debe ser programado en 1 para que las
interrupciones puedan actuar. Al producirse una interrupción, este bit se borra
automáticamente para evitar nuevas interrupciones.
La instrucción RETFIE que se utiliza al final de la rutina de interrupción, es idéntica a
un retorno de subrutina, salvo que además coloca en uno automáticamente el bit GIE
volviendo a habilitar las interrupciones.
Dentro de la rutina de interrupción, el programa, Deberá probar el estado de los flags de
interrupción de cada una de las fuentes habilitadas, para detectar cual fue la que causo la
interrupción y así decidir qué acción tomar.
Interrupciones
Ejemplos:
Interrupciones Descripción
#INT_AD Conversión AD completa.
#INT_ADOF Conversión AD fuera de rango de tiempo
#INT_BUSCOL Colisión de bus
#INT_BUTTON Por botón (14000)
#INT_CAERR Erro en el módulo CAN
31
#INT_CANIRX Mensaje invalido n el bus CAN
#INT_CANRX0 Bus CAN recibe un nuevo mensaje en buffer 0
#INT_CANRX1 Bus CAN recibe un nuevo mensaje en buffer 1
Interrupciones Descripción
#INT_AD Conversión AD completa.
#INT_ADOF Conversión AD fuera de rango de tiempo
#INT_BUSCOL Colisión de bus
#INT_BUTTON Por botón (14000)
#INT_CAERR Erro en el módulo CAN
#INT_CANIRX Mensaje invalido n el bus CAN
#INT_CANRX0 Bus CAN recibe un nuevo mensaje en buffer 0
#INT_CANRX1 Bus CAN recibe un nuevo mensaje en buffer 1
Tabla 8 Ejemplos de interrupciones
32
Interrupciones RBI (Interrupciones por cambio de estado)
Cuatro pines del PORTB (RB7:RB4) son capaces de disparar una interrupción por
cambio de estado. Este tipo de interrupciones son comúnmente usadas para el manejo de
teclados matriciales, de ahí que estos pines también los denominen KBI0:KBI3
De estos 4 pines, solo producirán interrupción aquellos configurados como entradas, si
alguno está configurado como salida, queda excluido de la interrupción por cambio de
estado.
Interrupciones PIC16F887
Registro INTCON
El registro INTCON contiene varios bits de habilitación y de bandera para el
desbordamiento en el registro TMR0, e interrupciones por el cambio del estado en el
puerto PORTB y las interrupciones externas en el pin INT.
R/W R/W R/W R/W R/W R/W R/W R/W CARACTERI
(0) (0) (0) (0) (0) (0) (0) (X) STICAS
INTC GIE PEI T0IE INT RBI T0IF INT RBIF NOMBRE DE
ON E E E F BIT
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Tabla 9 Registro INT
INTERRUPCIÓN DESCRIPCIÓN
GIE - Global Interrupt Enable bit Bit de habilitación de interrupciones
globales
Controla simultáneamente todas las fuentes
de interrupciones posibles.
1= Habilita las interrupciones no
enmascaradas.
0= Deshabilita las interrupciones no
enmascaradas.
33
temporizador Timer0 o por el cambio del
estado en el puerto PORTB o por el cambio
en el pin RB0/INT.
1= Habilita las interrupciones periféricas
no enmascaradas.
0= Deshabilita las interrupciones
periféricas no enmascaradas.
34
0= En el registro del Timer0 no ha ocurrido
desbordamiento.
Registro PIE1
El registro PIE1 contiene los bits de habilitación de interrupciones periféricas.
Bit no implementado
R/W Bit de lectura/escritura
35
(0) Después del reinicio, el bit se pone a cero
INTERRUPCIONES DESCRIPCIÓN
36
- CCP1
Permite generar una petición de
interrupción en el módulo CCP1 utilizado
para procesamiento de la señal PWM.
1 - Habilita la interrupción CCP1.
0 - Deshabilita la interrupción CCP1.
Registro PIE2:
El registro PIE2 también contiene varios bits de habilitación de interrupciones.
37
interrupciones globales) global
GIEH(Interrupciones de alta 0 - Interrupciones
prioridad) deshabilitadas a nivel
global.
PEIE Interrupción externa Es similar al bit GIE, sin
Peripheral Interrupt Enable 1 - Interrupciones de embargo controla
bit (bit de habilitación de periféricos interrupciones habilitadas
interrupciones periféricas) deshabilitadas a nivel por los periféricos. No
GIEL (Interrupciones de global influye interrupciones
baja prioridad) 0 - Interrupciones de causadas por el
periféricos habilitadas a temporizador Timer0 o por
nivel global. el cambio del estado en el
puerto PORTB o por el
cambio en el pin RB0/INT.
T0IE - TMR0IE Interrupción externa Controla interrupciones
TMR0 Overflow Interrupt 1 - Habilita causadas por el
Enable bit (bit de interrupciones por desbordamiento del Timer0
habilitación de Timer0.
interrupciones por el 0 - Deshabilita
desbordamiento del interrupciones por
temporizador Timer0) Timer0.
38
a 0 por software). cero.
0 - En el registro del
Timer0 no ha ocurrido
desbordamiento.
39
TXIE 1 - Habilita la Habilita las interrupciones
EUSART Transmit Interrupt interrupción de de transmisión síncrona
Enable bit (bit de transmisión del EUSART
habilitación de EUSART.
interrupciones de 0 - Deshabilita la
transmisión del EUSART) interrupción de
transmisión del
EUSART.
40
oscilador) interrupción de fallo en
el oscilador.
41
Funciones para control DIO
CREACIÓN DE UN PROGRAMA USANDO PIC WIZARD
García Breijo Eduardo (2008, Pág. 46) Menciona que:
“PIC Wizard: Es un comando que nos proporciona un asistente para la creación
de proyectos, permitiendo al usuario especificar los parámetros del proyecto.
Genera los archivos .c, .h y .pjt.
Tras pedir el nombre del nuevo proyecto aparece una ventana con un submenú
para configurar las distintas opciones que presenta y otro submenú donde se
muestra el código resultante de la configuración. Recorriendo las distintas
opciones se llega a obtener el código de configuración deseado, tras lo cual ya
podemos empezar a escribir el resto del código del programa. Debemos tener en
cuenta que se incluye un fichero de cabecera *.h donde se encuentra la
configuración del dispositivo. ” [ 1 ]
Para la creación de un programa usando PIC Wizard debemos seguir los siguientes
pasos:
1. En la barra de menús seleccionamos Project.
42
Figura 15 Ventana de opciones de configuración Fuente: PCW
43
EJERCICIO 1
1.1. Tema:
SECUENCIA DE LEDS_MODIFICADO
1.2. Objetivo :
1.3. Descripción :
Modificar el ejercicio 1 utilizando en este caso todos los pines del puerto C y
realizar la secuenciad de leds 00 (apagado), 01(Secuencia derecha), 10(secuencia
Izquierda), y con 11 a diferencia del ejercicio anterior realizar el (barrido de leds
Derecha-Izquierda) utilizando el software MPLAB IDE X.
DESPLAZAMIENTO DE LEDS
Microcontrolador PIC16F887.
8 diodos Leds.
8 resistencias de 220 ohmios.
Cables.
Fuente de 5V DC.
Quemador de PIC
Software MPLAB IDE X
Software PICkit 2
1.5. Diagramas y esquemas:
44
__CONFIG _CONFIG1, _FOSC_HS & CLRF PORTC
_WDTE_ON & _PWRTE_OFF & _MCLRE_OFF & CLRF PORTD
_CP_OFF & _CPD_OFF & _BOREN_OFF & CLRF PORTE
_IESO_OFF & _FCMEN_OFF & _LVP_OFF CLRF AUX1
; CONFIG2 CLRF AUX2
; __config 0xFFFF MOVLW 0X00
__CONFIG _CONFIG2, _BOR4V_BOR40V &
_WRT_OFF INICIO BTFSC PORTE,0
CALL REV1
CNT1 EQU 0X20 ; asigna la variable cont1 BTFSC PORTE,1
CNT2 EQU 0X21 CALL ARRIBA
CNT3 EQU 0X22 CALL APAGADO
AUX1 EQU 0X23 GOTO INICIO
AUX2 EQU 0X24
ORG 0 REV1
GOTO CONFIGURACION ; salta a la BTFSC PORTE,1
configuración CALL CENTRO
ORG 5 CALL ABAJO
GOTO INICIO
DELAY1 ; crea la variable delay
MOVLW 0x01 ;carga en W el valor de 1 ARRIBA
MOVWF CNT1 ;mueve cont1 a W MOVLW B'00000001'
DELAY2 MOVWF TRISC
MOVLW 0xFF CALL DELAY1
MOVWF CNT2 MOVLW B'00000010'
DELAY3 MOVWF TRISC
MOVLW 0XFF CALL DELAY1
MOVWF CNT3 MOVLW B'00000100'
START MOVWF TRISC
DECFSZ CNT3 CALL DELAY1
GOTO START MOVLW B'00001000'
DECFSZ CNT2 MOVWF TRISC
GOTO DELAY3 CALL DELAY1
DECFSZ CNT1 MOVLW B'00010000'
GOTO DELAY2 MOVWF TRISC
RETURN CALL DELAY1
MOVLW B'00100000'
CONFIGURACION MOVWF TRISC
BSF STATUS, RP0 CALL DELAY1
MOVLW B'00000000' MOVLW B'01000000'
MOVWF TRISA MOVWF TRISC
MOVLW B'00000000' CALL DELAY1
MOVWF TRISB MOVLW B'10000000'
MOVLW B'00000000' MOVWF TRISC
MOVWF TRISC CALL DELAY1
MOVLW B'00000000' GOTO INICIO
MOVWF TRISD ABAJO
MOVLW B'11111111' MOVLW B'10000000'
MOVWF TRISE MOVWF TRISC
MOVLW B'110' CALL DELAY1
MOVWF OSCCON MOVLW B'01000000'
BSF STATUS, RP1 MOVWF TRISC
CLRF ANSEL CALL DELAY1
CLRF ANSELH MOVLW B'00100000'
BCF STATUS, RP0 MOVWF TRISC
BCF STATUS, RP1 CALL DELAY1
CLRF PORTA MOVLW B'00010000'
CLRF PORTB MOVWF TRISC
45
CALL DELAY1 CALL DELAY1
MOVLW B'00001000' MOVLW B'11111111' ; fin de encendido todos
MOVWF TRISC los leds
CALL DELAY1 MOVWF TRISC
MOVLW B'00000100' CALL DELAY1
MOVWF TRISC MOVLW B'01111111'
CALL DELAY1 MOVWF TRISC
MOVLW B'00000010' CALL DELAY1
MOVWF TRISC MOVLW B'00111111'
CALL DELAY1 MOVWF TRISC
MOVLW B'00000001' CALL DELAY1
MOVWF TRISC MOVLW B'00011111'
CALL DELAY1 MOVWF TRISC
GOTO INICIO CALL DELAY1
CENTRO MOVLW B'00001111'
MOVLW B'00000001' MOVWF TRISC
MOVWF TRISC CALL DELAY1
CALL DELAY1 MOVLW B'00000111'
MOVLW B'00000011' MOVWF TRISC
MOVWF TRISC CALL DELAY1
CALL DELAY1 MOVLW B'00000011'
MOVLW B'00000111' MOVWF TRISC
MOVWF TRISC CALL DELAY1
CALL DELAY1 MOVLW B'00000001'
MOVLW B'00001111' MOVWF TRISC
MOVWF TRISC CALL DELAY1
CALL DELAY1 MOVLW B'00000000'
MOVLW B'00011111' MOVWF TRISC
MOVWF TRISC CALL DELAY1
CALL DELAY1
MOVLW B'00111111' GOTO INICIO
MOVWF TRISC APAGADO
CALL DELAY1 MOVLW B'00000000'
MOVLW B'01111111' MOVWF TRISC
MOVWF TRISC GOTO INICIO
CALL DELAY1 END
1.7. Resultado:
Se demostró la configuración de básica en lenguaje ensamblador para la secuencia de
leds con programación el lenguaje en C y la utilización de los bloque de Trisc.
46
EJERCICIO 2
1.1. Tema:
Mod16 NBCD_ Modificado
1.2. Objetivo :
Realizar el ejercicio 2 con las mismas condiciones anteriores pero usar el Projet
Wizard de PIC C Compiler (CCS).
1.3. Descripción :
El presente programa nos permite tener el manejo del control digital de entradas y
salidas en el cual realizamos la aplicación de un Mod16 NBCD, para el cual
realizamos nuestro código en lenguaje C y después lo implementaremos
físicamente, cargaremos nuestro código hexadecimal al microcontrolador PIC
16F887 mediante el PICkit 2 y lo implementaremos de acuerdo al diagrama de
Proteus.
Mod16 NBCD
Microcontrolador PIC16F887.
Display 7 segmentos.
Dip_switch
4 resistencias de 220 ohmios.
Cables.
Fuente de 5V DC.
Quemador de PIC
Software MPLAB IDE X
Software PICkit 2
1.5. Diagramas y esquemas:
47
while (true) //Bucle infinito
{
if(input(Pin_B0)==0 && input(Pin_B1)==0 && input(Pin_B2)==0 && input(Pin_B3)==0) //Deciciones para
imprimir el numero asignado CERO
{ output_C(0x3f); }
if(input(Pin_B0)==1 && input(Pin_B1)==0 && input(Pin_B2)==0 && input(Pin_B3)==0) //uno
{
output_C(0x06);
}
if(input(Pin_B0)==0 && input(Pin_B1)==1 && input(Pin_B2)==0 && input(Pin_B3)==0) //dos
{
output_C(0x5b);
}
if(input(Pin_B0)==1 && input(Pin_B1)==1 && input(Pin_B2)==0 && input(Pin_B3)==0) //tres
{
output_C(0x4f);
}
if(input(Pin_B0)==0 && input(Pin_B1)==0 && input(Pin_B2)==1 && input(Pin_B3)==0) //cuatro
{
output_C(0x66);
}
if(input(Pin_B0)==1 && input(Pin_B1)==0 && input(Pin_B2)==1 && input(Pin_B3)==0) //cinco
{
output_C(0x6d);
}
if(input(Pin_B0)==0 && input(Pin_B1)==1 && input(Pin_B2)==1 && input(Pin_B3)==0) //seis
{
output_C(0x7d);
}
if(input(Pin_B0)==1 && input(Pin_B1)==1 && input(Pin_B2)==1 && input(Pin_B3)==0) //siete
{
output_C(0x07);
}
if(input(Pin_B0)==0 && input(Pin_B1)==0 && input(Pin_B2)==0 && input(Pin_B3)==1) //ocho
{
output_C(0x7f);
}
if(input(Pin_B0)==1 && input(Pin_B1)==0 && input(Pin_B2)==0 && input(Pin_B3)==1) //nueve
{
output_C(0x6f);
}
if(input(Pin_B0)==0 && input(Pin_B1)==1 && input(Pin_B2)==0 && input(Pin_B3)==1) //diez
{
output_C(0x80);
}
if(input(Pin_B0)==1 && input(Pin_B1)==1 && input(Pin_B2)==0 && input(Pin_B3)==1)
//once
{
output_C(0x80);
}
if(input(Pin_B0)==0 && input(Pin_B1)==0 && input(Pin_B2)==1 && input(Pin_B3)==1) //doce
{
output_C(0x80);
}
if(input(Pin_B0)==1 && input(Pin_B1)==0 && input(Pin_B2)==1 && input(Pin_B3)==1) //trece
{
output_C(0x80);
}
48
if(input(Pin_B0)==0 && input(Pin_B1)==1 && input(Pin_B2)==1 && input(Pin_B3)==1) //14
{
output_C(0x80);
}
if(input(Pin_B0)==1 && input(Pin_B1)==1 && input(Pin_B2)==1 && input(Pin_B3)==1) //15
{
output_C(0x80);
}
}
}
1.7. Resultado:
EJERCICIO PROPUESTO
1.- Modificar el ejercicio 1 utilizando en este caso todos los pines del puerto C y realizar
la secuenciad de leds 00 (apagado), 01(Secuencia derecha), 10(secuencia Izquierda), y
con 11 a diferencia del ejercicio anterior realizar el (barrido de leds Derecha-Izquierda)
utilizando el software MPLAB IDE X.
2.- Realizar el ejercicio 2 con las mismas condiciones anteriores pero usar el Project
Wizard de PIC C Compiler (CCS).
49
CREACIÓN DE UN PROGRAMA USANDO SOURCE FILE
García Breijo Eduardo (2008, Pág. 45) Menciona que:
“Source File: Es un comando que nos proporciona un asistente para la creación de
proyectos sin definir las condiciones iniciales, ya que se presenta un archivo en blanco.
Genera los mismos archivos que Pic Wizard la única diferencia es que con esta forma
creamos el código desde cero.
Con la opción NEW → SOURCE FILE, el programa pide el nombre del nuevo
fichero y crea una nueva ventana en blanco donde podemos empezar a escribir. ” [ 2 ]
Para la creación de un programa usando SOURCE FILE debemos seguir los siguientes
pasos:
1. En la barra de menús seleccionamos New → Source File
2. Colocar un nombre al proyecto.
3. Seleccionar la carpeta donde guardaremos el proyecto.
4. Finalmente aparecerá una ventana en la que empezamos a escribir el programa
desde cero.
50
USE FAST_IO (puerto): Esta directiva afecta al código que el compilador
generará para las instrucciones de entrada y salida. Este método rápido de hacer
I/O ocasiona que el compilador realice I/O sin programar el registro de
dirección. El puerto puede ser A-G.
Ejemplo:
#use fast_io(A) ” [ 3 ]
51
Ejemplo:
output_low(PIN_A0);
FUNCIONES DE RETARDO
Cánovas López Andrés (2003, Pág. 33) Menciona que:
“Dentro de la función de retardo tenemos:
DELAY_CYCLES(count):Esta función realiza retardos según el número de
ciclos de instrucción especificado en count; los valores posibles van desde 1 a
255. Un ciclo de instrucción es igual a cuatro periodos de reloj.
Ejemplo:
delay_cycles( 3 ); // retardo de 3ciclos instrucción; es igual que un
NOP
52
utilizar la directiva #use delay antes de la llamada a esta función para que el
compilador sepa la frecuencia de reloj.
Ejemplo:
#use delay(clock=20000000) ” [ 5 ]
53
EJERCICIO 3
1.1. Tema:
Mod16 BCD
1.2. Objetivo :
Mod16 BCD
Microcontrolador PIC16F887.
Display 7 segmentos.
Dip_switch
4 resistencias de 220 ohmios.
Decoder 74ls47
Cables.
Fuente de 5V DC.
Quemador de PIC
Software MPLAB IDE X
Software PICkit 2
1.5. Diagramas y esquemas:
54
#include <16f887.h> // incluye la libreria del PIC
#fuses XT, NOWDT, NOPROTECT // configura los Fusibles de forma manual
#use delay(clock = 4M) //Delay de 4M
#use standard_io(B)
#use standard_io(C)
void main() //Programa Principal
{
while (true)
{
if(input(Pin_B0)==0 && input(Pin_B1)==0 && input(Pin_B2)==0 && input(Pin_B3)==0) //cero
{ output_C(0); }
if(input(Pin_B0)==1 && input(Pin_B1)==0 && input(Pin_B2)==0 && input(Pin_B3)==0) //uno
{ output_C(1); }
55
4.- Realizar el ejemplo 4 modificando las funciones básicas de DIO, reemplazar
Standard
56
FUNCIONES PARA CONTROL
El compilador CCS contiene más de 307 funciones integradas que simplifiquen el
acceso al hardware, mientras que la producción eficiente y altamente optimizado
código. [1]
Se incluyen funciones de hardware del dispositivo de características tales como:
Temporizadores y módulos PWM
Convertidores A / D
Datos on-chip EEPROM
LCD controladores
Memoria externa buses
PIC16F887.
Es un Microchip que dispone de todos los componentes disponibles en la mayoría de los
microcontroladores modernos. Por su bajo precio, un rango amplio de aplicaciones, alta
calidad y disponibilidad, es una solución perfecta aplicarlo para controlar diferentes
procesos en la industria, en dispositivos de control de máquinas, para medir variables de
procesos etc. Algunas de sus características principales se enumeran a continuación.
Entre las características básicas del PIC16F887.
TECLADO MATRICIAL.
57
Figura 22 Teclado Matricial Fuente:
dinastiatecnologica.com
Un teclado matricial es un simple arreglo de botones conectados en filas y columnas, de
modo que se pueden leer varios botones con el mínimo número de pines requeridos. Un
teclado matricial 4x4 solamente ocupa 4 líneas de un puerto para las filas y otras 4
líneas para las columnas, de este modo se pueden leer 16 teclas utilizando solamente 8
líneas de un microcontrolador.
Si asumimos que todas las columnas y filas inicialmente están en alto (1 lógico), la
pulsación de un botón se puede detectar al poner cada fila a en bajo (0 lógico) y checar
cada columna en busca de un cero, si ninguna columna está en bajo entonces el 0 de las
filas se recorre hacia la siguiente y así secuencialmente.
PANTALLA LCD.
MOTOR DC
Un motor CD consiste en un estator, una armadura, un rotor y un colector con
escobillas. La polaridad opuesta entre dos campos magnéticos dentro del motor hace
que gire. Los motores CD son el tipo más simple de motor y se utilizan en
electrodomésticos, como las máquinas de afeitar eléctricas, y en ventanas eléctricas de
automóviles.
58
Figura 24 Motor DC Fuente: dinastiatecnologica.com
Tipos de motores DC
Las bobinas y la armadura en un motor derivado están conectadas en paralelo,
conocidas como derivación, causando que la corriente de campo sea proporcional a la
carga del motor
MOTOR A PASOS
Los motores paso a paso operan de manera diferente a otros motores DC, que sólo giran
cuando se aplica el voltaje. Un motor paso a paso giratorio es un dispositivo
electromecánico que puede dividir una rotación completa (360°) en un gran número de
pasos rotacionales. Los motores paso a paso se controlan electrónicamente y no
necesitan costosos dispositivos de retroalimentación.
Voltaje:
Los motores paso a paso tienen una tensión eléctrica de trabajo. Este valor viene
impreso en su carcasa o por lo menos se especifica en su hoja de datos.
Grados por paso:
Una operación de medio-paso o semi-paso (half step) del motor duplicará la cantidad de
pasos por revolución al reducir la cantidad de grados por paso. Las cantidades más
comunes de grados por paso son: 0,72°, 1,8°, 3,6°, 7,5°, 15° y hasta 90°. [2]
PUENTE H
Un Puente H o Puente en H es un circuito electrónico que permite a un motor eléctrico
DC girar en ambos sentidos, avance y retroceso. Son ampliamente usados en robótica y
como convertidores de potencia. Los puentes H están disponibles como circuitos
integrados, pero también pueden construirse a partir de componentes discretos
59
El puente H se usa para invertir el giro de un motor, pero también puede usarse para
frenarlo (de manera brusca), al hacer un corto entre las bornas del motor, o incluso
puede usarse para permitir que el motor frene bajo su propia inercia, cuando
desconectamos el motor de la fuente que lo alimenta. [4]
Acciones del puente H:
S1 S2 S3 S4 Resultado
1 0 0 1 El motor gira en avance
0 1 1 0 El motor gira en retroceso
0 0 0 0 El motor se detiene bajo su inercia
1 0 1 0 El motor frena (fast-stop)
Figura 27 Digital Input - Output Esquema de Ejercicio proteus Fuente: Simulación 7mo A 2016
60
En el digrama tenemos 4 pines del puerto B y 4 del C que se han pogramado como
salidas para mostrar el resultado del proceso ademas de un switch activa las salidas del
puerto B prendiendo los diodos led y al mismo tiempo activa las salidas del puerto C del
decodificador del display de 7 segmentos que realizara una tarea según la programación
predeterminada.
Consideraciones:
Los dipswitch se conectan como entradas del microcontrolador y los LED como salidas
de un proceso.
Los resistencias conectadas a la fuente de alimentación sirven para fijar un nivel en alto
cuando el dipswitch no está cerrando el circuito.
Se recomienda usar los puertos A (RA0 a RA7) para la conexión de dip switch.
Para encender los LED es recomendable utiliza un buffer, el cual tiene un conjunto de
transistores que invierten el pulso y amplifican la corriente.
Para manejar el display utilizamos un decodificador que se lo puede hacer internamente
con programacion en el pic o externamente usando un C.I. que variara dependiendo si
trabajremos con anodo o catodo comun.
Consideraciones:
61
El trabajar con teclados organizados matricialmente se requiere el multiplexaje que se
define como una forma de compartir secuencialmente el tiempo para que dos o más
señales se puedan transmitir a la vez por un mismo medio es decir el canal de
comunicación .
Las líneas de entrada permanecen en un nivel lógico alto, gracias a los elementos pull-
up exclusivos del puerto B.
Para Tener una mejor eficiencia con los teclados se debe enviar por las líneas de salida
sólo un cero a la vez.
El puerto B del microcontrolador se utiliza como bus de datos, y el puerto A se encarga
de generar las señales de control.
En los casos en que sólo nos interesa escribir datos en la pantalla LCD, el pin de
selección de lectura/escritura (R/W) en el display, se conecta a tierra.
Para el módulo LCD, se emplea un potenciómetro de 5KOhm, conectado entre +5V y
tierra, para controlar el contraste de la pantalla.
MOTOR DC
U2(VSS)
U1
1 15 16 8 U2
RE3/MCLR/VPP RC0/T1OSO/T1CKI
16
RC1/T1OSI/CCP2
2 17 2 3
0 3
RA0/AN0/ULPWU/C12IN0-
RA1/AN1/C12IN1-
RC2/P1A/CCP1
RC3/SCK/SCL
18 7
IN1
IN2
VSS VS OUT1
OUT2
6
4 23 1
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA EN1
5 24
1 6
RA3/AN3/VREF+/C1IN+
RA4/T0CKI/C1OUT
RC5/SDO
RC6/TX/CK
25 +88.8
7 26 9
RA5/AN4/SS/C2OUT RC7/RX/DT EN2 kRPM
14 10 11
RA6/OSC2/CLKOUT IN3 OUT3
13 19 15 14
RA7/OSC1/CLKIN RD0 IN4 GND GND OUT4
20
RD1
33 21
RB0/AN12/INT RD2
34 22 L293D
RB1/AN10/C12IN3- RD3
35 27
RB2/AN8 RD4
36 28
RB3/AN9/PGM/C12IN2- RD5/P1B
37 29
RB4/AN11 RD6/P1C
38 30
RB5/AN13/T1G RD7/P1D
39
RB6/ICSPCLK
40 8
RB7/ICSPDAT RE0/AN5
9
RE1/AN6
10
RE2/AN7
PIC16F887
Consideraciones:
Para que el circuito tenga un buen funcionamiento se debe tener en cuenta la polaridad
del motor, debe tener en cuenta una resistencia limitadora de corriente y el voltaje de
62
operación del microcontrolador a utilizar en este caso se utilizó un PIC 16F887,
debemos tener en cuenta la forma de conexión en los motores para realizarlo de una
forma segura, sabiendo que la frecuencia a la que trabaja el PIC es de 20MHz.
MOTOR A PASOS
63
EJERCICIO 4
1.1. Tema:
Desplazamiento Leds con Pulsador_ Modificado
1.2. Objetivo :
Realizar el ejemplo 4 modificando las funciones básicas de DIO, reemplazar
Standard IO por fast IO y analizar su función.
1.3. Descripción :
El presente programa nos permite tener el manejo del control digital de entradas
y salidas en el cual realizamos la aplicación de las luces del auto fantástico, para
el cual realizamos nuestro código en lenguaje assembler en el software MPLAB
de Microchip lo simularemos en Proteus y que después lo implementaremos
físicamente, cargaremos nuestro código hexadecimal al microcontrolador PIC
16F887 mediante el PICkit 2 y lo implementaremos de acuerdo al diagrama de
Proteus.
1.4. Materiales y equipos:
DESPLAZAMIENTO DE LEDS
Microcontrolador PIC16F887.
8 diodos Leds.
8 resistencias de 220 ohmios.
Cables.
Pulsador
Fuente de 5V DC.
Quemador de PIC
Software MPLAB IDE X
Software PICkit 2
1.5. Diagramas y esquemas:
64
#include <16f887.h> // incluimos la Libreria del Pic output_C(8);
a Utilizar delay_ms(tiempo);
#fuses XT, NOWDT, NOPROTECT //Activamos los output_C(16);
Fusibles necesarios delay_ms(tiempo);
#use delay(clock = 4M) // Declaramos el Delay de output_C(32);
4MHz para trabajar delay_ms(tiempo);
#use standard_io(B) // Declaramos e puerto B como output_C(64);
salidas o como Entradas delay_ms(tiempo);
output_C(128);
#use fast_io (C) //Uso rapido del puerto C delay_ms(tiempo);
#use fast_io (A)
int tiempo = 100; output_C(64);
void main() // Programa Principal delay_ms(tiempo);
{ output_C(32);
set_tris_c(0x00); //Declaramos el puerto c como delay_ms(tiempo);
salidas output_C(16);
set_tris_a(0xff); //Declaramos el puerto Acomo delay_ms(tiempo);
entradas output_C(8);
while (true) //Bucle infinito delay_ms(tiempo);
{ output_C(4);
if(input(pin_A0)== 0 ) // Consulta si en el Pin A0=0 delay_ms(tiempo);
entonces hace: output_C(2);
{ delay_ms(tiempo);
output_C(1); //Enciende el bit C0 del puerto C }
delay_ms(tiempo); // Retardo de 100 ms para if(input(pin_A0)== 1)
encender el Led siguiente {
output_C(2); //Enciende el pin C1 del puerto C output_C(0);
delay_ms(tiempo); }
output_C(4); }
delay_ms(tiempo); }
1.7. Resultado:
1.8.
1.9. Se demostró la configuración de básica en lenguaje ensamblador en MPLAB
para la secuencia de leds con programación el lenguaje en C y la utilización de
un pulsador para dar inicio a la secuencia.
65
1.10. EJERCICIO 5
1.1. Tema:
Encendido y apagado de un motor DC_Modificado
1.2. Objetivo :
Repetir el ejercicio 5 reemplazando un Transistor por el Driver L293D (Puente
H) para encender y apagar un motor DC
1.3. Descripción :
El presente programa nos permite tener el manejo del encendido de un motor
DC, para lo cual realizamos elcódigo en PIC C Compiler, luego lo simularemos
en Proteus y posterior lo implementaremos físicamente, cargaremos nuestro
código hexadecimal al microcontrolador PIC 16F887 mediante el PICkit 2 y lo
implementaremos de acuerdo al diagrama de Proteus.
1.4. Materiales y equipos:
Encendido y apagado de un motor DC
Microcontrolador PIC16F887.
Motor DC.
Transistor
Cables.
Fuente de 5V DC.
Quemador de PIC.
Software PICkit 2
Teclado matricial
Pantalla LCD
Resistencia 10k
1.5. Diagramas y esquemas:
#include <lcd1.c> //incluimos la libreria del if(tecla=='A') //Si la entrada en el pin A0=0
LCD {
#include <KBD4x4.c> lcd_gotoxy(1,1);
#use standard_io (C) lcd_putc("\fContador") ;
lcd_gotoxy(1,2);
signed int cont=0; //variavle cont con signo lcd_putc("Descendente") ;
char tecla; for(int i=0; i<=10; i++)
{
void main() output_C(cont); //saca en el puerto C el
{ valor del cont
cont--; //cont va decrementando de
kbd_init(); uno en uno
lcd_init(); delay_ms(500);
lcd_gotoxy(1,1);
lcd_putc("\f# para Ascendente") ; if(cont<=-1) cont=9;//si cont llega a 0 regresa
lcd_gotoxy(1,2); de inmediato a 9
lcd_putc("* para Descendente") ;
while (true)
{ }
tecla = kbd_getc(); }
if(tecla!=0) if((tecla!='C')&&(tecla!='A') )
{ {
if(tecla=='C') //Si la entrada en el pin A0=1 lcd_gotoxy(1,1);
{ lcd_putc("\fTecla No");
lcd_gotoxy(1,1); lcd_gotoxy(1,2);
lcd_putc("\fContador") ; lcd_putc("Asignada");
lcd_gotoxy(1,2);
lcd_putc("Ascendente") ; output_c(0b1111);
for(int i=0; i<=10; i++) }
{ }
output_C(cont); // saca en el puerto C el }
valor del cont }
cont++; //Es igual cont=cont+1 cont va
incrementando de uno en uno
1.7. Resultado:
1.8.
1.9. Se demostró la configuración de básica en lenguaje C para obtener una
secuencia de leds con su manejo desde teclado matricial y su visualización en
la pantalla lcd el cual tendrá mensajes de encendido apagado y selección de las
secuencias de desplazamiento.
1.10.
1.11.
1.12. EJERCICIO 7
1.1. Tema:
1.13. ON-OFF cambio de Giro de un Motor Dc con LCD y Teclado
1.2. Objetivo :
1.14. Variar la velocidad de un motor DC usando las 3 primeras teclas.
1.3. Descripción :
1.15. El presente programa nos permite tener el manejo del encendido y
cambio de giro de un motor DC mediante el teclado matricial , para lo cual
realizamos el código en PIC C Compiler, luego lo simularemos en Proteus y
posterior lo implementaremos físicamente, cargaremos nuestro código
hexadecimal al microcontrolador PIC 16F887 mediante el PICkit 2 y lo
implementaremos de acuerdo al diagrama de Proteus.
1.4. Materiales y equipos:
1.16. Encendido_ apagado y cambio giro de un motor DC
Microcontrolador PIC16F887.
Motor DC.
Driver l293
Cables.
Fuente de 5V DC.
Quemador de PIC.
Software PICkit 2
Teclado matricial
Pantalla LCD
Resistencia 10k
1.5. Diagramas y esquemas:
1.17.
1.18.
1.20.
1.21. Figura 35 Esquema de Ejercicio propuesto #8 Fuente: Simulación 7mo A 2016
1.48. RS 232
1.49.
1.50. Figura 37 COMUNICACION PIC – PC Fuente: www.db9-pinout.com
1.51. La denominada RS-232 es una interfaz que designa una norma para el
intercambio serie de datos binarios entre un DTE (o Equipo terminal de datos) y
un DCE (o Equipo de terminación del circuito de datos), aunque existen otras
situaciones en las que también se utiliza la interfaz RS-232.
1.52. La interfaz RS-232 está diseñada para distancias cortas, de unos 15
metros o menos, y para unas velocidades de comunicación bajas, de no más de
20 KBytes. A pesar de ello, muchas veces se utiliza a mayores velocidades con
un resultado aceptable.
1.53. La interfaz puede trabajar en comunicación asíncrona o síncrona y tipos
de canal simplex, half duplex o full duplex. En un canal simplex los datos
siempre viajarán en una dirección, por ejemplo desde DCE a DTE. En un canal
half dúplex, los datos pueden viajar en una u otra dirección, pero sólo durante
un determinado periodo de tiempo; luego la línea debe ser conmutada antes que
los datos puedan viajar en la otra dirección. En un canal full duplex, los datos
pueden viajar en ambos sentidos simultáneamente. Las líneas de handshaking
de la RS-232 se usan para resolver los problemas asociados con este modo de
operación, tal como en qué dirección los datos deben viajar en un instante
determinado.
1.54.
1.55. EJERCICIO 9
1.1. Tema:
1.56. Utilización del puerto USART
1.2. Objetivo :
1.57. Determinar la utilización del puerto USART, visualizar los estados en la
pantalla LCD.
1.3. Descripción :
1.58. Encender el motor DC desde el teclado matricial y apagar desde la PC
mediante la comunicación USART, visualizar los estados en la pantalla LCD.
1.4. Materiales y equipos:
1.59. Comunicación pic_pc
Microcontrolador PIC16F887.
Cables.
Fuente de 5V DC.
Quemador de PIC.
Software PICkit 2
LCD 2x16
Teclado matricial (4x4)
Max RS232
Protoboard
1.5. Diagramas y esquemas:
1.60.
89
1.13. SEGUNDO PARCIAL
1.21. SÍNTESIS:
1.22.
1.23. Registros asociados a cada módulo (lectura/escritura):
1.24. CCPRx (CCPRxH:CCPRxL): Registro de datos de 16 bits
1.25.
En modo captura, CCPRx funciona como Registro de Captura
En modo compara, CCPRx funciona como Registro de Comparación
En modo PWM, CCPRx funciona determina el Duty Cycle
1.26.
90
1.29.
1.30. Figura 39 Figura No.21 Asociación de los modos CCP con los Timer Fuente:
https://es.wikiversity.org/wiki/Estructura_del_microcontrolador
1.31. El PIC16F887 cuenta con dos Módulos CCP con las siguientes
características:
1.32.
Modo Captura: Registro de 16 bits y resolución máxima de 12.5 ns.
Modo Comparación: Registro de 16 bits y resolución máxima de 200 ns.
Modo PWM: Registro de 10 bits y frecuencia máxima de 20 kHz.
1.33.
1.34. El PIC16F887 dispone de dos módulos denominados CCP1 y CCP2
asociados a los registros CCPR1 y CCPR2 pines RC2 (CCP1) y RC1(CCP2)
1.35. El PIC18F4550 cuenta con dos Módulo CCP y un módulo CCP mejorado
con las siguientes características:
1.36. Módulo CCP:
Modo Captura: Registro de 16 bits y resolución máxima de 5.2 ns (TcY/16)
Modo Comparación: Registro de 16 bits y resolución máxima de 83.3 ns (TcY)
Modo PWM: Registro de 10 bits
1.37.
1.39.
1.40. El PIC18F4550 dispone de dos módulos denominados CCP1 y CCP2
asociados a los registros CCPR1 y CCPR2 pines RC2 (CCp1) y RC1/RB3
(CCP2). La directiva #programa se utiliza para fijar el pin asociado al módulo
CCP2 de la siguiente manera:
1.41. #pragma config CCP2MX=ON //CCP2 en RC1
1.42. #pragma config CCP2MX =OFF CCP2 en RB3
91
1.43.
1.47. Una parte central de este circuito es un registro CCPR1 de 16 bits que
consiste en registros CCPR1L y CCOR1H. Se utiliza para capturar y comparar
sus valores con los números almacenados en el registro del temporizador
Timer1 (TMR1H y TMR1L).
1.48.
1.50. Si está habilitado por software, puede ocurrir el reinicio del temporizador
Timer1 al igualarse los valores en modo de Comparación. Además, el módulo
CCP1 puede generar señales PWM de frecuencia y de ciclo de trabajo variados.
Los bits del registro CCP1CON están en control del módulo CCP1
92
Consta de dos registros de 8 bits: CCPR1H y CCPR1L.
Registro de control: CCP1CON.
Acción especial: Generada mediante una comparación. Resetea Timer1.
1.53.
93
1.55. MODO CAPTURA:
1.56.
1.57. En modo captura el módulo es capaz de almacenar el valor del TIMER1
o TIMER3 cuando se produce un evento flanco de subida bajada cada (4 o 16
flancos de subida bajada etc.) en los pines CCP1/CCP2.
1.58.
1.59. Cada uno de los módulos CCP tiene asociados varios registros (x=1 o 2):
1.60.
CCPxCON: con este registro definiremos el tipo de operación (Capture /
Compare / PWM) del módulo. El valor para seleccionar modo de CAPTURA es:
1.61. 0b 000001xx
En este modo, el registro del temporizador Timer1 (que consiste en los TMR1H
y TMR1L) se copia al registro CCP1 (que consiste en los CCPR1H y CCPR1L)
en las siguientes situaciones:
1.62.
1.63. Los dos últimos bits configuran el tipo de evento a capturar:
1.64.
00: capturar cada caída de la línea.
01: capturar cada subida de la línea.
10: capturar cada 4ª subida de línea.
94
1.68.
1.69. Figura 43 Fuente Diagrama de Bloques de Modo Captura Datasheet 16F887 y 18F4550
95
1.82. Descripción: Realizamos el modo captura del
módulo CCP ,ejecutando una señal con una frecuencia variable implementando
una señal de reloj astable de 6hz a 5khz para su variación y poder capturar la
frecuencia mientras variamos.
1.83. Materiales:
PIC 16F887
555
1 capacitor de 1µF
2 resistencias de 220Ω
1 potenciómetro de 50kΩ
Pantalla LCD
1.84.
98
1.148.
1.149. Figura 44 Diagrama de Bloques de Modo Comparacion Fuente: Datasheet Pic 16F887 y
18F4550
1.150.
1.151. Cuando CCPRx coincide con TMR1 (en sus 16 bits)
1.152.
El pin RCy/CCPx se pone a 1
El pin RCy/CCPx se pone a 0
Se genera una interrupción
Lanza una acción especial
Cada coincidencia da lugar a CCPxIF=1
99
TMR1 debe funcionar en modo temporizador o en modo contador síncrono. En
modo contador asíncrono puede que la comparación no funcione.
Cuando se selecciona generar interrupción, el pin CCPx no se veafectado.
Se puede generar una acción especial por hardware.
1.156.
1.157. EJERCICO 2
100
1.161.
103
1.272. se 1.277. c
t_timer1(cont); ont=0;
1.273. c 1.278. d
ont=cont+1; elay_ms(100);
1.274. } 1.279. }
1.275. if 1.280. }
(get_timer1()>=3) 1.281. }
1.276. {
1.282.
104
1.289.
1.290. Figura 45 Diagrama de Bloques de Modo PWM Fuente: Datasheet 16F887 y 18F4550
1.291. En modo PWM, el pin CCPx puede generar una señal de salida PWM de
10bits de resolución. Los pines CCPx deben estar configurados como salidas
para funcionar en modo PWM
1.292. TMR2 se concatena con un reloj interno de 2 bits con frecuencia fosc
para poder crear una base de tiempos de 10 bits.
1.293. Condiciones de funcionamiento en el modo PWM:
1.294. El período de pulso de salida (T) se determina por el registro PR2 del
temporizador Timer2. El período de PWM se puede calcular por la siguiente
ecuación
1.295.
1.296. �=(��2+1)∗4∗����∗������������2
1.297.
1.298. El ciclo de trabajo de PWM se especifica al utilizar en total 10 bits: los
ocho bits más significativos del registro CCPR1L y los dos bits menos
significativos adicionales del registro CCP1CON (DC1B1 y DC1B0). El
resultado es un número de 10 bits dado por la siguiente fórmula
1.299.
1.300. �=(�����:�������<5:4>)∗����∗������������2
1.301.
105
1.302. CCPRxH es de sólo lectura en PWM.
1.303.
El pin de salida se va a poner a 1 constantemente, si por error el ancho de pulso
generado es más largo que el período de PWM.
En esta aplicación, no se puede utilizar el post-escalador del temporizador
Timer2 para generar períodos de PWM largos.
1.304.
1.305. Cuando TMR2 (+ 2 bits) se iguala a CCPxH (+ 2 bits), CCPx ← 0.
1.306.
Existe una resolución (número de bits) máxima que se puede obtener con el
funcionamiento en modo PWM.
1.307.
1.308.
1.309.
1.310. Pasos para configurar e iniciar el módulo CCP1 para funcionar en
modo PWM:
1.311. Para configurar e iniciar el módulo CCP1 para funcionar en modo PWM,
siga los siguientes pasos:
Deshabilitar el pin de salida del CCP1. Deberá estar configurado como entrada.
Configurar el módulo CCP1 para funcionar en modo PWM al combinar los bits
del registro CCP1CON.
106
Ajustar el valor de división de frecuencia del temporizador Timer2 por
los bits
Habilitar los pines de salida de PWM después de que haya sido acabado un ciclo
de PWM:
registro TRIS.
1.312. EJERCICO 3
107
1.316.
1.415. El siguiente código presenta el modo PWM del módulo CCP, lo que nos
permitirá variar el ciclo de trabajo de una señal cuadrática en 3 posiciones
diferentes y verificar la forma de onda y la variación de la misma en diodo led.
1.416.
1.417.
1.418.
1.419.
110
1.420. Funciones CCP en compilador CCS
1.421.
1.422. SETUP_CCP1(mode)
1.423. SETUP_CCP2(mode)
1.424. Estas funciones inicializa el contador CCP. Para acceder a los contadores
CCP se utilizan las variables CCP_1 y CCP_2. Los valores para mode son:
1.425. CCP_OFF
1.426. CCP_CAPTURE_FE
1.427. CCP_CAPTURE_RE
1.428. CCP_CAPTURE_DIV_4
1.429. CCP_CAPTURE_DIV_16
1.430. CCP_COMPARE_SET_ON_MATCH
1.431. CCP_COMPARE_CLR_ON_MATCH
1.432. CCP_COMPARE_INT
1.433. CCP_COMPARE_RESET_TIMER
1.434. CCP_PWM
1.435. CCP_PWM_PLUS_1 (sólo si se utiliza un ciclo de trabajo de 8 bits)
1.436. CCP_PWM_PLUS_2 (sólo si se utiliza un ciclo de trabajo de 8 bits)
1.437. CCP_PWM_PLUS_3 (sólo si se utiliza un ciclo de trabajo de 8 bits)
1.438. SETUP_COMPARATOR(mode)
1.439.
1.440. Sólo los PIC de la serie 16c62x pueden usar esta función (véase el
archivo de cabecera 16c620.h), donde mode puede ser:
1.441. A0_A3_A1_A2
1.442. A0_A2_A1_A2
1.443. NC_NC_A1_A2
1.444. NC_NC_NC_NC
1.445. A0_VR_A2_VR
1.446. A3_VR_A2_VR
1.447. A0_A2_A1_A2_OUT_ON_A3_A4
1.448. A3_A2_A1_A2
1.449. Cada uno de los cuatro ítems separado por '_' son C1-, C1+, C2 -, C2+
1.450.
111
1.451. Ejemplo:
1.452. setup_comparator (A0_A3_A1_A2); //inicializa dos comparadores
independientes
1.453.
1.454. SET_PWM1_DUTY(value)
1.455. SET_PWM2_DUTY(value)
1.456.
1.457. Estas funciones escriben los 10 bits de value al dispositivo PWM para
establecer el ciclo de trabajo. Se puede usar un valor de 8 bits si no son
necesarios los bits menos significativos.
112
- La precisión del sensor, esto es la capacidad de medir el mismo valor repetidas
veces en idénticas condiciones.
- El tiempo de respuesta del sensor, es decir, el tiempo requerido para responder a
un cambio brusco de la variable que está siendo censada.
- El coeficiente de temperatura del sensor, el cual viene dado por el cambio que se
produce en la respuesta del sensor debido al cambio en la temperatura a la cual
se encuentra, por ejemplo el aumento en las corrientes de fuga y el voltaje offset
de un amplificador, el aumento de la corriente en la oscuridad de un fotodiodo.
- La histéresis de un sensor, la cual se define como la dependencia de la salida del
sensor de la respuesta anterior. Esta es muy común en sistemas magnéticos y
mecánicos. [1]
1.464.
113
disponible en una superficie 8-plomo montar esbozo paquete pequeño y un
plástico A-202 paquete.
1.469.
1.470. Figura 46 Sensor de temperatura LM35
1.472. Características
- Calibrada directamente en grados Celsius (centígrados)
- Lineal + 10,0 mV / ° C factor de escala 0,5 ° C exactitud regulable (a +25 ° C)
- Calificación para la plena -55 ° a +150 ° C Rango
- Apto para aplicaciones remotas
- Bajo costo debido a la oblea-nivel de recorte
- Opera de 4 a 30 voltios
- Menos de 60 μA de corriente de fuga
- Bajo nivel de calefacción, 0,08 ° C en aire
- No linealidad sólo 1/4 ° C típico
- Impedancia de salida baja, de 0,1Ω para carga de 1 [2]
1.474.
1.475. Figura 47 Sensor de temperatura LM35
1.477.
114
1.478.
1.479. Figura 48 Sensor de temperatura LM35
1.481.
1.482. EJERCICO 4
1.483. Tema: Sensor LM35
1.484. Descripción: Realizamos un control de
temperatura mediante el sensado de un LM35, el cual nos permite visualizar la
temperatura ambiente de un lugar y podemos variarla dependiendo el objeto que
le acerquemos al sensor ya sea una temperatura alta y baja.
1.485. Materiales:
PIC 18F4550
Sensor LM35
Pantalla LCD
1.486.
115
1.487.
116
1.510. se 1.528.
tup_adc(ADC_CLOCK_INTE {
RNAL); 1.529.
1.511. temp=(temp1*0.004999585*10
Setup_adc_ports(AN0); / 0)-0.49;//0.01960784314*100);
/PONE PUERTO RA0 //CONVIERTE EL VALOR
ANALOGO LEIDO DE HEXA AL REAL el
1.512. numero 0.01960784314
setup_counters(rtcc_internal,rtc 1.530.
c_div_1); tempf=tempf+temp; //viene de
1.513. dividir (5/255) y el resultado se
set_adc_channel(0); // multiplica por 100 para alcanzar
INDICA EL PIN A LEER RA0 150 grados
1.514. 1.531.
delay_us(20); delay_ms(10);
1.515. 1.532.
for(i=0;i<5;i=i+1) }
1.516. 1.533.
{ if(temp1<=90&&temp1>49)
1.517. 1.534.
read=read_adc(); {
1.518. 1.535.
temp1=(float)read; temp=(temp1*0.004999585*10
//LEE EL VALOR DEL PIN 0)-0.99;//0.01960784314*100);
1.519. //CONVIERTE EL VALOR
delay_us(10); LEIDO DE HEXA AL REAL el
1.520. numero 0.01960784314
1.521. 1.536.
if(temp1<=10) tempf=tempf+temp; //viene de
1.522. dividir (5/255) y el resultado se
{ multiplica por 100 para alcanzar
1.523. 150 grados
temp=(temp1*0.004999585*10 1.537.
0)+0.001;//0.01960784314*100 delay_ms(10);
); //CONVIERTE EL 1.538.
VALOR LEIDO DE HEXA AL }
REAL el numero 1.539.
0.01960784314 if(temp1<=131&&temp1>90)
1.524. 1.540.
tempf=tempf+temp; //viene de {
dividir (5/255) y el resultado se 1.541.
multiplica por 100 para alcanzar temp=(temp1*0.004999585*10
150 grados 0)-1.49;//0.01960784314*100);
1.525. //CONVIERTE EL VALOR
delay_ms(10); LEIDO DE HEXA AL REAL el
1.526. numero 0.01960784314
} 1.542.
1.527. tempf=tempf+temp; //viene de
if(temp1<=49&&temp1>10) dividir (5/255) y el resultado se
117
multiplica por 100 para alcanzar //CONVIERTE EL VALOR
150 grados LEIDO DE HEXA AL REAL el
1.543. numero 0.01960784314
delay_ms(10); 1.554.
1.544. tempf=tempf+temp; //viene de
} dividir (5/255) y el resultado se
1.545. multiplica por 100 para alcanzar
if(temp1<=172&&temp1>131) 150 grados
1.546. 1.555.
{ delay_ms(10);
1.547. 1.556.
temp=(temp1*0.004999585*10 }
0)-1.99;//0.01960784314*100); 1.557.
//CONVIERTE EL VALOR }
LEIDO DE HEXA AL REAL el 1.558.
numero 0.01960784314 tempt=tempf/5.0;
1.548. 1.559.
tempf=tempf+temp; //viene de printf(lcd_putc,"
dividir (5/255) y el resultado se \fTEMPERATURA \nT= %2.2f
multiplica por 100 para alcanzar oC",tempt); //MUESTRA EN
150 grados EL LCD EL VALOR DE
1.549. TEMPERATURA
delay_ms(10); 1.560.
1.550. i=0;
} 1.561.
1.551. tempf=0.0;
if(temp1<=213&&temp1>172) 1.562.
1.552. tempt=0.0;
{ 1.563.
1.553. delay_us(20);
temp=(temp1*0.004999585*10 1.564.
0)-2.49;//0.01960784314*100); 1.565. }
1.566.
1.567. }
1.568.
1.569.
118
ultrasonidos, tales como en sistemas de alarma de intrusión, puertas automáticas
y sensores de copia de seguridad para automóviles.
1.576. Acompañado por el rápido desarrollo de la tecnología de procesamiento
de la información, nuevos campos de aplicación, tales como equipos de
automatización de fábricas de automóviles y la electrónica van en aumento. [3]
1.577. SENSOR ULTRASONIDOS HC-SR04
1.578. El sensor de ultrasonidos se enmarca dentro de los sensores para medir
distancias o superar obstáculos, entre otras posibles funciones.
1.579. En este caso vamos a utilizarlo para la medición de distancias. Esto lo
consigue enviando un ultrasonido (inaudible para el oído humano por su alta
frecuencia) a través de uno de la pareja de cilindros que compone el sensor (un
transductor) y espera a que dicho sonido rebote sobre un objeto y vuelva,
retorno captado por el otro cilindro.
1.580. Este sensor en concreto tiene un rango de distancias sensible entre 3cm y
3m con una precisión de 3mm.
1.581.
1.582. Figura 49 Sensor ultrasónico
1.584. Funcionamiento
1.585. El sensor PING funciona mediante la transmisión de una ráfaga de
ultrasonido en una frecuencia muy por encima del rango auditivo humano y
provee un pulso de salida, el cual corresponde con el tiempo requerido por el
eco (rebote) para retornar hasta el sensor. Al medir la duración de este pulso se
puede calcular fácilmente la distancia al objetivo.
1.586. Las características más importantes del sensor PING son las siguientes:
- Rango: 2 cm a 3 m
- LED indicador de ráfaga que muestra la actividad del sensor
- Interfaz bidireccional por pulso, en un único pin de E/S para comunicación con
microcontroladores TTL (5V) o CMOS (3.3V)
- Disparo de entrada: pulso TTL positivo, 2 μs mínimo, 5 μs típico
119
- Pulso eco de salida: pulso positivo TTL, 115 μs mínimo a 18.5 ms máximo. [4]
1.587. EJERCICIO 5
1.591.
1.592.
120
1.595. #i 1.620. pr
nclude <16F887.h> intf(LCD_PUTC, "\f
1.596. # Ultrasonico...");
FUSES 1.621. d
XT,NOWDT,NOPROTECT,PU elay_ms(500);
T,NOBROWNOUT,NOLVP 1.622.
1.597. # 1.623. se
use delay(clock=4000000) tup_timer_1(T1_INTERNAL|
1.598. # T1_DIV_BY_8);
define LCD_DB4 PIN_D4 1.624.
1.599. # 1.625. w
define LCD_DB5 PIN_D5 hile(1)
1.600. # 1.626. {
define LCD_DB6 PIN_D6 1.627. o
1.601. # utput_high(trig);
define LCD_DB7 PIN_D7 1.628. d
1.602. # elay_us(20);
define LCD_RS PIN_D1 1.629. o
1.603. # utput_low(trig);
define LCD_E PIN_D0 1.630. w
1.604. #i hile(!input(echo))
nclude <lcd1.c> 1.631. {
1.605. }
1.606. 1.632. se
1.607. in t_timer1(0);
t16 tiempo; 1.633. w
1.608. fl hile(input(echo))
oat distancia; 1.634. {
1.609. # }
define trig pin_B1 1.635. ti
1.610. # empo=get_timer1();
define echo pin_B0 1.636. if
1.611. # (tiempo<41)
USE standard_io(b) 1.637. {
1.612. 1.638. if
1.613. v (tiempo<41&&tiempo>34)
oid main() 1.639. {
1.614. { 1.640. di
1.615. lc stancia=(tiempo*7.45)/(58.0);
d_init(); 1.641. pr
1.616. pr intf(LCD_PUTC, "\fContador :
intf(LCD_PUTC, "\f %Lu \nDistancia = %0.2f
Ultrasonico."); cm",tiempo,distancia);
1.617. d 1.642. d
elay_ms(500); elay_ms(500);
1.618. pr 1.643. }
intf(LCD_PUTC, "\f 1.644. if
Ultrasonico.."); (tiempo<=34&&tiempo>31)
1.619. d 1.645. {
elay_ms(500);
121
1.646. di 1.658. di
stancia=(tiempo*7.1)/(58.0); stancia=(tiempo*5.3)/(58.0);
1.647. pr 1.659. pr
intf(LCD_PUTC, "\fContador : intf(LCD_PUTC, "\fContador :
%Lu \nDistancia = %0.2f %Lu \nDistancia = %0.2f
cm",tiempo,distancia); cm",tiempo,distancia);
1.648. d 1.660. d
elay_ms(500); elay_ms(500);
1.649. } 1.661. }
1.650. if 1.662. }
(tiempo<=31&&tiempo>28) 1.663. el
1.651. { se{
1.652. di 1.664. di
stancia=(tiempo*6)/(58.0); stancia=(tiempo*8.05)/(58.0);
1.653. pr 1.665. pr
intf(LCD_PUTC, "\fContador : intf(LCD_PUTC, "\fContador :
%Lu \nDistancia = %0.2f %Lu \nDistancia = %0.2f
cm",tiempo,distancia); cm",tiempo,distancia);
1.654. d 1.666. d
elay_ms(500); elay_ms(500);
1.655. } 1.667. }
1.656. if 1.668. }
(tiempo<=28&&tiempo>20) 1.669. }
1.657. {
1.670.
1.671.
1.673. El siguiente programa trabaja con una serie de bits de resolución que
permiten hacer u calculo a la señal analógica que es enviada por medio del
sensor e indicarnos la distancia qu este se encuentra. Sin embargo en proteus al
no contar con las librerías necesarias del sensor no se puede correr el programa.
1.674.
1.679.
1.680. Figura 50 No hay detección, no hay objeto.
1.683.
1.684. Figura 51 Objeto detectable dentro de 10 cm de detección de proximidad.
1.697. EJERCICIO 6
1.701.
124
1.702.
125
1.732. d 1.747. d
elay_ms(650); elay_ms(1000);
1.733. lc 1.748. if
d_init(); ((y<=3)&&(y>=1))// condicion
1.734. para detectar en un rango
1.735. especifico a un objeto
1.736. w 1.749. {
hile(true)// ciclo para generar el 1.750. pr
valor de la distancia que intf(lcd_putc,"\f Detecta
proporciona el sensor Objeto");
1.737. { 1.751. d
1.738. d elay_ms(1000);
elay_ms(50); 1.752. pr
1.739. v intf(lcd_putc,"\f");
alue=read_adc();//devuelve el 1.753. }
valor del adc 1.754. el
1.740. y se// caso contrario no detecta el
=value*0.005;// funcion para objeto ; fuera de rango
generar la distancia 1.755. {
1.741. y 1.756. pr
=y-1.183; intf(lcd_putc,"\f No Detecta
1.742. Objeto");
1.743. lc 1.757. d
d_gotoxy(5,2); elay_ms(1000);
1.744. pr 1.758. pr
intf(lcd_putc,"%2.2f cm",y);// intf(lcd_putc,"\f");
visualizacion de la distancia en 1.759. }
el lcd 1.760. }
1.745. lc 1.761.
d_gotoxy(5,1); 1.762. }
1.746. pr
intf(lcd_putc,"Distancia");
1.763.
1.764.
1.768.
1.769. Control PWM para Motores DC y AC
1.770.
1.771. Stephen J. Chapman (2000, Pág. 351) Menciona que:
126
1.772. “Los motores son máquinas utilizadas para convertir potencia eléctrica
en potencia mecánica. ” [ 1 ]
127
130
SCR (Silicon controled Rectifiers)
TRIAC
GTO (Gate Turn Off)”
SCR
El SCR (Silicon Controled Rectifier / Rectificador controlado de silicio) es un
dispositivo semiconductor de 4 capas que funciona como un conmutador casi
ideal.
Estructura y símbolo de un SCR
Figura 52 Estructura SCR
Fuente: http://www2.uca.es/grup-invest/instrument_electro/Ramiro/docencia_archivos/Tiristores.PDF
Figura 53 Circuito de Corrientes Fuente: http://www2.uca.es/grup-
invest/instrument_electro/Ramiro/docencia_archivos/Tiristores.PDF
Figura 54 Simbologia TRIAC
Fuente: http://www2.uca.es/grup-invest/instrument_electro/Ramiro/docencia_archivos/Tiristores.PDF
132
corriente circulará de abajo hacia arriba (pasará por el tiristor que apunta hacia
arriba)
Para ambos semiciclos la señal de disparo se obtiene de la misma patilla (la
puerta o compuerta).
EJERCICIO 8
Tema: PWM con motor AC y TRIAC
Descripción: Realizamos un control de velocidad con un PWM acoplando una
etapa de potencia con un TRIAC utilizando un cruce por cero; el cual generamos
desde una programación realizada en PIC C , y este varia la velocidad del motor
DC dependiendo el PWM es decir el duty que generamos desde el teclado
matricial.
Materiales:
Pantalla LCD
Teclado matricial
Motor AC
Pic 16F887
Transformador
Puente de Diodos
Resistencias
MOC
TRIAC
133
Introducción
La comunicación entre microcontroladores se puede
realizar de dos formas ya sea síncrona o paralela: la primera envía los datos
simultáneamente mientras que la otra envía dato por dato. La familia PIC18
dispone de varias posibilidades de comunicaciones serie. Dispone de un puerto
dedicado a comunicaciones síncronas serie, el SSP (Serial Synchronous Port).
Dicho puerto puede dedicarse a varios protocolos, tales como SPI o I2C. Ambos
son precisos, esto es, si se configura el periférico para SPI no podrá usarse para
I2C y viceversa. Si se precisan de forma conjunta comunicaciones I2C y SPI la
única solución es un microcontrolador con dos puertos SSP.
Marco Teórico
COMUNICACIÓN I2C (INTER-INTEGRATED
CIRCUIT)
136
Eduardo J. Carletti (2008) Menciona que:
“El bus I2C, un estándar que facilita la comunicación
entre microcontroladores, memorias y otros dispositivos con cierto nivel
de "inteligencia", sólo requiere de dos líneas de señal y un común y
permite el intercambio de información entre muchos dispositivos a una
velocidad aceptable, de unos 100 Kbits por segundo. La metodología de
comunicación de datos del bus I2C es en serie y sincrónica. Una de las
señales del bus marca el tiempo (pulsos de reloj) y la otra se utiliza para
intercambiar datos”. [1]
Juan Ricardo Penagos Plazas (2006) Menciona que:
“El bus I2C (Inter-Integrated Circuit) o Interconexión
de Circuitos Integrados es un interfaz serie de dos conductores que se
encuentra actualmente en la mayoría de microcontroladores PIC. La
especificación original, o modo Estándar, es para velocidades de
transmisión de hasta 100kbps.
El bus I2C emplea un protocolo para asegurar la
transferencia confiable de los datos. Cuando se transmiten datos, uno de
los dispositivos es el maestro (que suele ser un microcontrolador PIC), el
cual inicia la transferencia en el bus y genera las señales de reloj para
permitir esa transferencia, mientras que los otros dispositivos se
comportan como esclavos”. [2]
García Eduardo Breijo (2008, Pag 190) Menciona que:
“la comunicación I2C es una interfaz derivada del
módulo MSSP para acceder a la comunicación con otros dispositivos
periféricos o programables que soporta los siguientes modos de
hardware, maestro, multi - maestro y modo esclavo, que por consiguiente
son capaces de transmitir una trama de datos”. [3]
137
Aspectos Generales: El bus comunicaciones serie
síncrona es muy utilizado en la industria para la comunicación entre
microcontroladores y sus periféricos en sistemas integrados. Dentro de los
parámetros a considerar tenemos:
Utiliza únicamente dos líneas para trasmitir los datos (SDA) y la
señal de reloj (SCL).
Necesitan resistencias pull-up, ya que los dispositivos sólo pueden
forzar al bus a ponerse a “0”.
La línea de tierra debe ser común a todos los dispositivos
Es bidireccional Half-Duplex y sigue el modelo maestro-esclavo.
Los dispositivos de un bus I2C tienen una dirección única para cada
uno, y pueden clasificarse como maestros o como esclavos.
El maestro es el que inicia la trasferencia de datos y genera la señal
de reloj.
El esclavo espera a que un maestro se comunique con él para generar
la trasferencia.
El bus I2C es multimaestro, lo que quiere decir que puede haber más
de un maestro conectado y controlando el bus. Existen mecanismos
para evitar que dos maestros comiencen una trasferencia de
información al mismo tiempo.
Figura 55 Conexión de maestro y esclavos en I2
Fuente: http://www.nxp.com/documents/application_note/AN10216.pdf
El bus serie I2C ha sido extendido para soportar
velocidades de hasta 3,4 MHZ/s, combinado con una función de
desplazamiento del nivel de voltaje, en modo High-speed (Hs-mode) ofrece
una solución ideal para los sistemas de tecnología mixta, donde las altas
velocidades y la variedad de voltajes (5v, 3v o menor) son comúnmente
usados.
138
Fuente: http://www.nxp.com/documents/application_note/AN10216.pdf
139
Fuente: http://www.nxp.com/documents/application_note/AN10216.pdf
Master lee a un esclavo inmediatamente después del primer byte
En el momento del primer reconocimiento el master-
trasmisor ser conveniente en un master-receptor y el esclavo-receptor
en un esclavo-transmisor. El primer reconocimiento es aun generado
por el esclavo. La condición de stop es generado por el Master, el
cual ha enviado previamente un no-reconocimiento.
Formato combinado
140
Fuente: http://www.nxp.com/documents/application_note/AN10216.pdf
Direccionamiento: El procedimiento de dirección
para el bus I2C es tal que el primer byte después de la condición de Start
usualmente determina que esclavo ha sido seleccionado por el master
La excepción se da en la “llamada general” (byte 0000
0000) con la que se direcciona a todos los dispositivos, cuando esta dirección
es usada, todos los dispositivos en teoría deben responder con un
reconocimiento, sin embargo algunos dispositivos pueden estar
condicionados a ignorar esta dirección. El segundo byte de la “llamada
general” define entonces la acción a tomar.
Hay dos formatos de dirección. El más simple es el
formato de 7 bits con un bit R/W que permite direccionar hasta 128
dispositivos, que en la práctica se reduce a 112 debido a que las restantes
direcciones son de uso reservado. El más complejo es el de 10-bit con un bit
R/W. Para el formato de 10-bit, dos bytes deben ser transmitidos con los
primeros cinco bits que especifiquen una dirección de 10-bit.
141
Figura 60 Formato de Direccionamiento de 7 Bits
Fuente: http://www.nxp.com/documents/application_note/AN10216.pdf
Fuente: http://www.nxp.com/documents/application_note/AN10216.pdf
Fuente: http://www.nxp.com/documents/application_note/AN10216.pdf
EJERCICO 9
Tema: PWM con motor AC y TRIAC
Descripción: Realizamos un control de velocidad con un PWM acoplando una
etapa de potencia con un TRIAC utilizando un cruce por cero; el cual generamos
desde una programación realizada en PIC C , y este varia la velocidad del motor
DC dependiendo el PWM es decir el duty que generamos desde el teclado
matricial.
Materiales:
Pantalla LCD
Teclado matricial
Motor AC
Pic 16F887
142
Transformador
Puente de Diodos
Resistencias
MOC
TRIAC
143
delay_us(20);
y=k-48; K=0;
z=0;
switch (y)
{ }
}else output_low(pin_c0);
case(1):
z=1; if((z==1))
lcd_putc("\f nivel de PWM\n {
15¡/o"); while(input(pin_a1))
delay_us(20); {
break; if(input(pin_a0))
{
case(2): output_low(pin_c0);
z=2; delay_us(7200);
lcd_putc("\f nivel de PWM \n output_high(pin_c0);
30¡/o"); delay_us(1000);
delay_us(20); }
break; }
}else if((z==2))
case(3):
z=3; {
printf(lcd_putc,"\f nivel de while(input(pin_a1))
PWM \n 50¡/o"); {
delay_us(20); if(input(pin_a0))
break; {
output_low(pin_c0);
case (4): delay_us(6000);
z=4; output_high(pin_c0);
printf(lcd_putc,"\f nivel de delay_us(2200);
PWM \n 65¡/o");
}
delay_us(20);
}
break;
}else if((z==3))
case (5):
{
z=5;
while(input(pin_a1))
printf(lcd_putc,"\f nivel de
{
PWM \n 90¡/o");
if(input(pin_a0))
delay_us(20);
{
break;
output_low(pin_c0);
delay_us(4800);
case (6):
output_high(pin_c0);
lcd_putc("\f !BIENVENIDO!\n
Presione #"); delay_us(3400);
output_low(pin_c0); }
144
} output_low(pin_c0);
}else if((z==4)) delay_us(2400);
output_high(pin_c0);
{ delay_us(5800);
while(input(pin_a1)) }
{ }
if(input(pin_a0)) }
{
output_low(pin_c0); }
delay_us(3600);
output_high(pin_c0); }
delay_us(4600);
}
}
}else if((z==5))
{
while(input(pin_a1))
{
if(input(pin_a0))
{
EJERCICO PROPUESTO
145
“SPI es un bus de tres líneas, sobre el cual se transmiten paquetes de
información de 8 bits. Cada una de estas tres líneas porta la información
entre los diferentes dispositivos conectados al bus. Cada dispositivo
conectado al bus puede actuar como transmisor y receptor al mismo
tiempo, por lo que este tipo de comunicación serial es full dúplex. Dos de
estas líneas trasfieren los datos (una en cada dirección) y la tercer línea es
la del reloj.” [4]
146
dispositivos SPI se comunican entre sí utilizando un bus de 4 señales
(MOSI, MISO, SCK, SS) y un esquema maestro/esclavo, en el cual el
maestro inicia el protocolo de trasmisión de los datos.”. [6]
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
147
debe habilitar el SPI-1”. Mientras el bit SPE esté seteado, los cuatro pines
asociados al módulo SPI deben cumplir las funciones de:
Selector de esclavo (SS)
Clock serial (SPSCK)
Master out/slave in (MOSI)
Master in/slave out (MISO)
Modo Master: El Módulo SPI opera en modo master cuando el l bit MSTR se
encuentra seteado. Solo en modo master se pueden iniciar transmisiones. Una
transmisión se inicia leyendo el registro SPIxS mientras el SPTEF = 1 y
escribiendo el registro de datos SPI. Si el registro de desplazamientos está vacío,
el byte se transfiere inmediatamente al a este registro para ser enviado. El dato
comienza a desplazarse hacia el pin de salida MOSI bajo la referencia del clock
de control serial.
Modo Slave: El SPI funciona en modo slave cuando el bits MSTR en el registro
de control 1 está borrado.
• SPSCK: En modo slave, SPSCK es el clock entrada que llega desde el
master.
• Pines MISO, MOSI: En modo slave, el pin (MISO) tiene la función de
salida de datos y el pin (MOSI) tiene la función de entrada de datos, esto
se determina por los bits SPC0 y BIDIROE en el registro de control.
148
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Figura No 44:
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
149
Figura 68 Modos de Operación
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
150
Figura 72 Registro de estados (SPIxS)
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
EJERCICO 10
Tema:SPI
Descripción: Realizamos una comunicación SPI entre 2 pics para poder enviar un dato
de un pic a otro con la ayuda de un teclado matricial y una pantalla LCD para la
visualización de los datos enviados y recibidos.
Materiales:
2 teclado matricial
2 PIC’s
2 pantallas LCD
Fig1 SPI
Simulación: Proteus
MASTER
151
#include <16F887.h> delay_ms(10);
#fuses XT,NOMCLR }
#use delay (clock=4000000) if(l=='3'){
#define LCD_DB4 PIN_B4 printf(lcd_putc,"\n Recibiendo... 7
#define LCD_DB5 PIN_B5 ");
#define LCD_DB6 PIN_B6 delay_ms(10);
#define LCD_DB7 PIN_B7 }
#define LCD_RS PIN_B2 if(l=='4'){
#define LCD_E PIN_B3 printf(lcd_putc,"\n Recibiendo... 2
#include <lcdPB.c> ");
#include <KBD4x4.c> delay_ms(10);
char l; }
int teclas; //Dato a if(l=='5'){
transmitir printf(lcd_putc,"\n Recibiendo... 5
void envio_SPI (){ ");
setup_spi(spi_master | spi_l_to_h | delay_ms(10);
spi_clk_div_16); }
spi_write(teclas); if(l=='6'){
printf(lcd_putc,"\n Recibiendo... 8
} ");
void esclavo1(){ delay_ms(10);
teclas=kbd_getc(); }
if(teclas!=0){ if(l=='7'){
envio_SPI(); printf(lcd_putc,"\n Recibiendo... 3
");
} delay_ms(10);
} }
if(l=='8'){
void main(){ printf(lcd_putc,"\n Recibiendo... 6
lcd_init(); ");
kbd_init(); delay_ms(10);
while (true){ }
if(input(pin_a0)){ if(l=='9'){
setup_spi(spi_slave | spi_l_to_h | printf(lcd_putc,"\n Recibiendo... 9
spi_clk_div_16); ");
lcd_gotoxy(1,1); delay_ms(10);
printf (lcd_putc," Maestro "); }
if(l=='A'){
if(spi_data_is_in()) printf(lcd_putc,"\n Recibiendo... *
{ ");
l=spi_read(); delay_ms(10);
if(l=='1'){ }
printf(lcd_putc,"\n Recibiendo... 1 if(l=='B'){
"); printf(lcd_putc,"\n Recibiendo... 0
delay_ms(10); ");
} delay_ms(10);
if(l=='2'){ }
printf(lcd_putc,"\n Recibiendo... 4 if(l=='C'){
");
152
printf(lcd_putc,"\n Recibiendo... # #include <lcdPB.c>
"); #include <KBD4x4.c>
delay_ms(10); char l;
} int teclas; //Dato a
if(l=='D'){ transmitir
printf(lcd_putc,"\n Recibiendo... D void envio_SPI (){
"); setup_spi(spi_master | spi_l_to_h |
delay_ms(10); spi_clk_div_16);
} spi_write(teclas);
if(l=='*'){
printf(lcd_putc,"\n Recibiendo... A }
"); void esclavo1(){
delay_ms(10); teclas=kbd_getc();
} if(teclas!=0){
if(l=='0'){ envio_SPI();
printf(lcd_putc,"\n Recibiendo... B
"); }
delay_ms(10); }
}
if(l=='#'){ void main(){
printf(lcd_putc,"\n Recibiendo... C lcd_init();
"); kbd_init();
delay_ms(10); while (true){
} if(input(pin_a0)){
} setup_spi(spi_slave | spi_l_to_h |
esclavo1(); spi_clk_div_16);
} lcd_gotoxy(1,1);
printf (lcd_putc," Esclavo ");
else{
if(spi_data_is_in())
lcd_gotoxy(1,1); {
printf (lcd_putc,"\f SIN CONEXION l=spi_read();
"); if(l=='1'){
delay_ms (10); printf(lcd_putc,"\n Recibiendo... 1
} ");
} delay_ms(10);
} }
if(l=='2'){
printf(lcd_putc,"\n Recibiendo... 4
ESCLAVO ");
delay_ms(10);
#include <16F887.h> }
#fuses XT,NOMCLR if(l=='3'){
#use delay (clock=4000000) printf(lcd_putc,"\n Recibiendo... 7
#define LCD_DB4 PIN_B4 ");
#define LCD_DB5 PIN_B5 delay_ms(10);
#define LCD_DB6 PIN_B6 }
#define LCD_DB7 PIN_B7 if(l=='4'){
#define LCD_RS PIN_B2 printf(lcd_putc,"\n Recibiendo... 2
#define LCD_E PIN_B3 ");
153
delay_ms(10); printf(lcd_putc,"\n Recibiendo... #
} ");
if(l=='5'){ delay_ms(10);
printf(lcd_putc,"\n Recibiendo... 5 }
"); if(l=='D'){
delay_ms(10); printf(lcd_putc,"\n Recibiendo... D
} ");
if(l=='6'){ delay_ms(10);
printf(lcd_putc,"\n Recibiendo... 8 }
"); if(l=='*'){
delay_ms(10); printf(lcd_putc,"\n Recibiendo... A
} ");
if(l=='7'){ delay_ms(10);
printf(lcd_putc,"\n Recibiendo... 3 }
"); if(l=='0'){
delay_ms(10); printf(lcd_putc,"\n Recibiendo... B
} ");
if(l=='8'){ delay_ms(10);
printf(lcd_putc,"\n Recibiendo... 6 }
"); if(l=='#'){
delay_ms(10); printf(lcd_putc,"\n Recibiendo... C
} ");
if(l=='9'){ delay_ms(10);
printf(lcd_putc,"\n Recibiendo... 9 }
"); }
delay_ms(10); esclavo1();
} }
if(l=='A'){
printf(lcd_putc,"\n Recibiendo... * else{
");
delay_ms(10); lcd_gotoxy(1,1);
} printf (lcd_putc,"\f SIN CONEXION
if(l=='B'){ ");
printf(lcd_putc,"\n Recibiendo... 0 delay_ms (10);
"); }
delay_ms(10); }
} }
if(l=='C'){
EJERCICIO PROPUESTO
El siguiente programa permite la comunicación entre dos microcontroladores pic
uno denominado maestro y otro llamado esclavo mediante el protocolo SPI,
además cuenta con un teclado conectado a ambos pics que envían datos al
presionar una tecla.
154
SPI Data Registers (SPIxDH:SPIxDL)
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Se muestra la configuración del módulo en donde el dato a enviar se mantiene
estable durante el primer flanco de clock y el siguiente bit se envía en el segundo
flanco de clock, tenga este cualquiera de las 2 polaridades posibles (línea
normalmente en alto o en bajo).
Se muestra la configuración del módulo en donde cada dato se establece en el
primer flanco del pulso de clock y el dato se mantiene estable durante el segundo
flanco del clock.
155
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
Fuente: http://ww1.microchip.com/downloads/en/devicedoc/spi.pdf
EJERCICIO 11
156
Tema: I2C con LM35
Descripción: Realizamos una comunicación I2C entre 2 pics para poder enviar la
temperatura de un lm35 y visualizar el ADC en el otro pic , pudiendo variar la
temperatura con la ayuda de algo frio y algo caliente.
Materiales:
2 pantallas LCD
LM35
3 leds
2 PIC´s
}
/ }
********************************
********************************
**************/ ESCLAVO
/***************************
FUNCIÓN PRINCIPAL #include <18F4550.h>
******************************** #fuses XT,NOMCLR
/ #use delay (clock=8M)
#use I2C(SLAVE, SDA=PIN_B0
void main(){ ,SLOW, SCL=PIN_B1,
kbd_init(); //Inicializa ADDRESS=0xa0, NOFORCE_SW)
función de teclado #include <lcd3.c>
lcd_init(); #include <kbd3.c> //Uso del
port_d_pullups(TRUE); puerto d
while (true){ #use fast_io(b)
#use standard_io(d)
setup_adc(ADC_CLOCK_INTERN #use standard_io(c)
AL); #use standard_io(e)
Setup_adc_ports(AN0);
//PONE PUERTO RA0 ANALOGO ///////////////
setup_counters(rtcc_internal,rtcc_di
v_1); int state; // I2C var
set_adc_channel(0); // int8 x;
INDICA EL PIN A LEER RA0
//delay_us(20);. int8 buffer[0x03];
read=read_adc(); float t1;
float t11;
t1=(float)read; //LEE float tem;
EL VALOR DEL PIN
t2=t1*2; #INT_SSP
void ssp_interrupt()
t11=(t1*5)/255; { output_high(PIN_A2);
//CONVIERTE EL VALOR LEIDO DE state=i2c_isr_state();
HEXA AL REAL el numero
0.01960784314 viene de dividir (5/255) if(state < 0x80) //Master esta
y el resultado se multiplica por 100 para enviando datos
alcanzar 150 grados {
printf(lcd_putc,"\fVin = %2.2f x = i2c_read();
",t11); //MUESTRA EN EL LCD EL }
VALOR DE TEMPERATURA
printf(lcd_putc,"\nADC= %2.2f if(state==0x80){
",t2); //MUESTRA EN EL LCD EL i2c_write(buffer[0x02]);
VALOR DE TEMPERATURA output_high(PIN_A1);
}
envio_I2C(); }
delay_ms(500);
void main() {
158
//printf(lcd_putc,"\nADC= %2.2f
set_tris_b(0b00000011); ",t1); //MUESTRA EN EL LCD EL
lcd_init(); VALOR DE TEMPERATURA
kbd_init();
port_d_pullups(TRUE); if (t1<24)
enable_interrupts(INT_SSP); {
//Activamos las interrupciones de I2C output_high(pin_d0);
enable_interrupts(GLOBAL); output_low(pin_d1);
output_low(pin_d2);
while (true) {
//delay_ms(10);
if(state<0x80) //Se }
recibe dato if (t1>27)
{ {
//state=0x80; output_high(pin_d2);
output_low(pin_d1);
t1=(float)x; //LEE EL output_low(pin_d0);
VALOR DEL PIN //delay_ms(10);
t11=(t1*5*100)/255; }
//CONVIERTE EL VALOR LEIDO DE if (t1>=24 && t1<=27)
HEXA AL REAL el numero {
0.01960784314 viene de dividir (5/255) output_high(pin_d1);
y el resultado se multiplica por 100 para output_low(pin_d0);
alcanzar 150 grados output_low(pin_d2);
//delay_ms(1); //delay_ms(10);
tem=((t11)/2); }
printf(lcd_putc,"\fT= %2.2f delay_ms(500);
C",tem); //MUESTRA EN EL LCD EL }
VALOR DE TEMPERATURA
}
}
EJERCICIO PROPUESTO
El siguiente programa tiene por objetivo diseñar un lenguaje de programación que
cumpla con los parámetros siguientes: utilizar un microcontrolador pic como maestro al
cual esté conectado un teclado matricial y una pantalla lcd que indique las aplicaciones
de sensor lm35 o sensor de proximidad comunicado mediante el protocolo I2C a un
esclavo que tenga comunicación directa con la pc mediante RS232 y varíe la velocidad
del motor y el encendido de luces logrando un sistema completo con los dos sensores
mencionados inicialmente.
EJERCICIO 12
Tema: I2C con LM35 y Motor DC
Descripción: Realizamos una comunicación I2C entre 2 pics para poder enviar la
temperatura de un lm35 y visualizar el ADC en el otro pic, pudiendo variar la
159
temperatura con la ayuda de algo frio y algo caliente; haciendo el control de un motor
DC.
Materiales:
2 pantallas LCD
LM35
Motor DC
2 resistencias 1k
2 PIC´s
/
******************************** }
******************************** }
**************/
/*************************** ESCLAVO
FUNCIÓN PRINCIPAL
******************************** #include <18F4550.h>
/ #fuses XT,NOMCLR
#use delay (clock=8M)
void main(){ #use I2C(SLAVE, SDA=PIN_B0
kbd_init(); //Inicializa ,SLOW, SCL=PIN_B1,
función de teclado ADDRESS=0xa0, NOFORCE_SW)
lcd_init(); #include <lcd3.c>
port_d_pullups(TRUE); #include <kbd3.c> //Uso del
while (true){ puerto d
#use fast_io(b)
setup_adc(ADC_CLOCK_INTERN #use standard_io(d)
AL); #use standard_io(c)
Setup_adc_ports(AN0); #use standard_io(e)
//PONE PUERTO RA0 ANALOGO
setup_counters(rtcc_internal,rtcc_di ///////////////
v_1);
set_adc_channel(0); // int state; // I2C var
INDICA EL PIN A LEER RA0 int8 x;
//delay_us(20);.
read=read_adc(); int8 buffer[0x03];
float t1;
t1=(float)read*2; //LEE float t11;
EL VALOR DEL PIN float tem;
t2=(t1*255)/150;
t11=(t1*5)/255; #INT_SSP
//CONVIERTE EL VALOR LEIDO DE void ssp_interrupt()
HEXA AL REAL el numero { output_high(PIN_A2);
0.01960784314 viene de dividir (5/255) state=i2c_isr_state();
y el resultado se multiplica por 100 para
alcanzar 150 grados if(state < 0x80) //Master esta
printf(lcd_putc,"\fMASTER- enviando datos
TEMPERATURA"); //MUESTRA EN {
EL LCD EL VALOR DE x = i2c_read();
TEMPERATURA }
if(state==0x80){
161
i2c_write(buffer[0x02]); //delay_ms(1);
output_high(PIN_A1); tem=((t11));
} printf(lcd_putc,"\fTemp= %2.2f
} oC",tem); //MUESTRA EN EL LCD
EL VALOR DE TEMPERATURA
void main() { //printf(lcd_putc,"\nADC= %2.2f
",t1); //MUESTRA EN EL LCD EL
set_tris_b(0b00000011); VALOR DE TEMPERATURA
lcd_init();
kbd_init(); if (tem<24)
setup_ccp1(ccp_PWM); {
setup_timer_2(T2_DIV_BY_16,255,1); printf(lcd_putc,"\nVel1 Duty=> 15
set_pwm1_duty(0); ");
port_d_pullups(TRUE); set_pwm1_duty(150L);
enable_interrupts(INT_SSP); }
//Activamos las interrupciones de I2C if (tem>27)
enable_interrupts(GLOBAL); {
printf(lcd_putc,"\nVel3 Duty=> 90
while (true) { ");
set_pwm1_duty(900L);
if(state<0x80) //Se }
recibe dato if (tem>=24 && tem<=27)
{ {
//state=0x80; printf(lcd_putc,"\nVel2 Duty=> 50
");
t1=(float)x; //LEE EL set_pwm1_duty(500L);
VALOR DEL PIN }
t11=(t1*5*100)/255; delay_ms(500);
//CONVIERTE EL VALOR LEIDO DE }
HEXA AL REAL el numero }
0.01960784314 viene de dividir (5/255) }
y el resultado se multiplica por 100 para
alcanzar 150 grados
EJERCICIO PROPUESTO
162
El siguiente programa tiene por objetivo diseñar un lenguaje de
programación que cumpla con los parámetros siguientes: utilizar
un microcontrolador pic como maestro al cual esté conectado un
teclado matricial y una pantalla lcd que indique las aplicaciones
de sensor lm35 o sensor de proximidad comunicado mediante el
protocolo SPI a un esclavo que tenga comunicación directa con la
pc mediante RS232 y varíe la velocidad del motor y el encendido
de luces logrando un sistema completo con los dos sensores
mencionados inicialmente.
163
Bluetooth es una especificación tecnológica para redes inalámbricas que permite la
transmisión de voz y datos entre distintos dispositivos mediante una radiofrecuencia
segura (2,4 GHz). Esta tecnología, por lo tanto, permite las comunicaciones sin cables
ni conectores y la posibilidad de crear redes inalámbricas domésticas para sincronizar y
compartir la información que se encuentra almacenada en diversos equipos.
Definición grupal:
“Bluetooth es un protocolo normalizado por el estándar IEEE 802.15.1 para
Redes Inalámbricas de Área Personal (WPAN), el cual consiste en una
comunicación inalámbrica que posibilita la transmisión de voz y datos entre
diferentes dispositivos mediante un enlace por radiofrecuencia en un rango de
frecuencia libre de uso de 2,4GHz y una cobertura de 10m, extendible con
antenas de alta ganancia hasta los 100m.
164
Bluetooth se encuentra en la clasificación de redes inalámbricas WPAN el cual es un protocolo normalizado por el están
Wifi
Radio
Frecuencia
¿Qué es Bluetooth?
El Bluetooth Special Interest Group (SIG), una asociación comercial formada por
líderes en telecomunicación, informática e industrias de red, está conduciendo el
desarrollo de la tecnología inalámbrica Bluetooth y llevándola al mercado.
La tecnología inalámbrica Bluetooth es una tecnología de ondas de radio de corto
alcance (2.4 gigahertzios de frecuencia) cuyo objetivo es el simplificar las
comunicaciones entre dispositivos informáticos, como ordenadores móviles,
teléfonos móviles, otros dispositivos de mano y entre estos dispositivos e Internet.
También pretende simplificar la sincronización de datos entre los dispositivos y
otros ordenadores.
165
Permite comunicaciones, incluso a través de obstáculos, a distancias de hasta unos
10 metros. Esto significa que, por ejemplo, puedes oír tus mp3 desde tu comedor,
cocina, cuarto de baño, etc. También sirve para crear una conexión a Internet
inalámbrica desde tu portátil usando tu teléfono móvil. Un caso aún más práctico es
el poder sincronizar libretas de direcciones, calendarios etc en tu PDA, teléfono
móvil, ordenador de sobremesa y portátil automáticamente y al mismo tiempo.
Los promotores de Bluetooth incluyen Agere, Ericsson, IBM, Intel, Microsoft,
Motorola, Nokia y Toshiba, y centenares de compañías asociadas.
Fuente. http://www.informatica-hoy.com.ar/telefonos-celulares/Que-es-Bluetooth.php
166
Funcionamiento.
Trabaja en dos capas del modelo OSI que son la de enlace y aplicación, incluye un
transeiver que trasmite y recibe a una frecuencia de 2.4 GHz Las conexiones que
se realizan son de uno a uno con un rango máximo de 10 metros, si se deseara
implementar la distancia se tendría que utilizar repetidores los cuales nos
ayudarían a abarcar una distancia de 100 metros.
Bluetooth por cuestiones de seguridad cuanta con mecanismos de encriptación de
64 bits y autentificación para controlar la conexión y evitar que dispositivos
puedan acceder a los datos o realizar su modificación.
ZIGBEE
Gallego C. Fogaldo [ online ] Menciona:
“ZigBee, también conocido como IEEE 802.15.4, por el estándar basado, se
utiliza para la comunicación inalámbrica mediante radio digital. Se caracteriza
por una comunicación segura, su sencillez de integración, su topología de red
(en malla, aunque pueden encontrarse otras topologías), y sobre todo, por su bajo
consumo.” [ 1 ]
Soria López, José [ online ] Menciona:
“ZigBee es el nombre de la especificación de un conjunto de protocolos de alto
nivel de comunicación inalámbrica para su utilización con radiodifusión digital
de bajo consumo, basada en el estándar IEEE 802.15.4 de redes inalámbricas de
área personal (wireless personal area network, WPAN). Su objetivo son las
aplicaciones que requieren comunicaciones seguras con baja tasa de envío de
datos y maximización de la vida útil de sus baterías..” [ 2 ]
Ortega H. Carlos [ online ] Menciona:
“ZigBee es un estándar de comunicaciones inalámbricas diseñado por la ZigBee
Alliance. Es un conjunto estandarizado de soluciones que pueden ser
implementadas por cualquier fabricante. ZigBee está basado en el estándar IEEE
167
802.15.4 de redes inalámbricas de área personal (wireless personal área Newark,
WPAN) y tiene como objetivo las aplicaciones que requieren comunicaciones
seguras con baja tasa de envío de datos y maximización de la vida útil de sus
baterías.” [ 3 ]
Definición Grupal:
“ZigBee es una nueva tecnología de móvil de corto alcance y bajo consumo y
que se definió como una solución inalámbrica de baja capacidad para
aplicaciones en el hogar como la seguridad y la sistematización, que está
basado en el estándar 802.15.4.”
ZigBee es un estándar de comunicaciones inalámbricas diseñado por la ZigBee
Alliance. Es un conjunto estandarizado de soluciones que pueden ser implementadas por
cualquier fabricante. ZigBee está basado en el estándar IEEE 802.15.4 de redes
inalámbricas de área personal (wireless personal área Newark, WPAN) y tiene como
objetivo las aplicaciones que requieren comunicaciones seguras con baja tasa de envío
de datos y maximización de la vida útil de sus baterías.
1998. - Las redes de la familia de ZigBee se conciben, al tiempo que se hizo claro que
Wi-Fi y Bluetooth no serían soluciones válidas para todos los contextos. En concreto, se
observó una necesidad de redes ad hoc inalámbricas.2003. - El estándar IEEE 802.15.4
se aprueba en mayo.
2003. - En el verano, Philips Semiconductors puso fin a su inversión en redes de mallas.
Philips Lighting ha perpetuado la participación de Philips, que sigue siendo un miembro
prominente de la ZigBee Alliance.
2004. - ZigBee Alliance anunció en octubre una duplicación en su número de miembros
en el último año a más de 100 compañías en 22 países. En abril de 2005 había más de
150 miembros corporativos, y más de 200 en diciembre del mismo año.
2004. - Se aprueba la especificación Zigbee el 14 de diciembre.
2005. - ZigBee 2004 se puso a disposición del público sin fines comerciales el 13 de
junio en San Ramón, California.
2006. - “El precio de mercado de un transceptor compatible con ZigBee se acerca al
dólar y el precio de un conjunto de radio, procesador y memoriaronda los tres dólares”
(5).2006. - En diciembre se publicó la actual revisión de la especificación.
2007. - En Noviembre se publicó el perfil HOME AUTOMATION de la especificación.
[1]
168
ESTRUCTURA
169
cubrir varios elementos que son comunes a todos los dispositivos, como el
subdireccionamiento, los modos de direccionamientos y la descripción de dispositivos,
como el tipo de dispositivo, potencia, modos de dormir y coordinadores de cada uno.[2]
Características
ZigBee, también conocido como "HomeRF Lite", es una tecnología inalámbrica
con velocidades comprendidas entre 20 kB/s y 250 kB/s.
Los rangos de alcance son de 10 m a 75 m.
Puede usar las bandas libres ISM (6) de 2,4 GHz (Mundial), 868 MHz (Europa)
y 915 MHz (EEUU).
Una red ZigBee puede estar formada por hasta 255 nodos los cuales tienen la
mayor parte del tiempo el transceiver ZigBee dormido con objeto de consumir
menos que otras tecnologías inalámbricas.
Un sensor equipado con un transceiver ZigBee pueda ser alimentado con dos
pilas AA durante al menos 6 meses y hasta 2 años.
La fabricación de un transmisor ZigBee consta de menos circuitos analógicos de
los que se necesitan habitualmente.
Diferentes tipos de topologías como estrella, punto a punto, malla, árbol.·
Acceso de canal mediante CSMA/CA(7) (acceso múltiple por detección de
portadora con evasión de colisiones).
Escalabilidad de red -- Un mejor soporte para las redes más grandes, ofreciendo
más opciones de gestión, flexibilidad y desempeño.
Fragmentación -- Nueva capacidad para dividir mensajes más largos y permitir
la interacción con otros protocolos y sistemas.
Agilidad de frecuencia -- Redes cambian los canales en forma dinámica en caso
que ocurran interferencias.
Gestión automatizada de direcciones de dispositivos - El conjunto fue
optimizado para grandes redes con gestión de red agregada y herramientas de
configuración.
Localización grupal -- Ofrece una optimización adicional de tráfico necesaria
para las grandes redes.
Puesta de servicio inalámbrico -- El conjunto fue mejorado con capacidades
seguras para poner en marcha el servicio inalámbrico.·
Recolección centralizada de datos -- El conjunto fue sintonizado
específicamente para optimizar el flujo de información en las grandes redes.[3]
170
Ventajas
Ideal para conexiones punto a punto y punto a multipunto·
Diseñado para el direccionamiento de información y el refrescamiento de la red.
Opera en la banda libre de ISM 2.4 Ghz para conexiones inalámbricas.
Óptimo para redes de baja tasa de transferencia de datos.
Alojamiento de 16 bits a 64 bits de dirección extendida.
Reduce tiempos de espera en el envío y recepción de paquetes.
Detección de Energía (ED).
Baja ciclo de trabajo - Proporciona larga duración de la batería.
Soporte para múltiples topologías de red: Estática, dinámica, estrella y malla.
Hasta 65.000 nodos en una red.
128-bit AES de cifrado - Provee conexiones seguras entre dispositivos.
Son más baratos y de construcción más sencilla.Desventajas·
La tasa de transferencia es muy baja.
Solo manipula textos pequeños comparados con otras tecnologías.
Zigbee trabaja de manera que no puede ser compatible con bluetooth en todos
sus aspectos porque no llegan a tener las mismas tasas de transferencia, ni la
misma capacidad de soporte para nodos.
Tiene menor cobertura porque pertenece a redes inalámbricas de tipo WPAN.
Tipos de Dispositivos
Se definen tres tipos distintos de dispositivo ZigBee según su papel en la red
Coordinador ZigBee (ZigBee Coordinator, ZC): El tipo de dispositivo más completo.
Debe existir uno por red. Sus funciones son las de encargarse de controlar la red y los
caminos que deben seguir los dispositivos para conectarse entre ellos, requiere memoria
y capacidad de computación.
Router ZigBee (ZigBee Router, ZR):Interconecta dispositivos separados en la
topología de la red, además de ofrecer un nivel de aplicación para la ejecución de
código de usuario.
Dispositivo final (ZigBee End Device, ZED):Posee la funcionalidad necesaria para
comunicarse con su nodo padre (el coordinador o un router), pero no puede transmitir
información destinada a otros dispositivos. De esta forma, este tipo de nodo puede estar
dormido la mayor parte del tiempo, aumentando la vida media de sus baterías. Un ZED
tiene requerimientos mínimos de memoria y es por tanto significativamente más barato.
Funcionalidad
Basándose en su funcionalidad, puede plantearse una segunda clasificación:Dispositivo
de funcionalidad completa (FFD):También conocidos como nodo activo. Es capaz de
recibir mensajes en formato 802.15.4. Gracias a la memoria adicional y a la capacidad
171
de computar, puede funcionar como Coordinador o Router ZigBee, o puede ser usado en
dispositivos de red que actúen de interfaces con los usuarios.Dispositivo de
funcionalidad reducida (RFD):También conocido como nodo pasivo. Tiene capacidad y
funcionalidad limitadas con el objetivo de conseguir un bajo coste y una gran
simplicidad. Básicamente, son los sensores/actuadores de la red.Un nodo ZigBee (tanto
activo como pasivo) reduce su consumo gracias a que puede permanecer dormido la
mayor parte del tiempo (incluso muchos días seguidos). [4]
Topología
La capa de red soporta múltiples configuraciones de red incluyendo estrella, árbol,
punto a punto y rejilla (malla).
Topología en estrella
En la configuración en estrella, uno de los dispositivos tipo FFD asume el rol de
coordinador de red y es responsable de inicializar y mantener los dispositivos en la red.
Todos los demás dispositivos zigbee, conocidos con el nombre de dispositivos finales,
hablan directamente con el coordinador.En la configuración de rejilla, el coordinador
ZigBee es responsable de inicializar la red y de elegir los parámetros de la red, pero la
red puede ser ampliada a través del uso de routers ZigBee.
Fuente: http://rua.ua.es/dspace/bitstream/10045/1109/7/Informe_ZigBee.pdf
Fuente: http://rua.ua.es/dspace/bitstream/10045/1109/7/Informe_ZigBee.pdf
Topología de árbol
La topología de árbol es un caso especial de topología de conexión punto a punto, en la
cual muchos dispositivos son FFDs y los RFD pueden conectarse como un nodo único
al final de la red. Cualquiera de los FFDs restantes pueden actuar como coordinadores y
proveer servicios de sincronización hacia otros dispositivos o coordinadores.
Fuente: http://rua.ua.es/dspace/bitstream/10045/1109/7/Informe_ZigBee.pdf
Tipos de Tráfico de Datos
ZigBee/IEEE 802.15.4 dirige tres tipos de tráfico típicos:
1. Cuando el dato es periódico: La aplicación dicta la proporción, el sensor se activa,
chequea los datos y luego desactiva.
2. Cuando el dato es intermitente: La aplicación, u otro estímulo, determina la
proporción, como en el caso de los detectores de humo. El dispositivo necesita sólo
conectarse a la red cuando la comunicación se hace necesaria. Este tipo habilita el
ahorro óptimo en la energía.
3. Cuando el dato es repetitivo: La proporción es a priori fija. Dependiendo de las
hendeduras de tiempo repartidas, los dispositivos operan para las duraciones fijas.[5]
173
Seguridad
La seguridad de las transmisiones y de los datos son puntos clave en la tecnología
ZigBee. ZigBee utiliza el modelo de seguridad de la subcapa MAC IEEE 802.15.4, la
cual especifica 4 servicios de seguridad. Control de accesos: El dispositivo mantiene
una lista de los dispositivos comprobados en la red. Datos Encriptados: Los cuales usan
una encriptación con un código de 128 bits. Integración de tramas: Protegen los datos de
ser modificados por otros. Secuencias de refresco: Comprueban que las tramas no han
sido reemplazadas por otras. El controlador de red comprueba estas tramas de refresco y
su valor, para ver si son las esperadas. Modelo básico de seguridad. Las claves son la
base de la arquitectura de seguridad y, como tal, su protección es fundamental para la
integridad del sistema. Las claves nunca deben transportarse utilizando un canal
inseguro, si bien existe una excepción momentánea que se da en la fase inicial de la
unión de un dispositivo desconfigurado a una red. La red ZigBee debe tener particular
cuidado, pues una red ad hoc (12) puede ser accesible físicamente a cualquier
dispositivo externo y el entorno de trabajo no se puede conocer de antemano.
Aplicaciones
Los protocolos ZigBee están definidos para su uso en aplicaciones embebidas con
requerimientos muy bajos de transmisión de datos y consumo energético. Se pretende su
uso en aplicaciones de propósito general con características auto organizativas y bajo
coste (redes en malla, en concreto). Puede utilizarse para realizar control industrial,
albergar sensores empotrados, recolectar datos médicos, ejercer labores de detección de
humo o intrusos o domótica. La red en su conjunto utilizará una cantidad muy pequeña
de energía de forma que cada dispositivo individual pueda tener una autonomía de hasta
5 años antes de necesitar un recambio en su sistema de alimentación.
174
175
EJERCICIOS RESUELTOS
176
EJERCICIOS PROPUESTOS SOLUCIONARIO A LOS EJERCICIOS
Código ejercicio 1.
TEMA:
CCP modo Captura de Timer1
DESCRIPCION
El siguiente programa trabaja con el módulo CCP en modo Captura es decir capta un
valor que llega al timer en este caso Timer1 que es un generador de pulsos, entonces al
variar la frecuencia tomo el ultimo valor y lo visualiza en una pantalla LCD.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 CI 555
Resistencia de 1K
Resistencia de 220
1 Fuente de alimentación (5v)
1 Protoboard
Capacitores 10uF
Diodo Led
Potenciómetro
CAPTURAS PROTEUS
CODIGO COMENTADO
#include <16f887.h>
#fuses xt, NOWDT, NOPROTECT, Estado=0;
NOLVP, NOMCLR // CONFIGURACION if(Senal==0){
DE FUSIBLES Senal=1;
#use delay(clock=4M) }
#define LCD_ENABLE_PIN }
PIN_D0 // INCLUSION DE LA LIBRERÍA }
PARA LA LCD
#define LCD_RS_PIN PIN_D1
void main(){
#define LCD_RW_PIN PIN_D2
lcd_init();
#define LCD_DATA4 PIN_D4
setup_timer_1(T1_INTERNAL |
#define LCD_DATA5 PIN_D5
T1_DIV_BY_1); // DECLARACION PARA
#define LCD_DATA6 PIN_D6 MODO CAPTURA
#define LCD_DATA7 PIN_D7 ext_int_edge(0,L_TO_H);
#include <lcd.c> Estado=0;
enable_interrupts(int_ccp1); //
DECLARACION DE INTERRUPCIONES
Int16 TiempoF; // DECLARACION DE LAS enable_interrupts(global);
VARIABLES EN MODO CAPTURA setup_ccp1(CCP_CAPTURE_FE);
float Periodo; do {
float Calculo; if(Senal==1){
float Frecuencia; Calculo=TiempoF*1;
int1 Senal=0; Periodo=Calculo*0.25;
int1 Estado=0; Frecuencia=(1/
(Periodo*2.0))*1000000;
#int_ccp1 // INCLUSION DE LA SENTENCIA printf (lcd_putc,"Captura de
CCP
Datos");
void Captura(){
delay_ms(100);
if(Estado==0){
lcd_gotoxy(1,2);
set_timer1(0);
printf(lcd_putc,"\nfrecue=
ext_int_edge(0,H_TO_L);
%9.5fHz ",Frecuencia);
Estado=1;
}
} else{
Senal=0;
TiempoF=get_timer1();
} while (TRUE);
ext_int_edge(0,L_TO_H);
}
Código ejercicio 2.
TEMA:
CCP modo Comparación voltaje externo
DESCRIPCION
El siguiente programa trabaja con el módulo CCP en modo comparación, para esto tomo
como referencia un voltaje externo de 5 volts como referencia para compararlo con el
timer 1 o 2 y de esta manera encender tres posiciones diferentes haciendo referencia a
un set point.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
CAPTURAS PROTEUS
CODIGO COMENTADO
#include <16f887.h>
#device adc=10 // DECLARACION DEL
VALOR ADC PARA LA CONVERSION void main()
#use delay (clock = 4000000) {
#fuses NOMCLR,XT int v;
CONFIGURACION DE PINES DE int16 q;
LCD// DECLARACION DE LOS PINES PARA int16 z;
LCD
float p;
#define LCD_DB4 PIN_D4
#define LCD_DB5 PIN_D5
setup_adc_ports(PIN_A0|VSS_VDD);
#define LCD_DB6 PIN_D6
//DECLARACION DE LA SENTECNIA CCP
#define LCD_DB7 PIN_D7 COM.
#define LCD_RS PIN_D2
#define LCD_E PIN_D3 setup_adc(ADC_CLOCK_INTERNAL)
#include <lcd.c> ;
lcd_init(); {
for (;;) output_high(pin_b2);
{ output_low(pin_b0);
set_adc_channel(0); output_low(pin_b1);
delay_us(20); }
if (p>v)
q = read_adc(); {
z = 5 * q; output_high(pin_b0);
p = z/1024.0; output_low(pin_b1);
v=3; output_low(pin_b2);
}
printf(lcd_putc, "\f SetPoint= 3 if ((q>600)&&(q<650))
V"); // DECLARACION DE UN VALOR SET {
POINT A COMP. output_high(pin_b1);
printf(lcd_putc, "\n V Actual= output_low(pin_b0);
%01.1fV", p); output_low(pin_b2);
delay_ms(100); }
if (p<v) // DECLARACION DE LOS }
PINES DE SALIDA LOS LEDS PARA
VISULIZAR LA COM. }
Código ejercicio 3.
TEMA:
CCP modo PWM para señal cuadrática.
DESCRIPCION
El siguiente código presenta el modo PWM del módulo CCP, lo que nos permitirá variar
el ciclo de trabajo de una señal cuadrática en 3 posiciones diferentes y verificar la
forma de onda y la variación de la misma en diodo led.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
CAPTURAS PROTEUS
CODIGO COMENTADO
#include <16f887.h> int z=0;
#fuses xt //
#use delay (clock=4M) lcd_init();
#define LCD_ENABLE_PIN PIN_D0 printf(lcd_putc,"\fSistema
//// Encendido");
#define LCD_RS_PIN PIN_D1 delay_ms(100);
//// kbd_init();
#define LCD_RW_PIN PIN_D2 setup_adc_ports(NO_ANALOGS);
//// port_b_pullups(TRUE);
#define LCD_DATA4 PIN_D4 set_tris_c(0x00);
//// while (true){
#define LCD_DATA5 PIN_D5 e=kbd_getc();
//// if(e!=0){
#define LCD_DATA6 PIN_D6 if(e=='A') {
//// printf(lcd_putc,"\f Encendido ");
#define LCD_DATA7 PIN_D7 delay_ms(100);
#include <lcd.c> Z=3;
#include <kbd_lib.c> output_c(0);
#use fast_io(c) pwm_set_duty_percent(0);
#use pwm(ccp1,frequency=2k, delay_ms(100);
duty=50) }
void main(){ if(e=='B') {
char e; printf(lcd_putc,"\f Apagado ");
output_c(0); if(e=='3') {
delay_ms(100); output_c(0);
output_c(0); delay_ms(30);
Z=1;
pwm_set_duty_percent(0); if(z==1){
delay_ms(100); printf(lcd_putc,"\f Debe Encender ");
} delay_ms(100);
output_c(0);
if(e=='1') { }
delay_ms(30); if(z==3){
output_c(0);
if(z==1){ printf(lcd_putc,"\f Duty 75
printf(lcd_putc,"\f Debe Encender "); ");//velocidad 2
delay_ms(100); pwm_set_duty_percent(750);
output_c(0);
} delay_ms(100);
if(z==3){ }
printf(lcd_putc,"\f Duty }
25");//velocidad 1 if(e=='C') {
pwm_set_duty_percent(250); output_c(0);
delay_ms(100); delay_ms(30);
}
} if(z==1){
printf(lcd_putc,"\f Debe Encender ");
if(e=='2') { delay_ms(100);
output_c(0); output_c(0);
delay_ms(30); }
if(z==1){ if(z==3){
printf(lcd_putc,"\f Debe Encender ");
delay_ms(100); printf(lcd_putc,"\f Duty 85
output_c(0); ");//velocidad 2
} pwm_set_duty_percent(850);
if(z==3){
printf(lcd_putc,"\f Duty 50 delay_ms(100);
");//velocidad 2 }
pwm_set_duty_percent(500); }
}
delay_ms(100); }
} }
}
Código ejercicio 4.
TEMA:
CCP modo captura con sensor de temperatura.
DESCRIPCION
El siguiente programa está configurado para captar la señal analógica de un sensor lm35
y visualizarla en una pantalla lcd.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
Sensor lm35
CAPTURAS PROTEUS
#use delay(clock=4M)
#include <lcd.c>
float temperatura;
void main()
CODIGO COMENTADO {
#include <16f887.h>
#fuses XT, NOWDT, NOPROTECT, setup_adc_ports(sAN0);//entrada del
NOLVP, NOCPD, NOWRT, LM35
NODEBUG setup_adc(ADC_CLOCK_INTERNAL)
#device *=16 ;
#device adc=10
set_adc_channel(0); while(true)
{
lcd_init(); temperatura=(float)read_adc()/2;
lcd_gotoxy(5,1);
printf(lcd_putc,"Temperatura"); lcd_gotoxy(5,1);
delay_ms(350); printf(lcd_putc,"%02.1f",temperatura);
lcd_init(); lcd_gotoxy(14,1);
printf(lcd_putc,"Grados");
delay_ms(200);
}
Código ejercicio 5.
TEMA:
CCP modo comparación con Sensor Ultrasónico
DESCRIPCION
El siguiente programa trabaja con una serie de bits de resolución que permiten hacer u
calculo a la señal analógica que es enviada por medio del sensor e indicarnos la
distancia qu este se encuentra. Sin embargo en proteus al no contar con las librerías
necesarias del sensor no se puede correr el programa.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
CAPTURAS PROTEUS
CODIGO COMENTADO
#include <16f887.h> setup_timer_1(T1_INTERNAL|
#fuses XT,NOWDT,NOMCLR T1_DIV_BY_8); // initiating timer
#use delay (clock=4000000)
#define LCD_DB4 PIN_D4 while(true)
#define LCD_DB5 PIN_D5 {
#define LCD_DB6 PIN_D6 output_high(trig); //
#define LCD_DB7 PIN_D7 ping the sonar
#define LCD_RS PIN_D2 delay_us(20); //
#define LCD_E PIN_D3 sending 20us pulse
#include <lcd.c> output_low(trig);
#use standard_io(b)
#define trig pin_B1 while(!input(ECHO)) //
#define echo pin_B0 wait for high state of echo pin
{}
int16 time; // Defining variables
float distance; set_timer1(0); // setting
timer zero
void main()
{ while(input(ECHO)) //
lcd_init(); // Wait for high state of echo pin
initiating the LCD {}
printf(LCD_PUTC, "\f
ULTRASONIC");// for LCD & MCU time=get_timer1(); //
restart troubleshooting Getting the time
delay_ms(1000); // distance=time*10 ; // Calculating
Boot-up delay, for troubleshooting the distance
distance=distance/75;
printf(LCD_PUTC, "\nDistance =
%F",distance); // Putting the time and }
delay_ms(1000); }
Código ejercicio 6.
TEMA:
CCP modo comparación con un sensor de presencia
DESCRIPCION
El siguiente programa detecta la presencia de un sensor infrarrojo en el rango permisible
del mismo lo que indicara n mensaje de detectado y no detectado en un pantalla LCD
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
Sensor infrarrojo
CAPTURAS PROTEUS
CODIGO COMENTADO
#include <16f887.h> lcd_init();
#fuses XT, NOWDT, NOPROTECT,
NOLVP, NOCPD, NOWRT,
NODEBUG while(true)
#device *=16 {
#device adc=10 delay_ms(50);
#use delay(clock=4M) value=read_adc();
#define LCD_DB4 PIN_D4 y=value*0.005;
#define LCD_DB5 PIN_D5 y=y-1.183;
#define LCD_DB6 PIN_D6
#define LCD_DB7 PIN_D7 lcd_gotoxy(5,2);
#define LCD_RS PIN_D2 printf(lcd_putc,"%2.3f cm",y);
#define LCD_E PIN_D3 lcd_gotoxy(5,1);
#include <lcd.c> printf(lcd_putc,"Distancia");
delay_ms(1000);
if((y<=3)&&(y>0))
int16 value; {
float32 y; printf(lcd_putc,"\f Detecta");
void main() delay_ms(1000);
{ printf(lcd_putc,"\f");
setup_adc_ports(sAN0| }
VSS_VDD);//entrada del LM35 else
setup_adc(ADC_CLOCK_INTERNAL) {
; printf(lcd_putc,"\f NO Detecta");
set_adc_channel(0); delay_ms(1000);
printf(lcd_putc,"\f");
lcd_init(); }
lcd_gotoxy(5,1); }
printf(lcd_putc,"Luminosidad");
delay_ms(350); }
Código ejercicio 7.
TEMA:
Motor DC PWM
DESCRIPCION
El siguiente programa tiene por objetivo diseñar un lenguaje de programación que nos
permita variar el ciclo de trabajo de una señal cuadrática y verificar su funcionaiento en
un motor de 5volts.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
Motor dc
CAPTURAS PROTEUS
CODIGO COMENTADO
#include <18f4550.h> #define LCD_DATA4 PIN_D4
#fuses xt, nowdt, nowrt, nomclr ////
#use delay (clock=4M) #define LCD_DATA5 PIN_D5
#define LCD_ENABLE_PIN PIN_D0 ////
//// #define LCD_DATA6 PIN_D6
#define LCD_RS_PIN PIN_D1 ////
//// #define LCD_DATA7 PIN_D7
#define LCD_RW_PIN PIN_D2 #include <lcd.c>
//// #include <kbd_lib.c>
#use pwm(ccp1,frequency=2k, set_tris_b(0xf0);
duty=50) output_low(pin_b0);
#use pwm(ccp2,frequency=2k, output_low(pin_b1);
duty=50) output_low(pin_b2);
output_low(pin_b3);
char a=10; d=0;
short int d=1; }
int z;
int i; switch(a)
int de; {
#INT_RB case 'A':
void teclado(){ lcd_gotoxy(1,1);
char b; printf(lcd_putc,"\fSistema ON ");
output_toggle(pin_c1); delay_ms(100);
kbd_init(); z=3;
do{ break;
b=kbd_getc(); case 'B' :
if(b!=0){
a=b; printf(lcd_putc,"\fSistema OFF ");
lcd_putc("\f"+b); SET_PWM1_DUTY(0);
} SET_PWM2_DUTY(0);
}while(b==0); delay_ms(100);
d=1; z=0;
clear_interrupt(int_rb); break;
} case 'C' :
printf(lcd_putc,"\fIzquierda
");//encendido
SET_PWM1_DUTY(0);
void main(){ SET_PWM2_DUTY(0);
delay_ms(100);
lcd_init(); de=0;
lcd_putc("\fControl PWM"); i=1;
delay_ms(100); break;
set_tris_c(0x00);
set_tris_E(0x00); case 'D' :
port_b_pullups(true);
enable_interrupts(int_rb); printf(lcd_putc,"\fDerrecha
enable_interrupts(global); ");//encendido
SET_PWM1_DUTY(0);
SET_PWM2_DUTY(0);
delay_ms(100);
de=1;
while (true){ i=0;
if(d==1){ break;
SET_PWM1_DUTY(400);
case '1': SET_PWM2_DUTY(0);
if(z>1){ delay_ms(100);
if(i==1){ }
printf(lcd_putc,"\f DC 25");//velocidad }
1 break;
SET_PWM1_DUTY(0); case '3':
SET_PWM2_DUTY(300); if(z>1){
delay_ms(100); if(i==1){
} printf(lcd_putc,"\f DC 90");//velocidad
if(de==1){ 1
printf(lcd_putc,"\f DC 25");//velocidad SET_PWM1_DUTY(0);
1 SET_PWM2_DUTY(500);
SET_PWM1_DUTY(300); delay_ms(100);
SET_PWM2_DUTY(0); }
delay_ms(100); if(de==1){
} printf(lcd_putc,"\f DC 90");//velocidad
} 1
break; SET_PWM1_DUTY(500);
case '2': SET_PWM2_DUTY(0);
if(z>1){ delay_ms(100);
if(i==1){ }
printf(lcd_putc,"\f DC 75");//velocidad }
1 break;
SET_PWM1_DUTY(0); default:
SET_PWM2_DUTY(400); printf(lcd_putc,"\fNo Corresponde");
delay_ms(100); delay_ms(100);
} }
if(de==1){ }
printf(lcd_putc,"\f DC 75");//velocidad }
1
Código ejercicio 8.
TEMA:
Motor AC con TRIAC
DESCRIPCION
El siguiente programa tiene por objetivo establecer un lenguaje de programación que
permita controlar el ciclo de trabajo de en señal PWM además de acoplarse a un circuito
de potencia que detectara el cruce pro cero y variaría la cantidad de energía que legue a
la carga.
Nota: La simulación no puede ejecutarse debido a un error en el diseño del circuito en la
parte de potencia.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
Motor dc
CAPTURAS PROTEUS
CODIGO COMENTADO
#INCLUDE <16F887.H> char k;
#fuses intrc_io, nowdt, nomclr, noput int y,z;
#fuses intrc_io, nowdt, nomclr, noput
#use delay(clock=4M) void main()
#include <kbd_lib.c> {
#BYTE WPUB =0X95 OPTION_REG = 0;
#BYTE OPTION_REG = 0X81 WPUB= 0B11111111;
#include <lcd.c> //port_b_pullups(true);
kbd_init(); break;
lcd_init();
lcd_putc("\f SISTEMA Funcionando"); case (6):
delay_us(100); lcd_putc("\f SISTEMA AC");
output_low(pin_c0);
while (true) delay_us(20);
{ K=0;
delay_us(100); z=0;
k=kbd_getc();
if(k!=0) }
{ }else output_low(pin_c0);
y=k-48; if((z==1))
{
switch (y) while(input(pin_a1))
{ {
if(input(pin_a0))
case(1): {
z=1; output_low(pin_c0);
lcd_putc("\f Duty en:\n duty 12 "); delay_us(7200);
delay_us(20); output_high(pin_c0);
break; delay_us(1000);
}
case(2): }
z=2; }else if((z==2))
lcd_putc("\f Duty en: \n 25");
delay_us(20); {
break; while(input(pin_a1))
{
case(3): if(input(pin_a0))
z=3; {
printf(lcd_putc,"\f Duty en: \n 45"); output_low(pin_c0);
delay_us(20); delay_us(6000);
break; output_high(pin_c0);
delay_us(2200);
case (4): }
z=4; }
printf(lcd_putc,"\f Duty en: \n 60"); }else if((z==3))
delay_us(20);
break; {
while(input(pin_a1))
case (5): {
z=5; if(input(pin_a0))
printf(lcd_putc,"\f Duty en: \n 85"); {
delay_us(20); output_low(pin_c0);
delay_us(4800); }else if((z==5))
output_high(pin_c0);
delay_us(3400); {
} while(input(pin_a1))
} {
}else if((z==4)) if(input(pin_a0))
{
{ output_low(pin_c0);
while(input(pin_a1)) delay_us(2400);
{ output_high(pin_c0);
if(input(pin_a0)) delay_us(5800);
{ }
output_low(pin_c0); }
delay_us(3600); }
output_high(pin_c0);
delay_us(4600); }
}
} }
Código ejercicio 9.
TEMA:
COMUNICACIÓN SPI
DESCRIPCION
El siguiente programa permite la comunicación entre dos microcontroladores pic uno
denominado maestro y otro llamado esclavo mediante el protocolo SPI, además cuenta
con un teclado conectado a ambos pics que envían datos al presionar una tecla.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
Motor dc
CAPTURAS PROTEUS
CODIGO COMENTADO MAESTRO
#include <18F4550.h> // rx=spi_read();
DECLARAMOS EL TIPO DE PIC A //k=dat;
UTILIZAR lcd_gotoxy(8,1);
#fuses XT,NOMCLR printf(lcd_putc,"\f %u",rx);
#use delay (clock=4M) if(rx!=0){
while (true){ }
tecla=kbd_getc(); if(tecla=='5'){
dat=tecla-48; spi_write(dat);
if(tecla!=0){ printf(lcd_putc,"\f 5 ");
if(tecla=='A'){ delay_ms(500);
setup_spi(spi_master | spi_l_to_h | }
spi_clk_div_16); if(tecla=='6'){
printf(lcd_putc,"\f Modo TX "); spi_write(6);
delay_ms(100); printf(lcd_putc,"\f 6 ");
disable_interrupts(INT_SSP); delay_ms(500);
z=1; }
} if(tecla=='7'){
if(tecla=='B'){ spi_write(dat);
z=0; printf(lcd_putc,"\f 7 ");
setup_spi(spi_slave | spi_l_to_h | delay_ms(500);
spi_clk_div_16| SPI_XMIT_L_TO_H); }
printf(lcd_putc,"\f Modo RX "); if(tecla=='8'){
delay_ms(100); spi_write(dat);
enable_interrupts(GLOBAL); // habilita printf(lcd_putc,"\f 8 ");
interrupcion global
enable_interrupts(INT_SSP); }
ssp_interrupt(); if(tecla=='9'){
spi_write(dat);
} printf(lcd_putc,"\f 9 ");
}
if(tecla=='1'){ if(tecla=='C'){
spi_write(tecla); spi_write(dat);
printf(lcd_putc,"\f 1 "); printf(lcd_putc,"\f C");
} }
if(tecla=='2'){ if(tecla=='D'){
spi_write(tecla); spi_write(dat);
printf(lcd_putc,"\f 2 "); printf(lcd_putc,"\f D ");
}
if(tecla=='3'){ }
spi_write(dat); if(tecla=='#'){
printf(lcd_putc,"\f 3 "); spi_write(dat);
printf(lcd_putc,"\f # ");
}
if(rx==68){
} printf(lcd_putc,"\f D ");
} delay_ms(100);
}
} if(rx==35){
} printf(lcd_putc,"\f # ");
delay_ms(100);
}
CODIGO COMENTADO ESCLAVO }
#include <18F4550.h> // }
DECLARAMOS EL TIPO DE PIC A }}
UTILIZAR
#fuses XT,NOMCLR
#use delay (clock=4M) void main(){
CAPTURAS PROTEUS
} }
if (tecla=='9'){
if (tecla=='2'){ envio_I2C ();
envio_I2C (); printf(lcd_putc,"\fEnvio 9");
delay_ms(100);
printf(lcd_putc,"\fEnvio 2");
delay_ms(100); }
if (tecla=='A'){
} envio_I2C ();
if (tecla=='3'){ printf(lcd_putc,"\fEnvio A");
envio_I2C (); delay_ms(100);
envio_I2C ();
printf(lcd_putc,"\fEnvio 3"); }
delay_ms(100);
if (tecla=='B'){
} envio_I2C ();
if (tecla=='4'){ printf(lcd_putc,"\fEnvio B");
envio_I2C (); delay_ms(100);
printf(lcd_putc,"\fEnvio 4");
delay_ms(100); }
if (tecla=='C'){
} envio_I2C ();
if (tecla=='5'){ printf(lcd_putc,"\fEnvio C");
envio_I2C (); delay_ms(100);
printf(lcd_putc,"\fEnvio 5");
delay_ms(100); }
if (tecla=='D'){
} envio_I2C ();
if (tecla=='6'){ printf(lcd_putc,"\fEnvio D");
envio_I2C (); delay_ms(100);
printf(lcd_putc,"\fEnvio 6");
delay_ms(100); }
if (tecla=='*'){ {
envio_I2C (); x = i2c_read();
printf(lcd_putc,"\fEnvio *"); }
delay_ms(100);
if(state < 0x80)
} {
if (tecla=='#'){
envio_I2C (); x = i2c_read();
printf(lcd_putc,"\fEnvio #");
}
} if(state==0x80){
} i2c_write(buffer[0x02]);
} output_high(PIN_A1);
}
}
}
}
TEMA:
COMUNICACIÓN I2C MEDIANTE COMUNICACION RS232 DESDE EL
ESCLAVO
DESCRIPCION
El siguiente programa tiene por objetivo diseñar un lenguaje de programación que
cumpla con los parámetros siguientes: utilizar un microcontrolador pic como maestro al
cual esté conectado un teclado matricial y una pantalla lcd que indique las aplicaciones
de sensor lm35 o sensor de proximidad comunicado mediante el protocolo I2C a un
esclavo que tenga comunicación directa con la pc mediante RS232 y varíe la velocidad
del motor y el encendido de luces logrando un sistema completo con los dos sensores
mencionados inicialmente.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
Motor dc
CAPTURAS PROTEUS
DESCRIPCION
El siguiente programa tiene por objetivo diseñar un lenguaje de programación que
cumpla con los parámetros siguientes: utilizar un microcontrolador pic como maestro al
cual esté conectado un teclado matricial y una pantalla lcd que indique las aplicaciones
de sensor lm35 o sensor de proximidad comunicado mediante el protocolo SPI a un
esclavo que tenga comunicación directa con la pc mediante RS232 y varíe la velocidad
del motor y el encendido de luces logrando un sistema completo con los dos sensores
mencionados inicialmente.
MATERIALES
1 Pantalla LCD
1 PIC 16F887
1 Fuente de alimentación (5v)
1 Protoboard
Diodos Led
Potenciómetro
Motor dc
CAPTURAS PROTEUS
CODIGO COMENTADO MAESTRO
#include <18F4550.h>
#fuses XT,NOMCLR
#use delay (clock=4M)
#include <lcd.c>
#include <vinueza.c>
char tecla = 0;
int z;
char rx;
#INT_SSP
void Recepcion_I2C (){
if(i2c_poll()) {
rx=i2c_read();
printf (lcd_putc,"=%c ",rx);
}
}
void main(){
lcd_init();
kbd_init();
lcd_putc("\f I2C");
delay_ms(2000);
lcd_putc("\f Maestro");
delay_ms(100);
while(true){
tecla = kbd_getc();
if(tecla != 0){
if(tecla=='A'){
printf(lcd_putc,"\f Modo TX ");
delay_ms(100);
z=1;
}
if(tecla=='B'){
z=0;
printf(lcd_putc,"\f Modo RX ");
delay_ms(100);
enable_interrupts(GLOBAL); //habilita interrupcion global
enable_interrupts(INT_SSP);
Recepcion_I2C();
}
if(tecla=='1'){
if(z==1){
printf(lcd_putc,"\f Enviado: 1 ");
envio_I2C();
}
}
if(tecla=='2'){
if(z==1){
printf(lcd_putc,"\f Enviado: 2 ");
envio_I2C();
}
}
if(tecla=='3'){
if(z==1){
printf(lcd_putc,"\f Enviado: 3 ");
envio_I2C();;
}
}
if(tecla=='4'){
if(z==1){
printf(lcd_putc,"\f Enviado: 4 ");
envio_I2C();
}
}
if(tecla=='5'){
if(z==1){
printf(lcd_putc,"\f Enviado: 5 ");
envio_I2C();
}
}
if(tecla=='6'){
if(z==1){
printf(lcd_putc,"\f Enviado: 6 ");
envio_I2C();
}
}
if(tecla=='7'){
if(z==1){
printf(lcd_putc,"\f Enviado: 7 ");
envio_I2C();
}
}
if(tecla=='8'){
if(z==1){
printf(lcd_putc,"\f Enviado: 8 ");
envio_I2C();
}
}
if(tecla=='9'){
if(z==1){
printf(lcd_putc,"\f Enviado: 9 ");
envio_I2C();
}
}
if(tecla=='0'){
if(z==1){
printf(lcd_putc,"\f Enviado: 0 ");
envio_I2C();
}
}
if(tecla=='C'){
if(z==1){
printf(lcd_putc,"\f Enviado: C ");
envio_I2C();
}
}
if(tecla=='D'){
if(z==1){
printf(lcd_putc,"\f Enviado: D ");
envio_I2C();
}
}
if(tecla=='#'){
if(z==1){
printf(lcd_putc,"\f Enviado: # ");
envio_I2C();
}
}
}
}
}
void main() {
int DATO;
int t;
int u;
lcd_init();
lcd_gotoxy(1,1);
printf (lcd_putc,"Esclavo ");
PUTS ("UTA - FISEI");
while (1) {
if(DATO==3){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Aplicacion 1 ");
t=1;
u=0;
PUTS ("");
PUTS (" Aplicacion de temperatura");
PUTS (" Actualizar datos");
PUTS ("");
output_low(pin_d0);
output_low(pin_d1);
output_low(pin_d2);
output_low(pin_d3);
output_low(pin_d4);
output_low(pin_d5);
output_low(pin_d6);
output_low(pin_d7);
}
if(DATO==4){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Aplicacion 2 ");
t=0;
u=1;
PUTS ("");
PUTS (" Aplicacion de temperatura");
PUTS (" Actualizar datos");
PUTS ("");
}
else{
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
if (dato<20) {
if(t==1){
pwm_set_duty_percent(150);
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Duty 15 ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion De Temperatura");
PUTS ("Velocidad uno");
PUTS ("Duty 15 ");
}
}
if (dato>20){
if(dato<25) {
if(t==1){
pwm_set_duty_percent(500);
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Duty 50 ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion De Temperatura");
PUTS ("Velocidad dos");
PUTS ("Duty 50 ");
}
}
}
if (dato>26) {
if(t==1){
pwm_set_duty_percent(900);
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Duty 90 ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion De Temperatura");
PUTS ("Velocidad tres");
PUTS ("Duty 90 ");
}
}
if (dato <= 4){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_low(pin_d1);
output_low(pin_d2);
output_low(pin_d3);
output_low(pin_d4);
output_low(pin_d5);
output_low(pin_d6);
output_low(pin_d7);
}
}
if (dato >= 8){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_high(pin_d1);
output_low(pin_d2);
output_low(pin_d3);
output_low(pin_d4);
output_low(pin_d5);
output_low(pin_d6);
output_low(pin_d7);
}
}
if (dato >= 11){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_high(pin_d1);
output_high(pin_d2);
output_low(pin_d3);
output_low(pin_d4);
output_low(pin_d5);
output_low(pin_d6);
output_low(pin_d7);
}
}
if (dato >= 15){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_high(pin_d1);
output_high(pin_d2);
output_high(pin_d3);
output_low(pin_d4);
output_low(pin_d5);
output_low(pin_d6);
output_low(pin_d7);
}
}
if (dato >= 19){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_high(pin_d1);
output_high(pin_d2);
output_high(pin_d3);
output_high(pin_d4);
output_low(pin_d5);
output_low(pin_d6);
output_low(pin_d7);
}
}
if (dato >= 23){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_high(pin_d1);
output_high(pin_d2);
output_high(pin_d3);
output_high(pin_d4);
output_high(pin_d5);
output_low(pin_d6);
output_low(pin_d7);
}
}
if (dato >= 26){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_high(pin_d1);
output_high(pin_d2);
output_high(pin_d3);
output_high(pin_d4);
output_high(pin_d5);
output_high(pin_d6);
output_low(pin_d7);
}
}
if (dato >= 29){
if(u==1){
lcd_gotoxy(1,1);
printf(lcd_putc,"\f Ultrasonico ");
lcd_gotoxy(1,2);
printf(lcd_putc,"%i ",DATO);
PUTS ("Medicion de distancia");
output_high(pin_d0);
output_high(pin_d1);
output_high(pin_d2);
output_high(pin_d3);
output_high(pin_d4);
output_high(pin_d5);
output_high(pin_d6);
output_high(pin_d7);
}
}
}
}
}
}
CUESTIONARIO
MICROCONTROLADORES
TEMA 1.- Diferencias entre el Microprocesador y Microcontrolador
1. El microprocesador es un dispositivo de propósito de propósito:
A. General
B. Específico
C. General y Específico
Respuesta: A
A. General
B. Específico
C. General y específico
Respuesta: B
1. Comunicación
2. Capacidad
3. Aplicaciones
4. Arquitectura
Respuesta: D
4.- Ordene:
A. 4,2,3,1
B. 4,3,2,1
C. 4,1,3,2
D. 4,1,2,3
Respuesta: A
A. Digital
B. Electrónica
C. Robótica
D. Todas las anteriores
Respuesta: C
Respuesta: A
D. La arquitectura de Harvard es una familia de las arquitecturas de computadoras que utilizan una
misma instrucción para todo tipo de datos.
Respuesta: B
Respuesta: B
Justificación: En una arquitectura CISC, al ser un conjunto de instrucciones complejas, cada instrucción
toma de 4 a 10 ciclos de reloj para su ejecución. La opción marcada corresponde a un microprocesador de
arquitectura RISC, que sólo toma un ciclo de reloj para realizar una instrucción.
Referencia: Gualdrón Gamarra, A., & Pinilla, J. P. (2015). Plataforma para la emulación y
reconfiguración de arquitecturas CISC Y RISC..
Dificultad: Media
9.- La siguiente descripción: “Este conjunto de señales se usa para sincronizar las actividades y
transacciones con los periféricos del sistema. Algunas de estas señales, como R/W, son señales que la
CPU envía para indicar qué tipo de operación se espera en ese momento”; a cuál de las de las opciones a
continuación corresponde::
A. Bus de direcciones.
B. Bus de estado.
C. Bus de datos.
D. Bus de control
Respuesta: D
Justificación: El bus de control transporta datos respecto de las operaciones que se encuentra realizando el
CPU. Los periféricos también pueden remitir señales de control a la CPU, como son INT, RESET, BUS
RQ.
Referencia Rossano, V. (2013). Electrónica & microcontroladores PIC. USERSHOP.
Dificultad: Media
Respuesta: C
Justificación: El microprocesador es producto de la tecnología de integración a gran escala (LSI), la cual
utiliza técnicas digitales para sus estructuras de entrada, salida e interna la cual conlleva
aproximadamente unos 1000 componentes integrados individualmente.
Referencia: Edward v. Ramírez. Melvyn Veiss, Introducción a los Microprocesadores: equipo y
sistemas,
Cap. 1. Evolución de los microprocesadores. Pag.13.
Dificultad: Media
Tema 3.- Registros de propósito General y Especiales
11.- Seleccione la definición más apropiada para REGISTRO en un microcontrolador.
Respuesta: B
Justificación: La definición más apropiada del registro en un microcontrolador se dice que es un espacio
de trabajo en la memoria del microcontrolador ya que en él se almacenan datos de acuerdo a la necesidad
del usuario, existen dos tipos de registros los de propósito general y especifico cada una cumpliendo su
función en el micro.
Referencia: Microcontroladores:https://prezi.com/r___paiv3bp2/memorias-y-registros-en-un-
microcontrolador/.
Dificultad: Media
12.- Seleccione la respuesta correcta. La arquitectura de los microcontroladores según su evolución está
dada por:
Respuesta: C
Justificación: La evolución de la arquitectura de los microcontroladores inicia con el Von Neumann (su
utilización era muy compleja), después de un tiempo se crea la arquitectura segmentada (hacia más fácil
su utilización) pero esto no era suficiente, entonces aparece la arquitectura Harvard ayudando al usuario
optimizar tiempo y ahorrar recursos por ende hace que el funcionamiento sea más eficiente. El balanceo
de carga permite que el router reenvíe paquetes a la misma red de destino a través de varias rutas.
Referencia: Microcontroladores: http://www.unicrom.com/Tut_arquitectura_microcontrolador.asp.
Dificultad: Media-Alta
13.- El comando para cambiar el porcentaje del ancho de banda que se usa en EIGRP es:
Respuesta: A
Justificación: El comando para cambiar el porcentaje del ancho de banda que se usa en EIGRP es:
Router(config-if)#bandwith percent eigrp as-number percent.
14.- Qué dispositivo cuenta en un único circuito integrado la unidad central de procesamiento, la memoria
y los recursos de entrada y salida:
A. Motherboard
B. Microprocesador
C. Microcontrolador
D. Motherboard
Respuesta: C
A. Datos-CPU-Programa
B. CPU-Datos-Programa
C. Programa-Datos-CPU
D. Programa-CPU-Datos
Respuesta: D
Justificación: La arquitectura Harvard utiliza memorias separadas para programas en la memoria ROM y
datos en la memoria RAM, los cuales se conectan a la CPU mediante los buses dedicados de instrucción,
dirección y control.
Referencia: Fernando Valdés. Ramon Pallás. “Microcontroladores: Fundamentos y aplicaciones con PIC”,
pp. 23, Primera Edición. Marcombo, S. A. 2007.
Dificultad: Media
Tema 4.- Distribuciones de pines
16.- Como se llama el pin que resetea el PIC?
A.- Reset
B.- Power
C.- MCLR
D.- WDT
Respuesta: C
B. 4
C. 2
D. 6
Respuesta: B
Justificación: El pic 16887 tiene cuatro puertos de entrada y salida (A, B, C, D).
Referencia: http://www.mikroe.com/chapters/view/81/capitulo-3-microcontrolador-pic16f887/#c3v3.
Dificultad: Media
18.- Cual es el único puerto en el pic 16f887 que tiene resistencias pull ups?:
A. D
B. A
C. B
Respuesta: C
Justificación: el único puerto en el pic 16f887 que tiene resistencias pull ups es el puerto B.
Referencia: http://www.mikroe.com/chapters/view/81/capitulo-3-microcontrolador-pic16f887/#c3v3.
Dificultad: Media
A. 16 bits
B. 32 bits
C. 8 bits
D. Ninguna de las anteriores
Respuesta: C
A. 16 bits
B. 32 bits
C. 8 bits
D. Ninguna de las anteriores
Respuesta: A
Respuesta: B
Justificación: El pic 16f887 trabaja con voltaje TTL desde 2.0V- 5V.
C. 11,12 y 32,31
D.- 1,2 y 13,14
Respuesta: C
Justificación: los pines de alimentación VCC y GND del PIC16f887 es el 11,12 y 31,32.
Referencia: http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf.
Dificultad: Media
Respuesta: B
Justificación: En los pines 13 y 14 se coloca el oscilador externo en el pic 16f887.
Referencia: http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf.
Dificultad: Media
24.- Los pines que se usa para la Tx(transmisión) y Rx(Recepción) en comunicación serial en el pic
16f887 son?
A.- 11 y 12
B.- 25 y 26
C.- 16 y 17
D.- Ninguna de las anteriores
Respuesta: B
Justificación: Los pines que se usa para la Tx(transmisión) y Rx(Recepción) en comunicación serial en el
pic 16f887 son el 25 y 26.
Referencia: http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf.
Dificultad: Media
25.- La máxima capacidad de corriente de cada uno de los pines de los puertos en modo sink o en modo
fuente es de:
A. 200mA
B.- 150mA
C.- 25mA
D. 250mA
Respuesta: C
Justificación: La máxima capacidad de corriente de cada uno de los pines de los puertos en modo sink o
en modo fuente es de 25mA.
Referencia: http://www.utp.edu.co/~eduque/arquitec/PIC16F877.pdf.
Dificultad: Media
Tema 6.- Tipo de datos
26.- Cual es el rango en CCS del tipo de dato float?:
A.- 8 bits
B.- 16 bits
C.- 32 bits
D.- 64 bits
Respuesta: C
Referencia: http://www.puntoflotante.net/VARIABLES%20ARREGLOS.htm.
Dificultad: Media
Respuesta: A
Respuesta: A
A.- 8 BITS
B.- 16 BITS
C.- 64 BITS
D.- Ninguna de las anteriores
Respuesta: A
Justificación: el rango en CCS del tipo de dato signed int es 8 bits.
Referencia: http://www.puntoflotante.net/VARIABLES%20ARREGLOS.htm.
Dificultad: Media
A.- 8 BITS
B.- 64 BITS
C.- 255 BITS
D.- Ninguna de las anteriores
Respuesta: A
A.- SUMWF
B.- MORWR
C.- ADDWF
D.- Ninguna De las anteriores
Respuesta: D
Referencia: http://web.udl.es/usuaris/p7806757/ensamblador.html.
Dificultad: Media
Respuesta: A
Respuesta: C
A.- MOVWF
B.- MOVF
C.- CHAF
D.- Ninguna de las anteriores
Respuesta: B
A.- NOP
B.- NOPE
C.- OPN
D.- Ninguna de las anteriores
Respuesta: A
Respuesta: A
Justificación: Los fusibles (fuses) sirven para configurar ciertos aspectos del microcontrolador. Cada
FUSE activa o desactiva una opción de funcionamiento. Ejemplo: #FUSES RC Oscilador con resistencia
y condensador. La velocidad a la que oscile el PIC dependerá de los valores del condensador y de la
resistencia.
Referencia: http://perso.wanadoo.es/luis_ju/soft/files/pic.pdf.
Dificultad: Media
37.- Librería Fast_IO, afecta al código que el compilador generará para las instrucciones de entrada y
salida. Este método rápido de hacer I/O ocasiona que el compilador realice I/O sin programar el registro
de dirección. Seleccione su correcta sintaxis:
A.- #use fast_io(A)
B.- #use fast_io (puerto)
C.- # fast_io (puerto)
D.- fast_io_b( 0x0F );
Respuesta: B
Justificación: Librería Fast_IO: Esta directiva afecta al código que el compilador generará para las
instrucciones de entrada y salida. Este método rápido de hacer I/O ocasiona que el compilador realice
I/O sin programar el registro de dirección. El puerto puede ser A-G.
Sintaxis: #use fast_io (puerto)
Referencia: Librería fast_io. Disponible en: https://www.google.com.ec/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CCoQFjAC&url=http%3A%2F
%2Fwww.robozes.com%2Fpresentaciones%2FCCS.ppt&ei=D5JYVYD8O-
G9ygPrz4H4Bg&usg=AFQjCNGkGhzQbhyjLimJo1CNdfScmKHX-
g&sig2=kQoMBO1lkGuLPzSY1N0Ymg.
Dificultad: Media
38.- Para configurar un cristal oscilador de 4Mhz o el oscilador interno del PIC ¿Qué fusible debe ser
activado?
A.- #FUSES XT
B.- # FUSES HS
C.- # FUSES LP
D.- Ninguna de las anteriones
Respuesta: A
Justificación: Es un acrónimo que viene de XTAL (o cristal en castellano). Este modo de funcionamiento
implica que tendremos que disponer de un cristal de cuarzo externo al Pic y dos condensadores pero
también se puede hacer uso del oscilador interno que trabaja en el rango de 31Khz a 8Mhz a. El valor del
cristal generalmente será de 4Mhz o 10Mhz, y los condensadores serán cerámicos de entre 27 y 33 nF. La
exactitud de este dispositivo es muy muy alta, por lo que lo hace muy recomendable para casi todas las
aplicaciones..
Referencia: Rueda Luis, Ero-Pic, Microcontroladores PIC-Fuses del PIC 16F84/C84,2013, Disponible en:
http://perso.wanadoo.es/luis_ju/pic/pic_fuse.html.
Dificultad: Media
39.- Qué función cumple la librería FAST_I/O al ser declarado como directiva?
A.- La directiva FAST_I/O afecta al código que el compilador generará para las instrucciones de entrada,
es el método rápido de hacer que I/O ocasiona que el compilador realice I/O sin programar el registro de
dirección.
B.- La directiva FAST_I/O afecta al código que el compilador generará para las instrucciones de salida,
es el método rápido de hacer que I/O ocasiona que el compilador realice I/O sin programar el registro de
dirección.
C.- c. La directiva FAST_I/O afecta al código que el compilador generará para las instrucciones de
entrada y salida, es el método rápido de hacer que I/O ocasiona que el compilador realice I/O sin
programar el registro de dirección.
D.- Ninguna de las anteriores.
Respuesta: C
Justificación: La función que cumple es de declarar entradas y salidas de manera rápida sin programar el
registro de dirección, generando las instrucciones de entrada y salida..
Referencia: Cánovas López Andrés, C Compiler for Microchip PICmicro MCUs-Manual de usuario del
compilador PCW de CCs,-FAST_I/O.
Dificultad: Media
Respuesta: D
Justificación: Estas funciones permiten escribir directamente los registros tri-estado para la configuración
de los puertos. Esto debe usarse con FAST_IO() y cuando se accede a los puertos de I/O como si fueran
memoria, igual que cuando se utiliza una directiva #BYTE. Cada bit de value representa una patilla. Un
'1' indica que la patilla es de entrada y un '0' que es de salida.
Referencia: Cánovas López Andrés, C Compiler for Microchip PICmicro MCUs-Manual de usuario del
compilador PCW de CCs,-FAST_I/O.
Dificultad: Media
Tema 9.- Funciones para control
41.- ¿Qué directiva define qué fusibles deben activarse en el dispositivo cuando se programe?
A.- # USE FUSES
B.- # INCLUDE
C.- # INT
D.- # FUSES
Respuesta: D
Justificación: La directiva que define qué fusibles deben activarse en el dispositivo cuando se
Programe es # FUSES. Esta directiva no afecta a la compilación; sin embargo, esta información se pone
en el archivo de salida.
Referencia: Manual de usuario del compilador PCW de CCS, fusibles e interrupciones disponible en:
[http://www.cursos.ucv.cl/eie48700/referencias/CCS_C_Manual.pdf].
Dificultad: Media
42.- ¿De cuántos bits permite cargar al registro tris de un puerto del PIC con el comando SET TRIS X ()?.
A.- 1 BIT
B.-64 BITS
C.-8 BITS
D.-128 BITS
Respuesta: B
Justificación: El comando SET TRIS X () permite cargar un valor al registro tris de un puerto del PIC. El
valor es un número de 8 bits que permite configurar a cada pin de un puerto, esta configuración se refiere
a declararlo como entradas o salidas digitales.
Referencia: Manual de usuario del compilador PCW de CCS, fast_io(), set trisx() disponible en:
[http://www.cursos.ucv.cl/eie48700/referencias/CCS_C_Manual.pdf].
Dificultad: Media
43.- 1. Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar
direccionamiento de memoria y proporcionar capacidad aritmética, dentro de los registros de propósito
general cual es el registro que se utiliza para guardar la dirección base de listas de datos en la memoria:
A.- Registro AX
B.- Registro BX
C.- Registro CX
D.- Ninguna de las anteriores
Respuesta: B
Justificación: Los registros de propósito general, como su nombre lo indica, se utilizan en la forma en que
lo desee el programador. Cada uno de estos registros se puede direccionar como un registro de 16bits
(AX, BX, CX, DX). El registro BX es el registro que se utiliza para guardar la dirección base de listas de
datos en la memoria.
Referencia: B. Brey, B. (s.f.). Los Microprocesadores Intel 8086/8088, 80186, 80286, 80386 y 80486
Arquitectura, programación e interfaces. Prentice Hall.
Dificultad: Media
44.- Microcontrolador es un circuito integrado que contiene todos los componentes de un sistema
micro-programable (unidad central de proceso, memoria ROM, memoria RAM, Módulo de E/S,
Periféricos y Buses de interconexión), la gran ventaja que presenta un microcontrolador frente a un
microprocesador es la inclusión de diversos:
A.- Memorias y Datos
B.- Buses y Registros
C.- Interrupciones y Fusibles
D.- Módulos y Periféricos
Respuesta: D
45.- Una interrupción es un ______que hace que el microcontrolador deje de ejecutar la ________que
está realizando para atender dicho acontecimiento y luego regrese y continúe la tarea que estaba
realizando antes de que se presentara la interrupción.
Respuesta: C
Justificación: Una interrupción es un evento que hace que el microcontrolador deje de ejecutar la tarea
que está realizando para atender dicho acontecimiento y luego regrese y continúe la tarea que estaba
realizando antes de que se presentara la interrupción.
Referencia: http://www.circuitoselectronicos.org/2011/03/manejo-de-interrupciones-en-los.html.
Dificultad: Media
Tema 10.- Interacción Uc – PC (USART)
Respuesta: A
Respuesta: B
48.- Comando de configuración necesaria para encender el bit cero del puerto A:
A.-output_high(pin_a0)
B.- output_high(pin_a0);
C.- outputhigh(pin_a0)
D.- Ninguna de las anteriones
Respuesta: B
Justificación: Comando de configuración necesaria para encender el bit cero del puerto A.
output_high(pin_a0);
Referencia: Módulo Microcontroladores.
Dificultad: Media
49.- Comando de configuración necesaria para apagar el bit cero del puerto A:
A.-outputlow(pin_a0)
B.- output_low(pin_a0);
C.- outputhigh(pin_a0)
D.- Ninguna de las anteriones
Respuesta: B
Justificación: Comando de configuración necesaria para encender el bit cero del puerto A.
output_low(pin_a0);
Referencia: Módulo Microcontroladores
Dificultad: Media
50.- Comando de configuración necesaria para encender el nible alto y apagar el nible bajo del puerto D
es:
A.-set_tris_d(0xF0)
B.- settris_d(0xF0);
C.- set_tris_d(0xF0);
D.- set_trisd(0xF0);
Respuesta: C
Justificación: Comando de configuración necesaria para encender el nible alto y apagar el nible bajo del
puerto D es: set_tris_d(0xF0);
Referencia: Módulo de Microcontroladores.
Dificultad: Media
b) Sensor infrarrojo
c) Sensor de temperatura
d) Sensor de fuerza
Respuesta: b
Justificación: Un sensor infrarrojo emite un haz de luz invisible para el ojo humano, que se
refleja en una superficie adyacente (3-15mm) y capturado por el fototransistor, que tiene una
película de filtrado de luz natural, que permite el paso de infrarrojos emitida por los LED. Por
lo tanto, de acuerdo con la reflectividad de la superficie, el fototransistor recibe un valor mayor
o menor de la reflexión.
Fuente: http://www.x-robotics.com/sensores.htm
Nivel de dificultad: Fácil
52. Las siguientes aplicaciones: sistemas de alarma de intrusión, puertas automáticas y sensores
de copia de seguridad para automóviles pueden ser realizadas con un sensor ultrasónico
verdadero o falso justifique.
a) verdadero
b) Falso
d) Sin Justificación
Respuesta: a
Justificación: Un sensor ultrasónico transmite ondas ultrasónicas en el aire y detecta las ondas
reflejadas desde un objeto. Hay muchas aplicaciones para sensores de ultrasonidos, tales como
en sistemas de alarma de intrusión, puertas automáticas y sensores de copia de seguridad para
automóviles.
Fuente: http://stevenengineering.com/Tech_Support/PDFs/32USONIC .pdf.
Nivel de dificultad: Fácil
53. ¿Qué enunciado es correcto?
a) Funciona mediante la recepción de una ráfaga de ultrasonido en una frecuencia muy por
encima del rango auditivo humano y provee un pulso de salida.
a) Funciona mediante la recepción de una ráfaga de ultrasonido en una frecuencia muy por
debajo del rango auditivo humano y provee un pulso de salida.
c) Funciona mediante la transmisión de una ráfaga de ultrasonido en una frecuencia muy por
encima del rango auditivo humano y provee un pulso de salida.
Respuesta: d
Justificación.- Funciona mediante la transmisión de una ráfaga de ultrasonido en una frecuencia
muy por encima del rango auditivo humano y provee un pulso de salida, el cual corresponde con
el tiempo requerido por el eco (rebote) para retornar hasta el sensor.
Fuente: http://stevenengineering.com/Tech_Support/PDFs/32USONIC .pdf.
Nivel de Dificultad: Fácil
54. ¿Defina las 4 características principales para un trabajo óptimo de sensores?
a) La naturaleza de la señal que el sensor – transductor genera: voltaje, rango de amplitud,
respuesta en frecuencia, precisión necesaria, determinan el tipo de acondicionamiento de
señal, convertidor A/D y cualquier otro hardware a utilizar.
b) La influencia de las señales de ruido así como los efectos de carga del hardware de
adquisición de datos sobre el sensor.
c) La calibración del sensor con respecto a la variable física. Si la respuesta del sensor a los
cambios de la variable física es lineal o no. Una calibración mal hecha va a producir
mediciones erróneas.
b) delay_ms(500);
d) delay_cycles( 3 );
Respuesta: c
Justificación.- Esta directiva indica al compilador la frecuencia del procesador, en ciclos por
segundo, a la vez que habilita el uso de las funciones DELAY. Ejemplos: #use delay
(clock=20000000) y #use delay (clock=32000, RESTART_WDT).
Fuente: http://www.cursos.ucv.cl/eie48700/referencias/CCS_C_Manual.pdf Página. N° 23
Nivel de Dificultad: Medio
56. ¿Que rango nos permite trabajar un sensor ultrasónico?
a) Rango: 3 cm a 5 m
b) Rango: 1 cm a 3 m
c) Rango: 10 cm a 3 m
d) Rango: 2 cm a 3 m
Respuesta: d
Justificación.-Las características más importantes del sensor ultrasónico son las siguientes:
- Rango: 2 cm a 3 m
- LED indicador de ráfaga que muestra la actividad del sensor
- Interfaz bidireccional por pulso, en un único pin de E/S para comunicación con
microcontroladores TTL (5V) o CMOS (3.3V)
Fuente: http://stevenengineering.com/Tech_Support/PDFs/32USONIC .pdf.
Nivel de dificultad: Medio
57. ¿El sensor LM35 nos permite obtener datos en :?
Respuesta: a
Justificación.-La serie LM35 es la precisión de circuitos integrados de temperatura, cuya tensión
de salida es linealmente proporcional a la Celsius (centígrados) la temperatura. LM35 tiene así
una ventaja sobre los sensores de temperatura lineal calibrada en °Kelvin, como el usuario no
está obligado a restar una gran constante voltaje de su producción para obtener centígrados
conveniente escalado.
Fuente: Katerin Jacome http://es.scribd.com/doc/113120204/Caracterizacion-Sensor-
Lm35#scribd
Nivel de Dificultad: Medio
58. Que nos permite medir un transductor y por qué motivo
Respuesta: c
Justificación.- Un transductor es un dispositivo que convierte energía de tipo calórica, lumínica,
acústica, presión, movimiento, caudal, etc. a otra generalmente eléctrica para poder medirla y
eventualmente controlarla en forma relativamente fácil.
Fuente:CAPITULOVIISENSORES,http://www.unet.edu.ve/~ielectro/sensores.pdf
Nivel de Dificultad: Medio
59. Complete
Sensor de proximidad basado _________________________requiere de dos partes: LED
_________________. El LED de infrarrojos emite señal de infrarrojos al objeto de detección,
una porción de señal que rebota de la superficie de detección de objeto, éstos señal infrarroja
reflejada entonces fue capturada por ________________..
a) En la detección de señales de infrarrojos--infrarrojo y sensor
de infrarrojos--por el sensor de infrarrojos.
Respuesta a
Justificación: Sensor de proximidad basado en la detección de señales de infrarrojos requiere de
dos partes: LED infrarrojo y sensor de infrarrojos. El LED de infrarrojos emite señal de
infrarrojos al objeto de detección, una porción de señal que rebota de la superficie de detección
de objeto, esta señal infrarroja reflejada entonces fue capturada por el sensor de infrarrojos.
Fuente:http://www.intersil.com/content/dam/Intersil/documents/an14/an1436
Dificultad: Moderado
60. Qué tipo de sensor nos permite trabajar a un rango máximo de 12mm
a) Ultrasónico
b) temperatura
c) infrarrojo
d) fuerza
Respuesta c
Justificación: Los sensores infrarrojos se usan para detección de obstáculos por reflexión y
detección de oponentes en combates de sumo.
Especificaciones:
• Detección de distancia: 12m m
• Longitud de onda del funcionamiento: 950 milímetros
Fuente: http://www.x-robotics.com/sensores.htm
Dificultad: Moderado
Tema 12.- Control PWM para Motores DC y AC
61. Un motor eléctrico de Corriente Continua es una máquina que convierte energía eléctrica en
?.
b) Energía Magnética
c) Energía Electromagnética
Respuesta: a
b) En la Red eléctrica
c) En los bobinados
e) Respuesta: a
f) Justificación: Un motor para funcionar se vale de las fuerzas de atracción y repulsión que
existen entre los polos.
g) Fuente: Maquinas Eléctricas - Chapman
h) Nivel de dificultad: Fácil
63. El principio que André Ampére establece: que si una corriente pasa a través de un conductor
situado en el interior de un campo magnético, éste ejerce una fuerza…. sobre el conductor.
a) Eléctrica.
b) Mecánica.
c) Magnética.
d) Electromagnética.
i) Respuesta: b
j) Justificación.- Y el principio que André Ampére observo en 1820, en el que establece: que si
una corriente pasa a través de un conductor situado en el interior de un campo magnético,
éste ejerce una fuerza mecánica o f.e.m. (fuerza electromotriz), sobre el conductor.
k) Fuente: Maquinas Eléctricas - Chapman
l) Nivel de Dificultad: Fácil
64. Los dispositivos mas conocidos de la familia de los tiristores para aplicaciones de potencia
son:
a) TRANSISTOR, TRIAC.
c) SCR, GTO.
m) Respuesta: d
n) Justificación.- Los dispositivos mas conocidos de la familia de los tiristores para
aplicaciones de potencia son: SCR, TRIAC, GTO.
o) Fuente: Antonio Sanchez - Características y principios de funcionamiento
p) Nivel de Dificultad: Fácil
65. El SCR (Silicon Controled Rectifier / Rectificador controlado de silicio) es un dispositivo
semiconductor de…….. que funciona como un conmutador casi ideal.
q)
a) 3 capas
b) 2 capas
c) 4 capas
d) 1 capa
r) Respuesta: c
s) Justificación.- El SCR (Silicon Controled Rectifier / Rectificador controlado de silicio)es un
dispositivo semiconductor de 4 capas que funciona como un conmutador casi ideal.
t) Fuente: Antonio Nachez - Características y principios de funcionamiento
u) Nivel de Dificultad: Medio
66. El Triac es un dispositivo………. que pertenece a la familia de los tiristores?
a) Semiconductor.
b) Conductor.
c) De potencia.
e) Respuesta: a
f) Justificación.- El Triac es un dispositivo semiconductor que pertenece a la familia de los
dispositivos de control: los tiristores
g) Fuente: Antonio Nachez - Características y principios de funcionamiento
h) Nivel de dificultad: Medio
67. El triac es en esencia la conexión de……… pero conectados en sentido opuesto y
compartiendo la misma compuerta
a) 2 SRC en paralelos.
b) 2 SRC en serie.
c) 3 SRC en paralelos.
d) 3 SRC en serie.
i) Respuesta: a
j) Justificación.- El triac es en esencia la conexión de dos SCR (tiristores) en paralelo pero
conectados en sentido opuesto y compartiendo la misma compuerta.
k) Fuente: Antonio Nachez - Características y principios de funcionamiento
l) Nivel de Dificultad: Medio
68. Los tiristores constituyen una familia de dispositivos, pero donde todos los elementos que la
componen se basan?
m) Respuesta: c
n) Justificación.- Los tiristores constituyen una familia de dispositivos que pueden tomar
diferentes nombres y características, pero donde todos los elementos que la componen se
basan en el mismo principio de funcionamiento
o) Fuente: Antonio Nachez - Características y principios de funcionamiento
p) Nivel de Dificultad: Medio
69. La parte positiva de la onda (semiciclo positivo) pasará por el triac siempre y cuando haya
habido una?
a) Señal Positiva.
b) Señal Negativa.
q) Respuesta c
r) Justificación: La parte positiva de la onda (semiciclo positivo) pasará por el triac siempre y
cuando haya habido una señal de disparo en la compuerta, de esta manera la corriente
circulará de arriba hacia abajo (pasará por el tiristor que apunta hacia abajo).
s) Fuente: Antonio Nachez - Características y principios de funcionamiento
t) Dificultad: Medio
70. En que patilla del TRIAC se puede obtener la señal en cualkiera de los 2 semiciclos
(positivo y negativo)?
a) Anodo 1.
b) Compuerta.
c) Anodo 2.
u) Respuesta b
v) Justificación: Para los semiciclos la señal de disparo se obtiene de la misma patilla (la
puerta o compuerta).
w) Fuente: Antonio Nachez - Características y principios de funcionamiento
x) Dificultad: Moderado
y)
z) Tema 13.- COMUNICACIÓN I2C Y SPI
71. Complete
ab) Respuesta: c
ac) SPI es un bus de 3 líneas, por el cual se transmiten paquetes de información de 8 bits. Cada
una de estas tres líneas porta la información entre los diferentes dispositivos conectados al
bus.
ad) Nivel de dificultad: Medio
ae) Fuente: Ingeniería en Microcontroladores, “Curso de Redes de Microcontroladores PIC
(Protocolo SPI)”, capitulo 1, página 1, México Distrito Federal. Disponible en:
http://www.i-micro.com/pdf/articulos/spi.pdf
af)
72. Elija la respuesta correcta:
ah) Respuesta: b
ai) Todas las líneas del bus de SPI transmiten la información sobre una sola dirección entre los
dispositivos que se encuentren conectados al protocolo SPI.
aj) Nivel de dificultad: Fácil
ak) Fuente: Ingeniería en Microcontroladores, “Curso de Redes de Microcontroladores PIC
(Protocolo SPI)”, capitulo 1, página 2, México Distrito Federal.
73. Elija la respuesta correcta
a) Paralelo
b) USB
c) Serie y Paralelo
d) Serie
am)Respuesta: d
an) El estándar SPI es utilizado para la comunicación serial entre dispositivos. Se trata de un
enlace de datos en serie, síncrono, y que opera en modo full dúplex, es decir, las señales de
datos viajan en ambas direcciones en forma simultánea.
ao) Nivel de dificultad: Medio
ap) Fuente: Estándar SPI, “Comunicación SPI” [Online] Disponible en:
http://www.puntoflotante.net/COMUNICACION-SPI-TUTORIAL.htm
74. Elija la respuesta correcta
aq) Que funciones debe cumplir los cuatro pines asociados al módulo SPI?
b) MOSI y MISO
c) MOSI, MISO Y SS
d) SS y SPSCK
ar) Respuesta: a
as) Mientras el bit SPE esté seteado, los cuatro pines asociados al módulo SPI deben cumplir
las funciones de:
Selector de esclavo (SS)
Clock serial (SPSCK)
Master out/slave in (MOSI)
Master in/slave out (MISO)
at)
au) Nivel de dificultad: Difícil
av) Fuente: Estándar SPI, “Comunicación SPI” [Online] Disponible en:
http://www.puntoflotante.net/COMUNICACION-SPI-TUTORIAL.htm
75. Elija la respuesta correcta
a) Duplex
b) Half Duplex
c) Full Duplex
ax) Respuesta: c
ay) El módulo SPI incluye las siguientes características:
Longitud de datos de transmisión programable a 8 o 16 bits.
Operación en modo master o slave.
Desplazamiento de datos primero MSB o primero LSB seleccionable
Modo bidireccional en Full-duplex o simple línea
Tasa de bit de transmisión programable
Registro de datos de transmisión y recepción de Doble buffer
Opciones de polaridad y fase del clock
Salida de selección de slave
Flag de modo de error por falla con posibilidad de interrupción de CPU
Control de operación de SPI durante el modo wait
az) Nivel de dificultad: Difícil
ba) Fuente: Ingeniería en Microcontroladores, “Protocolo SPI – Teoría y Aplicaciones” Cap. 1,
Pág. 6 [Online] Disponible en: http://www.i-micro.com/pdf/articulos/spi.pdf
76. Elija la respuesta correcta
bb) Cuantos bits y dispositivos utiliza I2C
a) 5 bits y 32 dispositivos
bc) Respuesta: b
bd) Justificación: Una dirección de 7 bits implica que se pueden poner hasta 128 dispositivos
sobre un bus I2C, ya que un número de 7 bits puede ir desde 0 a 127.
be) Nivel de dificultad: Fácil
bf)
bg) Fuente: Eduardo J. Carletti, “Descripción y funcionamiento de la
Comunicación I2C”, 2007, Robots Argentina, [Online]: Disponible en:
http://robots-argentina.com.ar/Comunicacion_busI2C.htm
77. Describa que tipos de señales utiliza la comunicación I2C.
a) SCL-SDA-GND
b) MSB-SCL-GND
c) MOSI-SDA-GND
d) GND-MISO-MOSI
bh) Respuesta: a
bi) Justificación: Las señales que utiliza son:
bj) SCL (System Clock) es la línea de los pulsos de reloj que sincronizan el sistema.
bk) SDA (System Data) es la línea por la que se mueven los datos entre los dispositivos.
bl) GND (Masa) común de la interconección entre todos los dispositivos "enganchados" al bus.
bm)Nivel de dificultad: Media
bn) Fuente: Eduardo J. Carletti, “Descripción y funcionamiento de la Comunicación I2C”,
2007, Robots Argentina, [Online]: Disponible en:
http://robotsargentina.com.ar/Comunicacion_busI2C.htm
78. ¿Cuál es la función que desempeñan las señales en la comunicación I2C?
a) Las líneas SDA (serial Data) y SCL (serial Clock) son bidireccionales,
conectadas al positivo de la alimentación a través de las resistencias
de pull-up. Cuando el bus está libre, ambas líneas están en nivel alto.
b) Las líneas SDA (serial Data) y SCL (serial Clock) son unidireccionales,
conectadas al positivo de la alimentación a través de las resistencias.
c) Las líneas SDA (serial Data) y SCL (serial Clock) son bidireccionales,
conectadas a la alimentación a través de las resistencias de pull-
down.
bo) Respuesta: a
bp) Justificación.- Las líneas SDA (serial Data) y SCL (serial Clock) son bidireccionales,
conectadas al positivo de la alimentación a través de las resistencias de pull-up. Cuando el
bus está libre, ambas líneas están en nivel alto.
bq) Nivel de Dificultad: Media
br) Fuente: Eduardo Coquet “Comunicación del Bus I2C”, Comunidad de Electrónicos,
[Online]: Disponible en: http://www.comunidadelectronicos.com/articulos/i2c.htm
79. ¿Cuál es la función del maestro y esclavo?
bs) Respuesta: d
bt) Justificación.- Maestro genera las señales de reloj y termina un envió de datos y el Esclavo,
es direccionado por el maestro.
bu) Nivel de Dificultad: Difícil
bv) Fuente: Eduardo J. Carletti, “Comunicación – Bus I2C”, Robots. Pasión por la robótica en
Argentina, 2008
80. Elija que velocidad y voltaje maneja el bus I2C.
bw)Respuesta: c
bx) Justificación.- El bus serie I2C ha sido extendido para soportar velocidades de hasta 3,4
MHZ/s, combinado con una función de desplazamiento del nivel de voltaje, en modo High-
speed (Hs-mode) ofrece una solución ideal para los sistemas de tecnología mixta, donde las
altas velocidades y la variedad de voltajes (5v, 3v o menor) son comúnmente usados.
by) Nivel de Dificultad: Difícil
bz) Fuente: MikroElektronica “El mundo de los microcontroladores I2C”, MikroElektronica,
Capitulo 1(1.3 Detalles Importantes), 1998, [Online]: Disponible en:
http://www.comunidadelectronicos.com/articulos/i2c.htm
ca)
cb)Tema 14.- ZIGBEE
81. En que estándar IEEE se basa la tecnología Zigbee?.
E. 802.11ª
F. 802.11n
G. 802.15.4
H. 802.4.15
cc)
cd) Respuesta: C
ce)
cf) Justificación: La tecnología ZigBee (basada en el IEEE 802.15.4) se está consolidando como un
estándar de comunicaciones relativamente nuevo muy similar al Bluetooth (IEEE 802.15.1).
cg) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
ch) Nivel de Dificultad: Moderado
82. ¿De cuántos nodos como máximo puede contar una red Zigbee?
E. 192
F. 8
G. 255
H. 512
ci)
cj) Respuesta: C
ck)
cl) Justificación: Una red ZigBee puede constar de un máximo de 255 nodos, frente a los 8 máximos de
una red Bluetooth.
cm) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
cn) Nivel de Dificultad: Moderado.
83. ¿Por qué el consumo eléctrico en Zigbee es menor que en Bluetooth?
co)
A. El dispositivo se queda dormido la mayor parte de tiempo
B. El dispositivo está siempre transmitiendo y/o recibiendo
C. El dispositivo siempre está trabajando
D. Ninguna de las anteriores
cp)
cq) Respuesta: A
cr) Justificación: Menor consumo eléctrico en sistemas ZigBee que en Bluetooth. Esto se debe a que el
dispositivo ZigBee se queda la mayor parte del tiempo dormido, mientras que en una comunicación
Bluetooth esto no se puede dar, y siempre se está transmitiendo y/o recibiendo.
cs)
ct) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
cu) Nivel de Dificultad: Fácil
84. ¿Cuál es el ancho de banda con el que trabaja Zigbee?
cv)
E. 256kbps
F. 156kbps
G. 64kbps
H. 250kbps
cw)
cx) Respuesta: D
cy)
cz) Justificación: El estándar ZigBee tiene un ancho de banda de 250 kbps, mientras que el Bluetooth
tiene 1 Mbps.
da)
db) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
dc) Nivel de Dificultado: Moderada
85. ¿Cuál es el rango de operación que tiene Zegbee”?
dd)
A. 1 a 100m
B. 10 a 75m
C. 40m a 100 m
D. 30 a 50m
de)
df) Respuesta: B
dg)
dh)Justificación: ZigBee tiene un rango de operación de 10 a 75 m, respecto al de 1 a 100 m de Bluetooth
di)
dj) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
dk) Nivel de Dificultad: Fácil
dl)
dm)
dn)
86. ¿Seleccione los 4 tipos de tramas del nivel físico (tramas del IEEE 802.15.4) que tiene Zegbee?
do)
A. Datos, reconocimiento, comandos MAC, piloto.
B. Reconocimiento, paquetes, datos, algoritmo.
C. Direcciones, datos, piloto, comando MAC.
D. Memoria, reconocimiento, comandos MAC, piloto.
dp)
dq) Respuesta: A
dr)
ds) Justificación: Trama nivel físico (tramas del IEEE 802.15.4), es el estándar que define 4 tipos de
tramas, que se analizan de acuerdo a la función que desempeñe. Estas tramas son:
Trama de datos
Trama de reconocimiento
Trama de comandos MAC
Trama piloto (supertrama)
dt)
du)
dv) Fuente: Zigbee: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
dw) Nivel de Dificultad: Fácil
87. ¿A que hace referencia la Trama de datos en Zegbee?
dx)
A. Sirve para confirmar el éxito en la recepción y para validar las tramas de datos y los comandos
MAC. El campo de control en el frame (Frame Control) indica si se espera un ACK o no.
a)
B. Permite verificar la integridad de los datos llamados FCS (Frame Check Sequence) y se incluye
un número de secuencia para permitir el reensamblado y la retransmisión.
b)
C. Esta es una trama que permite el control y la configuración de los nodos así como la formación
de la red.
c)
D. Son el direccionar a varios dispositivos para que envíen información, permitir mantener a los
nodos sincronizados sin tener que escuchar permanentemente el canal
dy)
dz) Respuesta: B
ea)
eb) Justificación: Se permiten hasta 102 bytes como máximo para datos (n) MAX=102 bytes, se incluyen
2 bytes para verificar la integridad de los datos llamados FCS (Frame Check Sequence) y se incluye
un número de secuencia para permitir el reensamblado y la retransmisión.
ec)
ed) Fuente: Zigbee: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
ee) Nivel de Dificultad: Moderado
88. ¿Cuáles son las principales funciones que garantiza Zegbee de la trama de comando MAC a nivel
fisico?
ef)
A. Recepción, tramas de datos y los comandos MAC, indicación de calidad del enlace, detección
de actividad del canal, RX y TX de datos.
d)
B. Datos, FCS (Frame Check Sequence), reensamblado y la retransmisión, desactivación de nodos,
detección de energía.
e)
C. Control y la configuración de los nodos, detección de energía, indicación de calidad del enlace.
D. Activación y desactivación de nodos, detección de energía, indicación de calidad del enlace,
detección de actividad del canal, RX y TX de datos.
eg)
eh) Respuesta: D
ei)
ej) Justificación: Esta es una trama que permite el control y la configuración de los nodos así como la
formación de la red. Para ello, el estándar contempla 26 directivas para garantizar principalmente las
siguientes funciones a nivel físico:
ek)
el) •Activación y desactivación de nodos
em) • Detección de energía
en) •Indicación de calidad del enlace
eo) •Detección de actividad del canal
ep) •RX y TX de datos.
eq)
er) Fuente: Zigbee: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
es) Nivel de Dificultad: Moderado
et)
89. ¿Seleccione el par de palabras correctas, para completar el siguiente enunciado?
eu)
ev) ZigBee opera en las bandas libres de 2.4Ghz,…………………………………………
y………………………………………
ew)
A. 868Mhz para Europa y 916Mhz para Estados Unidos
B. 885Mhz para Europa y 915Mhz para Inglaterra.
C. 858Mhz para Europa y 915Mhz para Estados Unidos.
D. 858Mhz para Italia y 916Mhz para Estados Unidos.
ex)
ey) Respuesta: C
ez)
fa) Justificación: ZigBee opera en las bandas libres de 2.4Ghz, 858Mhz para Europa y 915Mhz para
Estados Unidos.De acuerdo al protocolo 802 (incluyendo ZigBee).
fb)
fc) Fuente: Zigbee: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
fd) Nivel de Dificultad: Moderado
90. ¿Seleccione los equipos o los dispositivos con los que Zigbee trabaja, según su papel en la red?
fe)
A. Coordinador ZigBee (ZigBee Coordinator, ZC), Router ZigBee (ZigBee Router, ZR),
Dispositivo final (ZigBee End Device, ZED).
B. Enrutador ZigBee (ZigBee router, ZC), HUB ZigBee (ZigBee HUB, ZR), Dispositivo final
(ZigBee End Device, ZED).
C. Enrutador ZigBee (ZigBee router, ZC), Coordinador ZigBee (ZigBee Coordinator, ZC),
Dispositivo final (ZigBee End Device, ZED).
D. HUB ZigBee (ZigBee HUB, ZR), Coordinador ZigBee (ZigBee Coordinator, ZC), Router
ZigBee (ZigBee Router, ZR).
ff)
fg) Respuesta: A
fh)
fi) Justificación: los equipos o los dispositivos con los que Zigbee trabaja, según su papel en la red son
tres: Coordinador ZigBee (ZigBee Coordinator, ZC), Router ZigBee (ZigBee Router, ZR),
Dispositivo final (ZigBee End Device, ZED).
fj)
fk) Fuente: Zigbee: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
fl) Nivel de Dificultad: Moderado
fm)
fn) Tema 15.- Bluetooth
91. ¿Seleccione Complete
fo) ¿Qué es Bluetooth? Bluetooth es una……………. que provee un camino fácil para la
comunicación entre dispositivos a altas ………………………, sin el uso……....Posibilita la
transmisión de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la
banda ISM de los ……..
fp)
E. Aplicación, frecuencias, banda ancha, 16Ghz
F. Tecnología, velocidades, cables, 2.4Ghz
G. Tecnologia, capacidades, subredes, 2.4Ghz
f)
H. Tecnologia, capacidades, subredes, 2.6Ghz
fq)
fr) Respuesta: C
fs)
ft) Justificación: La Bluetooth es una tecnología que provee un camino fácil para la comunicación entre
dispositivos a altas velocidades, sin el uso de cables. Ésta pertenece a la especificación industrial para
Redes Inalámbricas de Área Personal (WPAN). Posibilita la transmisión de voz y datos entre
diferentes dispositivos mediante un enlace por radiofrecuencia en la banda ISM de los 2,4 GHz.
fu)
fv) Fuente: Prasad R., 1997, Reseña de las Comunicaciones Personales Inalámbricas Perspectivas de
Microondas, IEEE Communications Magazín, Volumen 9, Páginas 104-108.
fw) Nivel de Dificultad: Moderado
fx)
92. ¿ Elija tres Beneficios que nos da Bluetooth:
fy)
1. Permite trabajar con otros usuarios con frecuencias distintas.
2. Proveer alta velocidad en la comunicación.
3. Permite conectar hasta 255 nodos.
4. Tecnología a pequeña escala y bajo costo.
5. Ofrecer la posibilidad de crear pequeñas redes inalámbricas.
fz)
A. 1, 2, 3
B. 3, 4, 5
C. 1,4, 5
D. 2, 4, 5
ga)
gb) Respuesta: D
gc) A continuación, podemos resumir los principales objetivos que se desean conseguir con esta norma:
gd)
ge) • Facilitar las comunicaciones entre equipos móviles y fijos.
gf) • Proveer alta velocidad en la comunicación.
gg) • Eliminar cables y conectores entre los dispositivos.
gh) • Ser lo suficientemente adaptables para el todo tipo de usuarios.
gi) • Orecer la posibilidad de crear pequeñas redes inalámbricas.
gj) • Proporcionar la sincronización de datos entre equipos personales.
gk) • Tecnología a pequeña escala y bajo costo.
gl) FUENTE: S.A., E. (s.f.). Electro componentes S.A. Obtenido de http://www.elec-
trocomponentes.com/
gm) Nivel de Dificultad: Moderado
93. ¿Cuál el Composición del paquete de Bluetooth?
gn)
A. Código de acceso-cabecera- carga útil.
B. Campo de datos o carga útil- flujo-Tipo de acceso
C. Cabecera-Direccion-Flujo
D. Código-Hec-Flujo
go)
gp) Respuesta: A
gq) Composición del paquete:
gr) Código de acceso (72 bits): Es usado para sincronización, identificación y compensación.
gs) Cabecera (54 bits): Contiene información del control de enlace con 6 campos:
gt) Campo de datos o carga útil (hasta 2746 bits): Contiene el conjunto de datos que supone la
información a transmitir
gu) FUENTE: S.A., E. (s.f.). Electro componentes S.A. Obtenido de http://www.elec-
trocomponentes.com/
gv) Nivel de Dificultad: Moderado
94. Elija tres de los 6 campos del control de enlace de la Cabecera del paquete de Bluetooth:
gw) 1. Flujo
gx) 2. número de host.
gy) 3. ARQN
gz) 4. Carga útil
ha) 5. Dirección.
A. 1, 2, 3
B. 3, 4, 5
C. 2, 4, 5
D. 1, 3, 5
hb)
hc) Respuesta: D
hd) Argumentación:
he) Cabecera (54 bits): Contiene información de con 6 campos:
hf) • Dirección o AM_ADDR: dirección temporal de 3 bits que se utiliza para distinguir los
dispositivos activos en una piconet, siendo la dirección 000 la dirección broadcast.
hg) • Tipo: Define qué tipo de paquete es enviado y cuántos slots va a ocupar.
hh) • Flujo o Flow: El bit de control de flujo es usado para notificar al emisor cuándo el buffer
del receptor está lleno y que debe de dejar de transmitir.
hi) • ARQN: bit de reconocimiento de paquetes recibidos paquetes correcto o
incorrecto (último paquete recibido). Si es un “1” es un ACK, y con un “0” un NAK.
hj) • SEQN: bit que se va invirtiendo para evitar retransmisiones en el receptor.
hk) • HEC: Código de redundancia para comprobar errores en la transmisión.
hl) Bibliografía:
hm) S.A., E. (s.f.). Electrocomponentes S.A. Obtenido de http://www.elec- trocomponentes.com/D
hn) Composición del paquete:
ho) Código de acceso (72 bits): Es usado para sincronización, identificación y compensación.
hp) Cabecera (54 bits): Contiene información del control de enlace con 6 campos:
hq) Campo de datos o carga útil (hasta 2746 bits): Contiene el conjunto de datos que supone la
información a transmitir
hr) Nivel de Dificultad: Moderado
hs)
95. ¿Cómo es la comunicación de Bluetooth?
A. El equipo que mejor funcione actúa como maestro y es el quien define por que canal envía
mientras los esclavos esperan la información.
g)
B. El dispositivo maestro se encarga de definir cómo se establece la comunicación físicamente, los
dispositivos esclavos coordinan sus transmisiones según las especificaciones del maestro.
C. El dispositivo maestro espera que se conecten a él dispositivos que van actuar como esclavos y
ellos son los que definen las condiciones de comunicación
D. El dispositivo maestro establece la frecuencia, la trama y el dispositivo esclavo solo puede mirar
la trama pero no modificarla.
ht)
hu) Respuesta: B
hv) En una red Bluetooth, cualquier dispositivo puede actuar como maestro o como esclavo:
hw) • El dispositivo maestro se encarga de definir cómo se establece la comunicación físicamente
(frecuencia de salto, fase, etc.).
hx) • Los dispositivos esclavos coordinan sus transmisiones según las especificaciones del maestro.
Normalmente, el primero que solicita el servicio actúa como maestro, excepto cuando la red ya ha
sido establecida.
hy) Bibliografía:
hz) Prasad R., 1997, Reseña de las Comunicaciones Personales Inalámbricas Perspectivas de
Microondas, IEEE Communications Magazín, Volumen 9, Páginas 104-108.
96. ¿ Cuántos aparatos pueden conectase simultáneamente a Bluetooth y cuál es su velocidad máxima de
transferencia de datos:
A. 2.6 GHz
B. 2.8 GHz
C. 2,48 GHZ
D. 2.4 GHz
ie)
if) Respuesta correcta: D
ig) Los radios Bluetooth operan en el espectro de banda de 2.4 GHz. Cada unidad incluye una radio, un
controlador de enlaces de banda base y el software para la administración de los enlaces y flujo de
datos.
ih) Bibliografia: S.A., E. (s.f.). Electrocomponentes S.A. Obtenido de http://www.elec-
trocomponentes.com/
98. Complete los campos de del paquete Cabecera de la trama Bluetooth
ii) Código de Acceso Cabecera Carga Útil
ij) 1 2 3 4 5
6
ik) Dirección Flujo HEC
il)
h)
A. 1.SEQN, 2.TIPO, 3.ARQN
B. 1.Tipo, 2.ARQN, 3.SEQN
C. 1.Tipo, 2.SEQN, 3.ARQN
D. 1.ARQN, 2.SEQN, 3.Tipo
im)
in) Respuesta: B
io) Argumentación:
ip) Cabecera (54 bits): Contiene información del control de enlace con 6 campos:
iq) 1. Dirección o AM_ADDR:
ir) 2. Tipo
is) 3. Flujo
it) 4. ARQN
iu) 5. SEQN
iv) 6. HEC.
iw) Bibliografía:
ix) S.A., E. (s.f.). Electrocomponentes S.A. Obtenido de http://www.elec- trocomponentes.com/
99. Cuál es la principal diferencia entre los módulos HC-05 vs HC-06
A. Hardware es diferente
B. Los modos de comando AT
C. Módulo Maestro-Esclavo
D. EL firmware
iy)
iz) Respuesta: D
ja) Esto se debe a que esencialmente el hardware es el mismo para ambos módulos. La única diferencia
real es el firmware que viene cargado de fábrica.
jb) Bibliografía:
jc) Prasad R., 1997, Reseña de las Comunicaciones Personales Inalámbricas Perspectivas de
Microondas, IEEE Communications Magazín, Volumen 9, Páginas 120-124.
100.Cuál es el radio efectivo que permite Bluetooth conectar todo tipo de dispositivos incorporando un
transmisor
A. 10 m
B. 25 m
C. 15 m
D. 20 m
jd)
je) Respuesta: A
jf) Argumentación:
jg) Integrado en un pequeño transmisor de radiofrecuencia que permite conectar entre sí todo tipo de
dispositivos electrónicos (teléfonos, ordenadores, impresoras, faxes, etc) situados dentro de un radio
limitado de 10 metros (ampliable a 100, aunque con mayor distorsión) sin necesidad de utilizar
cables.
jh) Bibliografía:
ji) Bluetooth: comunicación inalámbrica: http://html.rincondelvago.com/bluetooth_comunicacion-
inalambrica.html
jj)
jk) Tema 16.- RF
101.En que estándar IEEE se basa la tecnología RF?.
I. 802.11ª
J. 802.11n
K. 802.15.4
L. Ninguno
jl)
jm) Respuesta: D
jn) Justificación: La tecnología RF no tiene un estándar o norma en la que trabaje.
jo) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
jp) Nivel de Dificultad: Moderado
102.¿De cuántos canales como máximo puede contar una red Zigbee?
I. 2
J. 1
K. 255
L. 512
jq)
jr) Respuesta: B
js)
jt) Justificación: Una red RF dependiendo de la configuración puede trabajar en un canal pero este
puede cambiar debido a las interferencias o afectaciones del enlace.
ju) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
jv) Nivel de Dificultad: Moderado.
103.¿Por qué el consumo eléctrico en RF es mayor que en Bluetooth?
jw)
E. El dispositivo se queda dormido la mayor parte de tiempo
F. El dispositivo está siempre esta enlazado a al receptor
G. El dispositivo siempre está trabajando
H. Ninguna de las anteriores
jx)
jy) Respuesta: A
jz)
ka)
kb) Justificación: Mayor consumo eléctrico en sistemas RF que en Bluetooth. Esto se debe a que el
dispositivo RF se enlaza mayor parte del tiempo al receptor existen cambios de canal
Bidireccionalmente, mientras que en una comunicación Bluetooth esto no se puede dar, y siempre se
está transmitiendo y/o recibiendo.
kc)
kd) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
ke) Nivel de Dificultad: Fácil
104.¿Cuál es el tamaño de la trama con el que trabaja RF?
kf)
I. 256bits
J. 128bits
K. 512bits
L. 1024bits
kg)
kh) Respuesta: A
ki)
kj) Justificación: El estándar RF tiene una trama de 256bps.
kk)
kl) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
km) Nivel de Dificultado: Moderada
105.¿Cuál es el rango de operación que tiene RF”?
kn)
E. 1 a 100m
F. 10 a 75m
G. 1 a 5KM
H. 30 a 50m
ko)
kp) Respuesta: C
kq)
kr) Justificación: RF tiene un rango de operación de 1 a 5Km, respecto al de 1 a 100 m de Bluetooth
ks)
kt) Fuente: Sistema Interactivo de Docencia [Online] Disponible en:
http://eprints.ucm.es/8922/1/memoria.pdf
ku) Nivel de Dificultad: Fácil
106.¿Seleccione los 4 tipos de tramas del nivel físico (tramas del IEEE 802.15.4) que tiene Zegbee?
kv)
E. Datos, reconocimiento, comandos MAC, piloto.
F. Sinc. Datos, Inicio Comunicación, Longitud, Comandos, Datos, Control de Redundancia,
Finalización de la comunicacion.
G. Direcciones, datos, piloto, comando MAC.
H. Memoria, reconocimiento, comandos MAC, piloto.
kw)
kx) Respuesta: B
ky)
kz) Justificación: Trama de RF
la) Sinc. Datos, 1 byte
lb) Inicio Comunicación, 1 byte
lc) Longitud, 1 byte
ld) Comandos, 1 byte
le) Datos, 250 bytes
lf) Control de Redundancia, 2 byte
lg) Finalización de la comunicación1 byte
lh)
li) Fuente: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
lj) Nivel de Dificultad: Fácil
107.¿A que hace referencia la Trama de datos en RF?
lk)
E. Sirve para confirmar el éxito en la recepción y para validar las tramas de datos y los comandos
MAC. El campo de control en el frame (Frame Control) indica si se espera un ACK o no.
i)
F. Permite verificar la integridad de los datos llamados FCS (Frame Check Sequence) y se incluye
un número de secuencia para permitir el reensamblado y la retransmisión.
j)
G. Esta es una trama que permite el control y la configuración de los nodos así como la formación
de la red.
k)
H. Son el direccionar a varios dispositivos para que envíen información, permitir mantener a los
nodos sincronizados sin tener que escuchar permanentemente el canal
ll)
lm) Respuesta: B
ln)
lo) Justificación: Se permiten hasta 102 bytes como máximo para datos (n) MAX=102 bytes, se incluyen
2 bytes para verificar la integridad de los datos llamados FCS (Frame Check Sequence) y se incluye
un número de secuencia para permitir el reensamblado y la retransmisión.
lp)
lq) Fuente: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
lr) Nivel de Dificultad: Moderado
108.¿Cuáles son las principales funciones que garantiza la comunicación de RF?
ls)
E. Recepción, tramas de datos y los comandos MAC, indicación de calidad del enlace, detección
de actividad del canal, RX y TX de datos.
l)
F. Datos, FCS (Frame Check Sequence), reensamblado y la retransmisión, desactivación de nodos,
detección de energía.
m)
G. Control y la configuración de los nodos, detección de energía, indicación de calidad del enlace.
H. Activación y desactivación de nodos, detección de energía, indicación de calidad del enlace,
detección de actividad del canal, RX y TX de datos.
lt)
lu) Respuesta: D
lv)
lw)Justificación: Esta es una trama que permite el control y la configuración de los nodos así como la
formación de la red. Para ello, el estándar contempla 26 directivas para garantizar principalmente las
siguientes funciones a nivel físico:
lx)
ly)
lz) Fuente: Zigbee: Wireless Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
ma) Nivel de Dificultad: Moderado
mb)
109.¿Seleccione el par de palabras correctas, para completar el siguiente enunciado?
mc)
md) Las bandas más operadas de RF operan en las bandas libres de 2.4Ghz,
…………………………………………y………………………………………
me)
E. 868Mhz para Europa y 916Mhz para Estados Unidos
F. 433Mhz – 868MHZ para Europa y 915Mhz para Inglaterra.
G. 858Mhz para Europa y 915Mhz para Estados Unidos.
H. 858Mhz para Italia y 916Mhz para Estados Unidos.
mf)
mg) Respuesta: C
mh) Bandas: 433MHz, 868MHz, 915MHz
mi) Fuente: CronisRF. Wavenis
mj) Nivel de Dificultad: Moderado
mk)
ml)
110.¿Seleccione los equipos o los dispositivos con los que RF trabaja, según su papel en la vida Real?
mm)
A. Coordinador RF, RF-E, Dispositivo final.
B. RF Coordinador de enlace
C. RF RECEPTOR
D. Variador de Frecuencias (CODIFICADORES Y DECODIFICADORES
mn)
mo) Respuesta: D
mp)
mq) Justificación: los equipos o los dispositivos con los que se realizan el enlace se mantenga estable
mr)
ms) Fuente: RF Control That Simply Works. William C. Craig. Program Manager Wireless
Communications.
mt) Nivel de Dificultad: Moderado
mu)
mv)
mw)
mx)
my)
mz)
na) BIBLIOGRAFÍA
[1] Online: http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf
[2] Online:http://www.mikroe.com/chapters/view/81/capitulo-3-microcontrolador-
pic16f887/#c3v1
[3] Online: http://iemicrox.blogspot.com/p/pic16f887.html
[4] Online:http://www.microchip.com/wwwproducts/Devices.aspx?
dDocName=en026561#developmentTools
[5] Microchips, Data Sheet PIC18F2455/2550/4455/4550, Disponible en
http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf [En línea - Pdf]
[6] TecMikro, Bits de configuracion de los microcontroladores PIC, Disponible en:
http://www.programarpicenc.com/libro/bits-de-configuracion-microcontroladores-
pic.html
[7] Raúl Alvarez Torrico, Entendiendo los bits de configuración en elPIC16 de Microchip,
Disponible en: http://tecbolivia.com/index.php/articulos-y-tutoriales-
microcontroladores/34-entendiendo-los-bits-de-configuracion-en-el-pic16-de-microchip
[8] MICROCONTROLADORES II. Manejo de Perifericos (Displays, LCD, Teclado y
EEPROM). Profesor Luis Zurita. Marzo 18/2011.
[9] Online:http://www.slideshare.net/lmzurita/manejo-de-perifericos-para-
microcontroladores-en-c.
nb) [8] Eduardo Santamaría (2000-Pag. 35) “Electrónica digital y microprocesadores”
cuarta edición, 2000, Pag. 35
nc) [9] Edward V. Ramírez, Melvyn Weiss ”Introducción a los microprocesadores
“segunda edición 2006-Pag. 45
nd) [10] Eduardo Santamaría (2000-Pag. 35) “Electrónica digital y microprocesadores”
cuarta edición, 2000, Pag. 40
ne) [11] Enrique Mandado Pérez “Sistema integrado para el auto aprendizaje” Tercera
Edición 2002-Pag. 2
nf) [12] J. M. Orduña Huertas, Vicente Arnau Llompart “Arquitectura y programación
de microcontroladores” Cuarta Edición 2001-Pag. 3
ng) [13] Users Staff “Microcontroladores” Quinta Edición 2003-Pag. 40
nh) [14] Enrique Mandado Pérez “Sistema integrado para el auto aprendizaje” Tercera
Edición 2002-Pag. 5
ni) [15] Hwang Briggs “Arquitectura de computadoras” Editorial Mc Graw Hill.
nj) [16] Fernando E. Valdez, Ramón Pallas “Microcontroladores: Fundamentos y
Aplicaciones con PIC” Quinta edición, 2007, Marcombo, Capitulo 3, Pag. 69.
nk) [17] P. de Miguel “Fundamentos de los computadores” Séptima edición, 1999,
Paraninfo, Capitulo 5, Pag. 135.
nl) [18] [19] W. Stirling “Organización y Arquitectura de Computadores” Quinta
edición, 2000, Prentice-Hall, Capitulo 5, Pag. 120.
nm) [20] [21] Gordon Mosquera Christian Roberto, Modulo didáctico para el
microcontrolador ATMega, Quieto, 2006
nn)
no) [21] Mikel Etxebarria Isuskiza “Microcontroladores PIC: teoría y práctica” Tercera
Edición, 2003, Capitulo 4, Pag. 67.
np) [22] [23] V. García, Tema del Articulo “Trucar un servo” Disponible en:
http://www.hispavila.com/3ds/atmega/trucarservo.html
nq) [24] Aeromodelismo, "Motores Brushless",19 de marzo del 2015, Ramón Borroso.
[Online] Disponible en: http://www.aeromodelismofacil.com/Motores
%20brushless.htm
nr) [25] Master Ingenieros, “Motor Brushless características fundamentales, Cartagena,
Universidad Politécnica de Cartagena. [Online]
ns) Disponible en: http:// www.adsnt-recursos-masteringenieros-file-motor (1).pdf
nt) [26] Irving L. Kosow (1 de mayo de 1993). Máquinas eléctricas y transformadores.
Pearson Educación. pp. 429–. ISBN 9789688802939. Consultado el 26 de enero de
2011.
nu) [27] Robótica uC- Pic, Sensores [online]
nv) Disponible en: http://www.x-robotics.com/sensores.htm#LM35
nw) [28] K. Soria. “Todo lo que tienes que saber sobre: HC-SR04 Sensor
Ultrasónico”. Septiembre, 2013. [Online].
nx) Disponible en: http://bkargado.blogspot.com/2013/09/todosobrehc-sr04.html
ny) [29] “Sensor de Distancia de Ultrasonido HC-SR04”. ELECTRONILAB. Bogotá
D.C., Colombia. [Online].
nz) Disponible en:http://electronilab.co/tienda/sensor-de-distancia-de-ultrasonido-hc-
sr04/
oa) [30] Jorge González Coneo, “Sistema de monitoreo en tiempo real para la medición
de temperatura”, 2012. [Online]
ob) Disponible en: http://dialnet.unirioja.es/descarga/articulo/4316534.pdf
oc)
od)
oe)
of)
og)