Ανάπτυξη Μικρής Αυτόνομης Ρομποτικής Πλατφόρμας Οδηγούμενης μέσω Ασύρματης Σειριακής ιασύνδεσης ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ



Σχετικά έγγραφα
Σπύρος Καζαρλής, Χειμώνας

WDT και Power Up timer

Ενότητα 8.1. Σειριακή και παράλληλη μετάδοση δεδομένων

ΠΕΡΙΦΕΡΕΙΑΚΑ ΤΟΥ PIC16F887

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα

Είναι το πρωτόκολλο RS232 που χρησιμοποιείται στις σειριακές θύρες COM με τη διαφορά ότι εκτελείται σε επίπεδο τάσεων TTL. 2

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

ΠΑΡΟΥΣΙΑΣΗ ΤΟΥ ΕΡΓΑΣΤΗΡΙΑΚΟΥ ΜΑΘΗΜΑΤΟΣ «ΣΥΣΤΗΜΑΤΑ ΨΗΦΙΑΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ» ή ΠΡΟΓΡΑΜΜΑΤΙΖΟΝΤΑΣ ΤΟΝ ΜΙΚΡΟΕΛΕΓΚΤΉ PIC16F877 ΤΗΣ MICROCHIP TECHNOLOGY INC

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

Μάθημα 3.8 Τεχνικές μεταφοράς δεδομένων Λειτουργία τακτικής σάρωσης (Polling) Λειτουργία Διακοπών DMA (Direct Memory Access)

Μάθημα 8: Επικοινωνία Συσκευών με τον Επεξεργαστή

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

ΚΕΦΑΛΑΙΟ 7 ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΜΕΤΑΔΟΣΗ ΨΗΦΙΑΚΩΝ ΔΕΔΟΜΕΝΩΝ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1. Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ 1

1. Ηλεκτρικοί κινητήρες- σερβοκινητήρας 2. Ελεγκτές. ΜΠΔ, 9 Ο Εξάμηνο Σάββας Πιπερίδης

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 3 Μέτρηση Θερμοκρασίας Σύστημα Ελέγχου Θερμοκρασίας. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Σύγχρονη και Ασύγχρονη Σειριακή Επικοινωνία

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

ΑΝΑLOG TO DIGITAL CONVERTER (ADC)

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

Συλλογή μεταφορά και έλεγχος Δεδομένων. 1.4 Απλά και σύνθετα συστήματα αυτοματισμού.

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

ΒΑΣΙΚΕΣ ΠΛΗΡΟΦΟΡΙΕΣ. Τίτλος Μαθήματος. Διαλέξεις - Θεωρητική Διδασκαλία, Εποπτευόμενο Εργαστήριο Επίδειξη, Μελέτες (Projects)

Το ολοκληρωμένο κύκλωμα μιας ΚΜΕ. «Φέτα» ημιαγωγών (wafer) από τη διαδικασία παραγωγής ΚΜΕ

ΔΙΑΚΟΠΕΣ PΙC16F887(INTERRUPTS) Όταν σηματοδοτηθεί μια διακοπή στον PIC16F887, ο έλεγχος του προγράμματος μεταφέρεται στο τμήμα κώδικα που βρίσκεται

Μάθημα 5: Χαρακτηριστικά της Κ.Μ.Ε.

K24 Ψηφιακά Ηλεκτρονικά 9: Flip-Flops

Μέρος Β - Δίκτυα. Ασκήσεις I. Ποιος ο ρόλος του πομπού και του δέκτη στο μοντέλο επικοινωνίας που α- πεικονίζεται στο σχήμα που ακολουθεί; Μ Δεδομένα

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΑΣΚΗΣΗ 9 ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ (COUNTERS)

Ανάκτηση θερμοκρασιακού πεδίου σε περιστρεφόμενο (εν κινήσει)

Ενότητα 1η. Μοντέέλο επικοινωνιώών δεδοµμέένων - συνέέχεια

Σειριακό Τερματικό Serial Terminal (Dumb Terminal)

LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW.

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΑΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2

Βασικές τεχνικές εισόδου/εξόδου δεδοµένων

Μάθημα 4.7 Θύρες περιφερειακών

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

ΚΙΤ ΘΕΡΜΟΣΤΑΤΗ ΧΩΡΟΥ ΚΑΙ ΠΙΝΑΚΑ ΕΛΕΓΧΟΥ ΛΥΧΝΙΩΝ ΜΟΝΑΔΑ ΧΩΡΟΥ ΜΕ ΕΛΕΓΧΟ ΘΕΡΜΟΚΡΑΣΙΑΣ

Ακολουθιακό κύκλωμα Η έξοδος του κυκλώματος εξαρτάται από τις τιμές εισόδου ΚΑΙ από την προηγούμενη κατάσταση του κυκλώματος

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4

Ασύρματος αυτοματισμός σε συρόμενη καγκελόπορτα που ελέγχεται από PLC.

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

1. Σέρβο (R/C Servo) 2. Βηματικοί κινητήρες 3. Χαρακτηριστικά κινητήρων. ΜΠΔ, 9 Ο Εξάμηνο Σάββας Πιπερίδης

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8. Μετρώντας Επιτάχυνση με το Accelerόμετρο (ADXL 335) Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Εφαρμογές Σειριακής Επικοινωνίας

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

Θεωρητικές Ερωτήσεις

Ακολουθιακό κύκλωμα Η έξοδος του κυκλώματος εξαρτάται από τις τιμές εισόδου ΚΑΙ από την προηγούμενη κατάσταση του κυκλώματος

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΔΙΔΑΣΚΑΛΙΑ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕ ΧΡΗΣΗ ΤΟΥ ΠΑΚΕΤΟΥ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS NXT

6.1 Καταχωρητές. Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f.

ΕΝΟΤΗΤΑ 7: ΑΙΣΘΗΤΗΡΕΣ ΥΠΕΡΥΘΡΩΝ

Κεφάλαιο 3 Πολυπλεξία

Φουκαράκη Χρυσούλα - ΓΕΛ Γαζίου

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2012

ΑΣΚΗΣΗ 8 Tutorial by TeSLa Συνδεσμολογία κυκλώματος Διαδικασία Προγραμματισμού

Εφαρμογές μικροελεγκτών

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΣΥΓΧΡΟΝΟΙ ΜΕΤΡΗΤΕΣ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

Σημειώσεις κεφαλαίου 16 Αρχές επικοινωνίας με ήχο και εικόνα

ΕΡΓΑΣΤΗΡΙΑΚΗ ΕΦΑΡΜΟΓΗ 1 ΤO ΡΟΜΠΟΤ INTELLITEK ER-2u

Κεφάλαιο 3 ο Ακολουθιακά Κυκλώματα με ολοκληρωμένα ΤΤL

Σχεδιασμός και Υλοποίηση οχήματος ελεγχόμενου μέσω Bluetooth

Αρχιτεκτονική υπολογιστών

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ I. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή

ΕΝΟΤΗΤΑ 12 ΣΕΙΡΙΑΚΗ ΔΙΕΠΑΦΗ

Εκτέλεση προγράμματος

ΚΕΦΑΛΑΙ0 V ΣΧΕΔΙΑΣΗ ΣΥΣΤΗΜΑΤΟΣ ΕΙΣΟΔΟΥ-ΕΞΟΔΟΥ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ

Ανατομία ενός πομποδέκτη σταθμού βάσης HSDPA (Node-B)

Κεφάλαιο 4 ο. Ο Προσωπικός Υπολογιστής

ΣΥΝΟΨΗ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ

12. Διακοπές Interrupts (IRQ)

Ιατρικά Ηλεκτρονικά. Χρήσιμοι Σύνδεσμοι. ΙΑΤΡΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ - ΔΙΑΛΕΞΗ 2η. Σημειώσεις μαθήματος: E mail:

Transcript:

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ Ι ΡΥΜΑ ΣΕΡΡΩΝ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΕΠΙΚΟΙΝΩΝΙΩΝ Ανάπτυξη Μικρής Αυτόνομης Ρομποτικής Πλατφόρμας Οδηγούμενης μέσω Ασύρματης Σειριακής ιασύνδεσης ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Απόστολος Μπόλλας (1410) Επιβλέπων: Ιωάννης Καλόμοιρος, Επίκουρος Καθηγητής ΣΕΡΡΕΣ, ΙΑΝΟΥΑΡΙΟΣ 2011

Υπεύθυνη ήλωση : Βεβαιώνω ότι είμαι συγγραφέας αυτής της πτυχιακής εργασίας και ότι κάθε βοήθεια την οποία είχα για την προετοιμασία της, είναι πλήρως αναγνωρισμένη και αναφέρεται στην πτυχιακή εργασία. Επίσης έχω αναφέρει τις όποιες πηγές από τις οποίες έκανα χρήση δεδομένων, ιδεών ή λέξεων, είτε αυτές αναφέρονται ακριβώς είτε παραφρασμένες. Επίσης βεβαιώνω ότι αυτή η πτυχιακή εργασία προετοιμάστηκε από εμένα προσωπικά ειδικά για τις απαιτήσεις του προγράμματος σπουδών του Τμήματος Πληροφορικής & Επικοινωνιών του Τ.Ε.Ι. Σερρών.

