Archivo de la etiqueta: Práctica

Sonda Temperatura DHT11 Arduino

Sensor de humedad y temperatura DHT11. Es lo suficientemente exacta para la mayoría de los proyectos que necesitan hacer un seguimiento de las lecturas de humedad y temperatura.

El sensor incluye un sensor de humedad capacitivo y un sensor de temperatura NTC, conectado con un microcontrolador de 8 bits de alto rendimiento.

Aplicaciones: HVAC, deshumidificador, ensayos e inspección de equipos, bienes de consumo, control automático, automóvil, registradores de datos, estaciones meteorológicas, electrodomésticos, regulador de humedad, humedad médicos y otros medición y control.

Parámetros del producto:

  • Humedad relativa:
    • Resolución: 16 bits
    • Repetibilidad: ±1% H.R.
    • Precisión: 25 ° C ± 5% hr
    • Histéresis: < ± 0.3% RH
    • Estabilidad a largo plazo: < ± 0.5% hr / año
  • Temperatura:
    • Resolución: 16 bits
    • Repetibilidad: ±0. 2 ° C
    • Precisión: 25 ° C ± 2° c
  • Características eléctricas
    • Fuente de alimentación: DC 3.5 ~5.5V
    • Corriente: medición 0.3mA
    • Espera 60μA
    • Periodo de muestreo: más de 2 segundos
  • Descripción pines:
    • VDD alimentación 3,5~5.5V DC
    • serie de datos, un solo bus
    • NC, pin vacío
    • GND tierra, la energía negativa

Datasheet y protocolo sonda DHT11: https://akizukidenshi.com/download/ds/aosong/DHT11.pdf

Conexión Arduino:

Otra vez vamos a usar una biblioteca diseñada específicamente para estos sensores que harán que nuestro código corto y fácil de escribir. Librería: https://github.com/olewolf/DHT_nonblocking

Esta librería no está en el gestor de librerías, así que habrá de descargarla e instalar manualmente

Ejecutar el sketch y ver datos: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/10-DHT11/DHT_nonblocking/DHT_nonblocking.ino

Otra biblioteca para esta sonda disponible en el gestor de librerías en SimpleDHT: https://github.com/winlinvip/SimpleDHT

Ejecutar el ejemplo DHT11Default de la librería SimpleDHT y ver los datos por el monitor serie.

Anuncios

Sensor Detección de Agua para Arduino

Este módulo puede detectar la profundidad del agua, el componente principal es un circuito amplificador que está formado principalmente por un transistor y unas líneas metálicas en el PCB. Cuando está puesto en el agua, el elemento sensor presentará una resistencia que puede cambiar junto con el cambio de profundidad del agua. La señal de la profundidad del agua es convertida en señal eléctrica, y podemos conocer el cambio de profundidad del agua.

Eata placa de sensor de agua puede ser ampliamente utilizado en la detección de la precipitación, nivel del agua, incluso fugas. Las huellas del sensor tienen una resistencia de pull-up débil de 1 MΩ. La resistencia tiene el valor de seguimiento alta hasta que una gota de agua corta la huella del sensor con conexión a tierra.

Este circuito trabajará con los pines de I/O digitales o usted las entradas analógicas para detectar la cantidad de agua inducida por contacto entre llas huellas de tierra y el sensor.

Este sensor tiene bajo consumo de energía y alta sensibilidad. Características:

  • Voltaje de funcionamiento: 5V
  • Corriente de trabajo: < 20 mA
  • Interfaz: analógica
  • Ancho de detección: 40 mm × 16 mm
  • Temperatura de trabajo: 10° C ~ 30 °C
  • Señal de voltaje de salida: 0 ~ 4.2V

Conexión Arduino:

Cargar el sketch y comprobar la detección de agua: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/09-Detector_Agua/Water_level/Water_level.ino

Pantalla LCD I2C en Arduino

La pantalla tiene una retroiluminación de LED y puede mostrar dos filas con hasta 16 caracteres en cada fila. Puede ver los rectángulos para cada carácter en la pantalla y los píxeles que componen cada carácter. La pantalla es está diseñada para mostrar texto.

En este kit es necesario soldar el módulo adaptador I2C a display LED:

El controlador de LCD I2C es un dispositivo que nos permite controlar una pantalla a través del bus I2C, usando únicamente dos cables.

Esquema de conexión:

Más información de este módulo:

Instalar la librería LiquidCrystal_I2C del gestor de librerías. Más información https://github.com/marcoschwartz/LiquidCrystal_I2C

El Módulo adaptador LCD a I2C que usaremos está basado en el controlador I2C PCF8574, el cual es un Expansor de Entradas y Salidas digitales controlado por I2C. Por el diseño del PCB este módulo se usa especialmente para controlar un LCD Alfanumérico.

