make PPK2 power supply monitor work in supply-mode

This commit is contained in:
Kevin Hester
2024-07-06 16:41:33 -07:00
parent fb191092fb
commit ecbda74bd6
3 changed files with 19 additions and 7 deletions

2
.vscode/launch.json vendored
View File

@@ -204,7 +204,7 @@
"request": "launch",
"module": "meshtastic",
"justMyCode": false,
"args": ["--slog", "--power-ppk2-meter", "--power-stress", "--power-voltage", "3.3", "--seriallog", "--ble"]
"args": ["--slog", "--power-ppk2-supply", "--power-stress", "--power-voltage", "3.3", "--seriallog", "--ble"]
},
{
"name": "meshtastic test",

View File

@@ -1009,24 +1009,34 @@ def create_power_meter():
global meter # pylint: disable=global-statement
args = mt_config.args
# If the user specified a voltage, make sure it is valid
v = 0.0
if args.power_voltage:
v = float(args.power_voltage)
if v < 0.8 or v > 5.0:
meshtastic.util.our_exit("Voltage must be between 0.8 and 5.0")
if args.power_riden:
meter = RidenPowerSupply(args.power_riden)
elif args.power_ppk2_supply or args.power_ppk2_meter:
meter = PPK2PowerSupply()
assert v > 0, "Voltage must be specified for PPK2"
meter.v = v # PPK2 requires setting voltage before selecting supply mode
meter.setIsSupply(args.power_ppk2_supply)
elif args.power_sim:
meter = SimPowerSupply()
if meter and args.power_voltage:
v = float(args.power_voltage)
if v < 0.5 or v >5.0:
meshtastic.util.our_exit("Voltage must be between 1.0 and 5.0")
if meter and v:
logging.info(f"Setting power supply to {v} volts")
meter.v = v
meter.powerOn()
if args.power_wait:
input("Powered on, press enter to continue...")
else:
logging.info("Powered-on, waiting for device to boot")
time.sleep(5)
def common():
"""Shared code for all of our command line wrappers."""

View File

@@ -118,9 +118,11 @@ class PPK2PowerSupply(PowerSupply):
self.measurement_thread.join() # wait for our thread to finish
super().close()
def setIsSupply(self, s: bool):
def setIsSupply(self, is_supply: bool):
"""If in supply mode we will provide power ourself, otherwise we are just an amp meter."""
assert self.v > 0.8 # We must set a valid voltage before calling this method
self.r.set_source_voltage(
int(self.v * 1000)
) # set source voltage in mV BEFORE setting source mode
@@ -130,7 +132,7 @@ class PPK2PowerSupply(PowerSupply):
self.r.start_measuring() # send command to ppk2
if (
not s
not is_supply
): # min power outpuf of PPK2. If less than this assume we want just meter mode.
self.r.use_ampere_meter()
else: