Está en la página 1de 22

Microcontroladores para

instrumentación y control.

Reporte de prácticas de 1 a la 5
Integrantes:

● Osorio Santana María Guadalupe


● Gómez Rodríguez David
Contenido
INTRODUCCIÓN ______________________________________________________________________________________________ 4

OBJETIVO _____________________________________________________________________________________________________ 5

MARCO TEÓRICO_____________________________________________________________________________________________ 6
Estructura de un microcontrolador _______________________________________________________________________ 6
El procesador o CPU ________________________________________________________________________________________ 6
Memoria ROM ______________________________________________________________________________________________ 7
Memoria RAM ______________________________________________________________________________________________ 8
Periféricos. __________________________________________________________________________________________________ 8
Temporizadores y contadores. ____________________________________________________________________________ 9
contador. ____________________________________________________________________________________________________ 9
Conversor analógico/digital._______________________________________________________________________________ 9
Puertos de comunicación. __________________________________________________________________________________ 9
Puerto serie _________________________________________________________________________________________________ 9
SPI _________________________________________________________________________________________________________ 10
I2C _________________________________________________________________________________________________________ 10
USB ________________________________________________________________________________________________________ 10
Comparadores. ___________________________________________________________________________________________ 10
Modulador de ancho de pulso (PWM). __________________________________________________________________ 10

DESARROLLO ________________________________________________________________________________________________ 11
Fuses ______________________________________________________________________________________________________ 12
Código Practica 1 _________________________________________________________________________________________ 13
Código Practica 2 _________________________________________________________________________________________ 14
Código Practica 3 _________________________________________________________________________________________ 15
Código Practica 4 _________________________________________________________________________________________ 17
Código Practica 5 _________________________________________________________________________________________ 18

CONCLUSIONES______________________________________________________________________________________________ 20

BIBLIOGRAFÍA ______________________________________________________________________________________________ 21

ANEXOS ______________________________________________________________________________________________________ 22

2
Ilustraciones
ILUSTRACIÓN 1 TOPOLOGÍA DE UN MICROCONTROLADOR .......................................................................................... 4
ILUSTRACIÓN 2 SISTEMA MÍNIMO PARA EL DESARROLLO DE LAS PRÁCTICAS .............................................. 11
ILUSTRACIÓN 3 SISTEMA MÍNIMO PROTEUS ...................................................................................................................... 11
ILUSTRACIÓN 4 CABERAS DE PROGRAMA ............................................................................................................................ 12
ILUSTRACIÓN 5 PRÁCTICA 1, CÓDIGO ..................................................................................................................................... 13
ILUSTRACIÓN 6,PRÁCTICA 1 ESTADO 1.................................................................................................................................. 13
ILUSTRACIÓN 7 PRÁCTICA 1 ESTADO 2.................................................................................................................................. 13
ILUSTRACIÓN 8, PRÁCTICA 2, CÓDIGO .................................................................................................................................... 14
ILUSTRACIÓN 10 PRÁCTICA 2, ESTADO 1 .............................................................................................................................. 14
ILUSTRACIÓN 10 PRÁCTICA 2, ESTADO 2............................................................................................................................. 14
ILUSTRACIÓN 11 PRÁCTICA 3, CÓDIGO .................................................................................................................................. 15
ILUSTRACIÓN 12 PRÁCTICA 3, ESTADO 1.............................................................................................................................. 15
ILUSTRACIÓN 13, PRÁCTICA 3, ESTADO 2 ............................................................................................................................. 15
ILUSTRACIÓN 14,PRÁCTICA 3, ESTADO 3 .............................................................................................................................. 16
ILUSTRACIÓN 15 PRÁCTICA 3, ESTADO 4, ............................................................................................................................. 16
ILUSTRACIÓN 16, PRÁCTICA 4, CÓDIGO ................................................................................................................................. 17
ILUSTRACIÓN 17, PRÁCTICA 4, ESTADO DE IGUALDAD ENTRE LOS NÚMEROS A Y B ................................... 17
ILUSTRACIÓN 18, PRÁCTICA 5, CÓDIGO. ................................................................................................................................ 18
ILUSTRACIÓN 19, PRÁCTICA 5, ELEMENTOS VIRTUALES ............................................................................................. 19

