Archivo por meses: enero 2020

Módulo de llave pulsadora – KY-004 (Kit de sensores Keyes 4)

Bien, yo hubiese obviado hacer un artículo sobre este módulo: es un pulsador, lo mismo que tomar dos cables y unirlos para enviar una señal. Pero bueno, es parte del kit de “sensores” para Arduino, es el que sigue en orden en la secuencia númerica de Keyes, así que aquí está.

El módulo Keyes KY-004 es una plaqueta con un pulsador y una resistencia que, cuando no se pulsa el interruptor, mantiene la línea en 0V, y cuando se lo pulsa envía un nivel alto. Si no estuviese el resistor, la línea de entrada de un microcontrolador quedaría flotante, y por una entrada flotante ingresa ruido. Es decir, no se puede saber qué puede leer el microcontrolador si uno quiere ingresar ese dato.

Módulo KY-004:

El módulo consta de un interruptor táctil o botón pulsador FZ1713 y una resistencia.

Capacidad del contacto: 50mA 12V CC
Temperatura: -25° C a 105° C
Vida de los contactos: 100.000 ciclos.
Fuerza de operación: 180/230 ± 20gf
Dimensiones: 18,5 mm x 15 mm

Conexión:

La línea central se conecta a +5V, la línea marcada con un signo a GND, y la salida está marcada con la letra S. Para conectarlo al Arduino se une a la línea digital 2 de la plaqueta.

Módulo de llave pulsadora – KY-004: Dibujo de la pieza para el editor Fritzing

Artículos relacionados:

Módulo sensor de temperatura KY-001 (Kit de sensores Keyes 1)
Módulo detector de vibración KY-002 (Kit de sensores Keyes 2)
Módulo de Sensor Magnético por efecto Hall KY-003 (Kit de sensores Keyes 3)
Módulo de llave pulsadora – KY-004 (Kit de sensores Keyes 4)
Módulo sensor de temperatura KY-005 (Kit de sensores Keyes 5)
Módulo de emisor piezoeléctrico pasivo KY-006 (Kit de sensores Keyes 6)
Módulo codificador rotativo KY-040 [ó KY-007] – (Kit de sensores Keyes 040/007)




KY-003 Módulo de Sensor Magnético por efecto Hall (Kit de sensores Keyes 3)

Descripción:

El detector magnético Keyes KY-003 contiene un circuito integrado 3144UA-S diseñado para detectar campos magnéticos. Cuando se le aproxima el campo magnético de un objeto (por ejemplo un imán) indica esta detección cerrando a tierra el pin «S«, que es el colector de un transistor NPN sin resistor de polarización. El método de funcionamiento está basado en el efecto Hall.

El pin «S» es el de la señal de detección y corresponde al pin de la derecha de la foto de arriba, el pin del centro es el positivo de la alimentación, y el pin de la izquierda es el negativo (marcado “”).

Diagrama de conexiones del módulo:

Especificaciones:

■ La tensión de trabajo es desde 4,5 a 24 Voltios VDC
■ Consume 3 mA en reposo y 8 mA cuando detecta un campo magnético
■ La tensión de la señal de salida depende de la conexión del resistor de polarización (pull-up): 3,3V, 5V
■ La temperatura de trabajo va desde -40 a 85 grados C.
■ Dimensiones: 18,5 mm x 15 mm

3144EUA-S : Integrado de medición de campo magnético por efecto Hall

El circuito integrado 3144EUA-S, sensible al magnetismo por efecto Hall, y en esta versión comercial puede operar a temperaturas de hasta 85º C. El sensor está diseñado como un interruptor que se enciende/apaga en presencia de un campo magnético. Colocando un imán cerca de él, su salida se activará. La polaridad del campo magnético influye en la acción de conmutación.

El dispositivo incluye un regulador de voltaje interno que le permite operar con voltajes de alimentación de 4,5 a 24 voltios, diodo de protección de inversión de batería, generador de voltaje Hall cuadrático, circuito de compensación de temperatura, amplificador de pequeña señal, disparador Schmitt y salida de colector abierto que puede conducir hasta 25 mA. Con la salida adecuadamente polarizada por un resistor, se puede utilizar con circuitos lógicos bipolares o CMOS.

