Tabla de contenido:

Magnetómetro Arduino: 5 pasos (con imágenes)
Magnetómetro Arduino: 5 pasos (con imágenes)

Video: Magnetómetro Arduino: 5 pasos (con imágenes)

Video: Magnetómetro Arduino: 5 pasos (con imágenes)
Video: 5 Proyectos Tecnológicos INCREÍBLES hechos con ARDUINO - Puedes hacerlos en PANAMÁ 2024, Septiembre
Anonim
Magnetómetro Arduino
Magnetómetro Arduino

¿Qué estamos construyendo?

Los humanos no podemos detectar campos magnéticos, pero usamos dispositivos que dependen de imanes todo el tiempo. Los motores, las brújulas, los sensores de rotación y las turbinas eólicas, por ejemplo, requieren imanes para su funcionamiento. Este tutorial describe cómo construir un magnetómetro basado en Arduino que detecta el campo magnético usando tres sensores de efecto Hall. El vector de campo magnético en una ubicación se muestra en una pantalla pequeña mediante proyección isométrica.

¿Qué es un Arduino?

Un Arduino es un pequeño microcontrolador de código abierto fácil de usar. Tiene pines de entrada y salida digitales. También tiene pines de entrada analógica, que son útiles para leer la entrada de los sensores. Hay diferentes modelos de Arduino disponibles. Este tutorial describe cómo utilizar Arduino Uno o Arduino MKR1010. Sin embargo, también se pueden utilizar otros modelos.

Antes de comenzar este tutorial, descargue el entorno de desarrollo de Arduino, así como las bibliotecas necesarias para su modelo en particular. El entorno de desarrollo está disponible en https://www.arduino.cc/en/main/software, y las instrucciones de instalación están disponibles en

¿Qué es un campo magnético?

Los imanes permanentes ejercen fuerzas sobre otros imanes permanentes. Los cables portadores de corriente ejercen fuerzas sobre otros cables portadores de corriente. Los imanes permanentes y los cables conductores de corriente también ejercen fuerzas entre sí. Esta fuerza por unidad de corriente de prueba es un campo magnético.

Si medimos el volumen de un objeto, obtenemos un solo número escalar. Sin embargo, el magnetismo se describe mediante un campo vectorial, una cantidad más complicada. Primero, varía con la posición en todo el espacio. Por ejemplo, es probable que el campo magnético a un centímetro de un imán permanente sea mayor que el campo magnético a diez centímetros de distancia.

A continuación, el campo magnético en cada punto del espacio se representa mediante un vector. La magnitud del vector representa la fuerza del campo magnético. La dirección es perpendicular tanto a la dirección de la fuerza como a la dirección de la corriente de prueba.

Podemos imaginar el campo magnético en un solo lugar como una flecha. Podemos imaginar el campo magnético en todo el espacio mediante una matriz de flechas en diferentes lugares, posiblemente de diferentes tamaños y apuntando en diferentes direcciones. Una buena visualización está disponible en https://www.falstad.com/vector3dm/. El magnetómetro que estamos construyendo muestra el campo magnético en la ubicación de los sensores como una flecha en la pantalla.

¿Qué es un sensor de efecto Hall y cómo funciona?

Un sensor de efecto Hall es un dispositivo pequeño y económico que mide la fuerza del campo magnético a lo largo de una dirección particular. Está hecho de una pieza de semiconductor dopado con exceso de cargas. La salida de algunos sensores de efecto Hall es un voltaje analógico. Otros sensores de efecto Hall tienen un comparador integrado y producen una salida digital. Otros sensores de efecto Hall están integrados en instrumentos más grandes que miden el caudal, la velocidad de rotación u otras cantidades.

La física detrás del efecto Hall se resume en la ecuación de fuerza de Lorentz. Esta ecuación describe la fuerza sobre una carga en movimiento debido a un campo eléctrico y magnético externo.

Imagen
Imagen

La siguiente figura ilustra el efecto Hall. Suponga que queremos medir la fuerza del campo magnético en la dirección de la flecha azul. Como se muestra en la parte izquierda de la figura, aplicamos una corriente a través de una pieza de semiconductor perpendicular a la dirección del campo a medir. La corriente es un flujo de cargas, por lo que una carga en el semiconductor se mueve con cierta velocidad. Esta carga sentirá una fuerza debido al campo externo, como se muestra en la parte central de la figura. Las cargas se moverán debido a la fuerza y se acumularán en los bordes del semiconductor. Las cargas se acumulan hasta que la fuerza debida a las cargas acumuladas equilibra la fuerza debida al campo magnético externo. Podemos medir el voltaje a través del semiconductor, como se muestra en la parte derecha de la figura. El voltaje medido es proporcional a la fuerza del campo magnético, y está en la dirección perpendicular a la corriente y la dirección del campo magnético.

