Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lima, Perú
2019
1
INDICE
2
Resumen
3
gabinete llegue a un limite inferior el sistema me avisara mediante una alarma
que se debe de comprar mas material para no quedar desabastecido y asi nunca
pare o demore la produccion.
Relación Beneficio/Costo
Costo Implementación
Tiempo.de.Recuperación = = 1.57 Meses = 47.1 dias
Beneficio Neto
4
CAPÍTULO
I
5
GENERALIDADES DE LA EMPRESA
1.1 MC. ELECTRONICS S.A.C. JR. PARURO NRO. 1314 INT. 126 LIMA - LIMA
– LIMA
VISION: Ser una de las empresas líderes en el país a nivel de producción y venta
en la industria electrónica, para satisfacer las necesidades de futuros
clientes con productos acorde a la tecnología actual. Promover el
desarrollo técnico y profesional de sus trabajadores, reconociendo su
esfuerzo para alcanzar y lograr metas laborales, profesionales y
personales
6
VALORES DE LA EMPRESA:
Empatía
Puntualidad
Responsabilidad
Honestidad
Respeto
1.3 Productos:
PRODUCCIÓN DE APARATOS ELECTRÓNICOS
Esta área está enfocada a la producción, venta y distribución de aparatos
electrónicos tales como fuentes variables, estabilizadoras, inversores, cargadores
etc., las cuales ayudan en el soporte y funcionamiento de equipos electrónicos.
VENTA DE TECNOLOGÍA
Esta área está enfocada a la venta de productos para proyectos y automatización
tales como microcontroladores, sensores, interfaces, maquetas, entre otros.
1.3.2 Mercado:
Está enfocado en el mercado electrónico, educativo e industrial, implementando
mejoras y automatización de procesos.
1.3.3 Clientes:
Contamos con clientes fieles a nuestros productos y servicios tales como
centros educativos, estudiantes de todos los niveles y empresas dentro del
mercado electrónico.
7
1.4 Estructura de la Organización
Gerencia General
Ventas Producción
8
CAPÍTULO
II
9
2.1 Identificación del problema técnico en la empresa
10
-Desorden de herramientas: para cualquier tipo de trabajo que necesitábamos
realizar, se requería del uso de herramientas las cuales se encontraban todas
apiladas en una sola caja lo cual producía un desorden y perdida de tiempo ya
que se necesitaba sacar herramienta por herramienta y devolver de nuevo todo a
su lugar después de encontrar la herramienta buscada.
PORCENTAJE
PROBLEMAS FRECUENCIA PORCENTAJE ACUMULADO
Demora en el
montaje de
tarjetas
electrónicas 9 30% 27%
Desorden de
herramientas 7 23% 50%
Perdida de
material 7 23% 74%
Demora de
laminado de
transformadores 5 17% 90%
Alejamiento de
áreas de trabajo 2 7% 97%
TOTAL 30
11
Diagrama de Pareto:
GRAFICO DE INCIDENCIAS
30 120%
25 100%
20 80%
15 60%
10 40%
5 20%
0 0%
Demora en el Desorden de Perdida de material Demora de Alejamiento de
montaje de tarjetas herramientas laminado de áreas de trabajo
electrónicas transformadores
12
2.2 Objetivos del Proyecto de Innovación y/o Mejora
Objetivo general: implementar un sistema automático que realice el dispensado
de los materiales necesarios para la fabricación de determinadas tarjetas,
mediante la lectura de un tag el cual contendrá los datos de los materiales y las
cantidades específicas para cada tipo de tarjeta a elaborar, con ello se agilizara
el montaje de tarjetas electrónicas, a su vez evitaremos pérdidas y
desabastecimiento de material ya que este sistema llevara un control del stock
de cada gabinete en tiempo real.
Objetivos específicos:
-Diseñar y simular un mecanismo de dispensación en solidiowork para adecuarlo
de la mejor manera con actuadores que sean baratos confiables y efectivos.
-Hacer un listado de los materiales necesarios para el armado de cada tipo de
placa con sus respectivas cantidades, para grabar toda la información en los tags.
-Diseñar e imprimir un PCB el cual contendrá toda la circuitería electrónica para
así evitar mucho cableado.
-Programar un sketch que ejecute todos los procesos requeridos para un óptimo
funcionamiento del proyecto.
13
2.4 Justificación
El proyecto se justifica por que ayudara a mejorar la fabricación de equipos
electrónicos, ya que agilizara una parte del proceso que más tiempo abarca
realizar el cual es la producción de tarjetas, reduciendo las pérdidas de tiempo a
la hora de la selección de los materiales y/o componentes ,evitando perdidas de
material ya que se dispensara las cantidades necesarias para cada tipo de tarjeta
y se llevara un control del abastecimiento de estos materiales para así no
posponer la producción, lo cual implica pérdida de tiempo y clientes.
Tecnología RFID:
RFID son las siglas inglesas de Radio Frequency IDentification lo que en español
significa Identificación por radiofrecuencia, es un sistema de almacenamiento y
recuperación de datos remoto que usa dispositivos denominados etiquetas,
tarjetas, transpondedores o tags RFID. El propósito fundamental de la tecnología
RFID es transmitir la identidad de un objeto (similar a un número de serie único)
mediante ondas de radio. Las tecnologías RFID se agrupan dentro de las
denominadas auto ID (identificación automática) (Wikipedia, RFID, 2019).
14
Un sistema RFID consta de los siguientes componentes:
El chip posee una memoria interna con una capacidad que depende del modelo y
varía de una decena a millares de bytes.
15
Microcontrolador:
Funcionamiento:
16
Los lenguajes de programación típicos que se usan para este fin
son ensamblador y C, pero antes de grabar un programa al microcontrolador hay
que compilarlo a hexadecimal que es el formato con el que funciona el
microcontrolador(¿QUÉ ES UN MICROCONTROLADOR?, s.f.).
de todo el sistema.
17
Para poder programar a un microcontrolador se requieren tres cosas:
Servomotor:
18
Características principales:
-El par: fuerza que es capaz de hacer en su eje. El par también se puede
llamar torque. Se suele expresar en Kg/cm, por ejemplo 3Kg/cm. A mayor par,
mayor corriente de consumo del servo, pero no suelen consumir mucho,
dependiendo del tipo de servomotor.
Puede venir todo en una caja formando el servo, pero normalmente el servo no
trae incluido el sistema de control. Si pone encoder incluido, quiere decir que si
viene el sistema de control incluido en el servo(SERVOMOTORES, s.f.).
Terminos y conceptos:
19
Transceptor: dispositivo que cuenta con un transmisor y un receptor que
comparten parte de la circuitería o se encuentran dentro de la misma caja.
20
CAPÍTULO
III
21
ANÁLISIS DE LA SITUACION ACTUAL
MAPA DE PROCESO
VENTAS MARKETING
AREA DE
P ALMACEN DE C
ENSAMBLADO Y
MATERIALES
E CABLEADO L
A
D I
I ALMACEN PARA E
AREA DE VENTAS Y
D PREPARACIÓN PREPARACIÓN N
DISTRIBUCIÓN
DE MATERIALES DE CAJAS
I T
D E
O AREA DE S
MONTAJE DE
FABRICACIÓN DE PROYECTOS
S TARJETAS
TRANSFORMADORES
ELECTRÓNICAS
COMPRAS GESTION DE
PRODUCCION
22
Almacén de materiales: El área de almacén es donde se encuentran todos los
materiales para la producción de equipos electrónicos y también almacenar los
productos terminados.
Área de preparación de materiales: En esta área se realizan trabajos previos
para la producción como el cortado de papel de pescado y corte de cables para
los transformadores.
Fabricación de Transformadores: en esta etapa de producción se realizan los
trasformadores de distintas potencias según el producto pedido,la fabricación va
desde el bobinado, el llenado con láminas y el empalme de cables y el barnizado
final.
Montaje de tarjetas Electrónicas: este proceso consiste en el armado y
montado de las tarjetas electrónicas, que se realiza manualmente desde el
montaje hasta el soldado y acabado final.
Preparación de cajas: esta etapa de producción consiste en el etiquetado de las
cajas según el tipo de producto y el agujerado tanto para el asegurado con
remache y también para el soporte del transformador.
Área de ensamblado y cableado: en esta etapa se realiza el ensamblado final
del transformador y la tarjeta electrónica mediante cables, asegurándolos en el
interior de la caja metálica, después se coloca el cable de poder que ira al
transformador mediante un interruptor para el prendido y apagado. Por último, se
pasa a sellar la caja asegurándolos con remaches.
Almacén para ventas y distribución: después del sellado se pasa a forrar con
film transparente los productos finales, para luego ponerlo en las tiendas para la
venta y distribuir los pedidos que se realizaron.
Área de Proyectos: esta área es indiferente a la producción de aparatos
electrónicos, pero también es importante ya que en esta se realizan proyectos
electrónicos para los estudiantes, universitarios y empresas que soliciten de
nuestro servicio según sus necesidades.
23
D.A.P DE MONTAJE DE TARJETAS ELECTRONICAS:
TARJETA ELECTRÓNICA
BUSCAR: se busca el
2 min diagrama de la placa a
montar según el
producto pedido.
CONTABILIZAR: se realiza un
conteo de las cantidades
5 min
necesarias, por cada tipo de
componente que será utilizado
para el montaje de la placa.
Total= 50 min
24
3.2 Efectos del problema en el área de trabajo o en los resultados de
la empresa.
PERDIDA DE
MATERIAL
SOBRANTE
SOBGREGASTOS
DEMORA EN LA POR MAL
OBTENCION DE CONTROL DE
MATERIALES INVENTARIO
DEMORA EN LA DISPENSACION Y
CONTROL DE MATERIALES PARA
EL MONTAJE DE TARJETAS
ELECTRONCIAS
DESABASTECIEMIENTO
DE MATERIALES
25
3.3Análisis de las causas raíces que generan el problema
DEMORA EN LA
DISPENSACION Y
CONTROL DE
MATERIALES
26
3.4 Priorización de causas raíces
27
-Poca rapidez y confusion al buscar los materiales:
DIAGRAMA DE PARETO
Después de haber profundizado más sobre las causas raíces, pasamos a hacer
una observación y encuesta de estas para ver con cuanta frecuencia se presentan
a lo largo de la producción, después de esto pasamos a colocarlos en un cuadro
de mayor a menor para priorizar los más importantes y resolver las causas que
acumulen el 80% del total.
PORCENTAJE
PROBLEMAS FRECUENCIA PORCENTAJE ACUMULADO
Mala ubicación y falta de
orden de los contenedores de
materiales 8 27% 23%
28
GRAFICO DE INCIDENCIAS
30 100%
90%
25
80%
70%
20
60%
15 50%
40%
10
30%
20%
5
10%
0 0%
Mala ubicación y Hacer apuntes y Poca rapidez y Falta de monitoreo Mal conteo de
falta de orden de los contabilidad de cada confusión al buscar de stock de cada material dispensado
contenedores de material requerido los materiales material del inventario
materiales
FRECUENCIA PORCENTAJE
29
CAPÍTULO IV
30
PROPUESTA TECNICA DE LA MEJORA.
31
Programacion y pruebas de funcionamiento:
32
DIAGRAMA DE FLUJO
INICIO
DECLARACIÓN
E/S Y LIBRERIAS
LECTURA DE
TARJETAS
20ms
¿TARJETA NO
VALIDA?
SI
SE COMPARA EL
UID DE LA TARJETA
¿TERMINÓ NO
DE LEER UID?
SI
33
A
¿TARJETA
MAESTRA? SI
NO
SE LEE LOS DATOS DE
LA MEMORIA DEL TAG
ELEGIR GABINETE
PARA LLENADO
MANUAL
SE COMPARA LOS
CASOS SEGÚN LOS
DATOS OBTENIDOS SE ENVIAN LOS
CARACTERES AL
ESCLAVO
D
20ms
SE ACCIONA EL
SERVOMOTOR ESPECIFICO
DEL GABINETE
SE ENVIAN LOS
CARACTERES AL
ESCLAVO
INGRESE LA CANTIDAD DE
COMPONENTES
REPUESTOS
SE MUESTRA LAS
CANTIDADES A
SE ACTUALIZA LOS DATOS
RETIRAR EN EL EN EL DISPLAY 1
DISPLAY 2
B
C
34
C
SE APRETA EL PULSADOR
PARA REGRESAR LOS
SERVOMOTORES A SU
ESTADO INICIAL
50ms
SE EVALUA LA CANTIDAD
DE COPONENTES EN CADA
GABINETE
NO
¿LLENADO
B
AUTOMATICO?
SI
SE MUESTRA EL
GABINETE ESCASO
DE COMPONENTES
EN EL DISPLAY 2
35
2-Diseño de PCB:
37
Con la herramienta de vision 3D que nos brinda el ARES, podemos
observar con mayor precision como quedara la placa despues de ser
impresa y montada con todos los componentes reales ,por si queremos
hacer alguna modificacion para una mejor presentacion .A continuacion
se muestra el acabado final de la placa realizada para el proyecto.
38
4-Diseño mecánico:
39
Después de haber realizado el modelado de todas las piezas,abrimos
el ambiente de “ensamblaje” que nos brinda solidworks para poder unir
todas estas en un solo bloque y asi trabajen como un mecanismo
unico,con esto proceso alfin se puede observar el trabajo final como
quedara en la vida real.
40
Por último se paso a diseñar el plano de construcción en el ambiente
de trabajo “Dibujo” ,realizando todo el acotado y diseño de vistas
necesarias para que sea mas fácil el entendimiento y ejecución del
plano, a la hora de construir la estructura en la vida real.(ver Anexo 2)
41
4.2 Consideraciones técnicas, operativas y ambientales para la implementación de
la mejora.
Capacitacion al personal:
Material no toxico:
Normas ISO:
-Tipos de líneas.
-Tipos de cotas.
- Formatos de lamina.
-Simbología y siglas
42
4.3 Recursos técnicos para implementar la mejora propuesta.
43
FIGURA 7: ARQUITECTURA ATMEGA 328P
44
El MFRC522 suele suministrarse con tarjetas o llaveros MIFARE Classic
1K. Este tipo de tarjetas son, esencialmente, un sistema de almacenamiento
donde la memoria está dividida en bloques, con mecanismos simple para el
acceso a la información.
45
Cada sector reserva una cierta memoria para las claves A y B, por lo que este
espacio normalmente no puede ser empleado para guardar datos, lo que reduce
la cantidad de memoria disponible en una MIFARE Classic 1K a 752 bytes.
46
Servomotor SG90:
El servo SG90 tiene un conector universal tipo “S” que encaja perfectamente en la
mayoría de los receptores de radio control incluyendo los Futaba, JR, GWS,
Cirrus, Hitec y otros.
Especificaciones Técnicas:
-Peso: 9g
47
4.4 Mapa de flujo de valor de la situación mejorada o diagrama de proceso
mejorado:
TARJETA ELECTRÓNICA
RETIRO DE COMPONENTES: se
5 min pasa a retirar los componentes de
los gabinetes expendidos por el
sistema, chequeando las cantidades
que nos especifica en el display.
CORTADO: se realiza el
corte del material sobrante
5 min
de los componentes
soldados.
48
4.5 Cronograma De Ejecución De La Mejora
49
4.6 Aspectos limitantes de la implementación de la mejora
Para la ejecucion del proyecto se detectaron algunos aspectos los cuales limitan
su optimo funcionamiento , estas son las siguientes:
Materiales genericos:
50
CAPÍTULO V
51
COSTOS DE IMPLEMENTACION DE LA MEJORA
52
14 Teclado Hexadecimal
unidad 1 S/6.00 S/6.00
15 Servomotores SG90
unidad 50 S/7.00 S/350.00
16 Pantalla LCD 20x4
unidad 2 S/20.00 S/40.00
17 Plancha Acrilico A2 2mm
unidad 1 S/35.00 S/35.00
Plancha MDF 2.13X2.44
18
MT , 2mm unidad 1 S/37.90 S/37.90
19 Barra de silicona
unidad 15 S/0.50 S/7.50
Canatelas para cableado
20
20mm unidad 2 S/3.00 S/6.00
21 Baja lengua de madera
paquete 4 S/2.00 S/8.00
22 Pintura en sprit 500ml
unidad 1 S/10.00 S/10.00
23 Palillo para maqueta
paquete 1 S/2.50 S/2.50
24 Clavos 5/8 20 mm
kilo 1 S/2.20 S/2.20
25 Clavos 3"
kilo 1/2 S/4.00 S/2.00
26 Huacha plana 1/4"
kilo 1/2 S/2.00 S/1.00
27 Pulsador NA 15 mm
unidad 1 S/1.00 S/1.00
TOTAL S/584.30
53
5.2 Costo de mano de obra
55
CAPÍTULO VI
56
EVALUACIÓN TECNICA Y ECONOMICA DE LA MEJORA
Beneficio técnico:
Trabajo diario:
Beneficio:
-La empresa se verá beneficiada con este proyecto ya que agilizara el tiempo de
producción y aumentara en un 44.8% .
57
Beneficio económico:
Beneficio :
Beneficio mensual:
58
6.2 Relación Beneficio/Costo
PRIMER AÑO
MES 0 1 2 3 4 5 6 7 8 9 10 11 12
Beneficios 920 920 920 920 920 920 920 920 920 920 920 920
Costos.Mantenimiento 50 50 50 50 50 50 50 50 50 50 50 50
Beneficio Neto 870 870 870 870 870 870 870 870 870 870 870 870
Costo.Implementación 1730.7
SEGUNDO AÑO
13 14 15 16 17 18 19 20 21 22 23 24 Total.Vida.Util
920 920 920 920 920 920 920 920 920 920 920 920 S/ 22,095.36
50 50 50 50 50 50 50 50 50 50 50 50 S/ 1,200.00
870 870 870 870 870 870 870 870 870 870 870 870 S/ 20,895.36
59
CAPÍTULO VII
60
CONCLUSIONES
7.1 Conclusiones respecto a los objetivos del Proyecto de Innovación y/o Mejora
61
CAPÍTULO
VIII
62
RECOMENDACIONES
8.1 Recomendaciones para la empresa respecto del Proyecto de Innovación y
Mejora
Realizar unas pruebas de la funcionalidad del proyecto para así corregir las
posibles fallas que se observen, antes de ponerla en marcha para así evitar
sobregastos y pocos beneficios esperados.
63
Bibliografía
-LLAMAS, L. (13 de OCTUBRE de ,2016). LECTURA DE TARJETAS RFID CON ARDUINO Y LECTOR
MIFARE RC522. Obtenido de LUIS LLAMAS Ingeniería, informática y diseño:
https://www.luisllamas.es/arduino-rfid-mifare-rc522/
64
ANEXOS
65
ANEXO 1
PROGRAMA MAESTRO
// Declaracion de variables
MFRC522::StatusCode status;
byte sector = 1;
66
byte blockAddr = 4;
byte trailerBlock = 7;
byte dato;
byte buffer[18];
int numero;
int val;
int BOTON = 2;
int MAS = 3;
int MENOS = 4;
int i = 0;
int n = 0;
int x = 0;
67
//creacion de caracteres para el lcd
byte CH0[8] =
B00111,
B01111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
byte CH1[8] =
B11111,
B11111,
B11111,
B00000,
B00000,
B00000,
B00000,
B00000
};
68
byte CH2[8] =
B11100,
B11110,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
byte CH3[8] =
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B01111,
B00111
};
69
byte CH4[8] =
B00000,
B00000,
B00000,
B00000,
B00000,
B11111,
B11111,
B11111
};
byte CH5[8] =
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11110,
B11100
};
70
byte CH6[8] =
B11111,
B11111,
B11111,
B00000,
B00000,
B00000,
B11111,
B11111
};
byte CH7[8] =
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
};
71
void setup()
lcd2.createChar(1, CH1);
lcd2.createChar(2, CH2);
lcd2.createChar(3, CH3);
lcd2.createChar(4, CH4);
lcd2.createChar(5, CH5);
lcd2.createChar(6, CH6);
lcd2.createChar(7, CH7);
lcd2.backlight();
72
for (byte i = 0 ; i < 6 ; i ++) key.keyByte[i] = 0xFF ; // seteamos el valor de la
variable key
lcd2.clear();
lcd_stock();
pinMode(MAS, INPUT);
pinMode(MENOS, INPUT);
lcd2.setCursor(0, 0);
lcd2.setCursor(0, 1);
lcd2.print("RETIRAR ---->");
TARJETA1.write(0);
TARJETA2.write(0);
TARJETA3.write(0);
void loop()
BusquedaTags:
73
Serial.print(F("PICC type: "));
Serial.println(mfrc522.PICC_GetTypeName(piccType));
// chequeo de compatibilidad
if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
return;
for (byte i = 0; i < mfrc522.uid.size; i ++) { // bucle recorre de un byte por vez el
UID
74
if (LLave_comparacion (LecturaUID, Usuario)) // llama a funcion comparaUID
con Usuario
lcd2.setCursor(0, 1);
lcd2.print("RETIRAR ---->");
status = (MFRC522::StatusCode)
mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
trailerBlock, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.println(mfrc522.GetStatusCodeName(status));
return;
Serial.println(F("datos en el sector:"));
Serial.println();
75
Serial.println(F(" ..."));
if (status != MFRC522::STATUS_OK) {
Serial.println(mfrc522.GetStatusCodeName(status));
Serial.println();
delay(1000);
lcd2.clear();
lcd2.setCursor(0, 0);
lcd2.setCursor(0, 1);
lcd2.print("RETIRAR ---->");
delay(2000);
76
boolean LLave_comparacion(byte lectura [], byte usuario []) // funcion comparaUID
for (byte i = 0; i < mfrc522.uid.size; i ++) { // bucle recorre de un byte por vez el
UID
for (byte i = 0; i < 16; i = i + 1) // bucle recorre de un byte por vez el buffer
case 1:
n = 0;
i++;
lcd2.setCursor(0, 0);
lcd2.print("RESISTEN");
lcd2.setCursor(2, 1);
lcd2.print("1Kohm");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
77
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(0, dato);
f = 2;
lcd1.setCursor(f, 0);
lcd1.print("0");
f = 3;
lcd1.setCursor(f, 0);
lcd1.print(dato);
break;
delay(500);
case 2:
n = 1;
i++;
lcd2.setCursor(1, 0);
lcd2.print("DIODO");
lcd2.setCursor(3, 1);
lcd2.print("3V");
delay(500);
78
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(1, dato);
f = 7;
lcd1.setCursor(f, 0);
lcd1.print("0");
f = 8;
lcd1.setCursor(f, 0);
lcd1.print(dato);
break;
delay(500);
case 3:
n = 2;
i++;
lcd2.setCursor(0, 0);
lcd2.print("TRANSIST");
lcd2.setCursor(2, 1);
79
lcd2.print("2222A");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(2, dato);
f = 12;
lcd1.setCursor(f, 0);
lcd1.print("0");
f = 13;
lcd1.setCursor(f, 0);
lcd1.print(dato);
break;
delay(500);
case 4:
n = 3;
i++;
80
lcd2.setCursor(0, 0);
lcd2.print("CAPACITO");
lcd2.setCursor(3, 1);
lcd2.print("22uF");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(3, dato);
f = 17;
lcd1.setCursor(f, 0);
lcd1.print("0");
f = 18;
lcd1.setCursor(f, 0);
lcd1.print(dato);
break;
81
case 5:
n = 4;
i++;
lcd2.setCursor(0, 0);
lcd2.print("RESISTEN");
lcd2.setCursor(1, 1);
lcd2.print("2.2Kohm");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(4, dato);
f = 2;
lcd1.setCursor(f, 1);
lcd1.print("0");
f = 3;
lcd1.setCursor(f, 1);
82
lcd1.print(dato);
break;
case 6:
n = 5;
i++;
lcd2.setCursor(1, 0);
lcd2.print("MOSFET");
lcd2.setCursor(3, 1);
lcd2.print("50N2");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(5, dato);
f = 7;
lcd1.setCursor(f, 1);
lcd1.print("0");
f = 8; }
83
lcd1.setCursor(f, 1);
lcd1.print(dato);
break;
case 7:
n = 6;
i++;
lcd2.setCursor(2, 0);
lcd2.print("SCR");
lcd2.setCursor(1, 1);
lcd2.print("C106D");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(6, dato);
f = 12;
lcd1.setCursor(f, 1);
lcd1.print("0");
84
f = 13;
lcd1.setCursor(f, 1);
lcd1.print(dato);
break;
case 8:
n = 7;
i++;
lcd2.setCursor(3, 0);
lcd2.print("IC");
lcd2.setCursor(2, 1);
lcd2.print("2029");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(7, dato);
f = 17;
85
if (dato < 10)
lcd1.setCursor(f, 1);
lcd1.print("0");
f = 18;
lcd1.setCursor(f, 1);
lcd1.print(dato);
break;
case 9:
n = 8;
i++;
lcd2.setCursor(0, 0);
lcd2.print("POTENCIO");
lcd2.setCursor(1, 1);
lcd2.print("50Kohm");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
86
EEPROM.write(8, dato);
f = 2;
lcd1.setCursor(f, 2);
lcd1.print("0");
f = 3;
lcd1.setCursor(f, 2);
lcd1.print(dato);
break;
case 10:
n = 9;
i++;
lcd2.setCursor(1, 0);
lcd2.print("ZENER");
lcd2.setCursor(2, 1);
lcd2.print("3.3V");
delay(500);
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
87
delay(50);
EEPROM.write(9, dato);
f = 7;
lcd1.setCursor(f, 2);
lcd1.print("0");
f = 8;
lcd1.setCursor(f, 2);
lcd1.print(dato);
break;
case 11:
n = 10;
i++;
lcd2.setCursor(2, 0);
lcd2.print("OPAM");
lcd2.setCursor(2, 1);
lcd2.print("LM358");
delay(500);
printNumber(val);
abrir_cajeta();
88
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(10, dato);
f = 12;
lcd1.setCursor(f, 2);
lcd1.print("0");
f = 13;
lcd1.setCursor(f, 2);
lcd1.print(dato);
break;
case 12:
n = 11;
i++;
lcd2.setCursor(0, 0);
lcd2.print("TRANSIST");
lcd2.setCursor(1, 1);
lcd2.print("TIP33");
delay(500);
89
printNumber(val);
abrir_cajeta();
BOTON_ESTADO();
cerrar_cajeta();
lcd2.clear();
delay(50);
EEPROM.write(11, dato);
f = 17;
lcd1.setCursor(f, 2);
lcd1.print("0");
f = 18;
lcd1.setCursor(f, 2);
lcd1.print(dato);
break;
case 13:
i++;
lcd2.setCursor(0, 0);
lcd2.print("TARJETA");
lcd2.setCursor(1, 1);
lcd2.print("FUENTE");
90
delay(500);
printNumber(val);
TARJETA1.write(180);
delay(500);
BOTON_ESTADO();
TARJETA1.write(0);
delay(500);
lcd2.clear();
delay(50);
EEPROM.write(12, dato);
f = 2;
lcd1.setCursor(f, 3);
lcd1.print("0");
f = 3; }
lcd1.setCursor(f, 3);
lcd1.print(dato);
break;
case 14:
i++;
lcd2.setCursor(0, 0);
lcd2.print("TARJETA");
lcd2.setCursor(12, 3);
91
lcd2.print("INVERSOR");
delay(500);
printNumber(val);
TARJETA2.write(180);
delay(1000);
BOTON_ESTADO();
TARJETA2.write(0);
delay(500);
lcd2.clear();
delay(50);
EEPROM.write(13, dato);
f = 7;
lcd1.setCursor(f, 3);
lcd1.print("0");
f = 8;
lcd1.setCursor(f, 3);
lcd1.print(dato);
break;
92
case 15:
i++;
lcd2.setCursor(0, 0);
lcd2.print("TARJETA");
lcd2.setCursor(0, 1);
lcd2.print("ESTABILI");
delay(500);
printNumber(val);
TARJETA3.write(180);
delay(1000);
BOTON_ESTADO();
TARJETA3.write(0);
delay(500);
lcd2.clear();
delay(50);
EEPROM.write(14, dato);
f = 12;
lcd1.setCursor(f, 0);
lcd1.print("0");
f = 13;
93
lcd1.setCursor(f, 3);
lcd1.print(dato);
break;
default:
i = 16;
Serial.println("FIN");
delay(500);
lcd2.clear();
break;
Serial.print(buffer[i], HEX);
void lcd_stock()
int d = 0;
94
{
lcd1.setCursor(f, c);
lcd1.print(LETRA);
lcd1.print(":");
lcd1.print("0");
lcd1.print(EEPROM.read(d));
LETRA++;
d++;
delay(50);
LETRA = 'A';
void Numero_Cajeta()
lcd2.clear();
lcd2.setCursor(0, 0);
lcd2.print(" ELEJIR");
lcd2.setCursor(0, 1);
lcd2.print(" CAJETA");
numero = 0;
95
while (1)
printNumber( numero );
if (digitalRead(MAS) == LOW)
numero++;
if (numero == 16)
numero = 0;
delay(250);
if (digitalRead(MENOS) == LOW)
numero--;
if (numero == -1)
numero = 0;
delay(250);
if (digitalRead(BOTON) == LOW)
x = numero - 1;
break;
96
void Ingresar_Cantidad()
lcd2.clear();
lcd2.setCursor(0, 0);
lcd2.print("TARJETAS");
lcd2.setCursor(0, 1);
lcd2.print("A HACER:");
numero = 0;
while (1)
printNumber( numero );
if (digitalRead(MAS) == LOW)
numero++;
if (numero == 16)
numero = 0;
delay(250);
if (digitalRead(MENOS) == LOW)
numero--;
if (numero == -1)
numero = 0;
delay(250);
97
if (digitalRead(BOTON) == LOW)
break;
int col = 9;
switch (digits)
case 0:
custom0(x);
break;
case 1:
custom1(x);
break;
case 2:
custom2(x);
break;
98
case 3:
custom3(x);
break;
case 4:
custom4(x);
break;
case 5:
custom5(x);
break;
case 6:
custom6(x);
break;
case 7:
custom7(x);
break;
case 8:
custom8(x);
break;
case 9:
custom9(x);
break;
99
void custom0(int x)
lcd2.setCursor(x, 0);
lcd2.write(0);
lcd2.write(1);
lcd2.write(2);
lcd2.setCursor(x, 1);
lcd2.write(3);
lcd2.write(4);
lcd2.write(5);
void custom1(int x)
lcd2.setCursor(x, 0);
lcd2.write(1);
lcd2.write(2);
lcd2.print(" ");
lcd2.setCursor(x, 1);
lcd2.write(4);
lcd2.write(7);
lcd2.write(4);
100
void custom2(int x)
lcd2.setCursor(x, 0);
lcd2.write(6);
lcd2.write(6);
lcd2.write(2);
lcd2.setCursor(x, 1);
lcd2.write(3);
lcd2.write(4);
lcd2.write(4);
void custom3(int x)
lcd2.setCursor(x, 0);
lcd2.write(6);
lcd2.write(6);
lcd2.write(2);
lcd2.setCursor(x, 1);
lcd2.write(4);
lcd2.write(4);
lcd2.write(5);
101
void custom4(int x)
lcd2.setCursor(x, 0);
lcd2.write(3);
lcd2.write(4);
lcd2.write(7);
lcd2.setCursor(x, 1);
lcd2.print(" ");
lcd2.print(" ");
lcd2.write(7);
void custom5(int x)
lcd2.setCursor(x, 0);
lcd2.write(3);
lcd2.write(6);
lcd2.write(6);
lcd2.setCursor(x, 1);
lcd2.write(4);
lcd2.write(4);
lcd2.write(5);
102
void custom6(int x)
lcd2.setCursor(x, 0);
lcd2.write(0);
lcd2.write(6);
lcd2.write(6);
lcd2.setCursor(x, 1);
lcd2.write(3);
lcd2.write(4);
lcd2.write(5);
void custom7(int x)
lcd2.setCursor(x, 0);
lcd2.write(1);
lcd2.write(1);
lcd2.write(2);
lcd2.setCursor(x, 1);
lcd2.print(" ");
lcd2.print(" ");
lcd2.write(7);
103
void custom8(int x)
lcd2.setCursor(x, 0);
lcd2.write(0);
lcd2.write(6);
lcd2.write(2);
lcd2.setCursor(x, 1);
lcd2.write(3);
lcd2.write(4);
lcd2.write(5);
void custom9(int x)
lcd2.setCursor(x, 0);
lcd2.write(0);
lcd2.write(6);
lcd2.write(2);
lcd2.setCursor(x, 1);
lcd2.print(" ");
lcd2.print(" ");
lcd2.write(7);
104
void BOTON_ESTADO()
while (1)
if (digitalRead(BOTON) == LOW)
delay(200);
break;
void control_Manual()
lcd2.clear();
if (x == n)
lcd2.setCursor(0, 0);
lcd2.print("LLENAR CAJETA");
lcd2.setCursor(0, 1);
lcd2.print("NUMERO: ");
lcd2.print(cajeta);
delay(500);
105
while (digitalRead(BOTON) != LOW);
delay(500);
abrir_cajeta();
Llenado();
cerrar_cajeta();
dato = 99;
EEPROM.write(n, dato);
lcd_stock();
delay(500);
lcd2.clear();
lcd2.clear();
void control_Automatico()
lcd2.setCursor(0, 0);
lcd2.print("LLENAR CAJETA");
106
lcd2.setCursor(0, 1);
lcd2.print("NUMERO: ");
lcd2.print(cajeta);
delay(500);
abrir_cajeta();
Llenado();
cerrar_cajeta();
dato = 99;
EEPROM.write(n, dato);
lcd_stock();
delay(500);
lcd2.clear();
lcd2.clear();
107
void Llenado()
lcd2.clear();
lcd2.setCursor(0, 0);
lcd2.print("INGRESE");
lcd2.setCursor(0, 1);
lcd2.print("CANTIDAD");
numero = 0;
int unidad = 0;
while (1)
printNumber( numero );
if (digitalRead(MAS) == LOW)
if (numero == 100)
numero = 0;
delay(250);
if (digitalRead(MENOS) == LOW)
numero++;
unidad++;
108
if (unidad == 10)
unidad = 0;
delay(250);
if (digitalRead(BOTON) == LOW)
break;
void abrir_cajeta()
Serial.println(caracterM[n]);
109
if (n == 12)
TARJETA1.write(180);
if (n == 13)
TARJETA2.write(180);
if (n == 14)
TARJETA3.write(180);
delay(500);
void cerrar_cajeta()
Serial.println(caracterm[n]);
if (n == 12)
TARJETA1.write(0);
if (n == 13)
TARJETA2.write(0);
if (n == 14)
TARJETA3.write(0);
110
PROGRAMA ESCLAVO
void setup() {
Wire.begin(1);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
motor2.write(0);
motor3.write(0);
motor4.write(0);
motor5.write(0);
motor6.write(0);
motor7.write(0);
motor8.write(0);
motor9.write(0);
112
motor10.write(0);
motor11.write(0);
motor12.write(0);
void loop() {
Serial.println("servo1");
motor1.write(180);
c=0;
motor1.write(0);
c=0;
Serial.println("servo2");
motor2.write(180);
c=0;
motor2.write(0);
113
c=0;
if (c == 'C')
Serial.println("servo3");
motor3.write(180);
c=0;
if(c == 'c')
motor3.write(0);
c=0;
if (c == 'D')
Serial.println("servo4");
motor4.write(180);
c=0;
if(c == 'd')
motor4.write(0);
c=0;
114
if (c == 'E') {
Serial.println("servo5");
motor5.write(180);
c=0;
if(c == 'e')
motor5.write(0);
c=0;
if (c == 'F')
Serial.println("servo6");
motor6.write(180);
c=0;
if(c == 'f') {
motor6.write(0);
c=0;
if (c == 'G')
Serial.println("servo7");
motor7.write(180);
c=0; }
115
if(c == 'g') {
motor7.write(0);
c=0;
if (c == 'H')
Serial.println("servo8");
motor8.write(180);
c=0;
if(c == 'h') {
motor8.write(0);
c=0;
if (c == 'I')
Serial.println("servo9");
motor9.write(180);
c=0;
if(c == 'i')
motor9.write(0);
c=0;
116
if (c == 'J')
Serial.println("servo10");
motor10.write(180);
c=0;
if(c == 'j')
motor10.write(0);
c=0;
if (c == 'K')
Serial.println("servo11");
motor11.write(180);
c=0;
if(c == 'k')
motor11.write(0);
c=0;
117
if (c == 'L')
Serial.println("servo12");
motor12.write(180);
c=0; }
if(c == 'l')
motor12.write(0);
c=0;
delay(300);
118
Programa de Escritura del tag
void setup()
key.keyByte[i] = 0xFF; }
dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE);
119
void loop() {
if ( ! mfrc522.PICC_IsNewCardPresent())
return;
if ( ! mfrc522.PICC_ReadCardSerial())
return;
Serial.print(F("Card UID:"));
dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
Serial.println();
Serial.println(mfrc522.PICC_GetTypeName(piccType));
// Comprobar la compatibilidad
if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
return; }
byte sector = 1;
byte blockAddr = 4;
120
0x06, 0x01, 0x08, 0x01,
};
};
byte dataBlock3[] = {0x01, 0x03, 0x03, 0x02, // DATOS PARA FUENTE REGULABLE
};
MFRC522::StatusCode status;
byte buffer[18];
status = (MFRC522::StatusCode)
mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
trailerBlock, &key, &(mfrc522.uid));
121
if (status != MFRC522::STATUS_OK) {
Serial.println(mfrc522.GetStatusCodeName(status));
return;
mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key,
sector);
Serial.println();
Serial.println(F(" ..."));
if (status != MFRC522::STATUS_OK) {
Serial.println(mfrc522.GetStatusCodeName(status)); }
Serial.println();
status = (MFRC522::StatusCode)
mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_B,
trailerBlock, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
122
Serial.print(F("PCD_Authenticacion () falló: "));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
Serial.println(F(" ..."));
if (status != MFRC522::STATUS_OK)
Serial.println(mfrc522.GetStatusCodeName(status));
Serial.println();
//Lea los datos del bloque (de nuevo, ahora debería ser lo que hemos escrito)
Serial.println(F(" ..."));
if (status != MFRC522::STATUS_OK)
Serial.println(mfrc522.GetStatusCodeName(status));
123
Serial.print(F("Dato en el block ")); Serial.print(blockAddr); Serial.println(F(":"));
Serial.println(F("Verificando resultado..."));
byte count = 0;
if (buffer[i] == dataBlock[i])
count++;
if (count == 16)
Serial.println(F("exitoso :-)"));
} else {
Serial.println();
124
// Volcar los datos del sector.
Serial.println(F("Datos en el sector:"));
mfrc522.PICC_DumpMifareClassicSectorToSerial(&(mfrc522.uid), &key,
sector);
Serial.println();
// Detener el PICC
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
Serial.print(buffer[i], HEX);
125
ANEXO 2
126
ANEXO 3
127
128
129
ANEXO 4
130
Código de fabricante (bloque 0
del sector 0)
131
El cuarto bloque de cualquier sector es el Trailer del Sector. El Sector Trailer
contiene la Clave de acceso A (KEYSECXA) una Clave B opcional (KEYSECXB) y
las condiciones de acceso para los cuatro bloques de dicho sector. Si no se
necesita la clave B, los últimos 6 bytes del bloque 3 se pueden utilizar como
bytes de datos.
Los ajustes de las condiciones de acceso correspondiente se marcan en gris
a continuación.
C1XY a C3XY que se almacenan dos veces por razones de seguridad definen
la condición de acceso independientemente para los sectores de cuatro
bloques. El último byte de las condiciones de acceso puede ser utilizado para
almacenar algunos datos específicos. datos de la aplicación (por ejemplo, la
ubicación del bloque de escritura de la copia de seguridad).
* Condición de acceso al Sector Trailer (Y = 3)
132
ANEXO 5
133