Archivo de la categoría: Componentes

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

Este módulo ha sido diseñado como una alternativa a los conocidos sensores de movimiento PIR (Sensor Infrarrojo Pasivo), ampliamente utilizados en alarmas antirrobo, y en luces de seguridad. Contiene en su interior todos los componentes electrónicos esenciales, incluyendo un regulador de tensión interno en el chip, que entrega 3,3V.

Al igual que el sensor PIR, este sensor también detecta solamente algo que esté en movimiento dentro de su rango de detección, pero en lugar de percibir la radiación del cuerpo negro (infrarrojo) de una persona que se mueve, este sensor utiliza una técnica de “radar Doppler de microondas” para detectar cualquier tipo de objetos en movimiento.

Tamaño:

Tiene un rango de sensibilidad de alrededor de 7 metros. Cuando se dispara, su pin de salida de nivel TTL (OUT) cambia de BAJO (0 V) a ALTO (3,3 V) por un tiempo de 2 a 3 segundos antes de volver a su estado inactivo (BAJO).

Características:

1. Voltaje de Operación: 4-28V
2. Corriente de Operación: 2,8mA (típica); 3mA (máx)
3. Distancia de Detección: 5-7m
4. Potencia de Transmisión: 20mW (típica); 30mW (máx)
5. Voltaje de Salida: 3,2-3,4V
6. Capacidad de Corriente del Voltaje de Salida: 100mA
7. Modo de Disparo: repetición de disparo
8. Nivel de Salida Bajo: 0V
9. Nivel de Salida Alto: 3,3V
10. Temperatura de Operación: -20º a 80º celsius
11. Temperatura de almacenamiento: -40º a 100º celsius

Como se ve en sus características, el sensor puede manejar un amplio rango de alimentación: desde 4 hasta 28 V. El pin de salida se puede utilizar para una multitud de tareas, como el manejo de un indicador auditivo o visual, o incluso para conectarlo a la entrada de un microcontrolador para su procesamiento.

Donde se instale, se debe evitar que haya partes metálicas delante del módulo. Del mismo modo, siempre hay que mantener un mínimo de espacio libre de 1 cm en la parte frontal y posterior del módulo.

Pines de salida:

CDS – Entrada de desactivación del sensor (bajo = desactivado)
VIN – entrada de alimentación de 4 a 28V CC
OUT – ALTO (3,3V) movimiento detectado / BAJO (0V) inactivo
GND – Tierra / 0V
3V3 – Salida de CC regulada (100mA máx)

El LDR es opcional. Si se instala, inhibe el funcionamiento del módulo cuando recibe la luz del día. Es evidente que se convierte en una función útil cuando se utiliza el sensor para encender luces de seguridad, ya que al hacerse de día dejará de encenderla por no ser necesaria esa iluminación con luz diurna.

La distancia de detección, y la duración de la salida del módulo cuando hay una detección, se pueden ajustar añadiendo componentes pasivos en unos puntos de soldadura de la parte posterior de la placa de circuito.

Los elementos opcionales para realizar distintos ajustes van soldados sobre los puntos marcados C-TM, R-GN y R-CDS (abajo, imagen del lado de la soldadura de la placa).

Hay puntos de soldadura donde agregar una resistencia dependiente de la luz LDR (marcado CDS). El pin de entrada CDS sirve para desactivar (anular la opción de detección de luz ambiental) en el sensor, si fuese necesario.

C-TM: Ajusta el tiempo de activación de repetición (predeterminado: 2 segundos). Agregar un condensador dará una repetición más extensa del tiempo de disparo.

R-GN: ajuste de la distancia de detección (por defecto 7 metros). Añadiendo una resistencia a la detección la distancia se hará más corta. Si está conectado con una resistencia de 1 MΩ, el rango de detección es de aproximadamente 5 m.

R-CDS: al agregar una resistencia (en paralelo con la resistencia interna de 1 MΩ), el usuario puede cambiar el umbral de detección de luz según su necesidad individual. Esto es aplicable solo cuando hay un sensor de luz soldado en los puntos de soldadura (CDS) en la parte frontal de la placa de circuito.

Una resistencia de 47–100K funciona bien con un LDR estándar de 5 mm.

Funcionamiento

La electrónica del módulo posee dos secciones igualmente importantes: un transmisor / receptor / mezclador de frecuencia de microondas basado en un transistor NPN de alta frecuencia MMBR941M, y una sección de frecuencia mucho más baja basada en un circuito integrado RCWL-9196.

Técnicamente, la sección de microondas se parece a un «oscilador Colpitt» con el inductor requerido (y los capacitores) hechos con trazas de la placa de circuito. El inductor (~ 10 nH) es el trazado de la curva S en la superficie superior, y los condensadores son la estructura en anillo en la superficie inferior, y también el bloque rectangular a la izquierda de la S curva.

Circuito de la placa

Ubicación de los componentes

Circuito del chip

Dos modos de salida

Un circuito de prueba

Antes de profundizar en algo, le recomiendo que se familiarice con el hardware y el procedimiento inicial de instalación/ejecución y tratar de hacer algunos pequeños experimentos.

Aunque puede usar RCWL-0516 solo con una fuente de alimentación y un LED en su salida, se puede agregar un circuito controlador de relé para controlar cargas externas que requieran mayor corriente al accionarse cuando se detecta un movimiento.




Esquemático de la primera prueba:

Tenga en cuenta que la resistencia de 1 k (R1) no es necesaria ya que el módulo tiene una resistencia de 1 kΩ entre el pin OUT y el pin de salida real del chip de 16 patas (RCWL-9196).

El relé (RL1) en el circuito es accionado por un transistor estándar BC547 o 2N3904 (T1), y hay un indicador de «relé encendido» (LED1) que se enciende cuando el relé está en estado activo. Si lo desea, también puede utilizar otros relés de voltaje diferente. Sin embargo, en ese caso, la entrada de la fuente de alimentación (que es de 5 V) tendría que ser cambiada (con algunas otras modificaciones menores, por supuesto). El conector de 2 pines (JP1) está reservado para pruebas futuras, y sólo es utilizable cuando hay un sensor de luz conectado al módulo.

Para fines experimentales, este circuito se puede construir en una placa de pruebas. Se puede usar un conector de 5 patas (sólo se requieren tres para la primera prueba) para conectar el módulo de radar.

A continuación se muestra el montaje de esta configuración de prueba (ver también el video de prueba):

Video

  

Efecto Doppler

En principio, el efecto Doppler es un cambio en la frecuencia recogida por un receptor de la señal reflejada en un objeto en movimiento. En los radares de efecto Doppler, para detectar un objeto en movimiento se puede usar una señal no modulada (CW). El receptor del sensor procesa la señal transmitida con la señal reflejada en un objetivo.

Debido al efecto Doppler, la velocidad de desplazamiento de un objeto en relación con la antena provoca un cambio en la frecuencia. Se puede estimar, simplemente, que la frecuencia Doppler (que es la frecuencia obtenida en el receptor) es la cantidad de medias-ondas de la frecuencia de señal enviada por el objetivo por segundo. Una velocidad más alta producirá una frecuencia Doppler más alta. Un sistema de este tipo, con una disposición para detectar la fase de la señal, también puede indicar el sentido del movimiento del objetivo: los objetos que se alejan generan una frecuencia más baja que la de la señal de sondeo, mientras que los objetos que se aproximan generan una frecuencia más alta.

Oscilador Colpitts

El oscilador Colpitts es un tipo popular de oscilador LC inventado por Edwin Colpitts en 1918. La figura que se ve a continuación muestra un oscilador Colpitts típico basado en un BJT con un circuito tanque, en el cual un inductor L está conectado en paralelo a la combinación en serie de condensadores C1 y C2. La frecuencia del oscilador Colpitts depende de los componentes de su circuito tanque, y se puede calcular mediante una fórmula simple (ver figura). Por ejemplo: si L = 27 uH, C1 = 1 nF y C2 = 15 nF, entonces F = 1 MHz. Tenga en cuenta que el oscilador Colpitts se puede sintonizar variando la inductancia o la capacitancia.

Diagrama de un oscilador Colpitts

En mi opinión, el sensor de microondas RCWL-0516 es una poderosa alternativa al sensor PIR común, pero este modelo tiene una documentación muy limitada (escasa), lo que lo convierte en un problema para los principiantes. Además de leer el material «chino» encontrado, también se han hecho algunas investigaciones para agregar alguna información para que alguien pueda usarla rápidamente. Mientras que, por el momento, no se ve otro uso para este módulo de sensor aparte de su aplicación de detección de movimiento, se puede adaptar fácilmente para agregar o modificar funciones. Una de ella sería una discriminación más detallada de las trayectorias de objetos que se alejan o se acercan. Debido a sus características de emisión de RF, no se deben colocar sensores a menos de 1 metro uno de otro, pero con dos sensores colocados a la distancia correcta sería posible, también, conocer si el objeto en movimiento lo hace de derecha a izquierda o a la inversa, de izquierda a derecha. Combinando ambas detecciones, es decir, aproximación y alejamiento, y desplazamiento en sentido horizontal respecto a los sensores, sería posible saber detalles de cómo se está desplazando el objeto detectado en el área monitoreada.


[Varias partes de este artículo están basadas en la recopilación de Joe Desbonnet y otros colaboradores mencionados en ésta en GitHub bajo licencia Creative Commons y autorización expresa del autor]

Arduino: reconocer colores con el módulo TCS230 – TCS3200

En principio hay que dejar en claro que nos vamos a encontrar en los sitios de venta y en la información técnica en-línea con diversos formatos de soporte físico de este sensor. Voy a mostrar al menos 4 en la imagen que sigue.

Confusiones de Mercado:

Antes de seguir se presenta la necesidad de aclarar que hay una controversia difícil de resolver: los vendedores, sea en sitios como Mercadolibre o internacionales como eBay, nombran a estos sensores como «TCS230 TCS3200 Recognition Color Sensor Detector Module» («Módulo Sensor Detector de Reconocimiento de Color TCS230 TCS3200»). Es decir, en el nombre descriptivo aparecen dos códigos, y estos códigos son los nombres de dos chips diferentes: TCS230 y TCS3200. Modelos diferentes. Si alguien desea dilucidar qué chip detector posee su propio módulo recomiendo leer y seguir este debate en el foro oficial de Arduino. O más fácil, una observación detallada de la ventana del chip permite ver de cuántos fotodiodos se compone. Si es una matriz de 8×8 (es visible con facilidad), su sensor corresponde a la descripción y ejemplos que tratamos aquí. Si la matriz es de 4×4 o 8×4, usted se encuentra en presencia de otro sensor. Digamos que, de ser así, y la cantidad y nombre de los pines de entrada/salida de su módulo coinciden con las descripciones que ofrezco aquí, usted puede probar con su sensor los diagramas de conexión y programas propuestos en este artículo. Para mayor tranquilidad, según sus hojas de datos, tanto el TCS230 como el TCS3200 poseen una matriz de 8×8 fotodiodos y la descripción de funcionamiento de la primera hoja coincide en todos sus parámetros, excepto en el tamaño de los fotodiodos, que es de 110 μm x 110 μm separados 134-μm centro a centro en el TCS3200, y de 120 µm x 120 µm separados 144-µm en el TCS230. También se nota una diferencia física en el diagrama de ambos chips, visible en la forma de sus conexiones metálicas internas. La opinión en el debate del foro de Arduino es que el TCS230 en una versión anterior de fabricación del TCS3200, lo cual es muy posible porque la empresa fabricante originalmente era TAOS, y luego se convirtió en AMS.

Diagrama en la hojas de datos del chip TCS230 y TCS3200:

Módulo Sensor/Detector de reconocimiento de color

Descripción básica:

Este módulo utiliza un sensor integrado provisto de 64 fotodiodos. De estos 64 fotodiodos, 16 tienen filtro para el color rojo, 16 para el color verde, 16 para el color azul y 16 para luz directa (sin ningún filtro).

Al estar distribuidos uniformemente sobre el chip, estos fotodiodos captan la luz, filtran los colores, y generan una salida de señal de onda cuadrada cuyo ancho de pulso indica la información sobre la intensidad del rojo (R = red: rojo), verde (G = green: verde) y azul (B = blue: azul).

Si observa de cerca un chip TCS3200, se pueden ver los diferentes filtros:

En el módulo que se ve en la foto de cabecera, el sensor se ha montado junto con cuatro LEDs blancos que aportan la iluminación. El módulo posee ocho pines de conexión.

El rango de distancia para la medición es de 10 mm. El módulo mide 31,6 mm x 24,4 mm. Sus pines están separados entre sí con la separación estándar de la placas de circuito impreso preperforadas y de las protoboard, o placas de prototipo.

El módulo acepta una alimentación de 3 a 5 voltios aplicada en dos pines, y para la conexión con un Arduino u otro microcontrolador se utilizan 6 pines:

  • Control: S0, S1, S2, S3
  • OUT (SALIDA): que se encarga de enviar la información
  • OE (Output Enable: habilitación de la salida)

Las entradas se pueden controlar desde una salida digital del Arduino u otra plaqueta de control, o en el caso de OE, conectarla a tierra (lado ─, o negativo, de la alimentación) para habilitar el módulo de manera constante.



Funcionamiento:

Los TCS3200 son sensores que convierten en frecuencia la intensidad de luz medida por una matriz de fotodiodos. La frecuencia entregada por el sensor TCS3200 es mayor cuanta mayor luminosidad se detecte. La configuración en matriz de los fotodiodos permite lograr un promedio del valor que se mide para compensar diferencias de color en la superficie que se muestrea. También dispone de filtros de color distribuidos de manera uniforme por la superficie, ubicados sobre los fotodiodos, que, al ir alternando su estado, sirven para distinguir cada componente de la luz.

La matriz de los sensores TCS3200 está formada por 16 fotodiodos con un filtro rojo, 16 con un filtro verde, 16 con un filtro azul y otros 16 sin filtrar. Los 64 fotodiodos no funcionan de manera simultánea sino que se activan por grupos de color antes de realizar la medición de la intensidad de luz que incide en ellos. Para elegir qué filtros deben activarse en cada momento, los TCS3200 disponen de dos pines, S2 y S3, con las que configurarlos.

Una vez obtenida la lectura de la iluminación, la corriente se convierte a frecuencia en forma de onda cuadrada con un ciclo de trabajo del 50% (mitad pulso alto, mitad pulso bajo). Enviar al microcontrolador una frecuencia en lugar de una corriente (intensidad) permite que sea más estable y soporte mejor las interferencias producidas por las pistas del circuito o los cables que unan el TCS3200 con el micro.

