Archivo por meses: febrero 2019

LEDs conectados al revés podrían enfriar las computadoras del futuro

En un hallazgo que va en contra de un supuesto común en física, los investigadores de la Universidad de Michigan conectaron un diodo emisor de luz (LED) con sus electrodos invertidos para enfriar otro dispositivo a solo nanómetros de distancia.

El equipo de la UM modificó un fotodiodo infrarrojo del tamaño de un grano de arroz, que se muestra en esta imagen de microscopio electrónico. Alisaron su superficie para que pudieran colocarla cerca de un calorímetro hecho a medida, solo 55 nanómetros (0,000055 milímetros) entre ellos. Las mediciones del calorímetro mostraron que el fotodiodo, cuando se conecta con los electrodos invertidos, se comportaba como si estuviera a una temperatura más baja y enfriaba el calorímetro

El enfoque podría llevar a una nueva tecnología de refrigeración de estado sólido para microprocesadores futuros, que tendrá tantos transistores empaquetados en un espacio pequeño que los métodos actuales no pueden eliminar el calor lo suficientemente rápido.

“Hemos demostrado un segundo método para usar los fotones para enfriar los dispositivos”, dijo Pramod Reddy, quien dirigió el trabajo junto con Edgar Meyhofer, ambos profesores de ingeniería mecánica.

El primero, conocido en el campo como el enfriamiento por láser, se basa en el trabajo fundacional de Arthur Ashkin, quien compartió el Premio Nobel de Física en 2018.

Los investigadores aprovecharon el potencial químico de la radiación térmica, un concepto que se usa más comúnmente para explicar, por ejemplo, cómo funciona una batería.

“Incluso hoy, muchos asumen que el potencial químico de la radiación es cero”, dijo Meyhofer. “Pero el trabajo teórico que se remonta a la década de 1980 sugiere que bajo ciertas condiciones, este no es el caso”.

El potencial químico en una batería, por ejemplo, impulsa una corriente eléctrica cuando se coloca en un dispositivo. Dentro de la batería, los iones metálicos quieren fluir al otro lado porque pueden deshacerse de parte de la energía (energía potencial química) y nosotros utilizamos esa energía como electricidad. La radiación electromagnética, incluida la luz visible y la radiación térmica infrarroja, por lo general no tiene este tipo de potencial.

“Por lo general, para la radiación térmica, la intensidad solo depende de la temperatura, pero en realidad tenemos un interruptor adicional para controlar esta radiación, lo que hace posible el enfriamiento que investigamos”, dijo Linxiao Zhu, investigadora en ingeniería mecánica y autora principal del trabajo de investigación.

Ese interruptor es eléctrico. En teoría, revertir las conexiones eléctricas positivas y negativas en un LED infrarrojo no solo evitará que emita luz, sino que suprimirá la radiación térmica que debería estar produciendo, solo porque está a temperatura ambiente.

“El LED, con este truco de polarización inversa, se comporta como si estuviera a una temperatura más baja”, dijo Reddy.

Sin embargo, medir este enfriamiento, y probar que algo interesante sucedió, es terriblemente complicado.

Para obtener suficiente luz infrarroja para que fluya desde un objeto al LED, los dos tendrían que estar muy juntos, menos que una sola longitud de onda de luz infrarroja. Esto es necesario para aprovechar los efectos de “campo cercano” o “acoplamiento evanescente”, que permiten que más fotones infrarrojos, o partículas de luz, crucen desde el objeto para dentro del LED.

Reddy y el equipo de Meyhofer tenían una ventaja, porque ya habían estado calentando y enfriando dispositivos a nanoescala, organizándolos de modo que estuvieran separados solo por unas pocas decenas de nanómetros, o menos de una milésima del grosor de un cabello. En esta proximidad, un fotón que no habría escapado del objeto a enfriar puede pasar al LED, casi como si no existiera la brecha entre ellos. Y el equipo tuvo acceso a un laboratorio de vibraciones ultra bajas donde las mediciones de objetos separados por nanómetros se vuelven factibles porque las vibraciones, como las de alguien caminando en el edificio, se reducen drásticamente.

El grupo probó el principio construyendo un calorímetro minúsculo, que es un dispositivo que mide los cambios en la energía, y colocándolo junto a un pequeño LED del tamaño de un grano de arroz. Estos dos emitían y recibían fotones térmicos entre sí y de otras partes de sus entornos.

“Cualquier objeto que se encuentre a temperatura ambiente está emitiendo luz. Una cámara de visión nocturna, básicamente, está capturando la luz infrarroja que proviene de un cuerpo cálido”, dijo Meyhofer.

Pero una vez que el LED fue polarizado en inversa, comenzó a actuar como un objeto de muy baja temperatura, absorbiendo fotones del calorímetro. Al mismo tiempo, la brecha evita que el calor vuelva al calorímetro por medio de conducción, lo que produce un efecto de enfriamiento.

El equipo demostró un enfriamiento de 6 vatios por metro cuadrado. Teóricamente, este efecto podría producir un enfriamiento equivalente a 1.000 vatios por metro cuadrado, o alrededor del poder de la luz solar sobre la superficie de la Tierra.




Esto podría llegar a ser importante para los futuros teléfonos inteligentes, y otras computadoras. Con más potencia de cálculo en dispositivos cada vez más pequeños, la eliminación del calor del microprocesador está comenzando a limitar la cantidad de energía que se puede comprimir en un espacio determinado.

Con las mejoras en la eficiencia y las velocidades de enfriamiento de este nuevo abordaje, el equipo prevé este fenómeno como una forma de quitar rápidamente el calor de los microprocesadores en los dispositivos. Incluso podría hacer frente a los maltratos sufridos por los teléfonos inteligentes, ya que los espaciadores a nanoescala podrían proporcionar el espacio entre el microprocesador y el LED.

La investigación se publicó en la revista Nature el 14 de febrero de 2019, titulada “Enfriamiento fotónico de campo cercano mediante el control del potencial químico de los fotones” (“Near-field photonic cooling through control of the chemical potential of photons.”).

Esta investigación fue apoyada por el Departamento de Energía y la Oficina de Investigación del Ejército. Los dispositivos se fabricaron en la Instalación de Nanofabricación Lurie de la UM. Meyhofer también es profesor de ingeniería biomédica. Reddy también es profesor de ciencia de materiales e ingeniería.

Fuente de la historia:

Materiales proporcionados por la Universidad de Michigan.

Referencia de la publicación:

Linxiao Zhu, Anthony Fiorino, Dakotah Thompson, Rohith Mittapally, Edgar Meyhofer y Pramod Reddy. Near-field photonic cooling through control of the chemical potential of photons. Nature, 2019 DOI: 10.1038/s41586-019-0918-8

Universidad de Michigan. ScienceDaily, febrero de 2019. www.sciencedaily.com/releases/2019/02/190213132326.htm.


Módulo de teclado sensible al tacto TTP229

Este teclado de 16 teclas se conecta utilizando una conexión I2C (2-Wire), aunque en el chip sensor capacitivo TTP229 tiene implementada la opción de conectar solamente 8 teclas, que tienen salida directa en los pines del módulo. Son los pines marcados como OUT1 a OUT8. Las líneas marcadas SDO y SCL pertenecen a la interfaz I2C.

Características

■ Fácil de usar, calibración automática
■ LED de encendido
■ Funciona en modo 8 o 16 canales.
■ La salida puede ser configurada como activa alta o baja
■ Simple para reemplazar salidas de llaves mecánicas
■ La salida se puede conectar directamente a los pines de entrada del microcontrolador

Especificaciones

■ Voltaje de funcionamiento: 2V-5,5V
■ Tiempo de calibración de inicio: 0,5 seg.
■ Tamaño de la plaqueta: 49,3 x 64,5mm