El A3144– es un reemplazo mejorado para el UGN/UGS3120–. El primer carácter del sufijo del número de pieza determina el rango de temperatura de funcionamiento del dispositivo.

El sufijo ‘E–’ es para el rango de temperatura industrial y automotriz de -40 ° C a + 85 ° C.

Características y beneficios

■ Superior estabilidad a la temperatura para aplicaciones automotrices o industriales
■ Operación de 4,5 V a 24 V. Solo necesita un suministro no regulado
■ Salida de colector abierto de 25 mA. Compatible con lógica digital
■ Protección contra inversión de la alimentación
■ Se activar con imanes permanentes pequeños disponibles comercialmente
■ Confiabilidad por ser de estado sólido
■ Tamaño pequeño
■ Resistente al estrés físico

Diagrama de conexión

No es necesario un Arduino para obtener una lectura de este sensor, ya que se puede conectar un led con un resistor que asegure que no circule más corriente que la que puede manejar el integrado (que es de 25 mA).

El sensor se puede conectar de manera directa con este circuito:

El led se encenderá cuando el sensor sea activado por un campo magnético.

Pero si necesita ingresar la señal a un sistema microcontrolado, conecte la línea de alimentación (centro) a +5 y tierra () a GND. Conecte la señal (S) al pin digital 2 en el Arduino.

Con este circuito el Arduino encenderá el LED incluido en la placa Arduino cuando se detecte un campo magnético.

Código de ejemplo




KY-003 Módulo de Sensor Magnético por efecto Hall: Dibujo de la pieza para el editor Fritzing

Artículos relacionados:

Módulo sensor de temperatura KY-001 (Kit de sensores Keyes 1)
Módulo detector de vibración KY-002 (Kit de sensores Keyes 2)
Módulo de Sensor Magnético por efecto Hall KY-003 (Kit de sensores Keyes 3)
Módulo de llave pulsadora – KY-004 (Kit de sensores Keyes 4)
Módulo sensor de temperatura KY-005 (Kit de sensores Keyes 5)
Módulo de emisor piezoeléctrico pasivo KY-006 (Kit de sensores Keyes 6)

Arduino: ampliar cantidad de salidas digitales con 74HC595

A veces un Arduino queda corto de pines, y se nos presenta la necesidad de ampliar la cantidad de salidas digitales. La manera más usual es con un registro de desplazamiento (Shift Register, en inglés), que convierte los datos en serie en salidas paralelas. Esto será de utilidad en aquellas placas como Arduino UNO, Nano, Micro, etc, que a veces resultan un poco limitados en este sentido.

El chip 74HC595 —para algunos un misterioso integrado de 16 patas que viene incluido en muchos kits de inicio para Arduino— tiene una ventaja esencial ante otros chips del mismo tipo: tiene un registro que mantiene el dato en los pines de salida sin variación mientras se desplazan los datos dentro del chip.

Adicionalmente, tiene la posibilidad de desconectar las salidas de este registro de los pines de salida del chip, por medio de la entrada de control OE (Ouput Enable = Habilitación de Salidas), dejándolos en un estado de alta impedancia, o tercer estado. No usaremos esta opción aquí, pero en futuros artículos veremos la importancia de esta posibilidad.

Otro chip opcional para este uso, aunque de 16 bits y también con registro de salida, es el circuito integrado 74LS673, pero es más difícil de encontrar en el mercado.

Al utilizar el circuito integrado 74HC595, ocupamos solamente 3 salidas digitales en la placa Arduino, pero obtenemos 8 salidas digitales adicionales. Este 3 x 8 en pines no parece una gran mejora (ganamos 5 salidas), pero si se agregan más chips, la ampliación puede llegar a ser importante.

Poniendo más chips conectados en serie se pueden obtener otras 8 salidas más por cada chip agregado, y la cantidad de pines ocupados en el Arduino sigue igual: solamente tres. Con tres chips tendremos 24 salidas, con 8 chips tendremos 64, y con 32 chips tendremos una ampliación de 256 nuevas salidas.

Para calcular la cantidad de salidas que obtendremos, hay que multiplicar la cantidad de chips por 8.