La dirección I2C por defecto del módulo puede ser 0x3F o en otros casos 0x27. Es muy importante identificar correctamente la dirección I2C de nuestro módulo, pues de otra forma nuestro programa no funcionará correctamente. Para identificar la dirección específica de nuestro módulo podemos utilizar un pequeño sketch de prueba llamado: I2C Scanner, el cual nos permite identificar la dirección I2C del dispositivo conectado al Arduino.

Instalar el siguiente código para hacer Hello World: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/08-Pantalla_LCD/HelloWorld/HelloWorld.ino

Instalar el siguiente código para hacer caracteres personalizados: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/08-Pantalla_LCD/CustomChars/CustomChars.ino

Instalar el siguiente código para hacer scroll del display: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/08-Pantalla_LCD/scrollDisplay/scrollDisplay.ino

Lector de Tarjetas RF para Arduino

El lector de RFID RC522 utiliza el bus de interfaz periférico Serial (SPI) para comunicarse con controladores tales como Arduino, Raspberry Pi, etc..

El MFRC522 es un lector altamente integrado para la comunicación sin contacto a 13,56 MHz. El lector MFRC522 soporta ISO 14443A / modo de MIFARE®.

El transmisor interno del MFRC522 es capaz de usar una antena del lector diseñada para comunicarse con ISO/IEC 14443A/MIFARE® tarjetas y transpondedores sin circuitos activos adicionales. La parte del receptor proporciona una robusta y eficiente implementación de demodulación y decodificación circuitos para señales de IEC/ISO 14443A/MIFARE® compatible con tarjetas y transpondedores. La parte digital se encarga de la implementación ISO/IEC 14443A encuadre y detección de errores (paridad y CRC). El MFRC522 soporta productos MIFARE® Classic (e.g. MIFARE® estándar). El MFRC522 soporta comunicación sin contacto con la transferencia más alta de MIFARE® con velocidades de hasta 848 kbit/s en ambas direcciones.

Conexión con Arduino:

Instalar librería MFRC522 desde el gestor de librerías. Más información https://github.com/miguelbalboa/rfid

Cargar el sketch siguiente para obtener en NUID de la tarjeta: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/07-RFID_Reader/ReadNUID/ReadNUID.ino

Datos Tag:

  • The NUID tag is: (tag)
  • In hex:  B6 67 9A **
  • PICC type: MIFARE 1KB

Datos Tarjeta

  • The NUID tag is: (Tarjeta)
  • In hex:  56 16 26 **
  • PICC type: MIFARE 1KB

Cargar el sketch siguiente para sacar la información de la tarjeta leída: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/07-RFID_Reader/DumpInfo/DumpInfo.ino

Motor Paso a Paso con Arduino

Un motor paso a paso es un dispositivo electromecánico que convierte pulsos eléctricos en movimientos mecánicos discretos. El eje de un motor paso a paso gira en incrementos discretos cuando impulsos de mando eléctrico se aplican a él en la secuencia correcta.

La secuencia de los pulsos aplicados se relaciona directamente con la dirección de rotación de ejes motor. La velocidad de la rotación de los ejes motor está directamente relacionada con la frecuencia de los pulsos de entrada y la duración de la rotación está directamente relacionada con el número de pulsos de entrada aplicada.

Una de las ventajas más importantes de un motor paso a paso es su capacidad para ser controlado con precisión en un sistema de lazo abierto. Control de lazo abierto significa que ninguna información de retroalimentación de posición es necesario. Este tipo de control elimina la necesidad de costosos dispositivos de detección y regeneración como codificadores ópticos.

Esquema eléctrico:

El motor paso a paso del kit es 28BYJ-48 y los parámetros del motor paso a paso son:

  • Modelo: 28BYJ-48
  • Tensión nominal de entre 5V y 12 V.
  • 4 Fases.
  • Resistencia 50 Ω.
  • Par motor de 34 Newton / metro más o menos 0,34 Kg por cm.
  • Consumo de unos 55 mA.
  • 64 pasos por vuelta (con medios pasos).
  • Reductora de 1 / 64.
  • Ángulo de paso: 5,625 °
  • Frecuencia: 100Hz
  • Resistencia de la C.C.: 50Ω±7 %(25 ° C)
  • En tracción par > 34.3mN.m(120Hz)
  • Posicionamiento automático par > 34.3mN.m
  • Par de fricción: 600-1200 gf.cm
  • Resistencia de aislamiento > 10MΩ(500V)
  • Aislantes de electricidad : 600VAC/1mA/1s
  • Grado de aislamiento : A
  • Subida de temperatura < 40K(120Hz)
  • Ruido < 35dB (120Hz, No carga, 10cm)

El 28BYJ-48 tiene un paso de 5.625 grados (64 pasos por vuelta usando half-step). El reductor interno tiene una relación de 1/64. Combinados, la precisión total es de 4096 pasos por vuelta, equivalente a un paso de 0.088º, que es una precisión muy elevada.