ΠΕΡΙΛΗΨΗ Στην πτυχιακή αυτή εργασία σχεδιάζουμε και αναπτύσσουμε ένα μικρό αυτόνομο ρομποτικό όχημα, το οποίο κινείται στο επίπεδο με τη βοήθεια ενός ηλεκτρικού κινητήρα. Ο ηλεκτρικός κινητήρας τροφοδοτείται μέσω ελεγκτή ταχύτητας ο οποίος καθορίζει το εύρος της τάσης. Το όχημα έχει τη δυνατότητα να στρίβει με τη βοήθεια ενός σερβοκινητήρα, ο οποίος ελέγχει τη στροφή των μπροστινών τροχών. Οι δύο κινητήρες ελέγχονται από μικροελεγκτή, με παραγωγή παλμών διαμορφωμένων κατά PWM. Η ταχύτητα του οχήματος αυξομειώνεται, ανάλογα με το εύρος των παλμών. Το όχημα δέχεται δεδομένα οδήγησης από ηλεκτρονικό υπολογιστή, μέσω ασύρματης σειριακής διασύνδεσης. Με δεδομένη την αρχική θέση και τον προσανατολισμό του οχήματος, κατάλληλη εφαρμογή μετατρέπει την επιθυμητή μετατόπιση και στροφή του οχήματος σε δεδομένα οδήγησης και τα αποστέλλει προς το όχημα, μέσω της σειριακής θύρας. Η ασύρματη εκπομπή και λήψη των δεδομένων γίνεται με κατάλληλο RF transceiver.

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... - 5 - ΚΕΦΑΛΑΙΟ 1... - 7 - ΚΕΦΑΛΑΙΟ 2... - 12-2.1 ΕΛΕΓΧΟΣ ΟΧΗΜΑΤΟΣ... - 12-2.1.1 ΣΕΡΒΟΚΙΝΗΤΗΡΑΣ... - 12-2.1.2 ΕΛΕΓΚΤΗΣ ΤΑΧΥΤΗΤΑΣ (ESC)... - 14-2.2 ΣΕΙΡΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ... - 16-2.2.1 ΜΟΝΑ Α UART... - 17-2.2.2 ΠΡΟΤΥΠΟ RS-232... - 18-2.2.3 ΚΥΚΛΩΜΑ ΜΑΧ232... - 19-2.2.4 ΜΟΝΑ Α APC220... - 20-2.3 ΜΙΚΡΟΕΛΕΓΚΤΗΣ PIC16F877... - 21-2.3.1 ΘΥΡΑ PORTB... - 23-2.3.2 ΧΡΟΝΙΣΤΗΣ TIMER0... - 23-2.3.3 ΧΡΟΝΙΣΤΗΣ TIMER1... - 26-2.3.4 ΧΡΟΝΙΣΤΗΣ TIMER2... - 29-2.3.5 ΥΠΟΜΟΝΑ Α USART... - 32-2.3.6 ΣΗΜΑΤΑ ΙΑΚΟΠΗΣ (INTERRUPTS)... - 35 - ΚΕΦΑΛΑΙΟ 3... - 39-3.1 ΚΑΤΑΣΚΕΥΗ ΚΥΚΛΩΜΑΤΩΝ... - 39-3.2 ΠΡΟΓΡΑΜΜΑ ΜΙΚΡΟΕΛΕΓΚΤΗ... - 42-3.3 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΜΟΝΑ ΩΝ... - 45-3.4 ΠΡΟΣΟΜΟΙΩΣΗ ΠΡΟΓΡΑΜΜΑΤΟΣ... - 47-3.5 ΕΠΕΞΗΓΗΣΗ ΚΩ ΙΚΑ... - 49-3.6 ΣΥΜΠΕΡΙΦΟΡΑ ΕΛΕΓΚΤΗ... - 53 - ΚΕΦΑΛΑΙΟ 4... - 61-4.1 ΜΕΤΡΗΣΕΙΣ... - 61-4.2 ΠΡΟΓΡΑΜΜΑ ΥΠΟΛΟΓΙΣΤΗ... - 63-4.3 ΥΠΟΛΟΓΙΣΜΟΣ ΙΑ ΡΟΜΗΣ... - 66-4.4 ΕΠΕΞΗΓΗΣΗ ΚΩ ΙΚΑ... - 70-4.5 ΣΥΜΠΕΡΙΦΟΡΑ ΕΦΑΡΜΟΓΗΣ... - 76 - ΚΕΦΑΛΑΙΟ 5... - 83 - ΚΕΦΑΛΑΙΟ 6... - 89 - ΒΙΒΛΙΟΓΡΑΦΙΑ... - 91 - ΠΑΡΑΡΤΗΜΑ A... - 93 - ΠΑΡΑΡΤΗΜΑ Β... - 94 - ΠΑΡΑΡΤΗΜΑ Γ... - 98 - ΠΑΡΑΡΤΗΜΑ... - 102 -

ΕΙΣΑΓΩΓΗ Η πτυχιακή αυτή εργασία εκπονήθηκε στο Tμήμα Πληροφορικής και Επικοινωνιών του ΤΕΙ Σερρών, στον τομέα Αρχιτεκτονικής Υπολογιστών και Βιομηχανικών Εφαρμογών. Σκοπός της εργασίας είναι ο έλεγχος ενός οχήματος από τον υπολογιστή. Σε κατάλληλα διαμορφωμένο τηλεκατευθυνόμενο μοντέλο αυτοκινήτου (E-Savage), που χρησιμοποιήθηκε για τον σκοπό αυτό, τοποθετήθηκε κύκλωμα με τον μικροελεγκτή PIC16F877, ο οποίος στέλνει παλμούς PWM στο σερβοκινητήρα και στον ελεγκτή ταχύτητας. Η παραγωγή των παλμών έγινε με τη βοήθεια του Timer0 και του Timer1. Ο κώδικας παραγωγής των παλμών γράφτηκε σε γλώσσα C για τον compiler HI-TECH. Ένα σχετικό υπόδειγμα υπάρχει στην αναφορά [1]. Το κύκλωμα του μικροελεγκτή επικοινωνεί ασύρματα με έναν υπολογιστή, με τη βοήθεια κατάλληλου transceiver, που συνδέεται στη σειριακή θύρα (COM Port). Η εφαρμογή του υπολογιστή γράφτηκε σε Visual C++ και χρησιμοποιήθηκαν οι βιβλιοθήκες MFC. Για την κατασκευή της εφαρμογής χρησιμοποιήθηκαν τρία παραδείγματα κώδικα. Το πρώτο [2] αφορά τον έλεγχο της θύρας COM, το δεύτερο [3] την προβολή των γραφικών στην οθόνη του υπολογιστή, και το τρίτο [4] τη δημιουργία ενός νήματος κώδικα. Η εργασία αυτή αποτελείται από έξι κεφάλαια: Στο πρώτο κεφάλαιο της εργασίας γίνεται μια μικρή εισαγωγή στα ρομποτικά οχήματα. Αναφέρεται η χρησιμότητα τους, οι δυνατότητες τους και παρουσιάζονται μερικά παραδείγματα γνωστών οχημάτων που υπάρχουν σήμερα. Στο δεύτερο κεφάλαιο παρουσιάζονται οι σερβοκινητήρες, ο ελεγκτής ταχύτητας, οι μονάδες ασύρματης σειριακής διασύνδεσης και άλλα στοιχεία απαραίτητα για τον έλεγχο του οχήματος και την επικοινωνία με τον υπολογιστή. Αναφέρεται η χρησιμότητα τους, ο τρόπος σύνδεσης και λειτουργίας τους και τα ιδιαίτερα χαρακτηριστικά τους. Επίσης, παρουσιάζονται αναλυτικά τα χαρακτηριστικά και οι υπομονάδες του μικροελεγκτή PIC16F877. Στο τρίτο κεφάλαιο αναλύεται ο σχεδιασμός του συστήματος ελέγχου του οχήματος. Παρουσιάζεται η συνδεσμολογία των κυκλωμάτων, αναφέρεται - 5 -

η λειτουργία του προγράμματος που τοποθετήθηκε στον μικροελεγκτή και ο προγραμματισμός των υπομονάδων του, επεξηγείται ο κώδικάς του και παρουσιάζεται η συμπεριφορά του ελεγκτή ταχύτητας σε διάφορες τιμές του σήματος PWM. Το τέταρτο κεφάλαιο ασχολείται με την εφαρμογή σε Visual C++ που γράφτηκε για τον υπολογιστή και κατευθύνει το όχημα. Παρουσιάζεται η μαθηματική ανάλυση για τον υπολογισμό της διαδρομής του οχήματος από αρχικό σε τελικό σημείο και επεξηγείται ο κώδικας της εφαρμογής, που παράγει τα σήματα οδήγησης με βάση την υπολογιζόμενη διαδρομή. Στο πέμπτο κεφάλαιο εμφανίζονται τα αποτελέσματα των δοκιμών που έγιναν για διαφορετικές περιπτώσεις κίνησης. Η εργασία ολοκληρώνεται με τα συμπεράσματα (κεφάλαιο 6). Στο τέλος της εργασίας υπάρχουν τέσσερα Παραρτήματα. Στο Παράρτημα A παρουσιάζεται η διαδικασία προγραμματισμού του μικροελεγκτή, το Παράρτημα Β περιλαμβάνει τον κώδικα του προγράμματος του μικροελεγκτή, το Παράρτημα Γ αναφέρει την διαδικασία δημιουργίας του project για την κατασκευή της εφαρμογής του υπολογιστή και στο Παράρτημα παρουσιάζεται ο κώδικας της εφαρμογής του υπολογιστή. Τέλος, θέλω να ευχαριστήσω τον κ. Ιωάννη Καλόμοιρο, Επίκουρο Καθηγητή του ΤΕΙ Σερρών, επιβλέποντα της πτυχιακής μου εργασίας, για την υπόδειξη του θέματος και για την βοήθεια που μου έδωσε κατά την διάρκεια της συνεργασίας μας. Απόστολος Μπόλλας Σέρρες, Ιανουάριος 2011-6 -

ΚΕΦΑΛΑΙΟ 1 Εισαγωγή στα Αυτόνομα Ρομποτικά Οχήματα Ο τομέας της ρομποτικής περιλαμβάνει ένα μεγάλο φάσμα τεχνολογιών στις οποίες η υπολογιστική ευφυΐα είναι ενσωματωμένη σε μηχανές, δημιουργώντας συστήματα με μεγάλες δυνατότητες. Αυτά τα ρομποτικά συστήματα μπορούν να εκτελούν εργασίες που είναι αδύνατο να εκτελεστούν από συμβατικές μηχανές, ή ακόμα και από ανθρώπους. Η ικανότητα μιας μηχανής να κινείται από μόνη της, δηλαδή αυτόνομα, είναι μια δυνατότητα που ανοίγει ένα πολύ μεγάλο φάσμα εφαρμογών οι οποίες είναι συνδεδεμένες με τα ρομποτικά συστήματα. Εικόνα 1.1: Mars Rover Τα ρομποτικά οχήματα είναι μηχανές που κινούνται αυτόνομα στο έ- δαφος, στον αέρα, στο νερό ή στο διάστημα. Αυτά τα οχήματα είναι μη επανδρωμένα. Σε γενικές γραμμές κινούνται από μόνα τους, με δική τους ενέργεια, με ενσωματωμένους αισθητήρες και υπολογιστικούς πόρους για να ελέγχουν την κίνησή τους. Ωστόσο, αυτά τα μη επανδρωμένα ρομποτικά οχήματα συνήθως λειτουργούν κάτω από ανθρώπινη επίβλεψη. Η επίβλεψη μπορεί να πάρει διάφορες μορφές ανάλογα με το περιβάλλον και την εφαρμογή. Πολλές φορές χρησιμοποιείται ο εποπτικός έλεγχος για υψηλού επιπέδου επίβλεψη και καταγραφή της κίνησης του οχήματος. Σε άλλες περιπτώσεις, παρέχεται - 7 -

μια διεπαφή για πιο συχνή παρέμβαση από τον χρήστη δημιουργώντας ένα όχημα απομακρυσμένης λειτουργίας (ROV). Η αυτονομία υψηλότερου επιπέδου είναι σημαντική για τις νέες τεχνολογίες, και έτσι η λειτουργία ROV βαθμιαία αντικαταστείται από τον εποπτικό έλεγχο. Στην πρώτη κατηγορία εφαρμογών ανήκουν τα ρομποτικά οχήματα που μπορούν να βρεθούν σε μέρη όπου οι άνθρωποι δεν μπορούν ή είναι ε- πικίνδυνο να πάνε. Η επιφάνεια του Άρη, εκτός του ότι απέχει ένα χρόνο, δεν έχει αέρα και νερό ή άλλους πόρους για να μπορέσει να επιβιώσει ο άνθρωπος. Η ρομποτική εξερεύνηση είναι ένα σημαντικό βήμα που παρέχει πολύ μεγάλα επιστημονικά και τεχνολογικά οφέλη εμπλουτίζοντας τις γνώσεις μας για τους άλλους πλανήτες. Το Mars Rover (εικόνα 1.1) της NASA είναι ένα ρομποτικό όχημα που διαθέτει ένα απομακρυσμένο επιστημονικό εργαστήριο για την εξερεύνηση της επιφάνειας του Άρη. Το Mars Rover χρησιμοποιεί ε- ποπτικό έλεγχο από τη γη και είναι ικανό για αυτόνομη λειτουργία τμημάτων της κίνησής του και συγκεκριμένων επιστημονικών ενεργειών. Ένα ακόμα παράδειγμα αφιλόξενου και επικίνδυνου περιβάλλοντος όπου τα ρομποτικά οχήματα είναι βασικά εργαλεία για την εργασία και την ε- ξερεύνηση είναι ο υποθαλάσσιος κόσμος. Οι άνθρωποι μπορούν να καταδυθούν σε εκατοντάδες μέτρα, αλλά η πίεση, ο φωτισμός, τα ρεύματα και άλλοι παράγοντες περιορίζουν αυτές τις ανθρώπινες εξερευνήσεις στα μεγάλα βάθη των ωκεανών της γης. Ωκεανογράφοι έχουν αναπτύξει μια μεγάλη ποικιλία από εξελιγμένες τεχνολογίες για την ανίχνευση, την χαρτογράφηση και την Εικόνα 1.2: ASTER, αυτόνομο υποβρύχιο όχημα - 8 -

Εικόνα 1.3: Semi Autonomous Mine Detection System (SAMS) παρακολούθηση των ωκεανών σε πολλές κλίμακες, από μικρούς βιολογικούς οργανισμούς μέχρι τα μεγάλα ωκεάνια ρεύματα. Τα ρομποτικά οχήματα, είναι πολύ σημαντικό μέρος αυτών των τεχνολογιών και παρέχουν πληροφορίες που δεν μπορούν να ληφθούν με άλλον τρόπο. Το ASTER (εικόνα 1.2) του Γαλλικού εθνικού ινστιτούτου IFREMER είναι ένα αυτόνομο υποθαλάσσιο ό- χημα. Κατασκευάστηκε για να χρησιμοποιηθεί σε παράκτιες έρευνες μέχρι και 3000 μέτρα βάθος και μπορεί να συμπεριλάβει πολλά όργανα για φυσικό, χημικό και βιολογικό εντοπισμό και παρακολούθηση. Επιπλέον υπάρχουν πολλές εφαρμογές όπου η ανθρώπινη παρουσία εμπεριέχει κινδύνους. Πυρηνικά και βιολογικά μολυσμένες περιοχές συχνά πρέπει να εξερευνηθούν και να χαρτογραφηθούν για να καθοριστεί το είδος και η έκταση της μόλυνσης. Σε στρατιωτικές επιχειρήσεις χρησιμοποιούνται πολλές διαφορετικές αυτόνομες και τηλεχειριζόμενες τεχνολογίες για οχήματα του εδάφους, της θάλασσας και του αέρα. Το SAMS (εικόνα 1.3) που αναπτύχθηκε από τον στρατό των ΗΠΑ είναι ένα ημιαυτόνομο σύστημα για τον εντοπισμό ναρκών. Το όχημα αυτό διαθέτει αισθητήρα για τον εντοπισμό των ναρκών, σύστημα GPS και πυξίδα και μπορεί να καλύψει αυτόματα όλη την περιοχή ενός ναρκοπεδίου. - 9 -

Εικόνα 1.4: Φορτηγό εξόρυξης και ανάσυρσης Σε μια δεύτερη κατηγορία εφαρμογών ανήκουν τα ρομποτικά οχήματα που χρησιμοποιούνται σε εργασίες όπου η μηχανική κινητικότητα μπορεί να αντικαταστήσει αποτελεσματικά την ανθρώπινη παρουσία, όπως για παράδειγμα σε μεγάλες γεωργικές εκτάσεις για την καλλιέργεια, την σπορά, το πότισμα και τον θερισμό. Οι δυνατότητες ενός αυτόνομου οχήματος να εντοπίζει την θέση του χρησιμοποιώντας το GPS και να καταλαβαίνει την κατάσταση του εδάφους και των φυτών εξυπηρετούν σε εφαρμογές που αφορούν την γεωργία και την γεωλογία. Στην εικόνα 1.4 φαίνεται ένα μεγάλο αυτόνομο ό- χημα εξόρυξης και ανάσυρσης που αναπτύχθηκε στην Αυστραλία από την ACFR. Σε τομείς περιβαλλοντικής παρακολούθησης τα ρομποτικά οχήματα κινούνται μέσω του αέρα, του νερού ή του εδάφους για να παρατηρούν την παρουσία μολύνσεων και να εντοπίζουν τις μορφές και τις πηγές των ρύπων. Σε μεγάλες βιομηχανικές εγκαταστάσεις, η κινητικότητα είναι απαραίτητη για την μεταφορά στοιχείων και μονάδων κατά τη διαδικασία κατασκευής. Για το λόγο αυτό χρησιμοποιούνται διάφορα ρομποτικά οχήματα. Μια τρίτη κατηγορία εφαρμογών στις οποίες χρησιμοποιούνται τα ρομποτικά οχήματα είναι η προσωπική βοήθεια, η θεραπεία και η διασκέδαση των ανθρώπων. Μια ρομποτική αναπηρική καρέκλα μπορεί να προσφέρει σε ανθρώπους με κινητικά προβλήματα την δυνατότητα να μετακινούνται. Ένα τέτοιο παράδειγμα είναι το IBOT (εικόνα 1.5) της εταιρίας DEKA. - 10 -

Εικόνα 1.5: IBOT, προηγμένη αναπηρική καρέκλα Άλλα παραδείγματα προσωπικής βοήθειας περιλαμβάνουν οχήματα που αναλαμβάνουν την φροντίδα ηλικιωμένων και τις οικιακές εργασίες. Πολλές καθημερινές δουλειές του σπιτιού μπορούν να γίνουν με την βοήθεια κινητών ρομπότ, όπως ηλεκτρικές σκούπες, χορτοκοπτικές μηχανές με αισθητήρες και συστήματα πλοήγησης. Επίσης, εξελιγμένα συστήματα ψυχαγωγίας χρησιμοποιούν ρομποτικά οχήματα. - 11 -

ΚΕΦΑΛΑΙΟ 2 Μονάδες Ελέγχου και Επικοινωνίας του Ρομπότ Στο κεφάλαιο αυτό παρουσιάζονται αναλυτικά όλα τα εξαρτήματα και τα ιδιαίτερα χαρακτηριστικά τους, που χρησιμοποιήθηκαν στην εργασία αυτή. 2.1 ΕΛΕΓΧΟΣ ΟΧΗΜΑΤΟΣ Τα βασικά εξαρτήματα που επιτρέπουν σε ένα όχημα να κινηθεί είναι οι κινητήρες. Οι σερβοκινητήρες βοηθάνε στην αλλαγή της πορείας. Οι απλοί κινητήρες επιτρέπουν στο όχημα να μετακινηθεί. Ο έλεγχος τον κινητήρων αυτών επιτυγχάνεται με τη βοήθεια του ελεγκτή ταχύτητας. 2.1.1 ΣΕΡΒΟΚΙΝΗΤΗΡΑΣ Ο σερβοκινητήρας (εικόνα 2.1) είναι μια μικρή συσκευή με έναν εξωτερικό άξονα. Όταν σταλεί στον σερβοκινητήρα ένα κωδικοποιημένο σήμα ο ά- ξονας αυτός τοποθετείται σε συγκεκριμένες γωνιακές θέσεις. Όσο υπάρχει αυτό το σήμα στη γραμμή εισόδου, ο σερβοκινητήρας θα διατηρεί τον άξονα του σε μια συγκεκριμένη θέση. Όταν το κωδικοποιημένο σήμα αλλάξει, αλλάζει και η γωνιακή θέση του άξονα. Σε πρακτικές εφαρμογές, σερβοκινητήρες υπάρχουν στα τηλεκατευθυνόμενα μοντέλα για να δώσουν κίνηση σε διάφορα μηχανικά συστήματα όπως το τιμόνι στο αυτοκίνητο, το πηδάλιο στο σκάφος, ή τις επιφάνειες ελέγχου Εικόνα 2.1: Σερβοκινητήρας - 12 -

στο αεροπλάνο. Επειδή είναι οικονομικοί, αξιόπιστοι και ελέγχονται εύκολα με μικροεπεξεργαστές, χρησιμοποιούνται συχνά και σε ρομποτικές εφαρμογές μικρής κλίμακας όπως η κίνηση ρομποτικού βραχίονα. Τα εσωτερικά εξαρτήματα ενός σερβοκινητήρα (εικόνα 2.2) είναι το κύκλωμα ελέγχου, ο DC κινητήρας και ένα σύστημα από γρανάζια. Στο κύκλωμα ελέγχου υπάρχουν τρία καλώδια για την σύνδεση με το εξωτερικό κύκλωμα. Το κόκκινο καλώδιο συνδέεται στην τροφοδοσία (+5V), το μαύρο στην γείωση και το άσπρο είναι το καλώδιο ελέγχου το οποίο δέχεται το κωδικοποιημένο σήμα. Το κύκλωμα ελέγχου έχει ενσωματωμένο ένα ποτενσιόμετρο που συνδέεται μηχανικά με τον εξωτερικό άξονα. Το ποτενσιόμετρο αυτό επιτρέπει στο κύκλωμα ελέγχου να παρακολουθεί την τρέχουσα γωνιακή θέση στην ο- ποία βρίσκεται ο άξονας. Αν η θέση του άξονα είναι σωστή τότε ο DC κινητήρας σταματά να λειτουργεί. Αν το κύκλωμα διαπιστώσει ότι η θέση του άξονα δεν είναι σωστή τότε θα περιστρέψει τον άξονα στην σωστή κατεύθυνση μέχρις ότου ευθυγραμμιστεί με την επιθυμητή γωνία. Το μέγεθος της τάσης που εφαρμόζεται στον DC κινητήρα είναι ανάλογο με την απόσταση που πρέπει να διανύσει. Έτσι, αν ο άξονας πρέπει να περιστραφεί πολύ, ο DC κινητήρας θα λειτουργήσει σε μεγάλη ταχύτητα. Αν πρέπει να περιστραφεί λίγο, ο DC κινητήρας θα λειτουργήσει σε μικρότερη ταχύτητα. Η διαδικασία αυτή ονομάζεται αναλογικός έλεγχος. Εικόνα 2.2: Το εσωτερικό ενός σερβοκινητήρα - 13 -

