Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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