En teoría, se puede poner una cantidad indefinida de chips en serie y obtener centenares de salidas adicionales. Sólo se debe tener en cuenta que los datos no se desplazan instantáneamente, debido a los tiempos de programa. Supongamos una cantidad de 32 bytes a poner en las salidas de 32 chips —256 bits—. Colocar todos esos datos en los registros de salida de 32 chips 74HC595 implica un tiempo que puede ser sustancial y prohibitivo para algunas aplicaciones que requieren salidas con variaciones rápidas, sin que importe si se cambia un único bit en las salidas, o los 256 bits juntos. Para aplicaciones sin tiempos críticos, como encendido de leds, artefactos a través de relés, displays de segmentos o control de motores, no existe ningún problema de tiempos.

La mayoría de los chips de registro de desplazamiento pueden manejarse elevadas frecuencias en MHz para el desplazamiento, todos superan la máxima velocidad de envío de datos en serie de un Atmega328P, ya que para hacerlo debemos usar una secuencia de instrucciones de programa. Algunas hojas de datos nos muestran frecuencias de desplazamiento de 100 MHz, 36 MHz, y similares. Un Arduino estándar, con cristal de 16 MHz, y aún más teniendo que usar una secuencia de instrucciones para enviar cada bit, no superará nunca esas frecuencias para el desplazamiento de los datos. De modo que no se nos presentarán problemas de límite de velocidad al usar estos chips.




Registro de desplazamiento 74HC595


Descripción de pines:

Las salidas son Q0 a Q7 (pata 15, y de 1 a 7), y las tres entradas que van conectadas a las salidas de la placa Arduino son DS = entrada de datos (14), SCTP, para ingresar un pulso que deja fijos los datos en el registro de salida (12), y SHCP, que es el pulso de reloj, o clock, que hace desplazar los datos en el registro de desplazamiento (11).

Estas son las señales más importantes de comprender y profundizar.

Luego está la entrada de voltaje de 5V (16), la conexión a tierra (8), y Q7S (9), la salida que se utiliza para continuar la conexión de más chips en serie.

La hoja de datos (datasheet) permite ver con más detalle los datos del chip.

Por la entrada de reloj SHCP se ingresan pulsos que indican el tiempo preciso en que debe ocurrir el ingreso de bits por la entrada DS, y el desplazamiento en el registro.

La entrada de datos es DS.

Y la señal SCTP es un pulso que traspasa los datos del registro de desplazamiento al de salida, y de allí a las salidas digitales.

Las línea SHCP es la señal de reloj. La segunda línea, DS, es la secuencia de datos que queremos hacer llegar a las salidas Q1-Q7.

Con el pulso de reloj el registro de desplazamiento del 74HC595 desplaza los que entraron anteriormente hacia el interior del registro e ingresa el valor que hayamos puesto en el pin de Arduino que está conectado a su entrada DS. Este bit es parte de la secuencia de datos de 8 bits (o sea que este suceso ocurrirá 8 veces).

Para el primer pulso el bit 0, para el segundo pulso el bit 1, y así sucesivamente hasta completar los 8 bits de un byte.

En ese momento los datos del registro de desplazamiento aún no estarán en las salidas, es necesario que la señal STCP reciba un pulso. Cuando STCP sube de nivel bajo a nivel alto, los datos que tenemos en el registro de desplazamiento pasan a estar disponibles en las salidas Q0 – Q7.

En el ejemplo del gráfico de tiempos de arriba, estamos poniendo a nivel ALTO (HIGH) el bit que aparecerá en Q7, y en nivel BAJO (LOW) el resto.

El manejo de las líneas de Arduino

En principio y para mejor comprensión deberíamos dar una mirada a la función shiftOut(). Esta función se ocupará de ir poniendo de a un bit por vez en la salida del Arduino hasta completar los 8 bits del byte que vamos a transferir.

La función shiftOut()

Sintaxis: shiftOut (pinDato, pinClock, ordenBits, valor)

Desplaza un byte de datos (llamado valor) de a un bit por vez hacia el pin indicado en pinDato. Según lo que se indique en el parámetro ordenBits de la función, el desplazamiento comienza desde el bit más significativo (es decir, el que se ubica más a la izquierda en un byte, en la representación estándar) o el menos significativo (más a la derecha). Cada bit se escribe hacia un pin de datos (pinDato), y después se genera un pulso en el pin de reloj en pinClock (alto, luego bajo), lo que indica que el bit está disponible.