Εικόνα 2.3: Η γωνιακή θέση του άξονα του σερβοκινητήρα Οι σερβοκινητήρες μπορούν να περιστρέφονται μόνο μέσα σε ένα καθορισμένο διάστημα. εν μπορούν να περιστραφούν περισσότερο επειδή έ- χουν μια ειδική ασφάλεια που σταματάει οποιαδήποτε κίνηση πέρα από αυτό το διάστημα. Το διάστημα αυτό καθορίζεται από τον κατασκευαστή. Ένας α- πλός σερβοκινητήρας τις περισσότερες φορές μπορεί να περιστραφεί από 0 ως 180 μοίρες. Το καλώδιο ελέγχου χρησιμοποιείται για να μεταδώσει στο κύκλωμα ελέγχου το κωδικοποιημένο σήμα από το οποίο θα προκύψει η επιθυμητή γωνία. Η γωνία καθορίζεται από την διάρκεια του παλμού που εφαρμόζεται στο καλώδιο ελέγχου. Η τεχνική αυτή ονομάζεται pulse width modulation (PWM). Ο σερβοκινητήρας περιμένει να λάβει έναν παλμό κάθε 20ms. Η διάρκεια του παλμού (εύρος) θα καθορίσει τη γωνιακή θέση του άξονα. Ένας παλμός της τάξης των 1.5ms, θα κάνει τον άξονα να τοποθετηθεί στην κεντρική θέση (90 μοίρες). Αν ο παλμός είναι μικρότερος από 1.5ms, τότε ο άξονας θα τοποθετηθεί αριστερά της κεντρικής θέσης. Αν ο παλμός είναι μεγαλύτερος από 1.5ms, ο άξονας θα τοποθετηθεί δεξιά της κεντρικής θέσης. ηλαδή η διάρκεια των παλμών ορίζει τη γωνιακή θέση του άξονα (εικόνα 2.3). Το μέγεθος αυτό εξαρτάται από τον κατασκευαστή του σερβοκινητήρα. Ένας κοινός σερβοκινητήρας δέχεται παλμούς από 1ms μέχρι 2ms. 2.1.2 ΕΛΕΓΚΤΗΣ ΤΑΧΥΤΗΤΑΣ (ESC) Ο ελεγκτής ταχύτητας (εικόνα 2.4) είναι ένα ηλεκτρονικό κύκλωμα που μεταβάλλει την ταχύτητα ενός ηλεκτρικού κινητήρα και την κατεύθυνση του. Οι - 14 -

ελεγκτές ταχύτητας χρησιμοποιούνται συνήθως στα ηλεκτροκίνητα τηλεκατευθυνόμενα μοντέλα. Ένας ελεγκτής μπορεί να είναι μια αυτόνομη μονάδα η οποία συνδέεται στη γραμμή ελέγχου του δέκτη ή μπορεί να βρίσκεται ενσωματωμένος στον δέκτη. Ανεξάρτητα από τον τύπο, ο ελεγκτής ταχύτητας μεταφράζει πληροφορίες ελέγχου σε μια μορφή που μεταβάλλει το ρυθμό εναλλαγής ενός δικτύου από τρανζίστορ (FET). Η γρήγορη εναλλαγή των τρανζίστορ κάνει τον κινητήρα να εκπέμπει έναν υψηλής συχνότητας θόρυβο, ιδιαίτερα στις χαμηλές ταχύτητες. Επιτρέπει επίσης πολύ πιο ομαλή και περισσότερο ακριβή μεταβολή της ταχύτητας με έναν πολύ πιο αποδοτικό τρόπο από το μηχανικό τύπο που χρησιμοποιούνταν παλιότερα. Οι περισσότεροι σύγχρονοι ελεγκτές, ενσωματώνουν σταθεροποιητή τάσης (BEC) για να κατεβάζουν την τάση και να τροφοδοτούν τον δέκτη RF, ώστε αυτός να μη χρειάζεται να συνδεθεί ξεχωριστά με μπαταρίες. Οι ελεγκτές ταχύτητας ελέγχονται παρόμοια με τους σερβοκινητήρες. έχονται και αυτοί ένα σήμα PWM συχνότητας 50Hz του οποίου το εύρος παλμού μεταβάλλεται από 1ms μέχρι 2ms. Όταν ένας ελεγκτής δεχτεί σήμα με παλμό 1,5ms σταματά τον ηλεκτρικό κινητήρα. Όσο μεγαλύτερης διάρκειας είναι ο παλμός τόσο γρηγορότερα κινείται ο κινητήρας. Αν ο παλμός είναι μικρότερος από 1,5ms ο κινητήρας θα κινηθεί αντίστροφα. Εικόνα 2.4: Ελεγκτής ταχύτητας - 15 -

Οι κινητήρες brushless είναι πολύ διαδεδομένοι στα τηλεκατευθυνόμενα μοντέλα αεροπλάνων εξαιτίας της αποδοτικότητας, της ισχύος, της διάρκειας ζωής και του μικρού βάρους τους σε σύγκριση με τους απλούς brushed κινητήρες. Ωστόσο οι brushless ελεγκτές ταχύτητας είναι πολύ πιο πολύπλοκοι από τους brushed ελεγκτές. Αυτό συμβαίνει γιατί πρέπει να μετατρέψουν την τάση από απλή σε εναλλασσόμενη. 2.2 ΣΕΙΡΙΑΚΗ ΕΠΙΚΟΙΝΩΝΙΑ Στη σειριακή επικοινωνία τα δεδομένα ολισθαίνουν σε μια γραμμή, ένα bit κάθε φορά σε αντίθεση με την παράλληλη επικοινωνία, κατά την οποία όλα τα bit φορτώνονται σε πολλές γραμμές ταυτόχρονα. Η σειριακή επικοινωνία απλοποιεί σημαντικά τις διασυνδέσεις μεταξύ των διαφόρων διατάξεων. Στη σειριακή μετάδοση, είναι αναγκαία η ύπαρξη ενός μηχανισμού συγχρονισμού μεταξύ αποστολέα και παραλήπτη. Ανάλογα με την ύπαρξη σήματος χρονισμού ή όχι η μετάδοση χαρακτηρίζεται ως σύγχρονη ή ασύγχρονη. Η σύγχρονη επικοινωνία (εικόνα 2.5) απαιτεί ένα σήμα χρονισμού κοινό στον πομπό και στον δέκτη για τον συγχρονισμό της σειριακής μετάδοσης. Στις περισσότερες περιπτώσεις σύγχρονης σειριακής μετάδοσης δεν είναι α- ναγκαίο το σήμα να έχει σταθερό ρυθμό. Η διάρκεια κάθε bit δεν χρειάζεται να είναι σταθερή. Η μετάδοση συγχρονίζεται στις ακμές του σήματος ρολογιού. Συνήθως στη μία ακμή (ανερχόμενος παλμός) ο αποστολέας εκπέμπει το bit στη γραμμή, ενώ στην επόμενη αντίθετη ακμή (κατερχόμενος παλμός) ο παραλήπτης το λαμβάνει. Εικόνα 2.5: Σύγχρονη μέθοδος μετάδοσης δεδομένων - 16 -

Εικόνα 2.6: Ασύγχρονη μέθοδος μετάδοσης δεδομένων Στην ασύγχρονη μέθοδο μετάδοσης (εικόνα 2.6) δεν χρησιμοποιείται σήμα χρονισμού. Η πληροφορία συγχρονισμού βρίσκεται ενσωματωμένη μέσα στη μεταδιδόμενη σειρά των bits. Κάθε μεταδιδόμενο πλαίσιο (frame), α- ποτελείται από έναν συγκεκριμένο αριθμό από bit που βρίσκονται ανάμεσα σε bits χρονισμού τα οποία δηλώνουν την αρχή και το τέλος του πλαισίου. Τα bits χρονισμού οριοθετούν το μεταδιδόμενο πλαίσιο. Το bit χρονισμού, το οποίο προηγείται των δεδομένων, παρέχει την αρχική ένδειξη χρονισμού στον παραλήπτη. Με βάση την ένδειξη αυτή και σε ισόχρονα διαστήματα ο παραλήπτης δειγματοληπτεί τη γραμμή για να λάβει όλα τα επόμενα bits του πλαισίου. Το χρονικό διάστημα μεταξύ διαδοχικών δειγματοληψιών καθορίζεται από τον (προσυμφωνημένο) ρυθμό μετάδοσης (Baud Rate). 2.2.1 ΜΟΝΑ Α UART Η μονάδα UART είναι τμήμα του υλικού του υπολογιστή, το οποίο μετατρέπει δεδομένα από παράλληλη σε ασύγχρονη σειριακή μορφή και αντίστροφα. Οι μονάδες αυτές συνήθως χρησιμοποιούνται σε συνδυασμό με άλλα πρότυπα επικοινωνίας, όπως το RS-232. Η UART είναι ένα αυτόνομο ολοκληρωμένο κύκλωμα που βρίσκεται στη σειριακή θύρα ενός υπολογιστή ή μιας περιφερειακής συσκευής και χρησιμοποιείται στην σειριακή επικοινωνία. Μονάδες UART συμπεριλαμβάνονται και σε μικροελεγκτές. Κατασκευάζονται μονάδες UART που μπορούν να επικοινωνήσουν και σύγχρονα. Τα κυκλώματα αυτά ονομάζονται μονάδες USART. Κατά την μετάδοση τα δεδομένα μεταφέρονται σειριακά με σταθερό ρυθμό, με πρώτο το λιγότερο σημαντικό bit (LSB). Η μεταδιδόμενη λέξη έχει μήκος από 5 έως 8 bits. Πριν από κάθε λέξη μεταδίδεται ένα start bit, σκοπός του οποίου είναι ο συγχρονισμός του παραλήπτη. Ο παραλήπτης ελέγχει πε- - 17 -

ριοδικά τη γραμμή, έως ότου εντοπίσει την κατερχόμενη ακμή του start bit. Αμέσως μετά περιμένει χρόνο Τ/2 (όπου Τ ισούται με τον ονομαστικό χρόνο κάθε bit) και εφόσον η γραμμή είναι ακόμα σε λογική κατάσταση 0, ξεκινά να δειγματοληπτεί τα επόμενα bits ανά χρόνο Τ. Με τον τρόπο αυτόν, η δειγματοληψία συντελείται περίπου στο μέσο κάθε bit. Η λέξη συμπληρώνεται προαιρετικά από ένα parity bit (με επιλεγόμενη περιττή ή άρτια ισοτιμία) για τον εντοπισμό σφαλμάτων, και ολοκληρώνεται με 1 έως 2 stop bits. Τα bits αυτά εξασφαλίζουν ότι η γραμμή θα είναι για κάποιο διάστημα σε λογική κατάσταση 1 πριν το επόμενο start bit. 2.2.2 ΠΡΟΤΥΠΟ RS-232 Το RS-232 (Recommended Standard 232) είναι ένα πρότυπο για σειριακή μετάδοση δεδομένων (σύγχρονη ή ασύγχρονη) μεταξύ ενός DTE (όπως ένας υπολογιστής) και ενός DCE (όπως ένα modem). Η επικοινωνία αυτή μπορεί να είναι αμφίδρομη (full duplex). Το πρότυπο αυτό ορίζει τα ηλεκτρικά χαρακτηριστικά και τον συγχρονισμό των σημάτων, την σημασία των σημάτων, και το φυσικό μέγεθος και το διάγραμμα των υποδοχών. Το RS-232 χρησιμοποιείται στους προσωπικούς υπολογιστές (και σε άλλες συσκευές) για την σύνδεση περιφερειακού εξοπλισμού. Για πολλά χρόνια, μια θύρα συμβατή με το RS-232 ήταν το βασικό γνώρισμα για τις σειριακές επικοινωνίες, όπως οι συνδέσεις μέσω μόντεμ, σε πολλούς υπολογιστές. Παρέμεινε σε ευρεία χρήση μέχρι το τέλος της δεκαετίας του 1990. Σήμερα παρότι έχει σε μεγάλο βαθμό αντικατασταθεί από άλλα πρότυπα (όπως το USB), χρησιμοποιείται ακόμη για την σύνδεση παλιότερων περιφερειακών, βιομηχανικού εξοπλισμού (όπως τα PLC), θύρες κονσόλας και εξοπλισμού ειδικής χρήσης. Το πρότυπο έχει μετονομαστεί αρκετές φορές στη διάρκεια της ιστορίας του. Στις μέρες μας συνεχίζει να αναθεωρείται και να αναβαθμίζεται από την ΤΙΑ. Η τρέχουσα αναθεώρηση είναι η TIA-232-F, η οποία εκδόθηκε το 1997. Στο πρότυπο RS-232 ορίζονται και τα επίπεδα της τάσης. Για τιμές τάσης από -3V μέχρι -25V η γραμμή βρίσκεται σε κατάσταση αδράνειας (Mark State) που αντιστοιχεί στην λογική κατάσταση 1. Για τιμές τάσης από +3V μέχρι +25V η γραμμή βρίσκεται σε κατάσταση κενού διαστήματος (Space State) που αντιστοιχεί στην λογική κατάσταση 0. Οι τιμές από -3V μέχρι +3V δεν εί- - 18 -

