Categories
Sense categoria

microcontroladores

Por qué microcontroladores y no robots

Los seres humanos necesitamos potenciar nuestras capacidades, no únicamente por competir o ser más eficientes, además por los límites bioquímicos a los que estamos sometidos.

Los robots son creaciones cibernéticas que asemejan la máquina al ser humano y en ello se comete el eterno error de transferir nuestras limitaciones al objetivo.

Los robots ya no son un futuro por venir, no se aplican masivamente pero tienen unos objetivos y trabajos asignados muy dignos para su especie. Anunciaba recientemente Elon Musk la utilización de robots para la llegada del hombre a Marte. Alguien deberá pasar la escoba.

Sin embargo, aquí en la Tierra, debemos creer más en nosotros mism@s y potenciar nuestras habilidades al punto en que lleguemos a estar en equilibrio con lo que este pequeño planeta puede dar de si.

¿Qué son los microcontroladores?

Entre nosotr@s, las maquinas de procesar no son más que bicicletas pegadas a una calculadora. Tal como las pianolas de banda procesan una partitura a ritmo de la manivela que impulsa la banda, pegada a algún dispositivo generador de sonido: martillos que golpean cuerdas o láminas ajustadas a tonos concretos; las antiguas máquinas de cómputo, o cálculo automatizado, tomaban las instrucciones correlativamente ordenadas en la memoria, como si fuera una partitura de cálculo.

Si la metáfora sirvió, que las primeras computadoras tuvieran la libertad de escribir datos sobre la misma memoria donde se halla el código que las hace funcionar sería algo así como permitir que los computadores se programasen a ellos mismos.

Imaginados los desastres que el lector pueda disfrutar: equívocos en la programación, virus informáticos, esquizofrenia computacional, autodestrucción de circuitos electrónicos por locura galopante; se puede llegar a la conclusión que a algún ingeniero se le ocurrió de separar las memorias de las instrucciones de las de los datos.

Los microcontroladores son procesadores enfocados a la tarea de ser fieles a los contenidos del programa. En este sentido no se pierde la posibilidad de utilizar la tan preciada “Recurrencia” dentro de bucles “while”, que muchos hemos utilizado en los Arduinos y Cia. y que sería algo así como seguir un menú de posibilidades y ejecutar únicamente aquellas que correspondan al caso en función de estados de la memoria de datos.

En este mismo sentido tendríamos las Interrupciones, que son también porciones de código separado de los datos. Pero esto, ahora, carece de importancia.

Sin embargo, y desde hace décadas, los microcontroladores no son únicamente procesadores Harvard, albergan además en su interior grandes cantidades de otros circuitos especializados para tareas propias del objetivo al que se va a destinar: contadores, temporizadores, canales de comunicación de datos, convertidores de estados lógicos y de magnitudes analógicas, en algunos casos directamente adaptados a unidades de ingeniería, etc.

Entonces, donde está la diferencia entre un robot y un microcontrolador?

Exacto. A efectos de proyecto terminado un microcontrolador es un cerebro ordenado de un robot, es decir, de la máquina que trabaja para nosotros. Que obedezca ordenes de un humano o de una red de humanos es cuestión de complejidad. Lo habitual es que el robot esté formado por más de un microcontrolador formando un conjunto colaborativo.

Entonces, los robots basados en computadores no son robots?

Si, claro, pero quien quiere una máquina que se va a resfriar con sólo salir a la calle. Los Computadores Industriales están dotados de mecanismos que evitan la sobre escritura de código, que para el caso es lo mismo que separar los buses. Hay que tener en cuenta, también, que los grandes procesadores que se utilizan en placas base de ordenador ya no son simples procesadores, son estructuras de múltiples cadenas de código que provienen de chips separados de la memoria de datos.

La ventaja del robot es la facilidad de recibir ordenes del humano y ahí es donde reside el problema. Los humanos no siempre tenemos claras nuestras necesidades y a medio camino solemos cambiar de opinión. Nosotros mismos reescribimos nuestra cadena de código hacia el robot como en los antiguos computadores. Somos capaces de reconocer la esclavitud que nos causamos en consecuencia de la sobre explotación de los recursos de producción.

Un ejemplo para ilustrar mejor el problema son los electrodomésticos. Una lavadora no hará más que un lavado cada vez, pero al robot se le exigirá dos y tres. O lo pondremos “de patitas en la calle” si encima de ser más caros son incapaces de alcanzar nuestros objetivos.

Los microcontroladores, además de ser muy pequeños consumen muy poca energía.

Cuando una máquina está destinada a manejar mucha información, que funcione a mucha velocidad siempre es poco. Incluso se justifica que pierdan energía en forma de calor a costa de ganar mayor velocidad. Además se habla de “Overclocking”, que no es más que poner al procesador a niveles de velocidad no recomendadas por el fabricante a escusa de que el sistema de corrección de errores tape el problema.

Pero el microcontrolador es rápido, del orden de diez millones de instrucciones por segundo y sin problemas térmicos, gracias a sus reducidas dimensiones. Su pulsación de funcionamiento normalmente está calibrada acorde a la pulsación natural del procesador interno en función de su tamaño.

Y por que no utilizar overclocking en microcontroladores?

Pues por la misma razón de la aparición del procesador RISC. Es absurdo.

La única forma que se me ocurre para explicar es viendo la evolución de los procesadores en la historia. En el caso de la lavadora, si necesito lavar más puedo comprar más lavadoras pero no lavaré más rápido. Al final tendré siempre disponible alguna lavadora pero el ciclo es el mismo.

En 1977 la Universidad Carnegie Mellon presento el computador cm* como la solución al computador modular. La intención era tener más lavadoras y al mismo tiempo lavar más rápido. Se trata de tener pequeñas máquinas que se ocupen de pequeñas partes del ciclo, de hecho eran procesadores LSI de 8 bits. Sin embargo había que resolver el pasar la ropa de una máquina a otra.

En el cm* los procesadores estaban agrupados en “clústeres” no mayores de 10 unidades (o pequeñas lavadoras). Entre estos 10 módulos existía un área de memoria común, donde cada procesador dejaba o recogía los datos a procesar. Como paquetes de ropa dejadas o retiradas de una estantería. Más allá de estas 10 unidades la gestión se volvía compleja.

Cuando un paquete requería ser enviado a otro clúster se formulaba una orden de envío y de ello se ocupaba un procesador especializado en correr sin manejar los datos. Este procesador de alta velocidad debía tener muy claro el mapa ser capaz de gestionar las colas (de coladas) que se destinaban de unas estanterías a las otras. Aunque se le llamó KMAP esta claro para nosotros, hoy día, que eso sería un “enrutador”.

Visto de esta manera, los procesadores se especializaron en capaces y rápidos. Ello también llevaba a que, como los procesadores hasta la época debían ocuparse de todo, los capaces también disminuyeron sus funciones convirtiéndose en lo más rápidos posible como procesadores capaces. Estos son los Reduced Instruction Set Computers (RISC).

En este sentido, los microcontroladores también están construidos con procesadores RISC, capaces más que rápidos. Estos ya se encuentran en su límite. Es más, las herramientas de configuración permiten velocidades ajustables para una mejor adaptación a los periféricos, como en el caso de los estrictos requisitos en frecuencia para USB, o llegar a sus máximas características en ausencia de estas complejas estructuras de datos como los RTOS o las RTDB.

Si un robot debe ser una compleja lavandería de pequeñas lavadoras, ¿no sería mejor que en aplicaciones del día a día, el robot sea la casa entera? No únicamente capaz, también rápida.