Skip to content

Commit ecbda74

Browse files
committed
make PPK2 power supply monitor work in supply-mode
1 parent fb19109 commit ecbda74

3 files changed

Lines changed: 19 additions & 7 deletions

File tree

.vscode/launch.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@
204204
"request": "launch",
205205
"module": "meshtastic",
206206
"justMyCode": false,
207-
"args": ["--slog", "--power-ppk2-meter", "--power-stress", "--power-voltage", "3.3", "--seriallog", "--ble"]
207+
"args": ["--slog", "--power-ppk2-supply", "--power-stress", "--power-voltage", "3.3", "--seriallog", "--ble"]
208208
},
209209
{
210210
"name": "meshtastic test",

meshtastic/__main__.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,24 +1009,34 @@ def create_power_meter():
10091009

10101010
global meter # pylint: disable=global-statement
10111011
args = mt_config.args
1012+
1013+
# If the user specified a voltage, make sure it is valid
1014+
v = 0.0
1015+
if args.power_voltage:
1016+
v = float(args.power_voltage)
1017+
if v < 0.8 or v > 5.0:
1018+
meshtastic.util.our_exit("Voltage must be between 0.8 and 5.0")
1019+
10121020
if args.power_riden:
10131021
meter = RidenPowerSupply(args.power_riden)
10141022
elif args.power_ppk2_supply or args.power_ppk2_meter:
10151023
meter = PPK2PowerSupply()
1024+
assert v > 0, "Voltage must be specified for PPK2"
1025+
meter.v = v # PPK2 requires setting voltage before selecting supply mode
10161026
meter.setIsSupply(args.power_ppk2_supply)
10171027
elif args.power_sim:
10181028
meter = SimPowerSupply()
10191029

1020-
if meter and args.power_voltage:
1021-
v = float(args.power_voltage)
1022-
if v < 0.5 or v >5.0:
1023-
meshtastic.util.our_exit("Voltage must be between 1.0 and 5.0")
1030+
if meter and v:
10241031
logging.info(f"Setting power supply to {v} volts")
10251032
meter.v = v
10261033
meter.powerOn()
10271034

10281035
if args.power_wait:
10291036
input("Powered on, press enter to continue...")
1037+
else:
1038+
logging.info("Powered-on, waiting for device to boot")
1039+
time.sleep(5)
10301040

10311041
def common():
10321042
"""Shared code for all of our command line wrappers."""

meshtastic/powermon/ppk2.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,9 +118,11 @@ def close(self) -> None:
118118
self.measurement_thread.join() # wait for our thread to finish
119119
super().close()
120120

121-
def setIsSupply(self, s: bool):
121+
def setIsSupply(self, is_supply: bool):
122122
"""If in supply mode we will provide power ourself, otherwise we are just an amp meter."""
123123

124+
assert self.v > 0.8 # We must set a valid voltage before calling this method
125+
124126
self.r.set_source_voltage(
125127
int(self.v * 1000)
126128
) # set source voltage in mV BEFORE setting source mode
@@ -130,7 +132,7 @@ def setIsSupply(self, s: bool):
130132
self.r.start_measuring() # send command to ppk2
131133

132134
if (
133-
not s
135+
not is_supply
134136
): # min power outpuf of PPK2. If less than this assume we want just meter mode.
135137
self.r.use_ampere_meter()
136138
else:

0 commit comments

Comments
 (0)