Está en la página 1de 12

Introducción a la electrónica

CÓDIGO C33529

LABORATORIO N° 15, 16

“Desarrollo e Implementación de control de


Motor DC usando Arduino”

1.
2.
Alumno (os):
3.
4.
Grupo (mesa) : Profesor: Nota:
Ing. Juan José Mamani R.
Semestre : 1
Fecha de entrega : Hora:
ELABORACION DE ATS :
ANALISIS DE TRABAJO SEGURO (ATS)

FECHA
TAREA: Lab. 15, 16 – Desarrollo e Implementación de control de motor DC usando Arduino. DIA MES AÑO

LABORATORIO X AMBIENTE EQUIPO DE

FIRMA
DOCENTE: Ing. TRABAJO
TALLER SESION Nº

FIRMA FIRMA FIRMA

FIRMA FIRMA FIRMA


ALUMNOS
(Apellidos y Nombres)

CARACTERISTICAS DE EQUIPOS Y HERRAMIENTAS


………….………….………….………….………….………….………….………….………….………….………….………….
………….………….………….………….………….………….………….………….………….………….………….………….
………….………….………….………….………….………….………….………….………….………….………….………….
………….………….………….………….………….………….………….………….………….………….………….………….
………….………….………….………….………….………….………….…………..………….………….………….………….
………….………….………….………….………….………….………….………….………….………….………….………….
………….………….………….………….………….…………………………………………………………..……………….
X X ………….………….………….………….………….………………………………………………………………………………...

OTROS
PASOS DE LA TAREA RIESGOS MEDIDAS DE CONTROL
(ESPECIFICAR PARA CADA
CASO)

1
2
3
4
5
6
7
8
9
10
11
12
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 4

I. OBJETIVOS:
 Implementar y diseñar el desarrollo de una aplicación electrónica propuesta usando Arduino UNO o
MEGA2560. Este proyecto debe incluir la mayoría de recursos de hardware de libre elección (pantalla LCD,
display 7 segmentos, pulsadores, actuadores, sensores, etc.) utilizados hasta ahora, así como también los
recursos de software del IDE Arduino.
 Programar, simular e implementar un circuito de control de velocidad de un motor DC.

II. CONTENIDOS A TRATAR


 Búsqueda de información.
 Título y diagrama de bloques de la aplicación electrónica usando Arduino, justificación.

III. MATERIAL A EMPLEAR:


 IDE Arduino instalado.
 Tarjeta Arduino UNO o similar
 Protoboard y componentes asociados
 PC con Software de simulación.
 Osciloscopio

IV. PROCEDIMIENTO
Diseñar, Simular e implementar un circuito de control de velocidad de Motor DC con inversión de giro.

La aplicación debe de usar lo siguiente:

a. Un pulsador (P1) para Marcha de motor DC, un pulsador (P2) para Detener motor DC y un indicador led
de color verde (LED 1) – “Indicador de Marcha de Motor DC” y un indicador led de color rojo (LED 2) –
“Indicador de Motor DC - Detenido”.
b. Un pulsador (P3) para cambiar el sentido de giro del motor DC y un indicador led de color verde (LED 3)
para indicar Forward/Adelante y un indicador led de color rojo (LED 4) para indicar Reverse/Atrás.
c. Las velocidades de giro del motor DC deben de ser de 0%, 20%, 40%, 60%, 80% y 100%, donde se
mostrarán en una pantalla LCD 16x2. NOTA: La pantalla LCD 16x2 puede controlarlo ya sea por el puerto
de comunicación I2C o controlada por el puerto serie – Modo Convencional.
d. Un pulsador (P4) para aumentar la velocidad de giro del motor DC y un pulsador (P5) para disminuir la
velocidad de giro del motor DC. Cada vez que se pulse P4 la velocidad irá subiendo desde la velocidad
0% al 100% y cada vez que se pulse el pulsador (P5) ira disminuyendo la velocidad del motor DC. NOTA:
En caso de no considerar los pulsadores P4 y P5 para el control de la velocidad del motor DC puede
realizarlo haciendo uso de un potenciómetro.
e. Para el control de cada uno de los pulsadores debe de emplear funciones de programa.
f. Para la etapa de potencia de control del motor DC debe de emplear un circuito electrónico haciendo uso
de un transistor BJT o un C.I. Driver de Motor L293D.

