Tutorial: Sensor LDR con Arduino UNO

En este nuevo tutorial queremos enseñarte las características y el uso de los sensores fotoeléctricos, los fotosensores o simplemente los sensores LDR.

Este tipo de sensores responden al cambio en la intensidad de la luz; el LDR (Light Dependant Resistor) es el mas común dentro de lo que son los sensores fotoeléctricos.

A continuación veremos el uso como tal del sensor LDR, posterior a esto puedes entrar a jugar con leds, zumbadores o cualquier otro tipo de componente que le quieras añadir.

Para esto usaremos:

Mediante la siguiente conexión:

Imagen 1 (Esquema protoboard con LDR y arduino UNO)

Imagen 2 (Conexión LDR a los pines del Arduino UNO)

En la variable LDR guardaremos la información o los valores que irá recibiendo el sensor respecto a los cambios de luz para posteriormente mostrarlos por el monitor serial.

 


// Declaramos la variable en la que vamos a almacenar todos los distintos valores recibidos por el sensor.
int LDR;

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

void loop(){
// Recibo el valor del pin analogico 0.
sensorLDR = analogRead(0);

// Lo muestro en el monitor serial.
Serial.print("Valor del sensor LDR: ");
Serial.println(LDR);

// Hago una pausa de 100 milisegundos.
delay(100);
}

Esto es todo por el momento, como lo mencionamos anteriormente, si deseas agregar a este circuito un piezo o led no es nada complicado, solo es cuestión de agregar un par de lineas en el código.

¡Saludos!

 

Para mas tutoriales puedes seguirnos por nuestra pagina en Facebook
o visita nuestra tienda www.somosmakers.cl

 

Referencias:

Wikipedia

Untitled.es

Nema17 + Controlador A4988 + RFID RC522 + Arduino Nano

Hola amigos, en este nuevo tutorial queremos compartir con ustedes nuestro ejemplo de como poner en funcionamiento un motor paso a paso bipolar de referencia Nema 17 conectado a un cotrolador A4988 mediante un lector RFID RC522 tan solo con una tarjeta BIP o cualquier tarjeta bancaria u otra tarjeta o llavero que emita una frecuencia de 13.56 Mhz; todo esto dirigido por un Arduino Nano.

El RC522 está diseñado para escribir o leer datos de aplicaciones de bajoc consumo de energia y todo esto a un bajo costo, ideal para dispositivos portatiles y tiene por caracteristicas lo siguiente:

  1. Corriente de operación: 13-26mA a 3.3V
  2. Corriente de standby: 10-13mA a 3.3V
  3. Corriente de sleep-mode: <80µA
  4. Corriente máxima: 30mA
  5. Frecuencia de operación: 13.56Mhz
  6. Distancia de lectura: 0 a 60mm
  7. Protocolo de comunicación: SPI
  8. Velocidad de datos máxima: 10Mbit/s

 

 

En el Diagrama podemos ver como conectamos el controlador A4988 al arduino
Detalle del controlador A4988 y sus conexiones.

pololuA4988

 

Este codigo basicamente trata de que al acercar la tarjeta BIP o la que estemos usando al RC522 un Led se encenderá haciendo girar el motor Nema 17 y no se apagará hasta que el motor regrese a su estado inicial manteniendo un completo descanso, lo cual le otorga un buen cuidado al motor y a su vez al controlador, la idea surge empezando por acercar la tarjeta al RC522, posteriormente encendiendo un Led y por ultimo el presente codigo´, esperamos sea de mucha utilidad.

Librerias:

SPI-master

rfid-master

Codigo:

#include <SPI.h>
#include <MFRC522.h>
int steps = 8;
int direccion = 7;
int reset = 5;
int pasos = 4000;

#define VELOCIDAD 1700

#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance

void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println(F(“Ingrese Tarjeta para Escribir Dato Personal”));
pinMode(4, OUTPUT);
pinMode(steps, OUTPUT);
pinMode(direccion, OUTPUT);
pinMode(reset, OUTPUT);
}

void loop() {
//Activar una direccion y fijar la velocidad con stepDelay

// Giramos 200 pulsos para hacer una vuelta completa
digitalWrite(4, LOW);
// Prepare key – all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
MFRC522::MIFARE_Key key;

for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;

if (  mfrc522.PICC_IsNewCardPresent()) {

digitalWrite(4, HIGH);
Serial.println(F(“Lectura Confirmada”));

digitalWrite(reset, LOW); //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
delay(100);
digitalWrite(reset, HIGH); //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
digitalWrite(direccion, HIGH);

for (int i = 0; i<pasos; i++) //Equivale al numero de vueltas (200 es 360º grados) o micropasos
{
digitalWrite(steps, HIGH); // This LOW to HIGH change is what creates the
digitalWrite(steps, LOW); // al A4988 de avanzar una vez por cada pulso de energia.
delayMicroseconds(VELOCIDAD); // Regula la velocidad, cuanto mas bajo mas velocidad.

}

digitalWrite(reset, LOW); //Mientras reset este en LOW el motor permanecerá apagado y no sufrirá. El chip apagará todos los puertos y no leerá comandos.
delay(500);
digitalWrite(reset, HIGH); //Cuando reset se encuentre en HIGH el motor arrancará y leerá los comandos enviados.
digitalWrite(direccion, LOW);

for (int i = 0; i<pasos; i++) //Equivale al numero de vueltas (200 es 360º grados) o micropasos
{

digitalWrite(steps, LOW); // LOW to HIGH hace que el motor avance ya que da la orden
digitalWrite(steps, HIGH); // al A4988 de avanzar una vez por cada pulso de energia.
delayMicroseconds(VELOCIDAD); // Regula la velocidad, cuanto mas bajo mas velocidad.
}

digitalWrite(reset, LOW);

//delay(500);

return;
}
// Look for new cards

digitalWrite(4, LOW);
}

Arduino y CD74HC4067 prendiendo Led

Uno de los módulos creo que mas útiles que tenemos disponibles son los multiplexores (CD74HC4067), una descripción muy light de este dispositivo seria como una zapatilla de pines… Para que se entienda de forma mas fácil es un dispositivo donde usando 5 pines del Arduino podemos manejar 16 señales o sensores.. si 16, y esto se agradece en el minuto que queremos tener acceso a muchos datos o armar un robot o manejar muchas luces y todo lo que se nos pudiera ocurrir, lo mejor es capaz de leer señales digitales o analógicas… Super!!!

Por el minuto nos limitaremos a prender 16 led, luego trataremos de manejar varios sensores, incluso hacer uso de varios multiplexores a la vez.

Aquí el diagrama:

multiplexor_arduino_led

 

Para simplificar la vida usaremos una libreria Mux.h la podemos descargar del siguiente link :

https://github.com/mikedotalmond/Arduino-Mux-CD74HC4067

Arduino-Mux-CD74HC4067-master (Aquí también por si desaparece)

Aquí el Modulo en nuestra Tienda

Aquí el código :

#include <Mux.h>

Mux mux(2,3,4,5,4); // initialise on construct...
int counter=0;

void setup(){
Serial.begin(9600);
mux.setup(8,9,10,11,4); // initialise Mux
}

void loop(){
mux.write(counter, HIGH); //Turn ON the selected LED
delay(500);
mux.write(counter, LOW); //Turn OFF the selected LED

if(counter==15){
Serial.println(counter); //Print results
}
else{
Serial.print(counter);
Serial.print(", ");
}

counter = ++counter & 15; //Add +1 to counter until 15
}

 

 

Nota: Para el circuito del video no use resistencias, en favor del tiempo.