Control de motores usando el sensor de inclinación con mercurio KY-037 y el L293D

Funcionamiento

El objetivo de este proyecto es controlar el movimiento de dos motores usando una placa Arduino. Los módulos de mercurio KY-027 detectarán inclinaciones u orientación, y dependiendo de cuál se active, se moverá el motor correspondiente. El L293D actuará como puente H, permitiendo controlar la dirección de los motores.


Componentes

  • Placa Arduino (por ejemplo, Arduino Uno).
  • Dos módulos de mercurio KY-027 para la detección.
  • Un circuito integrado L293D para manejar los motores.
  • Dos motores de corriente continua.
  • Fuente de alimentación adecuada para los motores y el Arduino.
  • Cables y protoboard para las conexiones.

Conexiones

  • Conexión de los sensores KY-027:
  • Conecta sus pines de señal a los pines digitales 11 y 12 del Arduino, y asegúrate de alimentarlos con 5V y GND con el arduino.
  • Conexión del L293D:
  • Pin 1, 9 y 16 a 5v del arduino.
  • Pin 4, 5, 12 y 13 a GND.
  • Pin 8 a 5v de la fuente de alimentación(Une GND de la fuente almentacion a GND de arduino).
  • Los pines de entrada (IN1, IN2, IN3, IN4) se conectan a los pines 2, 3, 4 y 5 del Arduino.
  • Los motores se conectan a las salidas del L293D (OUT1, OUT2 para el motor 1; OUT3, OUT4 para el motor 2).

Código

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <Arduino.h>

// Pines del Arduino conectados al L293D y a los sensores
const int motor1Pin1 = 2;   // Dirección Motor 1
const int motor1Pin2 = 3;
const int motor2Pin1 = 4;   // Dirección Motor 2
const int motor2Pin2 = 5;
const int sensor1Pin = 11;   // Señal Sensor KY-027 para Motor 1
const int sensor2Pin = 12;   // Señal Sensor KY-027 para Motor 2

void setup() {
  // Configurar pines de motores como salida
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(motor2Pin1, OUTPUT);
  pinMode(motor2Pin2, OUTPUT);

  // Configurar pines de sensores como entrada
  pinMode(sensor1Pin, INPUT);
  pinMode(sensor2Pin, INPUT);

  // Comunicación serial para depuración
  Serial.begin(9600);
}

void loop() {
  // Leer estado de los sensores
  int sensor1State = digitalRead(sensor1Pin);
  int sensor2State = digitalRead(sensor2Pin);

  // Control del motor 1
  if (sensor1State == HIGH) {
    // Mover motor 1 hacia adelante
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW);
    Serial.println("Motor 1: Moviendo hacia adelante");
  } else {
    // Detener motor 1
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, LOW);
    Serial.println("Motor 1: Detenido");
  }

  // Control del motor 2
  if (sensor2State == HIGH) {
    // Mover motor 2 hacia adelante
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);
    Serial.println("Motor 2: Moviendo hacia adelante");
  } else {
    // Detener motor 2
    digitalWrite(motor2Pin1, LOW);
    digitalWrite(motor2Pin2, LOW);
    Serial.println("Motor 2: Detenido");
  }

  delay(200); // Pausa para estabilizar lecturas
}

NOTAS IMPORTANTES:

  • Asegúrate de usar una fuente de alimentación con suficiente corriente para los motores.
  • Si los motores se mueven en la dirección equivocada, intercambia las conexiones a los pines de salida del L293D o modifica el código.
  • Supervisa las lecturas de los sensores con la consola serial para facilitar la depuración

Diseños


Videos


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Carrito de compra