3
INTRODUCCIÓN
Los microcontroladores hicieron su aparición a principio de los ’80 y se trata de un
circuito integrado programable que contiene toda la estructura (arquitectura) de una
microcomputadora. Es decir que, dentro de un microcontrolador podemos
encontrar:

• CPU (Unidad Central de Proceso)


• Memoria RAM
• Memoria ROM
• Memoria EEPROM (Memoria de lectura y escritura no volátil, es decir, que
no se pierden los datos cuando el circuito es desconectado)
• Puertos de Entrada/Salida (Pines de E/S)
• Módulos periféricos: conversores analógicos/digital (A/D), módulos PWM
(control por ancho de pulso), módulos de comunicaciones seriales o en
paralelo, y más.

Los microcontroladores denominados «PIC» corresponden exclusivamente a la


marca Microchip. PIC significa «Peripheral Interface Controller» y fue desarrollado
por Microchip a principio de los 80.

Existe una gran cantidad de modelos de microcontroladores cuyas características y


prestaciones varían de un modelo a otro. De esta manera los desarrolladores
pueden seleccionar el modelo que mejor se ajuste a sus necesidades.

Para el desarrollo de esta materia


de utilizara el PIC 18f4550 dadas las
prestaciones y capacidades de este.

Ilustración 1 Topología de un microcontrolador

4
OBJETIVO
El alumno desarrollará aplicaciones con microcontroladores para la solución de
problemas específicos de instrumentación y control de procesos.

5
MARCO TEÓRICO
Estructura de un microcontrolador

Básicamente, un microcontrolador está compuesto por los siguientes componentes:

• Procesador o CPU (del inglés Central Prossesing Unit o Unidad Central de


Proceso).
• Memoria para el programa tipo ROM.
• Memoria RAM para contener los datos.
• Líneas de E/S para comunicarse con el exterior.
• Diversos módulos para el control de periféricos (temporizadores, Puertas
Serie y Paralelo, CAD: Conversores Analógico/Digital, CDA: Conversores
Digital/Analógico, etc.).

El procesador o CPU

Es el elemento más importante del microcontrolador y determina sus principales


características, tanto a nivel hardware como software. La CPU (Central Processing
Unit o Unidad Central de Proceso) se encarga la decodificación y ejecución del
programa.

Actualmente, existen 3 tipos de arquitectura de procesadores:

• CISC (Computadores de Juego de Instrucciones Complejo): disponen de


más de 80 instrucciones en su repertorio, algunas de las cuales son muy
sofisticadas y potentes, requiriendo muchos ciclos para su ejecución. Una
ventaja de los procesadores CISC es que ofrecen instrucciones complejas
que actúan como macros.

• RISC (Computadores de Juego de Instrucciones Reducido): En estos


procesadores el repertorio de instrucciones es muy reducido y las
instrucciones son simples y generalmente se ejecutan en un ciclo. La ventaja
de éstos es que la sencillez y rapidez de las instrucciones permiten optimizar
el hardware y el software del procesador.

6
• SISC (Computadores de Juego de Instrucciones Específico): En los
microcontroladores destinados a aplicaciones muy concretas, el juego de
instrucciones, además de ser reducido, es «específico», o sea, las
instrucciones se adaptan a las necesidades de la aplicación prevista.

Memoria ROM

La memoria ROM es una memoria no volátil, es decir, que no se pierden los datos
al desconectar el equipo y se destina a contener el programa de instrucciones que
gobierna la aplicación. Los microcontroladores disponen de capacidades de ROM
comprendidas entre 512 bytes y 8 k bytes.

Existen distintos tipos de memorias ROM, la cual determinará la aplicación del


microcontrolador.

ROM con máscara: Es una memoria no volátil de sólo lectura cuyo contenido se
graba durante la fabricación del chip. El elevado costo del diseño de la máscara sólo
hace aconsejable el empleo de los microcontroladores con este tipo de memoria
cuando se precisan cantidades superiores a varios miles de unidades.

OTP: El microcontrolador contiene una memoria no volátil de sólo lectura


«programable una sola vez» por el usuario. OTP (One Time Programmable). Es el
usuario quien puede escribir el programa en el chip mediante un sencillo grabador
controlado por un programa desde una PC. La versión OTP es recomendable
cuando es muy corto el ciclo de diseño del producto, o bien, en la construcción de
prototipos y series muy pequeñas. Tanto en este tipo de memoria como en la
EPROM, se suele usar la encriptación mediante fusibles para proteger el código
contenido.

