Archivo de la etiqueta: Sensores

Dispositivos optoelectrónicos programables construidos por proteínas modificadas genéticamente

Investigadores rusos y sus colaboradores internacionales desarrollan una fotocélula bioelectrónica completamente funcional utilizando una molécula de una proteína fluorescente unida a un nanotubo de carbono.

Cuando se expone a la luz, el sistema puede cambiar sus propiedades electrónicas y funcionar emitiendo luz o como una célula de memoria, dependiendo de cómo se adjunte la proteína al tubo. Los hallazgos del equipo abren la puerta a nuevos elementos electrónicos, dispositivos de memoria y células solares ecológicos.

En láseres, diodos emisores de luz (LED) y algunos dispositivos de memoria se utilizan dispositivos optoelectrónicos capaces de almacenar y transmitir información respondiendo a varias longitudes de onda de luz. Son de particular interés los sistemas híbridos que contienen biomoléculas, como proteínas, junto con elementos electrónicos. Gracias a su bajo costo, seguridad ambiental y buen desempeño óptico, los sistemas híbridos pueden usarse como componentes en electrónica molecular, LED, láseres avanzados y transistores ópticos.


Microchip con un transistor bio-optoelectrónico

Investigadores del Instituto de Tecnología Electrónica de Moscú (MIET), el Instituto de Física Lebedev de RAS y el Instituto de Ciencia y Tecnología Skolkovo (Skoltech) en Moscú y sus colegas del Reino Unido, Finlandia y Serbia, modificaron nanotubos de carbono utilizando la proteína fluorescente verde (GFP).

«En la configuración examinada, un nanotubo de carbono de pared simple (SWCNT) funciona como un conductor activo y portador de una molécula de proteína, mientras que el grupo de fenilazida proporciona un entrecruzamiento covalente para los portadores de carga comunes entre los componentes del dispositivo», explica el profesor de Skoltech Albert Nasibulin, jefe del Laboratorio de Nanomateriales.

Al observar la estructura de los compuestos resultantes, el equipo descubrió que la proteína puede ayudar a controlar el tipo de elemento optoelectrónico que resultará. Dado que el sistema puede intercambiar energía y portadores de carga con el medio ambiente, los autores aprovecharon esta capacidad para construir nuevos nanodispositivos.

“El nanotubo de carbono es indispensable para las estructuras de sensores biomímicos, ya que ayuda a registrar hasta los más mínimos cambios en la estructura y la carga de las biomoléculas individuales a las que está vinculado”, comenta Nikita Nekrasov, estudiante de posgrado en MIET.

Los nanotubos de carbono tienen muchos electrones libres que pueden migrar a la proteína GFP y regresar a través del puente de fenilazida. Los investigadores probaron diferentes opciones de fijación de la GFP, colocando el cilindro en posición vertical o lateral, para ver cómo se comportaba la fotocélula. Descubrieron que si la proteína se colocaba de lado con su lado repelente al agua unido al tubo, todo el sistema se comportaba como un foco que controlaba la conductividad del tubo. Esto sucede porque encender y apagar la luz de excitación provoca un intenso intercambio de electrones entre el nanotubo y la proteína. En cambio, si se unía al tubo la parte de absorción de agua de la proteína, la carga quedaba atrapada entre el nanotubo y la proteína, lo que permitía que el dispositivo almacenara información durante docenas de minutos. A la vez, el elemento permaneció estable durante mucho tiempo gracias a la cubierta proteica protectora.

“Nuestros hallazgos ayudarán a crear dispositivos controlados por luz potentes y compactos para el almacenamiento y transmisión de información. Además, ambas partes de nuestros elementos son biodegradables y, por lo tanto, se pueden utilizar para crear células solares amigables con el medio ambiente”, señala Ivan Bobrinetsky, Doctor en Ciencias Técnicas, director de proyectos de subvenciones de RSF e investigador principal de MIET.

________________________________________
Artículo original: La investigación, que fue apoyada por una subvención de la Russian Science Foundation (RSF), se publicó en la revista Advanced Functional Materials

Medición de temperatura y humedad con DHT11

El sensor integrado DHT11 permite obtener datos de la temperatura y humedad ambiente con facilidad. Es utilizable perfectamente en estaciones meteorológicas, locales o remotas, sistemas de control ambiental en el hogar, y equipos de monitoreo de invernaderos, cultivos o jardines.

Una de las ventajas de este sensor es que, a diferencia de otros sensores analógicos, como el LM35, nos envía la información en serie, de modo que se puede conectar a una entrada digital del microcontrolador. Así se evitan los problemas de ruido inherentes a las líneas que conducen señales analógicas.



Rangos de medición y precisión del DHT11:

  • Rango de humedad: 20-90% HR (Humedad Relativa)
  • Precisión de humedad: ±5% HR (Humedad Relativa)
  • Rango de temperatura: 0-50 °C
  • Precisión de temperatura: ±2% °C
  • Voltaje de funcionamiento: 3 V a 5,5 V.

Veremos primero un poco sobre la Humedad. Luego estudiaremos cómo mide la humedad el DHT11. Después explicaremos cómo conectarlo a un Arduino y mostraremos un código de ejemplo para utilizar el DHT11 en tus proyectos.

¿Qué es la Humedad Relativa?