Imagen
Imagen

¿Qué es la proyección isométrica?

En cada punto del espacio, el campo magnético se describe mediante un vector tridimensional. Sin embargo, nuestra pantalla de visualización es bidimensional. Podemos proyectar el vector tridimensional en un plano bidimensional para poder dibujarlo en la pantalla. Hay varias formas de lograr esto, como proyección isométrica, proyección ortográfica o proyección oblicua.

En la proyección isométrica, los ejes x, y, z están separados 120 grados y parecen igualmente acortados. Se puede encontrar información adicional sobre la proyección isométrica, así como las fórmulas necesarias, en la página de Wikipedia sobre el tema.

Paso 1: Reúna los suministros

Arduino y Cable

El Arduino es el cerebro del magnetómetro. Estas instrucciones describen cómo utilizar un Arduino Uno o un Arduino MKR1010. En cualquier caso, se necesita un cable para conectarlo a la computadora.

Opción 1: Cable Arduino Uno y USB AB

www.digikey.com/product-detail/en/arduino/A000066/1050-1024-ND/2784006

www.digikey.com/product-detail/en/stewart-connector/SC-2ABE003F/380-1424-ND/8544570

Opción 2: Arduino MKR1010 y cable microUSB

www.digikey.com/product-detail/en/arduino/ABX00023/1050-1162-ND/9486713

www.digikey.com/product-detail/en/stewart-connector/SC-2AMK003F/380-1431-ND/8544577

Pantalla TFT

TFT son las siglas de Thin Film Transistor. Esta pantalla de 1,44 contiene 128 por 128 píxeles. Es pequeña, brillante y colorida. Viene unida a una placa de conexión. Sin embargo, los pines del cabezal vienen separados, por lo que debe soldarlos. (La soldadura y el cautín son necesario.)

www.digikey.com/product-detail/en/adafruit-industries-llc/2088/1528-1345-ND/5356830

    Imagen
    Imagen
  • Sensores analógicos de efecto Hall

Se requieren tres sensores de efecto Hall. El siguiente enlace es para el número de pieza de Allegro A1324LUA-T. Para este sensor, el pin 1 es el voltaje de suministro, el pin 2 es tierra y el pin 3 es la salida. Otros sensores Hall también deberían funcionar, pero asegúrese de que sean analógicos, no digitales. Si usa un sensor diferente, verifique el pinout y ajuste el cableado si es necesario. (De hecho, usé un sensor diferente de la misma compañía para realizar pruebas. Sin embargo, el que usé está obsoleto y este sensor es su reemplazo).

www.digikey.com/product-detail/en/allegro-microsystems-llc/A1324LUA-T/620-1432-ND/2728144

Placa de pruebas pequeña y alambre

www.digikey.com/product-detail/en/adafruit-industries-llc/239/1528-2143-ND/7244929

Imanes permanentes para pruebas

Los imanes de refrigerador funcionarán bien.

Paso 2: cableado

Alambrado
Alambrado

Suelde los encabezados en la pantalla.

Imagen
Imagen

Coloque los sensores en un extremo de la placa de pruebas y coloque la pantalla y Arduino en el extremo opuesto. La corriente en los cables del Arduino y la pantalla generan campos magnéticos que no queremos que los sensores lean. Además, es posible que deseemos colocar los sensores cerca de imanes permanentes, lo que podría afectar negativamente la corriente en los cables de la pantalla y el sensor. Por estas razones, queremos que los sensores estén lejos de la pantalla y Arduino. También por estas razones, este magnetómetro debe mantenerse alejado de campos magnéticos muy fuertes.

Coloque los sensores perpendiculares entre sí pero lo más cerca posible entre sí. Doble suavemente los sensores para que queden perpendiculares. Cada pin de cada sensor debe estar en una fila separada de la placa para que pueda conectarse por separado.

Imagen
Imagen

