PostHeaderIcon PID CONTROLER (έλεγχος ταχύτητας σε DC κινητήρα)

Ευρετήριο Άρθρου
PID CONTROLER (έλεγχος ταχύτητας σε DC κινητήρα)
ΣΧΕΔΙΑΣΗ ΚΑΙ ΕΛΕΓΧΟΣ ΤΟΥ ΕΛΕΓΚΤΗ ΣΤΟ SIMULINK
Όλες οι Σελίδες

Ο ελεγκτής PID χοντρικά...

Έχετε ένα αμάξι που με τέρμα γκάζι πηγαίνει 200χλμ..
Σας λέει κάποιος λοιπόν ότι θέλει να πάτε με 100 ακριβώς. Λέει κάποιος άλλος ..θα πατήσω το γκάζι μέχρι την μέση και άρα θα πάει ακριβώς 100!! Σωστό.. αλλά!! Λόγω αντίστασης κτλ. θα πάτε 95. Επίσης η ταχύτητα σας θα είναι κάπως έτσι:

open loop process value

 

. Έρχεται λοιπόν και η πραγματικότητα..
Πατάτε τέρμα γκάζι και όταν φτάσατε τα 100 περίπου «κόβετε».. και πατάτε τόσο το γκάζι ώστε να έχετε ακριβώς 100χλμ.

 

closed loop process value

(παρατηρήστε και το χρόνο που χρειάστηκε..)

Ένας αναλογικός-ολοκληρωτικός-παραγωγικός ελεγκτής (ελεγκτής PID) είναι ένας γενικός μηχανισμός με ανατροφοδότηση βρόχων ελέγχου που χρησιμοποιείται ευρέως στα βιομηχανικά συστήματα ελέγχου. Ένας ελεγκτής PID προσπαθεί να διορθώσει το λάθος μεταξύ μιας μετρημένης μεταβλητής-διαδικασίας (ProcessValue) και ενός επιθυμητού σημείου λειτουργίας (setpoint) με τον υπολογισμό και έπειτα την έξοδο μιας διορθωτικής δράσης που μπορεί να ρυθμίσει τη διαδικασία αναλόγως.

Ο υπολογισμός της εξόδου του ελεγκτή PID (αλγόριθμος) περιλαμβάνει τρεις ξεχωριστούς όρους. Τον αναλογικό, ολοκληρωτικό και παραγωγικό ορό. Το αναλογικό κέρδος καθορίζει την αντίδραση στο τρέχον λάθος, το ολοκλήρωμα καθορίζει την αντίδραση βασισμένη στο άθροισμα των λαθών και η παράγωγος καθορίζει την αντίδραση βάση του ποσοστού στο οποίο το λάθος έχει αλλάξει. Το σταθμισμένο ποσό αυτών των τριών ενεργειών χρησιμοποιείται για να ρυθμίσει τη διαδικασία μέσω ενός στοιχείου ελέγχου όπως η θέση μιας βαλβίδας ελέγχου ή η παροχή ηλεκτρικού ρεύματος ενός στοιχείου θέρμανσης, κινητήρα κτλ.

Με "το συντονισμό" των τριών σταθερών στον αλγόριθμο ελεγκτών PID το PID μπορεί να παρέχει τη δράση ελέγχου που χρειάζεται για τις συγκεκριμένες απαιτήσεις της διαδικασίας. Η έξοδος του ελεγκτή μπορεί να περιγραφή από τον τρόπο της απόκρισης του ελεγκτή σε ένα λάθος, ο βαθμός στον οποίο ο ελεγκτής κάνει υπερανύψωση από το setpoint και το βαθμό των ταλαντώσεων του συστήματος. Σημειώστε ότι η χρήση του αλγορίθμου PID για τον έλεγχο δεν εγγυάται το βέλτιστο έλεγχο του συστήματος.

Μερικές εφαρμογές μπορούν να απαιτήσουν μόνο έναν ή δύο όρους για να παρέχουν τον κατάλληλο έλεγχο συστημάτων. Αυτό επιτυγχάνεται με τον καθορισμό του κέρδους των ανεπιθύμητων όρων ελέγχου σε μηδέν. Ένας ελεγκτής PID θα λέγεται ελεγκτής pi, pd, p ή i ανάλογα με την έλλειψη των αντίστοιχων όρων ελέγχου. Οι ελεγκτές pi είναι ιδιαίτερα κοινοί, δεδομένου ότι η δράση του παραγωγικού όρου είναι πολύ ευαίσθητη στο θόρυβο μέτρησης.

