diff --git a/_repo/moduleb-circuit-nobulb.svg b/_repo/moduleb-circuit-nobulb.svg
new file mode 100644
index 0000000..a20ee08
--- /dev/null
+++ b/_repo/moduleb-circuit-nobulb.svg
@@ -0,0 +1,205 @@
+
+
+
+
diff --git a/firmware/src/adc.c b/firmware/src/adc.c
index a6d7bd6..f45ce3e 100644
--- a/firmware/src/adc.c
+++ b/firmware/src/adc.c
@@ -160,21 +160,29 @@ void ADCInit( uint32_t ADC_Clk )
to design team. */
LPC_IOCON->PIO0_11 &= ~0x8F; /* ADC I/O config */
LPC_IOCON->PIO0_11 |= 0x02; /* ADC IN0 */
+ LPC_IOCON->PIO0_11 |= 1<<3; /* ADC IN0 -- pulldown */
#if 1
LPC_IOCON->PIO1_0 &= ~0x8F;
LPC_IOCON->PIO1_0 |= 0x02; /* ADC IN1 */
+ LPC_IOCON->PIO1_0 |= 1<<3; /* ADC IN1 -- pulldown */
LPC_IOCON->PIO1_1 &= ~0x8F;
LPC_IOCON->PIO1_1 |= 0x02; /* ADC IN2 */
+ LPC_IOCON->PIO1_1 |= 1<<3; /* ADC IN2 -- pulldown */
LPC_IOCON->PIO1_2 &= ~0x8F;
LPC_IOCON->PIO1_2 |= 0x02; /* ADC IN3 */
+ LPC_IOCON->PIO1_2 |= 1<<3; /* ADC IN3 -- pulldown */
LPC_IOCON->PIO1_3 &= ~0x8F;
LPC_IOCON->PIO1_3 |= 0x02; /* ADC IN4 */
+ LPC_IOCON->PIO1_3 |= 1<<3; /* ADC IN4 -- pulldown */
LPC_IOCON->PIO1_4 &= ~0x8F; /* Clear bit7, change to analog mode. */
LPC_IOCON->PIO1_4 |= 0x01; /* ADC IN5 */
+ LPC_IOCON->PIO1_4 |= 1<<3; /* ADC IN5 -- pulldown */
LPC_IOCON->PIO1_10 &= ~0x8F; /* Clear bit7, change to analog mode. */
LPC_IOCON->PIO1_10 |= 0x01; /* ADC IN6 */
+ LPC_IOCON->PIO1_10 |= 1<<3; /* ADC IN6 -- pulldown */
LPC_IOCON->PIO1_11 &= ~0x8F; /* Clear bit7, change to analog mode. */
LPC_IOCON->PIO1_11 |= 0x01; /* ADC IN7 */
+ LPC_IOCON->PIO1_11 |= 1<<3; /* ADC IN7 -- pulldown */
#endif
LPC_ADC->CR = ( 0x01 << 0 ) | /* SEL=1,select channel 0~7 on ADC0 */
diff --git a/software/modules/ModuleA.py b/software/modules/ModuleA.py
index 683f6d0..cb02400 100644
--- a/software/modules/ModuleA.py
+++ b/software/modules/ModuleA.py
@@ -24,10 +24,8 @@ class ModuleAWidget(QWidget):
def read_inputs(self):
r = self.dev.read()
- u = r[1]/1023.0 * 3.3 - 0.19
- if u < 0:
- u = 0
- self.dev.pwm(1, int(u*65536/3))
+ u = r[1]/1023.0 * 3.3
+ self.dev.pwm(1, int(u*65536.0/3.3))
self.ui.labelU.setText('%0.3f V' % u)
self.ui.progressU.setValue(1000*u)
self.data.pop(0)
@@ -53,7 +51,7 @@ class ModuleAWidget(QWidget):
self.scene.addSimpleText('1.0').moveBy(-40, 300-10)
self.scene.addSimpleText('0.5').moveBy(-40, 350-10)
self.scene.addSimpleText('0.0').moveBy(-40, 400-10)
- self.scene.addSimpleText('[U]').moveBy(-39, 430-10)
+ self.scene.addSimpleText('[U/V]').moveBy(-39, 430-10)
path = QPainterPath()
path.moveTo(0,400-self.data[0]*100)
for i in xrange(1,200):
@@ -70,6 +68,7 @@ class ModuleA():
def start(self):
self.widget.dev = Device()
self.widget.timer.start(40)
+ self.widget.data = 200*[0.0]
def stop(self):
self.widget.timer.stop()
diff --git a/software/modules/ModuleB-nobulb.png b/software/modules/ModuleB-nobulb.png
new file mode 100644
index 0000000..ec8301f
Binary files /dev/null and b/software/modules/ModuleB-nobulb.png differ
diff --git a/software/modules/ModuleB.py b/software/modules/ModuleB.py
index 1a7a042..168cada 100644
--- a/software/modules/ModuleB.py
+++ b/software/modules/ModuleB.py
@@ -24,16 +24,14 @@ class ModuleBWidget(QWidget):
self.scene_off.addPixmap(QPixmap('modules/ModuleB-off.png'))
self.scene_on = QGraphicsScene()
self.scene_on.addPixmap(QPixmap('modules/ModuleB-on.png'))
+ self.scene_nobulb = QGraphicsScene()
+ self.scene_nobulb.addPixmap(QPixmap('modules/ModuleB-nobulb.png'))
self.ui.widgetImg.setScene(self.scene_nobat)
def read_inputs(self):
r = self.dev.read()
- us = r[1]/1023.0 * 3.3 - 0.095
- if us < 0.0:
- us = 0.0
- uc = r[2]/1023.0 * 3.3 - 0.04
- if uc < 0.0:
- uc = 0.0
+ us = r[1]/1023.0 * 3.3
+ uc = r[2]/1023.0 * 3.3
i = (us-uc)/18*1000
if i < 0.0 or uc == 0.0:
i = 0.0
@@ -43,8 +41,10 @@ class ModuleBWidget(QWidget):
if us < 1.5:
self.ui.widgetImg.setScene(self.scene_nobat)
else:
- if uc < 1:
+ if uc < 0.9:
self.ui.widgetImg.setScene(self.scene_off)
+ elif uc > 2.0:
+ self.ui.widgetImg.setScene(self.scene_nobulb)
else:
self.ui.widgetImg.setScene(self.scene_on)
diff --git a/software/modules/ModuleC.py b/software/modules/ModuleC.py
index b09d480..3ab88c9 100644
--- a/software/modules/ModuleC.py
+++ b/software/modules/ModuleC.py
@@ -20,10 +20,11 @@ class ModuleCWidget(QWidget):
self.timer = QTimer()
QObject.connect(self.timer, SIGNAL("timeout()"), self.read_inputs)
- self.data1 = 200*[0.0]
- self.data2 = 200*[0.0]
+ self.datau = 200*[0.0]
+ self.datai = 200*[0.0]
+ self.current = 0
- self.mode = ['DC', 'L']
+ self.mode = ['DC', 'C']
@pyqtSlot()
def on_radioAC_clicked(self):
@@ -54,6 +55,7 @@ class ModuleCWidget(QWidget):
def on_btnStart_clicked(self):
self.ui.btnStart.setEnabled(False)
self.ui.btnStop.setEnabled(True)
+ self.current = 3.3
if self.mode == ['DC', 'L']:
self.dev.setout(1, 1)
if self.mode == ['DC', 'C']:
@@ -65,6 +67,7 @@ class ModuleCWidget(QWidget):
def on_btnStop_clicked(self):
self.ui.btnStart.setEnabled(True)
self.ui.btnStop.setEnabled(False)
+ self.current = 0.0
if self.mode == ['DC', 'L']:
self.dev.setout(1, 0)
if self.mode == ['DC', 'C']:
@@ -73,45 +76,55 @@ class ModuleCWidget(QWidget):
self.dev.setout(3, 0)
def setup_hw(self):
- if self.mode == ['DC', 'L']:
- self.dev.switches(1<<0)
- if self.mode == ['DC', 'C']:
- self.dev.switches(1<<1)
- if self.mode == ['DC', 'LC']:
+ if self.mode == ['DC', 'L']: # AD6
+ self.dev.switches(1<<5)
+ self.dev.opamp(2, 5, 0)
+ if self.mode == ['DC', 'C']: # AD5
+ self.dev.switches(1<<4)
+ self.dev.opamp(2, 4, 0)
+ if self.mode == ['DC', 'LC']: # AD3
self.dev.switches(1<<2)
+ self.dev.opamp(2, 2, 0)
def setup_scene(self, scene):
- scene.addLine(-5, 200-0, 610, 200-0)
+ scene.addLine(-5, 100-0, 605, 100-0)
scene.addLine(0, 200+5, 0, 200-205)
- scene.addLine(-5, 200- 50, 10, 200- 50)
- scene.addLine(-5, 200-100, 10, 200-100)
- scene.addLine(-5, 200-150, 10, 200-150)
- scene.addSimpleText('4.0').moveBy(-40, 0-10)
- scene.addSimpleText('3.0').moveBy(-40, 50-10)
- scene.addSimpleText('2.0').moveBy(-40, 100-10)
- scene.addSimpleText('1.0').moveBy(-40, 150-10)
- scene.addSimpleText('0.0').moveBy(-40, 200-10)
+ scene.addLine(-5, 200- 0, 5, 200- 0)
+ scene.addLine(-5, 200- 50, 5, 200- 50)
+ scene.addLine(-5, 200-100, 5, 200-100)
+ scene.addLine(-5, 200-150, 5, 200-150)
+ scene.addLine(-5, 200-200, 5, 200-200)
def tick_DC(self, u, i):
- self.data1.pop(0)
- self.data2.pop(0)
- self.data1.append(u)
- self.data2.append(i)
+ self.datau.pop(0)
+ self.datai.pop(0)
+ self.datau.append(u)
+ self.datai.append(i)
self.scene1 = QGraphicsScene()
self.scene2 = QGraphicsScene()
self.setup_scene(self.scene1)
self.setup_scene(self.scene2)
- self.scene1.addSimpleText('[U]').moveBy(-39, 220-10)
- self.scene2.addSimpleText('[I]').moveBy(-39, 220-10)
+ self.scene1.addSimpleText('[U/V]').moveBy(-39, 220-10)
+ self.scene2.addSimpleText('[I/mA]').moveBy(-39, 220-10)
+ self.scene1.addSimpleText('+4.0').moveBy(-40, 0-10)
+ self.scene1.addSimpleText('+2.0').moveBy(-40, 50-10)
+ self.scene1.addSimpleText(' 0.0').moveBy(-40, 100-10)
+ self.scene1.addSimpleText('-2.0').moveBy(-40, 150-10)
+ self.scene1.addSimpleText('-4.0').moveBy(-40, 200-10)
+ self.scene2.addSimpleText('+0.4').moveBy(-40, 0-10)
+ self.scene2.addSimpleText('+0.2').moveBy(-40, 50-10)
+ self.scene2.addSimpleText(' 0.0').moveBy(-40, 100-10)
+ self.scene2.addSimpleText('-0.2').moveBy(-40, 150-10)
+ self.scene2.addSimpleText('-0.4').moveBy(-40, 200-10)
path = QPainterPath()
- path.moveTo(0,200-self.data1[0]*50)
+ path.moveTo(0,100-self.datau[0]*25)
for i in xrange(1,200):
- path.lineTo(3*(i+1), 200-self.data1[i]*50)
+ path.lineTo(3*(i+1), 100-self.datau[i]*25)
self.scene1.addPath(path, QPen(QColor(0,0,255), 3))
path = QPainterPath()
- path.moveTo(0,200-self.data2[0]*50)
+ path.moveTo(0,100-self.datai[0]*25)
for i in xrange(1,200):
- path.lineTo(3*(i+1), 200-self.data2[i]*50)
+ path.lineTo(3*(i+1), 100-self.datai[i]*25)
self.scene2.addPath(path, QPen(QColor(0,0,255), 3))
self.ui.graph1.setScene(self.scene1)
self.ui.graph2.setScene(self.scene2)
@@ -121,7 +134,7 @@ class ModuleCWidget(QWidget):
if self.mode[0] == 'DC':
u = r[0]/1023.0 * 3.3 # TODO: change this if we change opamp
- i = 1 # TODO: read real current
+ i = self.current - r[0]/1023.0 * 3.3
self.tick_DC(u, i)
class ModuleC():
@@ -134,6 +147,8 @@ class ModuleC():
self.widget.dev = Device()
self.widget.setup_hw()
self.widget.timer.start(25)
+ self.widget.datau = 200*[0.0]
+ self.widget.datai = 200*[0.0]
def stop(self):
self.widget.timer.stop()
diff --git a/software/modules/ModuleC.ui b/software/modules/ModuleC.ui
index 9a8053f..a15fcdf 100644
--- a/software/modules/ModuleC.ui
+++ b/software/modules/ModuleC.ui
@@ -87,7 +87,7 @@
Mode
-
+
10
@@ -96,27 +96,11 @@
26
-
- L
-
-
- true
-
-
-
-
-
- 10
- 60
- 51
- 26
-
-
C
- false
+ true
@@ -135,6 +119,22 @@
false
+
+
+
+ 10
+ 60
+ 51
+ 26
+
+
+
+ L
+
+
+ false
+
+