Este módulo es una buena alternativa para reemplazar teclados mecánicos, ya que es durable, fácil de instalar (es totalmente plano), se puede proteger con una membrana en ambientes de atmósfera corrosiva, y proporciona más durabilidad en condiciones de trabajo continuado.

Puentes que definen las opciones

(Ver las opciones definibles en la tabla abajo)

EJEMPLO:

Diagrama de pines del circuito integrado TTP229

El teclado se puede configurar tanto para usar con 8 teclas como con 16. Para el primer caso, parece poco razonable usar sólo la mitad, ya que en realidad se venden módulos directamente con sólo 8 teclas, y también con 4 y hasta con una sola.

En todo caso, la división de funciones, y la multiplicidad de opciones que se pueden elegir usando una serie de puentes en la plaqueta aportan amplia funcionalidad y una buena adaptación para distintos usos.

Cuando se elige la opción de 16 teclas, se los lee por medio de una interfaz serie de 2 vías, llamada comúnmente 2-Wire en el mundo Arduino, o I2C.

Una vez conectado el hardware y descargando el código al Arduino, al pulsar los teclas se pueden observar los resultados en el Monitor Serie del IDE Arduino.

Diagrama en bloques del circuito integrado TTP229

Diagrama del módulo de teclado TTP229

PROGRAMAS DE PRUEBA

Conexión directa de las salidas de 8 teclas

Si en alguna ocasión se necesita utilizar sólo la serie de teclas del 1 a 8, la configuración y la lectura por programa es más sencilla y simple de entender. La conexión involucra 8 pines del conector del módulo de teclado al Arduino, y dos más de ellas para alimentación +5 y GND.

Esta forma de uso tiene la desventaja de que ocupa muchas entradas digitales (que nunca sobran), aunque la ventaja es que no necesariamente se debe usar un Arduino u otro microcontrolador para recibir datos desde el módulo si se lo usa con esta configuración. Podría servir para introducir órdenes de teclado en un circuito puramente digital, sin procesador ni programa.

Diagrama de conexiones con Arduino

Código simple para 8 teclas

Resultado en Monitor Serie




Conexión para leer las 16 teclas

Para leer los teclas del 1 a 16 se debe hacer a través de la interfaz serie I2C o 2-Wire del Arduino, utilizando SCL y SDO, y con dos pines digitales que uno elija y el programa adecuado, que en general es muy simple.

Conexión entre el Arduino y el teclado para el ejemplo de 16 teclas por I2C

Cablear como se muestra a continuación y además hacer un puente en el módulo del teclado para configurarlo para funcionar con 16 teclas, sobre los puntos marcados “TP2”, que se muestran abajo en naranja.

Esto se hace soldando un alambrecito que una estos 2 terminales.

Diagrama de la conexión con Arduino

Código para la lectura de 16 teclas

Resultado en Monitor Serie

Lectura de 16 teclas con posibilidad de pulsar más de una a la vez

Como en cada caso en que se habilitan 16 teclas, la comunicación con el microcontrolador se realiza por medio del protocolo I2C. Cada tecla está asociada a un bit en un entero sin signo de dos bytes.

Estos son algunos ejemplos:

La tecla 1 aparecerá como 0000 0000 0000 0001
La tecla 2 aparecerá como 0000 0000 0000 0010
La tecla 3 aparecerá como 0000 0000 0000 0100
… …
La tecla 9 aparecerá como 0000 0001 0000 0000
La tecla 12 aparecerá como 0000 1000 0000 0000
La tecla 16 aparecerá como 1000 0000 0000 0000

Cuando se tocan dos o más teclas, el entero asociado contendrá dos bits o más en 1. Por ejemplo, si se pulsan la tecla 1 y la 16 al mismo tiempo, el entero asociado será 1000 0000 0000 0001

Conexiones:

Los pines TP0 a TP4 en el teclado se deben conectar (hacer un puente) como en la figura siguiente:

Diagrama de conexión con el Arduino:

Código para 16 teclas – multitecla – interfaz 2-wire:

