Πίνακας περιεχομένων:

Ανιχνευτής επαγωγής παλμών με βάση το Arduino - LC -Trap: 3 Βήματα
Ανιχνευτής επαγωγής παλμών με βάση το Arduino - LC -Trap: 3 Βήματα

Βίντεο: Ανιχνευτής επαγωγής παλμών με βάση το Arduino - LC -Trap: 3 Βήματα

Βίντεο: Ανιχνευτής επαγωγής παλμών με βάση το Arduino - LC -Trap: 3 Βήματα
Βίντεο: παλμοτροφοδοτικο [κύκλωμα] 2024, Ιούλιος
Anonim
Ανιχνευτής επαγωγής παλμών με βάση το Arduino - LC -Trap
Ανιχνευτής επαγωγής παλμών με βάση το Arduino - LC -Trap

Ενώ αναζητούσα περαιτέρω ιδέες για έναν απλό ανιχνευτή μετάλλων Ardino Pulse Induction με μόνο μία τάση τροφοδοσίας, βρήκα την αρχική σελίδα του Teemo:

www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit

Δημιούργησε έναν απλό ανιχνευτή επαγωγής παλμών χρησιμοποιώντας την αρχή LC-Trap. Παρόμοια κυκλώματα αναρτήθηκαν εδώ στο Instructable by TechKiwiGadgets. Εκτιμάται ότι το κύκλωμα Teemo χρησιμοποιεί τους εσωτερικούς συγκριτές του μικροελεγκτή PIC, απαιτώντας έτσι λιγότερα εξωτερικά εξαρτήματα

Έτσι, μου ήρθε η πρόκληση να χρησιμοποιήσω το Arduino αντί για PIC-Controller για αυτό το σχηματικό σχήμα και να δω πόσο μακριά μπορώ να φτάσω.

Βήμα 1: Σχηματικό

Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός

Το σχηματικό Arduino είναι λίγο πιο περίπλοκο καθώς το Arduino δεν επιτρέπει τη δρομολόγηση ενός εσωτερικού αναλογικού σήματος στην είσοδο του συγκριτή. Αυτό προσθέτει δύο στοιχεία για έναν απλό διανομέα τάσης. Αυτό οδηγεί σε έναν σχεδιασμό με 12 εξωτερικά εξαρτήματα (αφήνοντας έξω το ηχείο και την οθόνη LCD 16x2), σε σύγκριση με 9 του σχεδιασμού Flip Coil.

Η αρχή λειτουργίας του σχηματικού εξηγείται πολύ καλά στην ιστοσελίδα του Teemo. Βασικά το πηνίο τροφοδοτείται και στη συνέχεια απενεργοποιείται. Μετά την απενεργοποίηση, το πηνίο και ο συμπυκνωτής παράλληλα θα δημιουργήσουν μια απόσβεση ταλάντωσης. Η συχνότητα και η αποσύνθεση της ταλάντωσης επηρεάζεται από μέταλλο κοντά στο πηνίο. Για περισσότερες λεπτομέρειες του κυκλώματος, δείτε τη σελίδα του Teemo ή του TechKiwi εδώ στο Instructables.

Όπως και στον ανιχνευτή επαγωγής σφυγμού Flip Coil, χρησιμοποιώ τον εσωτερικό συγκριτή και τη δυνατότητα να ενεργοποιήσω μια διακοπή για να λάβω το σήμα από το πηνίο.

Σε αυτήν την περίπτωση θα έχω πολλαπλές διακοπές καθώς η τάση ταλαντεύεται γύρω από την τάση αναφοράς που έχει οριστεί στο συγκριτικό. Στο τέλος της ταλάντωσης, η τάση στο πηνίο θα εγκατασταθεί γύρω στα 5V, αλλά όχι ακριβώς. Επέλεξα έναν διανομέα τάσης με 200 Ohm και 10k Ohm για να αποκτήσω τάση περίπου 4,9 βολτ

Για να μειώσω την πολυπλοκότητα των διαγραμμάτων, χρησιμοποίησα τα D4 και D5 για την παροχή GND (για την αντίσταση 10k) και 5V (για την αντίσταση 220 Ohm). Οι ακίδες ρυθμίζονται κατά την εκκίνηση του ανιχνευτή.

Σε αυτήν την έκδοση, πρόσθεσα μια σύνδεση ηχείων χρησιμοποιώντας τον έλεγχο έντασης πολλών τόνων, όπως περιγράφεται στο Πώς να προγραμματίσετε έναν ανιχνευτή μετάλλων με βάση το Arduino. Αυτό επιτρέπει τη διαφοροποίηση των ιδιοτήτων του στόχου καθώς και την αίσθηση της ισχύος του σήματος. Το ηχείο μπορεί να συνδεθεί με την πρόσθετη κεφαλίδα 5 ακίδων. Οι υπόλοιπες 3 ακίδες της κεφαλίδας θα χρησιμοποιηθούν για κουμπιά (προς εφαρμογή).

Βήμα 2: Προγραμματισμός

Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός
Προγραμματισμός

Τώρα που σχεδιάστηκε το κύκλωμα και κατασκευάστηκε το πρωτότυπο, ήρθε η ώρα να βρεθεί μια κατάλληλη προσέγγιση για την ανίχνευση μετάλλου.

1. Μετρώντας παλμούς

Η καταμέτρηση των παλμών της ταλάντωσης μέχρι να αποσυντεθεί πλήρως είναι μια ιδέα.

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

Κάθε κύμα της ταλάντωσης δημιουργεί δύο διακοπές. Ένα ενώ κατεβαίνει και ένα ανεβαίνει πίσω. Για να ρυθμίσετε την τάση αναφοράς ακριβώς στην κορυφή ενός κύματος ταλάντωσης, ο χρόνος μεταξύ κατεβάσματος και ανόδου πρέπει να είναι όσο το δυνατόν μικρότερος (δείτε την εικόνα). Δυστυχώς εδώ η επιβάρυνση του περιβάλλοντος Arduino δημιουργεί προβλήματα.

Κάθε σκανδάλη των διακοπών καλεί για αυτόν τον κωδικό:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // αποθήκευση τελευταίας τιμής Toggle0 = TCNT1; // λάβετε νέα τιμή}

Αυτός ο κώδικας διαρκεί λίγο (αν θυμάμαι καλά, περίπου 78 κύκλοι οδηγιών μάγισσα είναι περίπου 5 μικροδευτερόλεπτα @ 16MHz). Επομένως, η ελάχιστη ανιχνεύσιμη απόσταση μεταξύ δύο παλμών είναι ακριβώς ο χρόνος που χρειάζεται αυτός ο κωδικός. Εάν ο χρόνος μεταξύ δύο ενεργοποιητών γίνει μικρότερος (δείτε την εικόνα), δεν θα εντοπιστεί, καθώς ο κώδικας εκτελείται πλήρως πριν από την ανίχνευση μιας δεύτερης διακοπής

Αυτό οδηγεί σε απώλεια ευαισθησίας. Ταυτόχρονα, παρατήρησα, ότι η απόσβεση των ταλαντώσεων είναι πολύ ευαίσθητη σε οποιεσδήποτε εξωτερικές επιδράσεις, καθιστώντας έτσι αυτήν την προσέγγιση συνολικά λίγο δύσκολη.

2. Μέτρηση της συχνότητας

Ένας άλλος τρόπος ανίχνευσης μετάλλου είναι η μέτρηση της συχνότητας της ταλάντωσης. Αυτό έχει ένα μεγάλο πλεονέκτημα σε σύγκριση με τη μέτρηση της απόσβεσης της ταλάντωσης καθώς η αλλαγή στη συχνότητα επιτρέπει τη διάκριση του μετάλλου. Σε περίπτωση που υπάρχει σιδηρούχο υλικό κοντά στο πηνίο, η συχνότητα θα επιβραδυνθεί, σε περίπτωση που υπάρχει πολύτιμο μέταλλο κοντά στο πηνίο, η συχνότητα θα αυξηθεί.

Ο ευκολότερος τρόπος για να μετρήσετε τη συχνότητα είναι να μετρήσετε την ποσότητα των παλμών αφού αρχίσει η ταλάντωση των πηνίων. Το χρονικό διάστημα μεταξύ της έναρξης και του τελευταίου παλμού διαιρούμενο με τη συνολική ποσότητα των μετρημένων παλμών είναι η συχνότητα. Δυστυχώς οι τελευταίες ταλαντώσεις είναι αρκετά ασύμμετρες. Καθώς η παρουσία του μετάλλου επηρεάζει επίσης τη φθορά της ταλάντωσης, οι τελευταίες ταλαντώσεις είναι ακόμη πιο ασύμμετρες, οι ενδείξεις είναι δύσκολο να ερμηνευτούν. Στην εικόνα αυτό φαίνεται με τη διασταύρωση 1 προς 1’και 2 με 2’.

Ένας καλύτερος τρόπος είναι συνεπώς η χρήση μερικών παλαιότερων παλμών για τη μέτρηση της συχνότητας. Κατά τη δοκιμή, με ενδιαφέρον διαπίστωσα ότι ορισμένοι παλμοί είναι πιο ευαίσθητοι από άλλους. Κάπου στα 2/3 των ταλαντώσεων είναι ένα καλό σημείο για να αποκτήσετε τα δεδομένα.

Επεξεργασία των δεδομένων

Ο αρχικός κώδικας βασίζεται στον βρόχο () που απαιτεί μια λειτουργία παλμού () για να κάνει το χρονισμό του πηνίου. Ενώ τα αποτελέσματα δεν ήταν άσχημα, είχα την επιθυμία να βελτιώσω το χρονοδιάγραμμα. Για να το κάνω αυτό, δημιούργησα έναν πλήρη χρονομετρητή κώδικα, ο οποίος οδήγησε στο ξεχωριστό instuctable Πώς να προγραμματίσετε έναν ανιχνευτή μετάλλων βάσει Arduino. Αυτό το διδακτικό εξηγεί λεπτομερώς το χρονοδιάγραμμα, την τροφοδοσία δεδομένων LCD κ.λπ

