PDA

Επιστροφή στο Forum : Αλγοριθμος PID για σταθμο κολλησης



herctrap
02-07-11, 12:26
http://img228.imageshack.us/img228/1526/sam2946f.th.jpg (http://img228.imageshack.us/img228/1526/sam2946f.jpg)

τελικα τυπωσα το pcb για το παραπανω

και ψαχνω εναν αλγοριθμο PID για τον ελενχο της θερμοκρασιας

μεχρι τωρα αυτο που χρησιμοποιω ειναι

error = setpointTemp - TipTemp
output = σταθερα * ( setpointTemp - TipTemp )

αρνητικο προσημο σημαινει οτι δεν δινω ρευμα στο κολλητηρι

και για τις θετικες τιμες δινω PWM στο κολλητηρι μεχρι καποιο threshold οπου απο εκει και πανω δινω το 100% του PWM

το κολλητηρι ειναι ersa 15W στα 220V και η συχνοτητα του PWM ειναι 1Hz

ακομα δοκιμασα και

output = σταθερα * ( setpointTemp - TipTemp ) * setpointTemp

αλλα με κανενα δεν ειμαι ευχαριστημενος

γενικα πως θα βρω τις σταθερες για το PID

και για το P και για το Ι και για το D

μηπως υπαρχει κανενας αλγορυθμος Autotune?

Ευχαριστω πολυ

tasosmos
02-07-11, 13:05
Κανενα απο τα 2 δεν ειναι PID, το 1ο ειναι P σκετο (αναλογικος ελεγκτης), το 2ο... μαλλον απροσδιοριστο.

Αν ψαξεις λιγο υπαρχουν ετοιμα τμηματα αλγοριθμου PID για C στο νετ και σχετικα tutorials.

herctrap
02-07-11, 13:23
ναι το ξερω

εχω τον αλγοριθμο και για το P και για το I Και για το D ετοιμο

μαλον εγραψα λαθος τιτλο
και ισως να ζητησα λαθος πραγμα στο πρωτο ποστ


πως θα βρω τους συντελεστες για το P το I και το D
ωστε να ταιριαξουν με το κολλητηρι?

spiroscfu
02-07-11, 15:50
Ηρακλή ενδιαφέρων το θέμα σου, από λίγο googleσμα βρήκα αυτά



Απλός pid controller

PID = GainP * actual error + GainI * SUM(previous errors) + GainD * (actual error - last error)

error = sp(set point) - pv(process value)


float pid (float sp, float pv)
{

err_old = err;
err = sp - pv;

// note
P_err = err;
I_err += err_old;
D_err = err - err_old;

return 0.1*P_err + 0.3*I_err + 0.02*D_err;

}



δες και εδώ για περισσότερα http://www.ecircuitcenter.com/circuits/pid1/pid1.htm (http://www.ecircuitcenter.com/circuits/pid1/pid1.htm)
γράψε αν θες τα αποτελέσματά σου με ενδιαφέρει και εμένα.