Commit 9f13b65c authored by Pedro Henrique Kopper's avatar Pedro Henrique Kopper

Adicionar base para DAQ, Mock, Estimador e um print do software rodando

parent 5d1d0418
......@@ -8,10 +8,11 @@ import sys
from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import QTimer
from util.Graph import Graph
from util.Mock import Mock
from util.Stopwatch import Stopwatch
from ui.MainWindow import Ui_MainWindow
UPDATE_INTERVAL = 100 # milisegundos
UPDATE_INTERVAL = 250 # milisegundos
class App(object):
def __init__(self):
......@@ -25,6 +26,10 @@ class App(object):
self.dialog = QtWidgets.QDialog(self.mainWindow)
self.timer = QTimer(self.app)
self.stopwatch = Stopwatch()
# Inicializa a aquisiçao de dados como mock durante o desenvolvimento
# Na vida real utilizaremos o SACADA
self.DAQ = Mock("mock")
# Seta as variáveis de estado da aplicação
self.running = False
......@@ -53,16 +58,26 @@ class App(object):
self.timer.stop()
self.running = False
self.ui.controlBtn.setText("COMEÇAR")
self.ui.controlBtn.setStyleSheet("background-color: green")
self.stopwatch.stop()
else:
self.timer.start(UPDATE_INTERVAL)
self.running = True
self.ui.controlBtn.setText("PARAR")
self.ui.controlBtn.setStyleSheet("background-color: red")
self.stopwatch.start()
# É chamada a cada UPDATE_INTERVAL milisegundos e é responsável por atualizar as informações da tela
def updateData(self):
self.ui.infos.setText(self.stopwatch.readFormatted())
time = self.stopwatch.readFormatted()
power = self.DAQ.readPower()
pressure = self.DAQ.readPressure()
displayString = "{:.2f}ºC | {:.2f} bar | {}".format(power, pressure, time)
self.ui.infos.setText(displayString)
self.pressurePlot.addPoint((self.stopwatch.readSeconds(), pressure))
self.temperaturePlot.addPoint((self.stopwatch.readSeconds(), power))
if __name__ == '__main__':
......
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Classe DAQ (Acquisição de dados) #
# Autores: Pedro Henrique Kopper (pedro.kopper@ufrgs.br) -> https://lief.if.ufrgs.br/~phckopper #
# Licença: GNU GPLv3 #
# Propósito: Abstrair um sistema de acquisição de dados #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from sacada import SACADA
class DAQ(object):
def __init__(self, location):
self.sacada = SACADA(location)
def readPressure(self):
return self.sacada.readVoltage("A3") * (400.0/10.0) - 3.0
def readPower(self):
# A3 é conectado na caixa preta (V1, escala de 540.55 Ampère por Volt) tabela no Git
# A4 é conectado na caixa preta (V2, tensão RMS na amostra)
return ((self.sacada.readVoltage("A3") * 540.55) - 20.12) * self.sacada.readVoltage("A4")
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Classe Estimator (Estimador) #
# Autores: Pedro Henrique Kopper (pedro.kopper@ufrgs.br) -> https://lief.if.ufrgs.br/~phckopper #
# Licença: GNU GPLv3 #
# Propósito: Estimar a temperatura a partir da potência #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
class Estimator(object):
\ No newline at end of file
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Classe Mock (Acquisição de dados) #
# Autores: Pedro Henrique Kopper (pedro.kopper@ufrgs.br) -> https://lief.if.ufrgs.br/~phckopper #
# Licença: GNU GPLv3 #
# Propósito: Gerar dados falsos para fim de demonstração #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from random import random
class Mock(object):
def __init__(self, location):
self.pressure = 10
self.power = 40
def readPressure(self):
self.pressure *= 1.01
return self.pressure
def readPower(self):
self.power += random()
return self.power
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment