Commit e4b99415 authored by Arnaud WATLET's avatar Arnaud WATLET
Browse files

Updates idps parameters and fixes vmax strategy issues

Showing with 28 additions and 26 deletions
+28 -26
......@@ -139,7 +139,7 @@ class OhmPi(object):
self.pin3 = self.mcp.get_pin(3) # dsp -
self.pin3.direction = Direction.OUTPUT
self.pin3.value = True
time.sleep(3)
time.sleep(4)
self.DPS = minimalmodbus.Instrument(port='/dev/ttyUSB0', slaveaddress=1) # port name, address (decimal)
self.DPS.serial.baudrate = 9600 # Baud rate 9600 as listed in doc
self.DPS.serial.bytesize = 8 #
......@@ -147,7 +147,7 @@ class OhmPi(object):
self.DPS.debug = False #
self.DPS.serial.parity = 'N' # No parity
self.DPS.mode = minimalmodbus.MODE_RTU # RTU mode
self.DPS.write_register(0x0001, 100, 0) # max current allowed (100 mA for relays)
self.DPS.write_register(0x0001, 1000, 0) # max current allowed (100 mA for relays)
print(self.DPS.read_register(0x05,2 )) # max current allowed (100 mA for relays) #voltage
self.pin2.value = False
......@@ -319,7 +319,7 @@ class OhmPi(object):
vmn=0
count=0
while I < 3 or abs(vmn) < 10 : # I supérieur à 1 mA et Vmn surpérieur
while I < 3 or abs(vmn) < 20 : # I supérieur à 1 mA et Vmn surpérieur
if count >0 :
volt = volt + 2
count=count+1
......@@ -350,21 +350,22 @@ class OhmPi(object):
if U0 < 0: # we guessed it wrong, let's use a correction factor
polarity = -1
vmn = U2
if abs(vmn)>4500 or I> 45 :
volt = volt - 2
self.DPS.write_register(0x0000, volt, 2)
self.DPS.write_register(0x09, 1) # DPS5005 on
time.sleep(best_tx_injtime)
I = AnalogIn(self.ads_current, ads.P0).voltage * 1000. / 50 / self.r_shunt
U0 = AnalogIn(self.ads_voltage, ads.P0).voltage * 1000.
U2 = AnalogIn(self.ads_voltage, ads.P2).voltage * 1000.
polarity = 1 # by default, we guessed it right
vmn = U0
if U0 < 0: # we guessed it wrong, let's use a correction factor
polarity = -1
vmn = U2
break
if strategy == 'vmax':
if abs(vmn)>4500 or I> 45 :
volt = volt - 2
self.DPS.write_register(0x0000, volt, 2)
self.DPS.write_register(0x09, 1) # DPS5005 on
time.sleep(best_tx_injtime)
I = AnalogIn(self.ads_current, ads.P0).voltage * 1000. / 50 / self.r_shunt
U0 = AnalogIn(self.ads_voltage, ads.P0).voltage * 1000.
U2 = AnalogIn(self.ads_voltage, ads.P2).voltage * 1000.
polarity = 1 # by default, we guessed it right
vmn = U0
if U0 < 0: # we guessed it wrong, let's use a correction factor
polarity = -1
vmn = U2
break
self.DPS.write_register(0x09, 0) # DPS5005 off
......@@ -384,7 +385,7 @@ class OhmPi(object):
factor = factor_I
if factor_I > factor_vmn:
factor = factor_vmn
vab = factor * volt * 0.9
vab = factor * volt * 0.8
if vab > tx_max:
vab = tx_max
......@@ -745,12 +746,13 @@ class OhmPi(object):
if self.sequence is None :
self.pin2 = self.mcp.get_pin(2) # dsp +
self.pin2.direction = Direction.OUTPUT
self.pin2.value = True
self.pin3 = self.mcp.get_pin(3) # dsp -
self.pin3.direction = Direction.OUTPUT
self.pin3.value = True
if self.idps:
self.pin2 = self.mcp.get_pin(2) # dsp +
self.pin2.direction = Direction.OUTPUT
self.pin2.value = True
self.pin3 = self.mcp.get_pin(3) # dsp -
self.pin3.direction = Direction.OUTPUT
self.pin3.value = True
self.pin5 = self.mcp.get_pin(5) #IHM on mesaurement
self.pin5.direction = Direction.OUTPUT
......@@ -787,7 +789,7 @@ class OhmPi(object):
if not np.isnan(tx_volt):
self.DPS.write_register(0x0000, tx_volt, 2) # set tx voltage in V
self.DPS.write_register(0x09, 1) # DPS5005 on
time.sleep(0.05)
time.sleep(0.3)
else:
self.exec_logger.debug('No best voltage found, will not take measurement')
out_of_range = True
......
Supports Markdown
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