8 พฤษภาคม 2555

2-8 พฤษภาคม 2555 (การนำUNO32ควบคุมมอเตอร์3)

แต่ใน arduno นั้นมี library สำเร็จรูปของ PID อยู่แล้วด้วยโดยสามารถ download ได้ที่ http://arduino.cc/playground/Code/PIDLibrary
โดยเราแต่ปรับค่าตัวแปรบางอย่างภายในก็พอ ส่วนสมการคำสั่ง library จะจัดการคำนวนค่าoutputให้เอง แล้วเราก็จะสามารถนำค่า output ที่ได้ไปควบคุมมอเตอร์ได้ทันทีซึ่งเท่าที่ผู้เขียนเคยใช้ก็ใช้ได้ดีนะ สะดวกกว่าที่เราจะเขียนโค๊ดของสมการขึ้นเองอีก แค่เราอ่านค่า analog input จาก encoder แล้วใส่ใน input แล้วสามารถใช้ค่า output กับมอเตอร์ได้ทันทีโดยฟังก์ชันหลักได้แก่ฃ


PID(double* Input, double* Output, double* Setpoint,double Kp, double Ki, double Kd, int ControllerDirection)
ตามที่เข้าใจเป็นการสร้าง object PID ขึ้นโดย Input คือ พอย์เตอร์ของค่าที่ encoderอ่านได้ Output คือพอย์เตอร์ของค่าที่จะนำไปขับมอเตอร์ Setpoint คือ พอย์เตอร์ของค่าเป้าหมายที่จะให้มอเตอร์หมุน ControllerDirectionคือทิศทางของมอเตอร์ Kp,Ki,Kd คือค่าPID
ตัวอย่าง

PID myPID(&double_Input, &double_Output, &double_Setpoint,double_consKp, double_consKi, double_consKd, DIRECT);


Compute()
คือฟังก์ชันหาค่าPWMที่จะไปหมุนมอเตอร์
ตัวอย่าง
myPID.Compute();


SetOutputLimits(double Min, double Max)
คือฟังก์ชันที่ใช้ในการกำหนดค่า outputไม่ให้เกินกำหนด
ตัวอย่าง
myPID.SetOutputLimits(-max_limit, max_limit);

และฟังก์ชันGetค่าต่างๆภายใน object

double GetKp()

double GetKi()

double GetKd()

int GetMode()

int GetDirection()

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

แสดงความคิดเห็น