ναι έγκυρες. Συνήθως επιλέγονται τα επίπεδα ±5V, ±10V, ±12V, ±15V, ανάλογα με την τάση της πηγής. Οι τυπικές υποδοχές που χρησιμοποιούνται είναι οι DB-9 και DB-25. Στον πίνακα 2.1 υπάρχουν οι ακροδέκτες των υποδοχών. Οι ακροδέκτες TxD και RxD χρησιμοποιούνται για την αποστολή και τη λήψη των δεδομένων. Ο ακροδέκτης GND συνδέεται στην γείωση. Οι υπόλοιποι ακροδέκτες (RTS/CTS και DTR/DSR) είναι προαιρετικοί και μπορούν να χρησιμοποιηθούν για τον έλεγχο της επικοινωνίας. Πίνακας 2.1: Οι ακροδέκτες της μονάδας υποδοχής DB-9 DB-9 DB-25 PIN ΟΝΟΜΑ ΚΑΤΕΥΘΥΝΣΗ 3 2 TxD Transmit Data έξοδος 2 3 RxD Receive Data είσοδος 7 4 RTS Request To Send έξοδος 8 5 CTS Clear To Send είσοδος 6 6 DSR Data Set Ready είσοδος 4 20 DTR Data Terminal Ready έξοδος 1 8 DCD Data Carrier Detect είσοδος 9 22 RI Ring Indicator είσοδος 5 7 GND Common Ground Μια τυπική σειριακή θύρα περιλαμβάνει εξειδικευμένα ολοκληρωμένα κυκλώματα, ώστε να μετατρέπει τα λογικά επίπεδα της UART σε συμβατά με το RS-232 επίπεδα σήματος. 2.2.3 ΚΥΚΛΩΜΑ ΜΑΧ232 Για τη μετατροπή των λογικών επιπέδων TTL/CMOS της UART, από και προς τα λογικά επίπεδα του RS-232 χρησιμοποιούνται εξειδικευμένα κυκλώματα οδήγησης, όπως το MAX232 του σχήματος (εικόνα 2.7). Τα κυκλώματα αυτά χρησιμοποιούν διατάξεις με πυκνωτές για να παράγουν από την απλή τροφοδοσία +5V τις απαιτούμενες από το πρότυπο RS-232 τάσεις. Τα κυκλώματα οδήγησης έχουν σχεδιαστεί με τέτοιον τρόπο, έτσι ώστε να παρουσιάζουν ανοχή σε μη φυσιολογικές καταστάσεις, όπως για παράδειγμα αν τυχαία βραχυκυκλωθεί μία έξοδος με τη γείωση, ή δύο σήματα μεταξύ τους. Επίσης υπάρχει πρόβλεψη για εσωτερική οδήγηση των ασύνδετων εισόδων. - 19 -

Εικόνα 2.7: Ολοκληρωμένο κύκλωμα MAX232 2.2.4 ΜΟΝΑ Α APC220 Η μονάδα APC220 (εικόνα 2.8) είναι ένας ημιαμφίδρομος (half duplex) πομποδέκτης που εκπέμπει ραδιοκύματα. Μεταδίδει σε απόσταση 1km με ρυθμό μετάδοσης μέχρι 19200bps. Συνδέεται εύκολα με μικροελεγκτή και με υπολογιστή με τη βοήθεια ενός προσαρμογέα (TTL/USB ή TTL/COM). Μπορεί να προγραμματιστεί με κατάλληλο λογισμικό ώστε να λειτουργήσει σε διαφορετική συχνότητα ή με διαφορετικό ρυθμό μετάδοσης. Είναι κατάλληλος για εφαρμογές ασύρματου ελέγχου όπως ο έλεγχος ρομπότ. Εικόνα 2.8: Μονάδα APC220-20 -

Στον πίνακα 2.2 υπάρχει το διάγραμμα των ακροδεκτών του APC220. Οι ακροδέκτες VCC, GND συνδέονται στην τροφοδοσία και την γείωση. Οι ακροδέκτες RXD, TXD στην RX και TX υποδοχή της UART. Οι υπόλοιποι α- κροδέκτες είναι προαιρετικοί. Χρησιμοποιούνται για την ενεργοποίηση/απενεργοποίηση της συσκευής (EN), για να δηλώσουν αποστολή/λήψη δεδομένων (AUX), και για την αλλαγή των παραμέτρων (SET). Πίνακας 2.2: Οι ακροδέκτες της μονάδας APC220 ΑΡΙΘΜΟΣ ΟΝΟΜΑ 1 GND 2 VCC 3 EN 4 RXD 5 TXD 6 AUX 7 SET 2.3 ΜΙΚΡΟΕΛΕΓΚΤΗΣ PIC16F877 Ο μικροελεγκτής PIC16F877 (εικόνα 2.9) διαθέτει θύρες εισόδου/εξόδου, χρονιστές, εξόδους PWM, δυνατότητα σειριακής επικοινωνίας, μνήμη προγράμματος EEPROM και πολλά άλλα σημαντικά χαρακτηριστικά. Ο επεξεργαστής διαθέτει 35 εντολές για τον προγραμματισμό του, σύστημα διακοπών και στοίβα μετρητή προγράμματος οκτώ θέσεων. Οι πηγές του συστήματος διακοπών μπορεί να είναι καταστάσεις ακροδεκτών εισόδου, υπερχείλιση χρονιστών, λήψη σειριακών δεδομένων και πολλές άλλες. Το μέγεθος της μνήμης προγράμματος, που φτάνει τα 8KB, επιτρέπει τη χρήση του σε αρκετά πολύπλοκες εφαρμογές. Οι θύρες εισόδου/εξόδου χρησιμοποιούνται από τον μικροελεγκτή για να επικοινωνεί με το υπόλοιπο κύκλωμα. Ο PIC16F877 έχει 5 θύρες εισόδου/εξόδου. Κάθε θύρα διαθέτει έναν αριθμό από ακροδέκτες, και δύο καταχωρητές, τον καταχωρητή δεδομένων (PORT) και τον καταχωρητή κατεύθυνσης (TRIS). Ο καταχωρητής δεδομένων συγκρατεί τη λογική κατάσταση του κάθε ακροδέκτη της θύρας, ενώ ο καταχωρητής κατεύθυνσης ορίζει την κατεύθυνση των δεδομένων (είσοδος ή έξοδος) του κάθε ακροδέκτη. - 21 -

Εικόνα 2.9: Μικροελεγκτής PIC16F877 Οι χρονιστές είναι κυκλώματα που υπάρχουν στο εσωτερικό του μικροελεγκτή και χρησιμοποιούνται για το συγχρονισμό μιας εφαρμογής. Κάθε χρονιστής διαθέτει έναν καταχωρητή που αυξάνεται βάσει μιας πηγή χρονισμού. Όταν συμβεί υπερχείλιση ο καταχωρητής αυτός ενεργοποιεί μια διακοπή. Ο πιο βασικός χρονιστής που διαθέτει ο μικροελεγκτής PIC16F877 είναι ο Timer0. Ο μικροελεγκτής αυτός διαθέτει δύο ακόμα χρονιστές ειδικής χρήσης, τους Timer1 και Timer2. Οι χρήσεις αυτές είναι η δυνατότητα σύλληψης και σύγκρισης εύρους παλμών, και παραγωγής σήματος PWM. Οι ιδιότητες αυτές ανήκουν σε κάποιο τμήμα των εσωτερικών κυκλωμάτων, που είναι γνωστό σαν υπομονάδα CCP και λειτουργεί σε συνδυασμό με τους χρονιστές Timer1 και Timer2. Ο τελευταίος χρονιστής που υπάρχει στον μικροελεγκτή είναι ο χρονιστής επιτήρησης (Watchdog Timer). Ο χρονιστής αυτός όταν είναι ενεργός επανεκκινεί τον μικροελεγκτή μετά την πάροδο συγκεκριμένου χρόνου. Χρησιμοποιείται δηλαδή για την επανεκκίνηση του μικροελεγκτή όταν το πρόγραμμα κολλήσει. - 22 -

Ο μικροελεγκτής PIC16F877 διαθέτει δύο υπομονάδες σειριακής επικοινωνίας, την υπομονάδα MSSP και την υπομονάδα USART (που είναι γνωστή και σαν υπομονάδα SCI). Η υπομονάδα MSSP χρησιμοποιείται μόνο για σύγχρονη σειριακή επικοινωνία ενώ η υπομονάδα USART μπορεί να χρησιμοποιηθεί για σύγχρονη ή για ασύγχρονη επικοινωνία. 2.3.1 ΘΥΡΑ PORTB Η θύρα PORTB είναι διπλής κατεύθυνσης και έχει μέγεθος 8 bit. Ο α- ντίστοιχος καταχωρητής κατεύθυνσης είναι ο TRISB. Ενεργοποιώντας ένα bit του καταχωρητή TRISB (= 1) ορίζεται ότι ο αντίστοιχος ακροδέκτης του καταχωρητή PORTB θα λειτουργεί σαν ακροδέκτης εισόδου. Απενεργοποιώντας ένα bit του καταχωρητή TRISB (= 0) ορίζεται ότι ο αντίστοιχος ακροδέκτης του καταχωρητή PORTB θα λειτουργεί σαν ακροδέκτης εξόδου. Οι ακροδέκτες RB7:RB4 της PORTB μπορούν να προκαλέσουν διακοπή μόλις αλλάξει η τιμή τους. Για να συμβεί αυτό πρέπει να έχουν οριστεί σαν ακροδέκτες εισόδου. Οι τιμές των ακροδεκτών συγκρίνονται συνεχώς με τις προηγούμενες τιμές που υπήρχαν στους ακροδέκτες. Οποιαδήποτε αλλαγή σε κάποιο από τα τέσσερα bit προκαλεί διακοπή θέτοντας την σημαία RBIF. Η διακοπή αυτή μπορεί να χρησιμοποιηθεί για να επαναφέρει τον μικροελεγκτή από κατάσταση SLEEP. 2.3.2 ΧΡΟΝΙΣΤΗΣ TIMER0 Η πηγή χρονισμού του Timer0 μπορεί να είναι η εσωτερική πηγή χρονισμού του κύκλου εντολής (λειτουργία χρονιστή) ή ένας εξωτερικός παλμός που προέρχεται από τον ακροδέκτη 6 [T0CKI] (λειτουργία απαριθμητή). Στην περίπτωση του εξωτερικού παλμού μπορεί να καθοριστεί και το μέτωπο του παλμού (ανερχόμενος ή κατερχόμενος). Ο διαιρέτης συχνότητας (prescaler) διαιρεί τη συχνότητα της πηγής χρονισμού με βάση τον λόγο διαίρεσης που θα χρησιμοποιηθεί. Ο διαιρέτης συχνότητας μπορεί να συνδεθεί επιλεκτικά με τον Timer0 ή τον καταχωρητή επιτήρησης. Οι τιμές του λόγου διαίρεσης φαίνονται στον πίνακα 2.3. - 23 -

