PID Feedback Control

Dependencies:   mbed PID

AmpRiseTime.cpp

Committer:
mmohamed
Date:
2019-11-19
Revision:
0:7e0c2b0edbc8

File content as of revision 0:7e0c2b0edbc8:

/*
#include "PID.h"
#include "mbed.h"
#include "time.h"
#define RATE 0.0001

//Kc, Ti, Td, interval
//PID controller_amp(2.0, 100.0, 0.5, RATE);
//PID controller_amp(1.65, 10000.0, 0.0, RATE);
PID controller_amp(1.65, 10000.0, 0.0, RATE);


AnalogIn pv_amp(p16);     //output from the amp detector
PwmOut co_amp(p26);       //output from PID to adjust amplitude
//AnalogOut co_amp(p18);
DigitalOut myled(LED2);

LocalFileSystem local("local");


float amp = 1.5; // Desired voltage at the variable attenuator corresponding to -10 dB 
float amp_detector = 1.686; // Desired voltage at the output of the detector with VA set at -10 dB and input power = 5 dBm
float input_scaling_factor = amp/amp_detector;
float scaling_factor;
float output;

int main(){

  //Analog input from 0.0 to 3.3 V
  controller_amp.setInputLimits(0.0, 3.3);
  
  //Pwm output from 0.0 to 3.3 V
  controller_amp.setOutputLimits(0.0, 1.0);
  
  //If there's a bias.
  controller_amp.setBias(0.0);
  controller_amp.setMode(0);
  
  //We want the process variables to be V_amp
  controller_amp.setSetPoint(0.0);
  myled = 1;
  
  wait(3);
  controller_amp.setSetPoint(amp);
  myled = 0;

  FILE *fp = fopen("/local/data.txt", "w");


  while(1){
    //Update the process variable.
    scaling_factor = pv_amp.read() * input_scaling_factor;
  //scaling_factor = pv_amp.read() * 1.5/1.686;
    controller_amp.setProcessValue(scaling_factor);
    
    //Set the new output.
    co_amp = controller_amp.compute();
   // co_amp.write(controller_amp.compute());
    
    

    fprintf(fp, "Input Voltage %f\n", pv_amp.read());
  //  fprintf(fp, "Output Voltage %f\n",co_amp.write(controller_amp.compute()) );
    fprintf(fp, "Scaling Factor %f\n", scaling_factor);
  //  fprintf(fp, "Process Variable" "%f\n",controller_amp.setProcessValue(scaling_factor));
    fclose(fp);
    
    
    //Wait for another loop calculation.
    wait(RATE);
  }

}
*/