NOTA: Para el desarrollo del software se evaluará la complejidad del código de programa a desarrollar. Debe
de emplear recursos internos de Arduino como Memorias EEPROM, Interrupciones Externas, Interrupción
Timer 1, PWM, Comunicación Serial Síncrona, etc. En base a las consideraciones básicas mencionadas
anteriormente cada grupo esta en libertad de adicionar otras mejoras adicionales como accionar el control
para 2 motores DC, comunicación I2c, Implementar un menú de opciones de control usando máquinas de
estado, etc. que servirán para mejorar su evaluación final.
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 5

INFORME DEL PROYECTO


Para su evaluación cada grupo de trabajo debe de presentar un informe donde debe de considerar los
siguientes Ítems:
1. Caratula
Deberá contener:
 Título de su proyecto
 Logo de la institución
 Nombre del curso
 Nombre del laboratorio
 Nombres de los integrantes
 Sección a la que pertenecen
 Nombre del docente
2. Fundamento teórico
 Deberá ser conciso y redactado con lenguaje propio.
 Estará basado en las lecturas recomendadas o cualquier otra información relacionada con el
tema. No debe de exceder de una página.
3. Desarrollo del proyecto
 Diseño de Hardware
 Diagrama de bloques del proyecto
 Circuito esquemático electrónico
 Diseño de Software
 Pseudocódigo (Comentarios en las líneas de código de programa).
4. Resultados del proyecto:
o Video explicando el Código de Programa y mostrando simulación (Usar software Tinkercad,
Proteus, etc.), tiempo de duración máximo 2 min.
o Adjuntar evidencia fotográfica del funcionamiento de su proyecto, DataSheet (Hoja de Datos) de
los componentes electrónicos empleados.
o Video mostrando proyecto en físico funcionando (Opcional)
5. Observaciones y Conclusiones
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 6
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 7

Fundamento Teórico
En resumen, el código controla un sistema de advertencia de proximidad utilizando un
sensor ultrasónico, una matriz de LEDs y un zumbador, con retroalimentación visual y
auditiva. A continuación, le mostrare cada función que se empleó en el código

Configuración Inicial:
Se inicializan los pines para el sensor ultrasónico, el zumbador, la matriz de LEDs y el LCD.
Se configuran parámetros como el rango de alerta (ALERTA), el rango total (RANGO) y la
intensidad del zumbador (INTENSIDAD).
Bucle Principal (loop()):

Medición de Distancia (measureDistance()):


Utiliza el sensor ultrasónico para medir la distancia y almacena el resultado en la variable
global DISTANCIA.

Actualización del LCD (displayDistance()):


Muestra la distancia medida en el LCD.

Actualización de LEDs (updateLEDs()):


Controla una matriz de LEDs que se iluminan secuencialmente según la distancia medida.

Control del Zumbador (handleBuzzer()):


Activa el zumbador y muestra una advertencia en el LCD si la distancia es menor que el
valor de alerta (ALERTA).
Apaga el zumbador y elimina la advertencia si la distancia está dentro del rango permitido
(RANGO), después de un tiempo determinado por la distancia medida y la intensidad
configurada.
Funciones Adicionales:

Inicialización del LCD (lcdInit()):


Configura y muestra un mensaje inicial en el LCD.

Configuración de Pines (pinMode()):


Establece los modos de los pines para la entrada/salida adecuada.
Variables Globales:

DISTANCIA: Almacena la distancia medida por el sensor ultrasónico.


mostrar Alerta: Indica si se debe mostrar la advertencia en el LCD.
En conjunto, el código proporciona un sistema de advertencia de proximidad que utiliza
diferentes medios para alertar al usuario sobre la distancia a un objeto, combinando
retroalimentación visual en el LCD y retroalimentación auditiva a través del zumbador y la
matriz de LEDs.
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 8

Desarrollo del Proyecto


Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 9

Pseudocodigo

// Configuración de pines y constantes


const int BUZZER = 5;
const int TRIG = 6;
const int ECHO = 7;
const int dataPin = 8;
const int latchPin = 9;
const int clockPin = 10;

const int RANGO = 60;


const int INTENSIDAD = 3;
const int ALERTA = 5;

byte ledPatterns[] = {
B11111111,
B01111111,
B00111111,
B00011111,
B00001111,
B00000111,
B00000011,
B00000001,
B00000000
};

bool mostrarAlerta = false;

// Inicialización del sistema


void setup() {
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(BUZZER, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);

lcdInit(); // Inicialización del LCD


}