EPROM: Los microcontroladores que disponen de memoria EPROM (Erasable


Programmable Read OnIy Memory) pueden borrarse y grabarse muchas veces. La
grabación se realiza, como en el caso de los OTP, con un grabador gobernado
desde un PC. Si, posteriormente, se desea borrar el contenido, disponen de una
ventana de cristal en su superficie por la que se somete a la EPROM a rayos
ultravioleta durante varios minutos. Las cápsulas son de material cerámico y son
más caros que los microcontroladores con memoria OTP que están hechos con
material plástico.

7
EEPROM: Se trata de memorias de sólo lectura, las cuales se puede escribir y
borrar eléctricamente. EEPROM (Electrical Erasable Programmable Read OnIy
Memory). Tanto la programación como el borrado se realizan eléctricamente desde
el propio grabador y bajo el control programado de un PC. Es muy cómoda y rápida
la operación de grabado y la de borrado. No disponen de ventana de cristal en la
superficie. Los microcontroladores dotados de memoria EEPROM una vez
instalados en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin
ser retirados de dicho circuito. Para ello se usan «grabadores en circuito» que
confieren una gran flexibilidad y rapidez a la hora de realizar modificaciones en el
programa de trabajo. El número de veces que puede grabarse y borrarse una
memoria EEPROM es finito, por lo que no es recomendable una reprogramación
continua. Son muy idóneos para la enseñanza y la Ingeniería de diseño. Se va
extendiendo en los fabricantes la tendencia de incluir una pequeña zona de memoria
EEPROM en los circuitos programables para guardar y modificar cómodamente una
serie de parámetros que adecuan el dispositivo a las condiciones del entorno. Este
tipo de memoria es relativamente lenta.

FLASH: Se trata de una memoria no volátil, de bajo consumo, que se puede escribir
y borrar. Funciona como una ROM y una RAM, pero consume menos y es más
pequeña. A diferencia de la ROM, la memoria FLASH es programable en el circuito.
Es más rápida y de mayor densidad que la EEPROM. La alternativa FLASH está
recomendada frente a la EEPROM cuando se precisa gran cantidad de memoria de
programa no volátil. Es más veloz y tolera más ciclos de escritura y borrado.

Memoria RAM

La memoria RAM es una memoria volátil, es decir, que se pierden los datos al
desconectar el equipo, y se destina a guardar las variables y los datos. Los
microcontroladores disponen de capacidades de RAM comprendidas entre 20 y 512
bytes.

Periféricos.

Cuando observamos la organización básica de un microcontrolador, señalamos que


dentro de este se ubican un conjunto de periféricos, cuyas salidas están reflejadas
en los pines del microcontrolador.

8
Temporizadores y contadores.

Son circuitos sincrónicos para el conteo de los pulsos para poder tener una entrada
de reloj. Si la fuente de un gran conteo es el oscilador interno del microcontrolador
es común que no tengan un pin asociado, y en este caso trabajan como
temporizadores. Por otra parte, cuando la fuente de conteo es externa, entonces
tienen asociado un pin configurado como entrada, este es el modo

contador.

Los temporizadores son uno de los periféricos más habituales en los


microcontroladores y se utilizan para muchas tareas, como, por ejemplo, la medición
de frecuencia, implementación de relojes, para el trabajo de conjunto con otros
periféricos que requieren una base estable de tiempo entre otras funcionalidades.

Conversor analógico/digital.

Es muy frecuente el trabajo con señales analógicas, éstas deben ser convertidas a
digital y por ello muchos microcontroladores incorporan un conversor analógico-
digital, el cual se utiliza para tomar datos de varias entradas diferentes que se
seleccionan mediante un multiplexor.

Puertos de comunicación.

Existen distintos protocolos de comunicación, que consisten en el envió de


información con ciertos tipos de señales, ciertos intervalos de tiempo, en algunos
casos la comunicación puede ser bidireccional, se mencionaran algunos de los más
importantes:

Puerto serie

Este periférico está presente en casi cualquier microcontrolador, normalmente en


forma de UART (Universal Asynchronous Receiver Transmitter) o USART
(Universal Synchronous Asynchronous Receiver Transmitter) dependiendo de si
permiten o no el modo sincrónico de comunicación.

9
SPI

Este tipo de periférico se utiliza para comunicar al microcontrolador con otros