El DHT11 mide humedad relativa. La humedad relativa es la cantidad de vapor de agua en el aire ( e, o «presión de vapor real» ) respecto al punto de saturación de vapor de agua en el aire ( es , o «presión de vapor estándar», que es el valor correspondiente a 100%). En ese punto de saturación ( es ), el vapor de agua comienza a condensarse y acumularse en las superficies formando rocío.

El punto de saturación cambia con la temperatura del aire. El aire frío puede contener menos vapor de agua al saturarse, y el aire caliente puede contener más vapor de agua al saturarse.

La fórmula para calcular la humedad relativa es:



DHT11, un sensor integrado para la temperatura y humedad

El DHT11 se puede comprar en dos presentaciones: el sensor individual, que es una cápsula plástica integrada como la que se ve en la foto inicial de este artículo, o el mismo módulo básico DHT11 pero soldado en una placa de circuito impreso de base.

Hay una diferencia de precio que, a nuestro entender, no es justificada. La versión con plaqueta base (Printed Circuit Board) viene con un resistor de polarización a VCC (pull-up) y en ocasiones un LED que indica que está alimentado. La versión  sin plaqueta base tiene 4 pines y la versión con plaqueta base tenemos 3 pines.

Las conexiones son levemente diferentes, y en cada modelo hay que leer los rótulos en el borde de la plaqueta para identificar bien dónde hacer las conexiones. Lo más importante es determinar cuál es la alimentacion, VCC, generalmente +5V, y cuál es tierra o negativo. El pin de señal, identificado con S, OUT, DOUT, DATA, como es obvio queda determinado por descarte.



DHT11 sin plaqueta base

Los pines de la versión sin PCB del DHT11 son:

  • VCC: alimentación
  • I/O: transmisión de datos
  • NC: no conecta, pin al aire
  • GND: conexión a tierra



DHT11 sobre plaquetas

Los pines de la versión con PCB del DHT11 son:

  • GND: conexión con tierra
  • DATA: transmisión de datos
  • VCC: alimentación

Características técnicas del DHT11

Siempre es aconsejable dar una mirada a la hoja de características técnicas para ver detalles de funcionamiento el DHT11.

Hoja de datos del DHT11

Modelo DHT11
Alimentación de 3,5 V a 5 V
Consumo 2,5 mA
Señal de salida Digital
Temperatura  
Rango de 0°C a 50°C
Precisión a 25°C ± 2°C
Resolución 1°C (8-bit)
Humedad  
Rango de 20% RH a 90% RH
Precisión entre 0°C y 50°C ± 5% RH
Resolución 1% RH

¿Cómo envía datos el DHT11?

La señal de salida es digital, enviada en serie por una sola línea.

Hay al menos dos versiones del sensor de temperatura y humedad DHT11, veremos cómo tendríamos que conectarlo a un Arduino. En cualquiera de los casos, ingresamos a un pin digital.

La alimentación puede ser de 3,5V a 5V. No es problema al conectarlo a un Arduino estándar, ya que tenemos salida de 5V. No funcionará alimentándolo con la salida de 3,3 V, ya que el valor está por debajo de las especificación de alimentación del módulo.

Antes de conectar el sensor es conveniente ver estas consideraciones:

  • La hoja de datos recomienda un resistor de polarización (pull-up) de 5 kΩ para un cable de longitud de hasta 20 metros. No es un valor que se consiga fácil, por lo que utilizaremos un valor estándar de 4.7KΩ, o mejor 5.6KΩ.
  • Se recomienda tomar mediciones cada 5 segundos. Un periodo menor puede ocasionar que los datos no sean precisos.

Una vez leídas y entendidas las consideraciones, veremos los diagramas para los dos modelos.

Conexionado para el DHT11

Para conectar el circuito de una aplicación típica con un DHT11, debemos poner un resistor de polarización (pull-up) conectado a la salida digital.

El sensor tiene 4 pines: VCC (de 3,5V a 5V), la entrada/salida digital, un pin sin uso (NC, no conectado), y la toma de tierra GND.




El diagrama de conexión es el siguiente:



Conexionado para el DHT11 sobre una plaqueta base

El DHT11 ya soldado en un PCB posee el resistor pull-up. Puede resultar muy útil en ocasiones, pero si añadimos un cable de más de 20 metros, deberemos tener en cuenta este factor.

Este módulo con DHT11 dispone de 3 pines: la toma de tierra GND, DATA para los datos, y la alimentación VCC (de 3,5V a 5V). En la siguiente imagen se puede ver el esquema de conexión con Arduino.



Diferentes versiones del módulo DHT11 montado sobre una plaqueta

Debido a la amplia variedad de montajes que se encuentran en el mercado, todas ellas con diferentes disposiciones de señales al exterior, es importante leer la indicación impresa en la plaqueta. Por lo general se observa un signo +, un signo -, y la señal marcada como S, OUT, DOUT o DATA. Es recomendable mirar muy bien las indicaciones antes de conectar, en especial dónde se debe aplicar la alimentación: GND o tierra y VCC o 3,5 a 5V



Programando el DHT11 desde el IDE de Arduino

Mostrar Humedad y Temperatura en el Monitor Serie

Para trabajar con el DHT11 en el Arduino, lo más práctico es instalar la biblioteca DHTlib, que ya viene con todas las funciones necesarias para obtener las lecturas de humedad y temperatura del sensor.

