Está en la página 1de 17

Materia:

Electrónica de potencia.
Ev. Conocimientos: Conmutación y variación de intensidad de tres lámparas vía
Wi-Fi.
Integrantes del equipo:
• Jonathan Alexis González Lizcano.
• Pedro Domínguez Sánchez.
• Tadeo Manuel Orona Castañeda.
• Santiago Yair Pérez Rodríguez.
Docente: José Fernando Hernández Sandoval.

Fecha de entrega:

15/marzo/2024.

1
Índice.
1.- Generalidades. ........................................................................................................................... 3
1.1.- Nombre del proyecto: ......................................................................................................... 3
1.2.- Objetivo general:................................................................................................................. 3
1.3.- Objetivos específicos:.......................................................................................................... 3
2.- Materiales a implementar.......................................................................................................... 3
2.1.- Tabla de materiales. ............................................................................................................ 3
2.2.- PinOUT y especificaciones materiales. ............................................................................... 4
3.- Desarrollo y avance del proyecto............................................................................................... 8
3.1.- Simulación en Proteus......................................................................................................... 8
3.2.- Simulación del circuito inactiva........................................................................................... 8
3.3.- Simulación del circuito activa.............................................................................................. 8
3.4.- Simulación implementando ESP32. .................................................................................... 9
4.- Diseño de la placa PCV. .............................................................................................................. 9
5.- Diseño de la interfaz gráfica..................................................................................................... 10
5.1.- Código en Python. ............................................................................................................. 11
6.- Cálculos del circuito. ................................................................................................................ 16
7.- Referencias bibliográficas. ....................................................................................................... 17

2
1.- Generalidades.
1.1.- Nombre del proyecto:
Smart Light.
1.2.- Objetivo general:
Diseñar un circuito eléctrico en corriente alterna y directa que permita manipular tres
focos mediante una interfaz gráfica conectada a internet.
1.3.- Objetivos específicos:
1. Bosquejar el circuito a integrar en la placa PCV mediante el software Proteus.
2. Simular el circuito mediante el software Proteus para controlar factores.
3. Implementar la interfaz gráfica y el código a utilizar.
4. Acondicionar la PCV para la circuitería.
5. Ensamblar el circuito en la PCV y poner en funcionamiento el proyecto.

2.- Materiales a implementar.


2.1.- Tabla de materiales.
Material Cantidad Imagen
Diodo led color verde 3 pz

Relay 12 v 3 pz

Diodo 1N4007 3 pz

Transistor BC547 3 pz

3
Resistencia 47 k 6 pz

Resistencia 1.8 k 3 pz

Foco corriente alterna 3 pz

ESP32 1 pz

2.2.- PinOUT y especificaciones materiales.


• Transistor BC547.
El transistor BC547 es un transistor bipolar de unión (BJT) de propósito general, que
se utiliza comúnmente en aplicaciones de amplificación y conmutación. Aquí están
las especificaciones típicas del BC547:
Tipo: NPN
Encapsulado: TO-92 (plástico)
Tensión colector-base máxima (V_CBO): 50V
Tensión colector-emisor máxima (V_CEO): 45V
Tensión emisor-base máxima (V_EBO): 6V
Corriente de colector continua máxima (I_C): 100mA
Disipación de potencia máxima total (P_tot): 500mW

4
Ganancia de corriente (hFE): Generalmente en el rango de 110 a 800, dependiendo
de las condiciones de operación y la corriente de colector.

• Relay 12v.
Las especificaciones de un relé de 12V pueden variar según el modelo y el
fabricante, pero aquí tienes algunas especificaciones típicas que podrías encontrar
en un relé de 12V:
Tensión nominal de la bobina: 12V DC (puede variar ligeramente dependiendo del
fabricante).
Corriente nominal de la bobina: Esta corriente determina cuánta corriente se
necesita para activar la bobina del relé y cerrar los contactos. Podría estar en el
rango de 10 a 100 mA, dependiendo del tipo y modelo del relé.
Corriente máxima de conmutación: Esta es la corriente máxima que el relé puede
manejar a través de sus contactos. Podría ser en el rango de algunos mA a varios
amperios, dependiendo del diseño del relé.
Tensión máxima de conmutación: Esta es la tensión máxima que el relé puede
manejar a través de sus contactos. Para un relé de 12V, esperarías que tenga una
capacidad nominal de conmutación de al menos 12V DC, aunque puede variar.
Vida útil mecánica y eléctrica: Esto indica cuántas operaciones mecánicas y
eléctricas puede realizar el relé antes de que su rendimiento comience a degradarse.
Podría estar en el rango de miles a millones de operaciones, dependiendo del tipo
y calidad del relé.

