Siguiendo el camino de hacer nuestro aprendizaje lo más sencillo posible considero que ha llegado el momento de escribir sobre microcontroladores.
Recuerdo mis estudios universitarios en los que tuve que ver mucha teoría y prácticas con diferentes circuitos asociados a diodos, transistores, amplificadores operacionales, compuestas lógicas, flip flops, contadores, multiplexores, temporizadores y muchas otras cosas que pasaron a ser casi obsoletas cuando se crearon los microcontroladores.
Es que basicamente un microcontrolador puede cumplir las mismas funciones que todos los componentes nombrados anteriormente y más con un solo circuito integrado reduciendo la complejidad física del circuito, la cantidad de componentes utilizados y abaratando los costos del diseño.
Por esa razón he decidido saltar la explicación de muchos componentes tomando en cuenta solo aquellos que he considerado necesarios para complementar los circuitos con microcontroladores y otros que nos permiten entender su programación.
Aunque es más fácil armar circuitos con microcontroladores la complejidad está en comprender su funcionamiento y programación, para componentes explicados anteriormente bastaba el datasheet para comprender cómo funcionaba cada "pin" del componente, para el caso del microcontrolador es diferente, incluso un mismo modelo de una misma marca no cumplirá la misma función en cada uno de sus pines.
Entramos en un componente para el que se necesitan conocimientos electrónicos e informáticos para poder comprender su funcionamiento, para una comprensión más sencilla dividiré la presentación del microcontrolador en 4 partes.
- Composición Interna
- Composición Externa
- Bloques de Registros.
- Lenguajes de programación.
Todo esto nos lleva a una pregunta ¿Qué es un microcontrolador?
Algo muy fácil con lo que podemos compararlo es con una computadora personal. Una computadora puede ser dividida en dos partes: El hardware o parte tangible y el software o parte no tangible. Podríamos decir que en este aspecto son similares.
A su vez el hardware del PC esta compuesto por: Procesador, memoria de acceso aleatorio o RAM, Disco de almacenamiento, periféricos o componentes de entrada/salida de datos como teclado, mause, monitor, altavoces y muchos otros. El hardware del microcontrolador esta compuesto por Procesador, RAM, Memoria y "puertos de entrada/salida" mediante los que se puede controlar una aplicación.
El software de un PC esta compuesto principalmente por un Sistema Operativo que se encarga de gestionar todos los programas y por programas para taréas específicas. Un microcontrolador esta compuesto solamente por programas, de hecho por un solo programa para una aplicación específica y es ahí donde encontramos una de las principales diferencias.
El PC gracias a su Sistema Operativo es flexible para ejecutar funciones básicamente ilimitadas a nivel de software con la simple instalación de programas, un microcontralador solo corre un programa y nada más por lo cual, una vez programado es limitado en aplicaciones.
Para ilustrar esto un poco más podemos pensar en algunos programas que están en un PC como la calculadora, el reproductor de música u otras, ahora consideremos una calculadora cientifica CASIO, la CASIO tiene un microcontrolador dedicado al cálculo de operaciones matemáticas pero no puede reproducir música o realizar más funciones como una PC, sin embargo cuando vamos a ciertos lugares en los que solo necesitamos hacer cálculos resulta más practico ir con una CASIO que con una PC.
La diferencia radica en que un microcontrolador no corre un sistema operativo sino un programa para una aplicación específica determinada por el programador, por esta razón es común encontrar más de un microcontrolador en algunas tarjetas electrónicas avanzadas como una tarjeta madre que necesita uno para el control de audio, otro para el de video y así simultáneamente.
Este hecho también fácilita los costes de fabricación ya que los fabricantes diseñan y construyen microcontroladores de bajas prestaciones para aplicaciones simples y de altas prestaciones y desempeño para aplicaciones más complejas con costos relativos a cada caso.
En un computador podemos cambiar el procesador, la RAM y el disco duro a nuestro antojo para hacer mejoras o reparaciones en caso de daños, en un microcontrolador todo esto esta integrado en un pequeño chip por lo cual no es posible hacer estos reemplazos, en caso de querer añadir más potencia se debe reemplazar el microcontrolador completo por un modelo más potente lo cual también incluye hacer algunos cambios al programa.
Las partes internas de mayor relevancia que componen un microcontrolador según su arquitectura son.
El procesador: Es el que recibe el código o instrucciónes desde la memoria y los ejecuta, posee una unidad logica aritmetica o ALU que es donde se efectúan dichas operaciones (lógicas y aritméticas), Decodificador de instrucciones que es la parte donde se interpretan las instrucciones que son leídas desde la memoria las cuales son parte del "programa".
Memoria de programa: Es el lugar donde se almacena el programa, al igual que una memoria microSD que usamos tan comunmente estas memorias tienen capacidad límitada. Cuando se escribe el programa éste va requiriendo espacio para almacenar, mientras más información tenga el código mayor será la cantidad de espacio requerido. Los microcontroladores que estudiaremos en un futuro poseen memoria EEPROM o FLASH lo que se traduce en que podremos escribir y borrar programas tanto como queramos.
RAM: Es una memoria que almacena datos de forma temporal mientras se ejecutan, de esta forma facilita el trabajo al procesador añadiendo velocidad al procesamiento de instrucciones.
Estos tres componentes están dentro del chip y no se pueden ver o modificar, sin embargo determinan al potencia del microcontrolador y es importante conocer este detalle a la hora de diseñar para que no compremos un microcontrolador que no tenga capacidad para correr nuestro programa con eficiencia o que compremos uno en el que terminemos desperdiciando recursos de potencia. La forma de conocer los valores de estos recursos es consultando el DATASHEET de cada modelo.
Existen diferentes arquitecturas en la estructura interna de un microcontrolador pero en todas ellas encontraremos estos tres bloques cumpliendo las mismas funciones.
Creo que toda la información suministrada es suficiente para introducirnos el amplio mundo de los microcontroladores, en el siguiente artículo veremos las "Líneas de E/S para controladores periféricos" y "recursos auxiliares" estos dos puntos explicaran la parte externa del microcontrolador, funciones especiales de algunos pines y funciones programables de otros.
Así me despido pero no sin antes agradecerte haber tomado el tiempo para leerme una vez más, de esta forma quedo atento a tus comentarios.
Lecturas recomendadas
- José M. Angulo Usategui, Ignacio Angulo Martínez, Microcontroladores PIC: Diseño práctico de aplicaciones (primera parte)
- Ronald J. Tocci, Neal S. Widmer, Sistemas digitales: principios y aplicaciones
- Albert Paul Malvino, Principios de electrónica, Sexta edición.
- Robert L. Boylestad, Electrónica: Teoría de Circuitos.
- Timothy J. Maloney, Electrónica Industrial, dispositivos y sistemas.