Πίνακας 2.3: Οι λόγοι διαίρεσης του διαιρέτη συχνότητας του Timer0 PS2 PS1 PS0 TMR0 WDT 0 0 0 1 : 2 1 : 1 0 0 1 1 : 4 1 : 2 0 1 0 1 : 8 1 : 4 0 1 1 1 : 16 1 : 8 1 0 0 1 : 32 1 : 16 1 0 1 1 : 64 1 : 32 1 1 0 1 : 128 1 : 64 1 1 1 1 : 256 1 : 128 Ο Timer0 διαθέτει έναν καταχωρητή μεγέθους 8 bit, τον TMR0. Στον καταχωρητή αυτόν μπορούμε να γράψουμε οποιαδήποτε τιμή ανάμεσα στο 0 και το 255. Σε κάθε παλμό της πηγής (όταν δεν έχει συνδεθεί ο διαιρέτης συχνότητας) η τιμή του καταχωρητή TMR0 αυξάνεται κατά 1. Όταν συμβεί υπερχείλιση ενεργοποιείται η σημαία T0IF. Ο TMR0 συνεχίζει να αυξάνεται. Αν είναι ενεργοποιημένες οι σημαίες GIE και T0IE όταν ενεργοποιηθεί η σημαία T0IF, παράγεται ένα σήμα διακοπής. Η εξίσωση 2.1 χρησιμοποιείται για τον υπολογισμό της καθυστέρησης του Timer0 σε δευτερόλεπτα. 256 InitTMR0 Pr escaler Delay Εξίσωση 2.1 Frequency Η εξίσωση 2.2 χρησιμοποιείται για τον υπολογισμό της απαιτούμενης αρχικής τιμής του TMR0, για δεδομένη χρονική καθυστέρηση. Delay Frequency InitTMR0 256 Εξίσωση 2.2 Pr escaler Όταν η πηγή χρονισμού είναι η εσωτερική πηγή χρονισμού του κύκλου εντολής η συχνότητα της πηγής είναι η συχνότητα του ταλαντωτή: Frequency= (F osc ) / 4. Ο προγραμματισμός του Timer0 γίνεται αλλάζοντας τιμή στον καταχωρητή OPTION_REG (πίνακας 2.4). Ο καταχωρητής αυτός έχει μέγεθος 8 bit - 24 -

και είναι αναγνώσιμος και εγγράψιμος. Τα 6 λιγότερο σημαντικά ψηφία (bits) του καταχωρητή OPTION_REG αποτελούν τα ψηφία ελέγχου του Timer0. Πίνακας 2.4: Ο καταχωρητής OPTION_REG RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 5 [T0CS]: bit 4 [T0SE]: bit 3 [PSA]: bit 2-0: Επιλογή πηγής χρονισμού 1 = εξωτερικός παλμός συνδεδεμένος στον ακροδέκτη T0CKI 0 = εσωτερική πηγή χρονισμού του κύκλου εντολής Επιλογή μετώπου παλμού για τον εξωτερικό παλμό 1 = αύξηση με κατερχόμενο μέτωπο παλμού στον ακροδέκτη T0CKI 0 = αύξηση με ανερχόμενο μέτωπο παλμού στον ακροδέκτη T0CKI Σύνδεση του διαιρέτη συχνότητας 1 = σύνδεση του διαιρέτη συχνότητας στον WDT 0 = σύνδεση του διαιρέτη συχνότητας στον Timer0 Επιλογή λόγου διαίρεσης (πίνακας) Το ακόλουθο παράδειγμα με ταλαντωτή 4MHz δημιουργεί καθυστέρηση 1s χρησιμοποιώντας τον Timer0. #include <htc.h> int Count = 0; void main() TRISB = 0b00000000; // PORTB: έξοδος PORTB = 0b00000000; TMR0 = 0; // TMR0: αρχική τιμή 0 OPTION = 0b10000111; // επιλογή της εσωτερικής πηγής χρονισμού // σύνδεση του διαιρέτη συχνότητας // Prescaler: 1:256 while(1) // (256 x 256)/1MHz = 65536μs while(!t0if); // καθυστέρηση μέχρι να συμβεί υπερχείλιση T0IF = 0; Count++; if(count == 15) // 65536 x 15 = 0,983s Count = 0; PORTB = ~PORTB; // αλλαγή κατάστασης των ακροδεκτών - 25 -

Το πρόγραμμα αυτό αφού προγραμματίσει τον Timer0 μπαίνει σε έναν ατέρμονα βρόχο. Μέσα σε αυτόν το βρόχο περιμένει να υπερχειλίσει ο Timer0 (1s) και όταν συμβεί αλλάζει την κατάσταση των ακροδεκτών της θύρας PORTB. 2.3.3 ΧΡΟΝΙΣΤΗΣ TIMER1 Η πηγή χρονισμού του Timer1 μπορεί να είναι η εσωτερική πηγή χρονισμού του κύκλου εντολής (λειτουργία χρονιστή) ή ένας εξωτερικός παλμός που προέρχεται από τον ακροδέκτη 15 [T1CKI] (λειτουργία απαριθμητή). Στην περίπτωση του εξωτερικού παλμού ο παλμός μπορεί να συγχρονιστεί με την φάση της εσωτερικής πηγής του κύκλου εντολής ή να λειτουργήσει ανεξάρτητα. Επίσης ο Timer1 διαθέτει ξεχωριστό κύκλωμα χρονισμού από αυτό του κεντρικού συστήματος και έτσι επιτρέπει την υλοποίηση ενός ξεχωριστού ταλαντωτή χρονισμού. Ο Timer1 διαθέτει και αυτός διαιρέτη συχνότητας. Οι τιμές του λόγου διαίρεσης φαίνονται στον πίνακα 2.5. Πίνακας 2.5: Οι λόγοι διαίρεσης του διαιρέτη συχνότητας του Timer1 T1CKPS1 T1CKPS0 TMR1 0 0 1 : 1 0 1 1 : 2 1 0 1 : 4 1 1 1 : 8 Ο Timer1 διαθέτει έναν καταχωρητή μεγέθους 16 bit, τον TMR1 (που αποτελείται από δύο καταχωρητές των 8 bit, τον TMR1H και τον TMR1L). Στον καταχωρητή αυτόν μπορούμε να γράψουμε οποιαδήποτε τιμή ανάμεσα στο 0 και το 65535. Σε κάθε παλμό της πηγής (όταν δεν έχει συνδεθεί ο διαιρέτης συχνότητας) η τιμή του καταχωρητή TMR1 αυξάνεται κατά 1. Όταν συμβεί υπερχείλιση ενεργοποιείται η σημαία TMR1IF. Ο TMR1 συνεχίζει να αυξάνεται. Αν είναι ενεργοποιημένες οι σημαίες GIE, PEIE και TMR1IE όταν ενεργοποιηθεί η σημαία TMR1IF, παράγεται ένα σήμα διακοπής. Ο TMR1 έχει επιπλέον την δυνατότητα να διακόψει προσωρινά την απαρίθμηση. Επειδή ο καταχωρητής TMR1 δεν μπορεί να προσπελαστεί α- πευθείας, αλλά μόνο μέσω των καταχωρητών TMR1H και TMR1L, η δυνατό- - 26 -

τητα αυτή μπορεί να αποτρέψει λάθη στην απαρίθμηση. Όταν απαιτείται μεγάλη ακρίβεια στην χρονική καθυστέρηση μπορούμε να προσθέσουμε στην τιμή του TMR1 μια σταθερά που περιέχει την χρονική διάρκεια κατά την οποία ο Timer1 ήταν σταματημένος. Η λειτουργία του Timer1 μπορεί να ελέγχεται από την υπομονάδα CCP, για την μέτρηση της διάρκειας (εύρους) ενός παλμού. Η εξίσωση 2.3 χρησιμοποιείται για τον υπολογισμό της καθυστέρησης του Timer1 σε δευτερόλεπτα. 65536 InitTMR1 Pr escaler Delay Εξίσωση 2.3 Frequency Η εξίσωση 2.4 χρησιμοποιείται για τον υπολογισμό της απαιτούμενης αρχικής τιμής του TMR1, για δεδομένη χρονική καθυστέρηση. Delay Frequency InitTMR1 65536 Εξίσωση 2.4 Pr escaler Όταν η πηγή χρονισμού είναι η εσωτερική πηγή χρονισμού του κύκλου εντολής η συχνότητα της πηγής είναι η συχνότητα του ταλαντωτή (Fosc) / 4. Ο προγραμματισμός του Timer1 γίνεται αλλάζοντας τιμή στον καταχωρητή T1CON (πίνακας 2.6). Ο καταχωρητής αυτός έχει μέγεθος 8 bit και είναι αναγνώσιμος και εγγράψιμος. Τα 6 λιγότερο σημαντικά ψηφία (bits) του καταχωρητή T1CON αποτελούν τα ψηφία ελέγχου του Timer1. Τα ψηφία 6 και 7 δεν χρησιμοποιούνται. Πίνακας 2.6: Ο καταχωρητής T1CON T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 5-4: bit 3 [T1OSCEN]: bit 2 [T1SYNC]: Επιλογή λόγου διαίρεσης (πίνακας) Ταλαντωτής του Timer1 1 = ενεργοποίηση του ταλαντωτή 0 = απενεργοποίηση του ταλαντωτή Συγχρονισμός του εξωτερικού παλμού 1 = δεν συγχρονίζεται ο εξωτερικός παλμός - 27 -

bit 1 [TMR1CS]: bit 0 [TMR1ON]: 0 = συγχρονίζεται ο εξωτερικός παλμός Επιλογή πηγής χρονισμού 1 = εξωτερικός παλμός συνδεδεμένος στον ακροδέκτη T1CKI 0 = εσωτερική πηγή χρονισμού του κύκλου εντολής Αλλαγή της κατάστασης του Timer1 1 = σε λειτουργία 0 = σταματημένος Το ακόλουθο παράδειγμα με ταλαντωτή 4MHz δημιουργεί καθυστέρηση 1s χρησιμοποιώντας τον Timer1. #include <htc.h> int Count=0; void main() TRISB = 0b00000000; // PORTB: έξοδος PORTB = 0b00000000; TMR1H = 0; // TMR1: αρχική τιμή 0 TMR1L = 0; T1CON = 0b00000001; // χρήση της εσωτερική πηγής χρονισμού, // Prescaler: 1:1, // Timer1 σε λειτουργία while(1) // (65536 x 1)/1MHz = 65,536ms while(!tmr1if); // καθυστέρηση μέχρι να συμβεί υπερχείλιση TMR1IF = 0; Count++; if(count == 15) // 65,536 x 15 = 0,983s Count = 0; PORTB = ~PORTB; // αλλαγή κατάστασης των ακροδεκτών Το πρόγραμμα αυτό αφού προγραμματίσει τον Timer1 μπαίνει σε έναν ατέρμονα βρόχο. Μέσα σε αυτόν το βρόχο περιμένει να υπερχειλίσει ο Timer1 (1s) και όταν συμβεί αλλάζει την κατάσταση των ακροδεκτών της θύρας PORTB. - 28 -

