Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Αυτό είναι ένα απλό έργο που ακολουθεί ή Αποφύγετε το Φως.
Έκανα αυτήν την προσομοίωση στο Proteus 8.6 pro. Απαιτούμενα συστατικά: -1) Arduino uno.
2) 3 LDR.
3) 2 Dc Gear Motors.4) One Servo.5) Τρεις αντιστάσεις 1k.6) μία H-Bridge l290D7) Διακόπτης on & off [για αλλαγή της κατάστασης του προγράμματος]
8) Μπαταρία 9v και 5v
Βήμα 1: Κώδικας Ardunio
Ο κώδικας Arduino τροποποιήθηκε λίγο -ημερομηνία 23 Φεβρουαρίου 2016]
Αυτός ο κώδικας σχολιάζεται πολύ δεν θέλω να εξηγήσω, αλλά αν χρειάζεστε βοήθεια, μπορείτε να επικοινωνήσετε μαζί μου στο ([email protected])
Σημείωση: -Χρησιμοποιώ δύο προϋποθέσεις σε αυτό το πρόγραμμα 1η για Light After.2η μία για αποφυγή φωτός.
Όσο πληρούνται αυτές οι προϋποθέσεις, το Robot θα ακολουθήσει ή θα αποφύγει το φως. [Αυτή είναι η ελάχιστη τιμή LDR που επιλέγω. Σε κανονικό φως, το εύρος είναι 80 έως 95 αλλά καθώς η έντασή του αυξάνεται όλο και περισσότερες τάσεις προκαλούνται από αυτό καθώς δουλεύει με την αρχή της διαίρεσης τάσης int a = 400. // Τιμή ανοχής]
Βήμα 2: Αρχεία Proteus
Για βιβλιοθήκη Arduino, κάντε λήψη από αυτόν τον σύνδεσμο
Βήμα 3: Πώς λειτουργεί το H-bridge σας
Το L293NE/SN754410 είναι μια πολύ βασική γέφυρα Η. Έχει δύο γέφυρες, μία στην αριστερή πλευρά του τσιπ και μία στη δεξιά, και μπορεί να ελέγξει 2 κινητήρες. Μπορεί να οδηγήσει έως 1 amp ρεύμα και να λειτουργεί μεταξύ 4,5V και 36V. Ο μικρός κινητήρας DC που χρησιμοποιείτε σε αυτό το εργαστήριο μπορεί να λειτουργήσει με ασφάλεια από χαμηλή τάση, οπότε αυτή η γέφυρα H θα λειτουργήσει μια χαρά. Η γέφυρα H έχει τις ακόλουθες ακίδες και χαρακτηριστικά: Η καρφίτσα 1 (1, 2EN) ενεργοποιεί και απενεργοποιεί τον κινητήρα μας είτε δίνει HIGH είτε LOWPin 2 (1A) είναι ένας λογικός πείρος για τον κινητήρα μας (η είσοδος είναι είτε Υ HIGHΗΛΗ είτε ΧΑΜΗΛΗ) Pin Το 3 (1Y) είναι για έναν από τους ακροδέκτες του κινητήρα Το pin 4-5 είναι για τη γείωση Το pin 6 (2Y) είναι για τον άλλο τερματικό του κινητήρα Το Pin 7 (2A) είναι ένας λογικός πείρος για τον κινητήρα μας (η είσοδος είναι είτε Υ HIGHΗΛΗ είτε ΧΑΜΗΛΗ) Pin 8 (VCC2) είναι η τροφοδοσία του κινητήρα μας, θα πρέπει να δοθεί η ονομαστική τάση του κινητήρα σας Το pin 9-11 δεν είναι συνδεδεμένο καθώς χρησιμοποιείτε μόνο έναν κινητήρα σε αυτό το εργαστήριο Το pin 12-13 είναι για τη γείωση Το pin 14-15 είναι μη συνδεδεμένο Το pin 16 (VCC1) είναι συνδεδεμένο με 5V. Πάνω είναι ένα διάγραμμα της γέφυρας Η και ποιοι πείροι κάνουν ό, τι στο παράδειγμά μας. Περιλαμβάνεται στο διάγραμμα ένας πίνακας αλήθειας που υποδεικνύει πώς θα λειτουργεί ο κινητήρας σύμφωνα με την κατάσταση των λογικών ακίδων (που έχουν οριστεί από το Arduino μας).
Σε αυτό το έργο, η καρφίτσα ενεργοποίησης συνδέεται με μια ψηφιακή ακίδα στο Arduino σας, ώστε να μπορείτε να την στείλετε είτε Υ HIGHΗΛΗ είτε ΧΑΜΗΛΗ και να ενεργοποιήσετε ή να απενεργοποιήσετε τον κινητήρα. Οι καρφίτσες λογικής κινητήρα συνδέονται επίσης με καθορισμένες ψηφιακές ακίδες στο Arduino σας, ώστε να μπορείτε να το στείλετε Υ HIGHΗΛΟ και ΧΑΜΗΛΟ για να γυρίσει ο κινητήρας προς μία κατεύθυνση ή ΧΑΜΗΛΟΣ και Υ HIGHΟΣ για να γυρίσει προς την άλλη κατεύθυνση. Η τάση τροφοδοσίας κινητήρα συνδέεται με την πηγή τάσης του κινητήρα, η οποία είναι συνήθως εξωτερική τροφοδοσία. Εάν ο κινητήρας σας μπορεί να λειτουργήσει σε 5V και λιγότερο από 500mA, μπορείτε να χρησιμοποιήσετε την έξοδο 5V του Arduino. Οι περισσότεροι κινητήρες απαιτούν υψηλότερη τάση και υψηλότερη παροχή ρεύματος από αυτό, οπότε θα χρειαστείτε εξωτερικό τροφοδοτικό.
Συνδέστε τον κινητήρα στη γέφυρα H Συνδέστε τον κινητήρα στη γέφυρα H, όπως φαίνεται στο δεύτερο σημείο της εικόνας.
Or, εάν χρησιμοποιείτε εξωτερικό τροφοδοτικό για το Arduino, μπορείτε να χρησιμοποιήσετε τον πείρο Vin.
Βήμα 4: Πώς λειτουργεί το LDR
Τώρα το πρώτο πράγμα που μπορεί να χρειαστεί περαιτέρω εξήγηση είναι η χρήση των αντιστάσεων που εξαρτώνται από το φως. Οι αντιστάσεις που εξαρτώνται από το φως (ή LDR) είναι αντιστάσεις των οποίων η τιμή αλλάζει ανάλογα με την ποσότητα φωτός περιβάλλοντος, αλλά πώς μπορούμε να ανιχνεύσουμε αντίσταση με το Arduino; Λοιπόν, δεν μπορείτε πραγματικά, ωστόσο μπορείτε να ανιχνεύσετε επίπεδα τάσης χρησιμοποιώντας τις αναλογικές ακίδες, οι οποίες μπορούν να μετρηθούν (σε βασική χρήση) μεταξύ 0-5V. Τώρα μπορεί να ρωτάτε "Λοιπόν, πώς μετατρέπουμε τις τιμές αντίστασης σε αλλαγές τάσης;", είναι απλό, κάνουμε ένα διαχωριστή τάσης. Ένας διαιρέτης τάσης λαμβάνει μια τάση και στη συνέχεια εξάγει ένα κλάσμα αυτής της τάσης ανάλογα με την τάση εισόδου και τον λόγο των δύο τιμών των αντιστάσεων που χρησιμοποιούνται. Η εξίσωση για την οποία είναι:
Τάση εξόδου = Τάση εισόδου * (R2 / (R1 + R2)) Όπου R1 είναι η τιμή της πρώτης αντίστασης και R2 είναι η τιμή της δεύτερης.
Τώρα αυτό εγείρει ακόμα το ερώτημα "Αλλά ποιες αξίες αντίστασης έχει το LDR;", καλή ερώτηση. Όσο λιγότερη ποσότητα φωτός περιβάλλοντος τόσο μεγαλύτερη αντίσταση, τόσο περισσότερο φως περιβάλλοντος σημαίνει χαμηλότερη αντίσταση. Τώρα για τα συγκεκριμένα LDR χρησιμοποίησα το εύρος αντίστασής τους ήταν από 200 - 10 κιλά ωμ, αλλά αυτό αλλάζει για διαφορετικά, οπότε φροντίστε να αναζητήσετε από πού τα αγοράσατε και προσπαθήστε να βρείτε ένα φύλλο δεδομένων ή κάτι τέτοιο. Τώρα σε αυτό Η περίπτωση R1 είναι στην πραγματικότητα το LDR μας, οπότε ας επαναφέρουμε αυτήν την εξίσωση και κάνουμε κάποια μαθηματική μαγεία (μαθηματική ηλεκτρική μαγεία). Τώρα πρέπει πρώτα να μετατρέψουμε αυτές τις τιμές κιλού ωμ σε ωμ: 200 κιλά-ωμ = 200, 000 ωμ 10 kilo-ohms = 10, 000 ohms Έτσι, για να βρούμε ποια είναι η τάση εξόδου όταν είμαστε σε μαύρο χρώμα, συνδέουμε τους ακόλουθους αριθμούς: 5 * (10000 / (200000 + 10000)) Η είσοδος είναι 5V καθώς αυτό παίρνουμε από το Arduino. Τα παραπάνω δίνουν 0.24V (στρογγυλοποιούνται). Τώρα βρίσκουμε ποια είναι η τάση εξόδου σε μέγιστη φωτεινότητα χρησιμοποιώντας τους ακόλουθους αριθμούς: 5 * (10000 / (10000 + 10000)) Και αυτό μας δίνει ακριβώς 2,5V. Αυτές είναι λοιπόν οι τιμές τάσης που θα εισάγουμε στις αναλογικές ακίδες του Arduino, αλλά αυτές δεν είναι οι τιμές που θα εμφανιστούν στο πρόγραμμα, "Αλλά γιατί;" μπορείτε να ρωτήσετε. Το Arduino χρησιμοποιεί ένα αναλογικό σε ψηφιακό τσιπ που μετατρέπει την αναλογική τάση σε ψηφιακά δεδομένα που μπορούν να χρησιμοποιηθούν. Σε αντίθεση με τους ψηφιακούς ακροδέκτες στο Arduino που μπορούν να διαβάσουν μόνο Υ HIGHΗΛΗ ή ΧΑΜΗΛΗ κατάσταση 0 και 5V, οι αναλογικοί ακροδέκτες μπορούν να διαβάσουν από 0-5V και να το μετατρέψουν σε εύρος αριθμών 0-1023. Τώρα με κάποια ακόμη μαθηματική μαγεία Το μπορούμε πραγματικά να υπολογίσουμε ποιες τιμές θα διαβάσει το Arduino.
Επειδή αυτή θα είναι μια γραμμική συνάρτηση, μπορούμε να χρησιμοποιήσουμε τον ακόλουθο τύπο: Y = mX + C Πού; Y = Digitalηφιακή Τιμή Πού; m = κλίση, (άνοδος / εκτέλεση), (ψηφιακή τιμή / αναλογική τιμή) Πού; Γ σε μέγιστη φωτεινότητα θα είναι: 204,6 * 2,5 Που δίνει περίπου 511. Τώρα με δύο από αυτές που έχουν ρυθμιστεί σε δύο αναλογικούς πείρους μπορούμε να δημιουργήσουμε δύο ακέραιες μεταβλητές για να αποθηκεύσουμε τις τιμές τους δύο και να κάνουμε τελεστές σύγκρισης για να δούμε ποια έχει τη χαμηλότερη τιμή, στρέφοντας το ρομπότ προς αυτή την κατεύθυνση.