INTRODUCCIÓN
Las veces que me subía a un ascensor siempre me preguntaba, como funcionara? Que componentes tendrá? Será dificil?. Como electrónicos estamos en la obligación de entender la lógica y realizar un ascensor de 4 pisos desde cero. Y sí efectivamente en este video aprenderemos a como realizar un ascensor desde el esquemático electrónico, la creación de la tarjeta PCB que será programado desde el IDE de arduino, las estructuras y el funcionamiento del mecanismo, finalmente este proyecto se implementará en la vida real.
DATOS TÉCNICOS

- Tensión de alimentación……………………….…………24VDC
- Corriente de alimentación………………….……………20mA
- Entadas digitales 12-24VDC……………………….……12
- 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……………………………………………………….85x65mm
- Empotrable………………………………….……………………Sí
- Programación directa (PC-Tarjeta electrónica)…………Sí
LISTA DE MATERIALES

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

COMO SUBIR GESTOR DE ARRANQUE

PASO 1 : SUBIR GESTOR DE ARRANQUE (BOOTLOADER)
Para poder usar un microcontrolador nuevo (atmega328P-AU), es necesario subir un 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 ICSP, 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 – TARJETA DE CONTROL).
PASO 2 : SUBIR PROGRAMA; PC – TARJETA PCB
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.
CONEXIONES CON DISPOSITIVOS EXTERNOS

CODIGO ARDUINO

CODE PARA 3 PISOS
//physical inputs const int s1a = 3; const int s2a = 4; const int s3a = 13; const int s4a = 9; const int s5a = 8; const int s6a = 7; const int b1a = 12; const int b2a = 11; const int b3a = 10; const int b4a = 6; const int b5a = 5; const int b6a = 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; //TRANSITION boolean t01 = false; boolean t02 = false; boolean t03 = false; boolean t04 = false; boolean t05 = false; boolean t06 = false; boolean t10 = false; boolean t20 = false; boolean t30 = false; boolean t40 = false; boolean t50 = false; boolean t60 = false; void setup() { //sensores de piso pinMode(s1a, INPUT); pinMode(s2a, INPUT); pinMode(s3a, INPUT); pinMode(s4a, INPUT); pinMode(s5a, INPUT); pinMode(s6a, INPUT); //pusadores de llamada pinMode(b1a, INPUT); pinMode(b2a, INPUT); pinMode(b3a, INPUT); pinMode(b4a, INPUT); pinMode(b5a, INPUT); pinMode(b6a, INPUT); //salidas motor pinMode(m_up, OUTPUT); pinMode(m_down, OUTPUT); pinMode(booking, OUTPUT); pinMode(booking1, OUTPUT); //ouputs low! digitalWrite(m_up, 0); digitalWrite(m_down, 0); digitalWrite(booking, 0); digitalWrite(booking1, 0); delay(2000); } void loop() { //Inputs int s1 = digitalRead(s1a); int s2 = digitalRead(s2a); int s3 = digitalRead(s3a); int s4 = digitalRead(s4a); int s5 = digitalRead(s5a); int s6 = digitalRead(s6a); int b1 = digitalRead(b1a); int b2 = digitalRead(b2a); int b3 = digitalRead(b3a); int b4 = digitalRead(b4a); int b5 = digitalRead(b5a); int b6 = digitalRead(b6a); //INICIALIZACION*************************** if ((!e1 && !e2 && !e3 && !e4 && !e5 && !e6) == 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 2 to 3 floor if (e0 && s2 && b3 == true) { t03 = true; t30 = false; } if (e3 && s3 == true) { t30 = true; t03 = false; } //from 3 to 2 floor if (e0 && s3 && b2 == true) { t04 = true; t40 = false; } if (e4 && s2 == true) { t40 = true; t04 = false; } //from 3 to 1 floor if (e0 && s3 && b1 == true) { t05 = true; t50 = false; } if (e5 && s1 == true) { t50 = true; t05 = false; } //from 2 to 1 floor if (e0 && s2 && b1 == true) { t06 = true; t60 = false; } if (e6 && s1 == true) { t60 = true; t06 = 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; } //ACTUADORES********************************* // Motor subiendo if (e1 || e2 || e3 == true) { digitalWrite(m_up, HIGH); digitalWrite(m_down, LOW); } //Reposo if (e0 == true) { digitalWrite(m_up, LOW); digitalWrite(m_down, LOW); } //motor bajando if (e4 || e5 || e6 == true) { digitalWrite(m_up, LOW); digitalWrite(m_down, HIGH); } }
PARA 4 PISOS
//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 fi1 = 7; const int pe1 = 6; const int fs1 = 5; const int rsv = 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() { //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(fi1, INPUT); pinMode(pe1, INPUT); pinMode(fs1, INPUT); pinMode(rsv, INPUT); //salidas motor pinMode(m_up, OUTPUT); pinMode(m_down, OUTPUT); pinMode(booking, OUTPUT); pinMode(booking1, OUTPUT); //ouputs low! digitalWrite(m_up, 0); digitalWrite(m_down, 0); digitalWrite(booking, 0); digitalWrite(booking1, 0); delay(2000); } 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 fi = digitalRead(fi1); int pe = digitalRead(pe1); int fs = digitalRead(fs1); int sv = digitalRead(rsv); //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) && (pe && fi && fs) == true) { digitalWrite(m_up, HIGH); digitalWrite(m_down, LOW); } //Reposo if (e0 || (!pe || !fi || !fs) == true) { digitalWrite(m_up, LOW); digitalWrite(m_down, LOW); } //motor bajando if ((e7 || e8 || e9 || e10 || e11 || e12) && (pe && fi && fs) == true) { digitalWrite(m_up, LOW); digitalWrite(m_down, HIGH); } }