classic pid

ΘΕΩΡΗΤΙΚΟ ΜΕΡΟΣ

Αναλογικός - Ολοκληρωτικός - Διαφορικός Ελεγκτής ή Ελεγκτής PID

Όπως προαναφέρθηκε πρόκειται για μια βαθμίδα ελεγκτή αποτελούμενη από 3 όρους, η έξοδος της οποίας είναι το άθροισμα ενός αναλογικού, ενός ολοκληρωτικού και ενός διαφορικού όρου, με ρυθμιζόμενο κέρδος για κάθε έναν όρο.
clasic pid equation (1)
Όπου e = SP – PV (SP=SetPoint , PV=Process Value)
Εδώ επίσης θα πρέπει να αναφέρουμε, ότι για την υλοποίηση του ελεγκτή του συστήματος μας χρησιμοποιήσαμε έναν παραπλήσιο είδους ελεγκτή ο οποίος προκύπτει με απλή παραγώγιση του κλασσικού PID ελεγκτή. Τα μειονεκτήματα και τα πλεονεκτήματα του συγκεκριμένου ελεγκτή θα αναλυθούν αργότερα (με τη βοήθεια του simulink επίσης δες «Three Types of PID Equations.mht» στο συνημμένο αρχείο).

Ελεγχος PID:

CO (Controller Output) εξοδος ελεγκτή
PO (Process Variable) Μεταβλητή κατάστασης / Διαδικασίας
SP (Set Point) επιθυμητό σημείο λειτουργίας

Υπάρχουν τρεις τύποι ελεγκτών PID:

τύπου: A
τύπου: B
τύπου: C

Για τους οποίους έχουμε και τρεις ξεχωριστούς αυτονόμους τύπους:

τύπου: A clasic pid equation

τύπου: Β clasic pid without diferential error equation

τύπου: C type C pid equation

Συνιστάτε η χρήση ελεγκτών τύπου C. Οστοσω στις περισσότερες βιομηχανικές εφαρμογές χρησιμοποιούνται ελεγκτές τύπου Α ή Β

Αν παραγογισουμε την σχέση του ελεγκτή τύπου C έχουμε :

diferential pid
Ψηφιοποιώντας την παραπάνω σχέση με περίοδο δειγματοληψίας Τs λαμβάνουμε την παρακάτω σχέση την οποία μπορούμε να εφαρμόσουμε πλέον σε Η/Υ εφόσον πρόκειται για ψηφιακό έλεγχο.

digital type C pid

Όπου:
Ts: Περίοδος δειγματοληψίας (sec)
Kp: Proportional gain Σταθερά σφάλματος θέσης (καμιά μονάδα)
Ki: Integral grain Σταθερα σφαλματος ταχύτητας (1/sec)
Kd: Derivative gain Σταθερα σφαλματος επιτάχυνσης (sec)

Κατά την εφαρμογή του παραπάνω τύπου, είναι σημαντικό να περιορίζουμε την έξοδο του ελεγκτή (CO) στα μέγιστα και στα ελάχιστο όρια (wind up).
Πχ αν CO>COmax τότε CO=COmax και αν CO<COmin τότε CO=COmin

(Περισσότερα για την χρήση του κάθε όρου στο αρχείο «pidtutorial.pdf»)

1.ΕΥΡΕΣΗ ΣΥΝΑΡΤΗΣΗΣ ΜΕΤΑΦΟΡΑΣ ΤΟΥ ΚΙΝΗΤΗΡΑ:

Ο κινητήρας έχει γενική συνάρτηση μεταφοράς first order eq δηλαδή πρόκειται για ένα σύστημα πρώτης παραγώγου με χρόνο καθυστέρησης (FirstOrderPlusDeadTime-FOPDT).
Έτσι λοιπόν χρησιμοποιώντας το σύστημά μας σε ανοιχτό βρόγχο βρίσκουμε τη συνάρτηση μεταφοράς ως έξης.
Δίνουμε αρχική τιμή στον PWM 100 (0 < PWM < 256), βλέπουμε τη γωνιακή ταχύτητα του κινητήρα, δίνουμε στο PWM την τιμή 200 και χρησιμοποιώντας την ενσωματωμένη σειριακή θύρα του επεξεργαστή στέλνουμε τα δεδομένα στον Η/Υ. Στη συνέχεια κατασκευάζουμε γραφικά το σήμα και βρίσκουμε ότι K=(60-120)/(200-100)=0.6 ενώ από το σημείο του 63% βρίσκουμε και dt = 0,1 ενώ T=0,3.
Περισσότερα για τον τρόπο εύρεσης της συνάρτησης μεταφοράς FOPDT συστημάτων στο αρχείο «identification.pdf»

