แต่ใน 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()
จากBlogที่ผมต้องการเขียนขึ้นมาเพื่อบันทึกเรื่องราวในการฝึกงานเป็นบล็อกที่พยายามเขียนบทความไฟฟ้าอิเล็กทรอกนิกส์และคอมพิวเตอร์
ป้ายกำกับ
FIBO
(28)
microcontroller
(16)
CHIPKIT
(6)
robotics
(6)
Camera
(5)
Photo
(5)
arduino
(5)
bluetooth
(5)
communication
(5)
ubuntu
(5)
กล้อง
(5)
ถ่ายรูป
(5)
android
(4)
pid control
(4)
notebook
(2)
Agile
(1)
CI
(1)
Software engineering
(1)
algorithm
(1)
controller
(1)
game
(1)
guitar
(1)
hardware
(1)
programming
(1)
ล๊อตเตอรี่
(1)
สลากกินแบ่งรัฐบาล
(1)
หวย
(1)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น