Nota: hay que asegurarse que el pin de reloj (pinClock) esté preparado en valor BAJO antes de la llamada a shiftOut(). Por ejemplo, con una llamada a digitalWrite(pinClock, LOW).

Esta es una implementación que utiliza software. Veremos también más adelante la forma de usar la biblioteca SPI, que provee una implementación por hardware más rápida, aunque debemos recordar que solo funciona en los pines definidos para esta interfaz.

Parámetros de la función shiftOut():

pinDato: el pin en el que se coloca cada bit
pinClock: el pin para producir el pulso una vez que se haya establecido el valor correcto en pinDato
ordenBits: indica en qué orden se desplazarán los bits hacia el pin de salida; ya sea MSBFIRST o LSBFIRST (el bit más significativo primero, o el bit menos significativo primero)
valor: los datos a desplazar. (formato byte)

Circuito de ejemplo:

AMPLIAR EL DIAGRAMA

Código de ejemplo:

Supongamos que deseamos poner en los pines de salida un byte con el valor B10101010, o sea así:

Más programas de ejemplo:

El envío de datos en una función propia

El programa anterior repite varias veces un código idéntico para el envío del dato. Es la opción perfecta para convertir esta parte repetida del código en una función propia. Además de reducir la longitud de comandos del programa y hacerlo mucho más legible, creamos una función que nos servirá para cualquier otro programa que envíe dato a un integrado 74HC55. El funcionamiento del envío de datos en este programa a continuación produce exactamente la misma secuencia y funcionamiento del programa.

Diagrama para salida de 16 bits con dos 74HC595

No hay diferencia importante entre los circuitos de cada chip, se ven idénticos; el único cambio es de dónde recibe la información de entrada en DS cada uno: el primero desde la salida digital 11 del Arduino, el segundo desde la salida Q7S del primero. Y así se podría continuar la cadena, agregando de a 8 bits a las salidas. Como se puede observar en el diagrama, las señales de control y clock, STCP y SHCP, de los pines 11 y 12 de los 74HC595, se repiten en paralelo en ambos chips, y así continuaría en toda la cadena si se agregasen más salidas, como se puede ver en el diagrama mostrado más arriba con 4 chips 74HC395.

Programa de ejemplo para 16 bits:

En próximas notas veremos estos circuitos controlados por la biblioteca SPI, en otra el uso del chip serie a paralelo 74LS673 para obtener 16 salidas y en otra nota veremos el uso de un chip paralelo a serie 74HC165 para obtener una ampliación de 8 entradas.


ARTÍCULOS RELACIONADOS:

Arduino: Entradas y salidas – Manipulación de puertos
Ingresar lectura de varios sensores a través de un único pin analógico
Arduino UNO R3 – Conectándolo al mundo exterior

Módulo detector de vibración KY-002 (Kit de sensores Keyes 2)

Descripción:

El módulo KY-002 de Keyes para Arduino permite la detección de impactos y vibraciones.

El módulo detector de vibración KY-002 consta de un resorte y un poste conductor central con una resistencia de 10K conectada a la alimentación positiva. Ante golpes y vibraciones, el resorte reacciona desplazándose de su centro y cerrando el circuito a tierra. Por esto la salida es inversa: un nivel ALTO significa que no hay detección, y un nivel BAJO que sí existe impacto o vibración.

Especificaciones:

  • Voltaje de operación: 3,3V – 5V
  • Dimensiones: 18,5 mm x 15 mm

Conecte la línea de alimentación (pin central) del KY-002 a +5V del Arduino. Conecte el pin de tierra marcado al pin GND del Arduino. Conecte el pin de señal marcado S al pin digital 2 del Arduino.

Diagrama de la placa KY-002:

Módulo Detector de Vibración KY-002: Dibujo de la pieza para el editor Fritzing

Conexión con el Arduino:

Pin S de KY-002 al pin digital 2 del Arduino.
Pin central (línea de alimentación) de KY-002 al +5V de Arduino.
Pin – de KY-002 a GND de Arduino.