microcontroladores o con periféricos externos conectados a él, por medio de una
interfaz muy sencilla. Hay solo un nodo controlador que permite iniciar cualquier
transacción, lo cual es una desventaja en sistemas complejos, pero su sencillez
permite el aislamiento galvánico de forma directa por medio de optoacopladores.

I2C

Cumple las mismas funciones que el SPI, pero requiere menos señales de
comunicación y cualquier nodo puede iniciar una transacción. Es muy utilizado para
conectar las tarjetas gráficas de las computadoras personales con los monitores,
para que estos últimos informen de sus prestaciones y permitir la autoconfiguración
del sistema de video.

USB

Los microcontroladores son los que han permitido la existencia de este sistema de
comunicación. Es un sistema que trabaja por polling (monitoreo) de un conjunto de
periféricos

Comparadores.

Son circuitos analógicos basados en amplificadores operacionales que tienen la


característica de comparar dos señales analógicas y dar como salida los niveles
lógicos ‘0’ o ‘1’ en dependencia del resultado de la comparación. Es un periférico
muy útil para detectar cambios en señales de entrada de las que solamente nos
interesa conocer cuando está en un rango determinado.

Modulador de ancho de pulso (PWM).

Los PWM (Pulse Width Modulator) son periféricos muy útiles sobre todo para el
control de motores, sin embargo, hay un grupo de aplicaciones que pueden
realizarse con este periférico, dentro de las cuales podemos citar: inversión DC/AC
para UPS, conversión digital analógica D/A, control regulado de luz (dimming) entre
otras.

10
DESARROLLO
Para poder desarrollar nuestras prácticas se construyó un sistema mínimo para el
funcionamiento del microcontrolador con periféricos e indicadores para poder
visualizar salidas y generar datos de entrada para el desarrollo de las prácticas
(Ilustración 2).

Ilustración 2 Sistema mínimo para el desarrollo de las prácticas

De igual forma se desarrolla una especia de sistema mínimo virtual para el


desarrollo de estas, en la plataforma Proteus versión 8.8 (ilustración 3)

Ilustración 3 Sistema mínimo proteus

11
Fuses

Ilustración 4 Caberas de programa

Como se puede visualizar en la ilustración 4 se definen bastantes parámetros, en la


línea 1 se define la librería del microcontrolador que se utiliza para la elaboración
de estas prácticas en la línea 2 se define el conversor A/D con una resolución de 16
bits, debajo de estas se describen un grupo de fuses necesarios para el correcto
funcionamiento del sistema dado que se utiliza un bootloader propuesto por
microchip y modificado por nosotros para un mejor funcionamiento #org nos dice en
que sección de memoria esta almacenado el bootloader que se le cargo a este
dispositivo y #build nos ejecuta las interrupciones necesarias para la transmisión de
datos. A continuación, se presenta una breve explicación de los fuses usados:

• HSPLL: para cristales >4MHZ usando el HSPLL


• NOWDT: Deshabilita el Watch Dog Timer
• NOBROWNOUT: Reset de bajo voltaje desactivado
• NOPROTECT: Sin protección de memoria de programa
• NOLVP: Impide que el micro pueda grabarse en modo de bajo voltaje
• NODEBUG: deshabilitador del depurador de fondo
• USBDIV: USB Bit de selección del reloj (usado solo en el modo USB full
speed)
• NOMCLR: deshabilitador de Master Clear Reset
• PLL5: Preescaler a 5
• CPUDIV1: Postcaler de Reloj de sistema
• VREGEN: Bit habilitador del regulador de voltaje del USB
• NOPBADEN: Bit habilitador del conversor A/D en el puerto B
• WRTB: Bit de protección de escritura para los bloques de arranque
• CPB: Bit de protección de código para el Bloque de arranque

12
Código Practica 1

Ilustración 5 Práctica 1, Código

Tal como se aprecia en la ilustración 5, consta de 11 líneas de instrucciones


inicialmente el void main cuya función es contener el programa principal y dentro de
este un while(true) cuya función es ejecutar ciclos infinitos de su contenido, el
contenido del while son actualizaciones de escritura del estado del puerto es decir
se le esta diciendo al microcontrolador que en su puerto de escriba un numero 5516
es decir 01010101 siendo el cero subrayado el bit más significativo que, viéndolo en
el puerto D seria RD7, con esta instrucción tenemos la facilidad de escribir de
manera más rápida actualizaciones del estado del puerto sin tener que escribir
bastantes líneas de Código, posteriormente se da un delay para poder apreciar la
salida y se hace lo mismo con la siguiente actualización del puerto AA 16,10101010.