2.ΛΙΓΑ ΛΟΓΙΑ ΓΙΑ ΤΟ ΚΥΚΛΩΜΑ:

Για την κατασκευή του ελεγκτή χρησιμοποιήσαμε το ολοκληρωμένο T89C51AC2 το οποίο (εκτός άλλων) έχει έναν PCA ο οποίος χρησιμοποιήθηκε για την μέτρηση της γωνιακής ταχύτητας του κινητήρα (συχνότητα) καθώς και για τον έλεγχο του κινητήρα με PWM. Συνδέθηκαν επιπλέον ένα πληκτρολόγιο και μια οθόνη LCD για την αλληλεπίδραση του ελεγκτή με τον χρήστη.

 

 

kbd lcd on one port

(κάντε κλίκ για μεγένθυση)

schetch

(κάντε κλίκ για μεγένθυση)


Για τη μέτρηση της συχνότητας χρησιμοποιήθηκε ένας επαγωγικός διακόπτης και μια κατασκευή αποτελούμενη από 4 ακίδες πάνω στον άξονα του κινητήρα έτσι ώστε σε κάθε πλήρη στροφή του κινητήρα να έχουμε έξοδο 4 παλμούς .

dc motor with proximity sensor

Γι’ αυτό και η δειγματοληψία στον ελεγκτή έχει γίνει κάθε 250ms δηλαδή το ¼ sec που σημαίνει ότι για κάθε παλμό του αισθητήρα έχουμε (θεωρητικά) μια πλήρη περιστροφή. freq samplerόπου P = παλμοί.

h-bridge
Αυτό αυτόματα μας δίνει και την μέγιστη ακρίβεια του συστήματος η οποία είναι +/-1 Ηz δηλαδή +/-60 r.p.m.
Στο κύκλωμα επίσης χρησιμοποιήθηκαν οι buffer (74LS578) και οι κατάλληλες γέφυρες (ULN2803 και τρανζίστορ NPN) για τη μετατροπή από τα 12 Volt που χρησιμοποιεί ο κινητήρας και ο αισθητήρας στα 5 Volt (TTL) που χρησιμοποιούν τα ολοκληρωμένα.
Ο εκλεκτής μπορεί να οδηγήσει οποιωνδήποτε DC κινητήρα 0-50V και έως 4A.

3.ΔΟΜΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ:

Για το πρόγραμμα χρησιμοποιήθηκαν κατάλληλες ρουτίνες για τον έλεγχο της οθόνης LCD καθώς και για το γράψιμο από το πληκτρολόγιο οι οποίες όμως δεν θα αναφερθούν καθώς δεν αποτελούν βασικό αντικείμενο της άσκησης (θα συμπεριληφθεί μόνο ο κώδικας).

Στην κεντρική ρουτίνα του προγράμματος κατ΄ αρχήν ο χρήστης καλείται να επιλέξει μεταξύ ανοιχτού και κλειστού βρόγχου.

Στην περίπτωση του ανοιχτού βρόγχου ο χρήστης μπορεί να επηρεάσει μόνο τον κύκλο εργασίας ( duty cycle) δίνοντας τιμές στο PWM από 0-256 που αποτελεί ποσοστό του D.C. από 0% έως 100% αντίστοιχα και βλέποντας απλά στην οθόνη
(και στον Η/Υ μέσω σειριακής θύρας ) την πραγματική ταχύτητα του κινητήρα.

Στην περίπτωση του κλειστού βρόγχου ο χρήστης μπορεί να ρυθμίζει τις μεταβλητές Kp, Ki , Kd για την βέλτιστη λειτουργία του κινητήρα-συστήματος ενώ μπορεί οποιαδήποτε στιγμή να βλέπει το σφάλμα, τους 3 όρους του PID (P_term, I_term,
D_term), την τιμή του PWM καθώς και να ρυθμίζουμε τις στροφές του κινητήρα δίνοντας τις επιθυμητές.

