Uso de un sensor de inclinación para diseñar un nivel de burbuja para personas con discapacidad visual

Resumen

Este artículo describe el diseño completo de un nivel de burbuja para personas con problemas de visión. Utiliza un acelerómetro ADXL312 para medir la fuerza gravitacional en los planos horizontal y vertical y suena un zumbador cuando el acelerómetro está exactamente horizontal o vertical.

También se puede usar como sensor de inclinación para nivelar, por ejemplo, remolques en aplicaciones automotrices donde el nivel de burbuja podría estar ubicado en un lugar alejado de la rueda jockey. También tiene usos como subcircuito en sistemas de estabilidad de automóviles o drones.

Introducción

Amar Latif está causando revuelo en la escena culinaria del Reino Unido después de haber aparecido en MasterChef famoso. Sin embargo, Amar no solo es un buen cocinero, sino que también dirige su propia compañía de viajes, es un orador motivacional, ha recorrido la mayor parte de América del Sur y también es una personalidad de la televisión. ¿No hay fin a los superpoderes de este hombre?

Lamentablemente, lo hay. Amar es 95% ciego. A medida que avanza la tecnología y el mundo se esfuerza por mantenerse al día, para las personas con discapacidad visual la batalla es aún más difícil. La mayoría de los avances tecnológicos requieren que pasemos más tiempo frente a una pantalla. Para las personas con discapacidad visual, el tiempo excesivo frente a la pantalla sigue siendo un "si tan solo".

Si la tecnología se puede utilizar para enriquecer las vidas de las personas con discapacidad visual, esto solo puede ser algo bueno. Dado que solo el 18% de la población ciega registrada es completamente ciega (o "ciega negra"), esto deja a la gran mayoría con al menos algo de vista, incluso si no pueden distinguir los detalles. Así nació la idea de un nivel de burbuja para ciegos.

esquema de diseño

El diseño del sensor de inclinación se basó en el ADXL312, que es un acelerómetro de baja corriente que puede medir hasta ±1,5 gramo en los ejes x, y y z con los datos leídos a través de un bus SPI. La pieza está disponible en un paquete de 5 mm × 5 mm y consume 0,1 μA en modo de espera. Mide con una resolución de 10 bits, por lo que el ADXL312 puede detectar cambios tan bajos como ±2,9 mg en cada eje. El ADXL312 almacena los datos gravitacionales de cada eje como un valor de complemento a dos hasta ±511, que el microcontrolador lee y muestra en una pantalla LCD de 16 caracteres de una sola línea. La figura 1 muestra los ejes de detección del ADXL312.

Figura 1. Ejes de detección del ADXL312.

La parte tiene una lectura de escala completa en 1.5 gramoentonces una fuerza gravitatoria de 1 gramo da una lectura de ⅔ de esto. Por lo tanto, si el ADXL312 está exactamente nivelado, el registro del eje z debería leer ⅔ de la escala completa, mientras que los ejes x e y deberían leer cero. De manera similar, cuando el ADXL312 está perfectamente vertical, la lectura del eje x debe ser ⅔ de la escala completa, mientras que los ejes y y z deben leer cero. Si el ADXL312 comienza a inclinarse alejándose de cualquier eje, la lectura máxima comienza a disminuir mientras que la lectura en los otros ejes comienza a aumentar, según el seno del ángulo de inclinación.

Dentro del ADXL312

El ADXL312 es un sistema microelectromecánico (MEMS) que consta de una estructura micromecanizada de superficie de polisilicio construida sobre una oblea de silicio. Los resortes de polisilicio suspenden la estructura sobre la superficie de la oblea y brindan resistencia contra las fuerzas de aceleración.

Los dedos fijos de silicio se intercalan con los dedos en una masa de prueba en movimiento para crear condensadores diferenciales cuyas características se pueden medir. La aceleración desvía el haz y desequilibra los capacitores diferenciales, lo que da como resultado una salida del sensor cuya amplitud es proporcional a la aceleración. La estructura se muestra en la Figura 2.

Figura 2. El funcionamiento interno del ADXL312.