Datasheet: http://robocraft.ru/files/datasheet/28BYJ-48.pdf

Más información sobre motores paso a paso: https://dronebotworkshop.com/stepper-motors-with-arduino/

Driver para Motor Bipolar 28BYJ-48

Driver del motor

  • Tamaño: 42mmx30mm
  • Chip de controlador de uso ULN2003, 500mA
  • LEDs A, B, C, D indica las cuatro fases las condiciones de trabajo motor paso a paso.
  • Conector blanco estándar motor paso a paso.
  • Pines de alimentación separados

Conexiones de la placa de driver:

El motor de pasos bipolar tiene generalmente cuatro cables que salen de él. A diferencia de los motores PAP unipolares, steppers bipolares no tienen ninguna conexión común de centro. Tienen dos juegos independientes de bobinas en lugar de otro. Se pueden distinguir de steppers unipolares midiendo la resistencia entre los cables. Debe encontrar dos pares de cables de igual resistencia. Si tienes las puntas de su medidor conectado a dos cables que no están conectados (es decir, no conectada a la bobina del mismo), debería ver resistencia infinita (o sin continuidad).

Modos de control:

Full-step, Half-step y microsteps: https://www.rs-online.com/designspark/stepper-motors-and-drives-what-is-full-step-half-step-and-microstepping

Vamos a usar la secuencia de medios pasos. Con esta secuencia conseguimos una precisión de la mitad del paso. El par desarrollado varía ya que en algunos pasos activamos dos bobinas y en otras solo una, pero a la vez el giro se encuentra más “guiado”, por lo que en general ambos efectos se compensan y el funcionamiento es bueno, salvo en aplicaciones donde estemos muy al límite del par máximo.

Expresando la secuencia en forma de tabla resulta:

Medio-paso A B A’ B’
1 ON OFF OFF OFF
2 ON ON OFF OFF
3 OFF ON OFF OFF
4 OFF ON ON OFF
5 OFF OFF ON OFF
6 OFF OFF ON ON
7 OFF OFF OFF ON
8 ON OFF OFF ON

Modo de medio paso: secuencia de señal de control 8 pasos (recomendada) 5.625 grados por paso / 64 pasos por una revolución del eje del motor interno. Relación de transmisión 64. Total 64 x 64 = 4096 pasos.

Modo de paso completo: secuencia de señal de control de 4 pasos 11.25 grados por paso / 32 pasos por una revolución de la interna eje de motor. Relación de transmisión 64. Total 64 x 32 = 2048 pasos.

Ejemplo 1 – Uso Arduino con Motor 28BYJ-48 sin librería

Esquema de conexión:

Ejercicio basado en http://www.prometec.net/motor-28byj-48/

Otros tutoriales:

Solución: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_half_step/stepper_half_step.ino

Para ver los pasos que da, los grados y las bobinas activas ver: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_ver_pasos/stepper_ver_pasos.ino

Ejemplo 2 – Uso Arduino con Motor 28BYJ-48 y Librería Stepper

La otra manera de programar un motor 28BYJ-48 es utilizar la librería Steper que viene incluida con el entorno de desarrollo oficial de Arduino. Esta librería nos facilita el uso de este tipo de motores y viene adaptada para motores bipolares. En este caso la librería stepper usa el modo de paso completo en lugar del medio paso. En este caso el nº de pasos por vuelta es 2048.

Llevando esta secuencia de encendido a una tabla, que posteriormente usaremos para el código, la secuencia quedaría de la siguiente forma:

Paso A B A’ B’
1 ON OFF OFF OFF
2 OFF ON OFF OFF
3 OFF OFF ON OFF
4 OFF OFF OFF ON

Código para mover el motor:

 
#include <Stepper.h>
#define STEPS 2048
Stepper stepper(STEPS, 8, 9, 10, 11);

void setup() {
 stepper.setSpeed(10);
}

void loop() {
 stepper.step(2048);
}

Ejecutar el código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_oneRevolution/stepper_oneRevolution.ino

La librería de pasos por defecto que viene pre-instalado con el Arduino IDE sólo admite el método de paso completo y ha limitado características.  No se ejecuta el motor 28BYJ-48 de manera muy eficiente y conseguir que dos de ellos se muevan al mismo tiempo para un robot de accionamiento diferencial es un poco más difícil. Se encuentran ejemplos de código que utilizan el método de medio paso, sin bibliotecas adicionales como hemos visto anteriormente.

Existe una librería para half-step: https://www.arduinolibraries.info/libraries/half-stepper

Para mejorar el rendimiento disponemos de la biblioteca AccelStepper https://www.arduinolibraries.info/libraries/accel-stepper. Se ejecutan los motores por pasos 28BYJ-48 steppers de manera muy eficiente y también es compatible con la aceleración (que permite el paso a paso para llegar a una velocidad más alta).