Witam wszystkich
Pomiar mocy i energii jest w miarę dobrze znany, jest sporo DIY układów pomiarowych no i samych mierników. Z tym że najczęściej dotyczy to znacznych mocy... powyżej 1W. Budując układy zasilana bateryjnie a jeszcze dodatkowo z zasilaniem typu hasvesty energy można mówić o mocach w mW. No i pojawi asie dynamika kilka sekund kilka wat a potem mili waty. Próbując ten problem rozwiązać, bazując na posiadanym sprzęcie, okazało się to małym problemem. Multimetr UNI-T UT71E owszem posiada przystawkę ale na 230V i chyba kW Posiadam między innymi też RIGOL DM3058E. Dobry multimetr ale w instrukcji ani słowa na temat pomiaru mocy...Ma natomiast możliwość pomiarów dwóch wielkości (2ND). Sam miernik nie potrafi z tym nic zrobić, oprócz wyświetlania, ale... po podłączeniu do komputera otwierają się szerokie możliwości, którymi chciałbym się podzielić.
Multimetr RIGOL DM3058E po podłączeniu po USB obsługiwany może być między innymi przez VISA (https://pl.wikipedia.org/wiki/Virtual_Instrument_Software_Architecture)
Po analizie dokumentacji https://www.batronix.com/pdf/Rigol/ProgrammingGuide/DM3058_ProgrammingGuide_EN.pdf
stworzyłem program, który obsługuje miernik realizując pomiary długoczasowe, np. pojemność akumulatorów, energochłonność układów pomiarowych...
Pierwsze podejście w Labview, - ze względu na raportowanie oraz integracje z innymi elementami.
Drugie podejście w Pythonie - ze względu na stabilność
Oczywiście temat jest trywialny, polega na wysłaniu kilku komend do miernika i odczytaniu odpowiedzi, ale,... nie znalazłem gotowca, więc się tym dzielę
import pyvisa
import time
rm = pyvisa.ResourceManager()
print(rm.list_resources()) # select the appropriate port and enter it below
inst = rm.open_resource('USB0::0x1AB1::0x09C4::DM3R221100226::INSTR') # this is an example port from my resource
print(inst.query("*IDN?"))
#inst.write(":FUNCtion:VOLTage:DC") # ustawienie na 1 VDC
print(inst.query(":FUNCtion?"))
#inst.write(":FUNCtion2:CURRent:DC") # ustawienie na 2 VDC
# the rest of the configuration in https://www.batronix.com/pdf/Rigol/ProgrammingGuide/DM3058_ProgrammingGuide_EN.pdf
try:
while True:
dcvolt=float(inst.query(":FUNCtion2:VALUe1?"))
dccur=float(inst.query(":FUNCtion2:VALUe2?"))
print()
print(" Voltage = ",dcvolt," Current = ",dccur, " power = ",dcvolt*dccur)
time.sleep(1)
except KeyboardInterrupt:
print("Press Ctrl-C to terminate while statement")
pass
Pomiar mocy i energii jest w miarę dobrze znany, jest sporo DIY układów pomiarowych no i samych mierników. Z tym że najczęściej dotyczy to znacznych mocy... powyżej 1W. Budując układy zasilana bateryjnie a jeszcze dodatkowo z zasilaniem typu hasvesty energy można mówić o mocach w mW. No i pojawi asie dynamika kilka sekund kilka wat a potem mili waty. Próbując ten problem rozwiązać, bazując na posiadanym sprzęcie, okazało się to małym problemem. Multimetr UNI-T UT71E owszem posiada przystawkę ale na 230V i chyba kW Posiadam między innymi też RIGOL DM3058E. Dobry multimetr ale w instrukcji ani słowa na temat pomiaru mocy...Ma natomiast możliwość pomiarów dwóch wielkości (2ND). Sam miernik nie potrafi z tym nic zrobić, oprócz wyświetlania, ale... po podłączeniu do komputera otwierają się szerokie możliwości, którymi chciałbym się podzielić.
Multimetr RIGOL DM3058E po podłączeniu po USB obsługiwany może być między innymi przez VISA (https://pl.wikipedia.org/wiki/Virtual_Instrument_Software_Architecture)
Po analizie dokumentacji https://www.batronix.com/pdf/Rigol/ProgrammingGuide/DM3058_ProgrammingGuide_EN.pdf
stworzyłem program, który obsługuje miernik realizując pomiary długoczasowe, np. pojemność akumulatorów, energochłonność układów pomiarowych...
Pierwsze podejście w Labview, - ze względu na raportowanie oraz integracje z innymi elementami.
Drugie podejście w Pythonie - ze względu na stabilność
Oczywiście temat jest trywialny, polega na wysłaniu kilku komend do miernika i odczytaniu odpowiedzi, ale,... nie znalazłem gotowca, więc się tym dzielę
import pyvisa
import time
rm = pyvisa.ResourceManager()
print(rm.list_resources()) # select the appropriate port and enter it below
inst = rm.open_resource('USB0::0x1AB1::0x09C4::DM3R221100226::INSTR') # this is an example port from my resource
print(inst.query("*IDN?"))
#inst.write(":FUNCtion:VOLTage:DC") # ustawienie na 1 VDC
print(inst.query(":FUNCtion?"))
#inst.write(":FUNCtion2:CURRent:DC") # ustawienie na 2 VDC
# the rest of the configuration in https://www.batronix.com/pdf/Rigol/ProgrammingGuide/DM3058_ProgrammingGuide_EN.pdf
try:
while True:
dcvolt=float(inst.query(":FUNCtion2:VALUe1?"))
dccur=float(inst.query(":FUNCtion2:VALUe2?"))
print()
print(" Voltage = ",dcvolt," Current = ",dccur, " power = ",dcvolt*dccur)
time.sleep(1)
except KeyboardInterrupt:
print("Press Ctrl-C to terminate while statement")
pass
Fajne? Ranking DIY