En la Terminal Serie del IDE de Arduino se verá lo que sigue al pulsar las teclas desde 1 a 16 (Nota: debido a la manera en que la función Serial.println maneja las variables, el Monitor Serie no muestra los ceros a la izquierda del entero de 16 bits):

Para este ejemplo: PDFs de ayuda (en inglés) desde el siguiente enlace:
http://osoyoo.com/driver/TTP229.rar

Se puede descargar el programa INO (con textos en inglés) desde el siguiente enlace:
http://osoyoo.com/wp-content/uploads/2016/07/TTP229_all.rar


LSM6DSOX: acelerómetro y giroscopio con aprendizaje automático incorporado

STMicroelectronics acaba de lanzar su último circuito integrado sensor, el LSM6DSOX, que proporciona datos del sensor sobre la aceleración y la orientación. Además, también puede procesar estos datos mediante aprendizaje automático sin ninguna entrada externa del microcontrolador.

El LSM6DSOX es un encapsulado SiP (sistema empaquetado en un chip) de 2,5 mm x 3 mm x 0,83 mm.

Un SiP es un sistema o subsistema electrónico funcional que incluye dos o más matrices semiconductoras heterogéneas (a menudo de nodos de tecnología diferentes optimizados para sus funcionalidades individuales), generalmente con componentes pasivos. La forma física del SiP es un módulo y, dependiendo de la aplicación final, el módulo podría incluir un chip lógico, memoria, dispositivos pasivos integrados (IPD), filtros de RF, sensores, disipadores de calor, antenas, conectores y/o chip de potencia.

La creciente complejidad de los dispositivos de gama baja está dando lugar a una nueva forma de procesamiento de datos. En lugar de que un controlador principal realice todo el trabajo pesado, los periféricos conectados pueden tener controladores integrados y DPS que pueden preprocesar sus propios datos antes de pasar al controlador principal, que puede descargar el trabajo del controlador principal, lo que ahorra energía. Un ejemplo de esto es el LSM6DSOX, el último módulo inercial de ST que tiene capacidades de aprendizaje automático.

El LSM6DSOX

El LSM6DSOX es un acelerómetro 3D y un giroscopio 3D siempre encendidos. Se puede acceder al sensor a través de SPI e I2C, así como al último estándar de la industria, I3C. El sensor es compatible con Android para la integración con sistemas Android (como tablets y teléfonos).

También incorpora detección significativa de movimiento y detección de inclinación. El movimiento de inclinación incorporado en el sensor es capaz de desencadenar eventos durante los cambios de inclinación. Por ejemplo, un evento puede activarse cuando un usuario tiene su teléfono en el bolsillo y se levanta después de haberse sentado. Esta detección de inclinación se realiza todo en hardware sin la necesidad de un controlador, lo que puede reducir en gran medida el trabajo de potencia y descarga de un procesador.

Núcleo de aprendizaje automático en el LSM6DSOX

Sin embargo, la verdadera magia detrás del LSM6DSOX es el sistema interno de aprendizaje automático. El núcleo de aprendizaje automático, realizado mediante una serie de condiciones “si-luego-si no”, permite la identificación de tareas específicas, como caminar, correr y conducir, que son programables por el usuario.

Con hasta 256 nodos disponibles, el núcleo de aprendizaje automático puede ejecutar hasta ocho flujos simultáneamente y cada flujo puede generar hasta 16 resultados. El sensor también puede tener en cuenta sensores externos con el uso de un núcleo de sensores (Sense Hub), por donde otros sensores pueden enviar sus datos al LSM6DSOX.

Conexión de sensores externos al LSM6DSOX

“El aprendizaje automático ya se usa para el reconocimiento rápido y eficiente de patrones en redes sociales, modelos financieros o manejo autónomo”, dijo Andrea Onetti, vicepresidente de analógicos, MEMS y sensores del Grupo STMicro. “El sensor de movimiento LSM6DSOX integra capacidades de aprendizaje automático para mejorar el seguimiento de la actividad en teléfonos inteligentes y dispositivos portátiles”.





