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

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

parent 5d1d0418
...@@ -8,10 +8,11 @@ import sys ...@@ -8,10 +8,11 @@ import sys
from PyQt5 import QtWidgets, QtCore from PyQt5 import QtWidgets, QtCore
from PyQt5.QtCore import QTimer from PyQt5.QtCore import QTimer
from util.Graph import Graph from util.Graph import Graph
from util.Mock import Mock
from util.Stopwatch import Stopwatch from util.Stopwatch import Stopwatch
from ui.MainWindow import Ui_MainWindow from ui.MainWindow import Ui_MainWindow
UPDATE_INTERVAL = 100 # milisegundos UPDATE_INTERVAL = 250 # milisegundos
class App(object): class App(object):
def __init__(self): def __init__(self):
...@@ -26,6 +27,10 @@ class App(object): ...@@ -26,6 +27,10 @@ class App(object):
self.timer = QTimer(self.app) self.timer = QTimer(self.app)
self.stopwatch = Stopwatch() 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 # Seta as variáveis de estado da aplicação
self.running = False self.running = False
...@@ -53,16 +58,26 @@ class App(object): ...@@ -53,16 +58,26 @@ class App(object):
self.timer.stop() self.timer.stop()
self.running = False self.running = False
self.ui.controlBtn.setText("COMEÇAR") self.ui.controlBtn.setText("COMEÇAR")
self.ui.controlBtn.setStyleSheet("background-color: green")
self.stopwatch.stop() self.stopwatch.stop()
else: else:
self.timer.start(UPDATE_INTERVAL) self.timer.start(UPDATE_INTERVAL)
self.running = True self.running = True
self.ui.controlBtn.setText("PARAR") self.ui.controlBtn.setText("PARAR")
self.ui.controlBtn.setStyleSheet("background-color: red")
self.stopwatch.start() self.stopwatch.start()
# É chamada a cada UPDATE_INTERVAL milisegundos e é responsável por atualizar as informações da tela # É chamada a cada UPDATE_INTERVAL milisegundos e é responsável por atualizar as informações da tela
def updateData(self): 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__': 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