2.3.4 ΧΡΟΝΙΣΤΗΣ TIMER2 Η πηγή χρονισμού του Timer2 είναι η εσωτερική πηγή χρονισμού του κύκλου εντολής (λειτουργία χρονιστή). εν μπορεί να λειτουργήσει σαν απαριθμητής όπως ο Timer0 και ο Timer1. Ο Timer2 διαθέτει και αυτός διαιρέτη συχνότητας. Οι τιμές του λόγου διαίρεσης φαίνονται στον πίνακα 2.7. Πίνακας 2.7: Οι λόγοι διαίρεσης του πρώτου διαιρέτη συχνότητας του Timer2 T2CKPS1 T2CKPS0 TMR2 0 0 1 : 1 0 1 1 : 4 1 x 1 : 16 Ο Timer2 διαθέτει έναν καταχωρητή μεγέθους 8 bit, τον TMR2. Στον καταχωρητή αυτόν μπορούμε να γράψουμε οποιαδήποτε τιμή ανάμεσα στο 0 και το 255. Ο Timer2 έχει και έναν καταχωρητή περιόδου τον PR2. Σε κάθε παλμό της πηγής (όταν δεν έχει συνδεθεί ο διαιρέτης συχνότητας) η τιμή του καταχωρητή TMR2 αυξάνεται κατά 1 μέχρι η τιμή του να γίνει ίση με την τιμή του PR2. Στον επόμενο παλμό της πηγής ο TMR2 μηδενίζεται και ενεργοποιείται η σημαία TMR2IF. Ο TMR2 συνεχίζει να αυξάνεται. Αν είναι ενεργοποιημένες οι σημαίες GIE, PEIE και TMR2IE όταν ενεργοποιηθεί η σημαία TMR2IF, παράγεται ένα σήμα διακοπής. Με τον επιπλέον καταχωρητή περιόδου PR2 που διαθέτει ο Timer2 αποφεύγεται η ανάγκη αρχικοποίησης του καταχωρητή TMR2 κάθε φορά που μηδενίζεται, όταν η χρονική διάρκεια της καθυστέρησης παραμένει σταθερή. Ο Timer2 διαθέτει και έναν δεύτερο διαιρέτη συχνότητας (postscaler) ο οποίος βρίσκεται μετά τον καταχωρητή TMR2 ώστε οι διακοπές να μπορούν να συμβούν μετά από ένα συγκεκριμένο αριθμό επαναλήψεων. Οι τιμές του λόγου διαίρεσης φαίνονται στον πίνακα 2.8. Ο TMR2 όπως και ο TMR1 έχει την δυνατότητα να διακόψει προσωρινά την απαρίθμηση. Η λειτουργία του μπορεί να ελέγχεται από την υπομονάδα CCP για την μέτρηση της περιόδου ενός παλμού. - 29 -

Πίνακας 2.8: Οι λόγοι διαίρεσης του δεύτερου διαιρέτη συχνότητας του Timer2 TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2IF 0 0 0 0 1 : 1 0 0 0 1 1 : 2 0 0 1 0 1 : 3 0 0 1 1 1 : 4 0 1 0 0 1 : 5 0 1 0 1 1 : 6 0 1 1 0 1 : 7 0 1 1 1 1 : 8 1 0 0 0 1 : 9 1 0 0 1 1 : 10 1 0 1 0 1 : 11 1 0 1 1 1 : 12 1 1 0 0 1 : 13 1 1 0 1 1 : 14 1 1 1 0 1 : 15 1 1 1 1 1 : 16 Η εξίσωση 2.5 χρησιμοποιείται για τον υπολογισμό της καθυστέρησης ενεργοποίησης της σημαίας TMR2IF του Timer2 σε δευτερόλεπτα. Delay 1 PR2 InitTMR2 Pr escaler Postscaler Frequency Εξίσωση 2.5 Η εξίσωση 2.6 χρησιμοποιείται για τον υπολογισμό της απαιτούμενης αρχικής τιμής του PR2, για δεδομένη χρονική καθυστέρηση. Delay Frequency PR2 InitTMR2 1 Εξίσωση 2.6 Pr escaler Postscaler Η συχνότητα της πηγής είναι η συχνότητα του ταλαντωτή (Fosc) / 4. Ο προγραμματισμός του Timer2 γίνεται αλλάζοντας τιμή στον καταχωρητή T2CON (πίνακας 2.9). Ο καταχωρητής αυτός έχει μέγεθος 8 bit και είναι αναγνώσιμος και εγγράψιμος. Τα 7 λιγότερο σημαντικά ψηφία (bits) του καταχωρητή T2CON αποτελούν τα ψηφία ελέγχου του Timer2. Το ψηφίο 7 δεν χρησιμοποιείται. - 30 -

Πίνακας 2.9: Ο καταχωρητής T2CON TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0 TMR2ON T2CKPS1 T2CKPS0 bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 6-3: bit 2 [TMR2ON]: bit 1-0: Επιλογή λόγου διαίρεσης στον postscaler (πίνακας) Αλλαγή της κατάστασης του Timer2 1 = σε λειτουργία 0 = σταματημένος Επιλογή λόγου διαίρεσης στον prescaler (πίνακας) Το ακόλουθο παράδειγμα με ταλαντωτή 4MHz δημιουργεί καθυστέρηση 1s χρησιμοποιώντας τον Timer2. #include <htc.h> int Count = 0; void main() TRISB = 0b00000000; // PORTB: έξοδος PORTB = 0b00000000; TMR2 = 0; // TMR2: αρχική τιμή 0 PR2 = 255; // Περίοδος 256 T2CON = 0b01111100; // Prescaler: 1:1, // Postscaler: 1:16, // Timer2 σε λειτουργία while(1) // (256 x 1 x 16)/1MHz = 4,096ms while(!tmr2if); // καθυστέρηση μέχρι να συμβεί υπερχείλιση TMR2IF = 0; Count++; if(count == 244) // 4,096 x 244 = 0,999s Count = 0; PORTB = ~PORTB; // αλλαγή κατάστασης των ακροδεκτών Το πρόγραμμα αυτό αφού προγραμματίσει τον Timer2 μπαίνει σε έναν ατέρμονα βρόχο. Μέσα σε αυτόν το βρόχο περιμένει να υπερχειλίσει ο Timer2 (1s) και όταν συμβεί αλλάζει την κατάσταση των ακροδεκτών της θύρας PORTB. - 31 -

2.3.5 ΥΠΟΜΟΝΑ Α USART Η υπομονάδα USART μπορεί να λειτουργήσει ασύγχρονα και αμφίδρομα (full duplex) ή σύγχρονα και ημιαμφίδρομα (half duplex). Στην περίπτωση της σύγχρονης λειτουργίας επιλέγεται αν θα είναι η κύρια υπομονάδα (master) που θα παράγει τον παλμό χρονισμού και θα συγχρονίζει την επικοινωνία ή θα είναι η δευτερεύουσα υπομονάδα (slave) που θα δέχεται ένα εξωτερικό σήμα χρονισμού. Το βασικό στοιχείο του πομπού είναι ο σειριακός καταχωρητής ολίσθησης αποστολής (TSR). Ο καταχωρητής ολίσθησης λαμβάνει δεδομένα από τον καταχωρητή TXREG. Μόλις μεταφερθούν τα δεδομένα ο καταχωρητής TXREG αδειάζει και ενεργοποιείται η σημαία TXIF. Η σημαία αυτή θα α- πενεργοποιηθεί ξανά όταν φορτωθούν νέα δεδομένα στον καταχωρητή TXREG. Αν είναι ενεργοποιημένες οι σημαίες GIE, PEIE και TXIE όταν ενεργοποιηθεί η σημαία TXIF, παράγεται ένα σήμα διακοπής. Το βασικό στοιχείο του δέκτη είναι ο σειριακός καταχωρητής ολίσθησης λήψης (RSR). Μόλις ολοκληρωθεί η μετάδοση ο καταχωρητής ολίσθησης στέλνει τα δεδομένα στον καταχωρητή RCREG (αν είναι άδειος) και ενεργοποιείται η σημαία RCIF. Η σημαία αυτή θα απενεργοποιηθεί ξανά όταν διαβαστούν τα δεδομένα από τον καταχωρητή RCREG και αδειάσει. Αν είναι ενεργοποιημένες οι σημαίες GIE, PEIE και RCIE όταν ενεργοποιηθεί η σημαία RCIF, παράγεται ένα σήμα διακοπής. Η γεννήτρια ρυθμού μετάδοσης (BRG) είναι ένας χρονιστής που χρησιμοποιείται για το συγχρονισμό της μετάδοσης. ιαθέτει έναν καταχωρητή μεγέθους 8 bit, τον SPBRG ο οποίος καθορίζει την περίοδο του χρονιστή. Τις περισσότερες φορές είναι καλύτερα να χρησιμοποιείται υψηλός ρυθμός μετάδοσης επειδή έτσι ελαχιστοποιείται το σφάλμα. Η εξίσωση 2.7 χρησιμοποιείται για τον υπολογισμό του ρυθμού μετάδοσης σε δευτερόλεπτα (για υψηλό ρυθμό μετάδοσης). Frequency BaudRate Εξίσωση 2.7 4 SPBRG 1-32 -

Η εξίσωση 2.8 χρησιμοποιείται για τον υπολογισμό της απαιτούμενης αρχικής τιμής του SPBRG, για δεδομένο ρυθμό μετάδοσης (για υψηλό ρυθμό μετάδοσης). Frequency SPBRG 1 Εξίσωση 2.8 4 BaudRate Η συχνότητα της πηγής είναι η συχνότητα του ταλαντωτή (Fosc) / 4. Ο προγραμματισμός της USART γίνεται αλλάζοντας τιμές στους καταχωρητές TXSTA (πίνακας 2.10) και RCSTA (πίνακας 2.11). Οι καταχωρητές αυτοί έχουν μέγεθος 8 bit και είναι αναγνώσιμοι και εγγράψιμοι. Το ψηφίο 3 του καταχωρητή TXSTA δεν χρησιμοποιείται. Πίνακας 2.10: Ο καταχωρητής TXSTA CSRC TX9 TXEN SYNC BRGH TRMT TX9D bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 7 [CSRC]: bit 6 [TX9]: bit 5 [ΤΧΕΝ]: bit 4 [SYNC]: bit 2 [BRGH]: bit 1 [ΤRMT]: bit 0 [ΤX9D]: Επιλογή πηγής χρονισμού (σύγχρονη λειτουργία) 1 = παλμός από τη γεννήτρια ρυθμού μετάδοσης (master mode) 0 = παλμός από εξωτερική πηγή (slave mode) Μήκος αποστολής 1 = 9 bit αποστολή 0 = 8 bit αποστολή Ενεργοποίηση / Απενεργοποίηση αποστολής 1 = ενεργοποίηση 0 = απενεργοποίηση Λειτουργία 1 = σύγχρονη 0 = ασύγχρονη Επιλογή ταχύτητας ρυθμού μετάδοσης (ασύγχρονη λειτουργία) 1 = υψηλή ταχύτητα 0 = χαμηλή ταχύτητα Κατάσταση του σειριακού καταχωρητή ολίσθησης αποστολής 1 = άδειος 0 = γεμάτος Το ένατο ψηφίο της αποστολής - 33 -

