Componentes electrónicos:
Microcontroladores y circuitos integrados.
Pantallazos del proyecto en Scrtch 3 como evidencia de lo realizado.
Tatiana Líos Ordoñez
UNIVERSIDAD UISIL
NOVIEMBRE 2022
INTRODUCCIÓN A LOS MICROCONTROLADORES.
La electrónica ha avanzado mucho. Casi todo lo que hace unos años se hacía
mediante un grupo, a veces muy numeroso, de circuitos integrados conectados entre
si, hoy se puede realizar conectando un microcontrolador y unos pocos componentes
adicionales.
El concepto de controlador ha permanecido inalterable a lo largo de los años,
sin embargo, la implementación física de los mismos ha variado frecuentemente. Hace
tres décadas, los controladores se construían exclusivamente con componentes de
lógica discreta; posteriormente se utilizaron los microprocesadores, que se rodeaban
de chips de memoria y periféricos de E/S sobre una tarjeta de circuito impreso y,
actualmente, todos los elementos del microcontrolador se han podido incluir en un
único integrado que recibe el nombre de microcontrolador.
Un microcontrolador es un circuito integrado que nos ofrece todas las posibilidades de un
pequeño computador. En definitiva, un microcontrolador es un circuito programable que
contiene todos las tres unidades fundamentales de un computador: CPU, Memoria y
unidades de E/S que nos permiten tener una interfaz, más o menos directa entre el
dispositivo y el mundo real. Se utilizan para controlar el funcionamiento de una
determinada tarea, y gracias a su reducido tamaño, suele ir incorporado en el propio
dispositivo que gobierna. Esta última característica es la que le confiere la denominación de
controlador incrustado (embedded controller).
Para definirlo de forma sencilla podemos decir que un microcontrolador es una máquina
tonta, un objeto sin razonamiento ninguno, un cubo negro con patitas metálicas que se
suelda a una placa con más o menos componentes electrónicos y cuya funcionalidad es tan
sencilla como la de una calculadora; frente a datos de entrada, sigue un programa, un
algoritmo dado por un programador y cambia su estado interior, ofreciendo una salida. Es
por tanto como un computador delicado. En su memoria solamente reside un programa
destinado a gobernar una aplicación determinada, sus líneas de E/S soportan la conexión de
los sensores y actuadotes del dispositivo a controlar y todos los recursos complementarios
disponibles tienen como única finalidad atender sus requerimientos. Una vez programado y
configurado, el microcontrolador solamente sirve para gobernar la tarea asignada.
Como objetos o dispositivos de entrada o salida podemos encontrar diversos periféricos,
desde simples líneas de entrada digital que pueden estar a cero o a uno, hasta complejos
puertos usados en ordenadores que permiten comunicar con otros dispositivos externos
como microcontroladores o PC.
CAPITULO 2
Diseño Introducción Microcontroladores.
Con esta idea en la cabeza nos encontramos que existen varios fabricantes que ponen a
disposición de los diseñadores miles de modelos distintos con características comunes y
otras más especificas según la aplicación a la que estén diseñados, varios tamaños,
diferencias consumo, periféricos, memoria, etc. La diversidad, además, tiene un objetivo
fundamental, reducir costes. Mientras más características o más memoria, más espacio
necesita y por tanto más caro será de fabricar y con ello de adquirir. Por tanto la tendencia
es establecer diseños sencillos y con características limitadas. Con diversos modelos cada
diseño tendrá un dispositivo que se adapte a las necesidades, eligiendo aquel que cumpla
con todas las
características de las especificaciones del producto a desarrollar y a la vez sea el más
económico.
El procesador CPU es el elemento más importante del microcontrolador y determina sus
principales características, tanto a nivel hardware como a nivel de software. Se encarga de
direccionar la memoria de instrucciones, recibir el código de la instrucción en curso, su
decodificación y la ejecución de la operación que implica la instrucción, búsqueda de los
operandos y el almacenamiento del resultado. Existen tres orientaciones en cuanto a la
arquitectura y funcionalidad de los procesadores actuales:
CISC: Computadores de Juego de Instrucciones Complejo: Disponen de más de 80
instrucciones máquina en su repertorio, algunas de las cuales son muy sofisticadas y
potentes, requiriendo muchos ciclos para su ejecución.
RISC: Tanto la industria de los computadores comerciales 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. La
sencillez y rapidez de las instrucciones permiten optimizar el hardware y el software del
procesador.
SISC: 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. Esta filosofía se ha bautizado con el nombre de
SISC (Computadores de Juego de Instrucciones Específico).
Todos los microcontroladores disponen de bloques esenciales, como son: procesador,
memoria de datos y memoria de instrucciones, módulos de E/S, oscilador de reloj y
módulos controladores de periféricos. Además de estos elementos, existen una serie de
recursos especiales que los fabricantes pueden ofertar tales como: Temporizadores
(Timers): Se emplean para controlar periodos de tiempo y para llevar la cuenta de
acontecimientos que suceden en el interior. Perro Guardián (Watchdog): Es un
temporizador que cuando se desborda y pasa por cero provoca un reset automáticamente en
el sistema.
Conversores A/D: Procesa señales analógicas convirtiéndolas en señales digitales.
o Modulador de Anchura de Pulso PWM: Son circuitos que proporcionan en su salida
impulsos de anchura variable, que se ofrecen al exterior a través de las patitas del
encapsulado Comparadores analógicos: Algunos modelos de microcontroladores disponen
internamente de un amplificador operacional que actúa como comparador entreuna señal
fija de referencia y otra variable que se aplica por una de las patitas de la cápsula. La salida
del comparador proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que
la otra.
o Puertos de entrada y salida digital o Puertos de comunicación : Con objeto de dotar al
microcontrolador de la posibilidad de comunicarse con otros dispositivos externos, otros
buses de microprocesadores, buses de sistemas, buses de redes y poder adaptarlos con otros
elementos bajo otras normas y protocolos. Algunos modelos disponen de recursos que
permiten directamente esta tarea, entre los que destacan:
UART, adaptador de comunicación serie asíncrona.
USART, adaptador de comunicación serie síncrona y asíncrona.
Puerta paralela esclava para poder conectarse con los buses de
otros microprocesadores.
USB (Universal Serial Bus), moderno bus serie para los PC.
Bus I2C, interfaz serie de dos hilos desarrollado por Philips.
CAN (Controller Area Network), permite la adaptación con redes de
conexionado multiplexado desarrollado conjuntamente por Bosch e
Intel para el cableado de dispositivos en automóviles.
Los microcontroladores pueden clasificarse según su arquitectura, que puede
ser Von Neumann o Harvard.
La arquitectura Von Neumann se caracteriza por disponer de una sola memoria
principal donde se almacenan datos e instrucciones de forma indistinta. A dicha
memoria se accede a través de un sistema de buses único. El bus de direcciones es usado
para identificar qué posición de memoria esta siendo accedida, mientras que el bus de datos
es utilizado para trasladar información entre la CPU y alguna dirección de memoria o
viceversa. Con un único sistema de buses, la arquitectura Von Neumann es usada
secuencialmente para acceder a instrucciones de la memoria de programa y ejecutarlas
regresando desde/hacia la memoria de datos. Esto significa que el ciclo de instrucción no
puede solaparse con ningún acceso a la memoria de datos.
Una desventaja de esta arquitectura podría ser que el contador de programa o
algún otro registro se corrompieran y apuntaran a la memoria de datos.
tomara ésta momentáneamente como memoria de programa.
Consecuentemente se ejecutaría una instrucción no deseada o un error en la decodificación
de la instrucción.
La Arquitectura Harvard se caracteriza por disponer de dos memorias independientes, una
que contiene sólo instrucciones y otra con sólo datos. Ambas disponen de sus respectivos
sistemas de buses de acceso y es posible realizar operaciones de acceso (lectura o escritura)
simultáneamente en ambas memorias. Una de las ventajas de esta arquitectura es que la
operación del microcontrolador puede ser controlada más fácilmente si se presentara una
anomalía en el contador de programa.
Existe otra arquitectura que permite accesos a tablas de datos desde la memoria de
programa. Esta arquitectura es la llamada arquitectura Harvard modificada. Esta última
arquitectura es la dominante en los microcontroladores
actuales ya que la memoria de programa es usualmente ROM, OTP, EPROM o FLASH
mientras que la memoria de datos es usualmente RAM, permitiendo que las tablas de datos
estén en la memoria de programa para que estas no se pierdan cada vez que el sistema se
apaga. Otra ventaja importante en la arquitectura Harvard modificada es que las
transferencias de datos pueden ser solapadas con los ciclos de decodificación de
instrucciones. Esto quiere decir que la siguiente instrucción puede ser cargada de la
memoria de programa mientras se está ejecutando una instrucción que accede a la memoria
de datos. La desventaja de la arquitectura Harvard modificada podría ser que se requieren
instrucciones especiales para acceder a valores en memoria RAM y ROM haciendo la
programación un poco complicada.
En cuanto a las técnicas de fabricación, casi la totalidad de los microcontroladores actuales
se fabrican en tecnologías CMOS (Complementary Metal
Oxide Semiconductor) que supera a todas las tecnologías existentes por su bajo consumo y
su inmunidad frente al ruido.
2.1 ¿Para qué se usan los microcontroladores?
La aplicación de los microcontroladores a un proyecto de ingeniería tiene su
límite en la imaginación de cada diseñador. Con los diversos modelos disponibles
podemos afrontar multitud de proyectos distintos desde los más simples hasta los más
complejos[1].
Las principales ventajas que se pueden encontrar con el uso de
microcontroladores son:
° Gestión eficiente de procesos
° Aumento de la fiabilidad
° Reducción del tamaño, consumo y coste
° Mayor flexibilidad
Por nombrar algunos ejemplos de aplicaciones: mandos a distancia, termómetros digitales,
controles de acceso por puertas de seguridad, los sistemas ABS o EPS de los coches,
control y sensórica de maquinaria, domótica del hogar, microrobótica, monederos
electrónicos …
Hace algunos años, para borrar la información contenida en un PIC, estos debían ser
expuestos a una luz Ultra Violeta a través de una ventana sobre el Chip; y para cargar sobre
ellos un programa era necesario tener un programador especial. Actualmente los PIC
utilizan memorias conocidas como Flash, que pueden ser borradas eléctricamente miles de
veces, sin necesidad de ningún equipamiento especial y puede ser programados a través de
un protocolo denominado ICSP (InCircuit Serial Programming). Este protocolo se
desarrolló con la finalidad de resultar lo más cómodo posible para el programador, por lo
que en lugar de preocuparse por adaptar el diseño del circuito para el que programaremos el
PIC a las necesidades del protocolo ICSP, se optó por mover el PIC desde su circuito
original a una tarjeta prototipo propia del programador adaptada a las necesidades de
conexión del
protocolo ICSP y así poder usar el mismo programador para cualquier circuito que
queramos diseñar.
Usando una programación bajo el estándar de programación ICSP necesitamos, como ya
hemos explicado con anterioridad, conectarnos con el PIC para descargar la aplicación que
hemos diseñado. Para esto Microchips desarrolló el “Low Pin Count - LPC- Demo Borrad"
diseñado para ser utilizado junto con el programador PICkit 2.
La LPC Demo Borrad incluye la base de la tarjeta con el soporte sobre el que conectar un
PIC para que el programa pueda ser transferido, cuatro LED un interruptor de contacto y un
potenciómetro (resistencia variable). Además sobre la placa, tenemos un área en la que
podemos añadir componentes que necesitemos para nuestra configuración.
La LPC Demos Board soporta todos los PIC modernos (que utilizan memorias Flash) 8-,14,
y 20-pin PIC Baseline y Midrange. Muchas de las líneas de I/O del PIC están conectadas
como salidas en el soporte de 14 pin que se encuentra en el lateral de la placa prototipo,
permitiendo que la tarjeta sea conectada a otro circuito, permitiendo configurar y depurar tu
diseño sin necesidad de fabricar la placa con el PIC integrado en cada ocasión.
Existen actualmente un número determinado de tarjetas prototipo, algunas de ellas vienen
con más periféricos integrados, lo que permite configurar muchas más aplicaciones, sin
embargo tener una tarjeta u otra no es limitación alguna para trabajar de manera completa
con nuestro PIC para depurar nuestro diseño, ya que es muy sencillo construir nuestra
propia tarjeta prototipo adaptada a nuestras necesidades de diseño, incluso que puedan
soportar un PIC más largo
2.3.3 Software Necesario
El lenguaje nativo de los microcontroladores es el ASM, sin embargo, el ASM es un
lenguaje que esta mucho mas cerca del hardware que del programador. Esto, unido al
aumento de la capacidad de memoria de los microprocesadores, ha fomentado la aparición
de compiladores de lenguajes de alto nivel.
Los lenguajes de programación más extendidos son el Basic y el C, aunque también se
pueden encontrar compiladores de lenguaje orientado a objetos como son el C++ o java, sin
embargo estos compiladores no se encuentran tan desarrollados y optimizados como para
tenerlos en consideración para una aplicación compleja de programar.
Todos los PIC necesitan, por tanto, un traductor del microchips. MPLAB es un entorno de
desarrollo integrado (IDE) que permite hacer esta transformación. Es un programador serial
o USB de una gran cantidad de micros PIC y otros integrados de la gran familia de
MICROCHIP. Con la tecnología de Microchip para realizar Debugger "In-Circuit", es
posible bajar el programa a su sistema, ejecutarlo en tiempo real y al mismo tiempo
examinar en detalle el programa con la ayuda de MPLAB. Es posible ver el valor de las
variables, elegir puntos de ruptura (breakpoints) en C o en ensamblador. Se puede analizar
el código en C o ensamblador paso por paso.
Esta herramienta incluye un ensamblador propio de Microchip, conocido como MPASM,
un editor y un software de simulación que te permite depurar la aplicación antes de
trasladarla al Chip. Hace algún tiempo una herramienta como esta, tan sofisticada, podía
costar bastante, sin embargo, actualmente MPLAB es un programa de distribución gratuita,
completamente libre, distribuido por el propio Microchip.
MPLAB soporta directamente la conexión con el programador PICkit 2 para todos los
dispositivos de Midrange y Baseline PIC, por lo que también necesitaremos para trabajar el
software que permite el control del programador y que viene incluido en el CD junto con la
tarjeta o placa prototipo pero que también podemos encontrar en la página de Microchip
para descargarlo de forma gratuita. Conviene además comprobar que tenemos la última
versión, ya que cada nueva versión añade características que permiten soportar nuevos
PICs.
MPLAB, desde la versión 7.41, incluye una copia de libre distribución del compilador de
lenguaje de programación C llamado CCS. Sin embargo esto en muchas ocasiones no
supone un gran avance, ya que la disponibilidad de la versión gratuita es tan limitada que
hace que, en muchos casos, necesites usar un ensamblador.
Estudiando todas las posibilidades de diseño comprobamos que es posible usar MPLAB
como una herramienta de desarrollo integrado completa para ensamblarlos programas de
forma tan completa como si usáramos un programador de lenguaje
Los dispositivos de la serie 18F tienen además que utilizar el llamado compilador C18, que
se vende de forma separada y que no es barato; sin embargo, existe una versión para
estudiantes con algunas características desactivadas pero funcionando completamente en
cuanto a prestaciones se refiere y que también se encuentra disponible en una versión libre
que podemos descargar sin problemas, además, al igual que los otros compiladores de C,
C18 permite estar completamente integrado dentro de MPLAB.
Sin embargo, esta no es la única forma de trabajar con el dispositivo. El PICkit
2 viene con una versión limitada del compilador de C distribuido por Hi-Tech’s, llamado
“PICC-Lite”. Este soporta un pequeño número de dispositivos de Midrange y para los
dispositivos High-end, como el 16F690 no permite usar toda la memoria del PIC; por
es muy útil para iniciarse en los programadores de C para dispositivos Midrange, pero
queda descartado de la selección por sus limitaciones.