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 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + SRG8 + + + + + + + + + + + + + + + + + + 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 + +