El ADXL312 se puede direccionar usando I2C o SPI, y los datos x, y y z se almacenan en seis registros internos de 8 bits. También tiene muchas otras características que incluyen un FIFO de 32 niveles, dos interrupciones multifunción, registros de compensación, una autocomprobación mecánica y modos de suspensión automática.

El diseño del nivel de burbuja

El diagrama de circuito completo del sensor de inclinación se muestra en la Figura 3.

Figura 3. El esquema completo del nivel de burbuja para invidentes.

El ADXL312 tiene una tensión de alimentación máxima de 3,6 V, mientras que la pantalla LCD y el zumbador requieren 5 V, por lo que la entrada principal al circuito es de 5 V, y se regula a la baja mediante un regulador lineal de 3,3 V, 150 mA (ADP121) para alimenta el ADXL312, el microcontrolador y la memoria E2.

El pin 2 del puerto B (el pin CAL) en el microcontrolador es elevado por una resistencia de 10 kΩ. También dispone de un puente que permite su conexión a tierra. En el arranque, el microcontrolador interroga el estado del pin CAL, y si el puente baja este pin, lee los registros x, y y z, resta estas lecturas de cero y luego carga el resultado en los registros de compensación dentro el ADXL312 y los almacena en la memoria externa E2, la 25AA040. El ADXL312 agrega automáticamente las lecturas de los registros de compensación a cualquier medición futura sin interacción del procesador, eliminando así las compensaciones calibradas.

Si se quita el puente, el pin CAL se eleva y se omite la rutina de calibración. Las lecturas de compensación se leen directamente de la memoria E2 y se cargan en los registros de compensación del ADXL312. Por lo tanto, durante la fabricación, el nivel de burbuja se puede montar en una plantilla de calibración con el pin CAL mantenido bajo, el dispositivo se puede calibrar y los valores de compensación se almacenan en la memoria E2. Después de la calibración, se retira el puente y, en los encendidos posteriores, se interroga la memoria E2 y las lecturas de compensación calibradas se cargan en los registros de compensación del ADXL312.

Luego, el software realiza ocho lecturas de cada eje, y los resultados se promedian y luego se muestran en la pantalla LCD de 16 caracteres. La pantalla se actualiza cada 100 ms.

La figura 4 muestra que la sensibilidad máxima se logra cuando cada sensor está cerca de su lectura cero. Aquí es donde la pendiente de la onda sinusoidal es más pronunciada, dando así el cambio máximo en la lectura de la gravedad para cualquier cambio en la inclinación.

Figura 4. Muestra el cambio sinusoidal de la fuerza g con el ángulo.

Afortunadamente, el nivel de burbuja solo necesita medir la inclinación cuando cada sensor está perfectamente horizontal y la lectura del sensor es cercana a cero.

El software se escribió para permitir que los ejes x y z se calibraran a la vez. Es fácil colocar la pieza en una plataforma horizontal y calibrar el eje x del sensor de inclinación. Sin embargo, en este punto el eje z experimentará una fuerza de 1 gramopor lo que se debe tomar la lectura z, en comparación con el conteo de escala completa en 1 gramo, y cualquier error cargado en el registro de compensación. Se puede lograr una calibración más precisa de cada eje del sensor de inclinación calibrando tanto en el plano horizontal como en el vertical, pero esto requiere una calibración en dos etapas y una modificación del software.

La Tabla 1 muestra un ejemplo de datos de complemento a dos. Los números positivos siguen la notación binaria convencional. Los números negativos utilizan el bit más significativo (MSB) como bit de signo; así, los números positivos tienen un MSB igual a cero y los números negativos tienen un MSB igual a 1.

Tabla 1. Un ejemplo de datos de complemento a dos
Decimal Binario
+511 01 1111 1111
+1 00 0000 0001
0 00 0000 0000
-1 11 1111 1111
-511 10 0000 0001

El complemento a dos de un número positivo se puede encontrar invirtiendo todos los bits y luego sumando 1. Por lo tanto, el código cambia de 00 0000 0000 a 11 1111 1111 al pasar de una cuenta de cero a una cuenta de –1.