Es fácil de instalar, simplemente descargue el archivo DHTlib.zip en el enlace a continuación y abra el IDE de Arduino. Luego vaya a Sketch > Include Library > Add .ZIP Library y seleccione el archivo DHTlib.zip

DHTlib

Una vez que se ha instalado, cargue este programa de ejemplo en Arduino y abra el monitor serie:

#include <dht.h>
dht DHT;
#define DHT11_PIN 7

void setup(){
  Serial.begin(9600);
}

void loop(){
  int chk = DHT.read11(DHT11_PIN);
  Serial.print("Temperatura = ");
  Serial.println(DHT.temperature);
  Serial.print("Humedad = ");
  Serial.println(DHT.humidity);
  delay(5000);
}

Si todo funciona correctamente, debería ver las lecturas de humedad y temperatura a intervalos de 5 segundos.

Si no desea utilizar el pin 7 para la señal de datos, puede cambiar el número de pin en la línea 5 donde dice #define DHT11_PIN 7.

Uso de los datos en otros programas

¿Qué sucede si no desea solo tomar las lecturas reales de Humedad y Temperatura, pero las necesita para calcular o controlar otras cosas? El siguiente código es el mínimo necesario para inicializar el sensor. Puede agregar esto a los programas existentes y usar DHT.humedad y DHT.temperatura como variables en cualquier función.

#include <dht.h>
dht DHT;
#define DHT11_PIN 7

void setup(){
// sin contenido
}

void loop(){
  int lectura = DHT.read11(DHT11_PIN);

// aquí líneas de código para utilizar los datos en la variable 'lectura'

  delay(1000);
}

Artículos Relacionados:



Hoja de datos del sensor de temperatura y humedad DHT11

Introducción

El módulo medidor de temperatura y humedad DHT11 posee en su interior un conjunto de detectores de temperatura y humedad con una salida calibrada de señal en formato digital.

Mediante el uso de una exclusiva técnica digital de adquisición de señales y tecnología de detección de temperatura y humedad, garantiza una alta confiabilidad y una excelente estabilidad a largo plazo.

Este sensor incluye un componente de medición de humedad de tipo resistivo, y un componente de medición de temperatura NTC conectados a un microcontrolador de 8 bits de alto rendimiento, lo que ofrece excelente calidad, rentabilidad, respuesta rápida y capacidad anti-interferencias.



Cada dispositivo DHT11 está estrictamente calibrado en laboratorio hasta que es extremadamente preciso en su medición de la humedad. Los coeficientes de calibración se almacenan como programas en la memoria OTP (One Time Programming), y son utilizados por el proceso interno de detección de señales del sensor.

La interfaz serie de un solo cable hace que la integración del sistema sea rápida y sencilla.

Su pequeño tamaño, bajo consumo de energía y capacidad de transmisión de señal de hasta 20 metros lo convierten en la mejor opción para diversas aplicaciones, incluyendo las más exigentes.

Cápsula:

El componente está integrado en una cápsula con una sola fila de 4 pines. Es práctico de conectar y el fabricante ofrece proporcionar cápsulas especiales a solicitud de los usuarios.

Especificaciones técnicas:

Datos básicos:

Especificaciones detalladas:

Uso típico:


Nota: Pin 3 no conectado. MCU = microcomputador o computador en un chip

Cuando el cable de conexión tiene una longitud inferior a 20 metros, se recomienda un resistor de polarización (pull-up) de 5K; cuando el cable de conexión tenga más de 20 metros, elija un resistor pull-up adecuado, según sea necesario.

Alimentación y salida de datos

La fuente de alimentación de DHT11 es de 3-5,5 V CC.

Cuando aplique energía al sensor, espere 1 segundo hasta que se encuentre estable.

Se puede agregar un capacitor de alrededor de 100 nF entre VDD y GND para filtrar la fuente de energía.

Proceso de comunicación: interfaz serie (un solo cable bidireccional)

Se utiliza un formato de datos sobre una línea única para la comunicación y sincronización entre un MCU y el sensor DHT11. Un proceso de comunicación dura aproximadamente 4 ms.

Los datos consisten de partes decimales y enteras. El bloque completo de datos consiste en 40 bits, y el sensor envía primero el bit de datos más alto.


Formato de la secuencia de 5 bytes = 40 bits

Formato de datos:

8 bits de datos enteros de Humedad Relativa +
8 bits de datos decimales de Humedad Relativa +
8 bits de datos enteros de Temperatura +
8 bits de datos decimales de Temperatura +
8 bits de Suma de verificación (check-sum).

Si la transmisión de datos es correcta, la suma de verificación debe ser igual a

los 8 bits de datos enteros de Humedad Relativa +
los 8 bits de datos decimales de Humedad Relativa +
los 8 bits de datos enteros de Temperatura +
los 8 bits de datos decimales de Temperatura.

Proceso general de comunicación (graficado en la figura a continuación)

Cuando el MCU envía una Señal de Inicio, el DHT11 cambia del Modo de Bajo Consumo de Energía al Modo de Ejecución, y espera a que termine la señal de inicio del MCU.

Una vez que ésta se completa, el DHT11 envía al MCU una señal de respuesta que contiene los 40 bits de datos con la información sobre la temperatura y la humedad relativa.

Los usuarios pueden optar por tomar solo alguno de los datos.

Sin la Señal de Inicio del MCU, el DHT11 no enviará ninguna señal al MCU.

Una vez que se han obtenido los datos, el DHT11 cambiará al Modo de Bajo Consumo de Energía hasta que reciba de nuevo una señal de inicio del MCU.


Proceso general de comunicación

El MCU envía la señal de inicio al DHT (graficado en la figura a continuación)

En Estado de Reposo, la línea única de datos (bus) está en un nivel de voltaje ALTO. Cuando comienza la comunicación entre el MCU y el DHT11, el programa del MCU pondrá el nivel de voltaje de la línea única de datos a un nivel BAJO. Esta Señal de Inicio debe durar al menos 18ms para garantizar que el DHT detecte la señal del MCU. Luego el MCU dejará la línea de nuevo libre y flotante, esperando durante 20 a 40us la respuesta del DHT.


MCU envía la Señal de Inicio y el DHT responde

Respuesta del DHT al MCU (Figura arriba)

Una vez que el DHT detecta la Señal de Inicio, enviará una señal de respuesta de nivel de voltaje BAJO durante 80us. Luego, el programa del DHT pone el nivel de voltaje de la línea única de datos de BAJO a ALTO y lo mantiene durante 80us, mientras el DHT se prepara para enviar datos.

Del lado del MCU, cuando la línea única de datos está en el nivel de voltaje BAJO significa que el DHT está enviando una señal de respuesta. Una vez que el DHT envía esa señal de respuesta, pone la línea en ALTO (flotante, convirtiendo el puerto digital en entrada) y la mantiene durante 80us. Así se prepara para la transmisión de datos.

Cuando el DHT está enviando datos al MCU, cada bit de datos comienza con un nivel de BAJO voltaje de 50us y la longitud de la siguiente señal de nivel de voltaje ALTO determina si el bit de datos es «0» o es «1» (consulte las figuras a continuación).


Transmisión de bit «0»


Transmisión de bit «1»

Una vez que el DHT detecta la Señal de Inicio, enviará un nivel de voltaje BAJO. Si la señal de respuesta del DHT siempre está en un nivel de voltaje ALTO, esto indica que DHT no está respondiendo correctamente. Verifique la conexión. Cuando se transmite el último bit de datos, el DHT11 pone un nivel de voltaje BAJO y lo mantiene durante 50us. Luego, el voltaje de la línea única de datos será fijado en ALTO por el resistor, estableciéndose el estado flotante de línea libre.

Características Eléctricas

Nota: El intervalo de muestreo no debe ser inferior a 1 segundo

Cuestiones importantes – Condiciones de funcionamiento

(1)
Rango de Trabajo

El uso del sensor DHT11 fuera del rango de trabajo indicado en esta hoja de datos puede resultar en un cambio/discrepancia de la señal de Humedad Relativa del 3 %. El sensor DHT11 puede recuperarse gradualmente al estado calibrado cuando vuelve a la condición de funcionamiento normal y funciona dentro de su rango. Consulte (3) de esta sección para acelerar su recuperación. Tenga en cuenta que operar el sensor DHT11 en condiciones de funcionamiento anormales acelerará el proceso de envejecimiento del sensor.

(2)
Atención a los materiales químicos

El vapor de los materiales químicos puede interferir con los elementos sensibles de DHT y degradar su sensibilidad. Un alto grado de contaminación química puede dañar permanentemente el sensor.

(3)
Proceso de restauración cuando suceden (1) y (2)

    Paso uno: Mantenga el sensor DHT en condiciones de Temperatura 50~60° Celsius, humedad <10% HR por 2 horas;

    Paso dos: Mantenga el sensor DHT en la condición de Temperatura 20~30° Celsius, humedad >70%HR durante 5 horas.

(4)

Temperatura, etc.

La humedad relativa depende en gran medida de la temperatura. Aunque la tecnología de compensación de temperatura se utiliza para garantizar una medición precisa de la HR, se recomienda encarecidamente mantener los sensores de humedad y temperatura funcionando a la misma temperatura. DHT11 debe montarse en el lugar lo más lejos posible de las partes que puedan generar calor.

(5)
Efecto de la Luz

La exposición prolongada a la luz solar intensa y a los rayos ultravioleta puede degradar el rendimiento de DHT.

(6)
Cables de conexión

La calidad de los cables de conexión afectará la calidad y la distancia de la comunicación y se recomienda un cable blindado de alta calidad.

(7)
Otras precauciones

• La temperatura de soldadura debe ser inferior a 260°C y el contacto debe durar menos de 10 segundos.

• Evite usar el sensor en condiciones de rocío.

• No utilice este producto en dispositivos de seguridad o parada de emergencia o en cualquier otra ocasión en la que la falla de DHT11 pueda causar lesiones personales.

• Almacenamiento: Mantenga el sensor a una temperatura de 10-40°C, humedad <60% HR.

Unidad de Medición Inercial Multipropósito – IMU Razor M0 de 9DoF (parte 1)

La IMU Razor M0 de 9DoF (Unidad de Medición Inercial Multipropósito: Multi-purpose Inertial Measurement Unit = IMU) combina un microprocesador SAMD21 con un sensor MPU-9250 de 9DoF (nueve grados de libertad), creando una unidad compacta y reprogramable. Se puede programar para monitorear y registrar movimiento, transmitir ángulos de Euler por un puerto serie, o incluso para funcionar como un podómetro que cuente los pasos.

Una unidad de medición inercial o IMU (del inglés inertial measurement unit), es un dispositivo electrónico que mide e informa acerca de la velocidad, orientación y fuerzas gravitacionales de un aparato, usando una combinación de acelerómetros y giróscopos. En este caso se agrega un nivel más: un magnetómetro, que permite conocer la ubicación respecto al campo magnético terrestre. Las unidades de medición inercial se usan para maniobrar aviones, incluyendo vehículos aéreos no tripulados, entre muchos otros usos, y además naves espaciales, incluyendo transbordadores, satélites y aterrizadores. La IMU es el componente principal de los sistemas de navegación inercial usados en buques y misiles guiados entre otros. En este uso, los datos recolectados por los sensores de una IMU permiten a un computador seguir la posición del aparato, usando un método conocido como navegación por estima.

El chip MPU-9250 de 9DoF de la Razor posee tres sensores cada uno de tres ejes –un acelerómetro, un giroscopio y un magnetómetro– que le dan la capacidad de detectar aceleración lineal, velocidad de rotación angular, y vectores de campo magnético.

El microprocesador que contiene –el SAMD21G18A de Atmel–, es un microcontrolador ARM de 32-bit Cortex-M0+ compatible con Arduino, que se utiliza también en los Arduino Zero y el SAMD21 de la nueva línea MKR de mini plaquetas de Arduino.

Además del par principal de circuitos integrados, la IMU Razor de 9DoF posee un zócalo para trajeta µSD, un cargador para baterías LiPo, llave de encendido y un conector de E/S para proyectos de expansión. Viene pre-programada con un firmware de ejemplo y un bootloader compatible con el IDE de Arduino, de modo que se puede modificar el firmware según las necesidades y grabarle nuevo código a través de una conexión USB.

Este artículo provee una fuente de información para comenzar, y una guía de inicio para trabajar con la IMU de SparkFun de 9DoF Razor M0. Documentaré primero las características de hardware y firmware de la plaqueta, y a continuación, mostraré cómo usar el IDE de Arduino con la biblioteca MPU-9250 de Sparkfun para Arduino para reprogramar la IMU Razor a las necesidades de nuestros proyectos.

Materiales necesarios

La IMU Razor M0 de 9DoF está provista de todo lo que se necesita para aprovechar el sensor MPU-9250 de 9DoF. Solo harán falta unos pocos elementos –la mayoría son de esos que uno ya tiene entre sus componentes– además de la plaqueta.




Se puede utilizar un cable micro-B USB para alimentar y también para reprogramar la Razor. Si usted desea tener una placa independiente para que sea móvil, va a necesitar una batería de polímero de Litio de celda única (Lithium-polymer, o LiPo), que se puede recargar conectando la Razor 9DoF en un cargador USB o en un puerto de su PC. Además, si usted necesita registrar los datos, se debe colocar una tarjetita µSD en el zócalo de la IMU Razor. Acepta µSD de cualquier tipo.

Finalmente, puede ser necesario soldar algunos conectores si se desea aprovechar las capacidades de Entrada/Salida y de alimentación de la IMU.

Lecturas sugeridas

El fabricante ha tratado de hacer que la placa sea fácil de usar independientemente del nivel de experiencia en electrónica del usuario. Sin embargo, si desea realizar una lectura previa antes de utilizar y desarrollar programas para el el 9DoF Razor IMU M0, aquí hay algunos tutoriales que ellos recomiendan (inglés):

Giroscopio
Los giroscopios miden la velocidad de rotación alrededor de un eje y son una parte esencial para determinar la orientación en el espacio.

Acelerómetro (Bases)
Una introducción rápida a los acelerómetros, cómo funcionan y por qué se utilizan.

SAMD21
Una introducción al microprocesador Atmel ATSAMD21G18 y las placas de distribución Mini y Pro R3. Mejore sus habilidades Arduino con el potente procesador ARM Cortex M0 +.

MPU-9250
Iníciese y ponga en marcha el sensor MEMS de 9 ejes MPU-9250.

El hardware

Esta placa IMU tiene montados una cantidad de componentes sobre ambas caras del circuito impreso. La imagen muestra el lado que se define como cara superior.

El reverso de la plaqueta posee diversos conectores, además del zócalo de la microSD, la llave de encendido y LEDs para indicar diversas funciones.

Esta IMU es un diseño de hardware abierto. Se puede descargar el diagrama esquemático (en PDF), los archivos Eagle (con el diseño del circuito impreso), y ver la historia del diseño en el reservorio GitHub de Sparkfun.

Alimentando la IMU Razor M0

Esta plaqueta está diseñada para trabajar tanto alimentada desde el cable USB, o con una batería LiPo en el conector adecuado. Sólo hay que asegurarse de que la batería sea de celda simple, con un voltaje nominal de 3,7V a 4,2V.

Conecte tanto el USB como una LiPo para cargar la batería


Si se conectan ambos, el USB y la batería LiPo en la plaqueta, ésta se cargará con una corriente de hasta 450 mA. El estado de la carga lo indica el led amarillo de carga, que se apaga cuando la batería queda cargada a pleno.

