Hardware Design: SIE
Sign in or create your account | Project List | Help
Hardware Design: SIE Git Source Tree
Root/
| 1 | #include "mainwindow.h" |
| 2 | #include "ui_mainwindow.h" |
| 3 | #include <QDebug> |
| 4 | |
| 5 | #include <QTime> |
| 6 | #include <math.h> |
| 7 | |
| 8 | MainWindow::MainWindow(QWidget *parent) |
| 9 | : QMainWindow(parent), ui(new Ui::MainWindow) |
| 10 | { |
| 11 | ui->setupUi(this); |
| 12 | connect(this,SIGNAL(refresh()),ui->Graph, SLOT(repaint())); |
| 13 | ui->Graph->setPointsPerPlot(200); |
| 14 | ui->Graph->setVoltsPerDiv(205); |
| 15 | |
| 16 | timer1 = new QTimer(this); |
| 17 | timer1->start(50); |
| 18 | connect(timer1, SIGNAL(timeout()), this, SLOT(updateGraph())); |
| 19 | |
| 20 | ADC1 = new ADCw; |
| 21 | ADC1->testADC(); |
| 22 | ADC1->setBufferLen(240); |
| 23 | ADC1->setClockDiv(ADC_SPI_CLKDIV_MIN); //Max. speed |
| 24 | ADC1->setMuxChannels(1); |
| 25 | printf("\nTaking 120 samples by channel at Fs=99KHz (trigger=50ms)\n"); |
| 26 | } |
| 27 | |
| 28 | MainWindow::~MainWindow() |
| 29 | { |
| 30 | delete ui; |
| 31 | } |
| 32 | |
| 33 | void MainWindow::updateGraph() |
| 34 | { |
| 35 | JZ_REG * dataADC; |
| 36 | |
| 37 | int tempD; |
| 38 | deltaCountCH1=0; deltaCountCH2=0; |
| 39 | idxCH1=0; idxCH2=0; |
| 40 | |
| 41 | dataADC=ADC1->takeSamplesADC(0); |
| 42 | for(int i=0; i< 240/2; i++) |
| 43 | { |
| 44 | tempD = dataADC[i]&0x0FFF; |
| 45 | //tempD = sin(10*PI*i/200)*0x200+0x200; |
| 46 | ui->Graph->addPoint1(tempD+0x3ff); |
| 47 | |
| 48 | sign2_CH1 = getSign(tempD-0x200); |
| 49 | if((sign1_CH1!=sign2_CH1) & (i>1)) |
| 50 | deltaCountCH1++; |
| 51 | |
| 52 | if((deltaCountCH1>0) & (deltaCountCH1<3)) |
| 53 | { |
| 54 | valCH1[idxCH1]= tempD-0x200; |
| 55 | idxCH1 ++; |
| 56 | } |
| 57 | |
| 58 | sign1_CH1=sign2_CH1; |
| 59 | |
| 60 | tempD = (dataADC[i]>>16)&0x0FFF; |
| 61 | //tempD = cos(10*PI*i/200)*0x200+0x200; |
| 62 | ui->Graph->addPoint2(tempD); |
| 63 | |
| 64 | sign2_CH2 = getSign(tempD-0x200); |
| 65 | if((sign1_CH2!=sign2_CH2) & (i>1)) |
| 66 | deltaCountCH2++; |
| 67 | |
| 68 | if((deltaCountCH2>0) & (deltaCountCH2<3)) |
| 69 | { |
| 70 | valCH2[idxCH2]= tempD-0x200; |
| 71 | idxCH2 ++; |
| 72 | } |
| 73 | |
| 74 | sign1_CH2=sign2_CH2; |
| 75 | } |
| 76 | |
| 77 | double Vrms=0, Vm=0; |
| 78 | |
| 79 | for(int i=0; i<idxCH1; i++) |
| 80 | { |
| 81 | Vrms += pow(valCH1[i],2)/idxCH1; |
| 82 | Vm += valCH1[i]/idxCH1; |
| 83 | } |
| 84 | |
| 85 | if(deltaCountCH1>2) |
| 86 | { |
| 87 | Vrms=sqrt(Vrms)+VrmsC; |
| 88 | Vm=Vm+VmC; |
| 89 | ui->txtVrmsCH1->setText(QString::number(Vrms)); |
| 90 | ui->txtVmCH1->setText(QString::number(Vm)); |
| 91 | } |
| 92 | else |
| 93 | { |
| 94 | ui->txtVrmsCH1->setText("???"); |
| 95 | ui->txtVmCH1->setText("???"); |
| 96 | } |
| 97 | |
| 98 | Vrms=0; Vm=0; |
| 99 | for(int i=0; i<idxCH2; i++) |
| 100 | { |
| 101 | Vrms += pow(valCH2[i],2)/idxCH2; |
| 102 | Vm += valCH2[i]/idxCH2; |
| 103 | } |
| 104 | |
| 105 | if(deltaCountCH2>2) |
| 106 | { |
| 107 | Vrms=sqrt(Vrms)+VrmsC; |
| 108 | Vm=Vm+VmC; |
| 109 | ui->txtVrmsCH2->setText(QString::number(Vrms)); |
| 110 | ui->txtVmCH2->setText(QString::number(Vm)); |
| 111 | } |
| 112 | else |
| 113 | { |
| 114 | ui->txtVrmsCH2->setText("???"); |
| 115 | ui->txtVmCH2->setText("???"); |
| 116 | } |
| 117 | |
| 118 | emit refresh(); |
| 119 | } |
| 120 |
Branches:
master