Πίνακας 2.11: Ο καταχωρητής RCSTA SPEN RX9 SREN CREN ADDEN FERR OERR RX9D bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 7 [SPEN]: bit 6 [RX9]: bit 5 [SREN]: bit 4 [CREN]: bit 3 [ADDEN]: bit 2 [FERR]: bit 1 [OERR]: bit 0 [RX9D]: Κατάσταση της σειριακή θύρας 1 = ενεργοποιημένη 0 = απενεργοποιημένη Μήκος λήψης 1 = 9 bit λήψη 0 = 8 bit λήψη Μονή λήψη (σύγχρονη κύρια λειτουργία) 1 = ενεργοποίηση 0 = απενεργοποίηση Συνεχής λήψη 1 = ενεργοποίηση 0 = απενεργοποίηση Εντοπισμός διεύθυνσης (ασύγχρονη λειτουργία 9 bit) 1 = ενεργοποίηση 0 = απενεργοποίηση Σφάλμα πλαισίου (framing) 1 = με σφάλμα 0 = χωρίς σφάλμα Σφάλμα υπέρβασης (overrun) 1 = με σφάλμα 0 = χωρίς σφάλμα Το ένατο ψηφίο της λήψης Το ακόλουθο παράδειγμα με ταλαντωτή 4MHz στέλνει και λαμβάνει δεδομένα ασύγχρονα με ρυθμό μετάδοσης 9600bps. #include <htc.h> void main() int i; TRISB = 0b00000000; PORTB = 0b00000000; SPBRG = 25; TXSTA = 0b00100100; RCSTA = 0b10010000; TXREG = 0; while(1) TXREG++; // PORTB: έξοδος // ΡΥΘΜΟΣ ΜΕΤΑΔΟΣΗΣ: 9600bps // TX: 8bit, ενεργοποιημένο, // ασύγχρονη λειτουργία, υψηλή ταχύτητα // RC: ενεργοποίηση σειριακής θύρας, // 8bit, συνεχής λήψη - 34 -

while(!trmt); // καθυστέρηση μέχρι ένα πλαίσιο δεδομένων // να ετοιμαστεί για αποστολή while(!rcif); // καθυστέρηση μέχρι να ληφθεί ένα ολόκληρο // πλαίσιο δεδομένων PORTB = RCREG; // εμφάνιση δεδομένων στην PORTB for(i=0; i<3000; i++); // καθυστέρηση Το πρόγραμμα αυτό αφού προγραμματίσει τον υπομονάδα USART μπαίνει σε έναν ατέρμονα βρόχο. Μέσα σε αυτόν το βρόχο στέλνει σειριακά 1 byte και περιμένει να λάβει 1 byte. Στην συνέχεια εμφανίζει τα δεδομένα που έλαβε στους ακροδέκτες της PORTB και περιμένει ένα μικρό χρονικό διάστημα. 2.3.6 ΣΗΜΑΤΑ ΙΑΚΟΠΗΣ (INTERRUPTS) Τα σήματα διακοπής στέλνονται στον μικροελεγκτή για να δείξουν ότι κάποιο συμβάν απαιτεί άμεση εξυπηρέτηση. Τα σήματα αυτά ζητούν από τον επεξεργαστή να σταματήσει να εκτελεί το τρέχον πρόγραμμα και να αρχίσει να εκτελεί ένα ειδικό τμήμα κώδικα. Η αίτηση αυτή μπορεί να προέλθει από διάφορες πηγές: Από συσκευές υλικού. Από τον ίδιο τον επεξεργαστή για να αναφέρει ένα σφάλμα στον κώδικα. Σε συστήματα πολλών επεξεργαστών οι επεξεργαστές μπορούν να στέλνουν μεταξύ τους σήματα διακοπής σαν μέσο επικοινωνίας. Υπάρχουν δύο ειδών σήματα διακοπής, οι διακοπές λογισμικού και οι διακοπές υλικού. Οι διακοπές λογισμικού προέρχονται από ένα πρόγραμμα που εκτελείται από τον επεξεργαστή το οποίο ζητάει από τον επεξεργαστή να σταματήσει την εκτέλεση του προγράμματος, να κάνει μια διακοπή, και στη συνέχεια να επιστρέψει για να συνεχίσει την εκτέλεση του προγράμματος. Ένα παράδειγμα διακοπής λογισμικού είναι οι υπορουτίνες. Οι διακοπές υλικού στέλνονται στον επεξεργαστή έμμεσα από συσκευές υλικού και χρησιμοποιούνται για να αναφέρουν κρίσιμα θέματα υλικού. - 35 -

Ο μικροελεγκτής PIC16F877 έχει 14 πηγές διακοπών. Οι σημαίες διακοπών δηλώνουν αν πραγματοποιήθηκε ένα συμβάν και τα bit ενεργοποίησης διακοπών ενεργοποιούν/απενεργοποιούν συγκεκριμένες διακοπές. Υπάρχουν και δευτερεύουσες διακοπές οι οποίες για να είναι διαθέσιμες πρέπει να ενεργοποιηθεί το bit PEIE του καταχωρητή INTCON. Επίσης για να είναι διαθέσιμη οποιαδήποτε διακοπή πρέπει να είναι ενεργοποιημένο το bit GIE του καταχωρητή INTCON. Ο καταχωρητής INTCON (πίνακας 2.12) περιέχει επιπλέον τις σημαίες διακοπής και τα bit ενεργοποίησης διακοπής των βασικών διακοπών. Οι σημαίες διακοπής των δευτερευόντων διακοπών βρίσκονται στους καταχωρητές PIR1 και PIR2. Τα bit ενεργοποίησης διακοπής των δευτερευόντων διακοπών βρίσκονται στους καταχωρητές PIE1 και PIE2. Πίνακας 2.12: Ο καταχωρητής INTCON GIE PEIE T0IE INTE RBIE T0IF INTF RBIF bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 bit 7 [GIE]: bit 6 [PEIE]: bit 5 [T0IE]: bit 4 [INTE]: bit 3 [RBIE]: bit 2 [T0IF]: bit 1 [INTF]: bit 0 [RBIF]: Καθολικό bit ενεργοποίησης διακοπών 1 = κάνει διαθέσιμες όλες τις ενεργοποιημένες διακοπές 0 = απενεργοποιεί όλες τις διακοπές bit ενεργοποίησης δευτερευόντων διακοπών 1 = κάνει διαθέσιμες όλες τις ενεργοποιημένες περιφερειακές διακοπές 0 = απενεργοποιεί όλες τις δευτερεύουσες διακοπές bit ενεργοποίησης διακοπής του TMR0 1 = ενεργοποιεί την διακοπή 0 = απενεργοποιεί την διακοπή bit ενεργοποίησης διακοπής του ακροδέκτη RB0/INT 1 = ενεργοποιεί την διακοπή 0 = απενεργοποιεί την διακοπή bit ενεργοποίησης διακοπής της θύρας PORTB 1 = ενεργοποιεί την διακοπή 0 = απενεργοποιεί την διακοπή Σημαία διακοπής του TMR0 1 = το συμβάν έχει πραγματοποιηθεί 0 = το συμβάν δεν έχει πραγματοποιηθεί ακόμα Σημαία διακοπής του ακροδέκτη RB0/INT 1 = το συμβάν έχει πραγματοποιηθεί 0 = το συμβάν δεν έχει πραγματοποιηθεί ακόμα Σημαία διακοπής της θύρας PORTB 1 = το συμβάν έχει πραγματοποιηθεί 0 = το συμβάν δεν έχει πραγματοποιηθεί ακόμα - 36 -

Όταν αποσταλεί στον επεξεργαστή ένα σήμα διακοπής η σημαία GIE αυτομάτως απενεργοποιείται για να αποτρέψει προσωρινά επιπλέον σήματα διακοπής όσο εκτελείται η υπορουτίνα της συγκεκριμένης διακοπής και η υ- πορουτίνα εξυπηρέτησης των διακοπών. Η υπορουτίνα αυτή πρέπει να ελέγξει την σημαία T0IF για να προσδιορίσει την πηγή της διακοπής. Στη συνέχεια πρέπει να απενεργοποιήσει τη σημαία T0IF για να αποτρέψει την άμεση επανεκτέλεση της υπορουτίνας διακοπής όταν τα σήματα διακοπών θα ξαναενεργοποιηθούν. Στο τέλος του κώδικα που χειρίζεται τη διακοπή πρέπει να υ- πάρχει η εντολή του μικροελεγκτή RETFIE η οποία αυτομάτως ενεργοποιεί το bit GIE για να ξαναενεργοποιηθούν τα σήματα διακοπής, και επιστρέφει στο κυρίως πρόγραμμα. Το ακόλουθο παράδειγμα με ταλαντωτή 4MHz δημιουργεί καθυστέρηση 1s χρησιμοποιώντας σήματα διακοπής από τον Timer0. #include <htc.h> int Count = 0; void interrupt ISR(); void main() TRISB = 0b00000000; // PORTB: έξοδος PORTB = 0b00000000; TMR0 = 0; // TMR0: αρχική τιμή 0 OPTION = 0b10000111; // επιλογή της εσωτερικής πηγής χρονισμού // σύνδεση του διαιρέτη συχνότητας // Prescaler: 1:256 INTCON = 0b10100000; // ενεργοποίηση διακοπών // ενεργοποίηση της διακοπής του TMR0 // καθαρισμός της σημαίας του TMR0 while(1); void interrupt ISR() if(t0ie && T0IF) // υπορουτίνα της διακοπής του TIMER0 T0IF = 0; // καθαρισμός της σημαίας του TMR0 Count++; if(count == 15) // 65,536 x 15 = 0,983s Count = 0; PORTB = ~PORTB; // αλλαγή κατάστασης των ακροδεκτών - 37 -

Το πρόγραμμα αυτό αφού προγραμματίσει τον Timer0 και ενεργοποιήσει το σήμα διακοπής από τον Timer0 μπαίνει σε έναν ατέρμονα βρόχο. Κάθε φορά που προκαλείται σήμα διακοπής από τον Timer0 (κάθε 1s) εκτελείται ο κώδικας εξυπηρέτησης της διακοπής που αλλάζει την κατάσταση των ακροδεκτών της θύρας PORTB και στη συνέχεια επιστρέφει η εκτέλεση του προγράμματος στον βρόχο. Το αποτέλεσμα είναι ίδιο με το πρώτο παράδειγμα. Το πλεονέκτημα της τεχνικής αυτής είναι ότι ο επεξεργαστής δεν παρακολουθεί αποκλειστικά τον Timer0 αλλά είναι ελεύθερος να εκτελεί οποιαδήποτε άλλη λειτουργία. - 38 -