Αρχιτεκτονικές των μ/ελεγχτών Arduino και παραδείγματα σχεδίασης/υλοποίησης αναλογικών και ψηφιακών φίλτρων με τη γλώσσα wiring IDE.

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Αρχιτεκτονικές των μ/ελεγχτών Arduino και παραδείγματα σχεδίασης/υλοποίησης αναλογικών και ψηφιακών φίλτρων με τη γλώσσα wiring IDE."

Transcript

1 ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ & ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΥΠΟΛΟΓΙΣΤΩΝ Αρχιτεκτονικές των μ/ελεγχτών Arduino και παραδείγματα σχεδίασης/υλοποίησης αναλογικών και ψηφιακών φίλτρων με τη γλώσσα wiring IDE. ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ του Πολυράβα Αναστάσιου, Α.Ε.Μ Επιβλέπων : Σταύρος Π. Δοκουζγιάννης Επίκουρος Καθηγητής Θεσσαλονίκη, Α.Π.Θ. 2017

2

3 Αφιέρωση στην οικογένειά μου

4

5 Ευχαριστίες Θα ήθελα να ευχαριστήσω από τα βάθη της καρδιάς μου τον κύριο επιβλέπων της διπλωματικής εργασίας μου, επίκουρο καθηγητή Δοκουζγιάννη Σταύρο, για την ουσιαστική και εμπεριστατωμένη καθοδήγηση και τις συμβουλές που μου παρείχε κατά την περίοδο εκπόνησης αυτής. Ήμουν ιδιαίτερα τυχερός που τον γνώρισα και έκτοτε, βρισκόταν πάντα δίπλα μου αρωγός σε ό,τι χρειαζόμουν. Η βοήθεια και η στήριξη που μου παρείχε ήταν καθοριστική στα πολλά και δύσκολα στάδια που μεσολάβησαν μέχρι την ολοκλήρωση της παρούσας διπλωματικής. Τον ευχαριστώ πολύ για όλα όσα µου δίδαξε, για το επιστημονικό υλικό που µου προσέφερε, τις συμβουλές, την συμπαράστασή και τις ώρες που µου αφιέρωσε. Ακόμη,θέλω να ευχαριστήσω την οικογένεια μου για την ηθική, ψυχολογική και οικονομική βοήθεια που μου προσέφεραν σε ολόκληρο το διάστημα των σπουδών μου. Ιούλιος 2017, Θεσσαλονίκη

6

7 Πρόλογος Η παρούσα διπλωματική εργασία έχει ως στόχο την παρουσίαση των βασικών τμημάτων της αρχιτεκτονικής του Arduino Uno (μικροεπεξεργαστής, μνήμες, σειριακή επικοινωνία κτλπ) και την υλοποίηση παραδειγμάτων αναλογικών, ψηφιακών φίλτρων σε αυτόν. Ο στόχος της χρησιμοποίησης φίλτρων στην πλακέτα του Arduino είναι η απομάκρυνση του θορύβου (noise cancelling) που μπορεί να εμφανιστεί κατά την λήψη των επιθυμητών δεδομένων από ένα αισθητήριο ή κάποια άλλη συσκευή. Το πρώτο κεφάλαιο αποτελεί μια μικρή εισαγωγή στο πρόβλημα και παρουσιάζει τις βασικές αιτίες που οδήγησαν στην παραπάνω σχεδίαση. Το δεύτερο κεφάλαιο εστιάζει στα διάφορα μοντέλα Arduino που μπορεί να προμηθευτεί ο χρήστης κι αναλύει τις διαφορές μεταξύ τους. Το τρίτο κεφάλαιο δίνει ιδιαίτερη έμφαση στην πλακέτα του Arduino Uno που χρησιμοποιήθηκε στην εκπόνηση των παραδειγμάτων της συγκεκριμένης διπλωματικής εργασίας. Το τέταρτο κεφάλαιο παρουσιάζει τον τρόπο με τον οποίο μπορεί κάποιος χρήστης να κατεβάσει και να εγκαταστήσει το προγραμματιστικό περιβάλλον του Arduino (IDE). Παράλληλα, παρατίθενται οι βασικές δομές (τελεστές, συναρτήσεις, τύποι μεταβλητών) που θα χρειαστεί ένας αρχάριος χρήστης για να μπορέσει να υλοποιήσει κάποιο πρόγραμμα στην πλακέτα του Arduino. Το πέμπτο κεφάλαιο αφορά την αρχιτεκτονική του μικροελεγκτή του Arduino. Στο κεφάλαιο αυτό δίνονται πληροφορίες για τον μικροεπεξεργαστή, την μνήμη, τις διακοπές, την λειτουργία αναμονής καθώς και την σειριακή επικοινωνία. Στο έκτο κεφάλαιο παρουσιάζεται εκτενώς η σχεδίαση ενός αναλογικού κατωδιαβατού (lowpass) φίλτρου με την τεχνική Chebyshev. Τα αποτελέσματα προέκυψαν με την χρήση του υπολογιστικού προγράμματος Matlab και του Multisim. Το έβδομο κεφάλαιο επικεντρώνεται στην σχεδίαση ψηφιακών φίλτρων που χρησιμοποιήθηκαν στην πλακέτα του Arduino Uno στο προγραμματιστικό περιβάλλον του Matlab. Αναλυτικότερα, σχεδιάστηκαν 2 ψηφιακά φίλτρα FIR (ένα lowpass κι ένα highpass) και 2 ψηφιακά φίλτρα IIR (ένα lowpass κι ένα highpass). Το όγδοο κεφάλαιο αποτελεί την συνέχεια του εβδόμου. Στο κεφάλαιο αυτό υλοποιούνται στον Arduino τα παραδείγματα των φίλτρων που εκπονήθηκαν στο Matlab ενώ παρουσιάζεται και μια πειραματική εφαρμογή των φίλτρων που σχεδιάστηκαν σε πραγματικό αισθητήριο. Τέλος, το ένατο κεφάλαιο περιλαμβάνει τα συμπεράσματα που προέκυψαν από τις παραπάνω αναλύσεις.

8

9 Περιεχόμενα Κεφάλαιο 1. Εισαγωγή Ιστορική αναδρομή πορείας μικροελεγχτών Το project Arduino, Κεφάλαιο 2. Η σειρά πλακετών ARDUINO Βασικά μοντέλα των πλακετών Arduino Arduino Uno Arduino 101 & Genuino Arduino Robot Arduino Mega 2560 & Genuino Mega Arduino Zero & Genuino Zero Arduino Due Arduino Mega ADK Arduino Pro Arduino Yun Arduino Gemma Arduino Lilypad Arduino Materia Άλλα μοντέλα πλακετών Arduino Arduino Shields Arduino Wifi shield Arduino Ethernet shield Arduino GSM Σύγκριση μεταξύ των μοντέλων Arduino 28 Κεφάλαιο 3. Η πλακέτα Uno & Genuino Uno 31

10 3.1. Τεχνικά χαρακτηριστικά Προγραμματισμός Επισημάνσεις Διαφορές με άλλες πλακέτες Τροφοδοσία Μνήμη Είσοδοι και έξοδοι Επικοινωνία Αυτόματη επανεκκίνηση λογισμικού Αναθεωρήσεις Οι ακροδέκτες (pins) της πλακέτας Arduino Uno 39 Κεφάλαιο 4. Προγραμματισμός του Arduino μέσω Wiring-IDE Εγκατάσταση προγράμματος Wiring-IDE Έλεγχος προγράμματος σε επίπεδο Complier Το GUI του Wiring-IDE Βασικά συντακτικά στοιχεία προγραμματισμού πλακετών Arduino μέσα από το περιβάλλον IDE Προγραμματιστικές Δομές Τύποι, Μεταβλητές και Σταθερές Τελεστές Συναρτήσεις Συναρτήσεις Ψηφιακών ακροδεκτών Συναρτήσεις Αναλογικών ακροδεκτών 66 Κεφάλαιο 5. Αρχιτεκτονική μικροεπεξεργαστή Arduino AVR CPU Core Στοίβα ALU - Μονάδα αριθμητικής λογικής Καταχωρητές Καταχωρητής κατάστασης Ανάλυση των bits του καταχωρητή Αρχείο μητρώου γενικής χρήσης Ο καταχωρητής X, ο καταχωρητής Y και ο καταχωρητής Z Δείκτης Στοίβας 77

11 Υψηλό byte στον δείκτη στοίβας Χαμηλό byte στον δείκτη στοίβας Χρόνος εκτέλεσης εντολών Επαναφορά και χειρισμός διακοπών Χρόνος απόκρισης διακοπής AVR Memories Επαναπρογραμματιζόμενη μνήμη προγράμματος Flash εντός του συστήματος Μνήμη SRAM δεδομένων Μνήμη δεδομένων EEPROM Η διεύθυνση EEPROM υψηλή Η διεύθυνση EEPROM χαμηλή Εγγραφή δεδομένων EEPROM Εγγραφή ελέγχου EEPROM Ρολόι συστήματος και επιλογές ρολογιού Ρολόι CPU clkcpu I/O Ρολόι Ρολόι Flash clkflash Ασύγχρονο ρολόι χρονοδιακόπτη clkasy Ρολόι ADC clkadc Πηγές ρολογιού Προεπιλεγμένη ροή ρολογιού Ακολουθία εκκίνησης ρολογιού Ταλαντωτής κρυστάλλων χαμηλής ισχύος Πλήρης ταλαντωτής κρυστάλλων Swing Ταλαντωτής κρυστάλλων χαμηλής συχνότητας Βαθμονομημένος εσωτερικός ταλαντωτής RC kHz εσωτερικός ταλαντωτής Εξωτερικό ρολόι Χρονοδιακόπτης/Ταλαντωτής μετρητών Ρυθμιστής εξόδου ρολογιού Προγραμματιστής ρολογιού συστήματος Διαχείριση ενέργειας και τρόποι αναμονής Τρόποι αναμονής BOD Απενεργοποίηση Λειτουργία αναστολής 100

12 Λειτουργία μείωσης θορύβου ADC Λειτουργία Power-Down Λειτουργία εξοικονόμησης ενέργειας Κατάσταση αναμονής Ελαχιστοποίηση της κατανάλωσης ενέργειας Τρόπος λειτουργίας αναστολής SCRST - Έλεγχος συστήματος και επαναφορά Επαναφορά του AVR Επαναφορά πηγών Ενεργοποίηση επαναφοράς Εξωτερική επαναφορά Παρακολούθηση συστήματος επαναφοράς Αναφορά εσωτερικής τάσης Έλεγχος τάσης Χρονοδιακόπτης Watchdog Χαρακτηριστικά Διακοπή Εντολές διακοπής στον ATmega328 / P Λειτουργία των bit σε διακοπή USART - Σύγχρονος πομποδέκτης ασύγχρονου δέκτη Σύγχρονη και ασύγχρονη σειριακή μετάδοση Ασύγχρονη Σειριακή Επικοινωνία Μονάδα ασύγχρονης επικοινωνίας Παραγωγή ρολογιών στον USART Λειτουργία Διπλής Ταχύτητας (U2Xn) Εξωτερικό ρολόι Λειτουργία συγχρονικού ρολογιού Μορφές πλαισίων Αρχικοποίηση USART Μεταφορά δεδομένων - Ο πομπός USART Απενεργοποίηση του πομπού Υποδοχή δεδομένων - Ο δέκτης USART Εγγραφή δεδομένων USART I/O 118 Κεφάλαιο 6. Σύνδεση αναλογικού φίλτρου στον Arduino 123

13 6.1. Υλοποίηση κατωδιαβατού φίλτρου CHEBYSHEV Υπολογισμός της συνάρτησης μεταφοράς Υλοποίηση της συνάρτησης μεταφοράς Μονάδα (I) Μονάδα (II) Ρύθμιση κέρδους-συναρτήσεις μεταφοράς μονάδων Μελέτη της συνάρτησης μεταφοράς στο Matlab Υλοποίηση του κυκλώματος φίλτρου στο Multisim 136 Κεφάλαιο 7. Ψηφιακά Φίλτρα Στάδιο 1 o Σχεδίαση σε περιβάλλον MATLAB Φίλτρο FIR LowPass Φίλτρο FIR HighPass Φίλτρο IIR LowPass Φίλτρο IIR HighPass 165 Κεφάλαιο 8. Ψηφιακά Φίλτρα Στάδιο 2 o Υλοποίηση με μικροελεγχτή Arduino Φίλτρο FIR LowPass Αρχική προσέγγιση στην εμπέδωση του φίλτρου FIR σε υλικό HW Συνδεσμολογία της αναπτυξιακής διάταξης Arduino Uno Διάγραμμα Ροής Αλγορίθμου και οργάνωση του πηγαίου κώδικα στον Arduino Uno Φίλτρο FIR HighPass Φίλτρο IIR LowPass Φίλτρο IIR HighPass Πίνακας χρονικών αποκρίσεων Πειραματική διάταξη για την υλοποίηση πειράματος με το αισθητήριο AM2302/DHT Τεχνικά χαρακτηριστικά του AM2302/DHT Συνδεσμολογία της πειραματικής διάταξης Κώδικας στο περιβάλλον του Arduino για το αισθητήριο AM2302/DHT Κεφάλαιο 9. Ανακεφαλαίωση Συμπεράσματα 197

14 Βιβλιογραφία 201 Παράρτημα 205

15 Κεφάλαιο 1 Εισαγωγή Εδώ και μερικές δεκαετίες, μια βασική αναζήτηση των τεχνολογικών κοινωνιών, παγκοσμίως, ήταν και είναι η δημιουργία τεχνολογικών υποδομών για την σχεδίαση μικρών ψηφιακών διατάξεων της καταναλωτικής ηλεκτρονικής. Το βασικό κίνητρο ήταν η μείωση του σχεδιαστικού κόστους, μέσω ανάθεσης έργων σε μικρότερες ομάδες σχεδιαστών (με προσόντα τεχνολογικής εκπαίδευσης), ώστε τα παραγόμενα τελικά προϊόντα να έχουν χαμηλή τιμή, κάτι που θα τα καταστούσε ανταγωνιστικά στην παγκόσμια αγορά Ιστορική αναδρομή πορείας μικροελεγχτών Intel 8080 Πριν από 43 χρόνια, το 1974, κυκλοφόρησε ο 8080 της INTEL ένας από τους πρώτους παγκόσμια, επιτυχημένους μικροεπεξεργαστές. Το 1979, ένας από τους διαδόχους του, ο 8088 αποτέλεσε τον βασικό μικροεπεξεργαστή του 1 ου προσωπικού Υπολογιστή της IBM. Τεχνολογία SV, τρανζίστορ, MHz clock και δυνατότητα σύνδεσης με μαθηματικό συνεπεξεργαστή (τον 8087). Ήδη τότε, στη δεκαετία του 70, έγινε εμφανές ότι ο μικροεπεξεργαστής δεν ήταν εύκολα εφαρμόσιμος για διατάξεις καταναλωτικής ηλεκτρονικής. Οι λόγοι ήταν δύο: 1

16 1. Για να λειτουργήσει ο μικροεπεξεργαστής έπρεπε να συνοδεύεται από ένα σύνολο κυκλωμάτων (δηλαδή συνολικά απαιτούνταν >1 chips). 2. Ο προγραμματισμός του ήταν ιδιαίτερα σύνθετος και προαπαιτούσε εξειδικευμένο προσωπικό. Άρχισαν λοιπόν να αναζητούνται απλούστεροι μικροεπεξεργαστές, με στόχο τις ψηφιακές διατάξεις ενός chip, που θα ήταν σε θέση να εμπεδώσουν ολόκληρο το σχεδιαστικό έργο. Τα κυκλώματα αυτά ονομάστηκαν μικροελεγχτές (microcontrollers ή μ/controllers). Intel 8048 Το 1980 τέθηκε σε κυκλοφορία, από την INTEL, ένας από τους πρώτους μικροελεγχτές τεχνολογίας CMOS, o Αρχιτεκτονική Harvard των 8 bit, με εσωτερικές και εξωτερικές μνήμες 2 ΚΒ ROM και 128 Bytes RAM, με clock των 11 MHz και περίπου 0.7 MIPS, αποτελούσε έναν από τους κυριότερους μικροελεγχτές της εποχής του, Σχ Παράχθηκε για 10 ολόκληρα χρόνια ( 1990) και αποτέλεσε τον ελεγχτή πολλών εκτυπωτών της εποχής του. 2

17 Σχήμα 1.1. Intel

18 Intel 8051 Γύρω στο 1980 δρομολογήθηκε ο INTEL 8051 μικροελεγχτής, τεχνολογίας CMOS με τρανζίστορ MOSFET, Σχ Ο 8051 συγκεντρώνει σε ένα κύκλωμα: 1x 8-bit ALU, 1x 8-bit data bus, 2x 16-bit address bus, Εντολές πολλαπλασιασμού, διαίρεσης και σύγκρισης, 4x γρήγορα Register Buffers, με 8 καταχωρητές το καθένα, Σύστημα διακοπών, 4x 8-bit αμφίδρομες θύρες I/O με την ιδιότητα διευθυνσιοδότησης της καθεμιάς, 2x μονάδα UART (serial port), 2x 16-bit counter/timer, Κύκλωμα εξοικονόμησης ενέργειας. Οι παραπάνω ιδιότητες εκλήφθηκαν από την παγκόσμια τεχνολογική κοινότητα ως επαναστατικές. Σύντομα ο 8051 κατέκτησε την παγκόσμια αγορά. Το 1996 σταματά η παραγωγή του, και η INTEL πουλά την πατέντα σε πολλούς κατασκευαστές. Μάλιστα, η ATMEL τον κατασκευάζει έως και σήμερα. Ο 8051 δεν έχει ακόμα ενσωματωμένο μετατροπέα ADC ή και DAC. 4

19 Σχήμα 1.2. Intel

20 AMD Am29000 ~ 29k Το 1987 η AMD (Advanced Micro Devices, η παλιά Sunnyvale των ΗΠΑ), ανέπτυξε την οικογένεια των 32-bit RISC μικροεπεξεργαστών και μικροελεγχτών, που θεωρήθηκε η πλέον πετυχημένη στον έλεγχο εκτυπωτών laser. Το 1995 η AMD σταμάτησε την ανάπτυξη της οικογένειας, μεταφέροντας το προσωπικό στην ανάπτυξη επεξεργαστών της σειράς και πάνω (δεν συνέφερε τόσο η υποστήριξη εκτυπωτών). Με συμφωνία με την INTEL, μετέφερε μέρος της τεχνογνωσίας στην οικογένεια της INTEL. FMC (Ford Motor Company), κύκλωμα ECU και INTEL 8061, 8096, και Στις αρχές του 1970, η FMC πειραματίστηκε με τον ηλεκτρονικό έλεγχο ανάφλεξης οχημάτων, μέσω του προσωπικού υπολογιστή της εποχής του PDP-11 της DEC. Το 1978, η Toshiba κατασκεύασε το κύκλωμα ECU (Engine Control Unit) που αντέγραφε τον PDP-11, ο οποίος, ως γνωστόν, ήταν κατασκευασμένος με κυκλώματα n-mos και TTL. Ήταν ένας 12-bit μικροεπεξεργαστής, που ποτέ δεν δόθηκε για εμπορική χρήση. Μετά από μερικά χρόνια, η FORD και η Tοshiba, υπέβαλαν αίτημα στην INTEL να σχεδιάσει εκείνη τον επεξεργαστή στη μορφή ενός μικροελεγχτή. Έτσι, γεννήθηκε η οικογένεια κυκλωμάτων INTEL 8061 που μετεξελίχθηκε στις οικογένειες 8096, και Intel 8096 (1982) Ο μικροελεγχτής 8096 εκτός της εφαρμογής στον έλεγχο ανάφλεξης οχημάτων, εφαρμόστηκε στις πλακέτες σκληρών δίσκων HD, στα modem, στους εκτυπωτές, στην αναγνώριση προτύπων εικόνων και στον ηλεκτρονικό έλεγχο κινητήρων. Περιελάμβανε clock 10 MHz και 10-bit ADC. Το 2007 ( πριν από 10 χρόνια), η INTEL σταμάτησε την παραγωγή των εν λόγω κυκλωμάτων. Ακολούθησε την αγορά των πολυπηρηνικών επεξεργαστών. Ψάχνοντας για εταιρία που θα δεχόταν να συνεχίσει να παράγει τα εν λόγω κυκλώματα, η INTEL παρέδωσε (σχεδόν δώρισε) τα δικαιώματα παραγωγής σε Ρωσική εταιρία. 6

21 Atmel AVR (1997) Το προγονικό κύκλωμα για τους μικροελεγχτές AVR σχεδιάστηκε σε Νορβηγική εταιρία (NTH). Βασιζόταν στον 8051, με την διαφορά ότι επιδιωκόταν να υπάρχουν μεταφραστές (compilers) και αποσφαλματιστές (debuggers) από γλώσσες υψηλού επιπέδου (C/C++). Σε αυτό αποσκοπούσε η συνεργασία με Σουηδική εταιρία την TAR Systems, που (από το 1983) έβαλε ως στόχο τις γλώσσες υψηλού επιπέδου ως επίκεντρο για την περιγραφή αλγορίθμων σε μικροεπεξεργαστές και μικροελεγχτές. Η ATMEL αγόρασε τα δικαιώματα του προγονικού AVR από τους Νορβηγούς, έδωσε την ονομασία AVR στην οικογένεια κυκλωμάτων που θα δρομολογούσε. Καινοτομία της οικογένειας AVR 1. Είναι από τις πρώτες οικογένειες που χρησιμοποίησαν μνήμες flash-eprom (ενσωματωμένων μέσα στα κυκλώματα) για την καταχώρηση του προγράμματος σε γλώσσα μηχανής. Τα παλαιότερα κυκλώματα μικροελεγχτών της εποχής (άλλων κατασκευαστών) εφάρμοζαν ROM, EPROM και EEPROM. 2. Η ιδέα ενός εύχρηστου μικροελεγχτή που θα προγραμματιζόταν σε γλώσσες επιπέδου (C/C++) αποδέσμευσε τους σχεδιαστές αναλογικού/ψηφιακού εξοπλισμού από την σε βάθος γνώση του υλικού HW και τον σχεδιασμό των ηλεκτρονικών θεμάτων. Η AVR κατανοώντας την καινοτομία της και ταυτόχρονα το «timing» που εισήγαγε την οικογένεια AVR, χρηματοδότησε μεμονωμένους συγγραφείς που μετέφραζαν ή έγραφαν δικά τους βιβλία επάνω στα κυκλώματα AVR. Έτσι, τα κυκλώματα αυτά εξαπλώθηκαν σε όλες σχεδόν τις χώρες του πλανήτη. Οι αντιπροσωπευτικές αρχιτεκτονικές κυκλωμάτων AVR δίνονται στα ακόλουθα σχήματα. 7

22 Σχήμα 1.3. AVR μπλοκ διάγραμμα 8

23 Σχήμα 1.4. AVR CPU Σχήμα 1.5. AVR Board 9

24 Ανακεφαλαίωση Tα σημαντικά ορόσημα, κατά την εξέλιξη των μικροελεγχτών, θα μπορούσαν να συνοψιστούν στα ακόλουθα: Ο πρώτος παγκοσμίως μικροελεγχτής. CPU, ROM/RAM, I/O, όλα μαζί σε ένα τσιπ 1976-nMOS, 1980-CMOS) Εμπλουτισμένη αρχιτεκτονική που προσεγγίζει τις δυνατότητες του υπολογιστή PDP-11, (1980). Δεν συμπεριλαμβάνει μετατροπέα ADC Εφαρμογές στους σύγχρονους δίσκους, κυκλώματα ανάφλεξης αυτοκινήτων, modem, εκτυπωτές, (1982). 16-bit, 10 MHz clock και 10-bit ADC. AVR. Εδραιώνεται για 1 η φορά παγκοσμίως η ενσωμάτωση μνημών flash-eprom σε μικροελεγχτή (1997). Εφαρμόζονται μεταγλωττιστές από πηγαίους κώδικες σε C/C++. Το 1973 πουλήθηκαν 500 mln AVR μικροελεγχτές.ταυτόχρονα, αναπτύχθηκαν εφαρμογές όπως gaming, αποκωδικοποιητές TV (επίγειας και δορυφορικής), ψηφιακή TV, ψηφιακό audio (MP3/MP4 walkman), προσωπικοί υπολογιστές PC, συσκευές ρομποτικής, Ιατρικής, ακτινογραφίας, υπερήχων, μαγνητικής τομογραφίας και πολλές άλλες. Στο πεδίο των εργαλείων σχεδίασης εμφανίστηκαν λογισμικά όπως το Mewtor Graphics, Synopsis, Cadence, κα, που έγιναν περισσότερο προσιτά για το ευρύ σχεδιαστικό κοινό. Το 2003 εμφανίζονται FPGA με 100 χιλιάδες FF σε ένα τσιπ, τα οποία άρχισαν να ανταγωνίζονται τους μικροελεγχτές ως προς τις εφαρμογές τους. Τα FPGA ήταν ακόμα δύσχρηστα για 2 λόγους: 1. Λόγω της VHDL, που ήταν ακόμα άγνωστη στην ευρεία σχεδιαστική κοινότητα. 2. Λόγω των πολλών ακροδεκτών τους ( 1100 ακροδέκτες), η εφαρμοστικότητα των FPGA θα ήταν σχεδόν ανέφικτη αν δε υπήρχαν αναπτυξιακές διατάξεις με τα σχετικά περιφερειακά τους. Η άμεση (χωρίς αναπτυξιακές διατάξεις) χρήση των FPGA θα απαιτούσε από μικρές σχεδιαστικές εταιρίες να εφοδιάζονται με υψηλών προδιαγραφών εξοπλισμό τυπωμένης πλακέτας και πολύπλοκων διασυνδέσεων με τα υπό έλεγχο συστήματα. 10

25 1.2. Το project Arduino, 2005 Η εμπειρία από το πεδίο των FPGA είχε άμεση επίδραση στον τεχνολογικό χώρο των μικροελεγχτών. Έτσι, ήρθε η σειρά του Arduino. H ονομασία Arduino δεν αναφέρεται σε μ/chip αλλά σε αναπτυξιακή πλακέτα (όπως για τα FPGA) που προορίζεται για συγκεκριμένη κατηγορία εφαρμογών κι ως εκ τούτου, περιέχει επάνω του όλα τα απαραίτητα στοιχεία που θα επιτρέψουν την άμεση εφαρμογή χωρίς προσθήκες επιπλέον εξαρτημάτων ή την απαίτηση εσωτερικών διασυνδέσεων. Σχήμα 1.6. Βασική ιδέα διατάξεων των πλακετών Arduino Τα σχήματα που ακολουθούν παρουσιάζουν 3 διαφορετικές συνδεσμολογίες πλακετών Arduino. 11

26 Σχήμα 1.7. Σύνδεση Arduino με DC κινητήρα Σχήμα 1.8. Σύνδεση Arduino με LCD 12

27 Σχήμα 1.9. Σύνδεση Arduino με LDR αισθητήριο Τα βασικότερα χαρακτηριστικά των πλακετών Arduino είναι: Ο σχεδιαστής διαχειρίζεται («βλέπει») την πλακέτα Arduino, αγνοώντας τον μικροελεγχτή που έχει εγκατεστημένο στο εσωτερικό της. Χρησιμοποιεί για την σχεδίαση την γλώσσα Wiring που είναι μια γλώσσα ανοικτού κώδικα και λειτουργεί στο περιβάλλον IDE (Integrated Development Environment). Η Wiring είναι εφαρμογή cross-platform γραμμένη σε Java που παράχθηκε από IDE σχεδιασμένο για τη γλώσσα Processing (Processing IDE-γλώσσα για ηλεκτρολόγους σχεδιαστές ελέγχου διατάξεων και συσκευών με Arduino). Η Processing είναι οπτική γλώσσα για μουσικούς, σχεδιαστές multimedia (π.χ. εργαζόμενοι στα τηλεοπτικά κανάλια TV) που δεν εξειδικεύονται στον προγραμματισμό, όμως μπορούν να δίνουν οπτικό αποτέλεσμα που είναι ανέφικτο για κλασικούς programmers. 13

28 Το IDE για την Wiring (Wiring IDE) περιέχει μια βιβλιοθήκη Wiring ( με το ίδιο όνομα) γραμμένη σε C/C++. Τα προγράμματα στην Wiring γράφονται σε C/C++. Στους συντακτικούς κανόνες της C/C++ προστίθενται 2 λέξεις-κλειδί (συναρτήσεις). Πρόκειται για τις setup() και loop(), που εκτελούνται επαναληπτικά έως ότου διακοπεί η τροφοδοσία ρεύματος στην πλακέτα Arduino (θα παρουσιαστεί αργότερα στο κεφάλαιο 4). Εκτός από την γλώσσα Processing και Wiring, σχεδιάστηκαν και επιπλέον γλώσσες όπως: Pure Data Περιβάλλον EVI για γραφικό χειρισμό προγραμματιστικών στοιχείων VPL (Visual Programm Language) για την δημιουργία μουσικής μέσω υπολογιστή. Μax/MSP Είναι γλώσσα VPL για μουσική και multimedia (εικόνα, ήχος, χάρτες, κ.α.). Super Collider Για real-time audio synthesis και αλγοριθμική σύνθεση μουσικής (algorithm music), ακουστικής έρευνας (συμπεριλαμβανομένων θεμάτων Ιατρικής), κτλπ. Δεν αποκλείεται, στο άμεσο μέλλον, να παραχθούν πλακέτες Arduino για Ιατρικές Εφαρμογές, όπως λ.χ. στην έρευνα ανθρωπίνου εγκεφάλου, που θα επιτρέπει την καταγραφή των σημάτων από τα ηλεκτρόδια τοποθετημένα κατευθείαν στον ανθρώπινο εγκεφαλικό φλοιό. Ακολουθεί το ιστορικό των πλακετών Arduino. Έτος Μοντέλο 2006 Arduino Mini 2008 Arduino Duemilanore (ATmega 168, ATmega 328) 2009 Arduino Mega (ATmega 1280) 2011 Arduino Leonardo (ATmega 32μ4) 2012 Arduino Due (Atmel SAM3X8E με πυρήνα ARM Cortex-M3) 2012 Arduino Micro (ATmega 32μ4) 2013 Arduino Yun (ATmega 32μ4 και Atheros AR9331). Το πρώτο WiFi για Linux. 14

29 Συμπεράσματα: Σε αντίθεση με τους μικροελεγχτές περιόδου , που η σχεδίαση προαπαιτούσε εξαιρετικά μεγάλη εξειδίκευση, τα Arduino συνοδεύονται με λογισμικό προγραμματισμού που είναι χαρακτηριστικό για μια επαγγελματική κοινότητα που δεν είναι απαραίτητο να γνωρίζει το HW των μικροελεγχτών. Δεδομένης της εξοικείωσης όλου του πληθυσμού με τους προσωπικούς υπολογιστές, τα γραφικά/οπτικά περιβάλλοντα προγραμματισμού μπορούν (ή θα μπορούν) να προσαρμόσουν τις σχεδιαστικές ανάγκες κάθε μιας σχεδόν επαγγελματικής τάξης σε αντίστοιχα περιβάλλοντα προγραμματισμού. Πλέον, ο σχεδιαστής δεν θα χρειάζεται να γνωρίζει τα περιεχόμενα μιας πλακέτας, παρά μόνο το περιβάλλον προγραμματισμού του λογισμικού του. Κατά αυτόν τον τρόπο η σχεδίαση συχνά σύνθετων συστημάτων μπορεί να αναχθεί σε απλή διαχείριση εικονιδίων λογισμικού, δημιουργημένο από παιδαγωγούς ή καλλιτέχνες. Παράδειγμα αποτελεί η εφαρμογή του Arduino στον έλεγχο των μικρών ρομπότ Lego, από μαθητές της 2-βάθμιας εκπαίδευσης σε λύκειο της Θεσσαλονίκης. Επικρατεί μια παγκόσμια ροπή προς σμίκρυνση μεγέθους εξαρτημάτων, τα οποία θα συναρμολογούνται από κοινού με μικροελεγχτές, δίνοντας αρκετά μικρές γεωμετρικές κατασκευές που θα χωρούν σε μια παλάμη. Αυτό είναι και το επόμενο στάδιο μετεξέλιξης των ενσωματωμένων συστημάτων. Σχήμα Αναγωγή μικροελεγχτή σε επίπεδο μονάδας ελεγχτή 15

30 16

31 Κεφάλαιο 2 Η σειρά πλακετών ARDUINO 2.1. Βασικά μοντέλα των πλακετών Arduino Το Arduino διαθέτει αρκετά μοντέλα που παρέχονται στην αγορά. Η ποικιλία αυτή των μοντέλων, που παράγονται καθημερινά, φιλοδοξεί στην κάλυψη των διαφορετικών αναγκών των χρηστών τους. Κάθε μοντέλο διαθέτει τα δικά του χαρακτηριστικά, που το καθιστούν ιδανικό για συγκεκριμένες χρήσεις. Στην συνέχεια παρατίθενται μερικά από τα πιο γνωστά μοντέλα Arduino Uno Ο Uno είναι η καλύτερη επιλογή για κάποιον καινούργιο χρήστη που θέλει να πειραματιστεί με τα ηλεκτρονικά κυκλώματα και τον προγραμματισμό τους. Το μοντέλο αυτό είναι το πιο χρησιμοποιημένο και διαθέτει τις περισσότερες πωλήσεις από όλη την οικογένεια των Arduino. Χρησιμοποιεί τον επεξεργαστή ATmega328P (8-bit), έχει τάση λειτουργίας 5V και ταχύτητα ρολογιού 16MHz. 17

32 Σχήμα 2.1. Arduino Uno Σχήμα 2.2. Arduino Uno Pins Arduino 101 & Genuino 101 Το μοντέλο αυτό συνδυάζει τις λειτουργίες που φέρουν οι κλασικές πλακέτες Arduino με μερικές επιπλέον δυνατότητες. Η πλακέτα του 101 έχει την δυνατότητα να αναγνωρίσει 18

33 χειρονομίες ενώ διαθέτει ένα επιταχυνσιόμετρο έξι αξόνων κι ένα γυροσκόπιο. Επίσης, δίνει την δυνατότητα ελέγχου των προγραμμάτων μέσω Bluetooth. Χρησιμοποιεί τον επεξεργαστή Intel Curie χαμηλής ισχύος (32-bit), έχει τάση λειτουργίας 3.3V και ταχύτητα ρολογιού 32MHz. Σχήμα 2.3. Arduino Arduino Robot Ο Arduino Robot έχει δύο μικροεπεξεργαστές, έναν για καθεμία από τις δύο πλακέτες που διαθέτει. Η κινητήρια πλακέτα (Motor Board) ελέγχει τις κινήσεις ενώ η πλακέτα ελέγχου (Control Board) επεξεργάζεται τα δεδομένα που λαμβάνει από τους αισθητήρες κι αποκρίνεται αντιστοίχως. Και οι δύο μικροεπεξεργαστές που χρησιμοποιούνται είναι ATmega32u4 (8-bit), έχουν τάση λειτουργίας 5V και ταχύτητα ρολογιών 16MHz. 19

34 Σχήμα 2.4. Arduino Robot Arduino Mega 2560 & Genuino Mega 2560 Ο Arduino mega 2560 είναι βασισμένος στον μικροεπεξεργαστή ATmega2560 (8-bit) κι είναι σχεδιασμένος για πιο σύνθετες διεργασίες. Απευθύνεται σε πιο έμπειρους σχεδιαστές και για τον λόγο αυτό διαθέτει 54 ψηφιακούς ακροδέκτες εισόδου/εξόδου, 16 αναλογικές εισόδους και περισσότερο χώρο για τα προγράμματα του χρήστη. Το μοντέλο αυτό είναι ιδανικό για προγράμματα ρομποτικής και 3D εκτυπωτές. Η τάση λειτουργίας του ανέρχεται στα 5V κι η ταχύτητα ρολογιού στα 16 MHz. Σχήμα 2.5. Arduino Mega 20

35 Arduino Zero & Genuino Zero Το μοντέλο αυτό ουσιαστικά είναι μια πιο σύνθετη έκδοση του Uno. Το βασικό χαρακτηριστικό του είναι ότι παρέχει επεκτάσεις της τάξης των 32-bit σε αντίθεση με τα 8-bit του Uno. Χρησιμοποιεί τον επεξεργαστή ATSAMD21G18, 32-Bit ARM Cortex M0+, έχει τάση λειτουργίας 3.3V και ταχύτητα ρολογιού 48MHz. Ο Arduino Zero χρησιμοποιείται ευρέως σε εφαρμογές που αφορούν το IoT (Internet of Things). Σχήμα 2.6. Arduino Zero Arduino Due Η πλακέτα αυτή διαθέτει επίσης έναν ARM μικροεπεξεργαστή, τον AT91SAM3X8E (32-bit). Αποτελεί μια ακόμη πιο εξελιγμένη έκδοση του Arduino Zero, καθώς έχει 54 ψηφιακούς ακροδέκτες εισόδου/εξόδου και 12 αναλογικές εισόδους. Το μοντέλο αυτό ενδείκνυται για αρκετά σύνθετες-απαιτητικές χρήσεις, χαρακτηρίζεται από τάση τροφοδοσίας των 3.3V και ταχύτητα ρολογιού 84 MHz. 21

36 Σχήμα 2.7. Arduino Due Arduino Mega ADK Ο Arduino Mega ADK αποτελεί την εξελιγμένη έκδοση του Arduino Mega με την διαφορά ότι σχεδιάστηκε για να λειτουργεί με λογισμικό Android, παρέχοντας στους χρήστες εφαρμογών κινητής τηλεφωνίας ένα επιπλέον χρήσιμο κι αξιόπιστο ηλεκτρονικό κύκλωμα. Τα χαρακτηριστικά του είναι παρόμοια με αυτά της πλακέτας Mega δηλαδή, μικροεπεξεργαστής ATmega2560 (8-bit), τάση λειτουργίας που ανέρχεται στα 5V και ταχύτητα ρολογιού της τάξης των 16 MHz. Σχήμα 2.8. Arduino Mega ADK 22

