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