diff --git a/configs/config_mb_2024_0_2__4_mux_2024_dps5005.py b/configs/config_mb_2024_0_2__4_mux_2024_dps5005.py
index 011c374fbeba8ef60ac602d455885e0de74efb1c..cf1f4ac7bedcc55da86e7aeea0b2f2e697d19898 100644
--- a/configs/config_mb_2024_0_2__4_mux_2024_dps5005.py
+++ b/configs/config_mb_2024_0_2__4_mux_2024_dps5005.py
@@ -15,14 +15,14 @@ OHMPI_CONFIG = {
     'id': ohmpi_id,  # Unique identifier of the OhmPi board (string)
     'settings': 'ohmpi_settings.json',  # INSERT YOUR FAVORITE SETTINGS FILE HERE
 }
-
+r_shunt =2.
 HARDWARE_CONFIG = {
     'ctl': {'model': 'raspberry_pi'},
     'pwr': {'model': 'pwr_dps5005', 'voltage': 3., 'interface_name': 'modbus'},
     'tx':  {'model': 'mb_2024_0_2',
              'voltage_max': 50.,  # Maximum voltage supported by the TX board [V]
-             'current_max': 4800,  # Maximum voltage read by the current ADC on the TX board [mA]
-             'r_shunt': 2,  # Shunt resistance in Ohms
+             'current_max': 4.8/(50*r_shunt),  # Maximum voltage read by the current ADC on the TX board [A]
+             'r_shunt': r_shunt,  # Shunt resistance in Ohms
              'interface_name': 'i2c'
             },
     'rx':  {'model': 'mb_2024_0_2',
@@ -75,7 +75,8 @@ HARDWARE_CONFIG = {
                  },
              'default': {'interface_name': 'i2c_ext',
                          'voltage_max': 100.,
-                         'current_max': 3.}
+                         'current_max': 3.
+                         }
             }
     }
 
diff --git a/ohmpi/hardware_system.py b/ohmpi/hardware_system.py
index 7ac3f947591317184ad7be4732039bf255ded807..87dcfa60072f111b5d8126d75ea7659ade13c38b 100644
--- a/ohmpi/hardware_system.py
+++ b/ohmpi/hardware_system.py
@@ -43,7 +43,7 @@ for k, v in rx_module.SPECS['rx'].items():
     except Exception as e:
         print(f'Cannot set value {v} in RX_CONFIG[{k}]:\n{e}')
 
-current_max = np.min([TX_CONFIG['voltage_max']/50/TX_CONFIG['r_shunt'],  # TODO: replace 50 by a TX config
+current_max = np.min([TX_CONFIG['current_max'],  # TODO: replace 50 by a TX config
                       np.min(np.hstack((np.inf, [MUX_CONFIG[i].pop('current_max', np.inf) for i in MUX_CONFIG.keys()])))])
 voltage_max = np.min([TX_CONFIG['voltage_max'],
                       np.min(np.hstack((np.inf, [MUX_CONFIG[i].pop('voltage_max', np.inf) for i in MUX_CONFIG.keys()])))])
@@ -317,7 +317,7 @@ class OhmPiHardware:
             sp = np.mean(mean_vmn[np.ix_(polarity == 1)] + mean_vmn[np.ix_(polarity == -1)]) / 2
             return sp
 
-    def _find_vab(self, vab, iab, vmn, p_max, vab_max, vmn_max):
+    def _find_vab(self, vab, iab, vmn, p_max, vab_max, iab_max, vmn_max):
         iab_mean = np.mean(iab)
         iab_std = np.std(iab)
         vmn_mean = np.mean(vmn)
@@ -338,9 +338,10 @@ class OhmPiHardware:
         # conditions for vab update
         cond_vmn_max = rab_lower_bound / r_upper_bound * vmn_max
         cond_p_max = np.sqrt(p_max * rab_lower_bound)
+        cond_iab_max = rab_lower_bound * iab_max
         print(f'Rab: [{rab_lower_bound:.1f}, {rab_upper_bound:.1f}], R: [{r_lower_bound:.1f},{r_upper_bound:.1f}]')
         print(f'{k}: [{vab_max:.1f}, {cond_vmn_max:.1f}, {cond_p_max:.1f}]')
-        new_vab = np.min([vab_max, cond_vmn_max, cond_p_max])
+        new_vab = np.min([vab_max, cond_vmn_max, cond_p_max, cond_iab_max])
         if new_vab == vab_max:
             print('Vab bounded by Vab max')
         elif new_vab == cond_p_max:
@@ -432,7 +433,7 @@ class OhmPiHardware:
                     v = np.where((self.readings[:, 0] > delay) & (self.readings[:, 2] != 0) & (self.readings[:, 1]==pulse))[0]  # NOTE : discard data aquired in the first x ms
                     iab = self.readings[v, 3]/1000.
                     vmn = np.abs(self.readings[v, 4]/1000. * self.readings[v, 2])
-                    new_vab = self._find_vab(vab_list[k], iab, vmn, p_max, vab_max, vmn_max)
+                    new_vab = self._find_vab(vab_list[k], iab, vmn, p_max, vab_max, iab_max, vmn_max)
                     diff_vab = np.abs(new_vab - vab_list[k])
                     vabs.append(new_vab)
                     print(f'new_vab: {new_vab}, diff_vab: {diff_vab}\n')
diff --git a/ohmpi/ohmpi.py b/ohmpi/ohmpi.py
index ea8710f1f3f8bcf9756e96b517de4c0c65401195..3b3f1ca555ca7018c62917dc0131133b9472d195 100644
--- a/ohmpi/ohmpi.py
+++ b/ohmpi/ohmpi.py
@@ -500,7 +500,7 @@ class OhmPi(object):
         bypass_check = kwargs['bypass_check'] if 'bypass_check' in kwargs.keys() else False
         d = {}
         if self.switch_mux_on(quad, bypass_check=bypass_check, cmd_id=cmd_id):
-            tx_volt = self._hw._compute_tx_volt(tx_volt=.5, strategy=strategy, vab_max=10.)  # TODO: use tx_volt and vmn_max instead of hardcoded values
+            tx_volt = self._hw._compute_tx_volt(tx_volt=.5, strategy=strategy, vab_max=5.)  # TODO: use tx_volt and vmn_max instead of hardcoded values
             self._hw.vab_square_wave(tx_volt, cycle_duration=injection_duration*2/duty_cycle, cycles=nb_stack, duty_cycle=duty_cycle)
             if 'delay' in kwargs.keys():
                 delay = kwargs['delay']