37 Arduino Pro Ο Arduino Pro είναι η ιδανική λύση για «μικρές» εφαρμογές. Η πλακέτα αυτή χρησιμοποιείται κατά κόρον σε εφαρμογές και εγκαταστάσεις όπου απαιτείται να χρησιμοποιηθεί κάποιο ολοκληρωμένο κύκλωμα για μεγάλο χρονικό διάστημα, χωρίς αλλαγή ή κάποια τροποποίηση. Το μικρό του μέγεθος σε συνδυασμό με το γεγονός πως πωλείται σε δύο εκδόσεις (3.3V και 8 MHz / 5V και 16 ΜHz) είναι αυτά που το καθιστούν μια άριστη επιλογή για τον εκάστοτε απαιτητικό χρήστη. Σχήμα 2.9. Arduino Pro Arduino Yun Ο Arduino Yun χρησιμοποιεί τον ATmega32u4 (8-bit, 5V, 16MHz) και τον Atheros AR9331 (3.3V, 400MHz). Το μοντέλο αυτό συνδυάζει τα πλεονεκτήματα που προσφέρει το Arduino με τις δυνατότητες των Linux. Για τον λόγο αυτό θεωρείται και ένα από τα πιο αποδοτικά μοντέλα σε εφαρμογές που αφορούν το IoT (Internet of Things) αλλά και σε εφαρμογές που ασχολούνται με την επικοινωνία συσκευών. 23

38 Σχήμα Arduino Yun Arduino Gemma Ο Arduino Gemma είναι μια μικρή πλακέτα που μπορεί να «φορεθεί» (wearable electronics) και χρησιμοποιείται σε πολλές εφαρμογές. Χρησιμοποιεί τον ATtiny85 (8-bit) για μικροεπεξεργαστή, έχει τάση τροφοδοσίας 3.3V και ταχύτητα ρολογιού 8MHz. Είναι αρκετά εύχρηστος και μπορεί να τροφοδοτηθεί είτε μέσω ενός καλωδίου USB συνδεδεμένου σε κάποιον Η/Υ είτε μέσω μιας συμβατικής μπαταρίας. Σχήμα Arduino Gemma 24

39 Arduino Lilypad Η πλακέτα αυτή χαρακτηρίζεται επίσης από μικρές διαστάσεις, όπως κι ο Arduino Gemma. Τα βασικά πλεονεκτήματα που έχει είναι ότι μπορεί να ραφτεί στο ύφασμα της εφαρμογής για την οποία προορίζεται ή σε αντίστοιχες πηγές τροφοδοσίας, αισθητήρες και αγώγιμα νήματα. Χρησιμοποιεί τον ATmega168V ή τον ATmega328V, έχει τάση τροφοδοσίας που κυμαίνεται από 2.7-5V και ταχύτητα ρολογιού της τάξης των 8MHz. Σχήμα Arduino Lilypad Arduino Materia 101 Ο Arduino Materia 101 είναι ουσιαστικά ο πρώτος επίσημος εκτυπωτής 3D που κυκλοφόρησε από την εταιρία Arduino. Σχήμα Arduino Materia

40 2.2. Άλλα μοντέλα πλακετών Αrduino Arduino Shields Η έννοια του shield (ασπίδα) στην αρχιτεκτονική arduino, είναι η ενσωμάτωση επιπλέον υλικού (hardware) στο μικροελεγκτή που του προσδίδει μια νέα ιδιότητα, κυρίως σε θέματα επικοινωνίας. Με την προσαρμογή του υλικού αυτού η επικοινωνία από σειριακή (μέσω usb) μετατρέπεται στην αντίστοιχη που διακρίνει το shield. Σχήμα Arduino Shields Arduino Wifi shield Επιτυγχάνει ασύρματη επικοινωνία μέσω wifi με το διαδίκτυο. Περιλαμβάνεται θύρα υποδοχής SD. Σχήμα Arduino Wifi 26

41 Arduino Ethernet shield Επιτυγχάνει ενσύρματη επικοινωνία με το διαδίκτυο με τη χρήση καλωδίου Ethernet. Απαιτείται η χρήση router (δρομολογητή) για την εισαγωγή του καλωδίου. Περιλαμβάνεται θύρα υποδοχής SD. Σχήμα Arduino Ethernet Arduino GSM Επιτυγχάνει ασύρματη επικοινωνία με μία προκαθορισμένη ασύρματη μονάδα. Η εμβέλεια της επικοινωνίας ορίζεται έως και 100 πόδια σε εσωτερικούς χώρους ή έως και 300 πόδια σε εξωτερικούς. Περιλαμβάνεται θύρα υποδοχής SD. Σχήμα Arduino GSM Επιτυγχάνει επικοινωνία με τη χρήση GSM δικτύου. Απαιτείται η χρήση GSM κάρτας από κάποιον τηλεφωνικό πάροχο κινητής τηλεφωνίας. 27

42 2.3. Σύγκριση μεταξύ των μοντέλων Arduino Όνομα Επεξεργαστής Τάση λειτουργίας/εισόδου Ταχύτητα CPU Αναλογικοί είσοδοι/έξοδοι Uno ATmega328P 5V / 7-12V 16 MHz 6/0 101 Intel Curie 3.3V / 7-12V 32 MHz 6/0 Robot ATmega32u4 5V 16 MHz 6/0 Mega 2560 ATmega2560 5V / 7-12V 16 MHz 16/0 Zero ATSAMD21G18 3.3V / 7-12V 48 MHz 6/1 Due ATSAM3X8E 3.3V / 7-12V 84 MHz 12/2 Mega ADK ATmega2560 5V / 7-12V 16 MHz 16/0 Pro ATmega V / V 8 MHz 6/0 ATmega328P 5V / 5-12V 16 MHz Yun ATmega32U4 AR9331 Linux 5V 3.3V 16 MHz 400 MHz 12/0 Ethernet ATmega328P 5V / 7-12V 16 MHz 6/0 Gemma ATiny85 3.3V / 4-16V 8 MHz 1/0 Lilypad ATmega168V V/ 8 MHz 6/0 ATmega328P V Σχήμα Σύγκριση επεξεργαστών 28

43 Όνομα Ψηφιακοί IO/PWM EEPROM [kb] SRAM [kb] Flash [kb] USB UAR T Uno 14/ Regular / Regular - Robot 20/6 1 KB (ATmega32u 4)/ 512 Kbit (I2C) 2.5 KB (ATmega3 2u4) 32 ΚΒ / 4KB bootlo ader 1 1 Mega / Regular 4 Zero 14/ Micro 2 Due 54/ Micro 4 Mega ADK 54/ Regular 4 Pro 14/6 512 Bytes kb 2 32 Yun 20/ MB MB Micro 1 Etherne t 14/ Regular - Gemma 3/ Micro 0 Lilypad 14/6 512 Bytes Σχήμα Σύγκριση μνημών 29

44 30

45 Κεφάλαιο 3 Η πλακέτα Uno & Genuino Uno Ο Arduino / genuino Uno είναι μια πλακέτα μικροελεγκτή που βασίζεται στον ATmega328P. Έχει 14 ψηφιακούς ακροδέκτες I/O (εκ των οποίων 6 μπορούν να χρησιμοποιηθούν ως έξοδοι PWM), 6 αναλογικές εισόδους, έναν κρύσταλλο χαλαζία 16 MHz, μια σύνδεση USB, μια υποδοχή ρεύματος, μια κεφαλή ICSP και ένα κουμπί επαναφοράς (reset). Περιέχει όλα όσα χρειάζονται για την υποστήριξη του μικροελεγκτή. Το μόνο που χρειάζεται είναι να συνδεθεί σε έναν υπολογιστή με ένα καλώδιο USB ή να τροφοδοτηθεί με ένα προσαρμογέα AC-σε-DC ή κάποια μπαταρία για να αρχίσει να λειτουργεί. Ένα από τα πλεονεκτήματα του UNO είναι ότι ο χρήστης του μπορεί να πειραματιστεί χωρίς να προβληματίζεται ιδιαίτερα για το αν κάνει κάποιο λάθος, καθώς στη χειρότερη περίπτωση μπορεί να αντικαταστήσει το τσιπ για μερικά δολάρια και να αρχίσει ξανά από την αρχή. Η λέξη "Uno" σημαίνει ένα στα ιταλικά και επιλέχτηκε για να σηματοδοτήσει την κυκλοφορία του λογισμικού Arduino (IDE) 1.0. Η πλακέτα Uno και η έκδοση 1.0 του λογισμικού Arduino (IDE) ήταν οι εκδόσεις αναφοράς του Arduino, που πλέον έχουν εξελιχθεί σε νεότερες εκδόσεις. Η πλακέτα Uno είναι η πρώτη από μια σειρά πλακετών Arduino USB και το μοντέλο αναφοράς για την πλατφόρμα Arduino. 31

46 3.1. Τεχνικά χαρακτηριστικά Στην συνέχεια παρουσιάζονται τα τεχνικά χαρακτηριστικά της πλακέτας Arduino Uno, όπως αυτά παρέχονται από την κατασκευάστρια εταιρία. Σχήμα 3.1. Τεχνικά χαρακτηριστικά ATmega328P 3.2. Προγραμματισμός Ο Arduino / genuino Uno μπορεί να προγραμματιστεί με το λογισμικό Arduino (IDE). Επιλέγουμε Arduino / genuino Uno από την καρτέλα Tools > Board menu (σύμφωνα με τον μικροελεγκτή της πλακέτας που χρησιμοποιούμε). Ο ATmega328 παρέχεται στον Arduino / genuino Uno προγραμματισμένος με ένα bootloader που μας επιτρέπει να ανεβάσουμε νέο κώδικα σε αυτόν χωρίς τη χρήση ενός 32

47 εξωτερικού προγραμματιστή υλικού. Επικοινωνεί χρησιμοποιώντας το πρωτόκολλο της αρχικής αναπτυξιακής κάρτας STK500. Παρέχεται επίσης η δυνατότητα να παρακαμφθεί ο bootloader και να προγραμματιστεί ο μικροελεγκτής μέσω του ICSP (In-Circuit Serial Programming) χρησιμοποιώντας τον Arduino ISP ή κάτι αντίστοιχο. Ο πηγαίος κώδικας του firmware του ATmega16U2 (ή 8U2 στις rev1 και rev2 πλακέτες) είναι διαθέσιμος στο αποθετήριο του Arduino. Ο ATmega16U2 / 8U2 είναι φορτωμένος με έναν bootloader DFU, ο οποίος μπορεί να ενεργοποιηθεί: Σε Rev1 πλακέτες: συνδέοντας τις συγκολλήσεις του jumper στο πίσω μέρος της πλακέτας (κοντά στο χάρτη της Ιταλίας) και στη συνέχεια επανεκκινώντας το 8U2. Σε Rev2 ή επόμενες πλακέτες: αξιοποιώντας μια αντίσταση που υπάρχει και συνδέει την 8U2 / 16U2 HWB γραμμή με τη γείωση, καθιστώντας το ευκολότερο να τεθεί σε λειτουργία DFU. Έπειτα, μπορεί να χρησιμοποιηθεί το λογισμικό της Atmel FLIP (Windows) ή ο προγραμματιστής DFU (Mac OS X και Linux) για να φορτωθεί ένα νέο firmware. Διαφορετικά, μπορεί να χρησιμοποιηθεί η κεφαλή ISP με έναν εξωτερικό προγραμματιστή (αντικαθιστώντας τον bootloader DFU) Επισημάνσεις Ο Arduino / genuino Uno έχει μια επαναφερόμενη ηλεκτρική ασφάλεια (polyfuse) που προστατεύει τις θύρες USB του υπολογιστή από βραχυκυκλώματα και υπερτάσεις. Αν και οι περισσότεροι υπολογιστές διαθέτουν την δική τους εσωτερική προστασία, η έξτρα αυτή ηλεκτρική ασφάλεια παρέχει ένα επιπλέον επίπεδο προστασίας. Εάν εφαρμοστούν περισσότερα από 500 ma στη θύρα USB, η ασφάλεια θα διακόψει αυτόματα την σύνδεση μέχρι να αποκατασταθεί το βραχυκύκλωμα ή η υπέρταση. 33

48 3.4. Διαφορές με άλλες πλακέτες Το Uno διαφέρει από όλες τις προηγούμενες πλακέτες στο ότι δεν χρησιμοποιεί το FTDI USB-σε-σειριακό οδηγό τσιπ. Αντ 'αυτού, διαθέτει το Atmega16U2 (Atmega8U2 μέχρι την έκδοση R2) που έχει προγραμματιστεί ως USB-σε-σειριακό μετατροπέα Τροφοδοσία Η πλακέτα Arduino / genuino Uno μπορεί να τροφοδοτηθεί μέσω της σύνδεσης USB ή με κάποια εξωτερική πηγή τροφοδοσίας. Η πηγή τροφοδοσίας επιλέγεται αυτόματα. Η εξωτερική (μη-usb) τροφοδοσία μπορεί να προέλθει είτε από έναν AC-σε-DC μετατροπέα (wall-wart) ή κάποια μπαταρία. Ο μετατροπέας μπορεί να συνδεθεί με την τοποθέτηση ενός θετικού-κέντρου βύσματος 2,1 χιλιοστών στην υποδοχή ισχύος (power jack) της πλακέτας. Οι πόλοι της μπαταρίας μπορούν να εισαχθούν στους ακροδέκτες GND και Vin της σύνδεσης POWER. Η πλακέτα μπορεί να λειτουργήσει με εξωτερική τροφοδοσία της τάξης των 6-20 βολτ. Εάν η πλακέτα τροφοδοτείται με λιγότερα από 7V, ο ακροδέκτης των 5V μπορεί να παρέχει λιγότερα από πέντε βολτ και η πλακέτα μπορεί να γίνει ασταθής. Εάν χρησιμοποιηθεί τροφοδοσία μεγαλύτερη από 12V, ο ρυθμιστής τάσης μπορεί να υπερθερμανθεί και να προκαλέσει ζημιά στην πλακέτα. Το συνιστώμενο εύρος τροφοδοσίας είναι 7 έως 12 βολτ. Οι ακροδέκτες τροφοδοσίας είναι οι ακόλουθοι: Vin. Η τάση εισόδου στην πλακέτα Arduino / genuino όταν χρησιμοποιείται μια εξωτερική πηγή ενέργειας (σε αντιδιαστολή με τα 5 βολτ από τη σύνδεση USB ή άλλες ρυθμιζόμενες πηγές ενέργειας). Μπορούμε να παρέχουμε τάση μέσω αυτού του ακροδέκτη ή αν έχουμε παροχή τάσης μέσω του υποδοχέα ισχύος, να αποκτήσουμε πρόσβαση μέσω αυτού του ακροδέκτη. 5V. Αυτός ο ακροδέκτης εξάγει μια ρυθμιζόμενη τάση 5V από τον ρυθμιστή στην πλακέτα. Η πλακέτα μπορεί να τροφοδοτηθεί από την υποδοχή ισχύος DC (7-12V), την υποδοχή USB (5V), ή τον ακροδέκτη VIN (7-12V). Η παροχή τάσης μέσω των 34

49 ακροδεκτών 5V ή 3.3V παρακάμπτει τον ρυθμιστή και μπορεί να βλάψει την πλακέτα, γι αυτό τον λόγο και δεν συνίσταται. 3V3. Μια τροφοδοσία 3,3 βολτ παράγεται από τον ρυθμιστή που έχει η πλακέτα. Η μέγιστη κατανάλωση ρεύματος είναι 50 ma. GND. Ακροδέκτες γείωσης. IOREF. Αυτός ο ακροδέκτης στην πλακέτα Arduino / genuino παρέχει την τάση αναφοράς με την οποία λειτουργεί ο μικροελεγκτής. Μια σωστά ρυθμισμένη ασπίδα (shield) μπορεί να διαβάσει την τάση του ακροδέκτη IOREF και να επιλέξει την κατάλληλη πηγή ενέργειας ή να ενεργοποιήσει τους «μεταφραστές» τάσης στις εξόδους για να λειτουργήσουν με 5V ή 3.3V Μνήμη Ο ATmega328 έχει 32 KB μνήμης flash (με 0.5 KB να καταλαμβάνεται από τον bootloader). Διαθέτει επίσης 2 KB μνήμης SRAM και 1 KB EEPROM (η οποία μπορεί να διαβαστεί και να γραφθεί με τη βιβλιοθήκη EEPROM) Είσοδοι και έξοδοι Παρακάτω φαίνεται η χαρτογράφηση των ακροδεκτών του Arduino και του ATmega328P. Η χαρτογράφηση για τους Atmega8, 168 και 328 είναι ίδια. 35

50 Σχήμα 3.2. Ακροδέκτες ATmega 168 Κάθε ένας από τους 14 ψηφιακούς ακροδέκτες του Uno μπορεί να χρησιμοποιηθεί ως είσοδος ή έξοδος, αξιοποιώντας κατάλληλα τις συναρτήσεις pinmode (), digitalwrite () και digitalread (). Οι ακροδέκτες λειτουργούν σε τάση της τάξης των 5 βολτ. Κάθε ακροδέκτης μπορεί να παρέχει ή να λάβει 20 ma, ως συνιστώμενη κατάσταση λειτουργίας, και έχει μια εσωτερική αντίσταση pull-up (αποσυνδεδεμένη από προεπιλογή) των 20-50k ohm. Ένα μέγιστο ρεύμα της τάξης των 40mA δεν πρέπει να υπερβαίνεται σε κάθε ακροδέκτη εισόδου / εξόδου (I / O) ώστε να αποφευχθεί πιθανή μόνιμη βλάβη στον μικροελεγκτή. Επιπλέον, μερικοί ακροδέκτες έχουν εξειδικευμένες λειτουργίες: Serial: 0 (RX) και 1 (TX). Χρησιμοποιείται για τη λήψη (RX) και την αποστολή (TX) σειριακών δεδομένων TTL. Αυτοί οι ακροδέκτες συνδέονται με τους αντίστοιχους ακροδέκτες του ATmega8U2 USB-to-TTL Serial chip. Εξωτερικές διακοπές: 2 και 3. Οι ακροδέκτες αυτοί μπορούν να διαμορφωθούν για να προκαλέσουν διακοπή σε μια δεδομένη χαμηλή τιμή, μια άνοδο ή πτώση μετώπου, ή μια αλλαγή σε κάποια τιμή. Στις λειτουργίες αυτές συμβάλει η συνάρτηση attachinterrupt (). PWM: 3, 5, 6, 9, 10, και 11. Παροχή 8-bit εξόδου PWM με τη χρήση της συνάρτησης analogwrite (). 36

51 SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Οι ακροδέκτες αυτοί υποστηρίζουν την επικοινωνία SPI, χρησιμοποιώντας την αντίστοιχη βιβλιοθήκη SPI. LED: 13. Υπάρχει ένα ενσωματωμένο LED που οδηγείται από τον ψηφιακό ακροδέκτη 13. Όταν ο ακροδέκτης έχει την τιμή HIGH το LED είναι αναμμένο ενώ όταν έχει την τιμή LOW το LED είναι σβηστό. TWI: A4 ή ακροδέκτης SDA και Α5 ή ακροδέκτης SCL. Υποστήριξη της επικοινωνίας TWI χρησιμοποιώντας τη βιβλιοθήκη Wire. Το Uno έχει 6 αναλογικές εισόδους, που επισημαίνονται A0 έως A5, κάθε μία από τις οποίες παρέχει 10 bit ανάλυσης (δηλαδή 1024 διαφορετικές τιμές). Εξ ορισμού λαμβάνουν τιμές από το μηδέν μέχρι και 5 βολτ, αν και είναι δυνατόν να αλλαχθεί η άνω τιμή του εύρους τους, χρησιμοποιώντας τον ακροδέκτη AREF και την συνάρτηση analogreference (). Υπάρχουν και μερικοί άλλοι ακροδέκτες στην πλακέτα: AREF. Τάση αναφοράς για τις αναλογικές εισόδους. Χρησιμοποιείται με την βοήθεια της συνάρτησης analogreference (). Reset. Ο ακροδέκτης αυτός χρησιμοποιείται για να επανεκκινήσει τον μικροελεγκτή. Αυτό επιτυγχάνεται με την τοποθέτηση της τιμής LOW στον αντίστοιχο ακροδέκτη. Συνήθως χρησιμοποιείται για να προσθέσει ένα κουμπί επαναφοράς στις ασπίδες (shields) που μπλοκάρουν την λειτουργία αυτή της πλακέτας Επικοινωνία Ο Arduino / genuino Uno έχει μια σειρά από δυνατότητες για την επικοινωνία με έναν υπολογιστή, μια άλλη πλακέτα Arduino / genuino, ή άλλους μικροελεγκτές. Ο ATmega328 παρέχει UART TTL (5V) σειριακή επικοινωνία, η οποία είναι διαθέσιμη στους ψηφιακούς ακροδέκτες 0 (RX) και 1 (TX). Ο ATmega16U2 στην πλακέτα επιδρά στην σειριακή επικοινωνία μέσω USB και εμφανίζεται ως μια εικονική θύρα COM στο λογισμικό του υπολογιστή. Το firmware 16U2 χρησιμοποιεί τους τυπικούς drivers USB COM κι έτσι δεν χρειάζεται η ύπαρξη κάποιου εξωτερικού driver. Ωστόσο, στα Windows, απαιτείται ένα αρχείο.inf. Το λογισμικό του Arduino (IDE) περιλαμβάνει μια σειριακή οθόνη η οποία επιτρέπει σε απλά δεδομένα κειμένου να αποστέλλονται προς και από την πλακέτα. Τα LED 37

52 RX και TX της πλακέτας θα αναβοσβήνουν κάθε φορά που δεδομένα μεταδίδονται μέσω του USB-to-serial τσιπ και της σύνδεσης USB στον υπολογιστή (αλλά όχι για την σειριακή επικοινωνία στους ακροδέκτες 0 και 1). Μια SoftwareSerial βιβλιοθήκη επιτρέπει την σειριακή επικοινωνία σε οποιουσδήποτε από τους ψηφιακούς ακροδέκτες του Uno. Ο ATmega328 υποστηρίζει επίσης την επικοινωνία I2C (TWI) και την SPI. Το λογισμικό του Αrduino (IDE) περιλαμβάνει μια βιβλιοθήκη Wire για να απλοποιήσει τη χρήση του διαύλου I2C ενώ για την επικοινωνία SPI χρησιμοποιείται η βιβλιοθήκη SPI Αυτόματη επανεκκίνηση λογισμικού Αντί να απαιτείται φυσικό πάτημα του κουμπιού επανεκκίνησης πριν από την φόρτωση δεδομένων, η πλακέτα Arduino / genuino Uno έχει σχεδιαστεί κατά τρόπο που να επιτρέπει να γίνεται επανεκκίνηση από λογισμικό που τρέχει σε έναν συνδεδεμένο υπολογιστή. Μία από τις γραμμές ελέγχου ροής υλικού (DTR) του ATmega8U2 / 16U2 συνδέεται με τη γραμμή επανεκκίνησης του ATmega328 μέσω ενός πυκνωτή 100 nf. Όταν αυτή η γραμμή δέχεται το αντίστοιχο σήμα (λαμβάνεται χαμηλή τιμή), η γραμμή επαναφοράς πέφτει για κατάλληλο χρονικό διάστημα ώστε να προκληθεί επανεκκίνηση στο τσιπ. Το λογισμικό του Arduino (IDE) χρησιμοποιεί αυτή την διαδικασία για να επιτρέψει στον χρήστη να ανεβάσει κώδικα πατώντας απλά το κουμπί upload στη γραμμή εργαλείων του interface. Αυτό σημαίνει ότι ο bootloader μπορεί να έχει μικρότερο χρονικό όριο timeout, καθώς η μείωση του DTR μπορεί να συντονιστεί ορθά με την έναρξη της αποστολής δεδομένων (upload). Αυτή η ρύθμιση έχει και άλλες επιπτώσεις. Όταν το Uno είναι συνδεδεμένο σε υπολογιστή με λειτουργικό σύστημα Mac OS X ή Linux, προκαλείται επανεκκίνηση κάθε φορά που δημιουργείται μια σύνδεση σε αυτό από λογισμικό (μέσω USB). Για το επόμενο μισό δευτερόλεπτο περίπου, ο bootloader εκτελείται στο Uno. Ενώ είναι προγραμματισμένος να αγνοήσει ακατάλληλα δεδομένα (δηλαδή οτιδήποτε εκτός από μια μεταφόρτωση νέου κώδικα), θα παρεμποδίσει τα πρώτα bytes των δεδομένων που αποστέλλονται στην πλακέτα μετά από την επίτευξη μιας σύνδεσης. Αν ένα sketch που εκτελείται στην πλακέτα λάβει δεδομένα αρχικοποίησης-διαμόρφωσης ή άλλα δεδομένα όταν εκτελείται για πρώτη φορά, συνίσταται στον χρήστη να βεβαιωθεί ότι το λογισμικό με το οποίο επικοινωνεί περιμένει ένα δευτερόλεπτο (κατάλληλο χρονικό διάστημα) μετά την επίτευξη της σύνδεσης και πριν από την αποστολή αυτών των δεδομένων. 38

53 Η πλακέτα Uno περιέχει ένα ίχνος που μπορεί να αποκοπεί για να απενεργοποιηθεί η αυτόματη επανεκκίνηση. Τα pads εκατέρωθεν του ίχνους μπορούν να συνδεθούν μαζί για να ενεργοποιήσουν ξανά την αυτόματη επανεκκίνηση. Αυτή η διαδικασία ονομάζεται "RESET- ΕΝ". Η αυτόματη επανεκκίνηση μπορεί επίσης να απενεργοποιηθεί συνδέοντας μια αντίσταση των 110 ohm από τον ακροδέκτη των 5V στη γραμμή επανεκκίνησης Αναθεωρήσεις Η αναθεώρηση 3 της πλακέτας έχει τα ακόλουθα επιπρόσθετα στοιχεία: 1.0 pinout: προστέθηκαν οι ακροδέκτες SDA και SCL που βρίσκονται κοντά στον ακροδέκτη AREF και δύο ακόμη νέοι ακροδέκτες που τοποθετήθηκαν κοντά στον ακροδέκτη RESET, το IOREF που επιτρέπει στις ασπίδες (shields) να προσαρμοστούν στην τάση που παρέχεται από την πλακέτα. Στο μέλλον, οι ασπίδες (shields) θα είναι συμβατές τόσο με την πλακέτα που χρησιμοποιεί τον AVR, η οποία λειτουργεί με 5V αλλά και με το Arduino Due που λειτουργεί με 3.3V. Το δεύτερο είναι ένας μη συνδεδεμένος ακροδέκτης, που προορίζεται για μελλοντική χρήση. Ισχυρότερο κύκλωμα επανεκκίνησης (RESET). Ο Atmega 16U2 αντικαθιστά τον 8U Οι ακροδέκτες (pins) της πλακέτας Arduino Uno Η πλακέτα Arduino διαθέτει : 14 ψηφιακές Ι/Ο θύρες (εισόδου & εξόδου). Σύμφωνα με το πρόγραμμα που θα φορτωθεί στον μικροελεγκτή αυτές οι θύρες μπορούν να εργαστούν σαν είσοδοι ή έξοδοι ψηφιακών σημάτων. Οι ψηφιακές θύρες 3, 5, 6, 9, 10 και 11 μπορούν να λειτουργήσουν και ως ψευδοαναλογικές θύρες εξόδου με το σύστημα PWM (Pulse Width Modulation), δηλαδή το ίδιο σύστημα που διαθέτουν οι μητρικές των υπολογιστών για να ελέγχουν τις ταχύτητες των 39

54 ανεμιστήρων. Το PWM παίρνει ένα εύρος τιμών από το 0 έως το 255. Δεν είναι πραγματικά αναλογικό σύστημα, έτσι θέτοντας στην έξοδο την τιμή 127, δεν σημαίνει ότι η έξοδος θα παρέχει 2.5V αντί της κανονικής τιμής των 5V, αλλά ότι θα δίνει έναν παλμό που η τάση του θα εναλλάσσεται με μεγάλη συχνότητα και για ίσα χρονικά διαστήματα μεταξύ των τιμών 0V και 5V με σκοπό η μέση τιμή να ισούται με 2,5V. Οι θύρες 0 και 1 χρησιμοποιούνται επίσης και για να λαμβάνουν (RX) και να μεταδίδουν (TX) TTL σειριακά δεδομένα. Έτσι, όταν για παράδειγμα το πρόγραμμα στέλνει δεδομένα σειριακά, τότε αυτά προωθούνται στην θύρα USB μέσω του ελεγκτή Serial-Over-USB όπως επίσης και στο pin 0 για να τα διαβάσει ενδεχομένως μία άλλη συσκευή (π.χ. ένα δεύτερο Arduino στη δικιά του θύρα 1). Αυτό φυσικά σημαίνει ότι αν στο πρόγραμμα ενεργοποιηθεί το σειριακό interface, καταλαμβάνονται δύο ψηφιακές θύρες εισόδου/εξόδου. Οι θύρες 2 και 3 λειτουργούν και ως εξωτερικά interrupt (interrupt 0 και 1 αντίστοιχα). Με άλλα λόγια, μπορούν να ρυθμιστούν μέσα από το πρόγραμμα ώστε να λειτουργούν αποκλειστικά ως ψηφιακές είσοδοι στις οποίες όταν συμβαίνουν συγκεκριμένες αλλαγές τάσης, η κανονική ροή του προγράμματος να σταματάει άμεσα και να εκτελείται μία συγκεκριμένη συνάρτηση. Τα εξωτερικά interrupt είναι ιδιαίτερα χρήσιμα σε εφαρμογές που απαιτούν συγχρονισμό μεγάλης ακρίβειας. 6 αναλογικές θύρες εισόδου αριθμημένες από το 0 έως το 5. Το καθένα από αυτά λειτουργεί ως αναλογική είσοδος κάνοντας χρήση του ADC (Analog to Digital Converter). Για παράδειγμα, αν τροφοδοτηθεί ένα από αυτά τα pin με μία τάση η οποία μπορεί να κυμανθεί με ένα ποτενσιόμετρο από 0V ως μία τάση αναφοράς Vref (η οποία αν δεν γίνει κάποια αλλαγή είναι προρυθμισμένη στα 5V), τότε μέσα από το πρόγραμμα μπορεί να «διαβαστεί» η τιμή της θύρας ως ένας ακέραιος αριθμός χωρητικότητας 10-bit, από το 0 (όταν η τάση στο pin είναι 0V) μέχρι το 1023 (όταν η τάση στο pin είναι 5V). Η τάση αναφοράς μπορεί να ρυθμιστεί με μία εντολή, για παράδειγμα στα 1.1V. Ένας άλλος τρόπος όπου η τάση αναφοράς μπορεί να δηλωθεί από τον προγραμματιστή είναι τροφοδοτώντας με μία εξωτερική τάση αναφοράς τη θύρα με την σήμανση AREF που βρίσκεται στην απέναντι πλευρά της πλακέτας. Έτσι, αν τροφοδοτηθεί η θύρα AREF με 3.3V και στην συνέχεια εκτελεστή η εντολή να διαβαστεί κάποιο pin αναλογικής εισόδου στο οποίο εφαρμόζεται τάση 1.65V, το Arduino θα επιστρέψει την τιμή 512. Δίπλα από της θύρες αναλογικής εισόδου, υπάρχει μία ακόμα συστοιχία από 6 pin με την σήμανση POWER. Η λειτουργία του καθενός pin έχει ως εξής: 40

55 Το πρώτο, με την ένδειξη RESET, όταν γειωθεί (με οποιοδήποτε από τα 3 pin με την ένδειξη GND που υπάρχουν στο Arduino) έχει ως αποτέλεσμα την επανεκκίνηση του Arduino. Το δεύτερο με την ένδειξη 3.3V, μπορεί να τροφοδοτήσει διατάξεις, συσκευές ή αισθητήρες με τάση 3.3V. Η τάση αυτή δεν προέρχεται από την εξωτερική τροφοδοσία αλλά παράγεται από τον ελεγκτή Serial-over-USB και έτσι η μέγιστη ένταση που μπορεί να παρέχει είναι μόλις 50mA. Η τρίτη θύρα με την ένδειξη 5V, μπορεί να χρησιμοποιηθεί και αυτή για την τροφοδότηση διαφόρων εξαρτημάτων, συσκευών ή αισθητήρων με τάση 5V. Ανάλογα με τον τρόπο τροφοδοσίας του ίδιου του Arduino, η τάση αυτή προέρχεται είτε άμεσα από την θύρα USB (που ούτως ή άλλως παρέχει τάση 5V), είτε από την εξωτερική τροφοδοσία αφού αυτή περάσει από ένα ρυθμιστή τάσης για να την «σταθεροποιήσει» στα 5V. Το τέταρτο και το πέμπτο pin με την ένδειξη GND είναι οι γειώσεις. Το έκτο και τελευταίο pin, με την ένδειξη Vin έχει διπλό ρόλο. Σε συνδυασμό με το pin γείωσης δίπλα του, μπορεί να λειτουργήσει ως μέθοδος εξωτερικής τροφοδοσίας του Arduino στην περίπτωση που δεν βολεύει να χρησιμοποιηθεί η υποδοχή του φις των 2.1mm. Αν όμως υπάρχει ήδη συνδεδεμένη εξωτερική τροφοδοσία μέσω του φις, τότε μπορεί να χρησιμοποιηθεί αυτό το pin για να τροφοδοτήσει εξαρτήματα και συσκευές με την πλήρη τάση της εξωτερικής τροφοδοσίας (7~12V), πριν αυτή περάσει από τον ρυθμιστή τάσης όπως γίνεται με το pin των 5V. H φόρτωση του sketch πραγματοποιείται μέσω μίας USB θύρας που διαθέτει η πλακέτα Arduino. Έτσι οι πληροφορίες που προέρχονται από την USB θύρα του υπολογιστή εισέρχονται στην USB θύρα του Arduino και στην συνέχεια οδηγούνται στο FDTI ολοκληρωμένο για να διαμορφωθούν σε μία κατάλληλη μορφή ώστε ο μικροελεγκτής να μπορέσει να τις διαβάσει. Πάνω στην πλακέτα του Arduino υπάρχει ένας διακόπτης micro-switch και 4 smd (μικροσκοπικά) LED επιφανειακής στήριξης. Η λειτουργία του διακόπτη (που έχει την σήμανση RESET) και του ενός LED με την σήμανση POWER είναι προφανής. Τα δύο LED με τις σημάνσεις TX και RX, χρησιμοποιούνται ως ένδειξη λειτουργίας του σειριακού interface, καθώς ανάβουν όταν το Arduino στέλνει ή λαμβάνει (αντίστοιχα) δεδομένα μέσω της USB. Tα LED αυτά ελέγχονται από τον ελεγκτή Serial-over-USB και συνεπώς δεν 41

56 λειτουργούν όταν η σειριακή επικοινωνία γίνεται αποκλειστικά μέσω των ψηφιακών pin 0 και 1. Τέλος, υπάρχει το LED με τη σήμανση L. Η βασική λειτουργία του LED στην πλακέτα Arduino είναι να αναβοσβήνει συνήθως για δοκιμαστικό σκοπό. Οι κατασκευαστές σκέφτηκαν να ενσωματώσουν ένα LED στην πλακέτα το οποίο το σύνδεσαν στη ψηφιακή θύρα 13. Έτσι ακόμα και αν δεν έχει συνδεθεί τίποτα πάνω στο φυσικό pin 13, αναθέτοντας του την τιμή HIGH μέσα από το πρόγραμμα, θα ανάψει το ενσωματωμένο LED L. Η πλακέτα μπορεί να τροφοδοτηθεί από μία USB θύρα ενός υπολογιστή ή από ένα 9 volt τροφοδοτικό συνεχούς ρεύματος με βύσμα 2.1mm barrel tip. Ο θετικός πόλος θα πρέπει να βρίσκεται στη εσωτερική πλευρά και ο αρνητικός στην εξωτερική πλευρά του βύσματος. 42

57 Κεφάλαιο 4 Προγραμματισμός του Arduino μέσω Wiring-IDE Το Arduino είναι βασισμένο σε γλώσσα C και συγκεκριμένα παρέχει: ένα πρακτικό περιβάλλον για την συγγραφή των προγραμμάτων (τα οποία ονομάζονται sketch στην ορολογία του Arduino) με συντακτική χρωματική σήμανση, αρκετά έτοιμα παραδείγματα, μερικές έτοιμες βιβλιοθήκες για προέκταση της γλώσσας και εύκολο χειρισμό μέσα από τον κώδικά των εξαρτημάτων που έχουν συνδεθεί στο Arduino, τον compiler για την μεταγλώττιση των sketch, ένα serial monitor που παρακολουθεί τις επικοινωνίες της σειριακής (USB), αναλαμβάνει να στείλει αλφαριθμητικά την επιλογή στο Arduino μέσω αυτής και είναι ιδιαίτερα χρήσιμο για το debugging των sketch και την επιλογή να ανεβάσει το μεταγλωττισμένο sketch στο Arduino. 43