El cableado es ligeramente diferente entre el MKR1010 y el Uno por dos razones. Primero, el Arduino y la pantalla se comunican por SPI. Los diferentes modelos de Arduino tienen diferentes pines dedicados para ciertas líneas SPI. En segundo lugar, las entradas analógicas del Uno pueden aceptar hasta 5 V, mientras que las entradas analógicas del MKR1010 solo pueden aceptar hasta 3.3 V. La tensión de alimentación recomendada para los sensores de efecto Hall es de 5 V. Las salidas de los sensores están conectadas a las entradas analógicas Arduino, y estos pueden ser tan grandes como los voltajes de suministro. Para el Uno, use el suministro de 5 V recomendado para los sensores. Para el MKR1010, use 3.3 V para que la entrada analógica del Arduino nunca vea un voltaje más grande de lo que puede manejar.

Siga los diagramas e instrucciones a continuación para el Arduino que está utilizando.

Cableado con Arduino Uno

Imagen
Imagen

La pantalla tiene 11 pines. Conéctelos al Arduino Uno de la siguiente manera. (NC significa no conectado).

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → 13
  • SO → NC
  • SI → 11
  • TCS → 10
  • RST → 9
  • D / C → 8
  • CCS → NC
  • Lite → NC

Conecte Vin de los sensores a 5V del Arduino. Conecte la tierra del sensor a la tierra del Arduino. Conecte la salida de los sensores a las entradas analógicas A1, A2 y A3 del Arduino.

Imagen
Imagen

Cableado con Arduino MKR1010

Imagen
Imagen

La pantalla tiene 11 pines. Conéctelos al Arduino de la siguiente manera. (NC significa no conectado).

  • Vin → 5V
  • 3.3 → NC
  • Gnd → GND
  • SCK → SCK 9
  • SO → NC
  • SI → MOSI 8
  • TCS → 5
  • RST → 4
  • D / C → 3
  • CCS → NC
  • Lite → NC

Conecte Vin de los sensores a Vcc del Arduino. Este pin está a 3,3 V, no a 5 V. Conecte la tierra del sensor a la tierra del Arduino. Conecte la salida de los sensores a las entradas analógicas A1, A2 y A3 del Arduino.

Imagen
Imagen

Paso 3: Pruebe la pantalla

Hagamos que funcione la pantalla TFT. Afortunadamente, Adafruit tiene algunas bibliotecas fáciles de usar y un excelente tutorial para acompañarlas. Estas instrucciones siguen de cerca el tutorial, Abra el entorno de desarrollo de Arduino. Vaya a Herramientas → Administrar bibliotecas. Instale las bibliotecas Adafruit_GFX, Adafruit_ZeroDMA y Adafruit_ST7735. Reinicie el entorno de desarrollo de Android.

El ejemplo de prueba gráfica se incluye con las bibliotecas. Abrelo. Archivo → Ejemplos → Biblioteca Adafruit ST7735 y ST7789 → prueba gráfica. Para seleccionar la pantalla de 1,44 comentar la línea 95 y descomentar la línea 98.

Versión original:

94 // Use este inicializador si usa una pantalla TFT de 1.8 :

95 tft.initR (INITR_BLACKTAB); // Inicia el chip ST7735S, pestaña negra 96 97 // O usa este inicializador (descomentar) si usas un TFT de 1.44 : 98 //tft.initR(INITR_144GREENTAB); // Inicia el chip ST7735R, pestaña verde

Versión correcta para pantalla de 1,44 :

94 // Use este inicializador si usa una pantalla TFT de 1.8 :

95 //tft.initR(INIT_BLACKTAB); // Inicia el chip ST7735S, pestaña negra 96 97 // O usa este inicializador (descomenta) si usas un TFT de 1.44 : 98 tft.initR (INITR_144GREENTAB); // Inicia el chip SST35R, pestaña verde

La pantalla se comunica mediante SPI, y los diferentes modelos de Arduino utilizan diferentes pines dedicados para algunas líneas de comunicación. El ejemplo de prueba gráfica está configurado para funcionar con los pines Uno. Si está utilizando el MKR1010, agregue las siguientes líneas entre las líneas 80 y 81.

Correcciones para el MKR1010:

80

#define TFT_CS 5 #define TFT_RST 4 #define TFT_DC 3 #define TFT_MOSI 8 #define TFT_SCLK 9 Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK), TFT_MOSI, TFT_SCLK); 81 flotante p = 3,1415926;