5
• ESP32.
La ESP32 es un microcontrolador de bajo consumo de energía y alto rendimiento
desarrollado por Espressif Systems. Aquí están algunas especificaciones típicas de
la ESP32:
Arquitectura de CPU: Dual-core Xtensa LX6 a 32 bits, con hasta 240 MHz de
frecuencia de reloj.
Memoria:
SRAM incorporada: 520 KB.
Memoria Flash incorporada: Hasta 4 MB.
Conectividad:
Wi-Fi: 802.11 b/g/n (2.4 GHz), WPA/WPA2, WEP, y Modo AP.
Bluetooth: Bluetooth v4.2 BR/EDR y BLE.
Periféricos: I2C, SPI, UART, I2S, PWM, GPIO, etc.
Interfaces:
Interfaz USB 2.0.
Interfaz Ethernet.
Seguridad:
Soporte para cifrado AES, RSA, ECC, SHA-2, etc.

6
Acelerador de cifrado hardware.
Consumo de energía:
Modo de bajo consumo de energía para aplicaciones de IoT.
Consumo de corriente en modo de espera: Alrededor de 5 µA.
Temperatura de funcionamiento: -40°C a +125°C.
Dimensiones físicas: Varían según el modelo de la placa o el módulo.
Compatibilidad con GPIO: Varias entradas/salidas programables.
Compatibilidad de desarrollo: Soporte para entornos de desarrollo como Arduino
IDE, PlatformIO, ESP-IDF (Entorno de desarrollo integrado de Espressif), etc.

7
3.- Desarrollo y avance del proyecto.
3.1.- Simulación en Proteus.
Esta primera simulación no se implementa la ESP32, esto es únicamente para
ejemplificar el funcionamiento de los focos utilizando switch comunes simulando los
pulsadores de la interfaz gráfica.
3.2.- Simulación del circuito inactiva.

3.3.- Simulación del circuito activa.

8
3.4.- Simulación implementando ESP32.
En este apartado se presenta la simulación implementando la ESP32, no tenemos
la simulación activa ya que las librerías del Proteus causan conflicto con la
simulación de la ESP32.

4.- Diseño de la placa PCV.


En este apartado se implementa el avance del diseño de la PCV, estamos teniendo
algunas dificultades al simular ya que las librerías causan conflicto y no cargan todos
los componentes.

9
5.- Diseño de la interfaz gráfica.
La interfaz gráfica en apariencia es algo sencilla e intuitiva ya que únicamente
presenta el nombre del proyecto y los botones de encendido y apagado, así mismo
presenta un mensaje si la interfaz tiene conexión o no.

10
5.1.- Código en Python.
El código en su mayoría ya está terminado únicamente falta enlazar el circuito físico
con las conexiones de la ESP32.
# -*- coding: utf-8 -*-

#########################################################################
#######
## Form generated from reading UI file 'loginstuFVx.ui'
##
## Created by: Qt User Interface Compiler version 5.15.2
##
## WARNING! All changes made in this file will be lost when recompiling
UI file!
#########################################################################
#######

from PySide2.QtCore import *


from PySide2.QtGui import *
from PySide2.QtWidgets import *

class Ui_login(object):
def setupUi(self, login):
if not login.objectName():
login.setObjectName(u"login")
login.resize(730, 761)
self.centralwidget = QWidget(login)
self.centralwidget.setObjectName(u"centralwidget")
self.verticalLayout = QVBoxLayout(self.centralwidget)
self.verticalLayout.setSpacing(0)
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.frame = QFrame(self.centralwidget)
self.frame.setObjectName(u"frame")
self.frame.setStyleSheet(u"background-color:
qconicalgradient(cx:0.08, cy:0.535948, angle:89.9, stop:0 rgba(4, 19, 80,
255), stop:0.338 rgba(4, 19, 80, 255), stop:0.339 rgba(146, 19, 34, 255),
stop:0.499776 rgba(146, 19, 34, 255), stop:0.500075 rgba(255, 255, 255,
255), stop:0.995025 rgba(255, 255, 255, 255));\n"
"\n"
"border-radius: 20px;\n"
"border: 2px solid #fffffff;")
self.frame.setFrameShape(QFrame.StyledPanel)
self.frame.setFrameShadow(QFrame.Raised)
self.logo_UPQ = QLabel(self.frame)
self.logo_UPQ.setObjectName(u"logo_UPQ")
self.logo_UPQ.setGeometry(QRect(270, 20, 311, 231))
self.logo_UPQ.setStyleSheet(u"background-color:
rgba(0,0,0,0%);\n"
"\n"
"border: 20px #ffff;")
self.logo_UPQ.setPixmap(QPixmap(u"../../../../../Downloads/logo
(1).png"))

11
self.logo_UPQ.setScaledContents(True)
self.textBrowser = QTextBrowser(self.frame)
self.textBrowser.setObjectName(u"textBrowser")
self.textBrowser.setGeometry(QRect(60, 270, 671, 131))
self.textBrowser.setStyleSheet(u"background-color:
rgb(0,0,0,0%);\n"
"font: 75 18pt \"Arial\";\n"
"\n"
"border: None")
self.textBrowser_8 = QTextBrowser(self.frame)
self.textBrowser_8.setObjectName(u"textBrowser_8")
self.textBrowser_8.setGeometry(QRect(60, 410, 250, 81))
self.textBrowser_8.setStyleSheet(u"background-color: rgba(0,
0,0,0%);\n"
"border: none")
self.textBrowser_9 = QTextBrowser(self.frame)
self.textBrowser_9.setObjectName(u"textBrowser_9")
self.textBrowser_9.setGeometry(QRect(60, 500, 250, 81))
self.textBrowser_9.setStyleSheet(u"background-color: rgba(0,
0,0,0%);\n"
"border: none")
self.textBrowser_10 = QTextBrowser(self.frame)
self.textBrowser_10.setObjectName(u"textBrowser_10")
self.textBrowser_10.setGeometry(QRect(60, 590, 250, 81))
self.textBrowser_10.setStyleSheet(u"background-color: rgba(0,
0,0,0%);\n"
"border: none")
self.label_usuario_invalido = QLabel(self.frame)

self.label_usuario_invalido.setObjectName(u"label_usuario_invalido")
self.label_usuario_invalido.setGeometry(QRect(470, 660, 241, 41))
self.label_usuario_invalido.setStyleSheet(u"background-color:
rgb(0,0,0,0%);\n"
"color: rgb(255, 0, 0);\n"
"font: 75 8pt \"Arial\";\n"
"\n"
"border: None")
self.label_usuario_invalido.setAlignment(Qt.AlignCenter)
self.label_usuario_invalido_2 = QLabel(self.frame)

self.label_usuario_invalido_2.setObjectName(u"label_usuario_invalido_2")
self.label_usuario_invalido_2.setGeometry(QRect(470, 700, 241,
41))
self.label_usuario_invalido_2.setStyleSheet(u"background-color:
rgb(0,0,0,0%);\n"
"color: rgb(255, 0, 0);\n"
"font: 75 8pt \"Arial\";\n"
"\n"
"border: None")
self.label_usuario_invalido_2.setAlignment(Qt.AlignCenter)
self.PB_ingresar = QPushButton(self.frame)
self.PB_ingresar.setObjectName(u"PB_ingresar")
self.PB_ingresar.setGeometry(QRect(320, 410, 71, 41))
self.PB_ingresar.setStyleSheet(u"QPushButton {\n"
" background-color: rgb(146, 19, 34);\n"

12
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(4, 19, 80);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff; \n"
"}\n"
"")
self.PB_ingresar_2 = QPushButton(self.frame)
self.PB_ingresar_2.setObjectName(u"PB_ingresar_2")
self.PB_ingresar_2.setGeometry(QRect(320, 500, 71, 41))
self.PB_ingresar_2.setStyleSheet(u"QPushButton {\n"
" background-color: rgb(146, 19, 34);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(4, 19, 80);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff; \n"
"}\n"
"")
self.PB_ingresar_3 = QPushButton(self.frame)
self.PB_ingresar_3.setObjectName(u"PB_ingresar_3")
self.PB_ingresar_3.setGeometry(QRect(320, 590, 71, 41))
self.PB_ingresar_3.setStyleSheet(u"QPushButton {\n"
" background-color: rgb(146, 19, 34);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(4, 19, 80);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff; \n"
"}\n"
"")
self.PB_ingresar_4 = QPushButton(self.frame)
self.PB_ingresar_4.setObjectName(u"PB_ingresar_4")
self.PB_ingresar_4.setGeometry(QRect(450, 500, 71, 41))

13
self.PB_ingresar_4.setStyleSheet(u"QPushButton {\n"
" background-color: rgb(146, 19, 34);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(4, 19, 80);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff; \n"
"}\n"
"")
self.PB_ingresar_5 = QPushButton(self.frame)
self.PB_ingresar_5.setObjectName(u"PB_ingresar_5")
self.PB_ingresar_5.setGeometry(QRect(450, 410, 71, 41))
self.PB_ingresar_5.setStyleSheet(u"QPushButton {\n"
" background-color: rgb(146, 19, 34);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(4, 19, 80);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff; \n"
"}\n"
"")
self.PB_ingresar_6 = QPushButton(self.frame)
self.PB_ingresar_6.setObjectName(u"PB_ingresar_6")
self.PB_ingresar_6.setGeometry(QRect(450, 590, 71, 41))
self.PB_ingresar_6.setStyleSheet(u"QPushButton {\n"
" background-color: rgb(146, 19, 34);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: rgb(4, 19, 80);\n"
" font: 75 10pt \"Arial\";\n"
" color: #ffffff; \n"
" border-radius: 20px;\n"
" border: 4px solid #ffffff; \n"
"}\n"
"")

14
self.verticalLayout.addWidget(self.frame)

login.setCentralWidget(self.centralwidget)

self.retranslateUi(login)

QMetaObject.connectSlotsByName(login)
# setupUi

def retranslateUi(self, login):


login.setWindowTitle(QCoreApplication.translate("login",
u"MainWindow", None))
self.logo_UPQ.setText("")
self.textBrowser.setHtml(QCoreApplication.translate("login",
u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"
\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style
type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'Arial'; font-size:18pt; font-
weight:72; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-
left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span
style=\" font-size:14pt; font-weight:600;\"> Universidad Polit\u00e9cnica
de Quer\u00e9taro</span><span style=\" font-size:16pt; font-
weight:400;\"> </span></p>\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-
left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span
style=\" font-size:22pt; font-weight:600;\">Smart Light</span></p>\n"
"<p align=\"center\" style=\"-qt-paragraph-type:empty; margin-top:0px;
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0;
text-indent:0px; font-siz"
"e:22pt;\"><br /></p></body></html>", None))
self.textBrowser_8.setHtml(QCoreApplication.translate("login",
u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"
\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style
type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-
size:7.8pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-
left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span
style=\" font-size:16pt; font-weight:600;\">Sala</span></p>\n"
"<p align=\"center\" style=\"-qt-paragraph-type:empty; margin-top:0px;
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0;
text-indent:0px; font-size:16pt;\"><br /></p></body></html>", None))
self.textBrowser_9.setHtml(QCoreApplication.translate("login",
u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"
\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style
type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-
size:7.8pt; font-weight:400; font-style:normal;\">\n"

15
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-
left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span
style=\" font-size:16pt; font-
weight:600;\">Cocina</span></p></body></html>", None))
self.textBrowser_10.setHtml(QCoreApplication.translate("login",
u"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\"
\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style
type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:'MS Shell Dlg 2'; font-
size:7.8pt; font-weight:400; font-style:normal;\">\n"
"<p align=\"center\" style=\" margin-top:0px; margin-bottom:0px; margin-
left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span
style=\" font-size:16pt; font-
weight:600;\">Recamara</span></p></body></html>", None))
self.label_usuario_invalido.setText("")
self.label_usuario_invalido_2.setText("")
self.PB_ingresar.setText(QCoreApplication.translate("login",
u"On", None))
self.PB_ingresar_2.setText(QCoreApplication.translate("login",
u"On", None))
self.PB_ingresar_3.setText(QCoreApplication.translate("login",
u"On", None))
self.PB_ingresar_4.setText(QCoreApplication.translate("login",
u"OFF", None))
self.PB_ingresar_5.setText(QCoreApplication.translate("login",
u"OFF", None))
self.PB_ingresar_6.setText(QCoreApplication.translate("login",
u"OFF", None))
# retranslateUi

6.- Cálculos del circuito.


Los cálculos correspondientes al circuito son muy sencillos ya que el circuito es el
mismo repetido tres veces con el poder calcular uno se tiene el de todo el circuito.

BC547 B = hfc = 75 hfe = 75 Vcc = 12V Vbe


= −0.7 V Rc = 394.2 Ω Ic
= 12 V 394.2Ω = 30.44 mA Ib
= 0.03044 A 75 = 405.87 μA Rb
= 12 V − 0.7V 0.00040587
= 27,841.4 Ω = 27.8414 kΩ

16
7.- Referencias bibliográficas.
Rubio Peña, L. (2012). Transistor BJT. Laboratorio.

https://rodin.uca.es/bitstream/handle/10498/14760/practica%204%20bjt%20prot.pdf?se
quence=1
Heidel, J. D., Yu, Z., Liu, J. Y. C., Rele, S. M., Liang, Y., Zeidan, R. K., ... & Davis, M. E. (2007).
Administration in non-human primates of escalating intravenous doses of targeted nanoparticles
containing ribonucleotide reductase subunit M2 siRNA. Proceedings of the National Academy of
Sciences, 104(14), 5715-5721.

https://www.pnas.org/doi/abs/10.1073/pnas.0701458104
Babiuch, M., Foltýnek, P., & Smutný, P. (2019, May). Using the ESP32 microcontroller for data
processing. In 2019 20th International Carpathian Control Conference (ICCC) (pp. 1-6). IEEE.

https://ieeexplore.ieee.org/abstract/document/8765944/

17

También podría gustarte