58 4.1. Εγκατάσταση προγράμματος Wiring-IDE Για να εγκαταστήσουμε το Arduino IDE σε περιβάλλον Windows ακολουθούμε τις εξής οδηγίες: 1. Χρησιμοποιώντας έναν browser όπως π.χ. ο Chrome επισκεπτόμαστε την επίσημη σελίδα του Arduino ( 2. Στην συνέχεια, επιλέγουμε την κατηγορία SOFTWARE. 44

59 3. Από το παράθυρο που εμφανίζεται στα δεξιά της οθόνης επιλέγουμε το Windows Installer και στην συνέχεια την επιλογή Just Download. 4. Το αρχείο θα αρχίσει να κατεβαίνει. 45

60 5. Μετά την ολοκλήρωση της λήψης κάνουμε διπλό κλικ στο αρχείο κι εμφανίζονται τα ακόλουθα παράθυρα διαλόγου στα οποία επιλέγουμε I Agree, Next, Install. 46

61 6. Η εγκατάσταση έχει ολοκληρωθεί με επιτυχία και το εικονίδιο της συντόμευσης για το Arduino IDE έχει εμφανιστεί στην επιφάνεια εργασίας. Κάνοντας διπλό κλικ στο εικονίδιο το ακόλουθο παράθυρο θα εμφανιστεί. 47

62 7. Ολοκληρώνοντας την διαδικασία εγκατάστασης του IDE επιλέγουμε από την γραμμή εργαλείων Εργαλεία>> Πλακέτα: Arduino/Genuino Uno και στην συνέχεια Εργαλεία>> Θύρα: COM3 (Arduino/Genuino Uno). 48

63 4.2. Έλεγχος προγράμματος σε επίπεδο Compiler Συνάρτηση Setup Το Setup είναι η πρώτη συνάρτηση που διαβάζεται σε ένα πρόγραμμα Arduino και εκτελείται μόνο μία φορά. Η βασική λειτουργία της συνάρτησης αυτής είναι: η αρχικοποίηση των μεταβλητών που πρόκειται να χρησιμοποιηθούν κατά την εκτέλεση του προγράμματος αλλά και η ανάθεση τιμών και σταθερών στην πλακέτα, που δεν πρόκειται να μεταβληθούν στην συνέχεια. Συνάρτηση Loop Η συνάρτηση Loop είναι ο πυρήνας του κώδικα που πρόκειται να εκτελεστεί στην πλακέτα του Arduino. Η συνάρτηση αυτή, σε αντίθεση με την συνάρτηση Setup, εκτελείται ατέρμονα μέχρι να πατηθεί από τον χρήστη το κουμπί Reset ή να παρουσιαστεί κάποια πτώση τάσης. Bootloader-Μεταφορά δεδομένων και προγράμματος στον Arduino Οι μικροεπεξεργαστές προγραμματίζονται συνήθως μέσω ενός programmer εκτός αν υπάρχει κάποιο κομμάτι firmware σε αυτούς που τους επιτρέπει να εγκαταστήσουν καινούργιο firmware χωρίς την χρήση κάποιου εξωτερικού programmer. Αυτό ονομάζεται bootloader. Εάν ο χρήστης επιθυμεί να αξιοποιήσει όλη την χωρητικότητα της μνήμης flash του τσιπ ή να αποφύγει την καθυστέρηση από τον bootloader, μπορεί να τρέξει τα sketches του χρησιμοποιώντας κάποιον εξωτερικό programmer. 49

64 4.3. Το GUI του Wiring-IDE Το παράθυρο GUI του Arduino έχει την μορφή του Σχήματος 4.1. Σχήμα 4.1. Arduino GUI Όπως φαίνεται κι από την εικόνα το GUI χωρίζεται σε 4 βασικά μέρη τα οποία είναι: 1. Menu bar: Η μπάρα αυτή περιέχει drop-down μενού για όλα τα εργαλεία, τις λειτουργίες και τις πληροφορίες που αξιοποιούνται από το πρόγραμμα. Η μπάρα αυτή βρίσκεται στην κορυφή της οθόνης και περιέχει τις επιλογές: 1.1 Αρχείο: Η επιλογή αυτή περιέχει λειτουργίες όπως η αποθήκευση, η φόρτωση, το άνοιγμα sketches κτλπ. 50

65 1.2 Επεξεργασία: Η επιλογή αυτή περιέχει τις λειτουργίες της αντιγραφής, επικόλλησης και συναρτήσεις αναζήτησης. 1.3 Σχέδιο: Η επιλογή αυτή περιλαμβάνει συναρτήσεις πιστοποίησης του σχεδίου (sketch) πριν την μεταφόρτωση του στην πλακέτα. 1.4 Εργαλεία: Η επιλογή αυτή διαθέτει μια πληθώρα συναρτήσεων κι εντολών που επιτρέπουν στον χρήστη να καθορίσει την πλακέτα του Arduino που πρόκειται να χρησιμοποιηθεί αλλά και την θύρα USB. 1.5 Βοήθεια: Η επιλογή αυτή περιέχει υπερσυνδέσεις για διάφορα ζητήματα που αφορούν θέματα σχετικά με το Arduino και το IDE. 2. Toolbar: Η εργαλειοθήκη περιέχει συγκεκριμένα κουμπιά που χρησιμοποιούνται κατά κόρον στην συγγραφή των sketches. Η μορφή και η λειτουργία των επιλογών αυτών περιγράφεται στην συνέχεια. Σχήμα 4.2. Arduino Toolbar 2.a Verify/Compile: Με την επιλογή αυτή γίνεται έλεγχος του κώδικα που έχει γραφτεί από τον χρήστη, με βάση το λογισμικό του Arduino. Η μεταγλώττιση (compile) του προγράμματος εξασφαλίζει ότι ο κώδικας δεν έχει συντακτικά λάθη, χωρίς όμως να ελέγχεται από το λογισμικό η ύπαρξη λογικών λαθών. Επομένως, με την διαδικασία αυτή ελέγχεται η εγκυρότητα αλλά όχι η αξιοπιστία του προγράμματος του χρήστη. 2.b Upload: Η επιλογή αυτή στέλνει το sketch στην πλακέτα του Arduino που είναι συνδεδεμένος με τον υπολογιστή. Με την διαδικασία αυτή εκτελείται αυτόματα η μεταγλώττιση του κώδικα του χρήστη πριν αυτός φορτωθεί στην πλακέτα. 2.c New: Η επιλογή αυτή δημιουργεί ένα καινούργιο sketch. 2.d Open: Η επιλογή αυτή ανοίγει ένα υπάρχον sketch. 51

66 2.e Save: Με την επιλογή αυτή γίνεται αποθήκευση του κώδικα του τρέχοντος sketch. 2.f Serial monitor: Με την επιλογή αυτή παραχωρείται η δυνατότητα στον χρήστη να παρατηρήσει τα δεδομένα που αποστέλλονται από και προς την πλακέτα του Arduino. 3. Text editor: Πρόκειται για το τμήμα του παραθύρου στο οποίο ο χρήστης συγγράφει τον κώδικα του sketch που θέλει να καταχωρήσει στην πλακέτα. Πρόκειται για ένα κλασικό παράθυρο συγγραφής κειμένου εμπλουτισμένο με μερικά έξτρα χαρακτηριστικά, που στόχο έχουν να βοηθήσουν τον χρήστη να συγγράψει επιτυχώς τον κώδικα του προγράμματός του. Για τον λόγο αυτό το λογισμικό του Arduino χρησιμοποιεί διαφορετικούς χρωματικούς κώδικες για τις αντίστοιχες δομές του sketch. 4. Message area: Στο τμήμα αυτό του GUI εμφανίζονται μηνύματα σχετικά με σφάλματα (errors), προειδοποιήσεις (warnings) κατά την μεταγλώττιση του κώδικα του χρήστη, καθώς και πληροφορίες σχετικές με την πλακέτα του Arduino και την θύρα USB στην οποία είναι συνδεδεμένη. 52

67 4.4. Βασικά συντακτικά στοιχεία προγραμματισμού πλακετών Arduino μέσα από το περιβάλλον IDE Στην συνέχεια παρουσιάζονται οι βασικές δομές που χρησιμοποιούνται για την υλοποίηση ενός προγράμματος στην πλακέτα του Arduino Προγραμματιστικές Δομές Δομές ελέγχου ροής if Δομή ελέγχου υλοποίησης μιας συνθήκης. if... else Δομή ελέγχου υλοποίησης πολλαπλών συνθηκών. for Δομή επαναληπτικού ελέγχου συνθήκης με δεδομένο αριθμό επαναλήψεων (πεπερασμένο ή ατέρμονα). switch case Δομή συνθήκης επιλογής ανάλογα με την τιμή κάποιας μεταβλητής. while Δομή επαναληπτικού ελέγχου συνθήκης όσο η μεταβλητή ελέγχου παραμένει true. do while Δομή επαναληπτικού ελέγχου συνθήκης όσο η μεταβλητή ελέγχου παραμένει true. Ο βρόγχος θα εκτελεστεί τουλάχιστον μία φορά. break Εντολή διακοπής εκτέλεσης μιας επαναληπτικής δομής. continue Εντολή παράκαμψης μιας επανάληψης και συνέχιση εκτέλεσης της επόμενης. return Εντολή ολοκλήρωσης μιας συνάρτησης κι επιστροφή της τιμής 53

68 που έχει οριστεί. go to Εντολή μετάβασης της ροής εκτέλεσης ενός προγράμματος σε κάποιο συγκεκριμένο σημείο του κώδικα (η εντολή αυτή αποφεύγεται σε δομημένα προγράμματα) Τύποι, Μεταβλητές και Σταθερές Σταθερές HIGH LOW false true INPUT OUTPUT Τιμή υψηλής στάθμης. Τιμή χαμηλής στάθμης. Τιμή λογικού 0 (λάθους). Τιμή λογικού 1 (αληθείας). Ορισμός ενός ακροδέκτη ως είσοδο. Ορισμός ενός ακροδέκτη ως έξοδο. Τύποι δεδομένων void Ορισμός συνάρτησης που δεν επιστρέφει κάποια τιμή. boolean Λογική δυαδική τιμή (true/false). char Προσημασμένος χαρακτήρας 1 byte. unsigned char Μη προσημασμένος χαρακτήρας 1 byte. byte Μη προσημασμένος χαρακτήρας 8 bits. int Προσημασμένος ακέραιος αριθμός 2 bytes. unsigned int Μη προσημασμένος ακέραιος 54

69 αριθμός 2 bytes. word Μη προσημασμένος ακέραιος αριθμός 2 bytes. long Προσημασμένος ακέραιος αριθμός 4 bytes. unsigned long Μη προσημασμένος ακέραιος αριθμός 4 bytes. short Προσημασμένος ακέραιος αριθμός 2 bytes. float Αριθμός κινητής υποδιαστολής 4 bytes. double Αριθμός κινητής υποδιαστολής 4 bytes. string-char array Πίνακας προσημασμένων χαρακτήρων 1 byte. String-object Σύνθετη κλάση-δομή πίνακα προσημασμένων χαρακτήρων 1 byte (καταλαμβάνει περισσότερη μνήμη). array Πίνακας (συλλογή μεταβλητών) δεδομένων. Συναρτήσεις μετατροπής τύπων char() byte() int() word() long() Μετατροπή μεταβλητής σε δεδομένα τύπου char. Μετατροπή μεταβλητής σε δεδομένα τύπου byte. Μετατροπή μεταβλητής σε δεδομένα τύπου int. Μετατροπή μεταβλητής σε δεδομένα τύπου word. Μετατροπή μεταβλητής σε δεδομένα 55

70 τύπου long. float() Μετατροπή μεταβλητής σε δεδομένα τύπου float. Μεταβλητό πεδίο δεδομένων static Μεταβλητή με ορατότητα στο πλαίσιο μιας συνάρτησης. volatile Μεταβλητή που φορτώνεται κατευθείαν από την μνήμη RAM κι όχι από κάποιον καταχωρητή αποθήκευσης. Στον προγραμματισμό του Arduino χρησιμοποιείται για να διευθετήσει ρουτίνες διακοπών. const Μεταβλητή που μπορεί απλά να διαβαστεί αλλά όχι να αλλαχθεί. Utilities sizeof() PROGMEM Επιστροφή του αριθμού από bytes ενός τύπου δεδομένων (μεταβλητής ή πίνακα). Αποθήκευση των δεδομένων στην μνήμη falsh αντί της SRAM Τελεστές Δεσμευμένοι τελεστές ; Ολοκλήρωση εκτέλεσης μιας εντολής. {} Δομή εισαγωγής κι εκτέλεσης ενός συνόλου εντολών. // Σχόλιο μίας μόνο γραμμής. /**/ Σχόλια που εκτείνονται σε 56

71 περισσότερες της μίας γραμμής. #define Ορισμός σταθερών τιμών μεταβλητών. #include Εισαγωγή βιβλιοθήκης. Αριθμητικοί τελεστές = Τελεστής απόδοσης τιμής σε μεταβλητή. + Τελεστής πρόσθεσης. - Τελεστής αφαίρεσης. * Τελεστής πολλαπλασιασμού. / Τελεστής διαίρεσης. % Τελεστής modulo (υπόλοιπο διαίρεσης). Τελεστές σύγκρισης == Τελεστής ισότητας.!= Τελεστής ανισότητας. < Τελεστής μικρότερο από. > Τελεστής μεγαλύτερο από. <= Τελεστής μικρότερο ή ίσο. >= Τελεστής μεγαλύτερο ή ίσο. Λογικοί τελεστές && Τελεστής λογικού AND. 57

72 Τελεστής λογικού OR.! Τελεστής λογικού NOT. Δυαδικοί (Bitwise) τελεστές & Δυαδικός τελεστής AND. Δυαδικός τελεστής OR. ^ Δυαδικός τελεστής XOR. ~ Δυαδικός τελεστής NOT. << Τελεστής αριστερής ολίσθησης. >> Τελεστής δεξιάς ολίσθησης. Σύνθετοι τελεστές ++ Τελεστής αύξησης κατά Τελεστής ελάττωσης κατά 1. += Τελεστής σύνθετης πρόσθεσης (x+=y ισοδυναμεί με x=x+y). -= Τελεστής σύνθετης αφαίρεσης (x-=y ισοδυναμεί με x=x-y). *= Τελεστής σύνθετου πολλαπλασιασμού (x*=y ισοδυναμεί με x=x*y). /= Τελεστής σύνθετης διαίρεσης (x/=y ισοδυναμεί με x=x/y). %= Τελεστής σύνθετου modulo (x%=y ισοδυναμεί με x=x%y). 58

73 &= Τελεστής σύνθετου AND (x&=y ισοδυναμεί με x=x&y). = Τελεστής σύνθετου OR (x =y ισοδυναμεί με x=x y) Συναρτήσεις Συναρτήσεις ψηφιακών εισόδων-εξόδων I/O pinmode() digitalwrite() digitalread() Ορισμός ενός ακροδέκτη (pin) ως είσοδο ή έξοδο. Εγγραφή σε μια ψηφιακή επαφή εξόδου της λογικής στάθμης HIGH ή LOW. Ανάγνωση της λογικής τιμής ενός ψηφιακού ακροδέκτη. Συναρτήσεις αναλογικών εισόδων-εξόδων I/O analogreference analogread() analogwrite()-pwm Ορισμός του επιπέδου της τάσης αναφοράς για τις αναλογικές εισόδους. Ανάγνωση της αναλογικής τιμής ενός ακροδέκτη εισόδου. Εγγραφή μιας αναλογικής τιμής σε έναν ακροδέκτη εξόδου. Προηγμένες συναρτήσεις εισόδου-εξόδου I/O tone() Δημιουργία ενός τετραγωνικού 59

74 σήματος δεδομένης συχνότητας. notone() Διακοπή της παραγωγής τετραγωνικών σημάτων. shiftout() Ολίσθηση των ψηφίων μιας μεταβλητής σε έναν ακροδέκτη εξόδου. shiftln() Ολίσθηση των ψηφίων μιας μεταβλητής από έναν ακροδέκτη εισόδου. pulseln() Επιστροφή της διάρκειας ενός παλμού (HIGH/LOW) σε μs. Συναρτήσεις χρόνου millis() micros() Επιστροφή της διάρκειας εκτέλεσης του προγράμματος σε ms. Επιστροφή της διάρκειας εκτέλεσης του προγράμματος σε μs. delay() Καθυστέρηση της εκτέλεσης του προγράμματος σε ms. delaymicroseconds() Καθυστέρηση της εκτέλεσης του προγράμματος σε μs. Μαθηματικές συναρτήσεις min() max() abs() Επιστροφή του ελάχιστου ανάμεσα σε 2 αριθμούς. Επιστροφή του μέγιστου ανάμεσα σε 2 αριθμούς. Επιστροφή της απόλυτης τιμής ενός 60

75 αριθμού. constrain() Περιορισμός του εύρους διακύμανσης ενός αριθμού στα επιθυμητά όρια. map() Μετασχηματισμός ενός αριθμού δεδομένου εύρους σε διαφορετικό εύρος. pow() Επιστροφή του αποτελέσματος ύψωσης σε δύναμη μιας μεταβλητής. sqrt() Επιστροφή του αποτελέσματος της τετραγωνικής ρίζας μιας μεταβλητής. Τριγωνομετρικές συναρτήσεις sin() Υπολογισμός του ημιτόνου μιας μεταβλητής (σε radians). cos() tan() Υπολογισμός του συνημιτόνου μιας μεταβλητής (σε radians). Υπολογισμός της εφαπτομένης μιας μεταβλητής (σε radians). Συναρτήσεις χαρακτήρων isalphanumeric() isalpha() isascii() iswhitespace() Επιστροφή true αν ένας χαρακτήρας είναι λατινικός χαρακτήρας ή αριθμός. Επιστροφή true αν ένας χαρακτήρας είναι λατινικός χαρακτήρας. Επιστροφή true αν ένας χαρακτήρας είναι αριθμός Ascii. Επιστροφή true αν ένας χαρακτήρας αποτελεί white space (ένα σύνολο χαρακτήρων που απαρτίζουν οριζόντια ή κάθετα τον χώρο στην 61

76 iscontrol() isdigit() isgraph() islowercase() isprintable() ispunct() isspace() isuppercase() ishexademicaldigit() τυπογραφία). Επιστροφή true αν ένας χαρακτήρας αποτελεί χαρακτήρα ελέγχου. Επιστροφή true αν ένας χαρακτήρας είναι ψηφίο. Επιστροφή true αν ένας χαρακτήρας είναι εκτυπώσιμος. Επιστροφή true αν ένας χαρακτήρας είναι γραμμένος με «μικρά» γράμματα. Επιστροφή true αν ένας χαρακτήρας είναι εκτυπώσιμος. Επιστροφή true αν ένας χαρακτήρας είναι σημείο στίξης. Επιστροφή true αν ένας χαρακτήρας αντιστοιχεί στον χαρακτήρα κενού. Επιστροφή true αν ένας χαρακτήρας είναι γραμμένος με κεφαλαία γράμματα. Επιστροφή true αν ένας χαρακτήρας αποτελεί έγκυρο δεκαεξαδικό ψηφίο. Συναρτήσεις τυχαίων αριθμών randomseed() Αρχικοποίηση της γεννήτριας ψευδοτυχαίων αριθμών. random() Υπολογισμός ψευδο-τυχαίων αριθμών. Συναρτήσεις επεξεργασίας δυαδικών αριθμών lowbyte () Επιστροφή του δεξιότερου byte μιας μεταβλητής. 62

77 highbyte() bitread() bitwrite() Επιστροφή του αριστερότερου byte μιας μεταβλητής. Ανάγνωση ενός συγκεκριμένου bit από έναν αριθμό. Εγγραφή ενός συγκεκριμένου bit σε έναν αριθμό. bitset() Εγγραφή λογικού 1 σε ένα συγκεκριμένο bit ενός αριθμού. bitclear() Εγγραφή λογικού 0 σε ένα συγκεκριμένο bit ενός αριθμού. bit() Υπολογισμός της τιμής ενός συγκεκριμένου bit (ανάλογα με το όρισμα που θα δεχτεί θα υπολογίσει την αντίστοιχη δύναμη του 2). Συναρτήσεις ρουτινών εξυπηρέτησης εξωτερικών διακοπών attachinterrupt() Ενεργοποίηση μιας ρουτίνας εξυπηρέτησης διακοπής. detachinterrupt() Απενεργοποίηση μιας ρουτίνας εξυπηρέτησης διακοπής. Συναρτήσεις ενεργοποίησης/απενεργοποίησης διακοπών interrupts() Ενεργοποίηση της δυνατότητας εμφάνισης διακοπών. nointerrupts() Απενεργοποίηση της δυνατότητας εμφάνισης διακοπών. 63

78 Συναρτήσεις επικοινωνίας Serial() Stream() Ένα σύνολο χρήσιμων συναρτήσεων που επιτρέπουν την σειριακή επικοινωνία της πλακέτας. Ένα σύνολο συναρτήσεων που ορίζει τις συναρτήσεις ανάγνωσης του Arduino Συναρτήσεις Ψηφιακών ακροδεκτών Οι συναρτήσεις ακροδεκτών απαριθμήθηκαν στην παράγραφο Στην παράγραφο αυτή δίνονται οι απαραίτητες διευκρινήσεις για τον χειρισμό των εν λόγω συναρτήσεων. Οι ακροδέκτες του Arduino μπορούν να ρυθμιστούν είτε ως είσοδοι είτε ως έξοδοι, όμως από προεπιλογή είναι ρυθμισμένες ως είσοδοι. Επίσης, αξίζει να σημειωθεί, ότι η πλειοψηφία των αναλογικών ακροδεκτών του Arduino (Atmega), μπορεί να ρυθμιστεί και να χρησιμοποιηθεί, με τον ίδιο ακριβώς τρόπο όπως οι ψηφιακοί ακροδέκτες. Οι ψηφιακοί ακροδέκτες του Arduino Uno δίνονται στο Σχ Σχήμα 4.3. Ψηφιακοί ακροδέκτες του Arduino Uno 64

79 Οι συναρτήσεις ψηφιακών εισόδων/εξόδων καταγράφονται παρακάτω: pinmode() Ορίζει έναν συγκεκριμένο ακροδέκτη (pin) να συμπεριφέρεται ως είσοδος/ έξοδος. Σύνταξη: pinmode(pin, mode) Παράμετροι: pin: Ο αριθμός του ακροδέκτη που επιθυμούμε να μεταβάλουμε. mode: INPUT/OUTPUT/INPUT_PULLUP digitalwrite() Ορίζει μια υψηλή (HIGH) ή μια χαμηλή (LOW) τιμή σε έναν ψηφιακό ακροδέκτη. Αν ο ακροδέκτης έχει ρυθμιστεί ως έξοδος με την συνάρτηση pinmode(), τότε η τάση του θα καθορίστει στην αντίστοιχη τιμή: 5V (ή 3.3V για της πλακέτες που λειτουργούν με 3.3 V) για HIGH και 0V για LOW. Αν ο ακροδέκτης έχει ρυθμιστεί ως είσοδος, γράφοντας HIGH στην συνάρτηση digitalwrite() θα ενεργοποιηθεί μια εσωτερική pullup-αντίσταση ενώ γράφοντας LOW θα απενεργοποιηθεί. Σύνταξη: digitalwrite(pin,value) Παράμετροι: pin: Ο αριθμός του ακροδέκτη στον οποίο θα καταγραφεί το επιθυμητό αποτέλεσμα. Value: HIGH/LOW digitalread() Διαβάζει την τιμή ενός συγκεκριμένου ψηφιακού ακροδέκτη, που είναι είτε HIGH είτε LOW. Σύνταξη: digitalread(pin) 65

80 Παράμετροι: pin: Ο αριθμός του ακροδέκτη που θα αναγνωστεί. Επιστρέφει: HIGH/LOW 4.6. Συναρτήσεις Αναλογικών ακροδεκτών Οι αναλογικοί ακροδέκτες του Arduino Uno καταγράφονται στο Σχ.4.4. Σχήμα 4.4. Αναλογικοί ακροδέκτες του Arduino Uno Οι ελεγκτές Atmega που χρησιμοποιούνται για την πλατφόρμα Arduino περιέχουν έναν ενσωματωμένο A/D μετατροπέα 6 καναλιών. Ο μετατροπέας διαθέτει ανάλυση 10 bits, επιστρέφοντας ακέραιους από 0 έως Ενώ η κύρια λειτουργία των αναλογικών ακροδεκτών για τους περισσότερους χρήστες Arduino είναι να διαβάζει αναλογικούς αισθητήρες, οι αναλογικοί ακροδέκτες έχουν επίσης όλες τις λειτουργίες των ακροδεκτών γενικής χρήσης εισόδου/εξόδου. Οι συναρτήσεις αναλογικών εισόδων/εξόδων είναι οι παρακάτω: analogread() Διαβάζει την τιμή από έναν συγκεκριμένο αναλογικό ακροδέκτη. 66

81 Σύνταξη: analogread(pin) Παράμετροι: pin: Ο αριθμός του αναλογικού ακροδέκτη εισόδου από όπου θα διαβαστεί η τιμή. Επιστρέφει: ακέραιο αριθμό από 0 έως analogwrite() Γράφει μια αναλογική τιμή (PWM κύμα) σε έναν ακροδέκτη. Μπορεί να χρησιμοποιηθεί για παράδειγμα για να ανάψει ένα LED σε διάφορες φωτεινότητες ή να οδηγήσει ένα κινητήρα σε διάφορες ταχύτητες. Μετά από μια κλήση της analogwrite(), ο ακροδέκτης θα δημιουργήσει ένα σταθερό τετραγωνικό κύμα καθορισμένου κύκλου λειτουργίας μέχρι την επόμενη κλήση της analogwrite() (ή μια κλήση της digitalwrite() ή digitalread() για τον ίδιο ακροδέκτη). Η συχνότητα του σήματος PWM είναι περίπου 490 Hz. Στις περισσότερες πλατφόρμες Arduino η συνάρτηση αυτή λειτουργεί στις ακίδες 3, 5, 6, 9, 10 και 11. Σύνταξη: analogwrite(pin, value) Παράμετροι: pin: Ο αριθμός του ακροδέκτη στον οποίο θα εγγραφεί το PWM κύμα. value: ο κύκλος λειτουργίας (μεταξύ 0 και 255). 67

82 68

83 Κεφάλαιο 5 Αρχιτεκτονική μικροεπεξεργαστή Arduino 5.1 AVR CPU Core Σε αυτή την ενότητα θα γίνει εκτενής αναφορά στην αρχιτεκτονική του πυρήνα AVR. Η κύρια λειτουργία του επεξεργαστή (CPU) είναι η σωστή εκτέλεση του προγράμματος. Το CPU πρέπει επομένως να έχει πρόσβαση σε μνήμες, να εκτελεί υπολογισμούς, περιφερειακούς ελέγχους και χειρισμούς διακοπών. Για τη μέγιστη απόδοση του AVR χρησιμοποιείται η αρχιτεκτονική Harvard, δηλαδή χωριστές μνήμες για το πρόγραμμα και για τα δεδομένα. Τα προγράμματα εκτελούνται σε μονοπυρηνικό επίπεδο, δηλαδή ενώ εκτελείται μία εντολή, η επόμενη εντολή προφορτώνεται από τη μνήμη του προγράμματος. Αυτή η διαδικασία επιτρέπει την εκτέλεση εντολών σε κάθε παλμό ρολογιού. Η μνήμη προγράμματος είναι η μνήμη Flash κι είναι επαναπρογραμματιζόμενη. Το ολοκληρωμένο περιέχει καταχωρητές εργασίας γενικού σκοπού 32Χ8 bit με χρόνο πρόσβασης ενός μόνο παλμού ρολογιού. Αυτό επιτρέπει τη λειτουργία της αριθμητικής λογικής μονάδας (ALU) ενός κύκλου. Η μνήμη Flash χωρίζεται σε δύο κατηγορίες, στην κατηγορία Πρόγραμμα εκκίνησης και στην κατηγορία Πρόγραμμα εφαρμογής. Και τα δύο τμήματα έχουν προστασία Lock από εγγραφή και ανάγνωση/εγγραφή. Το μέγεθος της μνήμης flash κυμαίνεται από 2 ως 8Kbytes. Η συγκεκριμένη τεχνολογία επιτρέπει όχι μόνο την εγγραφή αλλά και το σβήσιμο της μνήμης 69

84 να γίνεται με ηλεκτρικό τρόπο. Αυτό σημαίνει ότι ο προγραμματισμός του μικροελεγκτή γίνεται εύκολα ενώ αυτός βρίσκεται συνδεδεμένος στο κύκλωμα της εκάστοτε εφαρμογής. Το μέγεθος της μνήμης δεδομένων αποτελείται από τρία τμήματα, με μέγεθος 128Bytes το κάθε ένα, δηλαδή 384Bytes συνολικά. Το κάθε τμήμα αποτελείται τόσο από καταχωρητές γενικού όσο και ειδικού σκοπού. Μερικοί από τους καταχωρητές ειδικού σκοπού χρησιμοποιούνται για τον έλεγχο του πυρήνα ενώ άλλοι για τον έλεγχο των περιφερειακών του. Σχήμα 5.1. Διάγραμμα ροής της αρχιτεκτονικής του AVR 70

85 Στοίβα Η στοίβα (stack) είναι μια δομή αποθήκευσης στην οποία ο μικροεπεξεργαστής αποθηκεύει τα περιεχόμενα των καταχωρητών του κατά την κλήση υπορουτινών και διακοπών. Η στοίβα αποτελείται από ένα σύνολο θέσεων στη μνήμη RAM. Για να μπορεί να διατηρηθεί η διεύθυνση μιας θέσης μέσα στη στοίβα είναι απαραίτητος ένας δείκτης στοίβας (stack pointer). Ο δείκτης αυτός είναι σχεδιασμένος με τέτοιο τρόπο ώστε τα δεδομένα να διαβάζονται από τη στοίβα με την αντίστροφη σειρά από εκείνη με την οποία γράφτηκαν και υποστηρίζονται από την αρχιτεκτονική AVR ALU - Μονάδα αριθμητικής λογικής Σε μια τυπική λειτουργία ALU εκτελούνται (αριθμητικές και λογικές) πράξεις. Τα δεδομένα στα οποία εκτελούνται οι πράξεις αυτές βρίσκονται σε δύο καταχωρητές εκ των οποίων ο ένας ονομάζεται συνήθως συσσωρευτής. Το αποτέλεσμα της εκτέλεσης της πράξης φυλάσσεται στο συσσωρευτή. Συνηθισμένες πράξεις που εκτελούνται στην αριθμητική και λογική μονάδα είναι οι ακόλουθες: δυαδική πρόσθεση και αφαίρεση, λογικό ΚΑΙ, Η, αποκλειστικό Η (AND, OR, XOR), συμπλήρωμα (ως προς 1 και ως προς 2), ολίσθηση και περιστροφή (δεξιά ή αριστερά), πολλαπλασιασμός και διαίρεση (δεν περιλαμβάνονται σε όλους τους μικροεπεξεργαστές). Το αποτέλεσμα της εκτέλεσης της πράξης στην ALU επηρεάζει επίσης μια σειρά από flipflops που ονομάζονται σημαίες (flags). Για παράδειγμα, μια σημαία μπορεί να δείχνει αν προέκυψε κρατούμενο από το πιο σημαντικό ψηφίο μετά την εκτέλεση μιας πρόσθεσης ενώ μια άλλη σημαία μπορεί να δείχνει αν το αποτέλεσμα μιας πράξης είναι 0. Το σύνολο των σημαιών αποτελεί τον καταχωρητή κατάστασης (status register) του μικροεπεξεργαστή, στον οποίο θα αναφερθούμε εκτενέστερα στη συνέχεια. 71

86 Έξι από τους 32 καταχωρητές μπορούν να χρησιμοποιηθούν ως τρεις δείκτες έμμεσων καταχωρητών διευθύνσεων 16 bit για τη διευθυνσιοδότηση του Data Space. Η μονάδα ALU, όπως προαναφέρθηκε, υποστηρίζει αριθμητικές και λογικές πράξεις μεταξύ των καταχωρητών ή μεταξύ μιας σταθεράς και ενός καταχωρητή. Οι πράξεις ενιαίου καταχωρητή μπορούν επίσης να εκτελεστούν στην ALU. Η ροή του προγράμματος παρέχεται από υπό όρους και χωρίς όρους προειδοποιήσεις και κλήσεις, ικανές να απευθύνονται απευθείας σε ολόκληρο το χώρο διεύθυνσης. Οι περισσότερες οδηγίες AVR έχουν ενιαία μορφή λέξεων 16 bit. Κάθε διεύθυνση μνήμης προγράμματος περιέχει μια οδηγία 16 ή 32 bit. Η ALU του AVR είναι υψηλής απόδοσης και λειτουργεί σε άμεση σύνδεση με όλους τους καταχωρητές εργασίας γενικού σκοπού (32). Μέσα σε ένα μόνο κύκλο ρολογιού, εκτελούνται αριθμητικές πράξεις μεταξύ καταχωρητών γενικού σκοπού Καταχωρητές Οι καταχωρητές χρησιμεύουν ως χώροι αποθήκευσης δεδομένων (καταχωρητές δεδομένων) ή διευθύνσεων της μνήμης (καταχωρητές διευθύνσεων). Οι καταχωρητές που συναντάμε στην πλειοψηφία των μικροεπεξεργαστών είναι οι ακόλουθοι: ο απαριθμητής προγράμματος (Program Counter, PC), ο καταχωρητής εντολών (Instruction Register, IR) ο δείκτης στοίβας (stack pointer) και ο καταχωρητής κατάστασης (Status Register, SR) Ο καταχωρητής κατάστασης περιέχει πληροφορίες σχετικά με το αποτέλεσμα της πιο πρόσφατα εκτελεσθείσας αριθμητικής εντολής. Αυτές οι πληροφορίες μπορούν να χρησιμοποιηθούν για να αλλάξουν τη ροή του προγράμματος προκειμένου να εκτελεστούν λειτουργίες υπό όρους. Ο καταχωρητής κατάστασης ενημερώνεται μετά από όλες τις λειτουργίες ALU, όπως καθορίζεται στην Αναφορά Set Instruction. Αυτό σε πολλές περιπτώσεις θα καταργήσει την ανάγκη χρήσης των ειδικών οδηγιών σύγκρισης, με αποτέλεσμα ταχύτερο και πιο συμπαγές κώδικα. 72

87 Ο καταχωρητής κατάστασης δεν αποθηκεύεται αυτόματα κατά την εισαγωγή μιας ρουτίνας διακοπής και δεν αποκαθίσταται όταν επιστρέφεται από μια διακοπή. Αυτό πρέπει να γίνεται με λογισμικό Καταχωρητής κατάστασης Ο καταχωρητής αυτός δίνει πληροφορίες σχετικά με τα αποτελέσματα της τελευταίας εντολής που εκτελέστηκε και σχετίζεται, όπως αναφέραμε, με την ALU. Ο καταχωρητής αυτός περιλαμβάνει κάποιες σημαίες υπό συνθήκη, οι πιο γνωστές από τις οποίες είναι οι σημαίες μηδενισμού (zero), προσήμου (sign) και κρατουμένου (carry). Οι σημαίες αυτές επηρεάζονται από την εκτέλεση των εντολών ως εξής: Σημαία μηδενισμού (Ζ, zero): αν το αποτέλεσμα μιας εντολής είναι 0, τότε Ζ= 1, διαφορετικά Ζ=0. Σημαία προσήμου (S, sign): Το bit που αντιστοιχεί στην σημαία αυτή προκύπτει από την εκτέλεση της λογικής πράξης OR ανάμεσα στην σημαία υπερχείλισης και την σημαία αρνητικού προσήμου. Σημαία κρατουμένου (C, carry): αν η εντολή είχε ως αποτέλεσμα να προκύψει κρατούμενο (από πρόσθεση) ή δανεικό (από αφαίρεση) τότε C=1, αλλιώς C=0. Η είσοδος/έξοδος ενός τέτοιου καταχωρητή στο χώρο δεδομένων πραγματοποιείται με LD και ST για μετατόπιση. Αν χρησιμοποιηθεί η είσοδος/έξοδος IN και OUT, η μετατόπιση μειώνεται κατά 0x20, με αποτέλεσμα μια μετατόπιση διεύθυνσης I/O μέσα στο 0x00-0x3F. Αναλυτικότερα Όνομα: SREG Offset: 0x5F Reset: 0x00 Ιδιότητα: Κατά τη διεύθυνση ως I/O μητρώο: offset διεύθυνση είναι 0x3F 73

88 Σχήμα 5.2. Byte καταχωρητή Ανάλυση των bits του καταχωρητή Bit 7 - I: Ενεργοποίηση γενικής διακοπής Ορισμένες φορές, σε ένα πρόγραμμα που εκτελείται στο μικροεπεξεργαστή υπάρχουν κρίσιμα τμήματα τα οποία θα πρέπει να εκτελεστούν χωρίς διακοπές. Για παράδειγμα, αυτό θα μπορούσε να συμβεί στην περίπτωση που υπάρχουν χρονικοί περιορισμοί για την ολοκλήρωση της εκτέλεσης ενός προγράμματος. Στην περίπτωση αυτή, είναι αναγκαίο να απενεργοποιηθεί για κάποιο διάστημα ο μηχανισμός των διακοπών. Όταν συμβεί αυτό, ο μικροεπεξεργαστής αγνοεί οποιοδήποτε αίτηση διακοπής μέχρι ο μηχανισμός των διακοπών να ενεργοποιηθεί και πάλι. Η ενεργοποίηση και η απενεργοποίηση γίνεται με ειδικές εντολές που πρέπει να ενσωματωθούν στα κατάλληλα σημεία ενός προγράμματος. Άλλες φορές, δε χρειάζεται να απενεργοποιηθούν όλες οι διακοπές αλλά να παρεμποδιστούν επιλεκτικά κάποιες από αυτές. Οι περισσότεροι μικροεπεξεργαστές μας παρέχουν τη δυνατότητα να παρεμποδίζουμε, (να θέτουμε, όπως λέμε, μάσκα διακοπών) σε όλες ή σε κάποιες από τις εισόδους διακοπών. Οι είσοδοι αυτές ονομάζονται παρεμποδιζόμενες διακοπές επειδή μπορούν να παρεμποδιστούν με τη χρήση μάσκας. Το ρεπερτόριο εντολών των μικροεπεξεργαστών περιέχει ειδικές εντολές για την τοποθέτηση και την αφαίρεση της μάσκας διακοπών. Έτσι, το ποιες διακοπές θα παρεμποδιστούν και σε ποια χρονική στιγμή είναι ευθύνη του προγράμματος. Το bit Global Interrupt Enable πρέπει να ρυθμιστεί για να ενεργοποιηθούν οι διακοπές. Εάν ο γενικός καταχωρητής ενεργοποίησης διακοπής σφαιρικής ρύθμισης έχει διαγραφεί, καμία από τις διακοπές δεν είναι ενεργοποιημένη ανεξάρτητα από τις επιμέρους ρυθμίσεις ενεργοποίησης διακοπής. Το I-bit εκκαθαρίζεται από το υλικό μετά από μια διακοπή και ρυθμίζεται από την εντολή RETI για να ενεργοποιηθούν οι επόμενες διακοπές. Το I-bit μπορεί επίσης να ρυθμιστεί και να καθαριστεί από τις οδηγίες SEI και CLI. 74

89 Bit 6 - T: Αποθήκευση αντιγραφής To Bit Copy BLD (Bit LoaD) και BST (Bit STORE) χρησιμοποιούν το bit T ως πηγή ή προορισμό για το «λειτουργικό» bit. Ουσιαστικά το bit αυτό χρησιμοποιείται για την ανάγνωση και την αποθήκευση κάποιων συγκεκριμένων bits, από έναν καταχωρητή σε άλλον. Bit 5 - H: Σημαία Half Carry Ο Ημιαθροιστής είναι ένα συνδυαστικό κύκλωμα με δύο εισόδους, x και y, και δύο εξόδους S (Sum, άθροισμα) και C (Carry, κρατούμενο). Έτσι η σημαία Half Carry H χαρακτηρίζει αριθμητικές πράξεις μέσω της σηματοδότησης δεκαδικού κρατουμένου κατά την εκτέλεση ορισμένων αριθμητικών εντολών. Το Half Carry Flag είναι χρήσιμο στην αριθμητική BCD. Bit 4 - S: Σημαία προσήμου Το S-bit προκύπτει μέσω της εκτέλεσης της λογικής πράξης OR μεταξύ της Αρνητικής Σημαίας Ν και της Σημαίας υπερχείλισης V. Bit 3 V: Σημαία υπερχείλισης Η σημαία V υποστηρίζει την αριθμητική συμπληρώματος ως προς 2. Bit 2 - N: Αρνητική σημαία Η αρνητική σημαία N υποδεικνύει ένα αρνητικό αποτέλεσμα σε μια αριθμητική ή λογική λειτουργία. Bit 1 - Z: Μηδενική σημαία Η μηδενική σημαία Z υποδεικνύει μηδενικό αποτέλεσμα σε μια αριθμητική ή λογική λειτουργία. Bit 0 - C: Κρατούμενο Κρατάει το κρατούμενο όταν χρειαστεί. 75

90 Αρχείο μητρώου γενικής χρήσης Το αρχείο μητρώου είναι βελτιστοποιημένο για το σετ εντολών RISC Enhanced AVR. Προκειμένου να επιτευχθούν οι απαιτούμενες επιδόσεις και η ευελιξία, υποστηρίζονται από το Αρχείο μητρώου τα ακόλουθα συστήματα εισόδου / εξόδου: Ένας τελεστή εξόδου 8 bit και μία είσοδος αποτελεσμάτων 8 bit Δύο τελεστές εξόδου 8 bit και μία είσοδος αποτελεσμάτων 8 bit Δύο τελεστές εξόδου 8 bit και μία είσοδος αποτελεσμάτων 16 bit Ένας τελεστής εξόδου 16 bit και μία είσοδος αποτελεσμάτων 16 bit Σχήμα 5.3. Κατάλογος εργασιών AVR CPU Οι περισσότερες από τις εντολές που λειτουργούν στο ολοκληρωμένο έχουν άμεση πρόσβαση σε όλους τους καταχωρητές και οι περισσότερες από αυτές είναι εντολές ενός κύκλου. Όπως φαίνεται στο σχήμα, σε κάθε καταχωρητή αποδίδεται επίσης μια διεύθυνση μνήμης δεδομένων, χαρτογραφώντας τις απευθείας στις πρώτες 32 θέσεις του χώρου δεδομένων του χρήστη. Παρόλο που δεν υλοποιείται φυσικά ως θέσεις μνήμης SRAM, αυτή η λειτουργία μνήμης παρέχει μεγάλη ευελιξία στην πρόσβαση των καταχωρητών, καθώς οι καταχωρητές X, Y και Z-pointer μπορούν να οριστούν για την χαρτογράφηση οποιουδήποτε καταχωρητή στο αρχείο. 76

91 Ο καταχωρητής X, ο καταχωρητής Y και ο καταχωρητής Z Οι καταχωρητές R26... R31 έχουν πρόσθετη λειτουργία. Είναι δείκτες διεύθυνσης 16 bit με επιλογές High και Low. Σχήμα 5.4. Καταχωρητές X,Y,Z Δείκτης Στοίβας Ο δείκτης στοίβας (Stack Pointer, SP) είναι ένας δείκτης διευθύνσεων της κορυφής της στοίβας η οποία βρίσκεται στην κύρια μνήμη. Η στοίβα είναι μια περιοχή της μνήμης η οποία χρησιμοποιείται κυρίως για την εξυπηρέτηση κλήσεων διακοπών και υπορουτινών. Η στοίβα χρησιμοποιείται κυρίως για την αποθήκευση προσωρινών δεδομένων στη μνήμη, για την αποθήκευση τοπικών μεταβλητών και για την αποθήκευση διευθύνσεων επιστροφής. Η στοίβα εφαρμόζεται ως αναπτυσσόμενη από υψηλότερες σε χαμηλότερες θέσεις μνήμης. Ο κατάλογος δείκτη στοίβας δείχνει πάντα στην κορυφή της στοίβας. Ο δείκτης στοίβας υποδεικνύει την περιοχή SRAM Stack δεδομένων, στην οποία βρίσκονται οι υπορουτίνες και οι Διακοπές. Η εντολή Stack PUSH μειώνει τον δείκτη στοίβας. Η στοίβα στην SRAM πρέπει να οριστεί από το πρόγραμμα πριν εκτελεστούν οι κλήσεις υποπρογράμματος ή ενεργοποιηθούν οι διακοπές. Η αρχική τιμή του δείκτη στοίβας ισούται με την τελευταία διεύθυνση της εσωτερικής SRAM και ο δείκτης στοίβας πρέπει να ρυθμιστεί στο σημείο πάνω από την αρχή της SRAM. 77

92 Σχήμα 5.5. Δείκτες στοίβας Ο δείκτης στοίβας AVR υλοποιείται από δύο καταχωρητές 8-bit στο χώρο εισόδου/εξόδου. Ο αριθμός των bits που χρησιμοποιούνται πραγματικά εξαρτώνται από την εφαρμογή Υψηλό byte στον δείκτη στοίβας Όταν χρησιμοποιούνται εξειδικευμένες I/O IN/OUT, πρέπει να χρησιμοποιηθούν οι διευθύνσεις I/O 0x00-0x3F. Όταν αντιμετωπίζονται οι καταχωρητές εισόδου/εξόδου ως χώρος δεδομένων και χρησιμοποιούνται οι LD και ST, πρέπει να προστεθεί 0x20 σε αυτές τις διευθύνσεις. Όνομα: SPH Offset: 0x5E Reset: RAMEND Σχήμα 5.6. Bits στον υψηλό δείκτη στοίβας 78

93 Χαμηλό byte στον δείκτη στοίβας Όταν χρησιμοποιούνται εξειδικευμένες I/O IN/OUT, πρέπει να χρησιμοποιηθούν οι διευθύνσεις I/O 0x00-0x3F. Όταν αντιμετωπίζονται οι καταχωρητές εισόδου/εξόδου ως χώρος δεδομένων και χρησιμοποιούνται οι LD και ST, πρέπει να προστεθεί 0x20 σε αυτές τις διευθύνσεις. Όνομα: SPL Offset: 0x5D Reset: 0x Σχήμα 5.7. Bits στον χαμηλό δείκτη στοίβας Χρόνος εκτέλεσης εντολών Υπάρχουν πολλές εφαρμογές μικροϋπολογιστικών συστημάτων, όπου ο υπολογισμός του χρόνου εκτέλεσης ενός ορισμένου τμήματος κώδικα είναι απολύτως απαραίτητος. Παράδειγμα αποτελεί η δημιουργία ενός βρόχου συγκεκριμένης χρονικής καθυστέρησης. Το CPU του AVR οδηγείται από το ρολόι του CPU (clkcpu), που παράγεται απευθείας από την επιλεγμένη πηγή ρολογιού για το τσιπ. Δεν χρησιμοποιείται εσωτερική διαίρεση ρολογιού. Παραπάνω φαίνεται η μεταφορά των τελεστών σε ένα κύκλο ρολογιού. 79

94 Επαναφορά και χειρισμός διακοπών Σε πολλές περιπτώσεις ένα σημαντικό μέρος ή και ολόκληρος ο χρόνος του μικροεπεξεργαστή καταναλώνεται στην εξυπηρέτηση περιφερειακών συσκευών, όποτε αυτές το χρειαστούν. Αυτό συμβαίνει στη μέθοδο της συνεχούς περιόδευσης (polling). Στη μέθοδο αυτή ο μικροεπεξεργαστής πρέπει να παρακολουθεί συνεχώς τις περιφερειακές συσκευές μέσω μιας θύρας εισόδου, προκειμένου να διαπιστώσει αν κάποια συσκευή χρειάζεται εξυπηρέτηση. Αυτή η συνεχής παρακολούθηση έχει μια χρονική επιβάρυνση, η οποία είναι τόσο μεγαλύτερη όσο μεγαλύτερη είναι η συχνότητα με την οποία ζητούν να εξυπηρετηθούν οι περιφερειακές συσκευές. Οι διακοπές είναι ένας άλλος τρόπος εξυπηρέτησης των περιφερειακών συσκευών, ο οποίος αφήνει το μικροεπεξεργαστή να εκτελεί τον κώδικα του κύριου προγράμματος. Με τη μέθοδο των διακοπών ο μικροεπεξεργαστής ασχολείται με κάποια περιφερειακή συσκευή μόνο όταν αυτή ζητήσει εξυπηρέτηση. Ο AVR παρέχει πολλές διαφορετικές πηγές διακοπής. Όλες οι διακοπές σηματοδοτούνται με μεμονωμένα bits εντοπισμού, τα οποία πρέπει να είναι τεθούν σε λογικό 1 μαζί με το Bit Global Interrupt Enable, για να ενεργοποιηθεί η διακοπή. Ανάλογα με την τιμή του μετρητή, οι διακοπές μπορούν να απενεργοποιηθούν αυτόματα όταν έχουν προγραμματιστεί τα μπλοκάκια κλειδώματος Boot Lock BLB02 ή BLB12. Αυτή η λειτουργία βελτιώνει την ασφάλεια του λογισμικού. 80

95 Οι κατώτερες διευθύνσεις στο χώρο μνήμης προγράμματος καθορίζονται από προεπιλογή ως εντολές επαναφοράς και διακοπής. Έχουν καθοριστεί επίπεδα προτεραιότητας. Όσο χαμηλότερη είναι η διεύθυνση τόσο υψηλότερο είναι το επίπεδο προτεραιότητας. Η RESET έχει την υψηλότερη προτεραιότητα και το επόμενο είναι το INT0 - το αίτημα εξωτερικής διακοπής 0. Οι εντολές διακοπής μπορούν να μετακινηθούν στην αρχή της ενότητας Flash εκκίνησης ρυθμίζοντας το bit IVSEL στο MCUCR. Το Reset Vector μπορεί επίσης να μετακινηθεί στην αρχή της ενότητας Flash Boot προγραμματίζοντας την ασφαλειοθήκη BOOTRST. Όταν εμφανιστεί μια διακοπή, το Global Interrupt Enable I-bit ενεργοποίησης διακοπής καθαρίζεται και απενεργοποιούνται όλες οι διακοπές. Το λογισμικό του χρήστη μπορεί να γράψει λογικό 1 στο I-bit για να ενεργοποιήσει τις ένθετες διακοπές. Όλες οι ενεργοποιημένες διακοπές μπορούν τότε να διακόψουν την τρέχουσα ρουτίνα διακοπής. Το I-bit ρυθμίζεται αυτόματα όταν εκτελείται μια εντολή Επιστροφής από Διακοπή - RETI -. Υπάρχουν δύο τύποι διακοπών: Ο πρώτος τύπος ενεργοποιείται από ένα συμβάν που θέτει τη σημαία διακοπής. Για αυτές τις διακοπές, ο Μετρητής εκτελεί τη ρουτίνα χειρισμού διακοπής και το υλικό καθαρίζει την αντίστοιχη Σημαία Διακοπής. Η διακοπή μπορεί επίσης να γίνει εγγράφοντας λογικό 1 στο bit που πρόκειται να είναι ο εκκαθαριστής. Ο δεύτερος τύπος διακοπών θα ενεργοποιηθεί όσο υπάρχει η κατάσταση διακοπής. Αυτές οι διακοπές δεν έχουν απαραιτήτως Σημαίες Διακοπής. Εάν η κατάσταση διακοπής εξαφανιστεί πριν ενεργοποιηθεί η διακοπή, η διακοπή δεν θα ενεργοποιηθεί. Όταν ο AVR εξέρχεται από μια διακοπή, θα επιστρέψει πάντοτε στο κύριο πρόγραμμα και θα εκτελέσει μία ακόμα εντολή προτού παρουσιαστεί οποιαδήποτε επιπρόσθετη διακοπή. Παράδειγμα: 81

96 Σχήμα 5.8. Προγραμματισμός σε Assembly και C Χρόνος απόκρισης διακοπής Η απόκριση εκτέλεσης διακοπής για όλες τις ενεργοποιημένες διακοπές του AVR είναι τουλάχιστον τέσσερις παλμοί ρολογιού. Μετά από τέσσερις κύκλους ρολογιού η διεύθυνση διακοπής εκτελείται. Κατά τη διάρκεια αυτής της περιόδου των τεσσάρων κύκλων, ο μετρητής προγραμμάτων αλλάζει τη στοίβα. Εάν παρουσιαστεί διακοπή κατά την εκτέλεση μιας εντολής πολλαπλών κύκλων, αυτή η εντολή ολοκληρώνεται πριν από την επίδοση της διακοπής. Εάν προκύψει διακοπή όταν η μονάδα MCU βρίσκεται σε κατάσταση αναστολής λειτουργίας, ο χρόνος απόκρισης εκτέλεσης διακοπής αυξάνεται κατά τέσσερις παλμούς ρολογιού. 82

97 5.2. AVR Memories Στη σχεδίαση μικροεπεξεργαστών και μικροελεγκτών ακολουθούνται δύο αρχιτεκτονικές. Στην πρώτη χρησιμοποιείται μία μνήμη τόσο για την αποθήκευση του προγράμματος όσο και για την αποθήκευση των δεδομένων. Στη δεύτερη χρησιμοποιούνται δύο ξεχωριστές μνήμες. Η μία χρησιμοποιείται για την αποθήκευση του προγράμματος και λέγεται μνήμη προγράμματος ενώ η άλλη για την αποθήκευση των δεδομένων και λέγεται μνήμη δεδομένων. Οι δύο αρχιτεκτονικές παρουσιάζονται στο σχήμα. Σχήμα 5.8. Τύποι μνήμης Ο μικροελεγκτής AVR ακολουθεί τη δεύτερη αρχιτεκτονική. Στη δεύτερη αρχιτεκτονική, εντολές και δεδομένα κινούνται σε ξεχωριστούς διαδρόμους (διαύλους) με αποτέλεσμα αυτό να μπορεί να γίνει όχι μόνον με πολύ μεγαλύτερη ταχύτητα αλλά ακόμη και την ίδια χρονική στιγμή. Αντίθετα, στην πρώτη αρχιτεκτονική, εντολές και δεδομένα μοιράζονται τον ίδιο διάδρομο με αποτέλεσμα να ελαττώνεται η ταχύτητα μεταφοράς τους. Επιπλέον, το πλεονέκτημα της δεύτερης αρχιτεκτονικής, να χρησιμοποιεί ξεχωριστούς χώρους μνήμης για την αποθήκευση των δεδομένων και του προγράμματος, δίνει τη δυνατότητα χρησιμοποίησης μνήμης με διαφορετικό μήκος λέξης. Έτσι, στην περίπτωση του PIC, η μνήμη προγράμματος έχει μήκος λέξης δεκατεσσάρων (14) δυαδικών ψηφίων (bits) αντί των 83

98 οκτώ (8), της μνήμης των δεδομένων, με σκοπό όλες οι εντολές να κωδικοποιούνται σε μία λέξη. Θυμίζουμε ότι, γενικά, οι εντολές των μικροεπεξεργαστών και μικροελεγκτών μπορεί να έχουν μήκος μίας, δύο ή, ακόμη, και περισσοτέρων λέξεων, με αντίστοιχη, βέβαια, αύξηση του χρόνου εκτέλεσής τους. Το μέγεθος της μνήμης προγράμματος κυμαίνεται από 2 ως 8KBytes και συνήθως είναι τύπου Flash. Η συγκεκριμένη τεχνολογία επιτρέπει όχι μόνον την εγγραφή αλλά και το σβήσιμο της μνήμης να γίνεται με ηλεκτρονικό τρόπο. Αυτό σημαίνει ότι ο προγραμματισμός του μικροελεγκτή γίνεται εύκολα ενώ αυτός βρίσκεται συνδεδεμένος στο κύκλωμα της εκάστοτε εφαρμογής. Στις επόμενες ενότητες του κεφαλαίου αυτού, θα αναφερθούμε αναλυτικά στον τρόπο με τον οποίο ο μικροελεγκτής μας χρησιμοποιεί τις μνήμες που προαναφέραμε Επαναπρογραμματιζόμενη μνήμη προγράμματος Flash εντός του συστήματος Στη μνήμη αυτή το περιεχόμενο μπορεί να γραφεί με τον προγραμματιστή να σβηστεί και να επανεγγραφεί. Το σβήσιμο γίνεται μόνο με υπεριώδη ακτινοβολία που παρέχεται από ειδικό laser. Για το λόγο αυτό τα κυκλώματα αυτά έχουν ένα παραθυράκι πάνω για να επιτρέπει την υπεριώδη ακτίνα να περάσει και να διαγράψει τις πληροφορίες. Ο ATmega328/P περιέχει 32Kbytes On-chip επανασχεδιάσιμης μνήμης Flash για αποθήκευση προγραμμάτων. Δεδομένου ότι ο AVR έχει πλάτος 16 ή 32 bits, η Flash είναι οργανωμένη ως 16K x 16. Για την ασφάλεια του λογισμικού, ο χώρος μνήμης του Προγράμματος Flash χωρίζεται σε δύο ενότητες - Τμήμα Loader Loader και Τμήμα Προγράμματος Εφαρμογών στη συσκευή. Η μνήμη Flash έχει αντοχή τουλάχιστον κύκλων εγγραφής / διαγραφής. Ο μετρητής προγράμματος ATmega328 / P (PC) είναι ευρυγώνιος 14 bit, αντιμετωπίζοντας έτσι τις θέσεις μνήμης προγραμμάτων 16K.. 84

99 Σχήμα 5.9. Μνήμη στον ATmega Μνήμη SRAM δεδομένων Η στατική μνήμη τυχαίας προσπέλασης έχει σχεδιαστεί για να είναι ένα σύνολο από κύτταρα αποθήκευσης, μαζί με τα απαραίτητα κυκλώματα για τη μεταφορά των πληροφοριών μέσα και έξω από τη συσκευή. Επειδή μπορεί να γίνει προσπέλαση στα κύτταρα μνήμης από και προς οποιαδήποτε επιθυμητή τυχαία θέση, προέκυψε το όνομα «Μνήμη Τυχαίας προσπέλασης» (Random Access Memory). Μια μονάδα μνήμης αποθηκεύει τις δυαδικές πληροφορίες κατά ομάδες bit που ονομάζονται «λέξεις» (words). Κάθε λέξη είναι μια ομάδα από bit που μεταφέρονται όλα μαζί σαν μια μονάδα. Η χωρητικότητα μιας μνήμης εκφράζει τον αριθμό των bytes που μπορεί να αποθηκεύσει. Υπάρχει αντιστοίχιση της ποσότητας πληροφορίας που αποθηκεύεται σε μια μνήμη και του περιεχομένου, μέσω ειδικού συμβολισμού (π.χ. Κ=2 10 λέξεις κλπ). Η επικοινωνία μεταξύ της μονάδας μνήμης και του περιβάλλοντος επιτυγχάνεται με γραμμές εισόδου -εξόδου δεδομένων, γραμμές επιλογής διεύθυνσης και γραμμές ελέγχου. Οι δύο λειτουργίες που μπορεί να εκτελέσει μια μνήμη SRAM είναι η γραφή και η ανάγνωση. Η συσκευή είναι ένας σύνθετος μικροελεγκτής με περισσότερες περιφερειακές μονάδες από ό, τι μπορεί να υποστηριχθεί μέσα στις 64 θέσεις που έχουν δεσμευτεί στον Opcode για τις οδηγίες IN και OUT. Οι πέντε διαφορετικές λειτουργίες διευθύνσεων για την κάλυψη της μνήμης δεδομένων είναι: 85

100 Άμεση Έμμεση με εκτόπισμα Έμμεση Έμμεση με μείωση καταχωρητών Έμμεση μετά την προσαύξηση Οι 32 καταχωρητές εργασίας γενικού σκοπού, οι 64 καταχωρητές I/O, οι 160 εκτεταμένοι καταχωρητές εισόδου/εξόδου και τα 2Κ bytes εσωτερικών SRAM δεδομένων στη συσκευή αποτελούν την SRAM. Σχήμα Ανάλυση της SRAM Σχήμα Κύκλος ανάγνωσης της SRAM 86

101 Μνήμη δεδομένων EEPROM Η ηλεκτρικά διαγραφόμενη προγραμματιζόμενη μνήμη μόνο για ανάγνωση (EEPROM) βασίζεται σε μια παρόμοια κατασκευή ημιαγωγών σε EPROM, αλλά επιτρέπει ολόκληρο το περιεχόμενο της (ή επιλεγμένες τράπεζες) να είναι ηλεκτρικά διαγραφόμενο, τότε ξαναγραφεί ηλεκτρικά, έτσι ώστε να μην αφαιρεθεί από τον υπολογιστή (φωτογραφική μηχανή, MP3 player, κ.λπ.). Η EEPROM είναι πολύ πιο αργή (χιλιοστά του δευτερολέπτου ανά bit) από την ανάγνωση μιας ROM ή την εγγραφή σε μνήμη RAM (νανοδευτερόλεπτα και στις δύο περιπτώσεις). Ο ATmega328/P περιέχει 1K byte μνήμης EEPROM δεδομένων. Είναι οργανωμένο ως ξεχωριστός χώρος δεδομένων, στον οποίο μπορούν να διαβαστούν και να γραφτούν απλά byte. Η EEPROM έχει αντοχή τουλάχιστον κύκλων εγγραφής/διαγραφής Η διεύθυνση EEPROM υψηλή Όταν αντιμετωπίζονται οι καταχωρητές εισόδου/εξόδου ως χώρος δεδομένων χρησιμοποιώντας οδηγίες LD και ST, πρέπει να χρησιμοποιείται η παρεχόμενη μετατόπιση. Όταν χρησιμοποιούνται οι εντολές εισόδου/εξόδου IN και OUT, η μετατόπιση μειώνεται κατά 0x20, με αποτέλεσμα μια μετατόπιση διεύθυνσης I/O μέσα στο 0x00-0x3F. Όνομα: EEARH Offset: 0x42 Reset: 0x0X Ιδιότητα: Κατά τη διεύθυνση ως I / O μητρώο: offset διεύθυνση είναι 0x22 Σχήμα Bits στην υψηλή EEPROM 87

102 Η διεύθυνση EEPROM χαμηλή Όταν χρησιμοποιούνται IN/OUT εξειδικευμένες I/O, πρέπει να χρησιμοποιηθούν οι διευθύνσεις I / O 0x00-0x3F. Όταν αντιμετωπίζονται οι καταχωρητές εισόδου/εξόδου ως χώρος δεδομένων χρησιμοποιούνται οι LD και ST, με 0x20 σε αυτές τις διευθύνσεις. Όνομα: EEARL Offset: 0x41 Reset: 0xXX Ιδιότητα: Κατά τη διεύθυνση ως I/O μητρώο: offset διεύθυνση είναι 0x21 Σχήμα Bits στην χαμηλή EEPROM Bits 7: 0 - EEARn: Διεύθυνση EEPROM Οι καταχωρητές διευθύνσεων EEPROM - EEARH και EEARL καθορίζουν την διεύθυνση που θα γραφούν ή θα αναγνωστούν τα δεδομένα από τον χώρο 1K Bytes της EEPROM. Τα bytes δεδομένων EEPROM απευθύνονται γραμμικά μεταξύ 0 και 255/511/ Εγγραφή δεδομένων EEPROM Όταν αντιμετωπίζονται οι καταχωρητές εισόδου/εξόδου ως χώρος δεδομένων χρησιμοποιώντας οδηγίες LD και ST, πρέπει να χρησιμοποιείται η παρεχόμενη μετατόπιση. Όταν χρησιμοποιούνται οι εντολές εισόδου / εξόδου IN και OUT, η μετατόπιση μειώνεται κατά 0x20, με αποτέλεσμα μια μετατόπιση διεύθυνσης I/O μέσα στο 0x00-0x3F. Όνομα: Εκτόπισμα EEDR: 0x40 Reset: 0x00 Ιδιότητα: Κατά τη διεύθυνση ως εγγραφή εισόδου/εξόδου: η μετατόπιση διεύθυνσης είναι 0x20 88

103 Για τη λειτουργία εγγραφής EEPROM, ο κατάλογος EEDR περιέχει τα δεδομένα που πρέπει να καταχωρηθούν στην EEPROM στη διεύθυνση που δίδει το μητρώο EEAR. Για τη λειτουργία ανάγνωσης EEPROM, ο EEDR περιέχει τα δεδομένα που διαβάζονται από την EEPROM στη διεύθυνση που δίδεται από το EEAR Εγγραφή ελέγχου EEPROM Όταν αντιμετωπίζονται οι καταχωρητές εισόδου/εξόδου ως χώρος δεδομένων χρησιμοποιώντας οδηγίες LD και ST, πρέπει να χρησιμοποιείται η παρεχόμενη μετατόπιση. Όταν χρησιμοποιούνται οι εντολές εισόδου/εξόδου IN και OUT, η μετατόπιση μειώνεται κατά 0x20, με αποτέλεσμα μια μετατόπιση διεύθυνσης I/O μέσα στο 0x00-0x3F. Όνομα: EECR Offset: 0x3F Reset: 0x00 Ιδιότητα: Κατά τη διεύθυνση ως I / O μητρώο: offset διεύθυνση είναι 0x1F Σχήμα Εγγραφή στην EEPROM Οι χρόνοι προγραμματισμού για τους διαφορετικούς τρόπους λειτουργίας φαίνονται στον παρακάτω πίνακα. Εάν έχει οριστεί το EEPE, κάθε εγγραφή στο EEPMn θα αγνοηθεί. Κατά τη διάρκεια της επαναφοράς, τα δυαδικά ψηφία EEPMn θα επαναφέρονται στο 0b00, εκτός εάν η EEPROM είναι απασχολημένη. Σχήμα Χρονική ανταπόκριση της EEPROM 89

104 Κατά την εγγραφή της EEPROM πρέπει να ακολουθηθεί η παρακάτω διαδικασία: 1. Αναμονή έως ότου το EEPE γίνει μηδενικό. 2. Αναμονή μέχρι το SPMEN στο SPMCSR να μηδενιστεί. 3. Εγγραφή της νέας διεύθυνσης EEPROM στο EEAR (προαιρετικό). 4. Εγγραφή των νέων δεδομένων EEPROM στο EEDR (προαιρετικό). 5. Εγγραφή λογικού 1 στο bit EEMPE ενώ εγγράφουμε λογικό 0 στο EEPE στο EECR. 6. Μετά από τέσσερις παλμούς ρολογιού μετά τον καθορισμό του EEMPE, εμφανίζεται το I στο EEPE. Η EEPROM δεν μπορεί να προγραμματιστεί κατά τη διάρκεια της εγγραφής του CPU στη μνήμη Flash. Το λογισμικό πρέπει να ελέγξει ότι ο προγραμματισμός της flash έχει ολοκληρωθεί πριν ξεκινήσει μια νέα εγγραφή στην EEPROM. Σχήμα Χρόνος προγραμματισμού EEPROM Τα παρακάτω παραδείγματα κώδικα δείχνουν μία συναρμολόγηση και μία συνάρτηση C για εγγραφή στην EEPROM. Τα παραδείγματα υποθέτουν ότι οι διακοπές είναι ελεγχόμενες (π.χ. με την απενεργοποίηση διακοπών) έτσι ώστε να μη σημειώνονται διακοπές κατά την εκτέλεση αυτών των λειτουργιών. Τα παραδείγματα υποθέτουν επίσης ότι δεν υπάρχει φορτωτής εκκίνησης Flash στο λογισμικό. EEPROM_write: ; Wait for completion of previous write sbic EECR,EEPE rjmp EEPROM_write ; Set up address (r18:r17) in address register out EEARH, r18 90

105 out EEARL, r17 ; Write data (r16) to Data Register out EEDR,r16 ; Write logical one to EEMPE sbi EECR,EEMPE ; Start eeprom write by setting EEPE sbi EECR,EEPE ret C Code Example void EEPROM_write(unsigned int uiaddress, unsigned char ucdata) { /* Wait for completion of previous write */ while(eecr & (1<<EEPE)) ; /* Set up address and Data Registers */ EEAR = uiaddress; EEDR = ucdata; /* Write logical one to EEMPE */ EECR = (1<<EEMPE); /* Start eeprom write by setting EEPE */ EECR = (1<<EEPE); } 91

106 5.3. Ρολόι συστήματος και επιλογές ρολογιού Το παρακάτω σχήμα απεικονίζει τα κύρια συστήματα ρολογιού στη συσκευή και τη διανομή τους. Όλα τα ρολόγια δεν χρειάζεται να είναι ενεργά σε δεδομένη στιγμή. Προκειμένου να μειωθεί η κατανάλωση ενέργειας, τα ρολόγια σε μονάδες που δεν χρησιμοποιούνται μπορούν να σταματήσουν με διαφορετικές λειτουργίες ύπνου. Η συχνότητα του ρολογιού συστήματος αναφέρεται στη συχνότητα που παράγεται από το Prescaler ρολόι συστήματος. Όλες οι έξοδοι ρολογιού από τη μονάδα ελέγχου ρολογιού AVR εκτελούνται στην ίδια συχνότητα. Σχήμα Συστήματα ρολογιού 92

107 Ρολόι CPU - clkcpu Το ρολόι του CPU δρομολογείται σε τμήματα του συστήματος που σχετίζονται με τη λειτουργία του πυρήνα AVR. Η διακοπή του ρολογιού CPU εμποδίζει τον πυρήνα από την εκτέλεση γενικών λειτουργιών και υπολογισμών I/O Ρολόι Το ρολόι εισόδου/εξόδου χρησιμοποιείται από την πλειοψηφία των μονάδων εισόδου/εξόδου, όπως τα χρονόμετρα/μετρητές, το SPI και το USART. Το ρολόι εισόδου/εξόδου χρησιμοποιείται επίσης από τη μονάδα εξωτερικού διακόπτη, αλλά η ανίχνευση κατάστασης εκκίνησης στη μονάδα USI πραγματοποιείται ασύγχρονα όταν διακοπεί η λειτουργία clk I/O Ρολόι Flash - clkflash Το ρολόι Flash ελέγχει τη λειτουργία της διασύνδεσης Flash. Το ρολόι Flash είναι συνήθως ενεργό ταυτόχρονα με το ρολόι του CPU Ασύγχρονο ρολόι χρονοδιακόπτη - clkasy Το ρολόι ασύγχρονου χρονοδιακόπτη επιτρέπει τον ασύγχρονο χρονοδιακόπτη να χρονομετρήσει απευθείας από εξωτερικό ρολόι ή εξωτερικό κρυστάλλινο ρολόι 32kHz Ρολόι ADC - clkadc Το ADC είναι εφοδιασμένο με ειδικό πεδίο ρολογιού. Αυτό επιτρέπει τη διακοπή των ρολογιών CPU και I/O προκειμένου να μειωθεί ο θόρυβος που παράγεται από ψηφιακά κυκλώματα. Παρέχει ακριβέστερα αποτελέσματα μετατροπής ADC. 93

108 Πηγές ρολογιού Η συσκευή διαθέτει τις ακόλουθες επιλογές πηγής ρολογιού, οι οποίες μπορούν να επιλέγονται από τα bits Fuse Flash όπως φαίνεται παρακάτω. Το ρολόι από την επιλεγμένη πηγή εισάγεται στη γεννήτρια ρολογιού AVR και δρομολογείται στις κατάλληλες μονάδες Προεπιλεγμένη ροή ρολογιού Η συσκευή αποστέλλεται με εσωτερικό ταλαντωτή RC στα 8.0MHz και με αποτέλεσμα το ρολόι συστήματος να χρησιμοποιεί 1.0MHz. Ο χρόνος εκκίνησης είναι ρυθμισμένος στο μέγιστο και η περίοδος χρονικού περιορισμού είναι ενεργοποιημένη. Αυτή η προεπιλεγμένη ρύθμιση διασφαλίζει ότι όλοι οι χρήστες μπορούν να πραγματοποιήσουν την επιθυμητή ρύθμιση πηγής ρολογιού χρησιμοποιώντας οποιαδήποτε διαθέσιμη διεπαφή προγραμματισμού Ακολουθία εκκίνησης ρολογιού Για να εξασφαλιστεί επαρκής VCC, η συσκευή εκπέμπει εσωτερική επαναφορά με καθυστέρηση (ttout). Οι επιλέξιμες καθυστερήσεις εμφανίζονται στον παρακάτω πίνακα. Η συχνότητα του ταλαντωτή Watchdog εξαρτάται από την τάση. Σχήμα Ταλαντωτής Watchdog 94

109 Κύριος σκοπός της καθυστέρησης είναι να διατηρείται η συσκευή σε επαναφορά μέχρι να τροφοδοτηθεί με την ελάχιστη τάση VCC. Η καθυστέρηση δεν θα παρακολουθεί την πραγματική τάση, οπότε απαιτείται να επιλεγεί μια καθυστέρηση μεγαλύτερη από την ώρα ανόδου του VCC. Αν αυτό δεν είναι δυνατό, πρέπει να χρησιμοποιηθεί ένα εσωτερικό ή εξωτερικό κύκλωμα. Ένα κύκλωμα BOD θα εξασφαλίσει επαρκή VCC προτού απελευθερώσει την επαναφορά και η καθυστέρηση του χρόνου απενεργοποίησης μπορεί να απενεργοποιηθεί. Ο ταλαντωτής απαιτείται να ταλαντεύεται για έναν ελάχιστο αριθμό κύκλων πριν το ρολόι θεωρηθεί σταθερό. Ένας εσωτερικός μετρητής κυματομορφής παρακολουθεί το ρολόι εξόδου του ταλαντωτή και διατηρεί την εσωτερική επαναφορά ενεργή για ένα δεδομένο αριθμό κύκλων ρολογιού. Στη συνέχεια απελευθερώνεται η επαναφορά και η συσκευή θα αρχίσει να εκτελείται. Η ακολουθία εκκίνησης για το ρολόι περιλαμβάνει τόσο την καθυστέρηση απόκλισης όσο και την ώρα έναρξης της εκκίνησης από την επαναφορά της συσκευής Ταλαντωτής κρυστάλλων χαμηλής ισχύος Οι ακροδέκτες XTAL1 και XTAL2 είναι εισόδου και εξόδου, αντίστοιχα, ενός αντιστρεπτικού ενισχυτή, ο οποίος μπορεί να διαμορφωθεί για χρήση ως ταλαντωτής On-chip. Τα C1 και C2 θα πρέπει να είναι πάντοτε ίσα για τους κρυστάλλους. Η βέλτιστη τιμή των πυκνωτών εξαρτάται από τον κρύσταλλο. Σχήμα Ταλαντωτής με πυκνωτές Αυτός ο ταλαντωτής κρυστάλλου είναι ένας ταλαντωτής χαμηλής ισχύος, με μειωμένη ταλάντωση στην έξοδο XTAL2. Καταναλώνει λιγότερη ενέργεια, αλλά δεν είναι ικανός να οδηγήσει άλλες εισόδους ρολογιού και μπορεί να είναι πιο ευαίσθητος σε θόρυβο, όταν λειτουργεί σε θορυβώδη περιβάλλοντα. Ο Ταλαντωτής Χαμηλής Ισχύος μπορεί να 95

110 λειτουργήσει με τρεις διαφορετικούς τρόπους, ο καθένας βελτιστοποιημένος για ένα συγκεκριμένο εύρος συχνοτήτων. Ο τρόπος λειτουργίας φαίνεται στον παρακάτω πίνακα: Σχήμα Ταχύτητα λειτουργίας ταλαντωτή κρυστάλλου Πλήρης ταλαντωτής κρυστάλλων Swing Αυτός ο Ταλαντωτής Κρυστάλλων είναι ένας ταλαντωτής πλήρους ταλάντωσης, με ταλαντώσεις σιδηροτροχιάς στην έξοδο XTAL2. Αυτό είναι χρήσιμο για την οδήγηση άλλων εισόδων ρολογιού και σε θορυβώδη περιβάλλοντα. Σημειώστε ότι ο πλήρης ταλαντωτής κρυστάλλων Swing θα λειτουργεί μόνο για VCC = V. Ο κρύσταλλος θα πρέπει να συνδεθεί όπως περιγράφεται στις συνδέσεις πηγής ρολογιού. Oscillator Source / Start-Up Time Additional Delay CKSEL0 SUT[1:0] Power Conditions from Power-down from Reset Ceramic resonator, and 258 CK Power-save (V 14CK = + 5.0V) 4.1ms (1) 0 00 Ceramic resonator, slowly rising power 258 CK 14CK + 65ms (1) 0 01 Ceramic resonator, 1K CK 14CK (2) 0 10 Ceramic resonator, 1K CK 14CK + 4.1ms (2) 0 11 Ceramic resonator, slowly rising power 1K CK 14CK + 65ms (2) 1 00 Crystal Oscillator, 16K CK 14CK 1 01 Crystal Oscillator, 16K CK 14CK + 4.1ms

111 Ταλαντωτής κρυστάλλων χαμηλής συχνότητας Ο κρυσταλλικός ταλαντωτής χαμηλής συχνότητας βελτιστοποιείται για χρήση με κρυστάλλινο ρολόι kHz. Κατά την επιλογή κρυστάλλων, πρέπει να ληφθεί υπόψη η χωρητικότητα φορτίου και η ισοδύναμη αντίσταση σειρών κρυστάλλων (ESR). Ο ταλαντωτής είναι βελτιστοποιημένος για πολύ χαμηλή κατανάλωση ρεύματος και συνεπώς όταν γίνεται η επιλογή κρυστάλλων, πρέπει να εξεταστούν οι μέγιστες συστάσεις ESR: Crystal CL [pf] Max. ESR ^Ω] (1 > Σχήμα Μέγιστες τιμές του κρυστάλλου Ο ταλαντωτής κρυστάλλων χαμηλής συχνότητας παρέχει μια εσωτερική χωρητικότητα φορτίου σε κάθε ακίδα TOSC: 32kHz Osc. Type Cap. (XTAL1/TOSC1) Cap. (XTAL2/TSOC2) System Osc. 18pF 8pF Βαθμονομημένος εσωτερικός ταλαντωτής RC Ο ταλαντωτής RC παρέχει ένα ρολόι 8.0MHz. Αν και εξαρτάται από την τάση και τη θερμοκρασία, αυτό το ρολόι μπορεί να βαθμονομείται με μεγάλη ακρίβεια από τον χρήστη. Η συσκευή διατίθεται μαζί με την προγραμματισμένη ασφάλεια CKDIV8. Αυτό το ρολόι μπορεί να επιλεγεί ως ρολόι συστήματος προγραμματίζοντας τις ασφάλειες CKSEL. Όταν χρησιμοποιείται αυτός ο ταλαντωτής ως ρολόι, ο ταλαντωτής Watchdog θα εξακολουθεί να χρησιμοποιείται για το χρονόμετρο Watchdog και για το χρονικό όριο Reset. 97

112 kHz εσωτερικός ταλαντωτής Ο εσωτερικός ταλαντωτής 128kHz είναι ένας ταλαντωτής χαμηλής ισχύος που παρέχει ρολόι 128kHz. Η συχνότητα είναι ονομαστική στα 3V και στους 25 C. Αυτό το ρολόι μπορεί να επιλεγεί ως ρολόι συστήματος προγραμματίζοντας τις ασφάλειες CKSEL στο '0011': Λειτουργικοί τρόποι λειτουργίας 128kHz εσωτερικού ταλαντωτή: Nominal Frequency (1) CKSEL[3:0] 128kHz 0011 Σχήμα Συχνότητα λειτουργίας εσωτερικού ταλαντωτή Ο ταλαντωτής 128kHz είναι μια πολύ χαμηλή πηγή ρολογιού ισχύος και δεν έχει σχεδιαστεί για υψηλή ακρίβεια Εξωτερικό ρολόι Υπάρχει και η δυνατότητα για εξωτερική πηγή ρολογιού και προγραμματίζεται με '0000': Frequency (1) CKSEL[3:0] 0-20MHz 0000 Σχήμα Συχνότητα ρολογιού Όταν εφαρμόζεται ένα εξωτερικό ρολόι, δεν πρέπει να υπάρχουν ξαφνικές αλλαγές στη συχνότητα. Μια μεταβολή στη συχνότητα μεγαλύτερη από 2% από έναν κύκλο ρολογιού στον άλλο μπορεί να οδηγήσει σε απρόβλεπτη συμπεριφορά Χρονοδιακόπτης/Ταλαντωτής μετρητών Η συσκευή χρησιμοποιεί τον ίδιο ταλαντωτή κρυστάλλου για ταλαντωτή χαμηλής συχνότητας και ταλαντωτή χρονιστή/μετρητή. Στη συσκευή αυτή, οι ακίδες ταλαντωτή χρονισμού/μετρητή μετρητών (TOSC1 και TOSC2) μοιράζονται με τα XTAL1 και XTAL2. Όταν χρησιμοποιείται ο ταλαντωτής χρονιστή/μετρητή, το ρολόι συστήματος πρέπει να είναι τέσσερις φορές υψηλότερο από τη συχνότητα του ταλαντωτή. 98

113 Ρυθμιστής εξόδου ρολογιού Ο ρυθμιστής εξόδου του συστήματος στον ακροδέκτη CLKO. Για να ενεργοποιηθεί η έξοδος, πρέπει να προγραμματιστεί η ασφάλεια CKOUT. Αυτή η λειτουργία είναι κατάλληλη όταν το ρολόι του τσιπ χρησιμοποιείται για την οδήγηση άλλων κυκλωμάτων στο σύστημα Προγραμματιστής ρολογιού συστήματος Η συσκευή διαθέτει έναν προρυθμιστή ρολογιού συστήματος και το ρολόι συστήματος μπορεί να διαιρεθεί με τη διαμόρφωση του μητρώου προρυθμίσεων ρολογιού (CLKPR). Αυτή η λειτουργία μπορεί να χρησιμοποιηθεί για τη μείωση της συχνότητας του ρολογιού συστήματος και της κατανάλωσης ρεύματος όταν η απαίτηση για ισχύ επεξεργασίας είναι χαμηλή PM - Διαχείριση ενέργειας και τρόποι αναμονής Οι καταστάσεις που μπορούν να είναι σε αναμονή στη μονάδα ποικίλουν. Ο σκοπός τους είναι η εξοικονόμηση ενέργειας Τρόποι αναμονής Ο παρακάτω πίνακας δείχνει τις διαφορετικές λειτουργίες αναμονής και απενεργοποίησης της πηγής. Ενεργοί τομείς ρολογιού και πηγές αφύπνισης στις διαφορετικές λειτουργίες ύπνου. Active Clock Domains Oscillators Wake-up Sources Sleep clkcp clkf clk O clkadc clkas Main Timer INT TWI T SPM/ A Idle Y Y Y Y Y( 2 ) Y Y Y Y Y 99

114 ADC Y Y Y Y( 2 ) Y( 3 ) Y Y Power Y( 3 ) Y 2 Power Y Y( 2 ) Y( 3 ) Y Y Stand Y Y( 3 ) Y Exten Y(2) Y Y(2) Y(3) Y Y Y Y Σχήμα Λειτουργίες στις διάφορες καταστάσεις αφύπνισης 1. Συνιστάται μόνο με εξωτερικό κρύσταλλο που επιλέγεται ως πηγή ρολογιού. 2. Ο χρονοδιακόπτης λειτουργεί ασύγχρονα. 3. Τα INT1 και INT0, είναι επίπεδα διακοπής. Για οποιαδήποτε λειτουργία αναμονής πρέπει στο πρόγραμμα να εισάγεται η εντολή SLEEP, και στην συνέχεια τις έξι καταστάσεις αναμονής. (Idle, ADC Reduction Noise, Power-down, Power-save, Standby ή Extended Standby). Όταν εκτελεστεί μια εντολή ενεργοποίησης τότε διακόπτεται η αναμονή και ενεργοποιείται για 4 κύκλους ρολογιού. Κατόπιν εκτελείται η εντολή απενεργοποίησης. Τα περιεχόμενα της SRAM είναι αναλλοίωτα όταν η συσκευή ενεργοποιείται BOD Απενεργοποίηση Ο BOD ενεργοποιεί το λογισμικό που βρίσκεται σε κατάσταση απενεργοποίησης. Η κατανάλωση ενέργειας πέφτει όταν είναι απενεργοποιημένος λόγω ασφάλειας. Όταν το BOD έχει απενεργοποιηθεί, ο χρόνος αφύπνισης από τη λειτουργία ύπνου θα είναι περίπου 60μs για να διασφαλιστεί ότι το BOD λειτουργεί σωστά και να συνεχίσει η εκτέλεση του κώδικα Λειτουργία αναστολής Όταν τα δυαδικά ψηφία SM [2: 0] είναι γραμμένα σε '000', η εντολή SLEEP θέτει τον μικροεπεξεργαστή σε λειτουργία αναμονής, σταματώντας το CPU, αλλά επιτρέποντας τη λειτουργία SPI, USART, Analog Comparator και το σύστημα διακοπής συνεχίζει να 100

115 λειτουργεί. Αυτή η λειτουργία ύπνου σταματά ουσιαστικά τα clkcpu και clkflash, επιτρέποντας ταυτόχρονα την εκτέλεση των άλλων ρολογιών. Αυτό θα μειώσει την κατανάλωση ενέργειας στην κατάσταση αναμονής Λειτουργία μείωσης θορύβου ADC Όταν τα δυαδικά ψηφία SM [2: 0] είναι γραμμένα σε '001', η εντολή SLEEP θέτει τον μικροεπεξεργαστή σε λειτουργία ADC Noise Reduction, διακόπτοντας το CPU αλλά επιτρέποντας το ADC. Αυτή η λειτουργία αναμονής σταματάει ουσιαστικά τα clk I/O, clkcpu και clkflash, επιτρέποντας ταυτόχρονα την εκτέλεση των άλλων ρολογιών. Αυτό βελτιώνει το περιβάλλον θορύβου για το ADC, επιτρέποντας μετρήσεις υψηλότερης ανάλυσης και χαμηλότερη κατανάλωση ισχύος Λειτουργία Power-Down Όταν τα δυαδικά ψηφία SM [2: 0] είναι γραμμένα στο '010', η εντολή SLEEP κάνει τον μικροεπεξεργαστή να εισέρχεται στη λειτουργία Power-Down. Σε αυτή τη λειτουργία, ο εξωτερικός ταλαντωτής διακόπτεται. Ενώ ενεργοποιείται σε περίπτωση που: Υπάρξει Εξωτερική επαναφορά. Υπάρξει επαναφορά συστήματος παρακολούθησης. Εμφανιστεί διακοπή Watchdog. Εμφανιστεί απενεργοποίηση BOD. Αυτός ο τρόπος αδράνειας ουσιαστικά σταματά όλα τα ρολόγια που παράγονται, επιτρέποντας τη λειτουργία των μονάδων ασύγχρονης λειτουργίας Λειτουργία εξοικονόμησης ενέργειας Όταν τα δυαδικά ψηφία SM [2: 0] είναι γραμμένα στο 011, η εντολή SLEEP αναγκάζει τη μονάδα MCU να εισέρχεται σε λειτουργία εξοικονόμησης ενέργειας. Αυτή η κατάσταση λειτουργίας είναι ίδια με την επιλογή Power-down, με μία εξαίρεση: 101

116 Αν είναι ενεργοποιημένος ο χρονοδιακόπτης θα συνεχίσει να λειτουργεί κατά τη διάρκεια της αναμονής. Εάν ο χρονοδιακόπτης δεν εκτελείται, συνιστάται η κατάσταση λειτουργίας Powerdown αντί της λειτουργίας εξοικονόμησης ενέργειας Κατάσταση αναμονής Όταν τα δυαδικά ψηφία SM [2: 0] είναι γραμμένα στο '110' και έχει επιλεχθεί μια εξωτερική επιλογή ρολογιού κρύσταλλου, η εντολή SLEEP θέτει τον μικροεπεξεργαστή σε κατάσταση αναμονής. Αυτός ο τρόπος λειτουργίας είναι ίδιος με τον Power-Down με την εξαίρεση ότι ο ταλαντωτής συνεχίζει να λειτουργεί. Επανενεργοποιείται έπειτα από 6 κύκλους Ελαχιστοποίηση της κατανάλωσης ενέργειας Υπάρχουν πολύ παράγοντες που πρέπει να ληφθούν υπόψη για την ελαχιστοποίηση της κατανάλωσης ενέργειας σε ένα ελεγχόμενο σύστημα AVR. Σε γενικές γραμμές, οι λειτουργίες αναστολής θα πρέπει να επιλέγονται έτσι ώστε να λειτουργεί όσο το δυνατόν λιγότερο ο επεξεργαστής Τρόπος λειτουργίας αναστολής Όνομα: Μετατόπιση SMCR: 0x53 Reset: 0x00 Ιδιότητα: Κατά τη διεύθυνση ως είσοδος/έξοδος μητρώου: η αντιστάθμιση διεύθυνσης είναι 0x33 Σχήμα Bits αναστολής 102

117 Bit 3 - SM2: έναρξη λειτουργίας αναστολής Τα bits SM [2: 0] επιλέγουν μεταξύ των πέντε διαθέσιμων τρόπων αναστολής ανάλογα με την εντολή που έχει δοθεί όπως φαίνεται στο παρακάτω πίνακα. SM2,SM1,SM0 Sleep Mode 000 Idle 001 ADC Noise Reduction 010 Power-down 011 Power-save 100 Reserved 101 Reserved 110 Standby (1) 111 Extended Standby (1) Το ίδιο κάνουν και τα bits 2,1,0 Σχήμα Λειτουργίες ύπνου 5.5. SCRST - Έλεγχος συστήματος και επαναφορά Επαναφορά του AVR Κατά τη διάρκεια της επαναφοράς, όλοι οι καταχωρητές εισόδου/εξόδου ρυθμίζονται στις αρχικές τους τιμές και το πρόγραμμα εκτελείται. Οι θύρες I/O του AVR επαναφέρονται αμέσως στην αρχική τους κατάσταση όταν ενεργοποιηθεί μια πηγή επαναφοράς. Αυτό δεν απαιτεί την εκτέλεση οποιασδήποτε πηγής ρολογιού. Αφού όλες οι πηγές επαναφοράς έχουν απενεργοποιηθεί, ενεργοποιείται o μετρητής καθυστέρησης, για την επαναφορά. 103

118 Επαναφορά πηγών Η επαναφορά γίνεται με τις ακόλουθες διαδικασίες: Ενεργοποίηση επαναφοράς. Η μονάδα του μικροεπεξεργαστή επανέρχεται όταν η τάση τροφοδοσίας είναι μικρότερη από το κατώφλι επαναφοράς ενεργοποίησης. Εξωτερική επαναφορά. Η μονάδα του μικροεπεξεργαστή επανέρχεται όταν υπάρχει χαμηλή στάθμη στον ακροδέκτη RESET. Επαναφορά συστήματος παρακολούθησης. Η μονάδα του μικροεπεξεργαστή επανέρχεται όταν λήξει η περίοδος του Χρονοδιακόπτη Watchdog. Απενεργοποίηση ΒΟD. Η μονάδα του μικροεπεξεργαστή επανέρχεται όταν η τάση τροφοδοσίας VCC είναι μικρότερη από το κατώφλι επαναφοράς. Σχήμα Επαναφορά σε ορθή λογική 104

119 Ενεργοποίηση επαναφοράς Ένας παλμός επανεκκίνησης ενεργοποίησης (POR) παράγεται από ένα κύκλωμα ανίχνευσης On-chip. Το POR ενεργοποιείται κάθε φορά που το VCC βρίσκεται κάτω από το επίπεδο ανίχνευσης. Το κύκλωμα POR μπορεί να χρησιμοποιηθεί για την ενεργοποίηση της επαναφοράς εκκίνησης, καθώς και για την ανίχνευση βλάβης στην τάση τροφοδοσίας. Σχήμα Κύκλος ανάγνωσης ενεργοποίησης Εξωτερική επαναφορά Η εξωτερική επαναφορά δημιουργείται από ένα χαμηλό επίπεδο στον ακροδέκτη RESET. Η επαναφορά παλμών μεγαλύτερη από το ελάχιστο πλάτος παλμού θα προκαλέσει επαναφορά, ακόμη και αν το ρολόι δεν είναι σε λειτουργία. Η εξωτερική επαναφορά μπορεί να απενεργοποιηθεί από την ασφάλεια RSTDISBL. 105

120 Σχήμα Επαναφορά λειτουργίας VCC Παρακολούθηση συστήματος επαναφοράς Όταν ο Watchdog υπερχειλίσει, θα δημιουργήσει ένα σύντομο παλμό επαναφοράς μιας διάρκειας κύκλου CK. Από την πτώση του άκρου αυτού του παλμού, ο χρονοδιακόπτης καθυστέρησης αρχίζει να μετράει τη χρονική περίοδο ttout. Σχήμα Επαναφορά λειτουργίας Watchdog Αναφορά εσωτερικής τάσης Η συσκευή διαθέτει μια εσωτερική αναφορά ζώνης. Αυτή η τάση χρησιμοποιείται ανίχνευση στην είσοδο. για 106

121 Έλεγχος τάσης Η τάση αναφοράς έχει ένα χρόνο έναρξης που μπορεί να επηρεάσει τον τρόπο που θα πρέπει να χρησιμοποιηθεί. Για να εξοικονομηθεί ενέργεια, η συσκευή δεν είναι πάντα ενεργοποιημένη. Η αναφορά είναι ενεργοποιημένη κατά τις ακόλουθες περιπτώσεις: 1. Όταν είναι ενεργοποιημένο το BOD. 2. Όταν η αναφορά ζώνης συνδέεται με τον αναλογικό συγκριτή. 3. Όταν είναι ενεργοποιημένη η λειτουργία ADC. Για να μειωθεί η κατανάλωση ενέργειας στη λειτουργία Power-Down, ο χρήστης μπορεί να αποφύγει τις τρεις παραπάνω συνθήκες για να βεβαιωθεί ότι η συσκευή είναι απενεργοποιημένη πριν εισέλθει στη λειτουργία Power-Down Χρονοδιακόπτης Watchdog Είναι ο μόνος που συνεχώς καταναλώνει ενέργεια, ακόμη και σε κατάσταση αναμονής. Μάλιστα σε κατάσταση αναμονής συμβάλει σημαντικά στη συνολική κατανάλωση ρεύματος Χαρακτηριστικά Χρονομετρημένη από ξεχωριστό ταλαντωτή On-chip Τρεις τρόποι λειτουργίας: - Διακοπή. - Επαναφορά συστήματος. - Διακοπή και επαναφορά συστήματος. Επιλογή χρονικού διαστήματος από 16ms έως 8s. Ο Watchdog είναι πάντα ενεργοποιημένος για λειτουργία αποτυχίας. 107

122 Σχήμα Χρονοδιακόπτης Watchdog Στη λειτουργία διακοπής, ο WDT οδηγεί σε διακοπή όταν λήξει ο χρονοδιακόπτης. Αυτή η διακοπή μπορεί να χρησιμοποιηθεί για την έναρξη της συσκευής από τις λειτουργίες αναμονής, αλλά και ως γενικός χρονοδιακόπτης συστήματος. Στη λειτουργία Επαναφοράς συστήματος, το WDT δίνει μια επαναφορά όταν λήξει ο χρονοδιακόπτης. Αυτό χρησιμοποιείται συνήθως για να αποτρέψει το κλείσιμο του συστήματος σε περίπτωση διαφυγής κώδικα. Ένας ακόμη τρόπος λειτουργίας είναι η επαναφορά συστήματος, που συνδυάζει τις άλλες δύο λειτουργίες με την πρώτη διακοπή και μετά με τη λειτουργία Reset System. Αυτός ο τρόπος λειτουργίας θα επιτρέψει, για παράδειγμα, ασφαλή τερματισμό λειτουργίας με την αποθήκευση κρίσιμων παραμέτρων πριν από την επαναφορά συστήματος. 108

123 5.6. Διακοπή Την ώρα που ο μικροεπεξεργαστής εκτελεί ένα πρόγραμμα που του έχουμε δώσει, μπορεί να συμβούν διάφορα γεγονότα, στο περιβάλλον που αυτός ελέγχει. Ανάλογα με τη σημασία του κάθε γεγονότος, ενδεχομένως, να χρειαστεί να διακόψει την εκτέλεση του κυρίως προγράμματος για να ασχοληθεί με το γεγονός αυτό. Ο μικροεπεξεργαστής για να αντιληφθεί την ύπαρξη των γεγονότων αυτών έχει αναθέσει σε κάποιες από τις περιφερειακές του μονάδες να διενεργούν διάφορους ελέγχους. Αυτό μπορεί να γίνεται ανεξάρτητα από τις λοιπές λειτουργίες του μικροελεγκτή. Όταν μία από τις μονάδες εντοπίσει το γεγονός, τότε, στέλνει ένα σήμα στην Κ.Μ.Ε. του μικροελεγκτή να διακόψει την εκτέλεση του προγράμματος που εκτελεί. Το σήμα λέγεται διακοπή και προκαλεί την άμεση εκτέλεση ενός τμήματος κώδικα, το οποίο λέγεται ρουτίνα εξυπηρέτησης της διακοπής. Ένα παράδειγμα για τη χρήση των διακοπών ενός μικροϋπολογιστικού συστήματος μπορεί να είναι βασισμένο σε ένα βιομηχανικό περιβάλλον. Εκεί, ανάμεσα στις άλλες ασχολίες του, ο AVR, πρέπει και να ρυθμίζει τη θερμοκρασία σε κάποιον κλίβανο. Επίσης, για λόγους ασφαλείας, μετρά τη θερμοκρασία σε διάφορα σημεία της κατεργασίας. Την ώρα, λοιπόν, που εκτελεί μία συνηθισμένη διαδικασία, π.χ. την αποστολή κάποιων δεδομένων από τη μνήμη του σε έναν κεντρικό Η/Υ, διαπιστώνεται επικίνδυνη αύξηση της θερμοκρασίας σε κάποιο σημείο της εργασίας. Τότε, το περιφερειακό που την εντόπισε, προκαλεί μια διακοπή στην Κ.Μ.Ε. Η αποστολή σταματά και η Κ.Μ.Ε. καλείται να εκτελέσει τη ρουτίνα που συνοδεύει τη διακοπή. Η ρουτίνα περιέχει εντολές που σβήνουν τον κλίβανο, ανοίγουν κάποιους ανεμιστήρες ψύξης και ενεργοποιούν τη σειρήνα κινδύνου. Ο μικροεπεξεργαστής δέχεται ένα πλήθος διακοπών, οι οποίες, κατά κύριο λόγο, προέρχονται από τις διάφορες περιφερειακές του μονάδες. Συνήθως, μία περιφερειακή μονάδα μπορεί να δώσει ένα σήμα διακοπής. Ωστόσο, υπάρχουν μονάδες που δίνουν περισσότερες διακοπές, όπως, για παράδειγμα, το περιφερειακό σειριακής επικοινωνίας. Τονίζεται ότι, υπάρχει η δυνατότητα να απενεργοποιούμε κάποιες από τις διακοπές, ή και όλες μαζί, όταν η εκτέλεση κάποιας εργασίας δεν πρέπει να διακοπεί. 109

124 Εντολές διακοπής στον ATmega328 / P Vector Program Source Interrupts definition 1 0x0000 (1) RESET External Pin, Power-on Reset, Brownout Reset and Watchdog System Reset 2 0x0002 INT0 External Interrupt Request 0 3 0x0004 INT1 External Interrupt Request 0 4 0x0006 PCINT0 Pin Change Interrupt Request 0 5 0x0008 PCINT1 Pin Change Interrupt Request 1 6 0x000A PCINT2 Pin Change Interrupt Request 2 7 0x000C WDT Watchdog Time-out Interrupt 8 0x000E TIMER2_C Timer/Counter2 Compare Match A 9 0x0010 TIMER2_C Timer/Coutner2 Compare Match B 10 0x0012 TIMER2_O Timer/Counter2 Overflow 11 0x0014 TIMER1_C Timer/Counter1 Capture Event 12 0x0016 TIMER1_C Timer/Counter1 Compare Match A 13 0x0018 TIMER1_C Timer/Coutner1 Compare Match B 14 0x001A TIMER1_O Timer/Counter1 Overflow 15 0x001C TIMER0_C Timer/Counter0 Compare Match A 16 0x001E TIMER0_C Timer/Coutner0 Compare Match B 17 0x0020 TIMER0_O Timer/Counter0 Overflow 18 0x0022 SPI STC SPI Serial Transfer Complete 19 0x0024 USART_RX USART Rx Complete 20 0x0026 USART_UD USART Data Register Empty 21 0x0028 USART_TX USART Tx Complete 22 0x002A ADC ADC Conversion Complete 23 0x002C EE READY EEPROM Ready 24 0x002E ANALOG Analog Comparator Vector Program Source Interrupts definition 25 0x0030 TWI 2-wire Serial Interface (I2C) 26 0x0032 SPM Store Program Memory Ready Σχήμα Διανύσματα διακοπών στον AVR Ο παρακάτω πίνακας δείχνει την επαναφορά και την τοποθέτηση διακοπών BOOTRST* 1 IVSE Reset Address Interrupt Vectors Start Address 1 0 0x000 0x x000 Boot Reset Address + 0x

125 0 0 Boot Reset Address 0x Boot Reset Address Boot Reset Address + 0x0002 Σχήμα Επαναφορά και τοποθέτηση διακοπών Λειτουργία των bit σε διακοπή Σχήμα Bits διακόπτη Bit 6 - BODS: BOD Sleep Το bit BODS πρέπει να γράφεται στο '1' για να απενεργοποιηθεί το BOD κατά τη διάρκεια της αναμονής. Η εγγραφή στο bit BODS ελέγχεται από μια χρονική ακολουθία και το bit ενεργοποίησης BODSE. Το bit BODS είναι ενεργοποιημένο για τρεις παλμούς ρολογιού. Μια εντολή ύπνου πρέπει να εκτελείται όταν το BODS είναι ενεργό για να απενεργοποιήσει το BOD για την πραγματική κατάσταση ύπνου. Το bit BODS εκκαθαρίζεται αυτόματα μετά από τρεις παλμούς ρολογιού. Bit 5 - BODSE: BOD Ενεργοποίηση αναμονής. Το BODSE επιτρέπει τη ρύθμιση του bit ελέγχου BODS. Η απενεργοποίηση του BOD ελέγχεται από μια χρονική ακολουθία. Bit 4 - PUD: Απενεργοποίηση μετακίνησης. Όταν αυτό το δυαδικό ψηφίο είναι γραμμένο σε κατάσταση 1, τα pull-ups στις θύρες I/O είναι απενεργοποιημένα, ακόμη και αν οι καταχωρητές DDxn και PORTxn έχουν ρυθμιστεί ώστε να ενεργοποιούν τα pull-ups. Bit 1 IVSEL Όταν το bit IVSEL εκκαθαριστεί (μηδέν), η διακοπή τοποθετείται στην αρχή της μνήμης Flash. Όταν το bit έχει οριστεί σε κατάσταση 1, οι διακοπές μετακινούνται στην αρχή της ενότητας Loader Loader του Flash. Η πραγματική διεύθυνση της εκκίνησης του Τμήματος Flash Boot καθορίζεται από τις ασφάλειες BOOTSZ. Για να αποφευχθούν οι ακούσιες 111

126 αλλαγές των πινάκων διανυσματικού διακόπτη, πρέπει να ακολουθηθεί μια ειδική διαδικασία εγγραφής στο IVSEL. Bit 0 - IVCE: Ενεργοποίηση αλλαγής διανυσματικού διακόπτη. Το bit IVCE πρέπει να είναι γραμμένο σε λογικό 1 για να επιτρέψει την αλλαγή του bit IVSEL. Το IVCE εκκαθαρίζεται από το υλικό τέσσερις κύκλους μετά την εγγραφή του ή όταν γράφεται το IVSEL USART - Σύγχρονος πομποδέκτης ασύγχρονου δέκτη Σύγχρονη και ασύγχρονη σειριακή μετάδοση Συχνά μια εφαρμογή πραγματικού χρόνου χρειάζεται να επικοινωνήσει με άλλα μικροϋπολογιστικά συστήματα ή συσκευές, ειδικά σε κατανεμημένα συστήματα, όπου η πληροφορία παράγεται τοπικά, μεταδίδεται μέσω καναλιών και συλλέγεται ή υφίσταται επεξεργασία κεντρικά. Η μετάδοση της πληροφορίας μπορεί να γίνει παράλληλα, με ταυτόχρονη μετάδοση όλων των bits κάθε λέξης ή σειριακά. Στη σειριακή μετάδοση η πληροφορία μεταδίδεται ως μια ακολουθία από bits από τον πομπό προς το δέκτη. Γενικά διακρίνουμε τη σύγχρονη και την ασύγχρονη σειριακή μετάδοση. Στη σύγχρονη σειριακή επικοινωνία πομπός και δέκτης πρέπει να είναι συγχρονισμένοι για την εκπομπή και λήψη 112

127 των δεδομένων. Ταυτόχρονα με την εκπομπή των δεδομένων εκπέμπεται και το clock, για τον συγχρονισμό της επικοινωνίας. Στην ασύγχρονη μετάδοση, τα δεδομένα μπορεί να εμφανιστούν στη γραμμή οποιαδήποτε χρονική στιγμή, χωρίς κανένα συγχρονισμό με ωρολογιακά σήματα. Ο μόνος απαραίτητος χρονισμός υλοποιείται με το start bit, ενώ ο συγχρονισμός πομπού και δέκτη επιτυγχάνεται διατηρώντας σταθερό το ρυθμό εκπομπής και λήψης (baud rate) Ασύγχρονη Σειριακή Επικοινωνία Η ασύγχρονη σειριακή επικοινωνία εξυπηρετεί τη μετάδοση χαρακτήρων που εκπέμπονται από κάποιο πομπό χωρίς κανένα συγχρονισμό, όπως συμβαίνει με τους αλφαριθμητικούς χαρακτήρες που δημιουργούνται όταν πιέζουμε τα πλήκτρα ενός πληκτρολογίου. Κάθε τέτοιος χαρακτήρας μετατρέπεται σε λέξη μέσω του κώδικα ASCII και η ακολουθία bits που αντιστοιχεί σε αυτόν εμφανίζεται στη γραμμή μετάδοσης. Ο δέκτης πρέπει να είναι σε θέση να αναγνωρίζει ότι έφτασε ένας χαρακτήρας και να δέχεται τα bits του χαρακτήρα με τη σωστή σειρά και χωρίς απώλειες. Για τον παραπάνω σκοπό, τα bits της ασύγχρονης σειριακής μετάδοσης οργανώνονται σε ομάδες των εννέα έως δώδεκα bits συνολικά, οι οποίες περιέχουν κάποιους χαρακτήρες έναρξης και λήξης. Το πρώτο bit κάθε πλαισίου είναι το λεγόμενο START BIT, το οποίο αντιστοιχεί σε λογικό μηδέν. Ακολουθεί η σειρά των ψηφίων του χαρακτήρα που αποστέλλεται. Για παράδειγμα, εάν αποστέλλεται το κεφαλαίο γράμμα Α, τότε η ακολουθία των ψηφίων θα είναι Μετά από τα bits του χαρακτήρα ακολουθεί ένα bit άρτιας ή περιττής ισοτιμίας (parity), το οποίο ενεργοποιεί μία διαδικασία ελέγχου σφαλμάτων, για να ανιχνεύσει τυχόν λάθη που συνέβησαν κατά τη μετάδοση. Είναι φανερό ότι η διάρκεια του κάθε εκπεμπόμενου bit στην ασύγχρονη σειριακή μετάδοση πρέπει να είναι αυστηρά η ίδια, ώστε να μπορεί ο δέκτης, με βάση κάποιο σύστημα χρονισμού, να διακρίνει τα bits μεταξύ τους. Συνεπώς ο πομπός και ο δέκτης πρέπει να συμφωνούν ως προς την ταχύτητα της σειριακής μετάδοσης των bits. Η ταχύτητα αυτή ορίζει τον λεγόμενο «ρυθμό μετάδοσης» (baud rate), που μετριέται σε bits ανά δευτερόλεπτο (bits/sec ή bps). Συνήθεις ρυθμοί στις ασύγχρονες σειριακές επικοινωνίες είναι 2400, 4800, 9600, 14400, 19200, και bits/sec. Η μέγιστη ταχύτητα που υποστηρίζει μια θύρα USART κατά την αποστολή χαρακτήρων από έναν υπολογιστή προς μία συσκευή επικοινωνίας είναι kbps. Tυπική ασύγχρονη σειριακή συσκευή είναι το modem, που διασυνδέει τον υπολογιστή ή κάποιο τερματικό με την τηλεφωνική γραμμή. 113

128 Μονάδα ασύγχρονης επικοινωνίας Η Σύγχρονη-Ασύγχρονη μετάδοση (USART) είναι μία από τις δύο σειριακές μονάδες εισόδου εξόδου που διαθέτει ο μικροελεγκτής. Αυτή μπορεί να διαμορφωθεί ως ένα ασύγχρονο σύστημα το οποίο μπορεί να επικοινωνεί με περιφερειακές συσκευές, όπως LCD displays και προσωπικούς υπολογιστές ή μπορεί να διαμορφωθεί ως ένα σύγχρονο σύστημα το οποίο μπορεί να επικοινωνεί με κυκλώματα όπως A/D ή D/A, μνήμες EEPROM και άλλα. Ο τρόπος λειτουργίας του κυκλώματος USART προγραμματίζεται με τη βοήθεια ορισμένων καταχωρητών, τους οποίους ο υπολογιστής βλέπει σαν θέσεις μνήμης. Με τη βοήθεια των καταχωρητών αυτών μπορεί ο χρήστης να έχει πλήρη έλεγχο της διαδικασίας εισόδου/εξόδου μέσω της σειριακής θύρας. Η Ασύγχρονη σειριακή θύρα αποτελείται από τα ακόλουθα σημαντικά κυκλώματα: Γεννήτορας ρυθμού μετάδοσης. Το κύκλωμα. Ασύγχρονος μεταδότης. Ασύγχρονος λήπτης. Ο γενικός συγχρονισμένος και ασύγχρονος σειριακός δέκτης και πομπός (USART) είναι μια πολύ ευέλικτη σειριακή συσκευή επικοινωνίας. Σχήμα USART 114

129 Παραγωγή ρολογιών στον USART Η λογική δημιουργίας ρολογιού παράγει το ρολόι βάσης για το πομπό και το δέκτη. Το USART υποστηρίζει τέσσερις λειτουργίες ρολογιού: Κανονική ασύγχρονη, ασύγχρονη διπλής ταχύτητας, σύγχρονη συγχρονισμένης λειτουργίας και συγχρονισμένη λειτουργία Slave. Όταν χρησιμοποιείται η σύγχρονη λειτουργία (UMSELn0 = 1), ο καταχωρητής κατεύθυνσης δεδομένων για τον ακροδέκτη XCKn (DDR_XCKn) ελέγχει εάν η πηγή του ρολογιού είναι εσωτερική (κύρια λειτουργία) ή εξωτερική (λειτουργία Slave). Ο πείρος XCKn είναι ενεργός μόνο όταν χρησιμοποιείτε η συγχρονισμένη λειτουργία. Παρακάτω είναι ένα μπλοκ διάγραμμα της λογικής ρολογιών. Σχήμα Ρολόγια USART txclk: Ρολόι του πομπού (εσωτερικό σήμα). rxclk: Ρολόι βάσης δέκτη (εσωτερικό σήμα). xcki: Εισαγωγή από τον ακροδέκτη XCKn (εσωτερικό σήμα). Χρησιμοποιείται για λειτουργία σύγχρονης υποτελούς λειτουργίας. xcko: Έξοδος ρολογιού στον ακροδέκτη XCKn (εσωτερικό σήμα). Χρησιμοποιείται για σύγχρονη κύρια λειτουργία. fosc: συχνότητα ρολογιού συστήματος. 115

130 Λειτουργία Διπλής Ταχύτητας (U2Xn) Ο ρυθμός μεταφοράς μπορεί να διπλασιαστεί θέτοντας το bit U2Xn στο UCSRnA. Ο ορισμός αυτού του δυαδικού ψηφίου έχει μόνο αποτέλεσμα για την ασύγχρονη λειτουργία. Ωστόσο, σε αυτήν την περίπτωση, ο δέκτης θα χρησιμοποιεί μόνο το ήμισυ του αριθμού δειγμάτων (μειωμένο από 16 σε 8) για δειγματοληψία δεδομένων και ανάκτηση ρολογιού και επομένως απαιτείται πιο ακριβής ρύθμιση ρυθμού μετάδοσης και ρολόι συστήματος όταν χρησιμοποιείται αυτός ο τρόπος λειτουργίας Εξωτερικό ρολόι Ο εξωτερικός χρονισμός χρησιμοποιείται από τους σύγχρονους τρόπους λειτουργίας της υποτελούς λειτουργίας. Η είσοδος εξωτερικού ρολογιού από τον ακροδέκτη XCKn λαμβάνεται από μητρώο συγχρονισμού για να ελαχιστοποιηθεί η πιθανότητα μεταστατικής σταθερότητας. Η έξοδος από τον καταχωρητή συγχρονισμού πρέπει στη συνέχεια να περάσει από έναν ανιχνευτή ακμής πριν να μπορέσει να χρησιμοποιηθεί από το πομπό και το δέκτη Λειτουργία συγχρονικού ρολογιού Όταν χρησιμοποιείται σύγχρονη λειτουργία (UMSEL = 1), ο ακροδέκτης XCKn θα χρησιμοποιηθεί είτε ως είσοδος ρολογιού (Slave) είτε ως έξοδος ρολογιού (Master). Σχήμα Λειτουργία συγχρονικού ρολογιού Μορφές πλαισίων Ένα σειριακό πλαίσιο ορίζεται ως ένας χαρακτήρας δυαδικών ψηφίων δεδομένων με δυαδικά ψηφία συγχρονισμού (bits εκκίνησης και τερματισμού) και προαιρετικά ένα bit ισοτιμίας για έλεγχο σφαλμάτων. Το USART δέχεται και τους 30 συνδυασμούς των ακόλουθων μορφών πλαισίων: 116

131 1 bit έναρξης 5, 6, 7, 8 ή 9 bit δεδομένων Όχι, ζυγό ή περιττό bit ισοτιμίας 1 ή 2 bits stop Όταν μεταδίδεται ένα πλήρες σήμα, μπορεί να ακολουθηθεί άμεσα από ένα νέο πλαίσιο ή η γραμμή επικοινωνίας μπορεί να ρυθμιστεί σε κατάσταση αδράνειας (υψηλή). Το παρακάτω σχήμα απεικονίζει τους πιθανούς συνδυασμούς των μορφών πλαισίων. Τα κομμάτια μέσα στις αγκύλες είναι προαιρετικά. Σχήμα Μετάδοση σήματος USART St Start bit, always low. (n) Data bits (0 to 8). P Parity bit. Can be odd or even. Sp Stop bit, always high. IDLE No transfers on the communication line (RxDn or TxDn). An IDLE line must be Η μορφή πλαισίου που χρησιμοποιείται από το USART ορίζεται από: τον αριθμό των bits δεδομένων στο πλαίσιο. την ενεργοποίηση του bit ισοτιμίας. Το Stop bit Select bit (UCSRnC.USBSn) επιλέγει τον αριθμό των bits stop. Ο δέκτης αγνοεί το δεύτερο bit στάσης Αρχικοποίηση USART Το USART πρέπει να προετοιμαστεί πριν γίνει οποιαδήποτε επικοινωνία. Η διαδικασία αρχικοποίησης αποτελείται κανονικά από τη ρύθμιση του ρυθμού μετάδοσης, τη ρύθμιση του πλαισίου μορφής και την ενεργοποίηση του πομπού ή του δέκτη ανάλογα με τη χρήση. Πριν 117

132 την αρχικοποίηση πρέπει να υπάρξουν συνεχείς μεταδόσεις κατά τη διάρκεια της περιόδου αλλαγής των καταχωρητών. Το σήμα ελέγχει ότι ο πομπός έχει ολοκληρώσει όλες τις μεταφορές και ότι δεν υπάρχουν μη αναγνωσμένα δεδομένα στο buffer λήψης Μεταφορά δεδομένων - Ο πομπός USART Όταν ο πομπός είναι ενεργοποιημένος, η κανονική λειτουργία θύρας του ακροδέκτη TxDn υπερισχύει από το USART και δίνεται η λειτουργία ως σειριακή έξοδος του πομπού. Ο ρυθμός μετάδοσης, ο τρόπος λειτουργίας και η μορφή του πλαισίου πρέπει να ρυθμιστούν μία φορά πριν πραγματοποιηθεί οποιαδήποτε μετάδοση Απενεργοποίηση του πομπού Όταν γραφεί το bit TX Enable στο USART και είναι σε κατάσταση 0, η απενεργοποίηση του πομπού θα γίνει μόλις τελειώσει με τις τρέχουσες διαδικασίες Υποδοχή δεδομένων - Ο δέκτης USART Ο δέκτης USART ενεργοποιείται εγγράφοντας το bit Enable Enable (RXEN) στο 1. Όταν ο δέκτης είναι ενεργοποιημένος, η κανονική λειτουργία ακίδας του ακροδέκτη RxDn υπερισχύει από το USART και δίνεται η λειτουργία ως σειριακή είσοδος του δέκτη Εγγραφή δεδομένων USART I/O Για την εγγραφή στο USART Transmit Data Buffer και οι καταχωρητές μνήμης μοιράζονται την ίδια διεύθυνση εισόδου/εξόδου που αναφέρεται ως USART Data Register. Ο Buffer θα στείλει τα δεδομένα στη θέση UDR0 Register. Μία χρήσιμη εφαρμογή του USARTείναι στην κατασκευή μνήμης ειδικού τύπου η οποία ονομάζεται FIFO (first-in, first-out). Η μνήμη αυτή αποτελείται από ένα αριθμό καταχωρητών από τους οποίους μπορούμε να αποθηκεύσουμε δυαδικές πληροφορίες. Αποτελείται από έναν αριθμό Μ καταχωρητών ολίσθησης κάθε ένας από τους οποίους έχει μήκος Ν bits. Υπάρχουν Μ είσοδοι για τα εισερχόμενα δεδομένα και Μ έξοδοι για τα εξερχόμενα. Υπάρχει επίσης μία κοινή είσοδος ρολογιού για όλα τα flip-flops των καταχωρητών ολίσθησης που 118

133 αποτελούν αυτή τη μνήμη. Το παράδειγμα του σχήματος μας δείχνει τον τρόπο με τον οποίο κατασκευάζουμε μια μνήμη FIFO των 4 bits με μήκος 5 bits. Σχήμα FIFO Χρησιμοποιούμε τέσσερις (Μ=4) καταχωρητές ολίσθησης SISO με μήκος (μέγεθος) πέντε bits (Ν = 5) ο καθένας. Οι κόκκινες γραμμές δείχνουν την κατεύθυνση ολίσθησης των δεδομένων. Οι είσοδοι ρολογιού του USART καταχωρητών είναι συνδεδεμένες σε μία κοινή είσοδο η οποία αποτελεί την είσοδο ρολογιού της FIFO μνήμης. Η λειτουργία της μπορεί να περιγράφει ως εξής. Με κάθε παλμό του ρολογιού το περιεχόμενο του κάθε καταχωρητή ολισθαίνει κατά μία θέση, ενώ τα λιγότερο σημαντικά bits των τεσσάρων καταχωρητών ολίσθησης αποθηκεύουν τα δεδομένα που βρίσκονται στις ψηφιακές εισόδους τους. Οι ψηφιακές έξοδοι των τεσσάρων καταχωρητών ολίσθησης αποτελούν τις εξόδους της μνήμης FIFO. Με την διαδικασία αυτή, τα δεδομένα που τοποθετούνται στις εισόδους της FIFO θα εμφανισθούν στις εξόδους της μετά από πέντε (Ν=5) παλμούς ρολογιού. Η μνήμη λήψης αποτελείται από ένα FIFO δύο επιπέδων. Το FIFO θα αλλάξει την κατάστασή της προσωρινή μνήμη λήψης. Λειτουργία bits Όνομα: UDR0 119

134 Μετατόπιση: 0xC6 Reset: 0x00 Ακίνητα: - Σχήμα Bits USART με FIFO Bit 7 - RXC0: Η λήψη του USART ολοκληρώθηκε. Όταν το bit 7 είναι στην κατάσταση RXC0 θα γίνει μηδέν και σημαίνει την διακοπής λήψης. Bit 6 - TXC0: Μετάδοση ολοκληρωμένη. Όταν το bit 6 είναι σε κατάσταση TXC0 γίνεται διακοπή μετάδοσης. Bit 5 - UDRE0: Δεδομένα USART. Το UDRE0 υποδεικνύει εάν η προσωρινή μνήμη εκπομπής είναι έτοιμη για λήψη νέων δεδομένων. Αν το UDRE0 είναι σε κατάσταση 1, ο buffer είναι κενός και επομένως είναι έτοιμος για εγγραφή. Το UDRE0 ρυθμίζεται κατά την επαναφορά για να υποδείξει ότι ο πομπός είναι έτοιμος. Bit 4 - FE0: Σφάλμα. Αυτό το bit έχει οριστεί εάν ο επόμενος χαρακτήρας λήψης είναι λάθος, αν είναι σε κατάσταση 0. Αν είναι σε κατάσταση 1 τότε λαμβάνονται τα δεδομένα. Bit 3 DOR0: Δεδομένα OverRun. Αυτό το bit ανιχνεύει μια κατάσταση OverRun δεδομένων. Αν το bit είναι 0 γράφεται το νέο bit έναρξης. Αυτό το bit είναι έγκυρο μέχρι να διαβάσει το UDR0. Bit 2 UPE0: Σφάλμα ισοτιμίας USART. Αυτό το bit έχει τιμή 0 και ελέγχει την παραλαβή. Αν πάρει την τιμή 1 τότε πρέπει να ελέγξει ξανά την παραλαβή. 120

135 Bit 1 - U2X0: Ταχύτητα μετάδοσης USART. Αυτό το bit έχει ως αποτέλεσμα την ασύγχρονη λειτουργία. Bit 0 - MPCM0: Λειτουργία επικοινωνίας πολλαπλών επεξεργαστών. Αυτό το bit επιτρέπει τη λειτουργία επικοινωνίας πολλαπλών επεξεργαστών. Όταν το bit MPCMn είναι σε κατάσταση 1, όλα τα εισερχόμενα που λαμβάνονται από τον USART και δεν περιέχουν πληροφορίες διεύθυνσης θα αγνοηθούν. Σχήμα Bits μετάδοσης ταχύτητας USART Άλλες καταστάσεις (διακοπής) Bit 7 - RXCIE0: Πλήρης διακοπή RX Ενεργοποίηση 0. Αν η εγγραφή είναι RXCIE0 ο USART θα ενεργοποιήσει την πλήρης διακοπή του. Bit 6 - TXCIE0: Πλήρης διακοπή TX Ενεργοποίηση 0. Με την εγγραφή του TXCIE0 επίσης ο USART θα ενεργοποιήσει την πλήρη διακοπή. Bit 5 - UDRIE0: USART Μητρώο δεδομένων Άδειασμα διακοπής Ενεργοποίηση 0. Με την εγγραφή του UDRIE0 στο bit 5 επίσης ο USART θα ενεργοποιήσει την πλήρη διακοπή. 121

136 122

137 Κεφάλαιο 6 Σύνδεση αναλογικού φίλτρου στον Arduino Το Arduino UNO μπορεί να τροφοδοτηθεί με ρεύμα είτε από τον υπολογιστή μέσω της σύνδεσης USB, είτε από εξωτερική τροφοδοσία που παρέχεται μέσω μιας υποδοχής φις των 2.1mm που βρίσκεται στην κάτω αριστερή γωνία. Για την αποφυγή προβλημάτων, η εξωτερική τροφοδοσία θα πρέπει να είναι από 7 ως 12V. Το σχήμα 6.1 παρουσιάζει τις εισόδους και εξόδους τροφοδοσίας του Arduino UNO. Σχήμα 6.1. Pins ρευμάτων Οι ακροδέκτες τροφοδοσίας είναι οι ακόλουθοι: Vin: Η τάση εισόδου της πλακέτας όταν χρησιμοποιεί εξωτερική πηγή ενέργειας. Η τροφοδοσία τάσης γίνεται μέσω αυτού του ακροδέκτη. 123

138 5V: Η τάση που χρησιμοποιείται από τα διάφορα μέρη της πλακέτας και το μικροελεγκτή είναι 5V. Πρόκειται είτε για την τάση 5V που δίνει η σύνδεση με USB είτε για την ρυθμισμένη τάση που δίνεται μέσω του Vin. 3.3V: Η τάση αυτή παράγεται από το ολοκληρωμένο FTDI. Το όριο άντλησης ρεύματος είναι 50mA. GND: Είσοδοι γείωσης. Ο μικροελεγκτής Arduino UNO έχει ακροδέκτες (pins) που χωρίζονται σε αναλογικούς και ψηφιακούς. Οι εικόνες απεικονίζουν τα pins και γίνεται επεξήγηση της λειτουργίας τους. Σχήμα 6.2. Ψηφιακοί ακροδέκτες Ακροδέκτες 0 και 1: λειτουργούν ως RX και TX της σειριακής θύρας όταν το πρόγραμμά ενεργοποιεί τη σειριακή θύρα. Έτσι, όταν το πρόγραμμά στέλνει δεδομένα στη σειριακή θύρα, αυτά προωθούνται και στη θύρα USB μέσω του ελεγκτή Serial-Over-USB, αλλά και στον ακροδέκτη 0 για να τα διαβάσει ενδεχομένως μια άλλη συσκευή. Αυτό φυσικά σημαίνει ότι αν στο πρόγραμμά ενεργοποιήσει το σειριακό interface, χάνει 2 ψηφιακές εισόδους/εξόδους η πλατφόρμα. Ακροδέκτες 2 και 3: λειτουργούν και ως εξωτερικά interrupt (interrupt 0 και 1 αντίστοιχα). Ρυθμίζονται μέσα από το πρόγραμμά, ώστε να λειτουργούν αποκλειστικά ως ψηφιακές είσοδοι στις οποίες όταν συμβαίνουν συγκεκριμένες αλλαγές, η κανονική ροή του προγράμματος σταματάει άμεσα και εκτελείται μια συγκεκριμένη συνάρτηση. Τα εξωτερικά interrupt είναι ιδιαίτερα χρήσιμα σε εφαρμογές που απαιτούν συγχρονισμό μεγάλης ακρίβειας. 124

139 Ακροδέκτες 3, 5, 6, 9, 10 και 11: μπορούν να λειτουργήσουν και ως ψευδό- αναλογικές έξοδοι με το σύστημα PWM (Pulse Width Modulation). Σχήμα 6.3. Αναλογικοί ακροδέκτες Στην κάτω πλευρά του Arduino, με τη σήμανση ANALOG IN όπως φαίνεται και στην εικόνα, υπάρχει μια ακόμη σειρά από 6 pin, αριθμημένα από το 0 ως το 5. Η τάση αναφοράς μπορεί να ρυθμιστεί με μια εντολή στο 1.1V (μεταξύ 2 και 5V) τροφοδοτώντας εξωτερικά με αυτή την τάση το pin με τη σήμανση AREF που βρίσκεται στην απέναντι πλευρά της πλακέτας. Με αυτόν τον τρόπο, αν τροφοδοτηθεί ο ακροδέκτης AREF με 3.3V και στη συνέχεια διαβάσει κάποιον ακροδέκτη αναλογικής εισόδου στο οποίο εφαρμόζεται τάση 1.65V, το Arduino θα επιστρέψει την τιμή 512. Έχοντας παρουσιάσει την λειτουργία των αναλογικών pin του Arduino θα προχωρήσουμε στην σχεδίαση ενός κατωδιαβατού (lowpass) φίλτρου Chebyshev που θα επιτρέψει την επεξεργασία του σήματος που επιθυμούμε να λάβουμε πριν την λήψη του από τον Arduino. Με αυτόν τον τρόπο ουσιαστικά φιλτράρουμε το επιθυμητό σήμα εξωτερικά του Arduino και στην συνέχεια παρέχουμε το φιλτραρισμένο πλέον σήμα μέσω των αναλογικών pins στον επεξεργαστή. 125

140 6.1. Υλοποίηση κατωδιαβατού φίλτρου CHEBYSHEV Στην ενότητα αυτή θα υλοποιήσουμε ένα κατωδιαβατό (lowpass) φίλτρο Chebyshev που θα ικανοποιεί τις παρακάτω προδιαγραφές συχνότητας και απόσβεσης: fp = 6KHz, fs = 10,8KHz, και amax =0,81 db, amin =25 db Υπολογισμός της συνάρτησης μεταφοράς Κανονικοποιούμε ως προς την συχνότητα διόδου ωp κι έχουμε Ωp=1 και Ωs=ωs/ωp=1,8. Στα πλαίσια της διαδικασίας σχεδίασης θα πρέπει αρχικά να υπολογίσουμε την τάξη του φίλτρου που απαιτείται. Για να γίνει αυτό θα χρησιμοποιήσουμε τον παρακάτω τύπο : n = cosh 1 [(10 amin 10 1)/(10 a max 10 1)] 1/2 cosh 1 (Ω s ),όπου το Ωs=ωs/ωp είναι η κανονικοποιημένη συχνότητα αποκοπής. Μετατρέποντας τώρα τις συχνότητες που αντιστοιχούν στις ζώνες διόδου κι αποκοπής έχουμε : ωp= rad/sec ωs= rad/sec Μετά την αντικατάσταση των δεδομένων μας από τον τύπο προκύπτει η τιμή n=3,6565.επειδή το n που προέκυψε δεν είναι ακέραιος αριθμός στρογγυλοποιούμε στον αμέσως επόμενο ακέραιο αριθμό ώστε να εξασφαλίσουμε ότι θα ικανοποιούνται οι προδιαγραφές ενώ παράλληλα θα έχουμε τον ελάχιστο αριθμό κυκλωματικών στοιχείων. Θέτουμε δηλαδή: n = 4 Η σχεδίαση συνεχίζεται με τον υπολογισμό της συχνότητας ημίσειας ισχύος από την σχέση: Ωhp=cosh[1/n*cosh-1(10 amax/10-1) -1/2 ]=1,

141 Η σχέση αυτή μας δίνει την κανονικοποιημένη συχνότητα ημίσειας ισχύος. Για να πάρουμε την πραγματική συχνότητα εφαρμόζουμε τον μετασχηματισμό στο πεδίο του low pass φίλτρου κι έχουμε: ωhp=ωhp*ωp κι αντίστοιχα fhp=ωhp/2π Έτσι, έπειτα από αντικατάσταση θα προκύψει η πραγματική συχνότητα ημίσειας ισχύος ωhp : ωhp= rad/sec fhp=6.387 Hz Οι πόλοι της συνάρτησης μεταφοράς, οι γωνίες καθώς και τα αντίστοιχα Q των ριζών προκύπτουν έπειτα από την ανάλυση στο πρόγραμμα Matlab με βάση την τεχνική σχεδίασης Chebyshev low pass filters και φαίνονται στον παρακάτω πίνακα Για τον υπολογισμό των πόλων του φίλτρου Chebyshev βρίσκουμε αρχικά τις γωνίες Butterworth που αντιστοιχούν σε n=4.τα δεδομένα αυτά προκύπτουν είτε από έτοιμους πίνακες είτε μέσα από τον επαναληπτικό αλγόριθμο, την επίλυση δηλαδή της εξίσωσης των φίλτρων τύπου Butterworth κι αναφέρεται αναλυτικά στο αντίστοιχο script του Matlab. Για το μέτρο, Q των πόλων ισχύουν οι αντίστοιχες σχέσεις: Ω k = σ 2 2 k + ω k και Q = σ k 2 +ω2 k 2σ k Για τις παραμέτρους α, ε οι οποίες υπεισέρχονται στην διαδικασία του σχεδιασμού κι επηρεάζουν το πραγματικό, φανταστικό μέρος των πόλων καθώς και την κυμάτωση έχουμε: a = 1 n sinh 1 ( 1 ε ) = 0,3833 ε = 10 α max 10 1 = 0,

142 Όπως προκύπτει κι από τον πίνακα κάθε ζεύγος μιγαδικών πόλων του φίλτρου Chebyshev έχει το δικό του Ωk κάτι που τα διαφοροποιεί από τα αντίστοιχα Butterworth. Τα πραγματικά μέτρα των πόλων προκύπτουν μέσα από παρόμοιο μετασχηματισμό με αυτό της συχνότητας ημίσειας ισχύος, δηλαδή ω0k=ω0k*ωp. Να τονίσουμε, τέλος, ότι οι γωνίες που αναγράφονται στον πίνακα αναφέρονται στο αριστερό μιγαδικό ημιεπίπεδο, θεωρούν δηλαδή ως άξονα αναφοράς τον αρνητικό πραγματικό άξονα και κατά επέκταση έχουν ως αρχή την γωνία των 90ο κι ως τέλος την γωνία των 270ο. Με βάση τα στοιχεία που προέκυψαν από την παραπάνω ανάλυση συμπεραίνουμε ότι η συνάρτηση μεταφοράς που πρέπει να υλοποιηθεί θα αποτελείται από 2 μονάδες ενεργών φίλτρων, τύπου low pass, οι οποίες και φαίνονται παρακάτω σε διαγραμματική μορφή. ωo1=37846 Q1=3,3397 ωo2=20672 Q2=0,7556 Μονάδα 1 (Ι) Μονάδα 2 (ΙΙ) Υλοποίηση της συνάρτησης μεταφοράς Θεωρούμε προσωρινά ότι το Ω0=1 και υλοποιούμε τις κανονικοποιημένες μονάδες ενώ στην συνέχεια θα κάνουμε κλιμακοποίηση της κάθε μονάδας στην αντίστοιχη συχνότητα ω0i Μονάδα (I) Η πρώτη μονάδα υλοποιείται από ένα φίλτρο Sallen-Key low pass δεύτερης τάξης και αντιστοιχεί στον πραγματικό πόλο ω01. Υποθέτουμε αρχικά : C11=C12=1 και R11=R12=R Θέτοντας Ω0=1 προκύπτει ότι R1=R2=1, Q=1/3-k με το k=3-1/q=1+r2/r1. Επιλέγοντας r1=1 προκύπτει η τιμή του r2 για την οποία θα ισχύει r2=2-1/q. 128

143 Κλιμακοποίηση Στην συνέχεια κλιμακοποιούμε κατά πλάτος και συχνότητα ώστε να πάρουμε πυκνωτές με τιμή 0,1μF. Για την μονάδα αυτή θα έχουμε kf=ω01= Η τιμή του km προκύπτει από τα ζητούμενα ως: C1real=C1/km*kf =>km=264,2287. Τα πραγματικά στοιχεία υπολογίζονται με βάση την αποκλιμακοποίηση των αντιστάσεων σύμφωνα με την οποία Rn=Ro*km και των πυκνωτών Cn=Co/km*kf. Έτσι θα έχουμε: R11=R12=264,23 Ω, r11=264,23 Ω, r12=449,34 Ω και C11=C12=0,1μF. Η υλοποιούμενη μονάδα θα έχει κι ένα κέρδος k1=2, Μονάδα (II) Η δεύτερη μονάδα υλοποιείται, επίσης, από ένα αντίστοιχο φίλτρο Sallen-Key low pass δεύτερης τάξης και αντιστοιχεί στον πραγματικό πόλο ω02. Υποθέτουμε αρχικά ότι: C21=C22=1 και R21=R22=R Θέτοντας Ω0=1 προκύπτει ότι R1=R2=1, Q=1/3-k με το k=3-1/q=1+r2/r1. Επιλέγοντας r1=1 προκύπτει η τιμή του r2 για την οποία θα ισχύει r2=2-1/q. Κλιμακοποίηση Κλιμακοποιούμε κατά πλάτος και συχνότητα ώστε να πάρουμε πυκνωτές με τιμή 0,1μF. Για την μονάδα αυτή θα έχουμε kf=ω02= Η τιμή του km προκύπτει από τα ζητούμενα ως: C2real=C2/km*kf =>km=483,7461. Τα πραγματικά στοιχεία υπολογίζονται με βάση την αποκλιμακοποίηση των αντιστάσεων σύμφωνα με την οποία Rn=Ro*km και των πυκνωτών Cn=Co/km*kf. Έτσι θα έχουμε: R21=R22=483,7 Ω, r21=483,7 Ω, r22=327,24 Ω και C21=C22=0,1μF. Η υλοποιούμενη μονάδα θα έχει κι ένα κέρδος k2=1,

144 Παρακάτω φαίνεται η προς σχεδίαση μονάδα, καθώς και το ιδιαίτερο χαρακτηριστικό της που είναι ίσοι πυκνωτές και ίσες αντιστάσεις. Σχήμα 6.4. Sallen Key Ρύθμιση κέρδους-συναρτήσεις μεταφοράς μονάδων Θέλουμε να ρυθμίσουμε το κέρδος της συνολική συνάρτηση μεταφοράς έτσι ώστε το κέρδος του φίλτρου να είναι 0 db στις χαμηλές συχνότητες, δηλαδή k=1. Με βάσει τις μονάδες που υλοποιήθηκαν το κέρδος του φίλτρου στις χαμηλές συχνότητες θα είναι k=k1*k2=2,7006*1,6765=4,53. Χρειάζεται επομένως, να κάνουμε απόσβεση του κέρδους κατά α=k/h=0,2209,όπου H=k1*k2. Για να το πετύχουμε αυτό αντικαθιστούμε την αντίσταση R21 από έναν διαιρέτη τάσης με αντιστάσεις Ζ1=R21/α=2,19 kω και Z2= R21/1-α=620,82 Ω. Συναρτήσεις Μεταφοράς Μονάδων 1.Για την πρώτη μονάδα, Sallen-Key, η συνάρτηση μεταφοράς είναι : Τ 1 (s) = 2 k 1 ω 01 s 2 + ω 01 Q 1 s + ω 01 = s s Για την δεύτερη μονάδα με παρόμοιο τρόπο η συνάρτηση μεταφοράς προκύπτει : T 2 (s) = 2 k 2 ω 02 s 2 + ω 02 Q 2 s + ω 02 = s s Η συνολική συνάρτηση μεταφοράς του κατωδιαβατού φίλτρου Chebyshev 4ης τάξης είναι: 130

145 ΤLP(s)=K * T1(s) * T2(s), όπου το Κ είναι ο συντελεστής που προκύπτει μετά την απόσβεση του κέρδους και θα ισχύει Κ=k/k1*k2=α=0, T LP (s) = s s s s Στο παρακάτω σχήμα εμφανίζεται το κανονικοποιημένο κύκλωμα στο οποίο φαίνονται οι δύο μονάδες αλλά και ο διαιρέτης τάσης για την ρύθμιση του κέρδους. Σχήμα 6.5. Κανονικοποιημένο κύκλωμα Στο επόμενο σχήμα φαίνεται το τελικό κύκλωμα, το επιθυμητό δηλαδή κατωδιαβατό φίλτρο Chebyshev με ό,τι στοιχείο είναι απαραίτητο αλλά και με τις απαιτούμενες τιμές όλων των στοιχείων για την ικανοποίηση των ζητούμενων προδιαγραφών. 131

146 Σχήμα 6.6. Πραγματικό κύκλωμα Μελέτη της συνάρτησης μεταφοράς στο Matlab Εισάγουμε στο πρόγραμμα Matlab τις επί μέρους συναρτήσεις μεταφοράς των μονάδων που συνθέτουν το επιθυμητό φίλτρο αλλά και την συνολική συνάρτησης μεταφοράς του φίλτρου και παίρνουμε τις αποκρίσεις πλάτους σε db, για να ελέγξουμε αν τηρούνται οι προδιαγραφές. Η απόκριση πλάτους σε db για την πρώτη και την δεύτερη μονάδα φαίνονται στις επόμενες σελίδες. Τα παρακάτω διαγράμματα προέκυψαν στο Matlab χρησιμοποιώντας την εντολή bode με όρισμα κάθε φορά την συνάρτηση μεταφοράς των επί μέρους συστημάτων. 132

147 1η Μονάδα : Κατωδιαβατό φίλτρο Sallen-Key Σχήμα 6.7. Φίλτρο Sallen-Key 2η Μονάδα : Κατωδιαβατό φίλτρο Sallen-Key Σχήμα 6.7. Φίλτρο Sallen-Key 133

148 Παρακάτω βλέπουμε την απόκριση πλάτους της συνολικής συνάρτησης μεταφοράς του φίλτρου συναρτήσει της συχνότητας, μετά από την κατάλληλη ρύθμιση του κέρδους. Tα φίλτρα Chebyshev επιτρέπουν στην απόκριση πλάτους να έχει µια μικρή διακύμανση (κυμάτωση) στη ζώνη διόδου για να πετύχουν μεγαλύτερη πτώση στην ζώνη αποκοπής. Σχήμα 6.8. Φίλτρο Chebyshev Σε αυτό το σημείο παραθέτουμε όλες τις παραπάνω αποκρίσεις σε ένα κοινό διάγραμμα Bode. Σχήμα 6.9. Κοινό διάγραμμα 134

149 Παρακάτω φαίνεται η συνάρτηση απόσβεσης σε db της συνολικής συνάρτησης μεταφοράς συναρτήσει της συχνότητας. Σχήμα Απόσβεση συχνότητας Στη συνάρτηση απόσβεσης σημειώνουμε τις κρίσιμες συχνότητες οι οποίες καθορίζουν την ζώνη διόδου, την συχνότητα όπου η απόσβεση γίνεται ελάχιστη και την συχνότητα αποκοπής, δηλαδή την fp=6000 Hz, fmin=2390 Hz και την fs=10800 Hz, καθώς και τις αντίστοιχες αποσβέσεις. Παρατηρούμε ότι η απόκριση πληροί τις προδιαγραφές που τέθηκαν για τα amax=0,81 db και amin=25db. Για την συχνότητα fp=6 ΚHz η απόσβεση είναι σχεδόν 0dB. Επειδή όμως το αποτέλεσμα είναι σχετικό, εξαρτάται δηλαδή και από την ρύθμιση του κέρδους που έχουμε κάνει είναι φανερό ότι πληρείται η προδιαγραφή αmax=0,81 db, καθώς το ελάχιστο που παρουσιάζει η συνάρτηση απόσβεσης εμφανίζεται για fmin=2,39 khz και είναι -0,806 db. Επίσης για την συχνότητα fs=10,8 khz έχουμε απόσβεση 27,7 db τιμή η οποία ξεπερνά την προδιαγραφή του amin=25 db. Πριν τη ρύθμιση κέρδους η συνάρτηση απόσβεσης δίνεται από το παρακάτω διάγραμμα στο οποίο φαίνεται ξεκάθαρα ότι καλύπτονται οι προδιαγραφές που έχουν τεθεί. 135

150 Σχήμα Απόσβεση συχνότητας πριν την ρύθμιση κέρδους Υλοποίηση του κυκλώματος φίλτρου στο Multisim Σχεδιάζουμε το κύκλωμα μας στο Multisim προκειμένου να ελέγξουμε αν υλοποιεί την συνολική συνάρτηση μεταφοράς που αναλύθηκε στο προηγούμενο στάδιο της σχεδίασης αλλά και για να διερευνήσουμε την απόκριση του φίλτρου όταν αυτό διεγείρεται από ένα στοιχειώδες περιοδικό σήμα. Στόχος είναι η μελέτη της συμπεριφοράς του κυκλώματος τόσο στο πεδίο του χρόνου όσο και στο πεδίο της συχνότητας. Εισάγουμε λοιπόν τις διάφορες μονάδες του φίλτρου που έχουν σχεδιασθεί στην προηγούμενη φάση στο περιβάλλον του Multisim και παίρνουμε το παρακάτω κύκλωμα. 136

151 Σχήμα Κύκλωμα αναλογικού φίλτρου Στο κύκλωμα που έχουμε σχεδιάσει χρησιμοποιούμε τον Bode-Plotter για να προκύψει η απόκριση συχνότητας του φίλτρου-κυκλώματος. Το διάγραμμα που παίρνουμε φαίνεται παρακάτω : Σχήμα Απόκριση συχνότητας Με την χρήση της επιλογής cursor βλέπουμε αν πληρούνται οι προδιαγραφές παίρνοντας τιμές στα κατάλληλα σημεία με βάση και την σχεδίαση που προηγήθηκε στο Matlab. 137

152 138

153 Σχήμα Μελέτη απόκρισης συχνότητας στο Multisim Όπως παρατηρούμε το σχεδιασθέν κύκλωμα έχει σχεδόν μηδενικό κέρδος στις χαμηλές συχνότητες (1Hz,0,001dB),ελάχιστη τιμή μικρότερη της amax,κατά απόλυτη τιμή, κοντά στην συχνότητα fmin (2,247 khz 0,721dB),μηδενική σχεδόν τιμή στην συχνότητα διόδου fp (5,928kHz,-0,09dB) και τιμή πλάτους μεγαλύτερη,κατά απόλυτη τιμή, της amin κοντά στην συχνότητα αποκοπής fs (10,698kHz,-26,657dB). Από αυτά τα διαγράμματα λοιπόν γίνεται φανερό ότι το φίλτρο που σχεδιάσθηκε πληροί τις προδιαγραφές που τέθηκαν και προσεγγίζει απόλυτα την μελέτη που πραγματοποιήθηκε στο πρόγραμμα Matlab. Εισάγουμε τώρα στο κύκλωμα μια πηγή διέγερσης, ένα περιοδικό σήμα πριονωτού παλμού με θεμελιώδη συχνότητα 2kHz. Στην συνέχεια χρησιμοποιούμε έναν παλμογράφο στην είσοδο και την έξοδο και δημιουργούμε τα αντίστοιχα figures για το παραπάνω πείραμα. 139

154 Σήμα Εισόδου : Σχήμα Σήμα εισόδου 140

155 Σήμα Εξόδου : Σχήμα Σήμα εξόδου 141

156 Σήμα Εισόδου-Σήμα Εξόδου: Σχήμα Σήματα εισόδου-εξόδου 142

157 Με κόκκινο χρώμα σημειώνουμε το σήμα εισόδου (Channel A) και με πράσινο το σήμα εξόδου (Channel B). Στα παραπάνω διαγράμματα μπορούμε να δούμε αναλυτικά τα σήματα εισόδου και εξόδου όπως αυτά διαμορφώνονται στον παλμογράφο αλλά και στον γράφο (επιλογή Graph του Multisim). Σε κάθε σχήμα φαίνονται οι επιλογές που κάναμε στον παλμογράφο για να προκύψουν οι αντίστοιχες παραστάσεις (V/Div, sec/div κτλ.). Πιο αναλυτικά, παρατηρούμε ότι το σήμα εξόδου είναι παραμορφωμένο σε σχέση με το σήμα εισόδου. Αυτό οφείλεται στο γεγονός ότι το πριονωτό σήμα μπορεί να αναλυθεί κατά Fourier σε άθροισμα ημιτόνων, αποτελείται δηλαδή από ένα πλήθος αρμονικών. Το κατωδιαβατό φίλτρο διατηρεί μόνο τις αρμονικές που εμφανίζονται στις χαμηλές συχνότητες ενώ <<κόβει>> τις αρμονικές που εμφανίζονται στις υψηλές συχνότητες με αποτέλεσμα το σήμα που παράγεται να διατηρεί μεν τη μορφή του σήματος εισόδου, χωρίς ωστόσο να έχει την ίδια τελική μορφή. Το κέρδος του φίλτρου γίνεται φανερό, καθώς όπως παρατηρούμε από το κοινό διάγραμμα των δύο κυματομορφών αυτές έχουν σχεδόν το ίδιο πλάτος (k=1). Η σχετική απόκλιση που παρουσιάζει η έξοδος σε σχέση με την είσοδο οφείλεται στο πλήθος των αρμονικών που <<κόπηκαν>> από το κατωδιαβατό φίλτρο. Τα παραπάνω θα φανούν καλύτερα στο επόμενο βήμα όπου μελετάμε τα φάσματα των σημάτων εισόδου κι εξόδου. Σε αυτό το σημείο της σχεδίασης θέλουμε να δημιουργήσουμε τα φάσματα εισόδου και εξόδου του φίλτρου. Για να γίνει κάτι τέτοιο μπορούμε να χρησιμοποιήσουμε την επιλογή spectrum Analyzer του Multisim από την οποία προκύπτουν τα επιθυμητά διαγράμματα FOURIER (φάσματα σημάτων). Μπορούμε για τον ίδιο λόγο να χρησιμοποιήσουμε και την εντολή psd (Power Spectral Density) του Matlab από την οποία ωστόσο προκύπτουν τα ίδια συμπεράσματα για τα φάσματα εισόδου και εξόδου (εφόσον μιλάμε για τα ίδια σήματα). Κατά συνέπεια, στην επόμενη σελίδα παρουσιάζουμε τα φάσματα FOURIER που προέρχονται από την χρήση του spectrum Analyzer και τα οποία θα σχολιάσουμε στην συνέχεια. 143

158 Φάσμα Σήματος Εισόδου : Σχήμα Φάσμα σήματος εισόδου Φάσμα Σήματος Εξόδου : Σχήμα Φάσμα σήματος εξόδου 144

159 Στην συνέχεια παραθέτουμε τα φάσματα εισόδου κι εξόδου όπως αυτά προέκυψαν με την χρήση της επιλογής Fourier Analysis του Multisim (επιλογή η οποία μας παρέχει καλύτερη ευκρίνεια σε σχέση με τον Spectrum Analyzer). Φάσμα Εισόδου: Σχήμα Φάσμα εισόδου-fourier Analysis 145

160 Φάσμα Εξόδου: Σχήμα Φάσμα εξόδου-fourier Analysis Από τα φάσματα των σημάτων εισόδου και εξόδου που παραθέσαμε προκύπτει ότι το φίλτρο αφήνει ανεπηρέαστες τις αρμονικές χαμηλών συχνοτήτων ενώ αποσβήνει τις αντίστοιχες των υψηλών συχνοτήτων, κάτι το οποίο είναι απολύτως λογικό εφόσον το κύκλωμα μας είναι ένα κατωδιαβατό φίλτρο. Οι κρίσιμες συχνότητες για το συγκεκριμένο φίλτρο είναι fp=6khz και fs=10,8khz. Αξίζει να παρατηρήσουμε ότι στην περιοχή χαμηλών συχνοτήτων οι τιμές που έχουν οι αρμονικές του φάσματος εισόδου είναι ίσες με τις αντίστοιχες του φάσματος εξόδου, κάτι που επιβεβαιώνει ότι το κύκλωμα μας έχει κέρδος 1.Αυτό εμφανίζεται μέχρι την συχνότητα fp ενώ στην συνέχεια η απόσβεση που εισάγει το κύκλωμα του φίλτρου, σε συνδυασμό με το μικρό πλάτος των αρμονικών υψηλών συχνοτήτων που φέρει το σήμα εισόδου οδηγεί στην πλήρη σχεδόν εξασθένιση του σε συχνότητες μεγαλύτερες των 7 khz. Οι αρμονικές αυτές εξαφανίζονται, ολοκληρωτικά σχεδόν, μετά από την συχνότητα αποκοπής (fs). Έτσι, συνάγεται το συμπέρασμα ότι το φίλτρο λειτουργεί σωστά κι απομένει πλέον η τεκμηρίωση της ορθής λειτουργίας του σε πραγματικές συνθήκες. 146

161 Κεφάλαιο 7 Ψηφιακά Φίλτρα Στάδιο 1 ο Σχεδίαση σε περιβάλλον MATLAB Στο προηγούμενο κεφάλαιο αναλύσαμε την σχεδίαση ενός κατωδιαβατού φίλτρου Chebyshev το οποίο φιλτράρει εξωτερικά το ληφθέν σήμα και στην συνέχεια με την χρήση των αναλογικών pins του Arduino τροφοδοτεί το σήμα αυτό στην πλακέτα. Η διαδικασία ουσιαστικά γίνεται χωρίς την υλοποίηση κάποιου κώδικα από τον μικροεπεξεργαστή κι επομένως ο Arduino χρησιμεύει απλά για να λάβει και να επεξεργαστεί, αποστείλει το φιλτραρισμένο σήμα. Στο κεφάλαιο αυτό θα μελετήσουμε μια διαφορετική προσέγγιση. Πιο συγκεκριμένα, θα υλοποιήσουμε με την μορφή κώδικα το φίλτρο που θα χρησιμοποιήσουμε στην πλακέτα. Έτσι, ο Arduino θα λάβει το θορυβώδες σήμα, θα το φιλτράρει κατάλληλα και στην συνέχεια θα το επεξεργαστεί ή θα το αποστείλει, ανάλογα με την λειτουργία που επιθυμούμε να επιτελέσουμε. Υπάρχουν διάφορες τεχνικές σχεδίασης ψηφιακών φίλτρων. Στο κεφάλαιο που ακολουθεί θα σχεδιαστούν τα 4 πλέον βασικά είδη φίλτρων, όπως τα: FIR lowpass 147

162 FIR highpass IIR lowpass IIR highpass 148

163 7.1. Φίλτρο FIR LowPass Έστω ότι επιχειρείται να σχεδιαστεί ένα κατωδιαβατό φίλτρο FIR με τις ακόλουθες προδιαγραφές-παραμέτρους: Fs=1000 Hz (συχνότητα δειγματοληψίας). Fc=200 Hz (συχνότητα αποκοπής). Οι εν λόγω παράμετροι σημειώνονται ενδεικτικά με το παρακάτω διάγραμμα του Σχ Σχήμα 7.1. Απεικόνιση ιδανικού (κόκκινο χρώμα) και πραγματικού (γαλάζιο χρώμα) κατωδιαβατού φίλτρου 20 ης τάξης με συχνότητα δειγματοληψίας fs=1000 Hz και συχνότητα αποκοπής fc=200 Hz 149

164 ΒΗΜΑΤΑ Β.1. Συντάσσεται ο κώδικας στο MATLAB function [x,y]= FIR_lowpass_filter Fs=1000; % sample frequency freq1=100; freq2=300; t=linspace(0,1,fs); x=sin(2*pi*freq1*t) + 100*sin(2*pi*freq2*t); % input signal fc=200; % cut-off frequency Wn=(2/Fs)*fc; b = fir1(20,wn,'low',kaiser(21,3)); fvtool(b,1,'fs',fs) % filter y = filter(b,1,x); plot(t,x,t,y) % original-filtered signal xlim([0 0.1]) xlabel('time (s)') ylabel('amplitude') legend('original Signal','Filtered Signal') end Η συχνότητα δειγματοληψίας (Fs) ορίστηκε στο 1 KHz κι η συχνότητα αποκοπής (fc) στα 200 Hz. Οι συχνότητες freq1, freq2 αποτελούν τις δύο κεντρικές συχνότητες του ημιτονοειδούς σήματος εισόδου που χρησιμοποιήθηκε για να ελεγχθεί η ορθή λειτουργία του φίλτρου. Το φίλτρο είναι 20 ης τάξης τύπου Kaiser (21 συντελεστές για το διάνυσμα b). Τα αποτελέσματα της εκτέλεσης παρουσιάζονται στην συνέχεια. 150

165 Β.2. Εκτελείται ο κώδικας στο MATLAB Από την εκτέλεση του κώδικα προέκυψε η χαρακτηριστική καμπύλη μέτρου-συχνότητας, Σχ Σχήμα 7.2. Διάγραμμα μέτρου-συχνότητας φίλτρου FIR low-pass Επίσης, εμφανίζεται κι η χαρακτηριστική φάσης-συχνότητας, Σχ.7.3. Σχήμα 7.3. Διάγραμμα φάσης-συχνότητας φίλτρου FIR low-pass 151

166 Τέλος, παρατίθεται σε ένα κοινό διάγραμμα το αρχικό (Original) και το φιλτραρισμένο (Filtered) σήμα, Σχ 7.4. Σχήμα 7.4. Αρχικό-φιλτραρισμένο σήμα φίλτρου FIR low-pass Όπως βλέπουμε το φίλτρο που σχεδιάστηκε πληροί τις προδιαγραφές που τέθηκαν ως προς την συχνότητα αποκοπής. Το φιλτραρισμένο σήμα διαθέτει πλάτος περίπου ίσο με 1, όσο δηλαδή είναι το πλάτος του πρώτου όρου του σήματος εισόδου που έχει συχνότητα freq1=100 Hz, μικρότερη της συχνότητας αποκοπής fc=200 Hz. Ο δεύτερος όρος που έχει πλάτος 100 αποκόπτεται σχεδόν άμεσα γιατί έχει συχνότητα freq2=300, μεγαλύτερη της συχνότητας αποκοπής fc. Μέχρι την αποκοπή του δεύτερου όρου ωστόσο μεσολαβεί ένα χρονικό διάστημα, το οποίο απαιτείται για την σταθεροποίηση του σήματος έπειτα από την επίδραση των συντελεστών b[] του ψηφιακού φίλτρου. 152

167 Β.3. Δημιουργείται το σχεδιάγραμμα του φίλτρου Για τη δημιουργία του φίλτρου πληκτρολογείται η εντολή fdatool στο command line του Matlab και συμπληρώνεται το παράθυρο όπως φαίνεται στη συνέχεια. Επιλέγοντας το Realize Model κάτω αριστερά καθώς και την επιλογή Build model using basic elements παρουσιάζεται μέρος του εσωτερικού του φίλτρου με αθροιστές, πολλαπλασιαστές και καθυστερήσεις. Σχήμα 7.5. Fdatool με τις προδιαγραφές του χαμηλοπερατού φίλτρου 153

168 Σχήμα 7.6. Δημιουργία του μοντέλου του φίλτρου με τα basic elements 154

169 Σχήμα 7.7. Το αρχικό τμήμα του εσωτερικού του φίλτρου 155

170 Σχήμα 7.8. Το τελικό τμήμα του εσωτερικού του φίλτρου Τα σχήματα 7.7, 7.8 παρουσιάζουν το αρχικο και τελικό τμήμα του φίλτρου που σχεδιάστηκε με την βοήθεια του Simulink. Τα ενδιάμεσα τμήματα του φίλτρου ακολουθούν την ίδια δομή, η οποία λόγω μεγάλης έκτασης παραλήφθηκε. 156

171 7.2. Φίλτρο FIR HighPass Έστω ότι επιχειρείται να σχεδιαστεί ένα ανωδιαβατό φίλτρο FIR με τις ακόλουθες προδιαγραφές-παραμέτρους: Fs=1000 Hz (συχνότητα δειγματοληψίας). Fc=200 Hz (συχνότητα αποκοπής). Οι προδιαγραφές της σχεδίασης απεικονίζονται ενδεικτικά με το παρακάτω διάγραμμα του Σχ Σχήμα 7.9. Απεικόνιση ιδανικού (κόκκινο χρώμα) και πραγματικού (γαλάζιο χρώμα) ανωδιαβατού φίλτρου 20 ης τάξης με συχνότητα δειγματοληψίας fs=1000 Hz και συχνότητα αποκοπής fc=200 Hz 157

172 ΒΗΜΑΤΑ Β.1. Συντάσσεται ο κώδικας στο MATLAB function [x,y]= FIR_highpass_filter Fs=1000; % sample frequency freq1=100; freq2=500; t=linspace(0,1,fs); x=100*sin(2*pi*freq1*t) + sin(2*pi*freq2*t); % input signal fc=200; % cut-off frequency Wn=(2/Fs)*fc; b = fir1(20,wn,'high',kaiser(21,3)); fvtool(b,1,'fs',fs) % filter y = filter(b,1,x); plot(t,x,t,y) % original-filtered signal xlim([0 0.1]) xlabel('time (s)') ylabel('amplitude') legend('original Signal','Filtered Signal') end Η συχνότητα δειγματοληψίας (Fs) ορίστηκε στο 1 KHz κι η συχνότητα αποκοπής (fc) στα 200 Hz. Οι συχνότητες freq1, freq2 αποτελούν τις δύο κεντρικές συχνότητες του ημιτονοειδούς σήματος εισόδου που χρησιμοποιήθηκε για να ελεγχθεί η ορθή λειτουργία του φίλτρου. Το φίλτρο είναι 20 ης τάξης τύπου Kaiser (21 συντελεστές για το διάνυσμα b). Τα αποτελέσματα της εκτέλεσης παρουσιάζονται στην συνέχεια. 158

173 Β.2. Εκτελείται ο κώδικας στο MATLAB Από την εκτέλεση του κώδικα προέκυψε η χαρακτηριστική καμπύλη μέτρου-συχνότητας, Σχ Σχήμα Διάγραμμα μέτρου-συχνότητας φίλτρου FIR high-pass Ακόμη, δίδεται κι η χαρακτηριστική φάσης-συχνότητας, Σχ Σχήμα Διάγραμμα φάσης-συχνότητας φίλτρου FIR high-pass 159

174 Εμφανίζεται σε ένα κοινό διάγραμμα το αρχικό (Original) και το φιλτραρισμένο (Filtered) σήμα, Σχ Σχήμα Αρχικό-φιλτραρισμένο σήμα φίλτρου FIR high-pass Η τιμή του διαγράμματος Bode (Σχ.7.10) στην συχνότητα αποκοπής είναι -3 db κι επομένως το φίλτρο που σχεδιάστηκε πληροί τις προδιαγραφές που τέθηκαν. Το φιλτραρισμένο σήμα διαθέτει πλάτος ίσο με 1, όσο δηλαδή είναι το πλάτος του δεύτερου όρου του σήματος εισόδου που έχει συχνότητα freq2=500 Hz, μεγαλύτερη από την συχνότητα αποκοπής fc=200 Hz. Ο πρώτος όρος που έχει πλάτος 100 αποκόπτεται σχεδόν άμεσα γιατί έχει συχνότητα freq1=100, μικρότερη από την συχνότητα αποκοπής fc. Παρατηρόυμε ότι μέχρι να αποκοπεί ο πρώτος όρος (πλάτους 100) μεσολαβεί ένα χρονικό διάστημα, το οποίο απαιτείται για την σταθεροποίηση του σήματος έπειτα από την επίδραση των συντελεστών b[] του ψηφιακού φίλτρου. Η υλοποίηση του σχεδιαγράμματος του φίλτρου παραλείπεται καθώς ακολουθεί παρόμοια μορφή με αυτή του lowpass FIR φίλτρου. 160

175 7.3. Φίλτρο IIR LowPass Έστω ότι επιχειρείται να σχεδιαστεί ένα κατωδιαβατό φίλτρο IIR με τις ακόλουθες προδιαγραφές-παραμέτρους: Fs=1000 Hz (συχνότητα δειγματοληψίας). Fc=200 Hz (συχνότητα αποκοπής). Οι προδιαγραφές της σχεδίασης είναι παρόμοιες με αυτές του FIR κατωδιαβατού φίλτρου, για λόγους σύγκρισης, και παρουσιάζονται στο Σχ.7.1. ΒΗΜΑΤΑ Β.1. Συντάσσεται ο κώδικας στο MATLAB function [x,y]= IIR_lowpass_filter Fs=1000; % sample frequency freq1=100; freq2=300; t=linspace(0,1,fs); x=sin(2*pi*freq1*t) + 100*sin(2*pi*freq2*t); % input signal fc=200; % cut-off frequency Wn=(2/Fs)*fc; [b,a] = butter(20,wn,'low'); fvtool(b,a,'fs',fs) % filter y = filter(b,a,x); plot(t,x,t,y) % original-filtered signal 161

176 xlim([0 0.1]) xlabel('time (s)') ylabel('amplitude') legend('original Signal','Filtered Signal') end Η συχνότητα δειγματοληψίας (Fs) είναι 1 KHz ενώ η συχνότητα αποκοπής (fc) 200 Hz. Οι συχνότητες freq1, freq2 αποτελούν τις δύο κεντρικές συχνότητες του ημιτονοειδούς σήματος εισόδου που χρησιμοποιήθηκε για να ελεγχθεί η ορθή λειτουργία του φίλτρου. Το φίλτρο είναι 20 ης τάξης τύπου Butterworth (21 συντελεστές για τα διανύσματα a, b). Τα αποτελέσματα της εκτέλεσης ακολουθούν στην συνέχεια. Β.2. Εκτελείται ο κώδικας στο MATLAB Από την εκτέλεση του κώδικα προέκυψε η χαρακτηριστική καμπύλη μέτρου-συχνότητας, Σχ Σχήμα Διάγραμμα μέτρου-συχνότητας φίλτρου IIR low-pass 162

177 Παρατίθεται η χαρακτηριστική φάσης-συχνότητας, Σχ Σχήμα Διάγραμμα φάσης-συχνότητας φίλτρου IIR low-pass Εμφανίζεται σε ένα κοινό διάγραμμα το αρχικό (Original) και το φιλτραρισμένο (Filtered) σήμα, Σχ Σχήμα Αρχικό-φιλτραρισμένο σήμα φίλτρου IIR low-pass 163

178 Η τιμή του διαγράμματος Bode (Σχ.7.13) στην συχνότητα αποκοπής είναι -3 db κι επομένως το φίλτρο που σχεδιάστηκε πληροί τις προδιαγραφές που τέθηκαν. Το φιλτραρισμένο σήμα διαθέτει πλάτος ίσο με 1, όσο δηλαδή είναι το πλάτος του πρώτου όρου του σήματος εισόδου που έχει συχνότητα freq1=100 Hz, μικρότερη από την συχνότητα αποκοπής fc=200 Hz. Ο δεύτερος όρος που έχει πλάτος 100 αποκόπτεται σχεδόν άμεσα γιατί έχει συχνότητα freq2=100, μικρότερη από την συχνότητα αποκοπής fc. Παρατηρόυμε ότι μέχρι να αποκοπεί ο δεύτερος όρος μεσολαβεί ένα χρονικό διάστημα, το οποίο είναι αρκετά μεγαλύτερο σε σχέση με τον αντίστοιχο χρόνο που απαιτείται στο φίλτρο FIR (Σχ.7.4). Ωστόσο η σύγκλιση στην τιμή που επιθυμούμε (στην προκειμένη περίπτωση το 1) είναι καλύτερη συγκριτικά με το φίλτρο FIR lowpass. Σε αυτό συμβάλλει κι η ύπαρξη των συντελεστών a[]. Έτσι, μπορούμε να επιλέξουμε ανάμεσα στον χρόνο σύγκλισης και την ακρίβεια σύγκλισης με βάση τις εκάστοτε απαιτήσεις του προβλήματος. Αξίζει να αναφερθεί ακόμα ότι η φάση μεταβάλλεται ομαλότερα και φτάνει σε μικρότερες τιμές σε σχέση με το αντίστοιχο διάγραμμα του φίλτρου FIR (Σχ.7.3). 164

179 7.4. Φίλτρο IIR HighPass Έστω ότι επιχειρείται να σχεδιαστεί ένα ανωδιαβατό φίλτρο IIR με τις ακόλουθες προδιαγραφές-παραμέτρους: Fs=1000 Hz (συχνότητα δειγματοληψίας). Fc=200 Hz (συχνότητα αποκοπής). Οι προδιαγραφές της σχεδίασης είναι παρόμοιες με αυτές του FIR ανωδιαβατού φίλτρου, για λόγους σύγκρισης, και παρουσιάζονται στο Σχ.7.9. ΒΗΜΑΤΑ Β.1. Συντάσσεται ο κώδικας στο MATLAB function [x,y]= IIR_highpass_filter Fs=1000; % sample frequency freq1=100; freq2=500; t=linspace(0,1,fs); x=100*sin(2*pi*freq1*t) + sin(2*pi*freq2*t); % input signal fc=200; % cut-off frequency Wn=(2/Fs)*fc; [b,a] = butter(20,wn,'high'); fvtool(b,a,'fs',fs) % filter y = filter(b,a,x); 165

180 plot(t,x,t,y) % original-filtered signal xlim([0 0.1]) xlabel('time (s)') ylabel('amplitude') legend('original Signal','Filtered Signal') end Η συχνότητα δειγματοληψίας (Fs) ορίστηκε στο 1 KHz κι η συχνότητα αποκοπής (fc) στα 200 Hz. Οι συχνότητες freq1, freq2 αποτελούν τις δύο κεντρικές συχνότητες του ημιτονοειδούς σήματος εισόδου που χρησιμοποιήθηκε για να ελεγχθεί η ορθή λειτουργία του φίλτρου. Το φίλτρο είναι 20 ης τάξης τύπου Butterworth (21 συντελεστές για τα διανύσματα a, b). Τα αποτελέσματα της εκτέλεσης παρουσιάζονται στην συνέχεια. Β.2. Εκτελείται ο κώδικας στο MATLAB Από την εκτέλεση του κώδικα προέκυψε η χαρακτηριστική καμπύλη μέτρου-συχνότητας, Σχ Σχήμα Διάγραμμα μέτρου-συχνότητας φίλτρου IIR high-pass 166

181 Ακόμη, δίδεται κι η χαρακτηριστική φάσης-συχνότητας, Σχ Σχήμα Διάγραμμα φάσης-συχνότητας φίλτρου IIR high-pass Εμφανίζεται σε ένα κοινό διάγραμμα το αρχικό (Original) και το φιλτραρισμένο (Filtered) σήμα, Σχ Σχήμα Αρχικό-φιλτραρισμένο σήμα φίλτρου IIR high-pass 167

182 Η τιμή του διαγράμματος Bode (Σχ.7.10) στην συχνότητα αποκοπής είναι -3 db κι επομένως το φίλτρο που σχεδιάστηκε πληροί τις προδιαγραφές που τέθηκαν. Το φιλτραρισμένο σήμα διαθέτει πλάτος ίσο με 1, όσο δηλαδή είναι το πλάτος του δεύτερου όρου του σήματος εισόδου που έχει συχνότητα freq2=500 Hz, μεγαλύτερη από την συχνότητα αποκοπής fc=200 Hz. Ο πρώτος όρος που έχει πλάτος 100 αποκόπτεται σχεδόν άμεσα γιατί έχει συχνότητα freq1=100, μικρότερη από την συχνότητα αποκοπής fc. Παρατηρόυμε ότι μέχρι να αποκοπεί ο πρώτος όρος μεσολαβεί ένα χρονικό διάστημα, το οποίο απαιτείται για την σταθεροποίηση του σήματος έπειτα από την επίδραση των συντελεστών a[], b[] του ψηφιακού φίλτρου. H σύγκλιση στην τιμή που επιθυμούμε (στην προκειμένη περίπτωση το 1) είναι καλύτερη συγκριτικά με το φίλτρο FIR highpass με κόστος όμως ως προς τον χρόνο εκτέλεσης. 168

183 Κεφάλαιο 8 Ψηφιακά Φίλτρα Στάδιο 2 ο Υλοποίηση με μικροελεγχτή Arduino Ο διαχωρισμός της υλοποίησης ψηφιακών φίλτρων σε 2 στάδια αποσκοπεί στην απλούστευση του σχεδιαστικού φόρτου και ταυτόχρονα στην αξιοποίηση ενός πολυδοκιμασμένου λογισμικού όπως είναι το MATLAB. Το MATLAB παρέχει φερέγγυες λύσεις μαζί με μια πληθώρα έτοιμων μοντέλων, εργαλείων απεικόνισης και συγκρότησης αποτελεσμάτων. Είναι για πολλά χρόνια δοκιμασμένο για σφάλματα και λάθη, ανανεώνεται συνεχώς με νέα εργαλεία και προσαρμόζεται στις νέες τεχνοτροπίες και απαιτήσεις του τεχνολογικού περιβάλλοντος. Χάρη στο MATLAB η σχεδίαση απαλλάσσεται από τις δεκάδες αναγκαίες σχεδιαστικές λεπτομέρειες, δίνοντας κατευθείαν το έτοιμο θεωρητικό αποτέλεσμα. 169

184 8.1. Φίλτρο FIR LowPass Αξιοποιώντας τα αποτελέσματα που προέκυψαν από το Matlab προχωρήσαμε στην υλοποίηση του αντίστοιχου κώδικα στο προγραμματιστικό περιβάλλον του Arduino Αρχική προσέγγιση στην εμπέδωση του φίλτρου FIR σε υλικό HW Το υπό σχεδίαση ψηφιακό φίλτρο θεωρείται αρχικά ως ένα μικτό ηλεκτρονικό/ψηφιακό κύκλωμα στο οποίο δίνεται ένα σήμα εισόδου finput το οποίο σαρώνεται με γραμμικά μεταβαλλόμενη συχνότητα. Σχήμα 8.1. Μεταβολή συχνότητας finput συναρτήσει της f 170

185 Σχήμα 8.2. Κυματομορφή του σήματος εισόδου συναρτήσει του χρόνου Σχήμα 8.3. Κυματομορφή σήματος δειγματοληψίας για fs=30 Hz 171

186 Σχήμα 8.4. Κυματομορφή σήματος δειγματοληψίας για fs=100 Hz Το αντίστοιχο ηλεκτρονικό κύκλωμα παρατίθεται στην συνέχεια. Σχήμα 8.5. Εργαστηριακή διάταξη για την μέτρηση απόκρισης ψηφιακού φίλτρου FIR lowpass 172

187 Οι αναμενόμενες χαρακτηριστικές αποκρίσεις παρουσιάζονται στα Σχ.8.6, Σχ.8.7. Σχήμα 8.6. Απόκριση μέτρου-συχνότητας φίλτρου FIR low-pass Σχήμα 8.7. Απόκριση φάσης-συχνότητας φίλτρου FIR low-pass 173

188 8.2. Συνδεσμολογία της αναπτυξιακής διάταξης Arduino Uno Σχήμα 8.8. Συνδεσμολογία για την λήψη και το φιλτράρισμα αναλογικού σήματος 174

189 8.3. Διάγραμμα Ροής Αλγορίθμου και οργάνωση του πηγαίου κώδικα στον Arduino Uno Για ένα αιτιατό διακριτού χρόνου FIR φίλτρο τάξης Ν, η έξοδος είναι ένα σταθμισμένο άθροισμα των πιο πρόσφατων δειγμάτων της εισόδου: Όπου: x[n] είναι το σήμα εισόδου, y[n] είναι το σήμα εξόδου N είναι η τάξη του φίλτρου και bi είναι ο i-στός συντελεστής του φίλτρου. Η κρουστική απόκριση του φίλτρου είναι: Και η συνάρτηση μεταφοράς του: Στην συνέχεια παρατίθεται το Διάγραμμα Ροής Λειτουργίας: 175

190 Σχήμα 8.9. Διάγραμμα Ροής FIR φίλτρου 176

191 Μεταφράζοντας τον αλγόριθμο στη γλώσσα εντολών του λογισμικού του Arduino λαμβάνεται ο κώδικας: void setup() { Serial.begin(9600); } void loop() { float b[21] = { e-18, , , , , e-17, , , , , , , , , , e-17, , , , , e-18}; // Β.0 int Fs = 100; // Sample frequency int filter_order = 21; float x[fs]; float y[fs]; float freq1 = 10; float freq2 = 30; float fc = 20; // cut-off frequency float pi = ; unsigned long start_timer, end_timer, duration; for (int i = 0; i < Fs; i++) { float j = (float)i / (float)fs; x[i] = sin(2 * pi * freq1 * j) * sin(2 * pi * freq2 * j); // Β.1 } start_timer = micros(); filter(filter_order, Fs, b, x, y); // filter the signal end_timer = micros(); duration = end_timer - start_timer; // filter function execution time Serial.print("Execution time (in us) = "); Serial.println(duration); delay(10000); for (int i = 0; i < Fs; i++) { 177

192 Serial.println(y[i]); delay(1000); } } void filter(int filter_order, int Fs, float *b, float *x, float *y) { int i, j; y[0] = b[0] * x[0]; for (i = 1; i < filter_order; i++) { y[i] = 0; for (j = 0; j < i + 1; j++) y[i] = y[i] + b[j] * x[i - j]; // B.2 } for (i = filter_order; i < Fs; i++) { y[i] = 0; for (j = 0; j < filter_order; j++) y[i] = y[i] + b[j] * x[i - j]; // B.3 } return ; } Εκτελώντας τον κώδικα λαμβάνουμε τον χρόνο εκτέλεσης της συνάρτησης filter, η οποία κι υλοποιεί το φιλτράρισμα του σήματος με θόρυβο, καθώς και τις τιμές του διανύσματος y, του φιλτραρισμένου δηλαδή σήματος. Στην συγκεκριμένη υλοποίηση το σήμα εισόδου είναι το x και δημιουργείται στο εσωτερικό του Arduino για λόγους απλότητας. Τα ίδια αποτελέσματα μπορούν να προκύψουν αν το σήμα ληφθεί από τους αναλογικούς ακροδέκτες του Arduino και μετατραπεί σε ψηφιακό. 178

193 8.4. Φίλτρο FIR HighPass Αξιοποιώντας τα αποτελέσματα που προέκυψαν από την μελέτη στο Matlab προχωρήσαμε στην υλοποίηση του αντίστοιχου κώδικα στο προγραμματιστικό περιβάλλον του Arduino, για το φίλτρο FIR highpass. Η υλοποίηση των παραπάνω βημάτων είναι παρόμοια σε όλα τα φίλτρα που ακολουθούν οπότε δεν θα ξαναπαρουσιαστούν και θα παρατεθεί ο κώδικας που καταγράφηκε στον Arduino. Μεταφράζοντας τον αλγόριθμο στη γλώσσα εντολών του λογισμικού του Arduino λαμβάνεται ο κώδικας. Στον κώδικα του Arduino ωστόσο μειώσαμε κατά μια τάξη (υποδεκαπλασιασμός) τις συχνότητες fs, fc, freq1, freq2. Τα αποτελέσματα είναι παρόμοια ενώ ο λόγος που έγινε αυτή η αλλαγή ήταν η χωρητικότητα της μνήμης SRAM του Arduino Uno που είναι 2 KB. void setup() { Serial.begin(9600); } void loop() { float b[21]={ e-18, , , , , e-17, , , , , , , , , , e-17, , , , , e-18}; // Β.0 int Fs=100; // Sample frequency int filter_order=21; float x[fs]; float y[fs]; float freq1=10; float freq2=50; float fc=20; // cut-off frequency float pi= ; unsigned long start_timer,end_timer,duration; for(int i=0; i<fs; i++){ float j=(float)i/(float)fs; x[i]=100*sin(2*pi*freq1*j) + sin(2*pi*freq2*j); // Β.1 } 179

194 start_timer=micros(); filter(filter_order,fs,b,x,y); // filter the signal end_timer=micros(); duration=end_timer-start_timer; // filter function execution time Serial.print("Execution time (in us) = "); Serial.println(duration); delay(10000); for(int i=0;i<fs;i++){ Serial.println(y[i]); delay(1000); } } void filter(int filter_order,int Fs, float *b, float *x, float *y) { int i,j; y[0]=b[0]*x[0]; for (i=1;i<filter_order;i++){ y[i]=0; for (j=0;j<i+1;j++) y[i]=y[i]+b[j]*x[i-j]; // B.2 } for (i=filter_order;i<fs;i++){ y[i]=0; for (j=0;j<filter_order;j++) y[i]=y[i]+b[j]*x[i-j]; // B.3 } return ; } 180

195 8.5. Φίλτρο IIR LowPass Ακολουθεί ο κώδικας για την υλοποίηση του ψηφιακού φίλτρου IIR low-pass στο προγραμματιστικό περιβάλλον του Arduino. void setup() { Serial.begin(9600); } void loop() { float a[21]={1, , , , , , , , , , , , , , , , , , e-05, e-07, e-08}; float b[21]={ e-07, e-06, e-05, , , , , , , , , , , , , , , , e-05, e-06, e-07}; // Β.0 int Fs=100; // Sample frequency 181

196 int filter_order=21; float x[fs]; float y[fs]; float freq1=10; float freq2=30; float fc=20; // cut-off frequency float pi= ; unsigned long start_timer,end_timer,duration; for(int i=0; i<fs; i++){ float j=(float)i/(float)fs; x[i]=sin(2*pi*freq1*j) + 100*sin(2*pi*freq2*j); // Β.1 } start_timer=micros(); filter(filter_order,fs,a,b,x,y); // filter the signal end_timer=micros(); duration=end_timer-start_timer; // filter function execution time Serial.print("Execution time (in us) = "); Serial.println(duration); 182

197 delay(10000); for(int i=0;i<fs;i++){ Serial.println(y[i]); delay(1000); } } void filter(int filter_order,int Fs, float *a,float *b, float *x, float *y) { int i,j; y[0]=b[0]*x[0]; for (i=1;i<filter_order;i++){ y[i]=0; for (j=0;j<i+1;j++) y[i]=y[i]+b[j]*x[i-j]; for (j=0;j<i;j++) y[i]=y[i]-a[j+1]*y[i-j-1]; // B.2 } 183

198 for (i=filter_order;i<fs;i++){ y[i]=0; for (j=0;j<filter_order;j++) y[i]=y[i]+b[j]*x[i-j]; for (j=0;j<filter_order;j++) y[i]=y[i]-a[j+1]*y[i-j-1]; // B.3 } return ; } 184

199 8.6. Φίλτρο IIR HighPass Ακολουθεί ο κώδικας για την υλοποίηση του ψηφιακού φίλτρου IIR high-pass στο προγραμματιστικό περιβάλλον του Arduino. void setup() { Serial.begin(9600); } void loop() { float a[21]={1, , , , , , , , , , , , , , , , , , e-05, e-07, e-08}; float b[21]={ , , , , , , , , , , , , , , , , , , , , }; // Β.0 int Fs=100; // Sample frequency int filter_order=21; float x[fs]; float y[fs]; float freq1=10; float freq2=50; float fc=20; // cut-off frequency float pi= ; unsigned long start_timer,end_timer,duration; for(int i=0; i<fs; i++){ float j=(float)i/(float)fs; x[i]=100*sin(2*pi*freq1*j) + sin(2*pi*freq2*j); // Β.1 185

200 } start_timer=micros(); filter(filter_order,fs,a,b,x,y); // filter the signal end_timer=micros(); duration=end_timer-start_timer; // filter function execution time Serial.print("Execution time (in us) = "); Serial.println(duration); delay(10000); for(int i=0;i<fs;i++){ Serial.println(y[i]); delay(1000); } } void filter(int filter_order,int Fs, float *a,float *b, float *x, float *y) { int i,j; y[0]=b[0]*x[0]; for (i=1;i<filter_order;i++){ y[i]=0; for (j=0;j<i+1;j++) y[i]=y[i]+b[j]*x[i-j]; for (j=0;j<i;j++) y[i]=y[i]-a[j+1]*y[i-j-1]; // B.2 } for (i=filter_order;i<fs;i++){ y[i]=0; for (j=0;j<filter_order;j++) y[i]=y[i]+b[j]*x[i-j]; for (j=0;j<filter_order;j++) y[i]=y[i]-a[j+1]*y[i-j-1]; // B.3 } return ; } 186

201 8.7. Πίνακας χρονικών αποκρίσεων Παρακάτω παρατίθενται τα αποτελέσματα που προέκυψαν από την εκτέλεση των προγραμμάτων στο προγραμματιστικό περιβάλλον του Arduino. Οι χρόνοι εκτέλεσης της συνάρτησης filter είναι υπολογισμένοι σε μs, για μεγαλύτερη ακρίβεια. Μέγεθος FIR lowpass FIR IIR lowpass IIR διανύσματος filter highpass filter highpass δεδομένων filter filter Από τα δεδομένα που προέκυψαν παρατηρούμε ότι οι χρόνοι απόκρισης ανάμεσα στα φίλτρα του ίδιου τύπου (FIR, IIR) είναι σχεδόν ίδιοι, για ίσο μέγεθος διανύσματος δεδομένων. Σχεδόν διπλάσιοι είναι οι χρόνοι εκτέλεσης της συνάρτησης filter στην περίπτωση των IIR φίλτρων κυρίως λόγω αύξησης της πολυπλοκότητας με την προσθήκη των συντελεστών α. Μπορούμε επίσης να παρατηρήσουμε ότι ο χρόνος εκτέλεσης αυξάνεται σχεδόν γραμμικά σε σχέση με το μέγεθος του διανύσματος δεδομένων. Ακόμη, αξίζει να σημειωθεί ότι στα φίλτρα τύπου highpass δεν έχουμε σύγκλιση για μήκος διανύσματος δεδομένων μικρότερο από 50 ενώ στα τύπου lowpass μικρότερο από 25. Στον πίνακα οι χρόνοι απόκρισης της συνάρτησης filter, όταν δεν εμφανίζεται σύγκλιση, έχουν τονισθεί με έντονο κόκκινο χρώμα. 187

202 8.8. Πειραματική διάταξη για την υλοποίηση πειράματος με το αισθητήριο AM2302/DHT22 Ο AM2302 είναι ένα βαθμονομημένο ψηφιακό σήμα εξόδου. Εμφανίζει αποκλειστική τεχνική συλλογής ψηφιακού σήματος και τεχνολογία ανίχνευσης υγρασίας, εξασφαλίζοντας την αξιοπιστία και τη σταθερότητά του. Τα στοιχεία ανίχνευσής του συνδέονται με ένα τσιπ 8 bit στον υπολογιστή. Ο DHT22 είναι ένας πρακτικός, χαμηλού κόστους αισθητήρας ο οποίος χρησιμοποιήθηκε στα πλαίσια της εργασίας, για την μέτρηση της θερμοκρασίας και της υγρασίας σε θορυβώδη περιβάλλοντα. Αρχικά, συλλέγουμε τα δεδομένα από το περιβάλλον και τα εμφανίζουμε στην οθόνη του Arduino ενώ στην συνέχεια προσθέτουμε θόρυβο, συγκεκριμένης γνωστής μορφής, και εφαρμόζουμε την συνάρτηση filter. Τα αποτελέσματα είναι αρκετά ικανοποιητικά και δείχνουν ότι μετά από κάποιον δεδομένο αριθμό βημάτων το αποτέλεσμα του φιλτραρισμένου σήματος ταυτίζεται σχεδόν απόλυτα με το μη-θορυβώδες, αρχικό σήμα. Επίσης, πρέπει να προσεχθεί ότι τα αποτελέσματα των μετρήσεων μπορούν να λαμβάνονται με ασφάλεια κάθε 2 δευτερόλεπτα το νωρίτερο. Στην συνέχεια παραθέτουμε τα τεχνικά χαρακτηριστικά του AM2302/DHT22 και τον κώδικα που υλοποιήσαμε στον Arduino Τεχνικά χαρακτηριστικά του AM2302/DHT22 Μοντέλο Τάση τροφοδοσίας Σήμα εξόδου Στοιχείο ανίχνευσης Εύρος λειτουργίας AM V DC Ψηφιακό σήμα μέσω 1-wire bus Πυκνωτής υγρασίας πολυμερούς Υγρασία 0-100% RH, Θερμοκρασία -40~80 o C Ακρίβεια Υγρασία ±2% RH (μέγιστο ±5% RH) Θερμοκρασία ±0.5 o C Ανάλυση ευαισθησίας Υγρασία ±0.1% RH 188

203 Θερμοκρασία 0.1 o C Επαναληψιμότητα Υγρασία ±1% RH Θερμοκρασία ±0.2 o C Υστέρηση υγρασίας Μακροπρόθεσμη σταθερότητα Ανταλλαξιμότητα Υγρασία ±0.3% RH Υγρασία ±0.5% RH/χρόνο Πλήρως ανταλλάξιμο Συνδεσμολογία της πειραματικής διάταξης 189

Ενσωµατωµένα Συστήµατα

Ενσωµατωµένα Συστήµατα Ενσωµατωµένα Συστήµατα για εφαρµογές πραγµατικού χρόνου Μικροελεγκτής Arduino Ιωάννης Καλόµοιρος Αναπληρωτής Καθηγητής Τµήµα Μηχανικών Πληροφορικής Μάθηµα 7ο Τι είναι το Arduino... Ένα open-hardware σύστηµα

Διαβάστε περισσότερα

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές Εισαγωγή στο Arduino Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών Τι είναι Μικροελεγκτής; Ηλεκτρονική συσκευή που διαχειρίζεται ηλεκτρονικά

Διαβάστε περισσότερα

Γνωριμία με το Arduino

Γνωριμία με το Arduino Γνωριμία με το Arduino Τι είναι το Arduino; Το arduino είναι ένας μικρός υπολογιστής σε μέγεθος παλάμης που περιλαμβάνει ένα μικροελεγκτή (για εκτέλεση εντολών) και ένα σύνολο εισόδων/εξόδων για επικοινωνία

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017) Περιγραφή της Άσκησης Ο σκοπός της πρώτης άσκησης είναι κυρίως η εξοικείωση με το περιβάλλον προγραμματισμού του Arduino, γι αυτό και δεν είναι ιδιαίτερα σύνθετη. Αρχικά, θα

Διαβάστε περισσότερα

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

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ ΟΙΚΟΝOΜΟΥ ΧΑΡΗΣ (6424) ΦΩΚΟΣ ΝΙΚΟΛΑΟΣ(6592) ΚΑΜΒΥΣΗΣ ΝΙΚΟΛΑΟΣ(7178) 2013-2014 ΠΕΡΙΕΧΟΜΕΝΑ Σκοπός της εργασίας Ανάλυση Arduino Uno Δημιουργία πληροφορίας Αποστολή και

Διαβάστε περισσότερα

Η δυναμική του Arduino στο μάθημα της Τεχνολογίας. Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03

Η δυναμική του Arduino στο μάθημα της Τεχνολογίας. Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03 Η δυναμική του Arduino στο μάθημα της Τεχνολογίας Φάσουρας Δημήτριος Ηλεκτρολόγος ΠΕ 17,03 dfasouras@gmail.com Τι είναι το Arduino ; Το Arduino είναι μια απλή μητρική πλακέτα ανοικτού κώδικα. Διαθέτει

Διαβάστε περισσότερα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα 1ο ΕΠΑΛ Περάματος 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino.

Διαβάστε περισσότερα

ARDUINO ΟΔΗΓΟΣ ΓΙΑ ΑΡΧΑΡΙΟΥΣ

ARDUINO ΟΔΗΓΟΣ ΓΙΑ ΑΡΧΑΡΙΟΥΣ ARDUINO ΟΔΗΓΟΣ ΓΙΑ ΑΡΧΑΡΙΟΥΣ ΤΙ ΕIΝΑΙ ΤΟ ARDUINO; Το Arduino είναι μια «ανοικτού κώδικα» πλατφόρμα βασισμένη σε ευέλικτο και εύκολο στη χρήση hardware και software. Αυτό σημαίνει ότι ο καθένας μπορεί να

Διαβάστε περισσότερα

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

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ Σκοπός της άσκησης Οι φοιτητές θα εξοικειωθούν με την πλακέτα του μικροελεγκτή και θα αναγνωρίσουν τα βασικά της στοιχεία. Επίσης θα εξοικειωθούν

Διαβάστε περισσότερα

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

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΡΟΜΠΟΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication ΜΠΑΝΤΗΣ ΑΝΤΩΝΙΟΣ 533 ΤΣΙΚΤΣΙΡΗΣ ΔΗΜΗΤΡΙΟΣ 551 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΡΟΜΠΟΤ LEGO NXT Το ρομπότ

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 Mηχανοτρονική Το Arduino είναι μια «ανοικτού κώδικα» πλατφόρμα «πρωτοτυποποιημένων» ηλεκτρονικών βασισμένη σε ευέλικτο και εύκολο στη χρήση

Διαβάστε περισσότερα

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ. ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr Ασύγχρονη σειριακή

Διαβάστε περισσότερα

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

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ 1.1 ΕΙΣΑΓΩΓΗ ΣΤΑ ΑΝΑΛΟΓΙΚΑ ΗΛΕΚΤΡΟΝΙΚΑ 1 1.1.1 Αναλογικά σήματα 1 1.1.2 Οι αντιστάσεις 3 1.1.3 Οι πυκνωτές 7 1.1.4 Τα πηνία 11 1.1.5 Οι δίοδοι 13 1.1.6

Διαβάστε περισσότερα

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

ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΘΕΜΑ : ΜΙΚΡΟΕΛΕΓΚΤΗΣ PICAXE 18M2 ΔΙΑΡΚΕΙΑ:? περίοδος Οι μικροελεγκτές είναι υπολογιστές χωρίς περιφερειακά, σε ολοκληρωμένα κυκλώματα. Μπορούν να συνδυάσουν αρκετές από τις βασικές λειτουργίες άλλων ειδικών

Διαβάστε περισσότερα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 1: Εισαγωγή στα ενσωματωμένα συστήματα (embedded systems) Εργαστήριο Αυτομάτου Ελέγχου Ενσωματωμένα συστήματα (Embedded Systems) Ενσωματωμένα συστήματα (Embedded

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΤΗ ΔΙΟΙΚΗΣΗ ΚΑΙ ΣΤΗΝ ΟΙΚΟΝΟΜΙΑ 2 Ο ΜΑΘΗΜΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΑΠΟΣΤΟΛΙΑ ΠΑΓΓΕ Υπολογιστής Συνοπτικό λεξικό Οξφόρδης -> «ηλεκτρονική υπολογιστική μηχανή»

Διαβάστε περισσότερα

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

Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου. Ενότητα 2 Αυτοματισμοί και Συστήματα Αυτομάτου Ελέγχου Ενότητα 2 Τι είναι το PLC ΠΕΡΙΕΧΟΜΕΝΑ 2 Τι είναι το PLC. 2.1 Πλεονεκτήματα των PLC. 2.2 Η δομή ενός PLC. 2.3 Τα PLC της αγοράς. 2.4 Αρχή λειτουργίας ενός PLC.

Διαβάστε περισσότερα

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή

Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή Κεφάλαιο 1.5: Τα βασικά μέρη ενός υπολογιστή 1.5.1 Ανάλυση των μερών ενός υπολογιστή Μονάδα συστήματος Είναι το κουτί του υπολογιστή το οποίο φαίνεται αρκετά συμπαγές, αλλά στην πραγματικότητα αποτελείται

Διαβάστε περισσότερα

Προγραμματισμο ς σε Arduino

Προγραμματισμο ς σε Arduino Προγραμματισμο ς σε Arduino Arduino UNO & Innoesys Educational Shield www.devobox.com Ηλεκτρονικά Εξαρτήματα & Υλικά Κατασκευής Πρωτοτύπων Λέανδρου 79, 10443, Κολωνός +30 210 51 55 513, info@devobox.com

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ

ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO. Υποψήφιος Διδάκτωρ ΕΙΣΑΓΩΓΗ ΣΤΟ ARDUINO Δημιουργός: Επιβλέπων: Μπακάλη Ιωάννα Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ 1 ΤΙ ΕΙΝΑΙ ΤΟ ARDUINO; Είναι ένας συνδυασμός Υλικού (πλακέτας, μικροελεγκτή, αντιστάσεων κτλ) και Λογισμικού

Διαβάστε περισσότερα

Μαθαίνοντας το hardware του αναπτυξιακού

Μαθαίνοντας το hardware του αναπτυξιακού 1. ΑΣΚΗΣΗ 1 Μαθαίνοντας το hardware του αναπτυξιακού Προϋποθέσεις Το εργαστήριο αυτό προϋποθέτει το διάβασμα και χρήση των εξής: Αρχείο mcbstr9.chm HTML, που δίδεται με τα υπόλοιπα αρχεία του εργαστηρίου.

Διαβάστε περισσότερα

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Τεχνολογικό Εκπαιδευτικό Ίδρυμα Σερρών Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πληροφορικής & Επικοινωνιών Υλοποίηση δικτύου ασύρματης ραδιοεπικοινωνίας μεταξύ δύο ενσωματωμένων κόμβων (κόμβος ταυτοποίησης

Διαβάστε περισσότερα

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

Εφαρμογές Σειριακής Επικοινωνίας Εφαρμογές Σειριακής Επικοινωνίας Εισαγωγή Στο μάθημα αυτό θα μάθουμε πώς να χρησιμοποιούμε την βιβλιοθήκη serial για την επικοινωνία από την πλατφόρμα Arduino πίσω στον υπολογιστή μέσω της θύρας usb. Τι

Διαβάστε περισσότερα

Αθήνα 29 ΝΟΕ, 2016 ΘΕΜΑ: ΑΙΤΗΜΑ ΑΓΟΡΑΣ ΥΛΙΚΩΝ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΣΥΛΛΟΓΗΣ & ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ

Αθήνα 29 ΝΟΕ, 2016 ΘΕΜΑ: ΑΙΤΗΜΑ ΑΓΟΡΑΣ ΥΛΙΚΩΝ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΣΥΛΛΟΓΗΣ & ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ Αθήνα 29 ΝΟΕ, 2016 ΘΕΜΑ: ΑΙΤΗΜΑ ΑΓΟΡΑΣ ΥΛΙΚΩΝ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΣΥΛΛΟΓΗΣ & ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ Προς, Ο πειραματικός εξοπλισμός αυτής της πρότασης / σ αυτό το αίτημα, θα μας δώσει τη δυνατότητα να δημιουργήσουμε

Διαβάστε περισσότερα

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

LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ LFT169 - LFR169 ΠΟΜΠΟΣ ΚΑΙ ΔΕΚΤΗΣ ΨΗΦΙΑΚΩΝ ΚΑΙ ΑΝΑΛΟΓΙΚΩΝ ΣΗΜΑΤΩΝ Οδηγίες Παραμετροποίησης Power Electronics Control Ε.Π.Ε. Τύποι Συσκευών: LFT169 - LFR169 Περιγραφή: Πομπός και Δέκτης Τηλεχειρισμού 169MHz

Διαβάστε περισσότερα

WDT και Power Up timer

WDT και Power Up timer Ο ΜΙΚΡΟΕΛΕΓΚΤΗΣ PIC O μικροελεγκτής PIC κατασκευάζεται από την εταιρεία Microchip. Περιλαμβάνει τις τρεις βασικές κατηγορίες ως προς το εύρος του δίαυλου δεδομένων (Data Bus): 8 bit (σειρές PIC10, PIC12,

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Εγκατάσταση του Arduino IDE

Εγκατάσταση του Arduino IDE ΑΣΠΑΙΤΕ Συλλογή και Επεξεργασία Δεδομένων Εργαστήριο ΠΕΡΙΕΧΟΜΕΝΑ: Πώς να κατεβάσετε και να εγκαταστήσετε το Ολοκληρωμένο Περιβάλλον Ανάπτυξης (IDE), για το προγραμματισμό του Arduino. Χρησιμοποιώντας το

Διαβάστε περισσότερα

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή

Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή Μάθημα 4.1 Βασικές μονάδες προσωπικού υπολογιστή - Εισαγωγή - Αρχιτεκτονική προσωπικού υπολογιστή - Βασικά τμήματα ενός προσωπικού υπολογιστή - Η κεντρική μονάδα Όταν ολοκληρώσεις το μάθημα αυτό θα μπορείς:

Διαβάστε περισσότερα

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

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα Σκοπός Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2 ΤΟ ΣΥΣΤΗΜΑ ΣΑΡΩΣΗΣ ΤΟΥ ΟΠΤΙΚΟΥ ΠΕΔΙΟΥ. Ψηφιακά Αντικείμενα Μικροελεγκτής Προγραμματισμός Φυσικών Συστημάτων Συστήματα Πραγματικών Εφαρμογών Νέα Ψηφιακά

Διαβάστε περισσότερα

Τροφοδοσία : 3,3V, 5V Αυτή η πινακίδα επιτρέπει τη σύνδεση και των 8 απολήξεων (pins) μίας θύρας E- blocks με καλώδια με τη χρήση τερματισμών με

Τροφοδοσία : 3,3V, 5V Αυτή η πινακίδα επιτρέπει τη σύνδεση και των 8 απολήξεων (pins) μίας θύρας E- blocks με καλώδια με τη χρήση τερματισμών με ΠΙΝΑΚΙΔΑ ΤΕΡΜΑΤΙΣΜΩΝ ΕΒ002 Αυτή η πινακίδα επιτρέπει τη σύνδεση και των 8 απολήξεων (pins) μίας θύρας E- blocks με καλώδια με τη χρήση τερματισμών με βίδες. ΠΙΝΑΚΙΔΑ ΑΙΣΘΗΤΗΡΩΝ ΕΒ003 Αυτή η πινακίδα E-block

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Ανάπτυξη τηλεπικοινωνιακού υποσυστήματος σε UAV για λήψη δεδομένων από επίγειους ανιχνευτές

Ανάπτυξη τηλεπικοινωνιακού υποσυστήματος σε UAV για λήψη δεδομένων από επίγειους ανιχνευτές ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΛΟΠΟΝΝΗΣΟΥ ΣΧΟΛΗ ΟΙΚΟΝΟΜΙΑΣ, ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ Πτυχιακή εργασία Ανάπτυξη τηλεπικοινωνιακού υποσυστήματος σε UAV για λήψη δεδομένων από επίγειους

Διαβάστε περισσότερα

Μάθημα 4.2 Η μητρική πλακέτα

Μάθημα 4.2 Η μητρική πλακέτα Μάθημα 4.2 Η μητρική πλακέτα - Εισαγωγή - Οι βάσεις του επεξεργαστή και της μνήμης - Οι υποδοχές της μητρικής πλακέτας - Άλλα μέρη της μητρική πλακέτας - Τυποποιήσεις στην κατασκευή μητρικών πλακετών Όταν

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ ΕΙΣΑΓΩΓΗ Θέµατα ❸Συστήµατα Η/Υ (αναφορά) ❸Γλώσσα υπολογιστών ❸Γλώσσες προγραµµατισµού (low-high level) ❸Low level VS high level programming ❸Βασικά µέρη Η/Υ ❸Μικροϋπολογιστές (µc µp) ❸Αρχιτεκτονική µικροελεγκτών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ

ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ ΠΛΗΡΟΦΟΡΙΚH ΓΙΑ ΤΗΝ ΤEΧΝΗ Η ΕΞAΜΗΝΟ ΑΜΑΛIΑ ΦΩΚA ΕΠIΚΟΥΡΗ ΚΑΘΗΓHΤΡΙΑ Περιεχόμενο Μαθήματος 2 Arduino Τι είναι το Arduino; 3 μικρή συσκευή (μικροεπεξεργαστής) που συνδέεται με USB στον υπολογιστή μια πλατφόρμα

Διαβάστε περισσότερα

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

Αρχιτεκτονική Υπολογιστών Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Αρχιτεκτονική Υπολογιστών Ενότητα 13: (Μέρος Α ) Ενσωματωμένα Συστήματα Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής

Διαβάστε περισσότερα

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

Σχεδιασμός και Υλοποίηση οχήματος ελεγχόμενου μέσω Bluetooth ΕΚΘΕΣΗ ΑΝΑΦΟΡΑΣ ΕΡΓΑΣΙΑΣ ΕΞΑΜΗΝΟΥ ΜΕ ΘΕΜΑ: Σχεδιασμός και Υλοποίηση οχήματος ελεγχόμενου μέσω Bluetooth Design and Implementation of a remote control vehicle using Bluetooth ΑΝΑΣΤΑΣΙΟΥ ΚΩΝΣΤΑΝΤΙΝΟΣ Επιβλέπων:

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοινωνία. Σειριακή Επικοινωνία USB Σύνδεση / Πρωτόκολλο Σκοπός Εντολή επιλογής (if) Εντολή Επανάληψης (while) Πίνακες 1 Μέρος Α : Σκοπός

Διαβάστε περισσότερα

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

ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ Τ.Ε.Ι. ΠΕΙΡΑΙΑ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΑΥΤΟΜΑΤΟ ΣΥΣΤΗΜΑ ΕΝΑΛΛΑΓΗΣ ΤΑΧΥΤΗΤΩΝ ΣΕ ΠΟΔΗΛΑΤΟ ΟΝΟΜΑΤΑ ΦΟΙΤΗΤΩΝ: ΒΟΥΡΔΕΡΗΣ ΑΝΤΩΝΙΟΣ Α.Μ: 30086 ΙΩΑΝΝΟΥ ΙΩΑΝΝΗΣ Α.Μ: 33359 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ: ΝΙΚΟΛΑΟΥ ΓΡΗΓΟΡΗΣ Ιστορική

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ 4 ο Μάθημα. Το Υλικό του Υπολογιστή

ΠΛΗΡΟΦΟΡΙΚΗ 4 ο Μάθημα. Το Υλικό του Υπολογιστή ΠΛΗΡΟΦΟΡΙΚΗ 4 ο Μάθημα Το Υλικό του Υπολογιστή Ηλεκτρονικός Υπολογιστής Πουλιέται οπουδήποτε (ακόμη και σε Super Market) Είναι παντού Ο φορητός έχει τις ίδιες δυνατότητες με τον επιτραπέζιο Γίνονται μικρότεροι

Διαβάστε περισσότερα

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης

Bread Online. Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Bread Online Σχεδιασμός και μετατροπή μιας απλής οικιακής συσκευής σε επαναπρογραμματιζόμενη συσκευή IP Παναγιώτης Ιωαννίδης Επιβλέπων καθηγητής: Μηνάς Δασυγένης Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών

Διαβάστε περισσότερα

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

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ ΚΕΦΑΛΑΙΟ 7ο ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ Γενικό διάγραμμα υπολογιστικού συστήματος Γενικό διάγραμμα υπολογιστικού συστήματος - Κεντρική Μονάδα Επεξεργασίας ονομάζουμε

Διαβάστε περισσότερα

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino. Το Arduino είναι βασισμένο σε μια απλή μητρική πλακέτα ανοικτού κώδικα, με ενσωματωμένο

Διαβάστε περισσότερα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino UNO Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O

Διαβάστε περισσότερα

ΑΝΑLOG TO DIGITAL CONVERTER (ADC)

ΑΝΑLOG TO DIGITAL CONVERTER (ADC) ΑΝΑLOG TO DIGITAL CONVERTER (ADC) O ADC αναλαμβάνει να μετατρέψει αναλογικές τάσεις σε ψηφιακές ώστε να είναι διαθέσιμες εσωτερικά στο μικροελεγκτή για επεξεργασία. Η αναλογική τάση που θέλουμε να ψηφιοποιηθεί

Διαβάστε περισσότερα

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ)

ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) ΣΥΣΚΕΥΕΣ ΑΠΟΘΗΚΕΥΣΗΣ (ΜΝΗΜΗ) Συσκευές αποθήκευσης Ένας υπολογιστής προκειµένου να αποθηκεύσει δεδοµένα χρησιµοποιεί δύο τρόπους αποθήκευσης: Την Κύρια Μνήµη Τις συσκευές µόνιµης αποθήκευσης (δευτερεύουσα

Διαβάστε περισσότερα

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

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW. Σκοπός Μάθημα 2 Δραστηριότητα 1 Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Βασική δομή ενός προγράμματος στο LabVIEW. Εμπρόσθιο Πλαίσιο (front panel). Σχεδίαση

Διαβάστε περισσότερα

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

Εφαρμογές μικροελεγκτών Μικροελεγκτές Έναν ορισμό που θα μπορούσαμε να δώσουμε για τους μικροελεγκτές είναι ο εξής: Μικροελεγκτής είναι ένα προγραμματιζόμενο ολοκληρωμένο κύκλωμα το οποίο διαθέτει επεξεργαστή, μνήμη, διάφορα

Διαβάστε περισσότερα

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

Κεφάλαιο Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Α Γενικού Λυκείου Κεφάλαιο 1 1.1 Το υπολογιστικό σύστημα Η εξέλιξη του ανθρώπου πραγματοποιήθηκε χάρη στην ικανότητά στον χειρισμό εργαλείων. Ιδιαίτερη θέση έχουν οι Υπολογιστικές συσκευές. Μηχανισμός

Διαβάστε περισσότερα

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016)

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016) Περιγραφή της Άσκησης Στόχος της άσκησης είναι η δημιουργία ενός συστήματος διαχείρισης φωτισμού. Μία φωτομεταβαλλόμενη αντίσταση (LDR) θα διαπιστώνει την ποσότητα του φωτός

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα

ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα ΕΝΟΤΗΤΑ 5 Αναλογικά σήματα Σκοπός και περίγραμμα της Ενότητας 5 Σκοπός της παρουσίασης Να δώσουμε τις βασικές ιδέες για τα αναλογικά σήματα και την χρήση διαφορετικών ειδών περιφερειακών Σύνοψη Επεξήγηση

Διαβάστε περισσότερα

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

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΗΡΗΣΗ Η/Υ

ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΗΡΗΣΗ Η/Υ ΕΡΩΤΗΣΕΙΣ ΣΥΝΤΗΡΗΣΗ Η/Υ 1) Τι είναι μητρική πλακέτα; Είναι η βασική ηλεκτρονική πλακέτα ενός Η/Υ πάνω στην οποία συνδέονται όλα τα εξαρτήματα ενός Η/Υ όπως ο επεξεργαστής, η μνήμη, οι κάρτες επέκτασης,

Διαβάστε περισσότερα

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

Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή Γενικά Στοιχεία Ηλεκτρονικού Υπολογιστή 1. Ηλεκτρονικός Υπολογιστής Ο Ηλεκτρονικός Υπολογιστής είναι μια συσκευή, μεγάλη ή μικρή, που επεξεργάζεται δεδομένα και εκτελεί την εργασία του σύμφωνα με τα παρακάτω

Διαβάστε περισσότερα

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων Εργαστήριο ενσωματωμένων συστημάτων Παρουσίαση 2: Βασικός Προγραμματισμός Arduino (AVR) Εργαστήριο Αυτομάτου Ελέγχου Η πλατφόρμα Arduino Microcontroller: ATmega328 Operating Voltage: 5V Digital I/O Pins:

Διαβάστε περισσότερα

Σχεδιασμός και υλοποίηση κυκλώματος μέτρησης κατανάλωσης ισχύος

Σχεδιασμός και υλοποίηση κυκλώματος μέτρησης κατανάλωσης ισχύος Σχεδιασμός και υλοποίηση κυκλώματος μέτρησης κατανάλωσης ισχύος Φοιτητής Φετινίδης Αναστάσιος Επιβλέπων Δασυγένης Μηνάς Μάρτιος 2014 1 Περιεχόμενα παρουσίασης Εισαγωγή Θεωρητικό υπόβαθρο Υλικό μέρος του

Διαβάστε περισσότερα

«ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ

«ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΥΛΟΠΟΙΗΣΗ ΑΣΥΡΜΑΤΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ ΜΕ ΧΡΗΣΗ ΜΙΚΡΟΕΛΕΓΚΤΩΝ» ΒΥΣΑΝΣΙΩΤΗΣ ΣΤΑΥΡΟΣ Α.Μ. 10139 ΚΑΡΒΟΥΝΙΔΟΥ ΑΓΓΕΛΙΚΗ Α.Μ. 10057 ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ ΤΑΤΣΗΣ ΓΕΩΡΓΙΟΣ ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ Κατάλογος

Διαβάστε περισσότερα

G&K ELECTRONICS AVR ATMEGA DEVELOPMENT BOARD

G&K ELECTRONICS AVR ATMEGA DEVELOPMENT BOARD ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ G&K ELECTRONICS Αυτή η αναπτυξιακή μονάδα (AVR-ATMEGA 28 PIN) είναι σχεδιασμένη να χρησιμοποιηθεί για την εκμάθηση βασικών και προηγμένων δεξιοτήτων που απαιτούνται για τον έλεγχο ενός

Διαβάστε περισσότερα

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

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας Βασικές Έννοιες Πτυχιακή Εργασία 2015 Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping). Η Ασύρματη Επικοινωνία, χρησιμοποιώντας το πρωτόκολλο WiFi.

Διαβάστε περισσότερα

Το υλικό του υπολογιστή

Το υλικό του υπολογιστή Το υλικό του υπολογιστή Ερωτήσεις 1. Τι αντιλαμβάνεστε με τον όρο υλικό; Το υλικό(hardware) αποτελείται από το σύνολο των ηλεκτρονικών τμημάτων που συνθέτουν το υπολογιστικό σύστημα, δηλαδή από τα ηλεκτρονικά

Διαβάστε περισσότερα

Σημειώσεις : Χρήστος Μουρατίδης. Κάντε κλικ για έναρξη

Σημειώσεις : Χρήστος Μουρατίδης. Κάντε κλικ για έναρξη Σημειώσεις : Χρήστος Μουρατίδης Κάντε κλικ για έναρξη Γενική εικόνα Στο σχήμα βλέπουμε μία γενική εικόνα του εσωτερικού της Κεντρική Μονάδας του υπολογιστή: Τροφοδοτικό Είναι μία ηλεκτρική μικροσυσκευή,

Διαβάστε περισσότερα

Λίγα λόγια από το συγγραφέα... 7. 91 Εισαγωγή στους υπολογιστές... 9. 92 Μονάδες µέτρησης χωρητικότητας... 31. 94 Συσκευές εισόδου...

Λίγα λόγια από το συγγραφέα... 7. 91 Εισαγωγή στους υπολογιστές... 9. 92 Μονάδες µέτρησης χωρητικότητας... 31. 94 Συσκευές εισόδου... Περιεχόµενα Λίγα λόγια από το συγγραφέα... 7 91 Εισαγωγή στους υπολογιστές... 9 92 Μονάδες µέτρησης χωρητικότητας... 31 93 Οι βασικές λειτουργίες ενός ηλεκτρονικού υπολογιστή... 37 94 Συσκευές εισόδου...

Διαβάστε περισσότερα

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

Αρχιτεκτονική υπολογιστών 1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αρχιτεκτονική υπολογιστών Ενότητα 3 : Μια άποψη του κορυφαίου επιπέδου λειτουργίας και διασύνδεσης του υπολογιστή Καρβούνης Ευάγγελος Η έννοια

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΛΕΓΧΟΣ ΑΝΤΛΙΟΣΤΑΣΙΟΥ ΜΕ ΔΕΞΑΜΕΝΗ ΜΕΣΩ GSM CHECK IN TANK PUMPING THROUGH GSM

ΕΛΕΓΧΟΣ ΑΝΤΛΙΟΣΤΑΣΙΟΥ ΜΕ ΔΕΞΑΜΕΝΗ ΜΕΣΩ GSM CHECK IN TANK PUMPING THROUGH GSM ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΏΝ ΕΦΑΡΜΟΓΏΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ CHECK IN TANK PUMPING THROUGH GSM Επιβλέπων Καθηγητής: Κόγιας Παναγιώτης Επιβλέπουσα Καθηγήτρια: Κόγια Φωτεινή ΚΑΒΑΛΑ, ΦΕΒΡΟΥΑΡΙΟΣ

Διαβάστε περισσότερα

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης

Το εσωτερικό ενός PC. Τεχνολογία Η/Υ & Πληροφοριών - 05 Κεντρική μονάδα Χουρδάκης Μανόλης Το εσωτερικό ενός PC 1 Το κουτί του PC (περίβλημα) περιέχει όλα τα βασικά μέρη του συστήματος Δύο κατηγορίες κουτιών: Desktop και Tower Mini tower Midi tower Full tower Κεντρική μονάδα Ο τύπος του κουτιού

Διαβάστε περισσότερα

Lab 1: Experimenting on Arduino & AI Sense

Lab 1: Experimenting on Arduino & AI Sense Lab 1: Experimenting on Arduino & AI Sense 1. Εισαγωγή A. Arduino Robokit Το Robokit, όπως και όλες οι πλακέτες τύπου Arduino, λειτουργεί χάρη σε έναν μικροελεγκτή. Ως μικροελεγκτή μπορούμε να φανταστούμε

Διαβάστε περισσότερα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα

Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα Εφαρμογές Arduino Σεμινάριο Ηλεκτρονικού Τομέα 1ο ΕΠΑΛ Περάματος 7ο ΕΚ Πειραιά Πλακέτα Arduino Το 2005 oι Massimo Banzi και David Cueartielles στο Ivrea Δημιουργούν την υπολογιστική πλατφόρμα Arduino.

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο

Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο AEN ΗΠΕΙΡΟΥ ΣΧΟΛΗ ΠΛΟΙΑΡΧΩΝ Ηλεκτρονικοί Υπολογιστές Δ Εξάμηνο ΘΕΩΡΙΑ 3 η Διάλεξη ΧΑΣΑΝΗΣ ΒΑΣΙΛΕΙΟΣ ΥΠΟΛΟΓΙΣΤΙΚΟ ΣΥΣΤΗΜΑ Υπολογιστικό σύστημα: Ένα δυναμικό σύστημα που: Χρησιμοποιείται για επίλυση προβλημάτων

Διαβάστε περισσότερα

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης

Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος. Δρ. Μηνάς Δασυγένης Αρχιτεκτονική Η/Υ Το chipset ενός υπολογιστικού συστήματος Δρ. Μηνάς Δασυγένης mdasyg@ieee.org 1 1 Οι εταιρείες παραγωγής IC διαφημίζουν εκτός από τους επεξεργαστές και τα chipset τους 2 2 Τι είναι όμως

Διαβάστε περισσότερα

Ενσωματωμένα Συστήματα

Ενσωματωμένα Συστήματα Ενσωματωμένα Συστήματα Ενότητα: ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ ARDUINO Δρ. Μηνάς Δασυγένης mdasyg@ieee.org Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών

Διαβάστε περισσότερα

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά Σκοπός Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Α : Υλικά Μικροελεγκτές Πλακέτα Arduino Προσομοίωση Μικροελεγκτών Προγραμματισμός Μικροελεγκτών στη C. 7.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΕΡΓΑΣΙΑΣ

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 201 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Κεφάλαιο 1.6: Συσκευές αποθήκευσης Κεφάλαιο 1.6: Συσκευές αποθήκευσης 1.6.1 Συσκευές αποθήκευσης Μνήμη τυχαίας προσπέλασης - RAM Η μνήμη RAM (Random Access Memory Μνήμη Τυχαίας Προσπέλασης), κρατεί όλη την πληροφορία (δεδομένα και εντολές)

Διαβάστε περισσότερα

ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ

ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ ΕΝΟΤΗΤΑ 10: ΟΔΗΓΗΣΗ ΚΙΝΗΤΗΡΩΝ Στόχος και Περίγραμμα της Ενότητας 10 Στόχος της παρουσίασης Παρουσίαση της βασικής ιδέα και απλών παραδειγμάτων για την οδήγηση DC και βηματικών κινητήρων με το Arduino.

Διαβάστε περισσότερα

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping).

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping). Σκοπός Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία 2015 ΡομποΚαθαριστής. Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping). Μονάδες ενός Ρομποτικού Συστήματος Μονάδα Συλλογής Δεδομένων, Μονάδα Επεξεργασίας

Διαβάστε περισσότερα

Ηλεκτρονικός Υπολογιστής

Ηλεκτρονικός Υπολογιστής Ηλεκτρονικός Υπολογιστής Ε ί ν α ι μ ι α μ η χ α ν ή κα τ α σ κ ε υ α σ μ έ ν η κ υ ρ ί ω ς α π ό ψ η φ ι α κά η λ ε κ τ ρ ο ν ι κά κ υ κ λ ώ μ α τ α κα ι δ ε υ τ ε ρ ε υ ό ν τ ω ς α π ό η λ ε κ τ ρ ι

Διαβάστε περισσότερα

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο,

Μηχανοτρονική. Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, Τμήμα Μηχανικών Παραγωγής και Διοίκησης 7 ο Εξάμηνο, 2016-2017 ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ Μικροϋπολογιστής Υπολογιστής που χρησιμοποιείται για την είσοδο, επεξεργασία και έξοδο πληροφοριών. Είδη μικροϋπολογιστών:

Διαβάστε περισσότερα

Λογικά σύμβολα των CPU, RAM, ROM και I/O module

Λογικά σύμβολα των CPU, RAM, ROM και I/O module Μικροϋπολογιστές Λογικά σύμβολα των CPU, RAM, ROM και I/O module Data CPU Data Data Address RAM Control Address Control External Data Data Address Control I/O module External Data External Control ROM

Διαβάστε περισσότερα

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

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΙΚΟΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΙΚΟΣ ΔΙΚΤΥΩΝ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΕΡΓΑΣΙΑ ΜΕ ΤΙΤΛΟ ΕΠΕΞΕΡΓΑΣΤΕΣ - CPU Μπακρατσάς Γιώργος geback007@yahoo.gr Δεκέμβριος, 2014 Περιεχόμενα ΕΙΣΑΓΩΓΗ... 3 ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ... 4 ΧΡΟΝΟΛΟΓΙΕΣ

Διαβάστε περισσότερα

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση και ανάπτυξη οχήματος που ακολουθεί μια γραμμή

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Σχεδίαση και ανάπτυξη οχήματος που ακολουθεί μια γραμμή ΤΕΙ ΑΝΑΤΟΛΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ ΚΑΙ ΘΡΑΚΗΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Σχεδίαση και ανάπτυξη οχήματος που ακολουθεί μια γραμμή Σπουδαστές: Ταβλάκης Γεώργιος ΑΕΜ:

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στην πληροφορική Ενότητα 2: Βασικές αρχές λειτουργίας και χρήσης του υπολογιστή Αγγελίδης Παντελής Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Διαβάστε περισσότερα

ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΞΑΓΩΓΗΣ ΠΑΙΧΝΙΔΙΟΥ ΕΡΩΤΗΣΕΩΝ/ΑΠΑΝΤΗΣΕΩΝ ΜΕ ΧΡΗΣΗ ARDUINO - QUIZ GAME ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 3

ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΞΑΓΩΓΗΣ ΠΑΙΧΝΙΔΙΟΥ ΕΡΩΤΗΣΕΩΝ/ΑΠΑΝΤΗΣΕΩΝ ΜΕ ΧΡΗΣΗ ARDUINO - QUIZ GAME ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 3 ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΞΑΓΩΓΗΣ ΠΑΙΧΝΙΔΙΟΥ ΕΡΩΤΗΣΕΩΝ/ΑΠΑΝΤΗΣΕΩΝ 1 Ο ΕΠΑ.Λ. ΓΕΡΑΣ Σχολικό Έτος: Καθηγητής: ΜΕ ΧΡΗΣΗ ARDUINO - QUIZ GAME Τάξη:.. Τμήμα:.. Ομάδα:.. Ημερομηνία:.. Ονοματεπώνυμο

Διαβάστε περισσότερα

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή

i Στα σύγχρονα συστήματα η κύρια μνήμη δεν συνδέεται απευθείας με τον επεξεργαστή Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2015-16 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://di.ionio.gr/~mistral/tp/comparch/ Μ.Στεφανιδάκης i Στα σύγχρονα

Διαβάστε περισσότερα

Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου. Το κύκλωμα σε breadboard

Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου. Το κύκλωμα σε breadboard Φύλλο εργασίας 6 - Θερμόμετρο εξωτερικού χώρου Σε αυτήν την δραστηριότητα θα κατασκευάσουμε ένα θερμόμετρο εξωτερικού χώρου. Θα χρησιμοποιήσουμε τον αισθητήρα θερμοκρασίας LM35 και για την ένδειξη της

Διαβάστε περισσότερα

ΣΥΝΘΕΤΑ ΣΥΣΤΗΜΑΤΑ ΑΥΤΟΜΑΤΙΣΜΟΥ. Μετά την ολοκλήρωση της ενότητας αυτής θα μπορείτε:

ΣΥΝΘΕΤΑ ΣΥΣΤΗΜΑΤΑ ΑΥΤΟΜΑΤΙΣΜΟΥ. Μετά την ολοκλήρωση της ενότητας αυτής θα μπορείτε: Ενότητα 2.6 Κεφάλαιο 2 ΣΥΝΘΕΤΑ ΣΥΣΤΗΜΑΤΑ ΑΥΤΟΜΑΤΙΣΜΟΥ ΣΤΟΧΟΙ Μετά την ολοκλήρωση της ενότητας αυτής θα μπορείτε: Να αιτιολογείτε την αναγκαιότητα χρησιμοποίησης κάθε είδους αυτοματισμού. Να διακρίνετε

Διαβάστε περισσότερα

Μαλούτα Θεανώ Σελίδα 1

Μαλούτα Θεανώ Σελίδα 1 ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Α' ΛΥΚΕΙΟΥ ΕΝΟΤΗΤΑ 1η ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ 1. Τι ονομάζουμε υλικό και τι λογισμικό ενός υπολογιστικού συστήματος; 2. Τι είναι α) η μητρική πλακέτα ( motherboard), β) η κεντρική μονάδα

Διαβάστε περισσότερα

Τεχνολογίες Κύριας Μνήμης

Τεχνολογίες Κύριας Μνήμης Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Αρχιτεκτονική Υπολογιστών 2016-17 Τεχνολογίες Κύριας (και η ανάγκη για χρήση ιεραρχιών μνήμης) http://mixstef.github.io/courses/comparch/ Μ.Στεφανιδάκης Κύρια Μνήμη

Διαβάστε περισσότερα

Το κύκλωμα σε breadboard

Το κύκλωμα σε breadboard Φύλλο εργασίας 8 - Ανιχνευτής απόστασης Σε αυτήν τη δραστηριότητα θα κατασκευάσουμε έναν ανιχνευτή απόστασης. Θα χρησιμοποιήσουμε τον αισθητήρα υπερήχων (ή απόστασης) HC-SR04 για τον υπολογισμό της απόστασης.

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008 Τεχνολογία Ι Θεωρητικής Κατεύθυνσης Τεχνικών Σχολών Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα

Εγκατάσταση. Επέκταση εμβέλειας WiFi N600. Μοντέλο WN3500RP

Εγκατάσταση. Επέκταση εμβέλειας WiFi N600. Μοντέλο WN3500RP Εγκατάσταση Επέκταση εμβέλειας WiFi N600 Μοντέλο WN3500RP Έναρξη χρήσης Η Επέκταση εμβέλειας WiFi της NETGEAR αυξάνει την απόσταση κάλυψης ενός δικτύου WiFi ενισχύοντας το υπάρχον σήμα WiFi και βελτιώνοντας

Διαβάστε περισσότερα

Παιδιά κάτω των 13 ετών δε θα πρέπει να χρησιμοποιούν το κιτ χωρίς επίβλεψη. Μη συνδέετε την κύρια πλακέτα σε εξωτερική τροφοδοσία μεγάλης ισχύος.

Παιδιά κάτω των 13 ετών δε θα πρέπει να χρησιμοποιούν το κιτ χωρίς επίβλεψη. Μη συνδέετε την κύρια πλακέτα σε εξωτερική τροφοδοσία μεγάλης ισχύος. 2 ΠΕΡΙΕΧΟΜΕΝΑ 01. Robotale (Arduino-Compatible) 02. Ράστερ 830 οπών 03. Κουτί αποθήκευσης 04. Κόκκινα leds (τεμ. 5) 05. Κίτρινα leds (τεμ. 5) 06. Πράσινα leds (τεμ. 5) 07. Αντιστάτες 220 Ohm (τεμ. 8) 08.

Διαβάστε περισσότερα

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

Οργάνωση και Αρχιτεκτονική Υπολογιστών. Κεφάλαιο 7.4 Οργάνωση και Αρχιτεκτονική Υπολογιστών Κεφάλαιο 7.4 Ε/Ε Οδηγούμενη από Διακοπές Το πρόβλημα με την προγραμματιζόμενη Ε/Ε είναι ότι ο επεξεργαστής πρέπει να περιμένει ώστε η μονάδα Ε/Ε που τον ενδιαφέρει

Διαβάστε περισσότερα

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς

Τμήμα Λογιστικής. Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. Μάθημα 8. 1 Στέργιος Παλαμάς ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Τμήμα Λογιστικής Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές Μάθημα 8 Κεντρική Μονάδα Επεξεργασίας και Μνήμη 1 Αρχιτεκτονική του Ηλεκτρονικού Υπολογιστή Μονάδες Εισόδου Κεντρική

Διαβάστε περισσότερα

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο 2006-07 Ενότητα 4 Εισαγωγή στην Πληροφορική Κεφάλαιο 4Α: Αναπαράσταση πληροφορίας Κεφάλαιο 4Β: Επεξεργαστές που χρησιµοποιούνται σε PCs Χειµερινό Εξάµηνο 2006-07 ρ. Παναγιώτης Χατζηδούκας (Π..407/80) Εισαγωγή

Διαβάστε περισσότερα

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013 ΤΕΧΝΟΛΟΓΙΑ (Ι) ΤΕΧΝΙΚΩΝ ΣΧΟΛΩΝ ΘΕΩΡΗΤΙΚΗΣ ΚΑΤΕΥΘΥΝΣΗΣ Μάθημα : Μικροϋπολογιστές

Διαβάστε περισσότερα