El software lee los registros x y z y, si el valor de cualquiera de los registros es 0 o 1023 (11 1111 1111), establece el puerto B, bit 5 en alto, lo que enciende el transistor Q1 y hace sonar el zumbador de 5 V. Cuando el sensor de inclinación está perfectamente horizontal, el eje x tiene una lectura de 0 o 1023 y cuando está perfectamente vertical, el eje z tiene una lectura de 0 o 1023. Solo cuando ambos registros no son iguales a 0 o 1023 el zumbador deja de sonar.

Precisión y desarrollos posteriores

Considerando un solo eje, una lectura máxima de 1 gramo se alcanza cuando la gravedad actúa a lo largo de ese eje, y esta lectura se reduce a 0 gramo mientras la pieza se inclina 90° como se muestra en la Figura 5.

Figura 5. Cálculo del ángulo de inclinación utilizando la lectura gravitacional.

Por lo tanto, la fuerza gravitacional ejercida está dictada por la ecuación

ecuación1

donde Ø es el ángulo de inclinación medido con respecto a la horizontal. Si la pieza puede medir a una resolución de 2,9 mgramo, entonces puede resolverse en un ángulo de 0,17°. Es difícil determinar una cifra para la precisión de un nivel de burbuja estándar, ya que es difícil establecer la posición exacta de la burbuja. Sin embargo, según los experimentos, el extremo de un nivel de burbuja de 1,2 m puede moverse unos 3,2 mm (¡el ancho de dos PCB desocupadas!) antes de que la burbuja se vea descentrada. Esto equivale a un ángulo de aproximadamente 0,15°, lo que indica que podemos reemplazar un nivel de burbuja con un sensor de inclinación electrónico con poca pérdida de resolución.

Si se requiere más precisión, el ADXL313 ofrece una resolución de 11 bits sobre 1 gramo escala. La interfaz y los conjuntos de registros son muy similares a los del ADXL312, por lo que el software no requiere muchas modificaciones. El ADXL355 ofrece un ruido considerablemente menor y una resolución más alta.

El ADXL312 tiene una densidad de ruido de 340 μgramo/√Hz, y cuanto menor sea el ancho de banda, mejor será el ruido. El ancho de banda de la pieza es programable (de 3,125 Hz a 1600 Hz con un valor predeterminado de 50 Hz). Aunque reducir el ancho de banda mejora el ruido, esto también reducirá la velocidad de actualización de la pantalla. Para este diseño se fijó el ancho de banda en 6,25 Hz, lo que implica un ruido rms de 850 μgramo. El ruido también se puede reducir tomando muchas más lecturas y promediando.

Una mejora adicional sería tener una pantalla LCD que muestre los grados. Sin embargo, esto requiere el uso de funciones matemáticas en la biblioteca C si se van a incluir senos y cosenos en el software. Estas funciones ocupan demasiado espacio de código para un microcontrolador de gama baja. Se puede lograr una aproximación cercana a una función seno utilizando la expansión de la serie de Taylor, y esto debería ocupar considerablemente menos espacio de código.

Conclusión

El ADXL312 proporciona un sistema de medición de inclinación electrónico de bajo costo que es fácil de conectar a un microcontrolador de gama baja. El diseño descrito anteriormente ha demostrado que puede competir con la precisión de los niveles de burbuja convencionales, pero con una interfaz electrónica. Esto permite que se use como un subsistema en diseños más grandes que necesitan medir la inclinación, como sistemas de nivelación de remolques, sistemas de control de estabilidad y drones.

Más importante aún, se puede utilizar para aumentar la independencia de las personas con discapacidad visual, y este texto muestra un diseño completo a nivel de sistema que incluye hardware, software y memoria no volátil, así como una salida de audio y visual.

Si quieres conocer otros artículos parecidos a Uso de un sensor de inclinación para diseñar un nivel de burbuja para personas con discapacidad visual puedes visitar la categoría Generalidades.

¡Más Contenido!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir