You are on page 1of 22

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN DE AREQUIPA

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS

ESCUELA PROFESIONAL DE INGENIERÍA ELECTRICA

LABORATORIO DE SISTEMAS DIGITALES


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

PRESENTADO POR:
ROQUE GUTIERREZ BRAYAN OSCAR CUI: 20133357

AREQUIPA-PERU
2017
EJEMPLO PRÁCTICO DE USO DEL ARDUINO

Tabla de contenido
CRONOMETRO ARDUINO CON BOTONES DE INICIO Y PARADA ..................... 2
1. Especificaciones .................................................................................................... 2
1.1. Entradas y salidas ............................................................................................... 2
1.2. Diagrama de bloques ......................................................................................... 2
1.3. Diagrama de tiempos ......................................................................................... 2
2. Desarrollo .............................................................................................................. 2
2.1. Materiales ........................................................................................................... 2
2.2. Diagrama de conexiones .................................................................................... 5
2.3. Programación para el Arduino ........................................................................... 6
2.4. Simulación ....................................................................................................... 10
3. Prueba .................................................................................................................. 11
4. Evidencias............................................................................................................ 12
CONTROL DE MOTOR A PASOS CON ARDUINO ................................................. 14
1. Especificaciones .................................................................................................. 14
1.1. Entrada y salidas .............................................................................................. 14
1.2. Diagrama de bloques ....................................................................................... 14
1.3. Diagrama de tiempos ....................................................................................... 14
2. Desarrollo ............................................................................................................ 14
2.1. Materiales ......................................................................................................... 14
2.2. Diagrama de conexiones .................................................................................. 16
2.3. Programación para el Arduino ......................................................................... 17
3. Prueba .................................................................................................................. 19
4. Evidencias............................................................................................................ 21

[NOMBRE DEL AUTOR] 1


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

CRONOMETRO ARDUINO CON BOTONES DE INICIO Y


PARADA

1. Especificaciones
1.1. Entradas y salidas
1.2. Diagrama de bloques
1.3. Diagrama de tiempos
2. Desarrollo
2.1. Materiales

o Arduino UNO R3

[NOMBRE DEL AUTOR] 2


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

o Protoboard de 400 huecos

o Display 7 segmentos dual/ unificado (cátodo común)

o (2) Pulsadores

[NOMBRE DEL AUTOR] 3


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

o (20) Cables de conexion Jumper

o Transistores 2N2222A

o (4) Resistencias 10K ohm

[NOMBRE DEL AUTOR] 4


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

o (8) Resistencias 1K ohm

2.2. Diagrama de conexiones

 ARDUINO - Display 7 Segmentos (catodo comun):

Las conexiones entre el Arduino y el Display deben realizarse con una


resistencia de 1K ohmio.

 2 a
 3 b
 4 c
 5 d
 6 e
 7 f
 8 g
 9 P
 10 COM digito izquierdo usando Transistor NPN
 11 COM digito derecho usando Transistor NPN
 12 - Boton de inicio (se activa con GND)
 13 - Boton de parada (se activa con GND)

[NOMBRE DEL AUTOR] 5


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

2.3. Programación para el Arduino

/* Cronometro de dos Digigitos en 7 Segmentos usando multiplexacion


con boton de inicio y parada
*/

int inicio=1; // variable para el boton de inicio


int parada=1; // variable para el boton de parada
int activar_boton_inicio=1; // activa boton de inicio con "1" desactiva con "0"
int activar_boton_parada=0; // activa boton de parada con "1" desactiva con "0"
int activar_incremento=0; // activa incremento del contador con "1" desactiva con "0"

int retardo=10; // tiempo que dura encendido cada 7 seg (10 mili segundos)

int var=0; // Valor del digito que se va a desplegar por el 7 seg.


int unidad=0; // cuenta las unidades (derecha)
int decena=0; // cuenta las decenas (izquierda)
int conmutador=0; // multiplexacion de uno a otro 7 segmentos
int cont=0; // contador de ciclos de espera para cambiar de numero

void setup() {
pinMode(2, OUTPUT); //seg a
pinMode(3, OUTPUT); //seg b
pinMode(4, OUTPUT); //seg c
pinMode(5, OUTPUT); //seg d
pinMode(6, OUTPUT); //seg e
pinMode(7, OUTPUT); //seg f
pinMode(8, OUTPUT); //seg g

pinMode(10, OUTPUT); // activa digito 1 derecha (unidad)


pinMode(11, OUTPUT); // activa digito 2 izquierda (decena)

pinMode(12, INPUT); // boton de inicio


pinMode(13, INPUT); // boton de parada
}

void loop() {

inicio=digitalRead(12); // lee el estado del boron de inicio


parada=digitalRead(13); // lee el estado del boton de parada

delay(retardo); // tiempo que dura encendido cada 7seg antes de cambiar al otro

if (inicio==0){ // si oprime boton de inicio el cronometro inicializa en 00


if(activar_boton_inicio==1){ // si esta activado el boton de inicio
unidad=0; // inicializa las unidades (derecha)
decena=0; // inicializa las decenas (izquierda)
activar_boton_inicio=0; // desactiva boton de inicio
activar_boton_parada=1; // activa boton de parada
[NOMBRE DEL AUTOR] 6
EJEMPLO PRÁCTICO DE USO DEL ARDUINO

activar_incremento=1; //desactiva el incremento del contador


}
}
if (parada==0){ // si oprime boton parada
if(activar_boton_parada==1){ // si esta activado el boton de parada
activar_boton_parada=0; // desactiva boton de parada
activar_boton_inicio=1; // activa boton de inicio
activar_incremento=0; //desactiva el incremento del contador
}
}

if(activar_incremento==1){ // si esta activo el incremento del contador


cont++; // incrementa el contador de ciclos en Uno
}

if (cont==10){ // cada cuanto tiempo (ciclos)cambia un numero


cont=0; // inicializa el contador de ciclos
unidad=unidad+1; // incrementa la unidad, primer 7seg
if (unidad >= 10){ // cuando la unidad llegue a 10 incrementa la decena
decena=decena+1; // incrementa la decena, segundo 7seg
unidad=0; // regresa la unidad a cero
if (decena>=10){ // cuando la decena llegue a 10 se inicializa a cero
decena=0;
}
}
}

if (conmutador == 0) { // hace la multiplexacion conmutando entre los dos 7seg izq


y der
digitalWrite(10, 1); // enciende el derecho
digitalWrite(11, 0); // apaga el izquierdo
var=unidad; // iguala la variable que escribe el numero en el 7seg al valor de
la unidad
conmutador=1; // cambia el conmutador para que en el siguiente ciclo cumpla
la otra condicion

}
else{
digitalWrite(10, 0); // apaga el derecho
digitalWrite(11, 1); // enciende el izquierdo
var=decena; // iguala la variable que escribe el numero en el 7seg al valor de
la decena
conmutador=0; // cambia el conmutador para que en el siguiente ciclo cumpla
la otra condicion

}
switch (var) {

[NOMBRE DEL AUTOR] 7


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

case 1: //escribe en el 7seg el numero 1


digitalWrite(2, 0);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
break;
case 2: //escribe en el 7seg el numero 2
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 0);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 0);
digitalWrite(8, 1);
break;
case 3: //escribe en el 7seg el numero 3
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 1);
break;
case 4: //escribe en el 7seg el numero 4
digitalWrite(2, 0);

digitalWrite(3, 1);

[NOMBRE DEL AUTOR] 8


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 5: //escribe en el 7seg el numero 5
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 6: //escribe en el 7seg el numero 6
digitalWrite(2, 1);
digitalWrite(3, 0);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 7: //escribe en el 7seg el numero 7
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
break;
case 8: //escribe en el 7seg el numero 8
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
[NOMBRE DEL AUTOR] 9
EJEMPLO PRÁCTICO DE USO DEL ARDUINO

digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 9: //escribe en el 7seg el numero 9
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 1);
digitalWrite(8, 1);
break;
case 0: //escribe en el 7seg el numero 0
digitalWrite(2, 1);
digitalWrite(3, 1);
digitalWrite(4, 1);
digitalWrite(5, 1);
digitalWrite(6, 1);
digitalWrite(7, 1);
digitalWrite(8, 0);
break;
default:
digitalWrite(2, 0);
digitalWrite(3, 0);
digitalWrite(4, 0);
digitalWrite(5, 0);
digitalWrite(6, 0);
digitalWrite(7, 0);
digitalWrite(8, 0);
}
}

2.4. Simulación

[NOMBRE DEL AUTOR] 10


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

3. Prueba

[NOMBRE DEL AUTOR] 11


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

4. Evidencias

[NOMBRE DEL AUTOR] 12


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

[NOMBRE DEL AUTOR] 13


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

CONTROL DE MOTOR A PASOS CON ARDUINO

1. Especificaciones

1.1. Entrada y salidas

1.2. Diagrama de bloques

1.3. Diagrama de tiempos

2. Desarrollo
2.1. Materiales

o Arduino UNO R3

[NOMBRE DEL AUTOR] 14


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

o Motor de Pasos 28BYJ-48-5V

o Driver ULN200

o (5) Cables Jumper M - H

[NOMBRE DEL AUTOR] 15


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

o Fuente de tención 5V DC

2.2. Diagrama de conexiones

o Conexión entre Arduino y Driver ULN200

 8  IN1
 9  IN2
 10  IN3
 11  IN4

[NOMBRE DEL AUTOR] 16


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

2.3. Programación para el Arduino

/* Motor Paso a Paso ajustado a grados


*/
int retardo=5; // Tiempo de retardo en milisegundos (Velocidad del Motor)
int dato_rx; // valor recibido en grados
int numero_pasos = 0; // Valor en grados donde se encuentra el motor
String leeCadena; // Almacena la cadena de datos recibida

void setup() {
Serial.begin(9600); // inicializamos el puerto serie a 9600 baudios
pinMode(11, OUTPUT); // Pin 11 conectar a IN4
pinMode(10, OUTPUT); // Pin 10 conectar a IN3
pinMode(9, OUTPUT); // Pin 9 conectar a IN2
pinMode(8, OUTPUT); // Pin 8 conectar a IN1
}

void loop() {
while (Serial.available()) { // Leer el valor enviado por el Puerto serial
delay(retardo);
char c = Serial.read(); // Lee los caracteres
leeCadena += c; // Convierte Caracteres a cadena de caracteres
}
if (leeCadena.length()>0){
dato_rx = leeCadena.toInt(); // Convierte Cadena de caracteres a Enteros
Serial.print(dato_rx); // Envia valor en Grados
Serial.println(" Grados");
delay(retardo);
dato_rx = (dato_rx * 1.4222222222); // Ajuste de 512 vueltas a los 360 grados
}

while (dato_rx>numero_pasos){ // Girohacia la izquierda en grados


paso_izq();
numero_pasos = numero_pasos + 1;
}
while (dato_rx<numero_pasos){ // Giro hacia la derecha en grados
paso_der();
numero_pasos = numero_pasos -1;
}
leeCadena = ""; // Inicializamos la cadena de caracteres recibidos
apagado(); // Apagado del Motor para que no se caliente
} ///////////////////// Fin del Loop ///////////////////////////

void paso_der(){ // Pasos a la derecha


digitalWrite(11, LOW);

[NOMBRE DEL AUTOR] 17


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(retardo);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(retardo);
}

void paso_izq() { // Pasos a la izquierda


digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, LOW);
delay(retardo);
digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
delay(retardo);
digitalWrite(11, HIGH);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, HIGH);
delay(retardo);
}

void apagado() { // Apagado del Motor


digitalWrite(11, LOW);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
}
[NOMBRE DEL AUTOR] 18
EJEMPLO PRÁCTICO DE USO DEL ARDUINO

3. Prueba

Digitamos los ángulos deseados desde la App de Arduino.

[NOMBRE DEL AUTOR] 19


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

[NOMBRE DEL AUTOR] 20


EJEMPLO PRÁCTICO DE USO DEL ARDUINO

4. Evidencias

[NOMBRE DEL AUTOR] 21

You might also like