Especificaciones:

Cápsula de 2,5 mm x 3 mm x 0,83 mm
Consumo de energía de 0,55 mA.
FIFO (First In First Out = acrónimo que significa “primero en entrar, primero en salir”) de hasta 9KB
±2 / ±4 / ±8 / ±16 g escala completa
±125 / ±250 / ±500 / ±1000 / ±2000 dps (degrees per second, grados por segundo) escala completa

La integración de controladores pequeños y de baja potencia en los periféricos da paso a un cambio en la forma en que se diseña el hardware. Al descargar la mayor cantidad de trabajo posible de un procesador principal (que puede no ser el hardware con mayor ahorro de energía), los dispositivos podrían ver un mayor rendimiento con datos preprocesados y una mayor duración de la batería.

Un robot que procura moverse tan bien como una hormiga

Los insectos en general son infaliblemente impresionantes por lo inteligentes y capaces que son, con un mínimo absoluto de detección y poder de cómputo. Cuando las cosas empiezan a ponerse realmente interesantes es cuando los insectos tienen que volverse inteligentes para manejar entornos especialmente difíciles. Las hormigas del desierto son un gran ejemplo de esto: mientras que la mayoría de las hormigas dependen de los senderos de las feromonas para navegar (recorren los senderos de su olor para regresar al nido), el calor del desierto significa que las feromonas no duran mucho. En cambio, las hormigas del desierto se basan en una variedad de técnicas, que incluyen el conteo de pasos, el flujo óptico, los puntos de referencia y, especialmente, la navegación solar.

Parece que estas técnicas podrían ser útiles para los robots pequeños y económicos que exploran el sistema solar, donde el GPS no está disponible y los sensores sofisticados vienen con un presupuesto de masa y energía para igualar. En Science Robotics, los investigadores describen cómo construyeron un robot con herramientas de navegación inspiradas en las hormigas del desierto, y pudieron hacer que deambulara un poco y que encontrara su camino a casa sin GPS, SLAM o algo un poco más complejo.

Lo primero que hay que entender es cómo navegan las hormigas del desierto. En general, el sistema que utilizan se denomina “integración de ruta”, que es esencialmente el mismo que llamaríamos “recuento muerto”. Al hacer un seguimiento de las distancias y direcciones recorridas en el tiempo, las hormigas pueden calcular la ruta más directa hacia atrás. a donde empezaron

Básicamente, si la hormiga se dirige al norte por un tiempo, y luego al este por el doble de tiempo, sabe que al viajar al sur y al oeste (el doble de largo), terminará bastante cerca de su posición inicial, y una vez que esté cerca, Puede reconocer visualmente puntos de referencia para volver exactamente a su nido.

Las hormigas del desierto son notablemente buenas en esto, como lo muestra la siguiente figura. Después de un viaje de ida y vuelta de casi 600 metros a lo largo de unos 20 minutos, la hormiga de un centímetro de longitud puede trazar una línea más o menos exactamente recta directamente a su nido en solo seis minutos.

Imagen: Aix Marseille University / CNRS / ISM Una hormiga del desierto C. fortis usa la “integración del camino” para encontrar su camino de regreso a su nido. La línea delgada muestra la trayectoria de salida (592.1 metros), con pequeños puntos negros que representan marcas de tiempo (cada 60 segundos). La hormiga regresó directamente a su nido (línea gruesa, 140.5 m de largo). El círculo pequeño (abajo a la derecha) marca la entrada del nido, y el negro grande muestra la ubicación de alimentación (centro superior).