La máxima frecuencia que los TCS3200 puede generar (sin producir saturación) dependiendo de la intensidad de la luz medida y del color (longitud de onda de la luz) es de 600 KHz. Para poder utilizar un microcontrolador (u otros componentes) a poca velocidad, es posible escalar la frecuencia en tres niveles, la normal (máxima) al 100%, una media al 20% y otra baja al 2%. Los pines S0 y S1 de los TCS3200 son para establecer estos valores de frecuencia.

Conexiones del sensor

GND Tierra de la fuente de alimentación
OE (entrada) Habilitar la salida de frecuencia (activo bajo)
OUT (salida) Frecuencia de salida
S0, S1 (entradas) Entradas de selección de la escala de frecuencia de salida
S2, S3 (entradas) Entradas de selección del tipo de fotodiodo
VDD Voltaje de alimentación

Selección de filtro:

Para seleccionar el color que se lee de los fotodiodos, se utilizan los pines de control S2 y S3. Dado que los fotodiodos están conectados en paralelo, estableciendo S2 y S3 en diferentes combinaciones de BAJO y ALTO permite seleccionar diferentes grupos de fotodiodos. La tabla de abajo indica las opciones:

Escala de frecuencia:

Para el Arduino es común usar una escala de frecuencia del 20%. Por lo tanto, se establece el pin S0 en ALTO y el pin S1 en BAJO.




Sensor de color con Arduino y TCS3200:

En este ejemplo, se va a detectar colores con el Arduino y el sensor de color TCS3200. Esta configuración sensor no es muy precisa, pero funciona bien para detectar colores en proyectos simples.

Esquemático:

Conectar el sensor TCS3200 al Arduino es bastante sencillo. Simplemente se debe seguir el siguiente diagrama esquemático. Utilizo en este ejemplo el modelo que aparece en la foto en el encabezado de esta nota.

Las primeras pruebas serán:

1. Lectura y visualización de la frecuencia de salida en el monitor serie. En esta parte, anotaremos los valores de frecuencia al colocar diferentes colores frente al sensor.

2. Distinguir entre diferentes colores. En esta sección, insertaremos los valores de frecuencia seleccionados en el código previo, para que el sensor pueda distinguir entre diferentes colores. Detectaremos colores rojos, verdes y azules.

Leyendo la frecuencia de salida

Abrir el monitor serie configurado a una velocidad de 9600 baudios.

Colocar un objeto AZUL frente al sensor a diferentes distancias. Registrar dos mediciones: cuando el objeto se coloca a distancia del sensor, y cuando el objeto está cerca de él (ideal 1 cm).

Comprobar los valores que muestra el monitor serie. La frecuencia para el AZUL (B) debe ser la más baja en comparación con las lecturas de frecuencia del ROJO (R) y VERDE (G).

Con el objeto AZUL delante del sensor, los valores de frecuencia para el AZUL (B) oscilan entre dos valores que pueden estar separados por una relación cercana a 4 a 1 para las mediciones de cerca y de lejos.

Los valores que mostremos en este ejemplo no deben ser tomados como referencia. Para su código, usted debe medir los colores de su objeto específico con su propio sensor de color. Guarde los límites de frecuencia superior e inferior para el color AZUL, porque son necesarios más adelante.

Repetir el proceso con objetos de color VERDE y color ROJO y anotar los límites de frecuencia superior e inferior para cada uno de ellos.

Distinguir entre diferentes colores

El programa a continuación asigna los valores de frecuencia a valores RGB (que están cada uno entre 0 y 255).

En el paso anterior, cuando tomamos el máximo AZUL, digamos como ejemplo que obtuvimos una frecuencia de 60 y cuando colocamos el objeto AZUL a una distancia mayor obtuvimos 230.

Entonces, 60 en frecuencia corresponde a 255 (en RGB) y 230 en frecuencia a 0 (en RGB). La conversión se realiza con la función map() del lenguaje Arduino. En la función map() usted debe reemplazar los parámetros xx con los valores que usted ha registrado.

La explicación de las comparaciones es:

Cuando R es el valor máximo (en parámetros RGB), sabemos que tenemos un objeto rojo.
Cuando G es el valor máximo, sabemos que tenemos un objeto verde.
Cuando B es el valor máximo, sabemos que tenemos un objeto azul.

Al colocar algo delante del sensor, deberá mostrar en su monitor serie el color detectado: rojo, verde o azul.

Agregando al programa más comparaciones se puede ampliar la detección. Como se dijo a inicio de este artículo. se trata de un ejemplo simple de uso de este detector de colores, al que, con tiempo y dedicación, se puede ampliar a los niveles de complejidad que se desee.




Ingresar lectura de varios sensores a través de un único pin analógico

Cuando queremos crear un robot que distinga el blanco del negro sobre una superficie, se realiza esa detección con sensores infrarrojos reflectivos. Si la necesidad de determinar las ubicaciones debajo del sensor requiere precisión, hay que usar conjuntos de varios sensores, y sus salidas conectarlas a varios pines de entrada de un microcontrolador.

Por ejemplo, para seguidores de línea veloces (velocistas) tenemos la opción de utilizar un sensor como el de la imagen de arriba, el QTR-8A, fabricado por Pololu. O un conjunto sensor similar hecho por nosotros con, por ejemplo, un conjunto de CNY-70.

La mayoría de las veces los microcontroladores que usamos para controlar un robot tienen una cantidad limitada de pines de entrada y salida, y si tenemos que usar uno de éstos por cada sensor infrarrojo tendremos problemas para añadir funcionalidades a nuestro robot: comunicación serie, acelerómetros, giroscopios, I2C, sensores de distancia, detectores de choque, pulsadores o llaves, motores, tacómetros, leds, etc.

En los robots seguidores de línea el mínimo es dos sensores infrarrojos, aunque con esta cantidad el robot seguidor se moverá oscilando, y es muy posible que se escape en curvas cerradas o cruces de líneas. En los robots de Sumo se necesitan 4, incluso más si es un diseño más sofisticado, y en los seguidores de línea velocistas suele colocarse una hilera de 6 sensores o más.

Esto lleva al uso de demasiado pines de entrada en nuestro micro. Se podría utilizar algún tipo de multiplexor (como el CD74HC4067) para ir leyendo cíclicamente los sensores, pero eso significa el uso adicional de al menos 3 líneas, necesarias para seleccionar las entradas del multiplexor si se trata de un conjunto desde 6 y hasta 8 sensores, o 4 líneas adicionales si tenemos hasta 16 sensores. (Esta cantidad de sensores no es excesiva en un robot medianamente operativo y desarrollado.)

Pero veremos una manera de leer varios sensores de infrarrojos usando sólo un pin analógico del microcontrolador.

La idea es vieja: convertir la activación de los sensores en una selección de resistores que aportan cada uno diferentes corrientes, y que al sumarse entregan una salida combinada, con valores diferentes de voltaje. A esta configuración se le llama “resistor ladder” (escala de resistores) y lo que construimos es, en concreto, un convertidor digital a analógico.

Al usar varias resistencias, dependiendo de la entrada que se active, el pin del micro recibe una tensión distinta. Si el conjunto de resistores está bien diseñado, se puede determinar cuál es la entrada que se ha activado.




Con sensores basados en led infrarrojos y fototransistores, la señal obtenida será analógica y relacionada con la luz que se refleja, a menos que los sectores blanco y negro sean muy definidos y que no haya luz ambiente que interfiera. Para convertir estos valores intermedios a ceros y unos utilizamos un chip CMOS inversor Schmitt trigger 40106 o 74HC14, y en sus salidas ponemos resistencias en serie de distintos valores, que al final de la cadena se unen a un punto en común.

Desde ese punto se tomará el valor de la tensión utilizando una entrada analógica, y si está bien calculado el conjunto de resistencias, el valor analógico será distinto dependiendo del sensor que se haya activado. De ese modo, en el caso de un seguidor de líneas, conoceremos la posición del robot respecto al curso que debe seguir.

La ventaja es que tener varios sensores CNY70, o un conjunto QTR-8A ya no es un problema, porque podemos leer todos los valores con un único pin de nuestro microcontrolador, y dejar el resto libre para otras funciones.

Recordemos que la conversión de analógico a digital dentro del módulo de un microcontrolador lleva tiempo. Por cada sensor que se lee con los pines analógicos se produce una pausa, ya que la lectura de un convertidor de analógico a digital (ADC) típico tarda un tiempo en completarse. Si se conectan y leen por separado, a este retardo hay que multiplicarlo por la cantidad de sensores.

Sin embargo, con esta solución sólo se hace UNA lectura analógica.

Como vamos a usar un inversor schmitt trigger, y éste sólo nos da una señal alta (5V) o baja (0V) en su salida, con las resistencias siempre vamos a obtener los mismos resultados de tensión, aunque cambiemos de entorno (pistas de competición, o caseras con distinta iluminación), por tanto no hay necesidad de calibrar.

Y utilizando las resistencias correctas, sólo es necesario tener un ADC de 8 bits (0-255) para medir el voltaje (en tramos de 0,02V aproximadamente) con una referencia de 5V. En un Arduino el ADC tiene 4 veces más resolución, ya que su conversión es de 10 bits, o sea que entrega valores digitales entre 0 y 1023.

Pondremos como ejemplo 8 sensores infrarrojos que leen una superficie que tiene fondo blanco (que devuelve un valor cercano a 0), y la línea de color negro (que es cuando devuelve un voltaje mayor). Como inversor schmitt trigger se puede usar un 40106 o un 74HCT14. Ambos tienen 6 entradas/salidas. Como se necesitan 2 entradas más para llegar a las 8 del sensor, debemos usar un segundo chip inversor. También se necesitan 8 diodos y 9 resistores.