Atención: hay módulos en los que la salida S está cambiada por el negativo (GND), y viceversa. No es un gran problema porque las conexiones tienen un leyenda visible en la placa. La literatura original de Keyes muestra ambas configuraciones, de modo que es posible que ellos fabriquen los dos módulos. Este artículo está basado en el módulo que teníamos de modelo para las pruebas. El símbolo de Fritzing (no el de esta imagen —que está corregido—, sino el original que se obtiene en el enlace) indica invertidas la salida S y el GND. Sólo la línea central de alimentación se mantiene en el mismo lugar en ambas configuraciones. Antes de conectar, observe siempre las notaciones grabadas en la plaqueta que usted adquiera, y conecte S al pin 2 del Arduino y el pin marcado con el símbolo a GND del Arduino.

Programa de ejemplo:

El siguiente programa de Arduino genera un parpadeo del led incluido en la placa Arduino cuando se detecta movimiento al golpear o sacudir el módulo KY-002. Se utiliza el pin digital 2 del Arduino como entrada de la señal del sensor.

Artículos relacionados:

Módulo sensor de temperatura KY-001 (Kit de sensores Keyes 1)
Módulo detector de vibración KY-002 (Kit de sensores Keyes 2)
Módulo de Sensor Magnético por efecto Hall KY-003 (Kit de sensores Keyes 3)
Módulo de llave pulsadora – KY-004 (Kit de sensores Keyes 4)
Módulo sensor de temperatura KY-005 (Kit de sensores Keyes 5)
Módulo de emisor piezoeléctrico pasivo KY-006 (Kit de sensores Keyes 6)
Módulo codificador rotativo KY-040 [ó KY-007] – (Kit de sensores Keyes 040/007)





Módulo sensor de temperatura KY-001 (Kit de sensores Keyes 1)

Descripción:

El módulo de sensor de temperatura para Arduino Keyes KY-001 permite la medición de la temperatura ambiente entregando datos mediante un bus serie digital (llamado One Wire, o “Un Cable” en español).

En realidad, sólo es una plaqueta base con conector de tres pines para el sensor de temperatura DS18B20, y el único agregado de circuito es un led con su resistor para indicar que está encendido.

Especificaciones:

El módulo de sensor de temperatura KY-001 es compatible con plataformas de microcontrolador populares como Arduino, Raspberry Pi y Esp8266.

  • Voltaje de operación: 3,0V a 5,5V
  • Rango de medición de temperatura: -55° C a 125° C
  • Rango de precisión de medición: ± 0,5° C
  • Dimensiones: 18,5 mm x 15 mm

Circuito integrado DS18B20:

Diagrama de conexión del módulo:

Pin S de KY-001 al pin digital 2 del Arduino.
Pin central (línea de alimentación) de KY-001 al +5V de Arduino.
Pin – de KY-001 a GND de Arduino.

Enlaces a las bibliotecas y otros datos necesarios para el ejemplo de programa en Arduino para el KY-001:

Módulo Sensor de Temperatura KY-001: Dibujo de la pieza para el editor Fritzing
Biblioteca Dallas para control de temperatura por Miles Burton.
Biblioteca OneWire por PJRC.
Hoja de datos del DS18B20 por Maxim Integrated.





Programa de ejemplo:

El siguiente programa de Arduino utiliza la biblioteca OneWire para comunicarse por línea serie con el KY-001, y así descargará la temperatura leída por el dispositivo.

Suba el programa y observe los datos en el Monitor Serie del IDE de Arduino.

Artículos relacionados:

Módulo sensor de temperatura KY-001 (Kit de sensores Keyes 1)
Módulo detector de vibración KY-002 (Kit de sensores Keyes 2)
Módulo de Sensor Magnético por efecto Hall KY-003 (Kit de sensores Keyes 3)
Módulo de llave pulsadora – KY-004 (Kit de sensores Keyes 4)
Módulo sensor de temperatura KY-005 (Kit de sensores Keyes 5)
Módulo de emisor piezoeléctrico pasivo KY-006 (Kit de sensores Keyes 6)
Módulo codificador rotativo KY-040 [ó KY-007] – (Kit de sensores Keyes 040/007)