// Función para inicializar el LCD


void lcdInit() {
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 10

lcd.print("Distancia:");
}

// Bucle principal
void loop() {
measureDistance(); // Medir distancia con el sensor ultrasónico
displayDistance(); // Mostrar distancia en el LCD
updateLEDs(DISTANCIA); // Actualizar LEDs según la distancia
handleBuzzer(); // Controlar el zumbador según la distancia
}

// Función para medir la distancia con el sensor ultrasónico


void measureDistance() {
digitalWrite(TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG, LOW);
int DURACION = pulseIn(ECHO, HIGH);
DISTANCIA = DURACION / 58.3;
}

// Función para mostrar la distancia en el LCD


void displayDistance() {
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(DISTANCIA);
lcd.print(" cm ");
}

// Función para actualizar los LEDs según la distancia


void updateLEDs(int distance) {
if (distance <= RANGO && distance >= 0) {
int ledIndex = map(distance, 0, RANGO, 0, 8);
byte pattern = ledPatterns[ledIndex];

digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, pattern);
digitalWrite(latchPin, HIGH);
} else {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B00000000);
digitalWrite(latchPin, HIGH);
}
}

// Función para controlar el zumbador según la distancia


void handleBuzzer() {
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 11

delay(450);

if (DISTANCIA <= ALERTA && DISTANCIA >= 0) {


digitalWrite(BUZZER, HIGH);
mostrarAlerta = true;
} else if (DISTANCIA > ALERTA && DISTANCIA <= RANGO) {
digitalWrite(BUZZER, HIGH);
delay(DISTANCIA * INTENSIDAD);
digitalWrite(BUZZER, LOW);
mostrarAlerta = false;
} else {
digitalWrite(BUZZER, LOW);
mostrarAlerta = false;
}

lcd.setCursor(0, 0);
if (mostrarAlerta) {
lcd.print("!!CUIDADO!!");
} else {
lcd.print("Distancia: ");
}
}

Resultados del Proyecto

https://youtu.be/v-CFv9_TrvU
https://youtu.be/QHY2ZgSJpeY

Observaciones:

 Sensores y Actuadores: El código utiliza un sensor ultrasónico para medir la distancia y un


conjunto de LEDs y un zumbador para proporcionar retroalimentación visual y auditiva.

 Control de Alerta: La variable mostrarAlerta se utiliza para controlar la aparición del


mensaje "¡¡CUIDADO!!" en la pantalla LCD, así como el estado del zumbador.

 Actualización de LEDs: La función updateLEDs utiliza un conjunto predefinido de patrones


de LED basados en la distancia para indicar la proximidad.

 Manejo del Buzzer: El zumbador se activa cuando la distancia está dentro del rango de
alerta y se apaga después de un tiempo si la distancia está en el rango normal.

 Unidades de Distancia: La distancia se mide en centímetros y se muestra en el LCD. No se


implementa un cambio de unidades en el código proporcionado.
Lab. 15, 16 – Desarrollo e Implementación de control de motor DC Nro. DD-107
usando Arduino. Página 12

 Estructuración del Código: Se utiliza una estructura modular con funciones separadas para
diferentes tareas, lo que facilita la comprensión y mantenimiento del código.

Conclusiones:

 Sistema de Advertencia: El código implementa un sistema de advertencia de proximidad


simple pero efectivo utilizando sensores y actuadores.

 Retroalimentación Visual y Auditiva: La combinación de LEDs y zumbador proporciona una


retroalimentación tanto visual como auditiva, mejorando la percepción del usuario sobre
la distancia del objeto.

 Modularidad: La estructura modular del código facilita la comprensión y modificación del


sistema. Cada función realiza una tarea específica, lo que mejora la legibilidad y
mantenibilidad del código.

 Posible Mejora: Se podría mejorar permitiendo al usuario cambiar las unidades de medida
(por ejemplo, de centímetros a metros) y ajustar los umbrales de alerta según sus
necesidades.

 Comentarios: Los comentarios en el código explican claramente cada sección y función,


facilitando la comprensión para cualquier persona que revise o modifique el código en el
futuro.

 Testing: Es esencial realizar pruebas exhaustivas para asegurarse de que el sistema


funcione correctamente en diversas situaciones y condiciones.

 Estas observaciones y conclusiones proporcionan una visión general del código y sugieren
áreas donde se puede mejorar o personalizar según los requisitos específicos del usuario.

También podría gustarte