Ilustración 6,Práctica 1 estado 1 Ilustración 7 Práctica 1 estado 2


13
Código Practica 2

Ilustración 8, Práctica 2, código

En esta práctica y en el resto de prácticas que se sigan presentando se usaran las


mismas cabeceras, en el caso donde se lleguen a ocupar otras no mencionadas
anteriormente se mencionarán puntualmente en la práctica correspondiente.

Como primer instancia tenemos la estructura general Void main y dentro de este un
while loop, a diferencia de la primer práctica aquí no se va a ejecutar de manera
cíclica el programa, si no, que será necesario presionar un botón para ejecutar un
valor en el puerto D de caso contrario se desplegará otro, siendo el puerto A donde
se encuentra señal de entrada RA0

Ilustración 10 Práctica 2, Estado 1 Ilustración 10 Práctica 2, Estado 2

14
Código Practica 3

Ilustración 11 Práctica 3, código

Como podemos observar en la ilustración 11 el código consta de la estructura básica


de ejecución cíclica y 4 condicionantes, siendo A0 y A1 nuestros bits de entrada,
también se puede observar que en esta ocasión las declaraciones del estado del
puerto se hacen de forma binaria siendo de izquierda a derecha en seguida de la
letra b el estado de RB7 sucesivamente hasta llegar a RB0 en las ilustraciones que
se muestran a continuación se pueden observar los 4 estados posibles del
programa.

Ilustración 12 Práctica 3, estado 1 Ilustración 13, Práctica 3, Estado 2

15
Ilustración 14,Práctica 3, Estado 3 Ilustración 15 Práctica 3, estado 4,

16
Código Practica 4

Ilustración 16, Práctica 4, código

Como se puede observar en la ilustración 16 declaramos dos variables de tipo


entero y a su vez asignamos un puerto a cada uno para la lectura del dato, es decir
se leerá el estado del puerto y posteriormente se realizan las comparaciones de las
variables antes mencionadas (a y b) y dado el resultado indicará lo siguiente:

• Si a<b entonces RB1 en alto


• Si a>b entonces RB2 en alto
• Si a=b entonces RB3 en alto

Ilustración 17, Práctica 4, estado de igualdad entre los


números A y B

17
Código Practica 5

Ilustración 18, Práctica 5, Código.

En la ilustración 18 se muestra el código de esta práctica se utiliza la estructura


básica de void loop y dentro de este un while true, un elemento adicional en esta
programación setup_timer_0(rtcc_ext_h_to_l|rtcc_div_1) esta línea de código se
usa para configurar el TMR0 como contador, contando todos aquellos pulsos de
flanco de bajada.

set_timer0(0); parametriza el valor del timer 0 a un valor de 0.

enable_interrupts(int_timer0); Habilita interrupción por medio de timer 0


enable_interrupts(global); Habilita las interrupciones globales
get_timer0(); Nos devuelve el valor del timer 0 en ese instante de tiempo.
Basicamente nuetro programa se lo que hace es contar los pulsos recibidos por
TMR0 y los almacena en una variable C (TMR0 = RA4) y en cuanto se presione el
pulsador que ejecuta el conteo regresivo de pulsos (RA1) nos dará el conteo de
TMR0

18
Ilustración 19, Práctica 5, Elementos virtuales

19
CONCLUSIONES
El uso de las instrucciones de #use standard_io(a,b,c,d,e) nos facilitan la
declaración de puertos como entrada y salida, de misma forma, la instrucción de
output_x(Valor); e a=input_x(); para la lectura rápida de los puertos. Conocer las
configuraciones de resistencias a PULL UP y PULL DOWN es esencial.

Es importante conocer la mayoría de directicas o fuses para poder sacar el mejor


aprovechamiento del dispositivo, el uso de un bootloader facilita la continua
programación del micro.

20
BIBLIOGRAFÍA
http://www.niplesoft.net/blog/2016/01/15/introduccion-a-los-microcontroladores/

https://www.mikroe.com/ebooks/microcontroladores-pic-programacion-en-
basic/introduccion-al-mundo-de-los-microcontroladores

21
ANEXOS

22

También podría gustarte