- Απαιτούμενα στοιχεία:
- Επεξήγηση εργασίας:
- Επεξήγηση κυκλώματος:
- Επεξήγηση προγραμματισμού:
- Σχεδιασμός κυκλώματος και PCB χρησιμοποιώντας το EasyEDA:
- Υπολογισμός και παραγγελία δειγμάτων στο διαδίκτυο:
Ο σεισμός είναι μια απρόβλεπτη φυσική καταστροφή που προκαλεί ζημιές σε ζωές και περιουσίες. Συμβαίνει ξαφνικά και δεν μπορούμε να το σταματήσουμε, αλλά μπορούμε να το προειδοποιήσουμε. Στη σημερινή εποχή, υπάρχουν πολλές τεχνολογίες που μπορούν να χρησιμοποιηθούν για την ανίχνευση των μικρών κουνήσεων και χτυπημάτων, έτσι ώστε να μπορούμε να λαμβάνουμε προφυλάξεις πριν από μερικές σημαντικές δονήσεις στη γη. Εδώ χρησιμοποιούμε το Επιταχυνσιόμετρο ADXL335 για να ανιχνεύσουμε τις προ-σεισμικές δονήσεις. Το Accelerometer ADXL335 είναι ιδιαίτερα ευαίσθητο σε κουνήματα και δονήσεις μαζί με τους τρεις άξονες. Εδώ χτίζουμε έναν ανιχνευτή σεισμού με βάση το Arduino χρησιμοποιώντας το Accelerometer.
Κατασκευάζουμε εδώ αυτόν τον ανιχνευτή σεισμού ως Arduino Shield στο PCB και θα δείξουμε επίσης το γράφημα δονήσεων στον υπολογιστή χρησιμοποιώντας την Επεξεργασία.
Απαιτούμενα στοιχεία:
- Arduino UNO
- Επιταχυνσιόμετρο ADXL335
- LCD 16x2
- Βομβητής
- Τρανζίστορ BC547
- Αντιστάσεις 1k
- 10Κ ΔΟΧΕΙΟ
- LED
- Τροφοδοτικό 9v / 12v
- Το Berg κολλά αρσενικό / θηλυκό
Επιταχυνσιόμετρο:
Καρφίτσα Περιγραφή του επιταχυνσιόμετρου:
- Η παροχή Vcc 5 volt πρέπει να συνδεθεί σε αυτόν τον πείρο.
- X-OUT Αυτός ο πείρος δίνει μια αναλογική έξοδο σε κατεύθυνση x
- Y-OUT Αυτός ο ακροδέκτης δίνει αναλογική έξοδο προς την κατεύθυνση y
- Z-OUT Αυτή η ακίδα δίνει αναλογική έξοδο σε κατεύθυνση z
- Γείωση GND
- ST Αυτός ο πείρος χρησιμοποιείται για καθορισμένη ευαισθησία του αισθητήρα
Ελέγξτε επίσης τα άλλα έργα μας χρησιμοποιώντας το Επιταχυνσιόμετρο:
- Παιχνίδι Ping Pong χρησιμοποιώντας το Arduino
- Ρομπότ ελεγχόμενο με χειρονομία βάσει επιταχυνσιόμετρου.
- Σύστημα ειδοποίησης ατυχήματος με βάση το Arduino χρησιμοποιώντας GPS, GSM και Accelerometer
Επεξήγηση εργασίας:
Η εργασία αυτού του ανιχνευτή σεισμού είναι απλή. Όπως αναφέραμε νωρίτερα ότι έχουμε χρησιμοποιήσει το Επιταχυνσιόμετρο για την ανίχνευση σεισμικών δονήσεων κατά μήκος οποιουδήποτε από τους τρεις άξονες, έτσι ώστε όποτε συμβαίνουν δονήσεις το επιταχυνσιόμετρο να ανιχνεύει τις δονήσεις και να τις μετατρέπει σε ισοδύναμη τιμή ADC. Στη συνέχεια, αυτές οι τιμές ADC διαβάζονται από τον Arduino και εμφανίζονται πάνω από την οθόνη LCD 16x2. Έχουμε επίσης δείξει αυτές τις τιμές στο Graph χρησιμοποιώντας την Επεξεργασία. Μάθετε περισσότερα για το Επιταχυνσιόμετρο, ακολουθώντας τα άλλα έργα μας στο Επιταχυνσιόμετρο εδώ.
Πρώτα πρέπει να βαθμονομήσουμε το Επιταχυνσιόμετρο λαμβάνοντας τα δείγματα των γύρω δονήσεων κάθε φορά που το Arduino Power ανεβαίνει. Τότε πρέπει να αφαιρέσουμε αυτές τις τιμές δείγματος από τις πραγματικές αναγνώσεις για να πάρουμε τις πραγματικές αναγνώσεις. Αυτή η βαθμονόμηση είναι απαραίτητη, ώστε να μην εμφανίζει ειδοποιήσεις σχετικά με τις φυσιολογικές δονήσεις της. Αφού βρήκε πραγματικές αναγνώσεις, το Arduino συγκρίνει αυτές τις τιμές με προκαθορισμένες μέγιστες και ελάχιστες τιμές. Εάν το Arduino εντοπίσει οποιεσδήποτε αλλαγές οι τιμές είναι περισσότερο ή λιγότερο από τις προκαθορισμένες τιμές οποιουδήποτε άξονα και στις δύο κατευθύνσεις (αρνητικές και θετικές), τότε το Arduino ενεργοποιεί τον βομβητή και δείχνει την κατάσταση ειδοποίησης πάνω από την οθόνη LCD 16x2 και ένα LED είναι επίσης ενεργοποιημένο. Μπορούμε να προσαρμόσουμε την ευαισθησία του ανιχνευτή σεισμού αλλάζοντας τις προκαθορισμένες τιμές στον κώδικα Arduino.
Το βίντεο επίδειξης και ο κωδικός Arduino δίνονται στο τέλος του άρθρου.
Επεξήγηση κυκλώματος:
Κύκλωμα αυτού του ανιχνευτή σεισμού Arduino Shield PCBείναι επίσης απλό. Σε αυτό το έργο, χρησιμοποιήσαμε το Arduino που διαβάζει την αναλογική τάση του επιταχυνσιόμετρου και τα μετατρέπει σε ψηφιακές τιμές. Το Arduino οδηγεί επίσης το buzzer, LED, 16x2 LCD και υπολογίζει και συγκρίνει τις τιμές και λαμβάνει την κατάλληλη ενέργεια. Επόμενο μέρος είναι το Επιταχυνσιόμετρο που ανιχνεύει τους κραδασμούς της γης και παράγει αναλογικές τάσεις σε 3 άξονες (X, Y και Z). Η οθόνη LCD χρησιμοποιείται για την εμφάνιση των τιμών του άξονα X, Y και Z και για την εμφάνιση μηνύματος συναγερμού. Αυτή η οθόνη LCD είναι συνδεδεμένη στο Arduino σε λειτουργία 4-bit. Οι ακροδέκτες RS, GND και EN συνδέονται άμεσα με 9, GND και 8 ακίδες Arduino και οι υπόλοιπες 4 ακίδες δεδομένων LCD, δηλαδή οι D4, D5, D6 και D7 συνδέονται απευθείας με τον ψηφιακό ακροδέκτη 7, 6, 5 και 4 του Arduino. Ο βομβητής συνδέεται με τον πείρο 12 του Arduino μέσω ενός τρανζίστορ NPN BC547. Ένα δοχείο 10k χρησιμοποιείται επίσης για τον έλεγχο της φωτεινότητας της οθόνης LCD.
Επεξήγηση προγραμματισμού:
Σε αυτόν τον ανιχνευτή σεισμού Arduino Shield, έχουμε φτιάξει δύο κωδικούς: ένας για τον Arduino να εντοπίσει έναν σεισμό και ένας άλλος για την επεξεργασία IDE για να σχεδιάσει τις δονήσεις σεισμού πάνω από το γράφημα στον υπολογιστή. Θα μάθουμε και τους δύο κωδικούς έναν προς έναν:
Κωδικός Arduino:
Πρώτα απ 'όλα, βαθμονομούμε το επιταχυνσιόμετρο σε σχέση με την επιφάνεια τοποθέτησής του, έτσι ώστε να μην εμφανίζει ειδοποιήσεις σχετικά με τις φυσιολογικές δονήσεις του. Σε αυτήν τη βαθμονόμηση, παίρνουμε μερικά δείγματα και στη συνέχεια παίρνουμε έναν μέσο όρο από αυτά και αποθηκεύουμε σε μια μεταβλητή.
για (int i = 0; i
Τώρα όποτε το Επιταχυνσιόμετρο λαμβάνει αναγνώσεις, θα αφαιρούμε αυτές τις τιμές δείγματος από τις μετρήσεις, ώστε να μπορεί να αγνοεί τις δονήσεις του περιβάλλοντος.
int value1 = analogRead (x); // ανάγνωση x out int value2 = analogRead (y); // ανάγνωση y out int value3 = analogRead (z); // ανάγνωση z out int xValue = xsample-value1; // εύρεση αλλαγής στο x int yValue = ysample-value2; // εύρεση αλλαγής στο y int zValue = zsample-value3; // εύρεση αλλαγής σε z / * αλλαγή της αξίας των αξόνων x, y και z πάνω από lcd * / lcd.setCursor (0,1); lcd.print (zValue); lcd.setCursor (6,1); lcd.print (yValue); lcd.setCursor (12,1); lcd.print (zValue); καθυστέρηση (100)
Στη συνέχεια, το Arduino συγκρίνει αυτές τις βαθμονομημένες (αφαιρούμενες) τιμές με προκαθορισμένα όρια. Και αναλάβετε δράση ανάλογα. Εάν οι τιμές είναι υψηλότερες από τις προκαθορισμένες τιμές, τότε θα ηχήσει τον βομβητή και θα σχεδιάσει το γράφημα δόνησης στον υπολογιστή χρησιμοποιώντας την Επεξεργασία.
/ * σύγκριση αλλαγής με προκαθορισμένα όρια * / if (xValue <minVal - xValue> maxVal - yValue <minVal - yValue> maxVal - zValue <minVal - zValue> maxVal) {if (buz == 0) start = χιλιοστά (); // timer start buz = 1; // buzzer / led flag ενεργοποιημένη} αλλιώς εάν (buz == 1) // buzzer flag ενεργοποιημένη, στη συνέχεια ειδοποιώντας σεισμό {lcd.setCursor (0,0); lcd.print ("Σεισμός συναγερμού"); if (millis ()> = start + buzTime) buz = 0; }
Κωδικός επεξεργασίας:
Παρακάτω επισυνάπτεται ο Κώδικας επεξεργασίας, μπορείτε να κατεβάσετε τον κωδικό από τον παρακάτω σύνδεσμο:
Κώδικας επεξεργασίας ανιχνευτή σεισμού
Έχουμε σχεδιάσει ένα γράφημα χρησιμοποιώντας Επεξεργασία, για δονήσεις σεισμού γης, στο οποίο ορίσαμε το μέγεθος του παραθύρου, τις μονάδες, το μέγεθος της γραμματοσειράς, το φόντο, την ανάγνωση και την εμφάνιση σειριακών θυρών, ανοιχτή επιλεγμένη σειριακή θύρα κ.λπ.
// ορίστε το μέγεθος παραθύρου: και μέγεθος γραμματοσειράς f6 = createFont ("Arial", 6, true); f8 = createFont ("Arial", 8, true); f10 = createFont ("Arial", 10, true); f12 = createFont ("Arial", 12, true); f24 = createFont ("Arial", 24, true); μέγεθος (1200, 700) // Λίστα όλων των διαθέσιμων σειριακών θυρών println (Serial.list ()); myPort = νέο σειριακό (αυτό, "COM43", 9600); println (myPort); myPort.bufferUntil ('\ n'); φόντο (80)
Στην παρακάτω συνάρτηση, έχουμε λάβει δεδομένα από τη σειριακή θύρα και εξάγουμε τα απαιτούμενα δεδομένα και στη συνέχεια τα χαρτογραφήσαμε με το μέγεθος του γραφήματος.
// εξαγωγή όλων των απαιτούμενων τιμών και των τριών αξόνων: int l1 = inString.indexOf ("x =") + 2; String temp1 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("y =") + 2; String temp2 = inString.substring (l1, l1 + 3); l1 = inString.indexOf ("z =") + 2; String temp3 = inString.substring (l1, l1 + 3); // αντιστοίχιση τιμής x, y και z με διαστάσεις γραφήματος float inByte1 = float (temp1 + (char) 9); inByte1 = χάρτης (inByte1, -80,80, 0, ύψος-80); float inByte2 = float (temp2 + (char) 9); inByte2 = χάρτης (inByte2, -80,80, 0, ύψος-80); float inByte3 = float (temp3 + (char) 9); inByte3 = χάρτης (inByte3, -80,80, 0, ύψος-80); float x = χάρτης (xPos, 0,1120,40, πλάτος-40);
Μετά από αυτό, έχουμε σχεδιάσει το χώρο μονάδας, τα μέγιστα και ελάχιστα όρια, τιμές των αξόνων x, y και z
// σχεδίαση παραθύρου γραφήματος, εγκεφαλικό επεισόδιο Βάρος (2); εγκεφαλικό επεισόδιο (175) Γραμμή (0,0,0,100); textFont (f24); πλήρωση (0,00,255); textAlign (ΔΕΞΙΑ); xmargin ("EarthQuake Graph By Circuit Digest", 200.100); γεμίστε (100); εγκεφαλικό βάρος (100) γραμμή (1050,80,1200,80);………………
Μετά από αυτό σχεδιάζουμε τις τιμές πάνω από το γράφημα χρησιμοποιώντας 3 διαφορετικά χρώματα όπως το μπλε για την τιμή του άξονα x, το πράσινο χρώμα για τον άξονα y και το z αντιπροσωπεύεται από το κόκκινο χρώμα.
εγκεφαλικό επεισόδιο (0,0,255) εάν (y1 == 0) y1 = ύψος-σεByte1-shift; γραμμή (x, y1, x + 2, ύψος-σε byte1-shift); y1 = ύψος-σε byte1-shift; εγκεφαλικό επεισόδιο (0,255,0) εάν (y2 == 0) y2 = ύψος-σεByte2-shift; γραμμή (x, y2, x + 2, ύψος-σε byte2-shift); y2 = ύψος-σε byte2-shift; εγκεφαλικό επεισόδιο (255,0,0) εάν (y2 == 0) y3 = ύψος-σεByte3-shift; γραμμή (x, y3, x + 2, ύψος σε byte3-shift); y3 = ύψος-σε byte3-shift;
Επίσης, μάθετε περισσότερα σχετικά με την επεξεργασία μέσω άλλων έργων επεξεργασίας
Σχεδιασμός κυκλώματος και PCB χρησιμοποιώντας το EasyEDA:
Η EasyEDA δεν είναι μόνο η λύση μίας στάσης για σχηματική σύλληψη, προσομοίωση κυκλώματος και σχεδίαση PCB, αλλά προσφέρουν επίσης χαμηλού κόστους πρωτότυπο PCB και υπηρεσία Sourcing Components. Πρόσφατα ξεκίνησαν την υπηρεσία προμήθειας συστατικών όπου διαθέτουν μεγάλο απόθεμα ηλεκτρονικών εξαρτημάτων και οι χρήστες μπορούν να παραγγείλουν τα απαιτούμενα συστατικά τους μαζί με την παραγγελία PCB.
Ενώ σχεδιάζετε τα κυκλώματα και τα PCB σας, μπορείτε επίσης να κάνετε τα σχέδια κυκλωμάτων και PCB σας δημόσια, ώστε άλλοι χρήστες να μπορούν να τα αντιγράψουν ή να τα επεξεργαστούν και να επωφεληθούν από εκεί, έχουμε επίσης δημοσιοποιήσει ολόκληρες τις διατάξεις κυκλωμάτων και PCB για αυτήν την ασπίδα δείκτη σεισμού για Arduino UNO, ελέγξτε τον παρακάτω σύνδεσμο:
easyeda.com/circuitdigest/EarthQuake_Detector-380c29e583b14de8b407d06ab0bbf70f
Παρακάτω είναι το Στιγμιότυπο του κορυφαίου επιπέδου διάταξης PCB από το EasyEDA, μπορείτε να δείτε οποιοδήποτε επίπεδο (Top, Bottom, Topsilk, bottomsilk κ.λπ.) του PCB επιλέγοντας το επίπεδο από το παράθυρο «Layers».
Μπορείτε επίσης να δείτε την προβολή φωτογραφιών του PCB χρησιμοποιώντας το EasyEDA:
Υπολογισμός και παραγγελία δειγμάτων στο διαδίκτυο:
Αφού ολοκληρώσετε τη σχεδίαση του PCB, μπορείτε να κάνετε κλικ στο εικονίδιο της εξόδου Κατασκευής , η οποία θα σας μεταφέρει στη σελίδα παραγγελίας PCB. Εδώ μπορείτε να δείτε το PCB σας στο Gerber Viewer ή να κατεβάσετε αρχεία Gerber του PCB σας. Εδώ μπορείτε να επιλέξετε τον αριθμό των PCB που θέλετε να παραγγείλετε, πόσα στρώματα χαλκού χρειάζεστε, το πάχος PCB, το βάρος του χαλκού, ακόμη και το χρώμα PCB. Αφού ορίσετε όλες τις επιλογές, κάντε κλικ στο "Αποθήκευση στο καλάθι" και ολοκληρώστε την παραγγελία σας. Πρόσφατα έχουν μειώσει σημαντικά τους ρυθμούς PCB τους και τώρα μπορείτε να παραγγείλετε 10 τεμάχια PCB 2 επιπέδων με μέγεθος 10cm x 10cm μόνο για $ 2.
Εδώ είναι τα PCB που πήρα από την EasyEDA:
Ακολουθούν οι φωτογραφίες της τελικής ασπίδας μετά τη συγκόλληση των εξαρτημάτων στο PCB: