- Επεξήγηση εργασίας:
- Συστατικά:
- Προγραμματισμός:
- Σχεδιασμός κυκλώματος και PCB χρησιμοποιώντας το EasyEDA:
- Υπολογισμός και παραγγελία δειγμάτων PCB online:
Σε αυτό το έργο, πρόκειται να χρησιμοποιήσουμε έναν μικροελεγκτή PIC για να ελέγξουμε απομακρυσμένα λίγα φορτία AC χρησιμοποιώντας απλά ένα τηλεχειριστήριο υπερύθρων. Ένα παρόμοιο έργο αυτοματισμού οικιακού τηλεχειριστηρίου IR έχει ήδη γίνει με τον Arduino, αλλά εδώ το σχεδιάσαμε σε PCB χρησιμοποιώντας τον διαδικτυακό σχεδιαστή και προσομοιωτή PCB της EasyEDA και χρησιμοποιήσαμε τις υπηρεσίες σχεδιασμού PCB για να παραγγείλετε τις πλακέτες PCB όπως φαίνεται στην επόμενη ενότητα του άρθρο.
Στο τέλος αυτού του έργου θα μπορείτε να αλλάζετε (ON / OFF) οποιοδήποτε φορτίο AC χρησιμοποιώντας ένα συνηθισμένο τηλεχειριστήριο από την άνεση της καρέκλας / κρεβατιού σας. Για να κάνουμε αυτό το έργο πιο ενδιαφέρον, έχουμε επίσης ενεργοποιήσει ένα χαρακτηριστικό για τον έλεγχο της ταχύτητας του ανεμιστήρα με τη βοήθεια του Triac. Όλα αυτά μπορούν να γίνουν με απλά κλικ στο τηλεχειριστήριο IR. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε τηλεχειριστήριο τηλεόρασης / DVD / MP3 για αυτό το έργο. Τα διαφορετικά σήματα υπερύθρων από το τηλεχειριστήριο λαμβάνονται από τον μικροελεγκτή ο οποίος στη συνέχεια ελέγχει τα αντίστοιχα ρελέ μέσω ενός κυκλώματος οδήγησης ρελέ. Αυτά τα ρελέ χρησιμοποιούνται για τη σύνδεση και την αποσύνδεση των φορτίων AC (Lights / Fan).
Επεξήγηση εργασίας:
Η εργασία αυτού του έργου είναι αρκετά απλή στην κατανόηση. Όταν πατηθεί ένα κουμπί στο IR Remote, στέλνει μια ακολουθία κώδικα με τη μορφή κωδικοποιημένων παλμών χρησιμοποιώντας συχνότητα διαμόρφωσης 38Khz. Αυτοί οι παλμοί λαμβάνονται από τον αισθητήρα TSOP1738 και στη συνέχεια διαβάζονται από τον ελεγκτή. Στη συνέχεια, ο ελεγκτής αποκωδικοποιεί το ληφθέν τρένο των παλμών σε μια δεκαεξαδική τιμή και το συγκρίνει με τις προκαθορισμένες δεκαεξαδικές τιμές στο πρόγραμμά μας.
Εάν συμβεί κάποιος αγώνας τότε ο ελεγκτής εκτελεί μια σχετική λειτουργία ενεργοποιώντας το αντίστοιχο Ρελέ / Triac και το αντίστοιχο αποτέλεσμα υποδεικνύεται επίσης από τα ενσωματωμένα LED. Εδώ σε αυτό το έργο, έχουμε χρησιμοποιήσει 4 λαμπτήρες (μικρούς λαμπτήρες) διαφορετικών χρωμάτων, καθώς φορτία φωτισμού και ένας άλλος λαμπτήρας (μεγαλύτερος λαμπτήρας) θεωρείται ανεμιστήρας για σκοπούς επίδειξης.
Έχουμε επιλέξει το πλήκτρο 1 για εναλλαγή του ρελέ 1, 2 για εναλλαγή του ρελέ 2, 3 για εναλλαγή του ρελέ 3, 4 για εναλλαγή του ρελέ 4 και Vol + για αύξηση της ταχύτητας ανεμιστήρα και Vol- για μείωση της ταχύτητας του ανεμιστήρα.
Σημείωση: Εδώ χρησιμοποιήσαμε λάμπα 100watt αντί για ανεμιστήρα.
Υπάρχουν πολλοί τύποι τηλεχειριστηρίων IR για διαφορετικές συσκευές, αλλά οι περισσότεροι από αυτούς λειτουργούν γύρω από τη συχνότητα 38KHz. Εδώ σε αυτό το έργο, ελέγχουμε τις οικιακές συσκευές χρησιμοποιώντας τηλεχειριστήριο IR TV και για την ανίχνευση των σημάτων IR, χρησιμοποιούμε έναν δέκτη IR TSOP1738. Αυτός ο αισθητήρας TSOP1738 μπορεί να ανιχνεύσει σήμα συχνότητας 38Khz. Η λειτουργία του τηλεχειριστηρίου IR και του TSOP1738 καλύπτεται λεπτομερώς σε αυτό το άρθρο: Πομπός IR και δέκτης
Ο μικροελεγκτής PIC μας λειτουργεί στα + 5V και τα ρελέ λειτουργούν στα + 12V, επομένως χρησιμοποιούμε έναν μετασχηματιστή για να κατεβάσουμε το 220V AC και να το διορθώσουμε χρησιμοποιώντας έναν ανορθωτή γεφυρών. Αυτή η διορθωμένη τάση DC ρυθμίζεται έπειτα στα + 12V και + 5V χρησιμοποιώντας τους ρυθμιστές IC 7812 και 7805 αντίστοιχα.
Για να ενεργοποιήσουμε το ρελέ χρησιμοποιούμε τρανζίστορ όπως το BC547 που μπορούν να λειτουργήσουν ως ηλεκτρονικός διακόπτης για να ενεργοποιήσουν / απενεργοποιήσουν τα ρελέ με βάση το σήμα από τον μικροελεγκτή PIC. Επιπλέον για τον έλεγχο της ταχύτητας του ανεμιστήρα χρησιμοποιούμε ένα TRIAC. Το TRIAC είναι ένας ημιαγωγός ισχύος που μπορεί να ελέγχει την τάση εξόδου. Αυτή η ικανότητα χρησιμοποιείται για τον έλεγχο της ταχύτητας του ανεμιστήρα.
Χρησιμοποιήσαμε επίσης ένα πρόγραμμα οδήγησης Triac για τον έλεγχο του Triac χρησιμοποιώντας τον μικροελεγκτή PIC. Αυτό το πρόγραμμα οδήγησης χρησιμοποιείται για να δώσει έναν παλμό γωνίας πυροδότησης στο Triac, έτσι ώστε να μπορεί να ελέγχεται η ισχύς εξόδου. Εδώ έχουμε χρησιμοποιήσει 6 επίπεδα ελέγχου ταχύτητας. Όταν το επίπεδο είναι 0 τότε ο ανεμιστήρας θα σβήσει. Όταν το επίπεδο θα είναι 1 τότε η ταχύτητα θα είναι το 1/5 της πλήρους ταχύτητας. Όταν το επίπεδο θα είναι 2 τότε η ταχύτητα θα είναι 2/5 της πλήρους ταχύτητας και αντίστοιχα για τους άλλους. Το τρέχον επίπεδο της ταχύτητας μπορεί να παρακολουθείται χρησιμοποιώντας την ενσωματωμένη οθόνη 7 τμημάτων.
Το μπλοκ διάγραμμα του έργου φαίνεται παρακάτω.
Συστατικά:
Τα στοιχεία που απαιτούνται για την κατασκευή αυτού του έργου δίνονται παρακάτω:
- PIC18f2520 Μικροελεγκτής -1
- TSOP1738 -1
- Τηλεχειριστήριο IR TV / DVD -1
- Τρανζίστορ BC547 -4
- Ρελέ 12 volt -4
- Λάμπα με βάση στήριξης -5
- Καλώδια σύνδεσης -
- EasyEda PCB -1
- LCD 16x2
- Τροφοδοσία 12v
- Ακροδέκτης 2 ακίδων "-8
- Ακροδέκτης 3 ακίδων -1
- Μετασχηματιστής 12-0-12 -1 -
- Ρυθμιστής τάσης 7805 -1
- Ρυθμιστής τάσης 7812 -1
- Πυκνωτής 1000uf -1
- Πυκνωτής 10uf -1
- Πυκνωτής 0.1uf -1
- Πυκνωτής 0,01uf 400V "-1
- 10k -5
- 1k -5
- 100ohm -7
- Κοινό τμήμα καθόδου -1
- 1n4007 δίοδος -10
- BT136 triac -1
- Αρσενική / θηλυκή κεφαλίδα -
- LED -6
- Opto-ζεύκτης moc3021 -1
- Opto-ζεύκτης mtc2e ή 4n35 -1
- 20Mhz κρύσταλλο -1
- Πυκνωτής 33pf -2
- 5.1v δίοδος zener -1
- 47 ohm 2 watt αντίσταση -1
Όλα αυτά τα συστατικά χρησιμοποιούνται συνήθως και μπορούν να αγοραστούν εύκολα. Ωστόσο, αν ψάχνετε για μια καλύτερη αγορά στο διαδίκτυο, τότε θα σας συνιστούσαμε LCSC.
Το LCSC είναι ένα εξαιρετικό ηλεκτρονικό κατάστημα για να αγοράσετε τα ηλεκτρονικά σας εξαρτήματα για όλα τα είδη έργων. Διαθέτουν περίπου 25.000 είδη εξαρτημάτων και το καλύτερο είναι ότι πωλούν ακόμη και είδη μικρής ποσότητας για μικρά έργα και έχουν επίσης Global Shipping.
Αποκωδικοποίηση του τηλεχειριστηρίου IR:
Όπως ειπώθηκε νωρίτερα, μπορείτε να χρησιμοποιήσετε οποιοδήποτε τηλεχειριστήριο για το έργο σας. Αλλά πρέπει να γνωρίζουμε τι είδους σήμα δημιουργείται από το συγκεκριμένο τηλεχειριστήριο. Για κάθε μεμονωμένο κλειδί στο τηλεχειριστήριο θα υπάρχει ισοδύναμη τιμή HEX για αυτό το κλειδί. Χρησιμοποιώντας αυτήν την τιμή HEX μπορούμε να διακρίνουμε μεταξύ κάθε κλειδιού από την πλευρά του μικροελεγκτή. Επομένως, πριν αποφασίσουμε να χρησιμοποιήσουμε ένα τηλεχειριστήριο, πρέπει να γνωρίζουμε την τιμή HEX για τα προκαθορισμένα πλήκτρα στο συγκεκριμένο τηλεχειριστήριο. Σε αυτό το έργο, χρησιμοποιήσαμε ένα τηλεχειριστήριο NEC. Οι τιμές HEX για τα πλήκτρα σε ένα τηλεχειριστήριο NEC δίνονται παρακάτω.
Όπως μπορείτε να παρατηρήσετε, η τιμή HEX έχει 7 χαρακτήρες από τους οποίους μόνο οι δύο τελευταίες διαφέρουν, επομένως μπορούμε να εξετάσουμε μόνο τα δύο τελευταία ψηφία για τη διάκριση μεταξύ κάθε πλήκτρου.
Διάγραμμα κυκλώματος:
Το σχήμα για το έργο φαίνεται παρακάτω.
Το παραπάνω σχηματικό έγινε εύκολο χρησιμοποιώντας τον επεξεργαστή σχηματισμού esayEDA, καθώς παρέχουν τις διατάξεις όλων των στοιχείων που χρησιμοποιούνται σε αυτό το έργο. Επίσης, δεν απαιτεί εγκατάσταση και μπορεί να χρησιμοποιηθεί στο διαδίκτυο εν κινήσει.
Οι τιμές pinouts και οι συνιστώσες καθορίζονται σαφώς στο παραπάνω σχήμα. Μπορείτε επίσης να κατεβάσετε το σχηματικό αρχείο από εδώ.
Προγραμματισμός:
Το πρόγραμμα για αυτό το έργο γίνεται χρησιμοποιώντας το MPLABX, ο κώδικας είναι επίσης πολύ απλός και κατανοητός. Ο πλήρης κωδικός θα δοθεί στο τέλος αυτού του σεμιναρίου, ενώ παρακάτω εξηγούνται παρακάτω μερικά σημαντικά κομμάτια του προγράμματος.
Στην αρχή του κώδικα, θα πρέπει να συμπεριλάβουμε τις απαιτούμενες βιβλιοθήκες, να ορίζουμε τις καρφίτσες και να δηλώνουμε τις μεταβλητές.
#περιλαμβάνω
Μετά από αυτό, δημιουργήσαμε μια απλή λειτουργία καθυστέρησης χρησιμοποιώντας το βρόχο «για».
άκυρη καθυστέρηση (int time) {για (int i = 0; i
Μετά από αυτό, αρχικοποιήσαμε το χρονόμετρο χρησιμοποιώντας την ακόλουθη συνάρτηση
χρονόμετρο κενού () // 10 -> 1us {T0PS0 = 0; T0PS1 = 0; T0PS2 = 0; PSA = 0; // Η πηγή ρολογιού χρονοδιακόπτη προέρχεται από το Prescaler T0CS = 0; // Το Prescaler λαμβάνει ρολόι από FCPU (5MHz) T08BIT = 0; // 16 BIT MODE TMR0IE = 1; // Ενεργοποίηση TIMER0 Interrupt PEIE = 1; // Ενεργοποίηση περιφερειακής διακοπής GIE = 1; // Ενεργοποίηση INTs παγκοσμίως TMR0ON = 1; // Τώρα ξεκινήστε το χρονόμετρο! }
Τώρα στην κύρια λειτουργία, έχουμε δώσει οδηγίες στις επιλεγμένες ακίδες και προετοιμάζουμε το χρονοδιακόπτη και την εξωτερική διακοπή int0 για να ανιχνεύσουμε μηδενική διέλευση.
ADCON1 = 0b00001111; TRISB1 = 0; TRISB2 = 1; TRISB3 = 0; TRISB4 = 0; TRISB5 = 0; TRISC = 0x00; TRISA = 0x00; PORTA = 0xc0; TRISB6 = 0; RB6 = 1; ρελέ 1 = 0; ρελέ 2 = 0; ρελέ3 = 0; ρελέ 4 = 0; rly1LED = 0; rly3LED = 0; rly2LED = 0; rly4LED = 0; fanLED = 0; i = 0; ir = 0; tric = 0; μετρών την ώραν(); INTEDG0 = 0; // Διακοπή στην πτώση του άκρου INT0IE = 1; // Ενεργοποίηση της εξωτερικής διακοπής INT0 (RB0) INT0IF = 0; // Διαγράφει INT0 Εξωτερικό bit σημαίας διακοπής PEIE = 1; // Ενεργοποίηση περιφερειακής διακοπής GIE = 1; // Ενεργοποίηση INT παγκοσμίως
Τώρα, εδώ δεν χρησιμοποιούμε καμία λειτουργία διακοπής ή λήψης και σύγκρισης για την ανίχνευση σήματος υπερύθρων. Εδώ μόλις χρησιμοποιήσαμε έναν ψηφιακό πείρο για να διαβάσουμε δεδομένα όπως ακριβώς διαβάζουμε ένα κουμπί. Όποτε το σήμα πηγαίνει υψηλό ή χαμηλό, απλώς βάζουμε τη μέθοδο αποσύνδεσης και τρέχουμε το χρονόμετρο. Κάθε φορά που η καρφίτσα αλλάζει την κατάστασή της σε άλλη, τότε οι τιμές χρόνου θα αποθηκεύονται σε έναν πίνακα.
IR απομακρυσμένη αποστολή λογικής 0 ως 562,5us και λογική 1 ως 2250us. Κάθε φορά που ο χρονοδιακόπτης διαβάζει περίπου 562.5us τότε το υποθέτουμε 0 και όταν ο χρονοδιακόπτης διαβάζει περίπου 2250us τότε το υποθέτουμε ως 1. Στη συνέχεια το μετατρέπουμε σε hex.
Το εισερχόμενο σήμα από το τηλεχειριστήριο περιέχει 34 bit. Αποθηκεύουμε όλα τα byte στον πίνακα και μετά αποκωδικοποιούμε το τελευταίο byte που θα χρησιμοποιηθεί.
ενώ (ir == 1); INT0IE = 0; ενώ (ir == 0); TMR0 = 0; ενώ (ir == 1); i ++; dat = TMR0; εάν (dat> 5000 && dat <12000) {} αλλιώς {i = 0; INT0IE = 1; } εάν (i> = 33) {GIE = 0; καθυστέρηση (50) cmd = 0; για (j = 26; j <34; j ++) {if (dat> 1000 && dat <2000) cmd << = 1; αλλιώς εάν (dat> 3500 && dat <4500) {cmd- = 0x01; cmd << = 1; }} cmd >> = 1;
Το παραπάνω κομμάτι κώδικα λαμβάνει και αποκωδικοποιεί το σήμα IR χρησιμοποιώντας χρονόμετρο διακόπτει και αποθηκεύει την αντίστοιχη τιμή HEX στη μεταβλητή cmd. Τώρα μπορούμε να συγκρίνουμε αυτήν την τιμή HEX (μεταβλητή cmd) με τις προκαθορισμένες τιμές HEX και να αλλάζουμε το ρελέ όπως φαίνεται παρακάτω
εάν (cmd == 0xAF) {relay1 = ~ relay1; rly1LED = ~ rly1LED; } αλλιώς εάν (cmd == 0x27) {relay2 = ~ relay2; rly2LED = ~ rly2LED; } αλλιώς εάν (cmd == 0x07) {relay3 = ~ relay3; rly3LED = ~ rly3LED; } αλλιώς εάν (cmd == 0xCF) {relay4 = ~ relay4; rly4LED = ~ rly4LED; } αλλιώς εάν (cmd == 0x5f) {ταχύτητα ++; αν (ταχύτητα> 5) {ταχύτητα = 5; }} αλλιώς εάν (cmd == 0x9f) {speed--; εάν (ταχύτητα <= 0) {ταχύτητα = 0; }}
Τώρα για να μάθουμε σε ποιον λειτουργεί ο ανεμιστήρας μας, πρέπει να χρησιμοποιήσουμε μια οθόνη 7 τμημάτων. Οι ακόλουθες γραμμές χρησιμοποιούνται για να καθοδηγήσουν τις ακίδες της οθόνης 7 τμημάτων.
if (speed == 5) // απενεργοποιημένο 5x2 = 10ms triger // speed 0 {PORTA = 0xC0; // οθόνη 0 RB6 = 1; fanLED = 0; } αλλιώς εάν (ταχύτητα == 4) // σκανδάλη 8 ms // ταχύτητα 1 {PORTA = 0xfc; // εμφάνιση 1 RB6 = 1; fanLED = 1; } αλλιώς εάν (ταχύτητα == 3) // σκανδάλη 6 ms // ταχύτητα 2 {PORTA = 0xE4; // εμφάνιση 2 RB6 = 0; fanLED = 1; } αλλιώς εάν (speed == 2) // 4ms trigger // speed 3 {PORTA = 0xF0; // εμφάνιση 3 RB6 = 0; fanLED = 1; } αλλιώς εάν (speed == 1) // 2ms trigger // speed 4 {PORTA = 0xD9; // εμφάνιση 4 RB6 = 0; fanLED = 1; } αλλιώς εάν (speed == 0) // 0ms trigger // speed 5 full power {PORTA = 0xD2; // εμφάνιση 5 RB6 = 0; fanLED = 1; }
Η παρακάτω συνάρτηση είναι για εξωτερική διακοπή και υπερχείλιση χρόνου. Αυτή η λειτουργία είναι υπεύθυνη για την ανίχνευση μηδενικής διέλευσης και την οδήγηση του Triac.
void interrupt isr () {if (INT0IF) {καθυστέρηση (ταχύτητα). tric = 1; για (int t = 0; t <100; t ++); tric = 0; INT0IF = 0; } if (TMR0IF) // Ελέγξτε εάν είναι TMR0 Overflow ISR {TMR0IF = 0; }}
Το τελικό PCB για αυτό το τηλεχειριστήριο οικιακού αυτοματισμού φαίνεται όπως φαίνεται παρακάτω:
Σχεδιασμός κυκλώματος και PCB χρησιμοποιώντας το EasyEDA:
Για να σχεδιάσουμε αυτόν τον οικιακό αυτοματισμό τηλεχειριστηρίου, χρησιμοποιήσαμε το EasyEDA που είναι ένα δωρεάν ηλεκτρονικό εργαλείο EDA για τη δημιουργία κυκλωμάτων και PCB με απρόσκοπτο τρόπο. Παραγγείλαμε προηγουμένως λίγα PCB από την EasyEDA και εξακολουθούμε να χρησιμοποιούμε τις υπηρεσίες τους καθώς βρήκαμε ολόκληρη τη διαδικασία, από το σχεδιασμό των κυκλωμάτων έως την παραγγελία των PCB, πιο βολικό και αποτελεσματικό σε σύγκριση με άλλους κατασκευαστές PCB. Η EasyEDA προσφέρει δωρεάν σχεδίαση κυκλώματος, προσομοίωση, σχεδιασμό PCB και προσφέρει επίσης προσαρμοσμένη υπηρεσία PCB υψηλής ποιότητας αλλά χαμηλής τιμής. Δείτε εδώ για το πλήρες σεμινάριο σχετικά με τον τρόπο χρήσης του Easy EDA για τη δημιουργία Σχηματικών Σχέσεων, διατάξεων PCB, Προσομοίωσης Κυκλωμάτων κ.λπ.
Το EasyEDA βελτιώνεται μέρα με τη μέρα. έχουν προσθέσει πολλές νέες δυνατότητες και βελτιώνουν τη συνολική εμπειρία χρήστη, γεγονός που καθιστά το EasyEDA ευκολότερο και χρησιμοποιήσιμο για το σχεδιασμό κυκλωμάτων. Σύντομα πρόκειται να κυκλοφορήσουν την έκδοση Desktop, η οποία μπορεί να ληφθεί και να εγκατασταθεί στον υπολογιστή σας για χρήση εκτός σύνδεσης.
Στο EasyEDA, μπορείτε να κάνετε τα σχέδια κυκλωμάτων και PCB σας δημόσια, ώστε άλλοι χρήστες να μπορούν να τα αντιγράψουν ή να τα επεξεργαστούν και να επωφεληθούν από εκεί, έχουμε επίσης δημοσιοποιήσει ολόκληρες τις διατάξεις κυκλωμάτων και PCB για αυτό τον αυτοματισμό οικιακού τηλεχειριστηρίου
Παρακάτω είναι το Στιγμιότυπο του κορυφαίου επιπέδου διάταξης PCB από το EasyEDA, μπορείτε να δείτε οποιοδήποτε επίπεδο (Top, Bottom, Topsilk, bottomsilk κ.λπ.) του PCB επιλέγοντας το επίπεδο από το παράθυρο «Layers».
Υπολογισμός και παραγγελία δειγμάτων PCB online:
Αφού ολοκληρώσετε τη σχεδίαση του PCB, μπορείτε να κάνετε κλικ στο εικονίδιο της εξόδου Κατασκευής , η οποία θα σας μεταφέρει στη σελίδα παραγγελίας PCB. Εδώ μπορείτε να προβάλετε το PCB σας στο Gerber Viewer ή να κατεβάσετε αρχεία Gerber του PCB σας και να τα στείλετε σε οποιονδήποτε κατασκευαστή, είναι επίσης πολύ πιο εύκολο (και φθηνότερο) να το παραγγείλετε απευθείας στο EasyEDA. Εδώ μπορείτε να επιλέξετε τον αριθμό των PCB που θέλετε να παραγγείλετε, πόσα στρώματα χαλκού χρειάζεστε, το πάχος PCB, το βάρος του χαλκού, ακόμη και το χρώμα PCB. Αφού ορίσετε όλες τις επιλογές, κάντε κλικ στο "Αποθήκευση στο καλάθι" και ολοκληρώστε την παραγγελία σας, τότε θα λάβετε τα PCB σας εντός λίγων ημερών.
Μπορείτε να παραγγείλετε απευθείας αυτό το PCB ή να κατεβάσετε το αρχείο Gerber χρησιμοποιώντας αυτόν τον σύνδεσμο.
Μετά από λίγες μέρες παραγγελίας PCB έχουμε τα PCB. Οι πίνακες που λάβαμε φαίνονται παρακάτω.
Μόλις λάβαμε τα PCB, συναρμολόγησα όλα τα απαιτούμενα εξαρτήματα πάνω από το PCB και τελικά έχουμε το IR Remote Controlled Home Automation έτοιμο, ελέγξτε αυτό το κύκλωμα που λειτουργεί σε βίντεο επίδειξης στο τέλος του άρθρου.