Main code of our project.
Dependencies: TextLCD mbed PID
Diff: main.cpp
- Revision:
- 5:e9766e0573d0
- Parent:
- 4:886ce7eefa6e
- Child:
- 6:756d44ed75a5
--- a/main.cpp Sun Oct 07 02:25:50 2018 +0000 +++ b/main.cpp Tue Oct 09 10:34:34 2018 +0000 @@ -5,16 +5,23 @@ TextLCD lcd(D2, D3, D4, D5, D6, D7); // rs, e, d4-d7 Serial pc(USBTX, USBRX); // tx, rx -//PwmOut pwm1(D9); -DigitalOut relaySync(D8); +PwmOut pwmDC(D9); +PwmOut pwmSY(D13); +DigitalOut relay1(D8); +DigitalOut relay2(D14); +DigitalOut relay3(D11); +DigitalOut relay4(D12); AnalogIn syncPin(A0); AnalogIn gridPin(A1); AnalogIn differentialPin(A2); +AnalogIn potarDC(A3); +AnalogIn potarSY(A4); const float sqrt2 = 1.414213562; Timeout timeout; +Ticker tickerPWMDC; volatile bool looping = false; volatile bool synchronized = false; volatile bool mainLoop = true; @@ -31,6 +38,7 @@ float getVolageReadedMax(AnalogIn ana_pin); float getFrequency(AnalogIn ana_pin); void displayLCD(float syncRMS, float gridRMS, float syncFreq, float gridFreq); +void tickerPWMDCfunction(); @@ -50,15 +58,17 @@ int main() { float syncRMS, gridRMS, syncFreq, gridFreq; - relaySync = 1;//Relay off=1, on=0 + relay1 = 1;//Relay off=1, on=0 + relay2 = 1;//Relay off=1, on=0 + relay3 = 1;//Relay off=1, on=0 + relay4 = 1;//Relay off=1, on=0 + while(mainLoop){ - //measure and calculate desired value - syncRMS = getVolageRMS(syncPin); - gridRMS = getVolageRMS(gridPin); - syncFreq = getFrequency(syncPin); - gridFreq = getFrequency(gridPin); - //display values on LCD - displayLCD(syncRMS, gridRMS, syncFreq, gridFreq); + pwmDC.period(0.001f); + pwmDC.write(0.04f); + pwmSY.period(0.001f); + pwmSY.write(0.04f); + tickerPWMDC.attach(&tickerPWMDCfunction, 0.1); //manual synchronisation while(!synchronized){ @@ -81,6 +91,10 @@ pc.printf("SYNCHONIZATION OK\r\n\n"); lcd.locate(0,1);//(col,row) lcd.printf("SYNC OK "); + relay1 = 0;//Relay off=1, on=0 // to hear the noise + relay2 = 0;//Relay off=1, on=0 // to hear the noise + relay3 = 0;//Relay off=1, on=0 // to hear the noise + relay4 = 0;//Relay off=1, on=0 // to hear the noise synchronized = true; mainLoop = false; } @@ -89,10 +103,8 @@ } } + - // specify period first - //pwm1.period(0.1f); // 4 second period - //pwm1.write(0.50f); // 50% duty cycle, relative to period } @@ -111,6 +123,19 @@ } // ############################################################################# +// ISR to update pwmDC with potarDC +void tickerPWMDCfunction(){ + float valuePotar1; + float valuePotar2; + valuePotar1 = potarDC.read(); + pwmDC.write(valuePotar1); + valuePotar2 = potarSY.read(); + pwmSY.write(valuePotar2); + //lcd.locate(12,0);//(col,row) + //lcd.printf("%f",valuePotar); +} + +// ############################################################################# float getVolageRMS(AnalogIn ana_pin){ float v1;//readed voltage float v1Max = 0;//max readed voltage