INTRODUCCIÓN
Este es la 2da versión del proyecto de ascensores que venimos desarrollando. Como toda versión superior trae mejoras, y esta vez hemos agregado displays de 7 segmentos en cada piso para visualizar donde se encuentra exactamente la cabina. Te gustaría aprender a como desarrollar el esquemático electrónico, el diseño pcb y el armado de la maqueta? a continuación el paso a paso de como realizar el proyecto.
DATOS TÉCNICOS

- Tensión de alimentación……………………….…………12 Ó 24VDC
- Corriente de alimentación………………….……………120mA
- Entadas digitales 12-24VDC……………………….……10
- Salidas para display de 7 seg ……………………………… Sí
- Salidas RLY…………………………………………………………4
-
- Tensión AC…………..……….………………….….……250V
- Corriente AC…………………………………………….5A
- Tensión DC………………………………………………30V
- Corriente DC……………………………………………5A
-
- Entorno de programación………………………..………..Arduino IDE
- Condiciones ambientales min……………………….….-40°
- Condiciones ambientales max…………………..……….150°
- Dimensiones……………………………………………………….80x90mm
- Empotrable………………………………….……………………Sí
- Programación directa (PC-Tarjeta electrónica)…………Sí
LISTA DE MATERIALES

Categoría | Cantidad | Referencias | Valor | PCB Package | Código almacén |
Condensadores | 24 | C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12, C13,C14,C15,C16,C19,C22,C23,C24,C25, C26,C31,C32 |
100nF | 0603_CAP | |
Condensadores | 1 | C17 | 100uF | CAP SMD 6.3X7.7MM ALUMINUM 220UF/16V | |
Condensadores | 1 | C18 | 1000uF | CAP SMD 10.5X10MM ALUMINUM 470UF/35V | |
Condensadores | 1 | C20 | 220uF | CAP SMD 6.3X7.7MM ALUMINUM 220UF/16V | |
Condensadores | 1 | C21 | 100nF | 1206_CAP | |
Condensadores | 4 | C27,C28,C29,C30 | 10uF | 1206_CAP | |
Resistencias | 25 | R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13, R14,R15,R16,R28,R46,R51,R55,R57,R59,R60,R65,R66 |
10k | 0603_RES | |
Resistencias | 10 | R17,R18,R19,R20,R21,R22,R23,R24,R42,R43 | 10k | 1206_RES | |
Resistencias | 17 | R25,R26,R27,R29,R30,R31,R32,R34,R35,R36, R37,R45,R50,R54,R56,R67,R68 |
1k | 0603_RES | |
Resistencias | 1 | R33 | 1M | 0603_RES | |
Resistencias | 4 | R38,R39,R40,R41 | 4.7k | 0603_RES | |
Resistencias | 4 | R61,R62,R63,R64 | 220 | 0603_RES | |
Integrados | 2 | U1,U14 | 74HC14 | TSSOP14 | |
Integrados | 1 | U2 | 74HC541 | TSSOP20 | |
Integrados | 7 | U3,U4,U5,U6,U11,U12,U13 | ILD207T | SO8 | |
Integrados | 1 | U8 | LM2576 5.0 | TO170P1410X464-6 | |
Integrados | 1 | U9 | ATMEGA328P | QFP80P900X900X120-32 | |
Integrados | 1 | U10 | CH340C | SO16 | |
Transistores | 4 | Q1,Q2,Q3,Q4 | PMBT3904,215 | SOT23-3 | |
Diodos | 10 | D1,D3,D4,D8,D9,D10,D11,D12,D22,D23 | LED-GREEN | LEDC1608X60 | |
Diodos | 4 | D2,D5,D6,D17 | B330A-13-F | DIOM5226X230N | |
Diodos | 5 | D7,D13,D14,D15,D16 | LED-RED | LEDC2012X120 | |
Diodos | 4 | D18,D19,D20,D21 | 1N4148W | SOD123 | |
Miscelánea | 1 | BTN1 | RST | BUTTON SMD 2P | |
Miscelánea | 1 | F1 | 1A | FUSE SMD | |
Miscelánea | 7 | J1,J2,J3,J4,J8,J9,J10 | TBLOCK-M2 | TERMINAL BLOCK 2P | |
Miscelánea | 2 | J5,J6 | TBLOCK-M3 | TERMINAL BLOCK 3P | |
Miscelánea | 1 | J7 | MOLEX B5B-XH-A(LF)(SN) | MOLEX B5B-XH-A(LF)(SN) | |
Miscelánea | 1 | J11 | MICRO USB B | MICRO USB B | |
Miscelánea | 1 | L1 | 100u | INDUCTOR 100UH | |
Miscelánea | 4 | RL1,RL2,RL3,RL4 | HF49FD/012-1H12G | RELAY24VPLC V1 | |
Miscelánea | 1 | X1 | CRYSTAL SMD S | OSCILADOR SMD CERAMIC RESONATORS |
PASOS PARA SUBIR UN PROGRAMA

PASO 1 : SUBIR GESTOR DE ARRANQUE (BOOTLOADER)
Para poder usar un microcontrolador nuevo (atmega328p-U), es necesario subir un gestor de arranque como también llamado “BOOTLOADER”, esto nos facilitará subir programas en futuras ocasiones.
finalmente para quemar el bootloader se tendrá que realizar a través de los pines ISP, que prácticamente serían los pines [ (MOSI=11) (MISO = PIN12) (SCK=PIN13) (Slave=PIN10) ]. Para subir y quemar el gestor de arranque necesitaremos un arduino UNO ó MEGA y realizar las siguientes conexiones (ARDUINO UNO – PLC V4.1).
VIDEO DE COMO SUBIR BOOTLOADER
PASO 2 : SUBIR PROGRAMA; PC – PLC V4.1
Después de haber subido el gestor de arranque finalmente ya podremos subir cualquier programa como normalmente lo realizamos a través del puerto serie
CODIGO ARDUINO

int clockpin = 13; //Cuando ay que leer los bit SH int data = 11; //Envio datos DS int latch = 12; //indica pin de salida en el chip ST int contadorU; const int NUM[] = { // display 202, //NUM 0 en binario es : 11000000 249, //NUM 1 en binario es : 11111001 164, //NUM 2 en binario es : 10100100 176, //NUM 3 en binario es : 10110000 153, //NUM 4 en binario es : 10011001 146, //NUM 5 en binario es : 10010010 130, //NUM 6 en binario es : 10000010 248, //NUM 7 en binario es : 11111000 128, //NUM 8 en binario es : 10000000 144, //NUM 9 en binario es : 10010000 202, //NUM 0 en binario es : 11000000 227, //NUM 0 en binario es : 11100011 puerta bajando, para posicion inicial }; //physical inputs const int s1a = 3; const int s2a = 4; const int s3a = 13; const int s4a = 12; const int b1a = 11; const int b2a = 10; const int b3a = 9; const int b4a = 8; const int pe = 5; const int fc = 2; // physical outputs const int m_up = 19; //motor up const int m_down = 18; // motor down const int booking = 17; // reserva const int booking1 = 16; // reserva // Memories //ETAPA boolean e0 = false; boolean e1 = false; boolean e2 = false; boolean e3 = false; boolean e4 = false; boolean e5 = false; boolean e6 = false; boolean e7 = false; boolean e8 = false; boolean e9 = false; boolean e10 = false; boolean e11 = false; boolean e12 = false; //TRANSITION boolean t01 = false; boolean t02 = false; boolean t03 = false; boolean t04 = false; boolean t05 = false; boolean t06 = false; boolean t07 = false; boolean t08 = false; boolean t09 = false; boolean t010 = false; boolean t011 = false; boolean t012 = false; boolean t10 = false; boolean t20 = false; boolean t30 = false; boolean t40 = false; boolean t50 = false; boolean t60 = false; boolean t70 = false; boolean t80 = false; boolean t90 = false; boolean t100 = false; boolean t110 = false; boolean t120 = false; void setup() { pinMode(latch, OUTPUT); pinMode(clockpin, OUTPUT); pinMode(data, OUTPUT); //sensores de piso pinMode(s1a, INPUT); pinMode(s2a, INPUT); pinMode(s3a, INPUT); pinMode(s4a, INPUT); //pusadores de llamada pinMode(b1a, INPUT); pinMode(b2a, INPUT); pinMode(b3a, INPUT); pinMode(b4a, INPUT); pinMode(fc, INPUT); pinMode(pe, INPUT); //salidas motor pinMode(m_up, OUTPUT); pinMode(m_down, OUTPUT); pinMode(booking, OUTPUT); pinMode(booking1, OUTPUT); delay(2000); while (!digitalRead(s1a) && !digitalRead(s2a) && !digitalRead(s3a) && !digitalRead(s4a) == HIGH) { digitalWrite(m_down, 1); digitalWrite(latch, LOW); shiftOut(data, clockpin, MSBFIRST, NUM[11]); // lee el arreglo y pasa cada NUM a lectura binaria digitalWrite(latch, HIGH); } //ouputs low! digitalWrite(m_up, 0); digitalWrite(m_down, 0); digitalWrite(booking, 0); digitalWrite(booking1, 0); } void loop() { //Inputs int s1 = digitalRead(s1a); int s2 = digitalRead(s2a); int s3 = digitalRead(s3a); int s4 = digitalRead(s4a); int b1 = digitalRead(b1a); int b2 = digitalRead(b2a); int b3 = digitalRead(b3a); int b4 = digitalRead(b4a); int pee = digitalRead(pe); int fcc = digitalRead(fc); //INICIALIZACION*************************** if ((!e1 && !e2 && !e3 && !e4 && !e5 && !e6 && !e7 && !e8 && !e9 && !e10 && !e11 && !e12) == true) { e0 = true; } //TRANSITION********************************* //from 1 to 2 floor if (e0 && s1 && b2 == true) { t01 = true; t10 = false; } if (e1 && s2 == true) { t10 = true; t01 = false; } //from 1 to 3 floor if (e0 && s1 && b3 == true) { t02 = true; t20 = false; } if (e2 && s3 == true) { t20 = true; t02 = false; } //from 1 to 4 floor if (e0 && s1 && b4 == true) { t03 = true; t30 = false; } if (e3 && s4 == true) { t30 = true; t03 = false; } //from 2 to 3 floor if (e0 && s2 && b3 == true) { t04 = true; t40 = false; } if (e4 && s3 == true) { t40 = true; t04 = false; } //from 2 to 4 floor if (e0 && s2 && b4 == true) { t05 = true; t50 = false; } if (e5 && s4 == true) { t50 = true; t05 = false; } //from 3 to 4 floor if (e0 && s3 && b4 == true) { t06 = true; t60 = false; } if (e6 && s4 == true) { t60 = true; t06 = false; } //from 4 to 3 floor if (e0 && s4 && b3 == true) { t07 = true; t70 = false; } if (e7 && s3 == true) { t70 = true; t07 = false; } //from 4 to 2 floor if (e0 && s4 && b2 == true) { t08 = true; t80 = false; } if (e8 && s2 == true) { t80 = true; t08 = false; } //from 4 to 1 floor if (e0 && s4 && b1 == true) { t09 = true; t90 = false; } if (e9 && s1 == true) { t90 = true; t09 = false; } //from 3 to 2 floor if (e0 && s3 && b2 == true) { t010 = true; t100 = false; } if (e10 && s2 == true) { t100 = true; t010 = false; } //from 3 to 1 floor if (e0 && s3 && b1 == true) { t011 = true; t110 = false; } if (e11 && s1 == true) { t110 = true; t011 = false; } //from 2 to 1 floor if (e0 && s2 && b1 == true) { t012 = true; t120 = false; } if (e12 && s1 == true) { t120 = true; t012 = false; } //ETAPA************************************** if (e0 && t01 == true) { e0 = false; e1 = true; } if (e1 && t10 == true) { e1 = false; e0 = true; } if (e0 && t02 == true) { e0 = false; e2 = true; } if (e2 && t20 == true) { e2 = false; e0 = true; } if (e0 && t03 == true) { e0 = false; e3 = true; } if (e3 && t30 == true) { e3 = false; e0 = true; } if (e0 && t04 == true) { e0 = false; e4 = true; } if (e4 && t40 == true) { e4 = false; e0 = true; } if (e0 && t05 == true) { e0 = false; e5 = true; } if (e5 && t50 == true) { e5 = false; e0 = true; } if (e0 && t06 == true) { e0 = false; e6 = true; } if (e6 && t60 == true) { e6 = false; e0 = true; } if (e0 && t07 == true) { e0 = false; e7 = true; } if (e7 && t70 == true) { e7 = false; e0 = true; } if (e0 && t08 == true) { e0 = false; e8 = true; } if (e8 && t80 == true) { e8 = false; e0 = true; } if (e0 && t09 == true) { e0 = false; e9 = true; } if (e9 && t90 == true) { e9 = false; e0 = true; } if (e0 && t010 == true) { e0 = false; e10 = true; } if (e10 && t100 == true) { e10 = false; e0 = true; } if (e0 && t011 == true) { e0 = false; e11 = true; } if (e11 && t110 == true) { e11 = false; e0 = true; } if (e0 && t012 == true) { e0 = false; e12 = true; } if (e12 && t120 == true) { e12 = false; e0 = true; } //ACTUADORES********************************* // Motor subiendo if ((e1 || e2 || e3 || e4 || e5 || e6) && (!pee && !fcc) == true ) { digitalWrite(m_up, HIGH); digitalWrite(m_down, LOW); } //Reposo if (e0 || (pee || fcc) == true) { digitalWrite(m_up, LOW); digitalWrite(m_down, LOW); } //motor bajando if ((e7 || e8 || e9 || e10 || e11 || e12) && (!pee && !fcc) == true) { digitalWrite(m_up, LOW); digitalWrite(m_down, HIGH); } if (s1 == 1) { contadorU = 1; cont(); } if (s2 == 1) { contadorU = 2; cont(); } if (s3 == 1) { contadorU = 3; cont(); } if (s4 == 1) { contadorU = 4; cont(); } } void cont() { digitalWrite(latch, LOW); shiftOut(data, clockpin, MSBFIRST, NUM[contadorU]); // lee el arreglo y pasa cada NUM a lectura binaria digitalWrite(latch, HIGH); }
3 comentarios. Dejar nuevo
CHICOS AVISENME POR AQUI, QUE INFORMACIÓN QUIEREN QUE SUBA?
Buenos dias tienen todo el material a venta para este proyecto??
para la proxima version subiremos todos todos los planos posibles