-น้องอิน และน้องยีนส์ เป็นน้องจากวิศวคอมฯ เข้ามาเรียนรู้และหาแนวทางทำโปรเจ็ควันนี้ได้พรีเซ็นเกี่ยวกับห้องแล็ปที่พวกเราอยู่ และอธบายการทำงานของโปรเจ็คที่พวกเราได้ช่วยพี่ที่แล็ป น้องเขาก็เป็นอันเข้าใจแต่เห็นน้องเขาสนใจในด้าน headgear และมีแนวโน้มว่าน้องเขาอยากทำโปรเจ็คเกี่ยวกับเรื่องนี้
-โค้ด PID ที่เขียนขึ้นแตังยังไม่สามารถส่งfeedback กลับมาได้โดยการคำนวนก็นำมาจากทฤษฏีและตามโครงสร้างPID
-ปัญหาอาจติดที่โค้ดโปรแกรมที่ยังคงใช้ตัวแปลได้ไม่ถูกตามโครงสร้างโปรแกรม
int pwm = 9; // PWM connected to digital pin 9
float time1 = 0.0;
float time2 = 0.0;
float s=0.0;
float counter = 0.0;
float j = 0.0;
float k=0.0;
float rpm=0.0;
float rpm_set = 0.0;
float err = 0;
float sum_err = 0;
float old_err = 0;
float u = 0;
float l = 0;
unsigned long Cur_time=0;
unsigned long Prev_time=0;
int latter1 = 0;
void setup() {
Serial.begin(9600);
attachInterrupt(0,Millis,RISING);
//LOW to trigger the interrupt whenever the pin is low,
//CHANGE to trigger the interrupt whenever the pin changes value
//RISING to trigger when the pin goes from low to high,
//FALLING for when the pin goes from high to low.
pinMode(pwm,OUTPUT); //PWM
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
}
void loop()
{
String latter ="";
if(Serial.available()>0)
{
while(Serial.available()>0)
{
latter += char(Serial.read());
}
Serial.println(latter);
latter1=latter.toInt();
Serial.print("latter1:"); Serial.print(latter1); Serial.println("\t");
analogWrite(pwm,latter1);
}
Cur_time = millis();
int s = Cur_time-Prev_time;
if(s >= 100)
{
j = (counter*10.0)/360.0;
k = j/(s*0.001);
rpm = k*60.0; //rpm
err = latter1 - rpm;
sum_err += err;
u = 1*err + 0.5*sum_err + 1*(err-old_err);
old_err = err;
latter1 = u*1.25;
counter=0;
Prev_time = Cur_time;
Serial.print("rpm:"); Serial.print(rpm); Serial.println("\t");
}
}
void Millis()
{
counter++;
}
-โปรแกรมที่นำมาศึกษาและหนังสือที่นำมาอ่าน จากเว็ป https://www.pdx.edu/nanogroup/sites/www.pdx.edu.nanogroup/files/2013_Arduino%20PID%20Lab_0.pdf
int dir = 8;
int pwm = 9;
int count;
int r;
int t;
int set_rpm;
int err;
int sum_err;
float u;
int old_err;
int speed_sig;
int rpm;
void setup()
{
pinMode(dir,OUTPUT);
pinMode(pwm,OUTPUT);
pinMode(r,INPUT);
attachInterrupt(0,pulsecount,RISING);
Serial.begin(9600);
}
void pulsecount()
{
count++;
}
void loop()
{
do
{
t = millis();
}
while(t%10 !=0);
rpm = count*0.0016667*60;
count = 0;
r=analogRead(A3);
set_rpm = r/10;
err = set_rpm - rpm;
sum_err += err;
u = 1*err + 0.5*sum_err + 1*(err-old_err);
old_err = err;
speed_sig = u*1.25;
if(speed_sig>255)
{
speed_sig = 255;
}
digitalWrite(dir,LOW);
analogWrite(pwm,speed_sig);
Serial.println(rpm);
Serial.println(set_rpm);
Serial.println(err);
Serial.println(sum_err);
Serial.println(speed_sig);
sum_err = 0;
delay(1);
}

ไม่มีความคิดเห็น:
แสดงความคิดเห็น