KY-018

Esta placa sensora está basada en una resistencia variable a la luz o LDR.

Tendríamos a grandes rasgos una placa que:
- Sensible a la luz que incide en la LDR
- Rango de medición de luz muy amplio

CARACTERISTICAS

Las características principales de esta placa son:
- LDR con valores de resistencia aproximados de: 13KΩ con luz ambiental en una habitación y cerca de 100KΩ con oscuridad total
- Está montada con otra resistencia en modo divisor de tensión
- No requiere componentes externos
- Rango de alimentación amplio al ser solo dos resistencias

PINEADO

El pineado de esta placa es:

1 : Este pin es la entrada negativa que alimenta la placa. Va a uno de los pines de la LDR.

2 : Este pin es la entrada positiva que alimenta la placa. Va a uno de los pines de la resistencia SMD de 10KΩ.

3 : Este pin es la salida del sensor. Está unido a la LDR y la resistencia de 10KΩ y es la salida del divisor de tensión que generan las dos resistencias.

Hay que tener cuidado con este modelo, ya qué existen en el mercado otros con los pines 1 y 3 intercambiados. Nosotros en nuestra prueba tenemos una versión todavía peor, ya que está serigrafiada con la S en el lado izquierdo y el - en el derecho, pero el pineado es al contrario... Ojo con estas placas y sus construcciones.














LED's INDICADORES

Esta placa no tiene led indicadores.

PROBEMOS EL SENSOR KY-018

Vamos a montar en una placa protoboard el sensor KY-018 y conectarlo a un Arduino UNO.

NECESITAREMOS

Placa sensora KY-018

Placa protoboard pequeña

Arduino UNO R3

Display LCD 1602 con interface paralelo

Diodo LED verde de 3mm y una resistencia que calcularemos de 220Ω y 1/4W

Potenciómetro de 10KΩ

Cableado macho-macho o cable para placas protoboard

Soporte AFTP para Arduino UNO y protoboard pequeña

Cable USB corto de USB tipo A a USB tipo B

ESQUEMA

En el esquema podemos ver:

- La placa Arduino UNO se encarga de alimentar la protoboard
- La placa sensora KY-018 está conectada directamente a la protoboard y así medir la luminosidad
- El led D1 y la resistencia R1 están conectados a la alimentación de +5V para indicarnos cuando tiene alimentación la protoboard
- El pin de la placa sensora de salida está conectado al pin analógico 0 del Arduino UNO
- El potenciómetro lo ajustaremos a nuestro gusto, hasta que la imagen del display LCD sea correcta
- La alimentación de todo el sistema se realiza a través del puerto USB

Para calcular la resistencia R1 del LED solo tenemos que ver el voltaje que va a caer en la resistencia y dividirlo entre la intensidad que queremos que pase por el LED.
La tensión que tiene la resistencia sería el voltaje total menos el voltaje que se queda el LED rojo (aprox. 1,5V). Esto nos deja 5V-1,5V = 3,5V caen en la resistencia.
Vamos a fijar una intensidad por el LED de 15mA (suficientes para que se encienda a buen brillo un LED rojo). Tendriamos entonces una resistencia de 3,5V/0,015A = 233,33Ω
El valor mas cercano al calculado es de 220Ω (Rojo-Rojo-Marrón). Las resistencias comunes de 1/4W deberían servir, ya que la potencia disipada por nuestra resistencia será de 3,5Vx0,015A = 0,05W, valor muy por debajo de los 0,25W máximos que es capaz la resistencia de disipar.

Como se verá en las siguientes imagenes,la placa sensora KY-018 que yo tengo está mal montada de fábrica. Por lo que pude observar el circuito impreso está al revés, por lo que la serigrafía no corresponde.


Vamos a ver algunas imágenes mas de cerca del montaje

Detalle de la conexión de la placa sensora

Detalle de la conexión de la placa sensora

Detalle de la conexión del display LCD 1602

Detalle de la conexión de la placa Arduino UNO

PROGRAMACIÓN

¿Qué vamos a programar?, una lectura continua del pin A0 (donde está conectada la salida de la placa sensora). La lectura se mandará al display LCD y se comprobará si su valor es inferior o igual a 400, y en ese caso encenderemos el led incluido en la placa UNO y que está conectado a la salida digital 13.

A continuación tenemos el código fuente del Sketch terminado para consultarlo. Se puede escribir copiándolo o descargarlo desde aquí

CÓDIGO ARDUINO
/*
 * AFPT - Arduino Fácil Para Todos
 * 
 * Lectura del sensor KY-018 y presentación de resultados en un Display LCD 1602
 * 
 * Modulo_KY-018.ino
 * 
 * www.fantasystudios.es/arduino
 * 
 * Creado el 13 de Diciembre de 2020
 * Por Manuel Peláez
 * 
 */

 
// Librerías necesarias
#include <LiquidCrystal.h>                  //necesaria para el display LCD

//Definimos las I/O del display lcd
const int LCD_rs = 2, LCD_en = 3, LCD_d4 = 4, LCD_d5 = 5, LCD_d6 = 6, LCD_d7 = 7;

//El display 1602 (16x2) se llamará "lcd"
LiquidCrystal lcd(LCD_rs, LCD_en, LCD_d4, LCD_d5, LCD_d6, LCD_d7);

//Constantes
const int sensor_pin = A0;                  //pin por donde entra la señal del KY-018

//Variables del programa
int lectura_sensor = 0;                     //almacenaremos aquí el estado leido del sensor


void setup() {
  //Configuramos el lcd
  lcd.begin(16, 2);                         //informamos del tamaño del display

  //Presentamos mensajes de bienvenida
  lcd.print(" ARDUINO  FACIL ");            //mostramos un mensaje de bienvenida
  lcd.setCursor(0,1);                       //movemos el cursor a 1ª columna y 2ª fila
  lcd.print("   PARA TODOS   ");            //mostramos un mensaje en esa posición

  delay(2000);                              //pausamos 2seg
  lcd.clear();                              //borramos el lcd entero

  //Presentamos mensajes informativos del montaje
  lcd.setCursor(0,0);                       //movemos el cursor a 1ª columna y 1ª fila
  lcd.print(" MONTAJE PRUEBA ");            //mostramos un mensaje de bienbenida
  lcd.setCursor(0,1);                       //movemos el cursor a 1ª columna y 2ª fila
  lcd.print(" SENSOR  KY-018 ");            //mostramos un mensaje en esa posición

  delay(2000);                              //pausamos 2seg
  lcd.clear();                              //borramos el lcd entero

 

  //Ponemos en la esquina superior derecha el modelo de la placa que estamos probando
  //Si no borramos o escribimos encima, se mantendrá visible siempre
  lcd.setCursor(10,0);                      //movemos el cursor a 11ª columna y 1ª fila
  lcd.print("KY-018");                      //mostramos el modelo del sensor

  //Ponemos en la esquina inferior izquierda el texto "inclinado" y se mantendrá siempre
  lcd.setCursor(0,1);                       //movemos el cursor a 1ª columna y 2ª fila
  lcd.print("lectura= ");                   //mostramos un mensaje en esa posición

  //Declaramos entradas y salidas del Arduino UNO
  pinMode(LED_BUILTIN, OUTPUT);             //pin de salida al led de la placa UNO en el pin 13
}


void loop() {
  
  lectura_sensor = analogRead(sensor_pin);  //leemos el estado del sensor analógico

  lcd.setCursor(9,1);                       //movemos el cursor a 10ª columna y 2ª fila
  lcd.print("    ");                        //borramos las cuatro posiciones con la lectura anterior
  lcd.setCursor(9,1);                       //movemos de nuevo el cursor a 10ª columna y 2ª fila
  lcd.print(lectura_sensor);                //mostramos el valor leido del sensor

  //Si la lectura es menor o igual a 400 encendemos el led del arduino UNO pin 13, si no lo apagamos
  if (lectura_sensor <= 400) {
    digitalWrite (LED_BUILTIN, HIGH);
  }
  else {
    digitalWrite (LED_BUILTIN, LOW);
  }

  delay(200);                               //delay que espera para realizar la siguiente medida
}

CÓDIGO ARDUINO

A continuación tenemos un video con todo el proceso completo.