La salida de cada CNY-70, o de cada elemento del conjunto QTR-8A, va dirigida a una de las entradas de uno de los inversores. La salida correspondiente de ese inversor va a un diodo de señal como el 1N914 o 1N4148. Esto es necesario, ya que al estar unidas todas las salidas del otro lado de los resistores, con los diodos se evita que si una salida está a 5V, y otra a 0V, se derive una corriente entre ellas.

Después del diodo viene el resistor, que dependiendo de su valor hará que la tensión en el punto de unión caiga más, o menos. El valor del resistor debe ser único, diferente del de otros sensores, para que cada caída de tensión sea distinta.

Finalmente se unen todas las salidas a otro resistor para crear lo que se denomina un divisor de tensión. La línea que va al pin analógico del microcontrolador se debe conectar en ese punto, para que éste pueda medir el voltaje total y diferenciar qué sensor o sensores se activan.




Este resistor de terminación al que se une el resto va, en su otro extremo, a la alimentación (Vcc).

Esta configuración está diseñada para poder leer un fondo blanco con una línea negra, siempre y cuando los sensores nos den un valor cercano a 0 cuando leen el fondo blanco, y un valor mucho mayor cuando leen la línea negra. Si se necesita cambiar este comportamiento, se puede conectar la resistencia final a masa e invertir los diodos.

Ahora que ya recibimos distintas tensiones en el pin analógico del microcontrolador, dependiendo de los sensores que estén activos o no, debemos plantearnos cuántas mediciones posibles podemos obtener.

Como trabajamos en el ejemplo de un seguidor velocista, se pueden dar los siguientes casos:

  • Todos los sensores leen el fondo blanco.
  • Un sensor lee la línea negra y el resto el fondo blanco.
  • Dos sensores leen la línea negra y el resto el fondo blanco.

Con esta combinatoria, para conocer las variaciones debemos multiplicar el número de sensores por 2. En total tenemos 16 mediciones posibles (y diferentes) para todos los estados en que pueden estar los sensores.

He aquí un esquema con los distintos estados, el voltaje resultante (según una simulación) y el valor del ADC llevado a 8 bits:

Para un robot de Sumo ya no vale el cálculo anterior, ya que habría 7 combinaciones posibles de sus 4 sensores, y el fondo es negro con una línea blanca:

Ahora sólo queda medir una primera vez los diferentes valores de los sensores, y luego programar en nuestro microcontrolador una tabla con esos valores, para utilizar luego en las comparaciones del programa. Esta lista de valores servirá para siempre. Por supuesto, como los valores de los resistores tienen un margen de error, y la caída de tensión sobre los diodos no suele ser siempre el mismo, sólo podremos hablar de valores orientativos y únicamente podemos obtener los valores correctos midiéndolos directamente con un tester, o conectando el circuito al microcontrolador y que éste nos los informe a través del puerto COM y un monitor serie.



Convertidor de voltaje MT3608

El convertidor de voltaje CC-CC Step-Up (elevador) MT3608 tiene como función entregar un voltaje de salida regulado y constante superior al voltaje de entrada, sin importar las variaciones del voltaje de entrada o de carga. Soporta corrientes de salida de hasta 2A, voltaje de entrada entre 2V a 24V, y voltaje de salida entre 2V a 28V. El voltaje de salida se ajusta mediante un potenciómetro multivuelta o preset.

VENTAJOSA UTILIZACIÓN EN SISTEMAS BASADOS EN UN MICROCONTROLADOR

Cuando un sistema basado en Arduino debe ser móvil, es normal utilizar una pila de 9V para alimentar el Arduino y aislarlo de las variaciones de voltaje del conjunto de pilas que se utilice. Más aún cuando estas pilas alimentan elementos como motores, que generan pulsos de consumo en el momento del arranque y producen bajones momentáneos, que pueden reiniciar al Arduino, o bajones cuando aumenta el esfuerzo que deben hacer, y las pilas se van descargando.

La tecnología nos ofrece hoy otra opción, que resulta mejor en varios sentidos: el módulo MT3608 es más barato o vale casi igual que una pila de 9V, pero dura muchísimo mas que ella (y las pilas de 9V recargables son muy caras, en el orden de 10 a 20 veces más que una pila descartable, o el módulo). El voltaje de alimentación que ofrece es extremadamente estable y se mantiene hasta que las pilas que alimentan el sistema se descarguen por debajo de 2V. Y para aplicaciones móviles, lo importante, que es el peso: el módulo es bastante más liviano que la pila.

CONVERTIDORES CC-CC (DC-DC en inglés)

Los convertidores CC-CC son circuitos capaces de transformar un nivel de voltaje a otro de mayor nivel, o de menor nivel.

