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
AREQUIPA-PERU 2017
CUI: 20133357
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 pa ra 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 pa ra el Arduino ........................ .............................................. ............................................. ........................... .... 17
3.
Prueba ........................................... ................................................................. ............................................ ............................................. ........................... .... 19
4.
Evidencias.............................................................. ..................................................................................... .............................................. ....................... 21
[NOMBRE DEL AUTOR]
1
EJEMPLO PRÁCTICO DE USO DEL ARDUINO
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
ARDUINO - Display 7 Segmentos (catodo comun): Las conexiones entre el Arduino y el Display deben realizarse con una resistencia de 1K ohmio.
2 3 4 5 6 7 8 9 10 11 12 13 -
a b c d e f g P COM digito izquierdo usando Transistor NPN COM digito derecho usando Transistor NPN Boton de inicio (se activa con GND) Boton de parada (se activa con GND)
[NOMBRE DEL AUTOR]
5
EJEMPLO PRÁCTICO DE USO DEL 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); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT);
//seg a //seg b //seg c //seg d //seg e //seg f //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); parada=digitalRead(13); delay(retardo);
// lee el estado del boron de inicio // lee el estado del boton de parada
// 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) y der digitalWrite(10, 1); digitalWrite(11, 0); var=unidad; la unidad conmutador=1; la otra condicion
{
// hace la multiplexacion conmutando entre los dos 7seg izq
// enciende el derecho // apaga el izquierdo // iguala la variable que escribe el numero en el 7seg al valor de // cambia el conmutador para que en el siguiente ciclo cumpla
} 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); } }
[NOMBRE DEL AUTOR]
10
EJEMPLO PRÁCTICO DE USO DEL ARDUINO
[NOMBRE DEL AUTOR]
11
EJEMPLO PRÁCTICO DE USO DEL ARDUINO
[NOMBRE DEL AUTOR]
12
EJEMPLO PRÁCTICO DE USO DEL ARDUINO
[NOMBRE DEL AUTOR]
13
EJEMPLO PRÁCTICO DE USO DEL ARDUINO
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
o
Conexión entre Arduino y Driver ULN200
8 9 10 11
IN1 IN2 IN3 IN4
[NOMBRE DEL AUTOR]
16
EJEMPLO PRÁCTICO DE USO DEL 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
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
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
[NOMBRE DEL AUTOR]
21