Guarde el ejemplo de prueba de gráficos modificada. Conecte el Arduino a la computadora si aún no lo ha hecho. Vaya a Herramientas → Placa y herramientas → Puerto para verificar que la computadora pueda encontrar el Arduino. Vaya a Sketch → Cargar. Si el ejemplo funciona, la pantalla mostrará líneas, rectángulos, texto y la demostración completa. El tutorial de Adafruit proporciona más detalles si es necesario solucionar problemas.

Paso 4: el código del magnetómetro

Descargue el código adjunto y ábralo en el entorno de desarrollo de Arduino.

Este programa utiliza seis funciones:

Setup () inicializa la pantalla

Loop () contiene el bucle principal del programa. Apaga la pantalla, dibuja los ejes, lee las entradas y dibuja la flecha que representa el vector del campo magnético. Tiene una frecuencia de actualización de un segundo que se puede cambiar modificando la línea 127

DrawAxes3d () dibuja y etiqueta los ejes x, y y z

DrawArrow3d () toma una entrada x, y, z que va de 0 a 1023. A partir de estos valores, calcula los puntos finales de la flecha en el espacio. A continuación, utiliza las funciones isometricxx () e isometricyy () para calcular los puntos finales en la pantalla. Finalmente, dibuja la flecha e imprime los voltajes en la parte inferior de la pantalla

Isometricxx () encuentra la coordenada x de la proyección isométrica. Toma las coordenadas x, y y z de un punto y devuelve la ubicación correspondiente de x píxeles en la pantalla

Isometricyy () encuentra la coordenada y de la proyección isométrica. Toma las coordenadas x, y, z de un punto y devuelve la ubicación de píxel y correspondiente en la pantalla

Antes de ejecutar el código, debemos especificar qué pines usar para la comunicación SPI con la pantalla, y debemos especificar la fuente de voltaje para los sensores. Si está usando el MKR1010, comente las líneas 92-96 así como la línea 110. Luego, descomente las líneas 85-89 así como la línea 108. Si está usando el Uno, comente las líneas 85-89 así como la línea 108 Luego, descomente las líneas 92-96 y la línea 110.

Sube el código, Sketch → Subir.

Debería ver los ejes x, y y z en rojo. Una flecha verde con un círculo azul para la punta representa el vector de campo magnético en los sensores. Las lecturas de voltaje se muestran en la parte inferior izquierda. A medida que acerca un imán a los sensores, las lecturas de voltaje deberían cambiar y el tamaño de la flecha debería crecer.

Imagen
Imagen

Paso 5: Trabajo futuro

Trabajo futuro
Trabajo futuro

El siguiente paso sería calibrar el dispositivo. La hoja de datos del sensor proporciona información sobre cómo convertir los valores de voltaje del sensor sin procesar a la fuerza del campo magnético. La calibración podría verificarse comparándola con un magnetómetro más preciso.

Los imanes permanentes interactúan con los cables conductores de corriente. Los cables cerca de la pantalla y en el Arduino generan campos magnéticos que podrían afectar las lecturas del sensor. Además, si este dispositivo se usa para medir cerca de un imán permanente fuerte, el campo magnético del dispositivo bajo prueba interactuará, introducirá ruido y posiblemente dañará el Arduino y la pantalla. El blindaje podría hacer que este magnetómetro sea más robusto. El Arduino puede soportar campos magnéticos más grandes si está protegido en una caja de metal, y se introducirá menos ruido si los cables blindados conectan los sensores en lugar de los cables desnudos.

El campo magnético es una función de la posición, por lo que es diferente en cada punto del espacio. Este dispositivo utiliza tres sensores, uno para medir la componente x, la y y la z del campo magnético en un punto. Los sensores están cerca uno del otro pero no en un solo punto, y esto limita la resolución del magnetómetro. Sería genial guardar las lecturas del campo magnético en diferentes puntos y luego mostrarlas como una matriz de flechas en las ubicaciones correspondientes. Sin embargo, ese es un proyecto para otro día.

Referencias

Información sobre las bibliotecas de gráficos Adafruit Arduino

https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/overview

Visualización de campo magnético

https://www.falstad.com/vector3dm/

Información sobre los sensores de efecto Hall y efecto Hall

  • https://sensing.honeywell.com/index.php?ci_id=47847
  • https://www.allegromicro.com/~/media/Files/Datasheets/A1324-5-6-Datasheet.ashx

Información sobre proyección isométrica

  • https://en.wikipedia.org/wiki/3D_projection
  • https://en.wikipedia.org/wiki/Isometric_projection

Recomendado: