Ovu stranicu je najbolje pregledavati u modernom internet pregledniku s omogućenim JavaScriptom.
[OEIHV] 1. laboratorijska vježba - 2021/2022
Joseph
Evo ja dijelim program koji sam napravio kako bi napravio labos.
Program napravi sve osim kaže jeli se radi o pražnjenju ili punjenju i koja je metoda.
Program se koristi tako da se napravi .txt file data i u njega se stavi samo ono gomila brojeva iz zadanog fila.
I treba se paziti jeli vam struja pozitivna ili negativna meni je bila negativna i u nekim formulama sam morao promijeniti predznak.
Kod je u pythonu.
import matplotlib.pyplot as pp # plots
import numpy as np # mat operacije
import scipy.integrate as intg # za integrale
data = np.loadtxt(fname="data.txt", delimiter='\t')
time = data[:, 0]
current = data[:, 1]
voltage = data[:, 2]
power = data[:, 3]
temperature = data[:, 4]
for i in range(len(time)):
if current[i] != 0:
start = i
break
i = start
while i < len(time):
if current[i] == 0:
end = i
break
i += 1
print("Trajanje mjerenja: {:0.2f} minuta".format((end - start) / 60))
kapacitet = intg.trapz(-current, time / 3600) # Trapezni integral (ako je struja pozitivna maknut -)
print("Kapacitet: {:0.2f} mAh".format(kapacitet * 1000))
energija = intg.trapz(-current * voltage, time / 3600) # Trapezna integracija (isto ako je struja pozitivna maknut -)
print("Energija: {:0.2f} Wh".format(energija))
maximum = temperature[0]
minimum = temperature[0]
for i in range(len(temperature)):
if temperature[i] > maximum:
maximum = temperature[i]
if temperature[i] < minimum:
minimum = temperature[i]
print("Raspon temperatura: od {:0.2f} do {:0.2f}".format(minimum, maximum))
# Struja
pp.figure(1, dpi=150)
pp.xlabel("Time / s")
pp.ylabel("Current / A")
pp.xlim(start, end)
pp.xticks(range(start, end, 1000))
pp.plot(time, current, 'b')
# Napon
pp.figure(2, dpi=150)
pp.xlabel("Time / s")
pp.ylabel("Volage / V")
pp.xlim(start, end)
pp.xticks(range(start, end, 1000))
pp.plot(time, voltage, 'orange')
# Snaga
pp.figure(3, dpi=150)
pp.xlabel("Time / s")
pp.ylabel("Power / W")
pp.xlim(start, end)
pp.xticks(range(start, end, 1000))
pp.plot(time, power, 'g')
# Temperatura
pp.figure(4, dpi=150)
pp.xlabel("Time / s")
pp.ylabel("Temperature / °C")
pp.xlim(start, end)
pp.plot(time, temperature, 'r')
pp.show()