Existen dos estilos de circuito en los convertidores o reguladores CC-CC: lineales y conmutados (switching). Los reguladores de tipo lineal, como el clásico LM7805 o el LM317, son muy sencillos de utilizar pero no son eficientes energéticamente. Por el contrario, los reguladores de tipo conmutado presentan altos niveles de eficiencia energética (superior al 80%).

Los convertidores conmutados convierten el voltaje mediante el almacenamiento periódico de energía de entrada y la posterior liberación de esa energía en la salida de forma que el nivel de voltaje final es el deseado.

Los convertidores CC-CC conmutados con el objetivo de convertir la energía eléctrica con la máxima eficiencia poseen componentes que no producen perdidas de alimentación, es decir, que no absorben energía.

Encontramos en estos circuitos componentes principales de dos tipos básicos: conmutadores y almacenadores. Los conmutadores son interruptores del paso de corriente, que idealmente no presentan pérdidas por conmutación. Normalmente son transistores MOSFET. Los componentes almacenadores son los inductores y capacitores, que almacenan la energía temporalmente para luego devolverla al circuito.

Podemos clasificar a los conmutadores CC-CC por relación voltaje de entrada-voltaje de salida en: reductores (Step-Down o Buck), elevadores (Step-Up o Boost), y en algunos casos de doble función: reductores-elevadores (Step-Up-Down o Buck-Boost).

El convertidor CC-CC MT3608 es un regulador de tipo conmutado elevador (Step-Up o Boost) con una alta eficiencia de conversión, excelente regulación de línea y bajo voltaje de alterna superpuesta a la salida (ripple en inglés).





El módulo reduce al mínimo el uso de componentes externos para simplificar el diseño de fuentes de alimentación. Permite obtener un voltaje regulado a partir de una fuente con un voltaje inferior, por ejemplo: obtener 5V, 9V o 12V a partir de una batería de litio de 3,7V. Es capaz de manejar una carga de hasta 2A, o 6W máx.

DIAGRAMA DE COMPONENTES

ESPECIFICACIONES TÉCNICAS

  • Convertidor CC-CC Boost: MT3608
  • Voltaje de entrada: 2V a 24V CC
  • Voltaje de salida: 5V a 28V CC
  • Voltaje de salida ajustable (regulable por un potenciómetro)
  • Corriente de salida: máxima 2A (usar disipador para corrientes mayores a 1,5A)
  • Potencia de salida: 6W
  • Eficiencia de conversión: 93% máx.
  • Frecuencia de Trabajo: 1,2MHz
  • Protección de sobre-temperatura: SI (apaga la salida)
  • Protección de corto circuito: NO
  • Protección limitadora de corriente: SI (4A)
  • Protección frente a inversión de polaridad: NO
  • Dimensiones: 36mm x 17mm x 7mm

APLICACIONES

  • Fuentes de voltajes de salida de 6 a 28 V a partir de voltajes menores, como conjuntos de pilas recargables de 4,5 a 6V, o de litio de 3,7V
  • Robótica móvil

CONEXIONES

ENLACES

Hoja de datos del chip regulador MT3608
Concepto de convertidor CC-CC
Concepto de convertidor Boost
Video sobre convertidores CC-CC



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

El VL53L0X es un producto novedoso basado en el sistema FlightSense de la empresa ST Microelectronics. Es una tecnología innovadora que permite medir distancia con independencia de la reflectividad del objetivo.

En lugar de calcular la distancia midiendo la cantidad de luz reflejada desde el objeto (en lo que influye significativamente el color y tipo de superficie), el VL53L0X mide con precisión el tiempo que tarda la luz en viajar desde el objeto más cercano y volver reflejada hasta el sensor (un proceso llamado Time-of-Fly, o Tiempo de vuelo).

Debido a que utiliza una fuente de luz con un haz muy estrecho, es bueno para determinar la distancia de solamente la superficie que está directamente delante. A diferencia de los sonares ultrasónicos que hacen rebotar sus ondas de sonido, en este caso el «cono» de la detección es muy estrecho. A diferencia de los sensores de distancia IR que intentan medir la cantidad de luz que regresa, el VL53L0x es mucho más preciso y no tiene problemas de linealidad o «imágenes dobles», en las que no se puede saber si un objeto está muy lejos o muy cerca.

Puede medir distancia con un alcance de hasta 2 m.

El control del procesador y la lectura de los resultados se realizan por medio de una interfaz I2C.