1. Η οθόνη LCD

Η πρώτη προσέγγιση ήταν η μέτρηση 10 παλμών και στη συνέχεια η εμφάνιση των τιμών στην οθόνη LCD. Όπως διαπίστωσα ότι η μεταφορά δεδομένων I2C ήταν πολύ αργή, άλλαξα σε κώδικα για να ενημερώσω μόνο έναν χαρακτήρα ανά παλμό.

2. Προσέγγιση ελάχιστης αξίας

Για να βελτιώσω περαιτέρω τη σταθερότητα των ενδείξεων, έγραψα μια ρουτίνα σειριακής εξόδου για να έχω μια καλύτερη αίσθηση για τα μετρημένα δεδομένα. Εκεί έγινε φανερό, ότι αν και οι περισσότερες από τις αναγνώσεις ήταν κάπως σταθερές, κάποιες όχι! Ορισμένες αναγνώσεις του «ίδιου» παλμού ταλάντωσης ήταν τόσο μακριά που θα κατέστρεφε κάθε προσέγγιση για να αναλύσουμε μια αλλαγή συχνότητας.

Για να αντισταθμίσω αυτό, δημιούργησα ένα "περίγραμμα" μέσα στο οποίο η αξία ήταν αξιόπιστη. I. ε. όταν οι τιμές απέχουν περισσότερο από 35 κύκλους του χρονοδιακόπτη1 μακριά από την αναμενόμενη τιμή, αυτές οι τιμές αγνοήθηκαν (εξηγούνται λεπτομερώς στο «Πώς να προγραμματίσετε έναν ανιχνευτή μετάλλων βάσει Arduino»)

Αυτή η προσέγγιση αποδείχθηκε πολύ σταθερή.

3. Η τάση

Ο αρχικός σχεδιασμός του Teemo τροφοδοτείται κάτω από 5 βολτ. Καθώς οι υποθέσεις μου ήταν "περισσότερα βολτ = περισσότερη ισχύς = περισσότερη ευαισθησία" τροφοδοτούσα τη μονάδα στην αρχή με 12V. Αυτό είχε ως αποτέλεσμα τη θέρμανση του MOSFET. Αυτή η θέρμανση οδήγησε στη συνέχεια σε μια γενική μετατόπιση των μετρημένων τιμών, οδηγώντας σε συχνή επανα-εξισορρόπηση του ανιχνευτή. Μειώνοντας την τάση στα 5V, η παραγωγή θερμότητας του MOSFET θα μπορούσε να ελαχιστοποιηθεί σε επίπεδο όπου δεν παρατηρήθηκε σχεδόν καμία μετατόπιση των ενδείξεων. Αυτό έκανε το κύκλωμα ακόμη πιο απλό, καθώς ο ενσωματωμένος ρυθμιστής τάσης του Arduino δεν χρειαζόταν πλέον.

Για ένα MOSFET επέλεξα αρχικά το IRL540. Αυτό το MOSFET είναι συμβατό με το λογικό επίπεδο, αλλά έχει μέγιστη ονομαστική τάση από 100V. Wasλπιζα για καλύτερη απόδοση αλλάζοντας σε IRL640 με ονομασίες 200V. Δυστυχώς τα αποτελέσματα ήταν τα ίδια. Έτσι, είτε ένα IRL540 είτε ένα IRL640 θα κάνουν τη δουλειά.

Βήμα 3: Τελικά αποτελέσματα

Τελικά Αποτελέσματα
Τελικά Αποτελέσματα
Τελικά Αποτελέσματα
Τελικά Αποτελέσματα
Τελικά Αποτελέσματα
Τελικά Αποτελέσματα

Το πλεονέκτημα του ανιχνευτή είναι ότι κάνει διάκριση μεταξύ πολύτιμου και σιδηρούχου υλικού. Το μειονέκτημα είναι ότι η ευαισθησία με αυτό το απλό σχηματικό δεν είναι τόσο καλή. Για να συγκρίνω την απόδοση χρησιμοποίησα τις ίδιες αναφορές με τον ανιχνευτή Flip-Coil. Πιθανότατα καλό για ορισμένους προσδιορισμούς, αλλά πιθανότατα απογοητευτικό για πραγματική αναζήτηση.

Εδώ ο αρχικός σχεδιασμός με τον ελεγκτή PIC μπορεί να είναι πιο ευαίσθητος καθώς λειτουργεί σε 32MHz αντί για τα 16MHz του therfor παρέχοντας υψηλότερη ανάλυση για τον εντοπισμό μεταβολών στη συχνότητα.

Τα αποτελέσματα επιτεύχθηκαν χρησιμοποιώντας το πηνίο με 48 στροφές @ 100mm.

Όπως πάντα, ανοιχτό για ανατροφοδότηση

Συνιστάται: