From a871b8c44557af67df2ea562a659ff163beea9f7 Mon Sep 17 00:00:00 2001 From: "hsw@openmoko.com" Date: Wed, 1 Jul 2009 02:24:03 +0000 Subject: [PATCH] [testudo] stage2 control power and measure current Signed-off-by: Christopher Hall git-svn-id: https://wikipediardware.googlecode.com/svn/trunk@1815 974c56cd-8151-0410-98c4-7bb2f43fa8c1 --- testudo/src/ui2.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/testudo/src/ui2.py b/testudo/src/ui2.py index c63f99883..609acba79 100755 --- a/testudo/src/ui2.py +++ b/testudo/src/ui2.py @@ -24,8 +24,18 @@ import os.path import threading +import Keithley + import sequencer + +# power supply (volts, amps) +SUPPLY_STANDARD_VOLTAGE = 3.0 +SUPPLY_CURRENT_LIMIT = 0.35 +MAXIMUM_SUSPEND_CURRENT = 0.02 +MAXIMUM_ON_CURRENT = 0.15 + +# paths to files SaveFilesFolder = '/log/files/stage2' FileExt = '.2.text' @@ -137,14 +147,25 @@ def runTest(self): try: s = None + psu = None s = SerialPort() if '' == self.serialNumber.get_text(): raise StopTestException('Serial number invalid') serialNumber = self.serialNumber.get_text() + + psu = Keithley.PSU2303() + psu.setCurrent(SUPPLY_CURRENT_LIMIT) + psu.setVoltage(SUPPLY_STANDARD_VOLTAGE) + psu.powerOn() + self.write('\n*** Start of Test for device SN: %s ***\n\n' % (serialNumber)) t = time.time() + + self.write('*** Press device power on button to begin test ***\n\n' % + (serialNumber)) + run = True while run: @@ -162,6 +183,28 @@ def runTest(self): self.write(line) self.write('\n') + if '*SUSPEND*' == line: + samples = 20 + total = 0 + for j in range(samples): + i = psu.current + total = total + i + self.write('INFO: suspend current = %7.3f mA @ %5.1f V\n' % + (1000 * i, psu.voltage)) + time.sleep(0.1) + self.write('INFO: average suspend current = %7.3f mA @ %5.1f V\n' % + (1000 * total / samples, psu.voltage)) + if abs(i) > MAXIMUM_SUSPEND_CURRENT: + s.write('N') + else: + s.write('Y') + + else: + i = psu.current + self.write('INFO: current = %7.3f mA @ %5.1f V\n' % (1000 * i, psu.voltage)) + if abs(i) > MAXIMUM_ON_CURRENT: + raise StopTestException('Device overcurrent: %7.3f mA' % (1000 * i) + if '*END-TEST*' == line: run = False @@ -183,6 +226,9 @@ def runTest(self): finally: if None != s: del s + if None != psu: + psu.powerOff() + del psu self.write('\n*** End of Test ***\n') self.testStop = False self.testRunning = False