Características clave

  • Emisor infrarrojo: 940 nm
  • Distancia: hasta 2000 mm
  • Dirección I2C: Programable
  • Fuente de luz VCSEL (Vertical-cavity surface-emitting laser = Láser de emisión de superficie de cavidad vertical)
  • Sensor de rango con avanzado microcontrolador
  • El chip mide sólo 4,4 x 2,4 x 1,0 mm
  • Medición de distancia rápida y precisa
  • Mide rango absoluto hasta 2 m.
  • El rango reportado es independiente de la reflectividad del objetivo
  • Compensación óptica cruzada integrada avanzada para simplificar la selección del vidrio de cobertura
  • Seguro para el ojo humano
  • Dispositivo láser de clase 1 que cumple con la última norma IEC 60825-1: 2014 – 3ª edición
  • Fácil integración por el sistema de montaje de soldadura del chip
  • No tiene óptica adicional
  • Fuente de alimentación individual
  • Regulador de voltaje integrado en la plaqueta
  • Interfaz I2C para control de dispositivos y transferencia de datos
  • Pines de entrada salida de uso general Xshutdown (para reinicio) e Interrupt (interrupción)
  • Dirección I2C programable

Conexión con Arduino

  • VCC (en algunos fabricantes VIN) es la fuente de alimentación, el módulo acepta de 3 a 5V de alimentación. Use el mismo voltaje en el que se basa la lógica del microcontrolador. Para la mayoría de los Arduinos es 5V.
  • Conecte GND a tierra/alimentación común (marcado también GND en el Arduino).
  • Conecte el pin SCL al pin SCL (señal de reloj I2C en su Arduino. En un Arduino UNO también se conoce como pin A5, aunque está disponible del lado de los pines digitales. En un Mega es el digital 21 y en un Leonardo es el digital 3.
  • Conecte el pin SDA al pin SDA (datos I2C) en su Arduino. En un Arduino UNO también se conoce como pin A4, en un Mega es el digital 20 y en un Leonardo es el digital 2.

Los pines adicionales son:

GPIO1: este es un pin que usa el sensor para indicar que están listos los datos. Es útil para cuando se realiza una detección continua. Tenga en cuenta que no hay ajuste de nivel en este pin, es posible que no se pueda leer el voltaje de nivel lógico de 2,8V en un microcontrolador de 5V (podríamos en un Arduino UNO, pero no es seguro). La biblioteca de Adafruit no hace uso de este pin, pero está ahí para usuarios avanzados.

XSHUT – es el pin de apagado/reinicio para el sensor. Por defecto es alto. Hay un diodo de cambio de nivel para que se pueda usar la lógica de 3,3 – 5 V en este pin. Cuando el pin va a nivel bajo, el sensor entra en modo de apagado.




Abra el IDE de Arduino. Mantenga siempre actualizado a la última versión.

Abra en el menú HERRAMIENTAS la opción ADMINISTRAR BIBLIOTECAS.

Búsqueda y carga en el IDE Arduino de la biblioteca del VL53L0X

La elección ADMINISTRAR BIBLIOTECAS abrirá la siguiente ventana del Gestor de Bibliotecas:

En esa ventana tenemos, en la parte superior derecha una ventana de editor con la leyenda «Filtre su búsqueda…«, donde debemos escribir el nombre del dispositivo:

Esta búsqueda nos ofrece varias bibliotecas. Para Arduino UNO y relacionados tenemos la de Adafruit y la de Pololu. En artículos en la web recomiendan la de Pololu, porque es más simple que la del otro fabricante. De todos modos, podemos instalar ambas. No hay conflictos en esto. El botón que dice «Instalar» aparece cuando se coloca el puntero del mouse en la biblioteca elegida. Si no aparece, es porque ya está instalada. Si no fuese así, recurra a el enlace «More info» y descargue la biblioteca desde el sitio GitHub, en formato ZIP, y proceda a instalarla con las instrucciones que ofrecen AQUÍ.

El gestor nos indicará que la biblioteca está lista con un cartel remarcado «INSTALLED».

Las bibliotecas quedan listas para ser utilizadas. La que corresponde a Pololu se llama VL53L0X, mientras que la de Adafruit se llama igual y está dentro de todas las bibliotecas de este fabricante, que llevan su nombre comercial como prefijo.

Dirección para el bus I2C

La dirección por defecto de I2C es 0x29, pero recuerde que es posible programar esta dirección en el VL53L0X. Con la biblioteca Adafruit, hay dos maneras de establecer la nueva dirección. Durante la inicialización, en lugar de llamar a lox.begin(), se llama a lox.begin(0x30) para establecer la dirección en 0x30. O se puede, más adelante, llamar a lox.setAddress(0x30) en cualquier momento. Es importante realizar esta operación con una sola placa VL53L0X conectada al bus I2C, o todas quedarán cambiadas.

Programas de prueba

«Continuous», de Pololu
(Este ejemplo muestra cómo usar el «modo continuo» para tomar mediciones de distancia con el VL53L0X. La información se muestra en la pantalla emergente del Monitor Serie, que debe estar fijado en 9600 baudios.)

Y el que sigue es un ejemplo con la biblioteca de Adafruit, con los comentarios traducidos. Siempre con la misma conexión del diagrama de arriba.

En el programa que sigue, para reducir el ruido de la medición se muestra el promedio de varias medidas. Las líneas comentadas muestran los distintos modos de funcionamiento.