Está en la página 1de 5

TECNOLOGICO NACIONAL DE MEXICO

INSTITUTO TECNOLOGICO DE CIUDAD JUAREZ

INSTRUMENTACION
PRACTICA #5
“MOTOR DC”

EQUIPO 3:
- GONZALEZ MONTOYA JESUS ALFONSO
– LOPEZ MARCELINO BRANDON DAVID
- ORIGINALES MONTOYA DIEGO
- PEREZ ALVARADO NAYELI

21/04/2023
I. INTRODUCCION
1.1 introducción
En esta práctica se utilizó el módulo controlador de motores L298N en el cual se
utilizaron dos técnicas para manejar al motor: la modulación por ancho de pulsos y el
puente H dual.
La modulación por ancho de pulsos nos permitió controlar la velocidad del motor de
corriente directa ajustando el ciclo de trabajo con ayuda de un potenciómetro.
Asimismo, utilizamos el puente H dual para hacer que el motor gire en sentido horario y
sentido antihorario.
Se realizo la siguiente conexión, así como la programación que se muestra en la
sección 2.1.

1.2 Materiales
- 1 L298N - 4 resistencias 1kΩ
- 1 ESP32 - 1 Dip-Switch de 4 posiciones
- 1 Protoboard - 1 Motor de corriente directa
- 1 Potenciómetro 10kΩ - 1 Fuente de pode

1.3 Objetivos
- Entender el funcionamiento del módulo L298N.
- Lograr el cambio en la dirección de giro del motor.
- Controlar la velocidad del motor por medio de la modulación por ancho de pulsos.
- Imprimir en la consola la dirección en la que gira el motor y el porcentaje de velocidad.
II. DESARROLLO
2.1 Código fuente
#include <Arduino.h>

#define VELM 5
#define PWM1_Ch 0
#define PWM1_Res 12
#define PWM1_Freq 1000
#define MOIN1 4
#define MOIN2 21
#define Start 14
#define Stop 27
#define Izq 12
#define Dec 13
#define Potenciometro 35

int PWM1_Dutycycle = 0;
float VP;
float speed_motor = 0;

void setup() {
 
  analogReadResolution(12);
  Serial.begin(115200);

  ledcAttachPin(VELM, PWM1_Ch);
  ledcSetup(PWM1_Ch, PWM1_Freq, PWM1_Res);
  pinMode(MOIN1, OUTPUT);
  pinMode(MOIN2, OUTPUT);
  pinMode(Potenciometro, INPUT);
  pinMode(Stop, INPUT);
  pinMode(Izq, INPUT);
  pinMode(Dec, INPUT);
  pinMode(Start, INPUT);
  Serial.println("CONTROL DE MOTOR DE CORRIENTE DIRECTA");
  Serial.println("Estado del motor: ");
}

void loop() {
 
  VP = analogRead(Potenciometro);
  speed_motor = (VP/4095)*100 ;
if(digitalRead(Start) == 1 && digitalRead(Stop) == 0 ){
  PWM1_Dutycycle = VP;
// **** GIRA A LA IZQUIERDA **** //
    if(digitalRead(Izq) == 1 && digitalRead(Dec) == 0){
     
      Serial.println("Girando a la izquierda");
      digitalWrite(MOIN1, HIGH);
      digitalWrite(MOIN2, LOW);

      Serial.print(speed_motor);
      Serial.println("%");
     
      ledcWrite(PWM1_Ch, PWM1_Dutycycle);
      delay(500);
    }
// **** GIRA A LA DERECHA **** //
    if(digitalRead(Dec) == 1 && digitalRead(Izq) == 0){
   
      Serial.println("Girando a la Derecha");
      digitalWrite(MOIN1, LOW);
      digitalWrite(MOIN2, HIGH);

      Serial.print(speed_motor);
      Serial.println("%");

      ledcWrite(PWM1_Ch, PWM1_Dutycycle);
      delay(500);
    }
// **** SE DETIENE **** //
    if(digitalRead(Dec) == 1 && digitalRead(Izq) == 1 || digitalRead(Dec) == 0
&& digitalRead(Izq) == 0){
   
      Serial.println("Detenido");
      digitalWrite(MOIN1, LOW);
      digitalWrite(MOIN2, LOW);
     

      delay(500);
    }

 
  }
}
2.2 Fotos del circuito físico

También podría gustarte