Tutorial: Motor paso a paso unipolar 28BJY-48 con Arduino UNO

En este nuevo tutorial te enseñaremos el motor paso a paso unipolar 28BYJ-48

Este motor va junto con un módulo controlador con el chip ULN2003, es un motor pequeño y lo mas importante, a un precio muy asequible.

Los motores paso a paso son dispositivos electromagnéticos que convierten impulsos eléctricos en rotación, mediante un impulso estos motores avanzan un paso los cuales oscilan entre 1.8º y 90º todo esto dependiendo de la referencia de motor que tengamos, el 28BYJ-48 tiene un paso de 5.625º por paso, lo que se traduce en que es un motor de 64 pasos por vuelta.

Características del 28BYJ-48:

Voltaje: 5 VDC
Número de Fases: 4
Resistencia: 50Ω ± 7%
Torque: 34.3 N
consumo: 55 mah

Estos motores funcionan con 4 bobinas las cuales son excitadas secuencialmente para el movimiento del eje, en este ejemplo el código se ha realizado para hacer medios pasos; estos consisten basicamente en activar la bobina 1, después la 1 con la 2, luego la 2, la 2 con la 3 y así hasta completar el ciclo con la bobina 4 y volver a partir desde la 1, el nombre de esta secuencia es “Half-step”.

Existen otros tipos de secuencias, las diferencias entre si son la cantidad de bobinas excitadas a la vez, la velocidad, el consumo, entre otras.


↑↑ Stepper 28BYJ-48 con el controlador ULN2003 en su módulo ↑↑

↑↑ Módulo con controlador ULN2003 ↑↑

Características del chip ULN2003:

Corriente de salida: 0.5A
Tensión de salida: 2-50V
Número de canales: 7
Temperatura de trabajo: -40 a 85°C
Tensión de entrada: 30V

↑↑ ULN2003 ↑↑

 ↑↑ Puertos ULN2003 ↑↑

 

Cabe resaltar que existen dos referencias en este controlador, el ULN2003APG y el ULN2003A, entre ambas no existe ningún tipo de diferencia en su funcionamiento, modo de uso o conexiones.

Para este tutorial utilizaremos:

1 Arduino Uno R3 + Cable USB

1 Motor paso a paso unipolar 28BYJ-48

↑↑ Vista 1, conexión ↑↑

↑↑ Vista 2, conexión ↑↑

↑↑ Vista 3, conexión ↑↑

 

El codigo es el siguiente:


int motorPin1 = 8; // Azul - 28BYJ48 pin 1 motor
int motorPin2 = 9; // Rosa - 28BYJ48 pin 2 motor
int motorPin3 = 10; // Amarillo - 28BYJ48 pin 3 motor
int motorPin4 = 11; // Naranja - 28BYJ48 pin 4 motor
// Rojo - 28BYJ48 pin 5 (VCC) motor

int motorSpeed = 1200; //variable para fijar la velocidad del motor (el retraso entre cada secuencia)
int count = 0; // cuenta de los pasos dados
int countsperrev = 512; // número de pasos por vuelta completa
int lookup[8] = {B01000,B01100,B00100,B00110,B00010,B00011,B00001,B01001};

void setup() {
//declare the motor pins as outputs
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}

void loop(){
if(count < countsperrev )
clockwise(); //sentido agujas del reloj
else if (count == countsperrev * 2)
count = 0;
else
anticlockwise(); //sentido antihorario
count++;
}

//creación funciones giro horario y antihorario
void anticlockwise()
{
for(int i = 0; i < 8; i++) { setOutput(i); delayMicroseconds(motorSpeed); } } void clockwise() { for(int i = 7; i >= 0; i--)
{
setOutput(i);
delayMicroseconds(motorSpeed);
}
}

void setOutput(int out) //función secuencia giro
{
digitalWrite(motorPin1, bitRead(lookup[out], 0));
digitalWrite(motorPin2, bitRead(lookup[out], 1));
digitalWrite(motorPin3, bitRead(lookup[out], 2));
digitalWrite(motorPin4, bitRead(lookup[out], 3));
}

Stepper motor unipolar driver 28byj

Referencias:

El cajón de ardu

Toshiba (ULN2003APG)

Prometec

 

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

Arduino Nano + Sensor Ultrasonico HC-SR004 + LED

El HC-SR04 es un sensor de distancias por ultrasonidos (los cuales viajan a una velocidad de 340 m/s) capaz de detectar objetos y calcular la distancia a la que se encuentra en un rango de 2 a 450 cm; Contiene toda la electrónica encargada de hacer la medición. Es un simple y efectivo sistema compuesto por dos cilindros donde uno es quien envía la señal ultrasónica (emisor) mientras el otro es quien la recibe (receptor); funciona con 5v y con una señal de 40 KHz.

En este sencillo tutorial queremos explicar el breve funcionamiento del sensor ultrasónico con el uso de la librería NewPing con el fin de encender un led siempre y cuando la distancia que capte el sensor sea menor a la que nosotros coloquemos en el código.

 

La conexión es la siguiente:

 

HC-SR04 (Esquema en Fritzing)

NewPing_v1.8 (Librería)

El código para la anterior conexión es el siguiente:

#include <NewPing.h>

#define TRIGGER_PIN 12
#define ECHO_PIN 11
#define MAX_DISTANCE 200

const int buttonPin = 7;

int buttonState = 0;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {
Serial.begin(9600);
pinMode(9, OUTPUT);
pinMode(buttonPin, INPUT);

}

void loop() {
delay(1000);
int uS = sonar.ping_median();
Serial.print("Distancia: ");
Serial.print(uS / US_ROUNDTRIP_CM);
Serial.println("cm");
buttonState = digitalRead(buttonPin);

if (uS / US_ROUNDTRIP_CM<50) {
digitalWrite(9, HIGH);
delay(500);
(buttonState == HIGH);
digitalWrite(12, HIGH);




}
else {
digitalWrite(9, LOW);
delay(500);
digitalWrite(12, LOW);

}

}

En la línea 28 del código podemos cambiar la distancia que el sensor perciba para que se pueda activar el Led, o un zumbador, o cualquier otro dispositivo añadiendo algunas líneas de programación y librerías dependiento al caso que sea necesario, todo esto depende solo de su imaginación.