Πίνακας περιεχομένων:
- Βήμα 1: Σύστημα Black Box
- Βήμα 2: Συστατικά
- Βήμα 3: D Σαγιονάρες
- Βήμα 4: Υπό όρους
- Βήμα 5: Περιορισμοί
- Βήμα 6: Κύριο αρχείο προέλευσης
- Βήμα 7: Συναρμολόγηση
- Βήμα 8: Φόρτωση του προγράμματος
Βίντεο: Ενεργειακά αποδοτική κίνηση Φώτα δρόμου: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Ο στόχος μας με αυτό το έργο ήταν να δημιουργήσουμε κάτι που θα εξοικονομήσει ενέργεια και οικονομικούς πόρους από τις κοινότητες. Τα φώτα του δρόμου που ενεργοποιούνται με κίνηση θα κάνουν και τα δύο αυτά πράγματα. Σε ολόκληρο το έθνος η ενέργεια σπαταλάται στα φώτα των δρόμων φωτίζοντας τους άδειους δρόμους. Το σύστημα φωτισμού του δρόμου εξασφαλίζει ότι τα φώτα είναι αναμμένα μόνο όταν χρειάζεται, εξοικονομώντας αμέτρητα δολάρια στις κοινότητες. Χρησιμοποιώντας αισθητήρες κίνησης, το σύστημα ανάβει τα φώτα μόνο όταν υπάρχουν αυτοκίνητα. Επίσης, για την ασφάλεια των πεζών, εφαρμόσαμε ένα κουμπί παράκαμψης που ανάβει όλα τα φώτα στο δρόμο. Τα παρακάτω βήματα θα σας καθοδηγήσουν στο πώς σχεδιάσαμε και φτιάξαμε το μικρότερο μοντέλο του έργου μας χρησιμοποιώντας το Vivado και έναν πίνακα Basys 3.
Βήμα 1: Σύστημα Black Box
Ξεκινήσαμε αυτό το έργο σχεδιάζοντας ένα απλό διάγραμμα μαύρου κουτιού. Ένα διάγραμμα μαύρου κουτιού δείχνει απλώς τις εισόδους και τις εξόδους που απαιτεί το σύστημά μας για να ολοκληρώσει όλες τις απαραίτητες διαδικασίες. Προσπαθήσαμε να διατηρήσουμε το σχεδιασμό μας όσο το δυνατόν πιο απλό και βασικό. Οι τρεις εισόδους του συστήματος μας περιλάμβαναν ένα δίαυλο αισθητήρων κίνησης (4 για το μοντέλο μας), ένα κουμπί παράκαμψης πεζών και μια είσοδο ρολογιού. Από την άλλη πλευρά, η ενιαία έξοδός μας είναι ένα λεωφορείο με φώτα LED που αντιπροσωπεύουν τα φώτα του δρόμου μας. Για αυτό το μοντέλο χρησιμοποιήσαμε ένα σενάριο 16 φώτων του δρόμου απλώς και μόνο επειδή αυτός είναι ο μέγιστος αριθμός ενσωματωμένων εξόδων LED στον πίνακα Basys 3. Τέλος, χρησιμοποιώντας αυτό το διάγραμμα μπορέσαμε να δημιουργήσουμε το έργο, την πηγή και τα αρχεία περιορισμού Vivado με τις κατάλληλες εισόδους και εξόδους.
Βήμα 2: Συστατικά
Σε αυτό το βήμα, βουτάμε βαθύτερα εξετάζοντας τα στοιχεία που αποτελούν το διάγραμμα του μαύρου κουτιού μας. Το πρώτο μας στοιχείο είναι ένα αρχείο προέλευσης VHDL που περιέχει σαγιονάρες D. Οι σαγιονάρες D λαμβάνουν απλώς οποιοδήποτε σήμα εισέρχεται σε αυτούς από τους αισθητήρες στην ανερχόμενη άκρη του ρολογιού και τα ασφαλίζουν αυτά τα δεδομένα μέχρι την επόμενη άκρη ανόδου. Αυτό εμποδίζει τους ευαίσθητους αισθητήρες κίνησης να μην αναβοσβήνουν τα LED εξόδου. Επίσης, βάζουμε ένα απλό flip-flop στο σήμα εισόδου του κουμπιού για να διατηρήσουμε τα LED για περίπου 5-7 δευτερόλεπτα μετά το πάτημα του κουμπιού. Το περάσαμε επίσης μέσω ενός διαχωριστή ρολογιού.
η οντότητα clk_div2 είναι Port (clk: στο std_logic; sclk: out std_logic); τέλος clk_div2;
αρχιτεκτονική my_clk_div του clk_div2 είναι
σταθερή max_count: ακέραιος: = (300000000); σήμα tmp_clk: std_logic: = '0'; Έναρξη my_div: διαδικασία (clk, tmp_clk) μεταβλητή div_cnt: ακέραιος: = 0; ξεκινήστε εάν (αυξανόμενη άκρη (clk)) στη συνέχεια εάν (div_cnt = MAX_COUNT) τότε tmp_clk <= όχι tmp_clk? div_cnt: = 0; else div_cnt: = div_cnt + 1; τέλος εαν; τέλος εαν; sclk <= tmp_clk; τερματισμός διαδικασίας my_div? τέλος my_clk_div?
Το τελευταίο μας στοιχείο σε αυτό το διάγραμμα είναι ένα αρχείο πηγής VHDL συμπεριφοράς που περιέχει προϋποθέσεις για τις εξόδους που βασίζονται στη διαμόρφωση των σημάτων εισόδου.
Βήμα 3: D Σαγιονάρες
Οι τέσσερις σαγιονάρες που είναι προσαρτημένες στα σήματα εισόδου είναι απαραίτητες για τη λειτουργικότητα του συστήματός μας. Όπως αναφέρθηκε προηγουμένως, με ευαίσθητους αισθητήρες κίνησης και κουμπί παράκαμψης, οι σαγιονάρες χρησιμοποιούν μάνδαλα για να εξάγουν μόνο το σήμα εισόδου μας στην ανερχόμενη άκρη του ρολογιού. Αυτή η διαδοχική λογική σημαίνει ότι τα φώτα του δρόμου μας μπορούν να παραμείνουν αναμμένα για ένα ορισμένο χρονικό διάστημα αφού ενεργοποιηθούν από μια γρήγορη κίνηση. Η κωδικοποίηση για ένα D-Flip Flop είναι αρκετά απλή:
beginprocess (CLK) ξεκινά αν η αυξανόμενη άκρη (CLK) τότε Q <= D? τέλος εαν; τελική διαδικασία?
Ολόκληρο το πράγμα μπορεί να συγκεντρωθεί σε μια ενιαία πρόταση. Μόλις είχαμε αυτό το κομμάτι, δημιουργήσαμε ένα δομικό αρχείο προέλευσης VHDL που περιέχει και τα τέσσερα απαραίτητα σαγιονάρες:
έναρξη DFF0: χάρτης θύρας DFF (CLK => CLK, D => D (0), Q => Q (0)); DFF1: Χάρτης θύρας DFF (CLK => CLK, D => D (1), Q => Q (1)); DFF2: Χάρτης θύρας DFF (CLK => CLK, D => D (2), Q => Q (2)); DFF3: Χάρτης θύρας DFF (CLK => CLK, D => D (3), Q => Q (3));
τέλος Συμπεριφορική?
Αυτό βοηθά στη διατήρηση του κύριου δομικού αρχείου όπου συγκεντρώνουμε όλα τα στοιχεία του συστήματος πολύ πιο καθαρά και οργανωμένα.
Βήμα 4: Υπό όρους
Για να διατηρήσουμε τον κώδικα συμπαγή και αποτελεσματικό, γράψαμε όλους τους όρους μας σε μια δήλωση πεζών -κεφαλαίων. Για το μικρότερο μοντέλο, είχαμε 16 πιθανές διαμορφώσεις εξόδου LED, καθώς κάθε αισθητήρας κίνησης είναι υπεύθυνος για μια ομάδα 4 LED.:
περίπτωση NMS είναι όταν "1111" => LED LED LED LED LED LED LED LED LED LED LED LED <= "1111111111111111"; τελική περίπτωση?
Βήμα 5: Περιορισμοί
Για να δηλώσετε σωστά τις εισόδους και τις εξόδους σας χρησιμοποιώντας το Vivado, πρέπει να εφαρμόσετε ένα αρχείο περιορισμού που αναφέρει όλες τις θύρες, τα κουμπιά, τις λυχνίες LED και τα ρολόγια που χρησιμοποιούνται.
set_property PACKAGE_PIN W5 [get_ports CLK] set_property IOSTANDARD LVCMOS33 [get_ports CLK]
set_property PACKAGE_PIN U16 [get_ports {LED [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [0]}] set_property PACKAGE_PIN E19 [get_ports {LED [1]}] set_property IOSTANDARD LVCMOS_33_pert_port U19 [get_ports {LED [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [2]}] set_property PACKAGE_PIN V19 [get_ports {LED [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [3]}] set_property PAC get_ports {LED [4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [4]}] set_property PACKAGE_PIN U15 [get_ports {LED [5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [5]}] set_property PACKAGE LED [6]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [6]}] set_property PACKAGE_PIN V14 [get_ports {LED [7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [7]}] set_property PACKAGE_PIN V13 8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [8]}] set_property PACKAGE_PIN V3 [get_ports {LED [9]}] set_property IO STANDARD LVCMOS33 [get_ports {LED [9]}] set_property PACKAGE_PIN W3 [get_ports {LED [10]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [10]}] set_property PACKAGE_PIN U3 [get_ports {LED [pert] 33 [get_ports {LED [11]}] set_property PACKAGE_PIN P3 [get_ports {LED [12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [12]}] set_property PACKAGE_PIN N3 [get_ports {LED [13]}] set_property IOSTANDARD {LED [13]}] set_property PACKAGE_PIN P1 [get_ports {LED [14]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED [14]}] set_property PACKAGE_PIN L1 [get_ports {LED [15]}] set_property IOSTANDARD LVCMOS [15]}]
set_property PACKAGE_PIN U18 [get_ports BTN] set_property IOSTANDARD LVCMOS33 [get_ports BTN]
set_property PACKAGE_PIN A14 [get_ports {MS [0]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [0]}] set_property PACKAGE_PIN A16 [get_ports {MS [1]}] set_property IOSTANDARD LVCMOS_33_pert_port_MAC33 B15 [get_ports {MS [2]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [2]}] set_property PACKAGE_PIN B16 [get_ports {MS [3]}] set_property IOSTANDARD LVCMOS33 [get_ports {MS [3]}]
Βήμα 6: Κύριο αρχείο προέλευσης
Σε αυτό το κύριο αρχείο συγκεντρώνουμε όλα τα αρχεία προέλευσης συστατικών που αναφέρθηκαν προηγουμένως. Αυτό το αρχείο λειτουργεί ως δομικός κώδικας που συγκεντρώνει τα διαφορετικά στοιχεία.
οντότητα Master_Final_Project is Port (BTN: σε STD_LOGIC; CLK: σε STD_LOGIC; MS: σε STD_LOGIC_VECTOR (3 προς τα κάτω 0). LED: εκτός STD_LOGIC_VECTOR (15 προς τα κάτω 0)). τέλος Master_Final_Project;
αρχιτεκτονική Συμπεριφορική του Master_Final_Project είναι
component final_project is Port (--CLK: σε STD_LOGIC; NMS: σε STD_LOGIC_VECTOR (3 προς τα κάτω 0). BTN: σε STD_LOGIC;-sw: σε STD_LOGIC_Vector (1 κάτω 0); LED: εκτός STD_LOGIC_V τελικό στοιχείο?
στοιχείο Final_DFF είναι
Θύρα (CLK: σε STD_LOGIC; D: σε STD_LOGIC_Vector (3 προς τα 0); Q: εκτός STD_LOGIC_Vector (3 προς τα κάτω 0)); τελικό στοιχείο?
σήμα DFF02proj30: STD_LOGIC;
σήμα DFF12proj74: STD_LOGIC; σήμα DFF22proj118: STD_LOGIC; σήμα DFF32proj1512: STD_LOGIC;
να αρχίσει
DFF0: Final_DFF χάρτης θύρας (CLK => CLK, D (0) => MS (0), D (1) => MS (1), D (2) => MS (2), D (3) => MS (3), Q (0) => DFF02proj30, Q (1) => DFF12proj74, Q (2) => DFF22proj118, Q (3) => DFF32proj1512); Proj0: τελικός_χάρτης θύρας έργου (NMS (0) => DFF02proj30, NMS (1) => DFF12proj74, NMS (2) => DFF22proj118, NMS (3) => DFF32proj1512, BTN => BTN, LED => LED); τέλος Συμπεριφορική?
Βήμα 7: Συναρμολόγηση
Η συναρμολόγηση υλικού για αυτό το έργο είναι ελάχιστη. Τα μόνα απαιτούμενα κομμάτια είναι τα εξής:
1. Basys 3 σανίδα (1)
2. Φτηνοί αισθητήρες κίνησης που μπορείτε να βρείτε στο amazon εδώ. (4)
3. Μόλυβδος από άντρα σε γυναίκα (4)
Συνέλευση:
1. Συνδέστε 4 αρσενικούς αγωγούς στις θύρες JB κεφαλίδας PMod 1-4 (Βλέπε εικόνα).
2. Συνδέστε τα θηλυκά άκρα στην ακίδα εξόδου κάθε αισθητήρα κίνησης.
Βήμα 8: Φόρτωση του προγράμματος
Τώρα είμαστε έτοιμοι να φορτώσουμε το κύριο αρχείο προέλευσης VHDL στον πίνακα Basys 3. Βεβαιωθείτε ότι εκτελείτε σύνθεση, υλοποίηση και δημιουργία ελέγχου bitstream για τυχόν σφάλματα. Εάν όλα εκτελούνται με επιτυχία, ανοίξτε τη διαχείριση υλικού και προγραμματίστε τη συσκευή Basys 3. Το έργο σας τώρα ολοκληρώθηκε!
Συνιστάται:
Αυτόματα φώτα του δρόμου με χρήση αισθητήρα υπερήχων: 3 βήματα
Αυτόματα φώτα του δρόμου με χρήση αισθητήρα υπερήχων: Σκεφτήκατε ποτέ ότι πώς τα φώτα του δρόμου ανάβουν αυτόματα τη νύχτα και σβήνουν αυτόματα το πρωί; Υπάρχει κάποιος που μπαίνει στο ON/OFF αυτά τα φώτα; Υπάρχουν διάφοροι τρόποι για να ανάψετε τα φώτα του δρόμου, αλλά οι παρακάτω γ
Ενεργειακά αποδοτικός πίνακας οδηγών κινητήρα: 5 βήματα
Ενεργειακά αποδοτικός πίνακας οδηγών μοτέρ: Το έργο που παρουσιάζεται είναι μια πλακέτα κυκλώματος βηματικού κινητήρα/οδηγού κινητήρα με IC οδηγού κινητήρα SN754410 που περιλαμβάνει ορισμένες δυνατότητες εξοικονόμησης ενέργειας. Ο πίνακας μπορεί να οδηγήσει 2 κινητήρες DC ή έναν βηματικό κινητήρα με τη βοήθεια διπλού κυκλώματος γέφυρας Η στο IC. SN754410 IC
Οικονομικά αποδοτική θερμική κάμερα: 10 βήματα
Οικονομικά αποδοτική θερμική κάμερα: Έχω αναπτύξει μια συσκευή που μπορεί να συνδεθεί με ένα drone και μπορεί να μεταδώσει ζωντανά ένα μεικτό πλαίσιο από τη θερμογραφική εικόνα που δείχνει θερμική ακτινοβολία και κανονική φωτογραφία με ορατό φως. Η πλατφόρμα αποτελείται από ένα μικρό μονόκλινο
Διαδραστικά φώτα αυλής, φώτα πεζοδρομίου: 3 βήματα
Interactive Yard Lights, Walkway Lights: wantedθελα να φτιάξω ένα είδος διαδραστικών φώτων αυλής για την πίσω αυλή μου. Η ιδέα ήταν, όταν κάποιος περπατούσε με έναν τρόπο, θα ξεκινούσε ένα κινούμενο σχέδιο προς την κατεύθυνση που περπατούσατε. Ξεκίνησα με Dollar General $ 1,00 ηλιακά φώτα
DIY Χριστουγεννιάτικα φώτα μελοποιημένα - Χορογραφημένα φώτα σπιτιού: 15 βήματα (με εικόνες)
DIY Χριστουγεννιάτικα φώτα σε μουσική - Χορογραφημένα φώτα σπιτιού: DIY Χριστουγεννιάτικα φώτα σε μουσική - Χορογραφημένα φώτα σπιτιού Αυτό ΔΕΝ είναι ένα αρχικό DIY. Θα χρειαστείτε μια σταθερή γνώση των ηλεκτρονικών, της κυκλικότητας, του BASIC προγραμματισμού και των γενικών έξυπνων για την ηλεκτρική ασφάλεια. Αυτό το DIY είναι για ένα έμπειρο άτομο, οπότε