0% encontró este documento útil (0 votos)
19 vistas20 páginas

Lab13 Arduino - Control Motores v3

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas20 páginas

Lab13 Arduino - Control Motores v3

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 20

Introducción a la Electrónica

CÓDIGO C33529

LABORATORIO N° 13

“Arduino - Control de Motores”

Torres Cáceres Miguel Ángel


Alumno (os): Vera Rosas, Jean Paul

Grupo (mesa) : Profesor: Nota:


Semestre : 1
Fecha de entrega : Hora:
ELABORACION DE ATS :
ANALISIS DE TRABAJO SEGURO (ATS)

FECHA
TAREA: Lab12 - Arduino - Control de motores DIA MES AÑO

LABORATORIO X AMBIENTE EQUIPO DE

FIRMA
DOCENTE: 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
Nro. DD-107
Arduino - Control de motores Página 4

1. OBJETIVOS
 Implementar aplicaciones de circuitos electrónicos con Arduino.
 Realizar aplicaciones básicas con los componentes y materiales de software y de hardware en Arduino.
 Implementar un circuito de control básico de un servomotor con Arduino.
 Simular un circuito de control básico de un motor DC con Arduino.
 Describir e interpretar los códigos y comandos del lenguaje de programación utilizados en la interface
Arduino para control con de motores DC y servomotor.

2. MATERIAL A EMPLEAR
 Computadora con software Arduino IDE.
 Tarjeta SparkFun RedBoard (tarjeta Arduino).
 Servomotores, cables de conexión.
 Protoboard o módulo de conexiones.
 Multímetro digital.
 Programa de simulación online Tinkercad.

3. PROCEDIMIENTO

Armar el siguiente circuito con un servomotor

El código del programa es el siguiente:


Nro. DD-107
Arduino - Control de motores Página 5

NOTAS DE CÓDIGO

A continuación se muestran algunos comandos que aparecerán en el programa para el circuito con el
potenciómetro:

#include <Servo.h> : Librería que permite utilizar de manera más facil y transparente los servomotores.
Nro. DD-107
Arduino - Control de motores Página 6

RECUERDE: NO CONECTAR EL MÓDULO ARDUINO A LA COMPUTADORA DURANTE EL ARMADO DEL


CIRCUITO.

Luego de haber abierto el programa, hacer clic en en botón Verificar, para


comprobar que el programa no tiene errores:

Después de verificar que no hay errores en el código del programa, conectar el módulo Arduino con la
computadora. Para ello, utilice el conector USB que viene con el módulo para conectar la tarjeta Arduino
(tarjeta RedBoard) a una de las entradas USB de la computadora.

Luego, hacer clic en el botón Subir.

Si la conexión de hardware y software entre la computadora y la tarjeta Arduino fue exitosa, no debería salir
ningún mensaje de error.

Describir de manera general el funcionamiento del circuito electrónico.

Para dar inicio al programa debemos hacer uso de la librería Servo h para poder controlar el servomotor desde
el Arduino. De la librería Servo h declaramos tres variables, servo 1, servo 2, servo 3 y también declaramos una
variable tipo entero o int que valdrá 0, luego de esto hacemos uso de dos métodos. Por un lado, se usará
attach, que nos permite indicar en que pin tenemos conectado el servomotor, y por otro lado Serial.begin
(9600) que le indicará al Arduino que inicie comunicación con la computadora. Luego de esto crearemos una
variable tipo char y switch, la condición switch nos va a permitir definir múltiples casos que puede llegar a
cumplir la variable char, y que acción pueda tomar en cualquiera de las situaciones que se le derive. Por un
lado, la variable tipo char se llamará comando y se encargara de leer todo lo escrito en el monitor serie para
cumplir con todas las acciones que se declaró en switch
Nro. DD-107
Arduino - Control de motores Página 7

Colocar el guion o código del programa elaborado en Arduino, agregando comentarios en castellano:

Guion
#include <Servo.h> //llamamos a la libreria servo.h

Servo servo1, servo2, servo3; //declaramos 3 variables de tipo servo

int serPos1 = 0; //declaramos una variable de tipo entero

void setup() //aca pondremos los codigos que deseamos ejecutar

servo1.attach(3, 500, 2500); //enlazamos el "servo1" con el pin 2

Serial.begin(9600); //iniciamos la transmision de datos seriales con el arduino

void loop() { //aca pondremos las ordenes que deseamos ejecutar

char comando=Serial.read(); //creamos una variable de tipo character que se llamara comando

switch(comando) //dentro del switch pondremos la variable "comando"

case 'a': //dentro del case pondremos la variable "a"

serPos1=0; //haremos que serPos1 valga 0

servo1.write(serPos1); //esta orden hara que el servomotor retorne a 0 grados

break;

case 'b': //dentro del case pondremos la variable "b"

serPos1=90; //haremos que serPos1 valga 90

servo1.write(serPos1); //esta orden hara que el servomotor gire 90 grados

break;

case 'c': //dentro del case pondremos la variable "c"

serPos1=180; //haremos que serPos1 valga 180

servo1.write(serPos1); //esta orden hara que el servomotor retorne a 180 grados

break;

delay(50); //retardo de 50 milisegundos

} //fin del bucle


Nro. DD-107
Arduino - Control de motores Página 8

Programación
Nro. DD-107
Arduino - Control de motores Página 9

Colocar evidencias del circuito electrónico implementado:

DESAFIO: Con un solo servomotor reducir la velocidad de este sin movimientos brusco (utilizar salidas PWM)
NO SE HACE
Nro. DD-107
Arduino - Control de motores Página 10

DESAFIO: Añadir tres servomotores y realizar su control (utilizar salidas PWM)

Circuito

Guion
#include <Servo.h> //llamamos a la ibreria del servo
Servo servo1, servo2, servo3; //declaramos 3 variables de tipo Servo
int serPos1 = 0; //declaramos una variable de tipo entero llamada "serPos1"
int serPos2 = 0; //declaramos una variable de tipo entero llamada "serPos2"
int serPos3 = 0; //declaramos una variable de tipo entero llamada "serPos3"

void setup() //aca pondremos los codigos que deseamos ejecutar


{
servo1.attach(6, 500, 2500); //enlazaremos el servo1 con el pin 6
servo2.attach(7, 500, 2500); //enlazaremos el servo2 con el pin 7
servo3.attach(8, 500, 2500); //enlazaremos el servo3 con el pin 8

Serial.begin(9600); //iniciamos la transmision de datos seriales con el arduino

void loop() //aca pondremos las ordenes que deseamos ejecutar


{
char comando=Serial.read(); //creamos una variable de tipo character que se llamara comando
switch(comando) //dentro del switch pondremos la variable "comando"
{
//ordenes para servomotor 1
case 'a': //dentro del case pondremos la variable "a"
serPos1=0; //haremos que el serPos1 valga 0
Nro. DD-107
Arduino - Control de motores Página 11

servo1.write(serPos1); //esta orden hara que el servomotor 1 retorne a 0 grados


break;

case 'b': //dentro del case pondremos la variable "b"


serPos1=90; //haremos que el serPos1 valga 90
servo1.write(serPos1); //esta orden hara que el servomotor 1 gire 90 grados
break;

case 'c': //dentro del case pondremos la variable "c"


serPos1=180; //haremos que el serPos1 valga 180
servo1.write(serPos1); //esta orden hara que el servomotor 1 gire 180 grados
break;

//ordenes para servomotor 2


case 'd': //dentro del case pondremos la variable "d"
serPos2=0; //haremos que el serPos2 valga 0
servo2.write(serPos2); //esta orden hara que el servomotor 2 retorne a 0 grados
break;

case 'e': //dentro del case pondremos la variable "e"


serPos2=45; //haremos que el serPos2 valga 45
servo2.write(serPos2); //esta orden hara que el servomotor 2 gire 45 grados
break;

case 'f': //dentro del case pondremos la variable "f"


serPos2=90; //haremos que el serPos2 valga 90
servo2.write(serPos2); //esta orden hara que el servomotor 2 gire 90 grados
break;

//ordenes para servomotor 3


case 'g': //dentro del case pondremos la variable "g"
serPos3=0; //haremos que el serPos3 valga 0
servo3.write(serPos3); //esta orden hara que el servomotor 3 retorne a 0 grados
break;

case 'h': //dentro del case pondremos la variable "h"


serPos3=120; //haremos que el serPos3 valga 120
servo3.write(serPos3); //esta orden hara que el servomotor 3 gire 120 grados
break;

case 'i': //dentro del case pondremos la variable "i"


serPos3=0; //haremos que el serPos3 valga 0
servo3.write(serPos3); //esta orden hara que el servomotor 3 retorne a 0 grados
break;
}

delay(50); //un pequeño retardo de 50 milisegundos


} //fin del boceto
Nro. DD-107
Arduino - Control de motores Página 12

Programación
Nro. DD-107
Arduino - Control de motores Página 13

CIRCUITO CON MOTOR DC (Simulación en TinkerCad)

RECUERDE: NO CONECTAR EL MÓDULO ARDUINO A LA COMPUTADORA DURANTE EL ARMADO DEL


CIRCUITO.

El código del programa es el siguiente:


Nro. DD-107
Arduino - Control de motores Página 14

Describir de manera general el funcionamiento del circuito electrónico.


Para controlar un motor DC desde nuestro Arduino, tendremos que usar un L293D que es un integrado para
controlar motores DC que usa el sistema puente en H, que nos ayudara a controlar el sentido de giro del
motor DC. Nosotros usaremos la parte izquierda, conectando el motor al pin 3 y 6 que son salidas. Y los pines 2
y 7 son las entradas donde conectaremos las salidas del Arduino. Ahora vamos a lo interesante, la
programación. Para ello tenemos que hacer uso de const short donde se nombraran dos variables in1, in2 que
serán los pines de salida del Arduino, por otro lado, usaremos Serial.begin (9600) que le indicará al Arduino
que inicie comunicación con la computadora, seguido de esto usaremos dos comandos importantes char y
switch, char se encargara de leer todo lo escrito en el monitor serie para llevar a cabo todas las acciones que
se declararon en switch.
Ver la imagen para entender mejor lo antes descrito:

Colocar el guion o código del programa elaborado en Arduino, agregando comentarios en castellano:

Guion

const short in1 = 10, in2 = 11; //declaramos 2 variables de tipo corta

void setup() {

pinMode(in1, OUTPUT); //pin 10 (in1) sera salida

pinMode(in2, OUTPUT); //pin 11 (in2) sera salida

Serial.begin(9600); //iniciamos la transmision de datos seriales con el arduino

void loop() {

char comando=Serial.read(); //creamos una variable de tipo character que se llamara comando

switch(comando) //dentro del switch pondremos la variable "comando"


Nro. DD-107
Arduino - Control de motores Página 15

//ordenes para el motor 1

case '0': //dentro del case pondremos la variable "0"

digitalWrite(in1, LOW); //no llega nada de voltaje al pin 10

digitalWrite(in2, LOW); //no llega nada de voltaje al pin 11

break;

case '1': //dentro del case pondremos la variable "1"

digitalWrite(in1, HIGH); //llega 5 volteos al pin 10

digitalWrite(in2, LOW); //no llega nada de voltaje al pin 11

break;

case '2': //dentro del case pondremos la variable "2"

digitalWrite(in1, LOW); //no llega nada de voltaje al pin 10

digitalWrite(in2, HIGH); //llega 5 volteos al pin 11

break;

case 'a': //dentro del case pondremos la variable "a"

digitalWrite(in1, LOW); //no llega nada de voltaje al pin 10

digitalWrite(in2, 160); //equivalencia a 160 en el pin 11

break;

delay(50); //pequeño retardo de 50 milisegundos

} //fin del boceto


Nro. DD-107
Arduino - Control de motores Página 16

Programa

Explicar brevemente para qué se utiliza el circuito integrado L2930

El circuito integrado L293D es un puente H de tipo cuádruple de alta corriente el cual está diseñado para hacer
girar dos motores de corriente directa en ambos sentidos o de forma bidireccional, es decir: en modo avance y
retroceso.
Nro. DD-107
Arduino - Control de motores Página 17

Colocar evidencias del circuito electrónico implementado:


Nro. DD-107
Arduino - Control de motores Página 18

Desafío: Añadir un motor y realizar el control para ambos motores.

Circuito

Guion

const short in1 = 10, in2 = 11, in3 = 9, in4 = 8; //declaramos 4 variables de tipo corta

void setup() {
pinMode(in1, OUTPUT); //pin 10 (in1) sera salida
pinMode(in2, OUTPUT); //pin 11 (in2) sera salida
pinMode(in3, OUTPUT); //pin 9 (in3) sera salida
pinMode(in4, OUTPUT); //pin 8 (in4) sera salida
Serial.begin(9600); //iniciamos la transmision de datos seriales con el arduino
}

void loop() {
char comando=Serial.read(); //creamos una variable de tipo character que se llamara comando
switch(comando) //dentro del switch pondremos la variable "comando"
{
//ordenes para el motor 1

case '0': //dentro del case pondremos la variable "0"


digitalWrite(in1, LOW); //no llega nada de voltaje al pin 10
digitalWrite(in2, LOW); //no llega nada de voltaje al pin 11
break;
case '1': //dentro del case pondremos la variable "1"
digitalWrite(in1, HIGH); //llega 5 volteos al pin 10
digitalWrite(in2, LOW); //no llega nada de voltaje al pin 11
break;
case '2': //dentro del case pondremos la variable "2"
Nro. DD-107
Arduino - Control de motores Página 19

digitalWrite(in1, LOW); //no llega nada de voltaje al pin 10


digitalWrite(in2, HIGH); //llega 5 volteos al pin 11
break;
case 'a': //dentro del case pondremos la variable "a"
digitalWrite(in1, LOW); //no llega nada de voltaje al pin 10
digitalWrite(in2, 160); //equivalencia a 160 en el pin 11
break;

//ordendes para el motor 2


case '8': //dentro del case pondremos la variable "8"
digitalWrite(in3, LOW); //no llega nada de voltaje al pin 9
digitalWrite(in4, LOW); //no llega nada de voltaje al pin 8
break;
case '3':
digitalWrite(in3, HIGH); //llega 5 volteos al pin 9
digitalWrite(in4, LOW); //no llega nada de voltaje al pin 8
break;
case '4':
digitalWrite(in3, LOW); //no llega nada de voltaje al pin 9
digitalWrite(in4, HIGH); //no llega nada de voltaje al pin 8
break;
case 'b':
digitalWrite(in3, LOW); //no llega nada de voltaje al pin 9
digitalWrite(in4, 160); //equivalencia a 160 en el pin 8
break;
}
delay(50); //pequeño retardo de 50 milisegundos
} //fin del boceto

Programación
Nro. DD-107
Arduino - Control de motores Página 20

OBSERVACIONES
 El control de un servo se reduce a indicar su posición mediante una señal de voltaje. El Angulo de
ubicación del motor dependerá del nivel alto de señal y cada servomotor dependiendo de donde se lo
compre tendrá distintas operaciones. Bueno todo esto no será necesario ya que los trabajos realizados
se hicieron en simulaciones, pero es importante tomar en cuenta lo antes dicho

 Tinkercad es una herramienta muy útil para hacer simulaciones de circuitos, pero necesita algunas
mejores como incluir una pausa cada que se inicie una simulación

CONCLUSIONES

 Dado que se utiliza la biblioteca Servo.h, controlar el servo desde Arduino es una tarea muy sencilla y
practica llevar a cabo grandes proyectos con servomotores

 El uso de un l293D es de gran valor cuando necesitamos controlar motores de corriente continua o
incluso universales en DC, también es capaz de utilizarse en otras aplicaciones o controlar otros
componentes que requieran de una alta tensión

TEMA DE INVESTIGACIÓN

Tarjeta de Red para Arduino.

El módulo Ethernet Arduino Shield permite que la placa Arduino se conecte a Internet. Se basa en el chip
Ethernet Wiznet W5100 (hoja de datos W5100_Datasheet). El chip Wiznet W5100 proporciona una red (IP)
capaz de utilizar TCP y UDP. Admite hasta cuatro conexiones de socket simultáneas

También podría gustarte