Hello and thank you for your attention.
I have a transfer function in labview and i want to design a PI controller for that, in Arduino.I used VISA to connect labview to Arduino. i attached my VI and this is my arduino code:
#include <PID_v1.h>
double Setpoint, Input, Output;
double Kp = 36, Ki = 19, Kd = 0;
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);
void setup()
{
Serial.begin(115200);
while (!Serial) {}
Setpoint = 30;
myPID.SetMode(AUTOMATIC);
}
int bytesToRead = 0;
char msg[64];
void loop()
{
if (Serial.available())
{
getMessage();
float feedback = atof (msg);
Input = (double) feedback;
myPID.Compute();
Serial.println (Output);
}
}
void getMessage()
{
int i;
bytesToRead = Serial.available();
for (i = 0; i < bytesToRead; i++)
{
msg[i] = (Serial.read());
}
msg[i] = '\0';
}
the Set point is 30 and the output of the transfer function should be 30 but it stop on 25 and when i change the Kp and Ki and set point nothing change and the output of transfer function is 25...
So what is the problem??
I realy need this....thanx for your help...