Corriente de carga 450mA: La corriente máxima de carga está fijada por un resistor externo y no es modificable, al menos no con facilidad. La práctica nos dice que no es seguro cargar una batería LiPo con una corriente mayor a sus mA/h, lo que significa que no se recomienta utilizar baterías LiPo con capacidades menores a 450mAh para esta plaqueta.

Sea alimentada desde la fuente de USB, o con la batería LiPo, el voltaje es regulado a 3,3 V y se utiliza para alimentar tanto el SAMD21 como el MPU-9250. El regulador tiene una capacidad de aproximadamente 600 mA, lo que significa que debería tener suficiente resto para entregar corriente. Si lo desea puede alimentar otros dispositivos desde los pines marcados con 3V3.

Los pines VIN, VBAT y GND se pueden usar para alimentar el regulador de 3,3V de la IMU Razor en lugar de utilizar las entradas USB o el conector para la LiPo (JST). El voltaje en el pin VIN no debe exceder los 6V, y el pin VBAT solo debe conectarse a una batería LiPo de una celda.

Finalmente, el interruptor de ENCENDIDO/APAGADO en la parte inferior de la placa controla la alimentación entre ambas fuentes de entrada y el resto de los componentes de la placa. Mientras está en la posición «OFF» (Apagado), la batería LiPo seguirá en carga, pero no se debe aportar energía a ningún otro componente.

Perforaciones de pines para el SAMD21 y la alimentación

La placa tiene perforaciones preparadas para soldar conectores con tantos pines de Entrada/Salida del microcontrolador SAMD21 como se pudieron acomodar en el pequeño tamaño de la IMU Razor. Eso incluye los pines 08-13, las entradas del convertidor analógico a digital A0-A4, RX, TX, y los pines I2C, SDA y SCL.

Los pines SDA y SCL están en el mismo bus I2C que el MPU-9250, pero eso no debería ser un problema siempre que los dispositivos I2C adicionales no compartan las direcciones de 7 bits de la IMU (0x68 y 0x0C).

Usted puede soldar conectores hembra como los que tienen los Arduinos UNO y Mega, o hileras de pines macho, o directamente cablear a esos puntos de soldadura para expandir las funciones de la plaqueta. Por ejemplo, usted puede conectar un sensor BME280 directamente en el puerto I2C, y agregar detección de altitud y temperatura a su IMU.

Algunos módulos de la misma marca basados en I2C utilizan la misma
distribución de 4 pines, así que se pueden conectar directamente


El puerto de depuración single-wire = SWD (de un solo cable) del SAMD21 también está perforado en la parte superior de la placa, en caso de que se quiera programar el chip con un depurador JTAG. El pinout de este puerto coincide con el estándar del conector de depuración Cortex de 10 pines. Una «muesca» blanca indica el pin 1 de este puerto.

MPU-9250 Orientación de Acelerómetro / Giroscopio / Magnetómetro

La orientación del acelerómetro, el giroscopio y los ejes X, Y y Z del magnetómetro es determinada por la posición del MPU-9250. Para facilitar la referencia, estos vectores se han documentado con una impresión en la parte superior de la placa.

Tenga en cuenta que los ejes X e Y del magnetómetro están invertidos respecto a los del acelerómetro y el giroscopio, y que el eje Z también está invertido.

Trabajando con el firmware de ejemplo

Además de un gestor de arranque de Arduino (bootloader), el IMU también tiene cargado un ejemplo de firmware que es suficiente para demostrar, al menos, que funciona el seguimiento de movimiento del sensor, e incluso hacer un pequeño registro en una tarjeta µSD. Para comenzar a usar el firmware de ejemplo, simplemente conecte la IMU a una computadora.

Después de conectar la placa, debe aparecer como un puerto serie. En Windows, aparece como COMx y en Mac, debería verse como /dev/tty.usbserial-ABCD12.

Instalación del controlador

Usuarios de Windows 10: la primera vez que conecte el IMU Razor a su computadora, es posible que deba instalar controladores para habilitar el perfil USB de la clase de dispositivo de comunicación (CDC) de la placa.
Si su placa no aparece como un puerto COM, haga clic en el botón de abajo para descargar los controladores.

DESCARGAR DRIVERS DE WINDOWS PARA SAMD21

Para obtener ayuda para instalar los controladores, consulte las instrucciones del fabricante en la guía de conexión de Breakout SAMD21.

Después de ubicar el puerto de la placa, abra el Terminal Serie y establezca la velocidad en baudios a 115200 bps. El Monitor Serie del Arduino funciona bien para este propósito, o puede descargar alguno diferente desde aquí: programas de terminal.

Al abrir el puerto, el IMU Razor 9DoF debe comenzar inmediatamente a enviar las lecturas del acelerómetro, el giroscopio y el magnetómetro.

El formato estándar de la línea de texto es:

<timeMS>, <accelX>, <accelY>, <accelZ>, <gyroX>, <gyroY>, <gyroZ>, <magX>, <magY>, <magZ>

Esta línea se puede modificar enviando cualquiera de los siguientes comandos:

  • ESPACIADOR – Pausa/reinicio de impresión de puerto serie
  • t – Habilitar/deshabilitar las lecturas de tiempo
  • a – Habilitar/deshabilitar las lecturas del acelerómetro
  • g – Habilitar/deshabilitar las lecturas del giróscopo
  • m – Habilitar/deshabilitar las lecturas del magnetómetro
  • c – Alternar entre valores calculados o sin procesar de las lecturas
  • q – Habilitar/deshabilitar lecturas cuaternianas (qw, qx, qy y qz se muestran luego de las lecturas magnéticas)
  • e – Habilitar/deshabilitar cálculos Euler de ángulo (pitch, roll, yaw) (se muestran luego del procesamiento cuaterniano)
  • h – Habilitar/deshabililar las lecturas de encabezado
  • r – Ajustar el ritmo de registro en incrementos de 10Hz entre 1-100Hz (1, 10, 20, … 100)
  • A – Ajustar el rango de escala máxima del acelerómetro. Cicla entre ± 2, 4, 8, and 16 g.
  • G – Ajustar el rango de escala máxima del giroscopio. Cicla entre ± 250, 500, 1000, 2000 dps.
  • s – Habilitar/deshabililar el registro en tarjeta SD

Todas las configuraciones se almacenan en una memoria no volátil, por lo que al iniciar su IMU Razor 9DoF deberá tener la misma información con que la configuró anteriormente.

Además de iniciar sesión en su puerto serie, el firmware también está diseñado para registrar los datos en una tarjeta µSD, si hay una presente. Coloque una y debería tener los archivos de registro de IMU la próxima vez que conecte la tarjeta SD a su lector.

El firmware del 9DoF Razor IMU está disponible en el repositorio GitHub del producto. Para cargar el firmware, necesitará las definiciones de la placa SparkFun SAMD21 y la biblioteca SparkFun MPU-9250 DMP Arduino instalada en su máquina. Que es exactamente lo que vamos a documentar a continuación…

El IMU Razor 9DoF M0 está diseñado en base al SAMD21, el mismo procesador del Arduino Zero, lo que significa que agregar el soporte de Arduino para la placa está a solo unos clics. Esta sección describe los pasos que deberá seguir para instalar los núcleos SAMD en su biblioteca Arduino (eso suena más atemorizante de lo que realmente es).

¡Actualizar Arduino! Esta configuración requiere al menos la versión 1.6.4 o posterior e Arduino. Lo he probado en 1.8.8 y recomendaría esa versión del IDE o superior. Si está ejecutando una versión anterior de Arduino, visite arduino.cc para obtener la última y mejor versión.

Instale las placas de Arduino SAMD

Primero, deberá instalar una variedad de herramientas, que incluyen bibliotecas ARM Cortex de bajo nivel llenas de código genérico, arm-gcc para compilar su código y bossa para cargar código a través del bootloader. Estas herramientas vienen empaquetadas junto con las definiciones de la placa SAMD de Arduino para el Arduino Zero.

Para instalar las definiciones de la placa Arduino SAMD, vaya a su administrador de la placa ( Herramientas > Placa > Gestor de tarjetas … ), luego busque una entrada “Arduino SAMD Boards (32-bits ARM Cortex-M0+)”. Selecciónela e instale la última versión (actualizada recientemente a 1.6.20).

La descarga e instalación de las herramientas puede demorar un par de minutos; en particular, arm-gcc llevará más tiempo, se trata de 250 MB sin comprimir.

Una vez instalado, el texto azul «INSTALLED» debe aparecer dentro de la entrada de la lista de placas SAMD.

Instalar la definición de la placa SparkFun

Ahora que sus herramientas ARM están instaladas, se requiere un último paso de configuración para agregar soporte para las placas SparkFun SAMD. Primero, abra sus preferencias de Arduino ( Archivo > Preferencias ). A continuación, busque el cuadro de texto Gestor de URLs adicionales de Tarjetas y pegue allí el siguiente enlace:

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_spark fun_index.json

Luego presione «OK«, y regrese al menú del Gestor de tarjetas. Debería encontrar una nueva entrada para las placas SAMD de SparkFun.

Esta instalación debería ser mucho más rápida; el trabajo pesado fue realizado en la sección anterior.

Seleccione la placa y el puerto serie

Una vez que se haya instalado la placa, debería ver algunas entradas nuevas en la lista Herramientas > Placa, incluida la Razor IMU M0 de SparkFun 9Do, en el menú «Placas SparkFun SAMD (ARM Cortex-M0 +) de 32 bits». Y finalmente, seleccione el puerto del IMI 9DoF Razor yendo al menú Herramientas > Puerto.

La plaqueta ya funcionará con el programa de ejemplo. En un próximo artículo cargaremos este programa de ejemplo, para comprobar el funcionamiento del bootloader, y podremos comenzar a realizar pruebas, cambiando el programa a gusto y escribir nuevos programas a medida de nuestro propio proyecto de detección de movimientos.

[ Continúa en la parte 2 ]



Sistema para estacionamiento de un auto y para evitar acercarse demasiado a otro vehículo

Utilizando sensores ultrasónicos, los autos modernos nos dan una útil ayuda en el momento de maniobrar, especialmente al estacionarlos en espacios limitado. Podemos hacer nuestro sistema detector con un Arduino UNO y unos pocos componentes de bajo costo


Cómo funciona el sensor ultrasónico HC-SR04

El sensor ultrasónico HC-SR04 nos permite medir distancias por medio de emisión y rebote de ultrasonidos. Para medir distancias con Arduino podemos hacerlo de diferentes maneras.

Por orden de costo, hay un sensor que mide con el rebote de un láser; luego un sensor de infrarrojos que utiliza el paralaje del regreso de un haz de luz para calcular la distancia; y por último el más barato, el sensor ultrasónico HC-SR04, muy utilizado con Arduino, que utiliza la velocidad de propagación del sonido para medir distancia.

Para que no sea molesto al oído humano, utiliza ultrasonido a una frecuencia de 40 kHz. Estas ondas sonoras tienen una frecuencia muy por encima del espectro audible por los seres humanos.
El sensor funciona como un sonar, por rebote de la onda. El emisor del HC-SR04 envía un tren de ondas ultrasónicas cuando se activa la señal de disparo (trigger). Este sonido se refleja contra el objeto y retorna. El receptor detecta el momento en que retorna la onda y lo indica en la salida eco (echo).

Midiendo el tiempo de viaje podemos calcular la distancia.

La velocidad del sonido en la atmósfera terrestre es de 343,2 m/s a 20° C de temperatura, con 50% de humedad y a nivel del mar. Si necesitamos una gran exactitud, podemos agregar al diseño sensores BMP180 o BMP280, que nos aportan datos de altitud y temperatura, e incluso agregar un medidor de humedad, y por supuesto aplicar una fórmula más compleja. Pero para este diseño no necesitamos tanta precisión.

La fórmula de la velocidad es:

velocidad = espacio/tiempo

De donde despejamos la variable espacio, que necesitamos conocer:

espacio = velocidad x tiempo

La velocidad es conocida: la del sonido. El tiempo lo obtenemos con el sensor ultrasónico. Con ambos datos, podemos calcular la incógnita: a qué distancia se encuentra un objeto.

El zumbador o buzzer

Para simular correctamente un medidor de distancia de un automóvil utilizamos un buzzer (zumbador) pasivo. No hay que confundirlo con el zumbador activo, que tiene un oscilador interno, y por lo tanto una frecuencia fija y polaridad en sus pines de conexión.

Este reproductor no tiene un rango tan amplio de emisión de sonido como el del oído humano, ni mucho menos, pero es suficiente para diferenciar la distancia con frecuencias diferentes dentro de lo que es capaz de emitir. Además de los pequeños (como el de la foto), que vienen incluidos en los kits de Arduino, hay otros con mayor diámetro de diafragma (por ejemplo en el desarme de viejos modems), que ofrecen más volumen y un rango de frecuencias más amplio.

Sistema de alerta con leds y zumbador

Si bien al maniobrar no estaremos mirando hacia un indicador, sino atentos a los tonos de aviso, agregaremos al diseño un sistema de alerta visual. Nos dará una indicación aún más efectiva de si estamos cerca o lejos de un obstáculo. Con tres leds (verde, amarillo y rojo) conseguimos determinar si estamos a distancia sin riesgo, acercándonos, o en zona de peligro. Pero se podría ampliar la indicación con más leds y más comparaciones en el programa.

Componentes:

Arduino UNO, protoboard, cables para conexiones, resistores de 330 Ω, led verde, led amarillo, led rojo, sensor ultrasónico Arduino (HC-SR04), buzzer




Circuito:

Los resistores son de 330 Ω y van en serie con los LEDs. El sensor ultrasónico se conecta a dos pines digitales, uno para el trigger o disparador y otro para el echo, o receptor. El buzzer se conecta a una salida PWM y a GND. La salida PWM entregará distintas frecuencias según la indicación del programa, por medio de la función tone().

Programando el detector de distancia

Diagrama del programa

Los umbrales para la decisión se fijan como constantes, uno para cada situación. Podemos medir la distancia con una regla y determinarlos.

■ UmbralAlejado: está en zona verde desde 50 cm a 30 cm.
■ UmbralMedio: está en zona amarilla, desde 30 cm a 10 cm.
■ UmbralCerca: está en zona roja, menos de 10 cm.

Estos umbrales no son definitivos: se pueden cambiar a gusto del usuario.

El programa debe analizar la medición dividida en 4 zonas: fuera de rango (más de 50 cm, ninguna indicación), entre 50 cm y 30 cm (zona verde), entre 30 cm y 10 cm (zona amarilla), entre 10 cm e impacto (zona roja).

■ Luego de medir la distancia se la compara con el umbral que indica fuera de rango (50 cm).
■ Si la distancia es menor a ese valor está en zona verde: se enciende el led verde y emite el tono de 2000 c/s.
■ Si la distancia es menor a 30 cm y mayor a 10 cm está en zona amarilla: enciende el led amarillo y emite el tono de 2500 c/s.
■ Si la distancia es menor a 10 cm está en zona roja: enciende el led rojo y emite el tono de 3000 c/s.

Programa

Para esta determinación de rangos, es importante buscar en la hoja de especificaciones técnicas el rango de funcionamiento del sensor de ultrasonidos que disponemos. Para este artículo se usó uno que puede medir de 2 cm a 400 cm.

Artículos relacionados:

VL53L0X: Sensor de distancia que mide por la velocidad de la luz (Time-of-Fly)

Dando a los vehículos autónomos una “visión eléctrica” más aguda

Módulo de emisor piezoeléctrico pasivo KY-006 (Kit de sensores Keyes 6)

RCWL-0516: Módulo sensor de movimiento de microondas con radar Doppler