Commit 6ca493b8 authored by rpi2.0's avatar rpi2.0
Browse files

update relay switch

Showing with 101 additions and 9 deletions
+101 -9
......@@ -22,7 +22,7 @@ OHMPI_CONFIG = {
'max_elec': 64,
'board_addresses': {'A': 0x73, 'B': 0x72, 'M': 0x71, 'N': 0x70}, # CHECK IF YOUR BOARDS HAVE THESE ADDRESSES
'settings': 'ohmpi_settings.json', # INSERT YOUR FAVORITE SETTINGS FILE HERE
'board_version': 'mb.2023.0.0'
'board_version': '22.10'
} # TODO: add a dictionary with INA models and associated gain values
# SET THE LOGGING LEVELS, MQTT BROKERS AND MQTT OPTIONS ACCORDING TO YOUR NEEDS
......
......@@ -744,7 +744,7 @@ class OhmPi(object):
self.pin7.value = False
if self.sequence == None :
if self.sequence is None :
self.pin2 = self.mcp.get_pin(2) # dsp +
self.pin2.direction = Direction.OUTPUT
self.pin2.value = True
......@@ -761,9 +761,9 @@ class OhmPi(object):
self.pin7 = self.mcp.get_pin(7) #IHM on mesaurement
self.pin7.direction = Direction.OUTPUT
self.pin7.value = False
if self.DPS.read_register(0x05,2) < 11:
self.pin7.value = True# max current allowed (100 mA for relays) #voltage
if self.idps:
if self.DPS.read_register(0x05,2) < 11:
self.pin7.value = True# max current allowed (100 mA for relays) #voltage
# get best voltage to inject AND polarity
if self.idps:
......@@ -996,6 +996,7 @@ class OhmPi(object):
"Tx [V]": tx_volt if not out_of_range else 0.,
"CPU temp [degC]": CPUTemperature().temperature,
"Nb samples [-]": self.nb_samples,
"fulldata": fulldata,
}
......@@ -1019,7 +1020,7 @@ class OhmPi(object):
dd['cmd_id'] = str(cmd_id)
self.data_logger.info(dd)
self.pin5.value = False #IHM led on measurement off
if self.sequence == None :
if self.sequence is None :
self.pin2.value = False # DSP + off
self.pin3.value = False # DSP - off
return d
......@@ -1304,12 +1305,12 @@ class OhmPi(object):
if i2c_address is not None:
# select the MCP23017 of the selected MUX board
mcp2 = MCP23017(tca[i2c_address])
mcp2.get_pin(relay_nr - 1).direction = digitalio.Direction.OUTPUT
mcp2.get_pin(relay_nr).direction = digitalio.Direction.OUTPUT
if state == 'on':
mcp2.get_pin(relay_nr - 1).value = True
mcp2.get_pin(relay_nr).value = True
else:
mcp2.get_pin(relay_nr - 1).value = False
mcp2.get_pin(relay_nr).value = False
self.exec_logger.debug(f'Switching relay {relay_nr} '
f'({str(hex(self.board_addresses[role]))}) {state} for electrode {electrode_nr}')
......
test.py 0 → 100644
from ohmpi import OhmPi
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(13) + 49
b = a + 3
m = a + 1
n = a + 2
seq = np.c_[a, b, m, n]
k = OhmPi(idps=False)
k.settings['injection_duration'] = 1
k.settings['nb_stack'] = 1
k.settings['nbr_meas'] = 1
k.sequence = seq
k.reset_mux()
# k.sequence = np.array([[1,4,2,3]])
k.run_sequence()
#k.measure(strategy='vmax')
#print('vab', k.compute_tx_volt(strategy='vmin'))
#k.rs_check()
#out = k.run_measurement(quad=[3, 3, 3, 3], nb_stack=1, tx_volt=12, strategy='constant', autogain=True)
#k.rs_check(tx_volt=12)
# x = []
#for i in range(3):
# out = k.run_measurement(injection_duration=2, nb_stack=2, strategy='constant', tx_volt=5, autogain=False)
#x.append(out['R [ohm]'])
#k.append_and_save('out.csv', out)
data = out['fulldata']
inan = ~np.isnan(data[:,0])
if True:
fig, axs = plt.subplots(2, 1, sharex=True)
ax = axs[0]
ax.plot(data[inan,2], data[inan,0], 'r.-', label='current [mA]')
ax.set_ylabel('Current AB [mA]')
ax = axs[1]
ax.plot(data[inan,2], data[inan,1], '.-', label='voltage [mV]')
ax.set_ylabel('Voltage MN [mV]')
ax.set_xlabel('Time [s]')
plt.show()
# fig,ax=plt.subplots()
#
#
# ax.plot(data[inan,2], data[inan,0], label='current [mA]', marker="o")
# ax2=ax.twinx()
# ax2.plot(data[inan,2], data[inan,1],'r.-' , label='current [mV]')
# ax2.set_ylabel('Voltage [mV]', color='r')
# ymin=-50
# ymax=50
# ymin1=-4500
# ymax1= 4500
# ax.set_ylim([ymin,ymax])
# ax2.set_ylim([ymin1,ymax1])
#
# plt.show()
if False:
from numpy.fft import fft, ifft
x = data[inan, 1][10:300]
t = np.linspace(0, len(x)*4, len(x))
sr = 1/0.004
X = fft(x)
N = len(X)
n = np.arange(N)
T = N/sr
freq = n/T
plt.figure(figsize = (12, 6))
plt.subplot(121)
plt.stem(freq, np.abs(X), 'b', \
markerfmt=" ", basefmt="-b")
plt.xlabel('Freq (Hz)')
plt.ylabel('FFT Amplitude |X(freq)|')
#plt.xlim(0, 10)
plt.subplot(122)
plt.plot(t, ifft(X), 'r')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.tight_layout()
plt.show()
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