Ο ελεγκτής δέχεται σαν είσοδο από τον χρήστη (SP) τις επιθυμητές στροφές λειτουργίας.
Τις μετατρέπει σε γωνιακή ταχύτητα (επιθυμητή συχνότητα).
Μετράει την γωνιακή ταχύτητα του κινητήρα (πραγματική συχνότητα)
Στη συνέχεια υπολογίζει το σφάλμα καθώς και την έξοδο του ελεγκτή (CO) χρησιμοποιώντας τον τύπο που αναφέρθηκε παραπάνω (2) και τον στέλνει στο PWM (D/A) για την οδήγηση του κινητήρα.

Στο παρακάτω μπλοκ διάγραμμα φαίνεται και ο τρόπος λειτουργίας του ελεγκτή που υλοποιήσαμε:

process

 


ΣΧΕΔΙΑΣΗ ΚΑΙ ΕΛΕΓΧΟΣ ΤΟΥ ΕΛΕΓΚΤΗ ΣΤΟ SIMULINK

Υλοποίηση του συστήματος με έναν κλασσικό ελεγκτή PID
Αφού δημιουργήσαμε τον ελεγκτή στο Simulink δίνοντας διάφορες τιμές στα Kp, Ki, Kd με σκοπό την βέλτιστη απόκριση του συστήματος για βηματική είσοδο SP=100(χωρίς θόρυβο) πήραμε τα παρακάτω αποτελέσματα:

classic pid simulink

(κάντε κλίκ για μεγένθυση)

Ενώ για τον ελεγκτή που πραγματοποιήσαμε πήραμε τα εξής αποτελέσματα:

differential pid simulink

(κάντε κλίκ για μεγένθυση)

Παρατηρούμε δηλαδή ότι ο κλασσικός PID είναι ελαφρώς πιο γρήγορος (βλέπε το παράθυρο PV) αλλά σε ένα σύστημα το οποίο περιέχει θόρυβο τα αποτελέσματα είναι τελείως διαφορετικά.
Διότι παρόλο που η έξοδος του κινητήρα παραμένει σχεδόν η ίδια η απόκριση του ελεγκτή παρουσιάζει υπερβολική κυμάτωση.

compare pid's

(κάντε κλίκ για μεγένθυση)

(το πρώτο ζευγάρι κυματομορφών είναι του κλασσικού PID ενώ το δεύτερο του ελεγκτή που υλοποιήσαμε)

Επίσης εδώ θα πρέπει να αναφέρουμε ότι ακόμα και προγραμματιστικά η υλοποίηση του δεύτερου ελεγκτή είναι πιο εύκολη–καλύτερη καθώς δεν χρησιμοποιεί τον ολοκληρωτικό όρο (ελαφρός γρηγορότερη διεργασία), επίσης πρέπει να παρατηρήσουμε ότι όταν υλοποιήσαμε τον κλασικό ελεγκτή το σύστημα μας ήταν ασταθές, ενώ μόλις αλλάξαμε ελαφρώς τον κώδικα ώστε να γίνει τύπου C το σύστημα δούλεψε αμέσως. Ο λόγος γι΄άυτο είναι ο πολύ αργός χρόνος δειγματοληψίας σε σχέση με την διεργασία.. σύμφωνα με το κριτήριο Shannon η δειγματοληψία έπρεπε να γίνεται τουλάχιστον κάθε Τ/2=0,3/2=150 mSec. Παρόλα αυτά (που έχουμε μεγαλύτερη περίοδο δειγματοληψίας δηλαδή 250mSec και δεν ικανοποιείτε το κριτήριο Shannon) βλέπουμε πως το σύστημα μας λειτουργεί κανονικά επηρεάζοντας όμως και κάνοντας το σύστημα πιο αργό .

(Στο αρχείο my_PID.rar(link) περιέχονται όλα τα αρχεία με τον κώδικα που χρησιμοποιήθηκε καθώς και τα αρχεία με τα μοντέλα των ελεγκτών που χρησιμοποιηθήκαν για το simulink.)

Password για το rar: 89C51AC2

 

Παρακαλώ κάντε πρώτα login για να μπορείτε να κανετε σχολια.