หลังจากที่ออกแบบและสร้าง Inverted pendulum ตัวใหม่ออกมา(อันนี้ คือ ตัวเก่า)แล้วและทำการควบคุมมัน ซึ่งผลที่ได้เป็นที่น่าพอใจอย่างมาก ซึ่งตอนนี้มันก็สามารถควบคุมได้แล้ว การควบคุมแบบนี้เรียกว่า State feedback คือ Control law u=-kx โดยที่ x คือ state variable ซึ่งใน Inverted pendulum system x ก็จะมีทั้งหมดสี่ตัว คือ cart position,cart velocity,pendulum angle และ angular velocity ซึ่งเมื่อเราสามารถวัดมาได้ครบ เราก็ทำการออกแบบหาค่า K ด้วยวิธี Pole placement/LQ เมื่อออกแบบหาค่า Kแล้วก็นำมาเขียนลงใน Digital signal processing PIC18F4431
25 comments:
Hi, Sorry i am unable to type in Thai, due to the computer in my lab!
I am now doing the similar project as this one.
I am using however a DSP TMS320LF... from TI.
I am having a problem designing a controller for my pendulum.
OK, it is alright when i would like the pendulum to swing up and stand vertically inverted.
The problem arises when i would like to try to control a position of the cart!
As i have a look in ur control system u = k....
I am curious, what do u actually mean by x_d???
Ps. My current position x and the pendulum's angle are both read in with separated incremental encoder!!
Thx in advance!!!
#Win
You must have the velocity of the cart and rod with ,because
u = PWM =- k1 (rod angle-ref)-k2 (rod velocity)-k3 (cart position-ref1)-k4 (cart velocity).
xd = cart position desire
Thx a lot,
Up until now i have all necessary parameters, including:
- pendulum angle,
- angular velocity of the pendulum,
- the cart position, and
- the velocity of the cart.
How can i determine K???
I am now trying to use a state space with a linear control!
for example:
x_dot_matrix = A*x_matrix + B*u_out
|delta*I - A| = 0
u_output = -(k_1*x_1 + .. + k_n*x_n)
= -K*x_matrix
where K = [k_1 k_2 ... k_n]
is this how u determine K???
Thx!!
In this case u can't be the matrix,because u is scalar, x are column
vector
k=[1x4 ]= one row,four column
x=[4x1]
so that
u=kx=[1x4]*[4x1]=[1x1] is scalar
well, obviously u is not a matrix, since i would have here only a force F as an output!
พี่ผมทำเรื่องนี้เหมือนกันขอคำปรึกษาได้ไหมครับ
@kkw_palm ได้สงสัยเรื่องไหนถามได้ ครับ
ใช้โปรแกรมอะไรควบคุมหรือคับผมกำลังจะทำโปรเจคเรื่อวนี้อยู่พอดีคับ
สำหรับตัวนี้ผมใช้ micro-controller ควบคุมครับ PIC18F4431
CCS C Compilers ครับ
แล้ว ได้ค่า U จากการคูณ Gain แต่ละ sensor แล้วค่าU จะต้องนำไปใช้ยังไงต่อครับ
เราก็สั่งออกจาก MCU ครับเช่นของผม ก็สั่ง PWM ออกไปหาชุด Drive Motor
พี่ครับพอดีผมทำโปรเจคเรื่องนี้อยู่พอดี ผมทำ plant เสร็จแล้วนะครับแต่ผมไม่รูจะเริ่มต้นคอนโทรลอะไรยังงัยอะคับ คือ ผมใช้ labview ควบคุมอะครับพี่ช่วยแนะนำหน่อยครับ
เพื่อให้เป็นไปตามเป้าหมาย ไม่ทราบว่าใช้ NI รุ่นไหนเพราะเราต้องรู้ว่ามี IO อะไรบ้าง และชุด Drive motor เป็นแบบไหนด้วยครับ เพราะสิ่งเหล่านี้จะเป็นตัวกำหนดการเขียนโปรแกรมด้วยครับ
ใช้กาด DAQ PCI6221 อะคับ ใช้บอร์ดได ของบริษิท ETT:ET-OPTO DC MOTOR DRIVER 6-24V/5A ใช้ encoder แบบ Incremental encoder สองตัวอะคับ
ในส่วนของ Hardware ผมว่าโอเคแล้ว
1.ใช้ Counter/timer ทั้งสองตัว ของ NI อ่านสัญญาณจาก encoder
2.ส่วนสัญญาณควบคุมที่สั่งออกจาก DAQ ใช้ Analog output ก็ได้โดยเอา AO นี้ไปแทน VR ของตัวปรับ speed ของ ET-OPTO DC MOTOR DRIVER 6-24V/5A
3. ส่วน Direction ใช้ Digital output
ขอบคุณมากครับพี่
พี่ใช้อะไรเป็นตัวคอนโทรลเหรอคับ PID หรือ Fuzzy คับ
ถ้าผมจะใช้พีไอดีควบคุม ผมต้องใช้พีไอดีสองตัวใช่ไหมครับ คือตัวหนึ่งควบคุมตัวแท่งแพนดูลัม อีกตัวหนึ่งควบคุมตัว Cart แต่ผมงงตรงที่ขับมอเตอร์ตัวเดียวกัน ผมจะต้องใช้อะไรเป็น setpoint เหรอคับพี่ พี่ช่วยแนะแนวทางหน่อยครับ
เพราะว่ามอเตอร์ตัวเดียวมันสามารถ Drive ระบบได้ทั้งสองส่วนเลย เนื่องจากพอมอเตอร์หมุน Cart ก็จะเคลื่อนที่ และในเวลาเดียวกัน มันจะส่งแรงไปที่ Base ของ Pendulum ด้วย ดังนั้น PID ก็จะมีแค่ตัวเดียวแล้วเขียนสมการควบคุม u ตามรูปที่.2 ด้านบนเลยครับ Setpoint ก็คือ theta_d และ xd นั้นเอง
พี่ครับ รบกวนพี่ช่วยอธิบาย การทำงานของสมการ u รูปที่ 2 ให้หน่อยนะครับ คือผมดูแล้วแต่ผมยังไม่เข้าใจครับพี่ ขอบคุณครับพี่
u คือค่าที่ป้อนเข้าชุด Drive motor (PWM) ครับ ซึ่งตามที่น้องเข้าใจคือค่าที่คำนวนจาก PID นั้นเอง
พี่ครับ ถ้าจะหาค่า k ของdcมอเตอร์ จากการทดลอง จะมีวิธีหาอย่างไรครับ
ผมไม่แน่ใจว่า k ที่หมายถึงคือ อะไร เช่น feedback gain หรือ ค่า Current constant
Km : gain of motor หน่วยเป็น rad/sec/V ครับ
Kf : gain of feedback หน่วยเป็น V/rad/sec ครับ ใช้ encoder แบบ incremental 1000 pulse ครับ
Post a Comment