Para que la integración del camino funcione, la hormiga debe rastrear dos cosas separadas: la distancia y la dirección. La distancia es la más fácil por mucho, ya que la hormiga puede usar una combinación (muy familiar para los robots) de conteo de zancadas y flujo óptico. La dirección es complicada: es bien sabido que las hormigas y otros insectos pueden usar el Sol para navegar, rastrear su ubicación en el cielo y corregir la rotación de la Tierra y el consiguiente movimiento aparente del Sol a lo largo del tiempo. Esto solo funcionaría cuando está realmente soleado, excepto que los ojos de las hormigas tienen fotorreceptores que son sensibles a la luz polarizada, lo que puede indicar la dirección del Sol, incluso si está nublado. Las hormigas también son sensibles a los rayos UV, lo que les ayuda a ver el Sol a través de la capa de nubes y el follaje.

Imagen: Aix Marseille University / CNRS / ISMAntBot es manejado por una placa Raspberry Pi 2B y sus sensores incluyen una brújula celeste, IMU y sensor de flujo óptico.

AntBot es un intento de replicar los sistemas de detección de las hormigas del desierto para ver qué tan bien un sistema autónomo podría usarlas para la navegación inspirada en las hormigas. AntBot es un hexápodo de 2,3 kilogramos, cuyas especificaciones físicas específicas no son realmente tan importantes para los fines de esta investigación. Lo que es importante son los sensores de AntBot, que incluyen un sensor óptico de flujo bioinspirado y una “brújula celeste inspirada en insectos” que consiste en un par de sensores de luz UV con polarizadores lineales giratorios. La brújula analiza la relación logarítmica entre los datos de estos dos sensores para determinar el ángulo de polarización de la luz entrante, que utiliza para determinar dónde está el Sol y, por lo tanto, en qué dirección está apuntando. AntBot puede hacerlo con mucha precisión: El error mediano fue de solo 0,02 ° cuando el cielo estaba ligeramente nublado, 0,59 ° bajo un cielo nublado.

Al combinar el seguimiento de la distancia del flujo óptico, el conteo de pasos y la navegación celeste al igual que la hormiga del desierto, probablemente no le sorprenda saber que AntBot pudo deambular repetidamente al azar en una distancia de unos 14 metros y luego regresar con éxito a su punto de partida. Esto es bueno, pero AntBot aún tiene mucho trabajo por hacer para demostrar que es tan talentoso como una hormiga, como señalan los investigadores:

“En su forma actual, AntBot tiene un diámetro de 45 cm y caminó a una velocidad de unos 10 cm/s durante los experimentos, mientras que las hormigas C. fortis desert tienen solo 1 cm de largo. Como se muestra en la Fig. 1A, la trayectoria de la hormiga mide 732,6 m. Por lo tanto, AntBot debería haber cubierto más de 32 km para poder compararlo adecuadamente con el rendimiento de navegación de las hormigas. Aunque AntBot puede caminar a velocidades de hasta 90 cm s, la navegación a gran escala requerirá mejorar los actuadores y la fuente de alimentación del robot hexápodo. Estas mejoras permitirán probar el modo PI-Full en contextos más naturales, como los terrenos escarpados en un entorno saturado (bosques) donde la vista del cielo a menudo está inhibida por la presencia de ramas y hojas en el campo visual de la brújula celeste.”

Es posible que los insectos hayan sido los primeros en descubrir este truco de luz polarizada, pero es posible que los humanos hayan estado usando una técnica similar para ayudarlos a navegar durante siglos. Hay algunas pruebas que sugieren que los vikingos (así como las culturas marineras posteriores que probablemente tuvieron la idea de los vikingos) podrían haber confiado en la luz polarizada para encontrar la ubicación del sol bajo un cielo cubierto usando una piedra solar, una de una pequeña cantidad de minerales que son birrefringentes. Los minerales birrefringentes son polarizadores, y cuando la luz entra en ellos, se divide en dos rayos que toman diferentes caminos a través de la piedra dependiendo de donde la fuente de luz es relativa a la piedra. Al mirar a través de la piedra hacia el cielo, es posible usar la birrefringencia para determinar dónde está el Sol con una precisión de unos pocos grados, incluso si está completamente nublado, o si el Sol está por debajo del horizonte. Todo lo que se necesita es un poco de luz solar, y una piedra solar funcionará.




El mineral birrefringente más común es la calcita, y los vikingos habrían tenido acceso a eso. Algunas leyendas vikingas se refieren directamente a las piedras solares, y las simulaciones han demostrado que el uso de una piedra solar podría haber tenido un gran impacto en la capacidad de los vikingos para realizar viajes prolongados a través del océano abierto. Los barcos vikingos y los sitios de entierro no han producido mucha calcita, pero es más frágil que los minerales y no necesariamente duraría tanto tiempo bajo el agua o en el suelo. Y si no terminaron usando algo como esto para navegar, bueno, realmente deberían haberlo hecho, porque tanto las hormigas como los robots están obteniendo grandes resultados con eso.

“AntBot: A six-legged walking robot able to home like desert ants in outdoor environments”
(“AntBot: un robot andante de seis patas capaz de vivir como hormigas del desierto en ambientes al aire libre”)
, por J. Dupeyroux; JR Serres; S. Viollet en la Universidad Aix de Marsella en Marsella, Francia, aparece en la edición actual de Science Robotics.


Comprendiendo Variables al programar en C

Este es un análisis de la naturaleza y el uso de las variables en lenguaje C en el contexto de las aplicaciones para microcontroladores

Muchos de nosotros escuchamos la palabra “variable” en las clases de matemáticas mucho antes de saber mucho, si es que sabemos algo, acerca de la programación de computadoras. Una variable matemática es una cantidad cuyo valor no se conoce o no se limita a un número. Este uso es similar, aunque no idéntico, al concepto de una variable C.

Dos diferencias importantes: primero, en matemáticas, usualmente usamos una letra como x o y para representar una variable, mientras que en C usamos frecuentemente una palabra o frase descriptiva como contadorPulsos, velocidadMedia o cantidadVueltas. En segundo lugar, hay situaciones en las que usamos una variable de C para identificar una cantidad conocida y que no se pretende que cambie del valor original.

Variables en hardware

Las variables son convenientes e intuitivas para los programadores. Para el hardware computacional, por otro lado, no tienen un significado real. Los microprocesadores almacenan datos en registros y ubicaciones de memoria. Esta diferencia fundamental entre las personas que escriben el idioma de máquina y las máquinas que ejecutan este programa se supera mediante lenguajes de alto nivel como C, que maneja varios detalles asociados con la traducción entre variables basadas en texto y la realidad física de un procesador.

Los diseñadores de sistemas integrados trabajan a menudo con procesadores de 8 bits. En estos dispositivos, por lo general, el tamaño fundamental de los datos es un byte. La memoria se organiza de acuerdo con los bytes, el tamaño de los registros es de un byte y la CPU está diseñada para procesar datos de 8 bits. Esta es una limitación bastante incómoda porque hay muchas situaciones en las que el valor de una variable excederá el valor máximo de un número de 8 bits.

Finalmente, todas las variables C cuidadosamente definidas y con un nombre ilustrativo terminan como bits en la memoria (o registros)

El lenguaje C no limita el tamaño de una variable a 8 bits, incluso cuando está trabajando con un procesador de 8 bits. Esto significa que una variable en el programa en lenguaje de máquina que ejecuta el microprocesador puede corresponder a múltiples registros o ubicaciones de memoria en el hardware. “Manualmente” administrar variables de múltiples bytes (es decir, a través del lenguaje ensamblador) no parece muy deseable, pero a los compiladores no les importa en absoluto, y hacen el trabajo muy bien.

Definiendo variables

El primer paso para usar una variable es definir esa variable. Los componentes esenciales de una definición de variable son el tipo y el nombre.

Hay muchos tipos de variables; La lista completa, así como los detalles de la implementación del hardware, variarán según el compilador que esté utilizando. Aquí hay unos ejemplos:

char : un valor con signo de un byte
int : un valor con signo de dos o cuatro bytes
long : un valor con signo de cuatro bytes
float : un valor de cuatro bytes que puede tener números después del punto decimal; en otras palabras, no está limitado a enteros
bit : el valor de la variable puede ser cero o uno

Esta es una representación visual de cómo una serie de bits se interpreta de manera diferente en función de si una variable se considera con signo (utilizando la notación de complemento a dos) o sin signo:

El siguiente código muestra definiciones de variables que consisten solo en un tipo básico y un nombre (la forma más técnica de referirse al nombre es “identificador”):

Inicializando variables

En muchos casos, es una buena idea darle un valor inicial a una variable. Esto facilita la depuración y es esencial si la variable se utilizará antes de que le fije un valor conocido. Puede inicializar una variable en la definición, o en otra parte de su código, pero incluir el valor inicial en la definición es una buena manera de mantener el código organizado y desarrollar el hábito de inicializar siempre que sea necesario.

Aquí hay ejemplos de definiciones de variables que incluyen una inicialización:

Definiciones de variables delicadas

Hay varias otras palabras que se pueden incluir en una definición de variable. Estos se utilizan para especificar con mayor precisión la naturaleza de la variable o para dar instrucciones al compilador sobre cómo implementar la variable en el hardware.

Las siguientes palabras clave podrían ser útiles en sus proyectos de programa para microcontroladores:

■ unsigned : como habrá adivinado, esto le dice al compilador que interprete la variable como un valor sin signo en lugar de un valor con signo. Uno defino le mayoría de sus variables como sin signo, porque rara vez se necesitan números negativos.

■ const : el calificador de tipo const indica al compilador que el valor de una variable no debe cambiar. Como dice al principio del artículo, a veces el valor de una “variable” C no es variable. Si usted comete un error en su código e intenta modificar el valor de una variable const, el compilador generará un error.

■ volatile : los compiladores sofisticados no solo toman su código original y lo traducen directamente al lenguaje de máquina. También intentan hacer que el código funcione de manera más eficiente, y este proceso se conoce como “optimización”. En general, la optimización es algo bueno. Sin embargo, de vez en cuando, puede arruinar el día, porque el compilador se optimiza solo en función del código y no puede tener en cuenta los eventos de hardware que interactúan con el código. Cuando una variable tiene el calificador de tipo volátil, el compilador sabe que debe tener cuidado con las optimizaciones relacionadas con esa variable.

Una interrupción puede hacer que el valor de una variable se modifique de una manera que el compilador no espera, y esto puede llevar a una optimización problemática

■ tipos de memoria, como xdata , idata y code : estas palabras obligan al compilador a ubicar una variable en una parte específica de la memoria del microprocesador. El tipo que aloja en la memoria de programa es particularmente útil: los recursos de RAM en un microcontrolador a menudo son mucho más limitados que la memoria de programa no volátil, y el tipo de memoria de código le permite utilizar memoria de programa adicional para almacenar datos que se usan en su programa pero nunca se modifican.

Aquí hay unos ejemplos:

Uso de las variables

No hay mucho que decir acerca de cómo usar sus variables después de que se hayan definido. En realidad, con respecto a la variable en sí, la definición es la mayor parte del trabajo. Después de eso, usted simplemente incorpora el identificador de la variable en operaciones matemáticas, bucles, llamadas a funciones, etc. Un buen compilador no solo manejará los detalles de la implementación del hardware, sino que también buscará formas de optimizar el código con respecto a la velocidad de ejecución o el tamaño del programa.

Quizás el error más común relacionado con el uso variable es un desbordamiento. Esto se refiere a una situación en la que el valor asignado a una variable está fuera del rango numérico asociado con el tipo de datos de la variable.

Se debe pensar en todos los escenarios posibles relacionados con una variable determinada y luego elegir el tipo de datos en consecuencia.

Resumen

La funcionalidad de la variable básica proporcionada por el lenguaje C es intuitiva y directa, pero hay algunos detalles que pueden ayudarlo a hacer que una aplicación integrada sea más confiable y eficiente. Si tiene alguna duda relacionada con las variables de C, no dude en preguntar en nuestro grupo en Facebook Robots Didácticos.