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

Μετρητής πυκνωτή ATTiny85: 4 βήματα
Μετρητής πυκνωτή ATTiny85: 4 βήματα

Βίντεο: Μετρητής πυκνωτή ATTiny85: 4 βήματα

Βίντεο: Μετρητής πυκνωτή ATTiny85: 4 βήματα
Βίντεο: Arduino - PROJECT 10: Μετρητής Πυκνωτών σε σειριακή έξοδο 2024, Ιούλιος
Anonim
Μετρητής πυκνωτή ATTiny85
Μετρητής πυκνωτή ATTiny85
Μετρητής πυκνωτή ATTiny85
Μετρητής πυκνωτή ATTiny85

Αυτό το εκπαιδευτικό είναι για έναν μετρητή πυκνωτή που βασίζεται στο ATTiny85 με τις ακόλουθες δυνατότητες.

  • Βασισμένο στο ATTiny85 (DigiStamp)
  • SSD1306 OLED οθόνη 0,96"
  • Μέτρηση συχνότητας για πυκνωτές χαμηλής τιμής 1pF - 1uF χρησιμοποιώντας ταλαντωτή 555
  • Μέτρηση χρόνου φόρτισης για πυκνωτές υψηλής αξίας 1uF - 50000uF
  • 2 ξεχωριστές θύρες που χρησιμοποιούνται για τις μεθόδους ελαχιστοποίησης της στατικής χωρητικότητας
  • Δύο τιμές ρεύματος που χρησιμοποιούνται για το Χρόνο φόρτισης για ελαχιστοποίηση του χρόνου για μεγάλους πυκνωτές
  • Η μέθοδος 555 αυτο -μηδενικά κατά την εκκίνηση, μπορεί να επαναρυθμιστεί με το κουμπί
  • Μια γρήγορη δοκιμή που χρησιμοποιείται για την επιλογή της μεθόδου που πρέπει να χρησιμοποιηθεί για κάθε κύκλο μέτρησης.
  • Η ακρίβεια της μεθόδου φόρτισης μπορεί να βελτιωθεί με υποστήριξη για ρύθμιση συχνότητας ρολογιού OSCVAL

Βήμα 1: Σχηματική και Θεωρία

Σχηματική και Θεωρητική
Σχηματική και Θεωρητική

Το σχήμα δείχνει το ATTiny να οδηγεί την οθόνη OLED SSD1306 μέσω διεπαφής I2C. Τροφοδοτείται απευθείας από μπαταρία LiOn 300mAh και περιλαμβάνεται σημείο φόρτισης το οποίο μπορεί να χρησιμοποιηθεί με εξωτερικό φορτιστή συμβατό με LiOn.

Η πρώτη μέθοδος μέτρησης βασίζεται στη μέτρηση της συχνότητας ενός ταλαντωτή ελεύθερης λειτουργίας 555. Αυτό έχει μια συχνότητα βάσης που καθορίζεται από τις αντιστάσεις και έναν πυκνωτή ο οποίος θα πρέπει να είναι υψηλής ακρίβειας καθώς αυτό καθορίζει την ακρίβεια των μετρήσεων. Χρησιμοποίησα έναν πυκνωτή 820pF 1% πολυστυρενίου που είχα, αλλά μπορούν να χρησιμοποιηθούν άλλες τιμές περίπου 1nF. Η τιμή πρέπει να εισαχθεί στο λογισμικό μαζί με μια εκτίμηση τυχόν αδέσποτης χωρητικότητας (~ 20pF). Αυτό έδωσε μια συχνότητα βάσης περίπου 16KHz. Η έξοδος του 555 τροφοδοτείται με PB2 του ATTiny το οποίο είναι προγραμματισμένο ως μετρητής υλικού. Μετρώντας τον αριθμό σε διάστημα περίπου 1 δευτερολέπτου μπορεί να προσδιοριστεί η συχνότητα. Αυτό γίνεται κατά την εκκίνηση για να προσδιοριστεί η βασική συχνότητα. Όταν ένας υπό δοκιμή πυκνωτής προστίθεται παράλληλα με τον πυκνωτή βάσης, τότε η συχνότητα μειώνεται και όταν αυτό μετριέται και συγκρίνεται με τη βασική συχνότητα, τότε μπορεί να υπολογιστεί η τιμή της προστιθέμενης χωρητικότητας.

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

Η μέθοδος μπορεί να χρησιμοποιηθεί σε ένα αξιοπρεπές εύρος. Για να βελτιώσω το εύρος συγχρονίζω την περίοδο μέτρησης με την ανίχνευση ακμών των εισερχόμενων παλμών. Αυτό σημαίνει ότι ακόμη και χαμηλή συχνότητα ταλάντωσης όπως 12Hz (με πυκνωτή 1uF) μετρώνται με ακρίβεια.

Για μεγαλύτερους πυκνωτές το κύκλωμα είναι διαμορφωμένο ώστε να χρησιμοποιεί μια μέθοδο χρονισμού φόρτισης. Σε αυτό ο υπό δοκιμή πυκνωτής εκφορτίζεται για να διασφαλιστεί ότι ξεκινά από το 0 και στη συνέχεια φορτίζεται μέσω γνωστής αντίστασης από την τάση τροφοδοσίας. Ένα ADC στο ATTiny85 χρησιμοποιείται για την παρακολούθηση της τάσης του πυκνωτή και μετράται ο χρόνος μετάβασης από το 0% στο 50% της φόρτισης. Αυτό μπορεί να χρησιμοποιηθεί για τον υπολογισμό της χωρητικότητας. Καθώς η αναφορά για το ADC είναι επίσης η τάση τροφοδοσίας, τότε αυτό δεν επηρεάζει τη μέτρηση. Ωστόσο, το απόλυτο μέτρο του χρόνου που απαιτείται εξαρτάται από τη συχνότητα ρολογιού ATTiny85 και οι παραλλαγές σε αυτό επηρεάζουν το αποτέλεσμα. Μπορεί να χρησιμοποιηθεί μια διαδικασία για τη βελτίωση της ακρίβειας αυτού του ρολογιού χρησιμοποιώντας έναν καταχωρητή συντονισμού στο ATTiny85 και αυτό περιγράφεται αργότερα.

Για την εκφόρτιση του πυκνωτή στα 0V χρησιμοποιείται ένα n-channel MOSFET μαζί με αντίσταση χαμηλής τιμής για τον περιορισμό του ρεύματος εκφόρτισης. Αυτό σημαίνει ότι ακόμη και πυκνωτές μεγάλης αξίας μπορούν να αποφορτιστούν γρήγορα.

Για τη φόρτιση του πυκνωτή χρησιμοποιούνται 2 τιμές αντίστασης φόρτισης. Μια βασική τιμή δίνει λογικούς χρόνους φόρτισης για πυκνωτές από 1uF έως περίπου 50uF. Ένα MOSFET καναλιού χρησιμοποιείται για παράλληλο σε χαμηλότερη αντίσταση για να επιτρέψει τη μέτρηση πυκνωτών υψηλότερης τιμής σε ένα λογικό διάστημα. Οι επιλεγμένες τιμές δίνουν χρόνο μέτρησης περίπου 1 δευτερόλεπτο για πυκνωτές έως 2200uF και αναλογικά μεγαλύτερο για μεγαλύτερες τιμές. Στο κατώτερο άκρο της αξίας, η περίοδος μέτρησης πρέπει να διατηρείται αρκετά μακρά για να επιτρέψει τον προσδιορισμό της μετάβασης μέσω του κατωφλίου 50% να γίνει με αρκετή ακρίβεια. Ο ρυθμός δειγματοληψίας του ADC είναι περίπου 25uSec, οπότε μια ελάχιστη περίοδος 22mSec δίνει λογική ακρίβεια.

Καθώς το ATTiny έχει περιορισμένο IO (6 ακίδες), τότε η κατανομή αυτού του πόρου πρέπει να γίνει προσεκτικά. 2 ακίδες απαιτούνται για την οθόνη, 1 για την είσοδο του χρονοδιακόπτη, 1 για το ADC, 1 για τον έλεγχο εκφόρτισης και 1 για τον έλεγχο του ρυθμού φόρτισης. Wantedθελα ένα κουμπί ελέγχου για να επιτρέψω τον μηδενισμό σε οποιοδήποτε σημείο. Αυτό γίνεται με τροφοδοσία υψηλής ταχύτητας της γραμμής I2C SCL. Καθώς τα σήματα I2C είναι ανοιχτά, τότε δεν υπάρχει ηλεκτρική σύγκρουση επιτρέποντας στο κουμπί να τραβήξει αυτή τη γραμμή χαμηλά. Η οθόνη θα σταματήσει να λειτουργεί με το κουμπί πατημένο, αλλά αυτό δεν έχει καμία συνέπεια καθώς συνεχίζει όταν απελευθερώνεται το κουμπί.

Βήμα 2: Κατασκευή

Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή

Το έφτιαξα σε ένα μικρό 3D εκτυπωμένο κουτί 55mm x 55mm. Σχεδιασμένο για να χωράει τα 4 κύρια εξαρτήματα. ο πίνακας ATTiny85 DigiStamp, η οθόνη SSD1306, η μπαταρία LiOn και ένα μικρό κομμάτι πρωτότυπης πλακέτας που κρατά το χρονόμετρο 55 και τα ηλεκτρονικά στοιχεία ελέγχου φόρτισης.

Περίληψη στη διεύθυνση

Απαιτούνται ανταλλακτικά

  • Πίνακας ATTiny85 DigiStamp. Χρησιμοποίησα μια έκδοση με υποδοχή microUSB που χρησιμοποιείται για τη μεταφόρτωση υλικολογισμικού.
  • Οθόνη SSD1306 I2C OLED
  • Μπαταρία LiOn 300mAH
  • Μικρή λωρίδα πρωτοτύπου
  • Τσιπ χρονοδιακόπτη CMOS 555 (TLC555)
  • n-Channel MOSFET AO3400
  • p-Channel MOSFET AO3401
  • Αντιστάσεις 4R7, 470R, 22K, 2x33K
  • Πυκνωτές 4u7, 220u
  • Πυκνωτής ακριβείας 820pF 1%
  • Μικροδιακόπτης διαφάνειας
  • Κεφαλίδες 2 x 3 ακίδων για θύρα φόρτισης και θύρες μέτρησης
  • Κουμπί ώθησης
  • Περίφραξη
  • Συνδέστε σύρμα

Απαιτούνται εργαλεία

  • Κολλητήρι λεπτού σημείου
  • Τσιμπιδακι ΦΡΥΔΙΩΝ

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

Μπορείτε να κάνετε μερικές τροποποιήσεις εξοικονόμησης ενέργειας στην πλακέτα ATTiny πριν την τοποθέτηση, οι οποίες θα μειώσουν λίγο το ρεύμα και θα παρατείνουν τη διάρκεια ζωής της μπαταρίας.

www.instructables.com/Reducing-Sleep-Curre…

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

Βήμα 3: Λογισμικό

Λογισμικό για αυτόν τον μετρητή πυκνωτών μπορείτε να βρείτε στη διεύθυνση

github.com/roberttidey/CapacitorMeter

Αυτό είναι ένα σκίτσο με βάση το Arduino. Χρειάζεται βιβλιοθήκες για την οθόνη και I2C που μπορείτε να βρείτε στη διεύθυνση

github.com/roberttidey/ssd1306BB

github.com/roberttidey/I2CTinyBB

Αυτά είναι βελτιστοποιημένα ώστε το ATTiny να καταλαμβάνει ελάχιστη μνήμη. Η βιβλιοθήκη I2C είναι μια μέθοδος υψηλής ταχύτητας bit bang που επιτρέπει τη χρήση οποιωνδήποτε 2 ακίδων. Αυτό είναι σημαντικό καθώς οι μέθοδοι I2C που χρησιμοποιούν τη σειριακή θύρα χρησιμοποιούν το PB2, το οποίο έρχεται σε αντίθεση με τη χρήση του χρονομέτρου/του μετρητή που απαιτείται για τη μέτρηση της συχνότητας 555.

Το λογισμικό είναι δομημένο γύρω από ένα μηχάνημα κατάστασης το οποίο λαμβάνει τη μέτρηση μέσω ενός κύκλου καταστάσεων. Ένα ISR υποστηρίζει υπερχείλιση από τον μετρητή χρονοδιακόπτη για επέκταση του υλικού 8 bit. Ένα δεύτερο ISR υποστηρίζει το ADC που λειτουργεί σε συνεχή λειτουργία. Αυτό δίνει την ταχύτερη απόκριση στο κύκλωμα φόρτισης που διασχίζει το κατώφλι.

Στην αρχή κάθε κύκλου μέτρησης μια συνάρτηση getMeasureMode καθορίζει ποια είναι η καταλληλότερη μέθοδος για κάθε μέτρηση.

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

Όταν ξεκινά το λογισμικό, οι πρώτες 7 μετρήσεις χρησιμοποιούνται ως «κύκλοι βαθμονόμησης» για τον προσδιορισμό της συχνότητας βάσης του 555 χωρίς πρόσθετο πυκνωτή. Ο μέσος όρος των τελευταίων 4 κύκλων είναι.

Υπάρχει υποστήριξη για την προσαρμογή του καταχωρητή OSCAL για ρύθμιση ρολογιού. Προτείνω να ορίσετε το OSCCAL_VAL στο 0 αρχικά στο πάνω μέρος του σκίτσου. Αυτό σημαίνει ότι η εργοστασιακή βαθμονόμηση θα χρησιμοποιηθεί μέχρι να πραγματοποιηθεί ο συντονισμός.

Απαιτείται η προσαρμογή της τιμής του πυκνωτή βάσης 555. Προσθέτω επίσης ένα εκτιμώμενο ποσό για αδέσποτη χωρητικότητα.

Εάν χρησιμοποιούνται διαφορετικές αντιστάσεις για τις μεθόδους φόρτισης, οι τιμές CHARGE_RCLOW και CHARGE_RCHIGH στο λογισμικό θα πρέπει επίσης να αλλάξουν.

Για να εγκαταστήσετε το λογισμικό χρησιμοποιήστε την κανονική μέθοδο digistamp για να ανεβάσετε το λογισμικό και να συνδέσετε τη θύρα usb όταν σας ζητηθεί. Αφήστε τον διακόπτη τροφοδοσίας στη θέση απενεργοποίησης, καθώς η τροφοδοσία θα παρέχεται από το USB για αυτήν τη λειτουργία.

Βήμα 4: Λειτουργία και προηγμένη βαθμονόμηση

Η λειτουργία είναι πολύ απλή.

Αφού ενεργοποιήσετε τη μονάδα και περιμένετε να τελειώσει το μηδέν βαθμονόμησης, συνδέστε τον υπό δοκιμή πυκνωτή σε μία από τις δύο θύρες μέτρησης. Χρησιμοποιήστε τις θύρες 555 για πυκνωτές χαμηλής τιμής <1uF και τη θύρα φόρτισης για πυκνωτές υψηλότερης αξίας. Για ηλεκτρολυτικούς πυκνωτές συνδέστε τον αρνητικό ακροδέκτη στο κοινό σημείο γείωσης. Κατά τη διάρκεια της δοκιμής ο πυκνωτής θα φορτιστεί μέχρι περίπου 2V.

Η θύρα 555 μπορεί να επαναρυθμιστεί κρατώντας πατημένο το κουμπί για περίπου 1 δευτερόλεπτο και αφήνοντάς το. Βεβαιωθείτε ότι τίποτα δεν είναι συνδεδεμένο στη θύρα 555 για αυτό.

Προηγμένη βαθμονόμηση

Η μέθοδος φόρτισης βασίζεται στην απόλυτη συχνότητα ρολογιού του ATTiny85 για τη μέτρηση του χρόνου. Το ρολόι χρησιμοποιεί τον εσωτερικό ταλαντωτή RC διατεταγμένο για να δώσει ένα ονομαστικό ρολόι 8MHz. Παρόλο που η σταθερότητα του ταλαντωτή είναι αρκετά καλή για διακυμάνσεις τάσης και θερμοκρασίας, η συχνότητά του μπορεί να είναι αρκετά αρκετή, ακόμη και αν έχει βαθμονομηθεί από το εργοστάσιο. Αυτή η βαθμονόμηση ορίζει το μητρώο OSCCAL κατά την εκκίνηση. Η βαθμονόμηση του εργοστασίου μπορεί να βελτιωθεί ελέγχοντας τη συχνότητα και κάνοντας πιο βέλτιστη ρύθμιση της τιμής OSCCAL που ταιριάζει σε μια συγκεκριμένη πλακέτα ATTiny85.

Δεν έχω καταφέρει να ταιριάξω σε μια πιο αυτόματη μέθοδο στο υλικολογισμικό, οπότε χρησιμοποιώ την ακόλουθη χειροκίνητη διαδικασία. Δύο παραλλαγές είναι δυνατές ανάλογα με τις εξωτερικές μετρήσεις που είναι διαθέσιμες. είτε ένα μετρητή συχνοτήτων ικανό να μετρήσει τη συχνότητα της τριγωνικής κυματομορφής στη θύρα 555, είτε μια πηγή τετραγωνικού κύματος γνωστής συχνότητας π.χ. 10KHz με επίπεδα 0V/3.3V που μπορούν να συνδεθούν στη θύρα 555 και να παρακάμψουν την κυματομορφή για να εξαναγκάσουν αυτή τη συχνότητα στον μετρητή. Χρησιμοποίησα τη δεύτερη μέθοδο.

  1. Εκκινήστε τον μετρητή με την κανονική του ισχύ χωρίς συνδεδεμένους πυκνωτές.
  2. Συνδέστε τον μετρητή συχνότητας ή τη γεννήτρια τετραγωνικών κυμάτων στη θύρα 555.
  3. Επανεκκινήστε τον κύκλο βαθμονόμησης πατώντας το κουμπί.
  4. Στο τέλος του κύκλου βαθμονόμησης, η οθόνη θα εμφανίσει τη συχνότητα που καθορίζεται από τον μετρητή και την τρέχουσα τιμή OSCCAL. Σημειώστε ότι η επαναλαμβανόμενη χρήση του κύκλου βαθμονόμησης θα εναλλάσσεται μεταξύ εμφάνισης της μετρημένης συχνότητας και κανονικής μη εμφάνισης.
  5. Εάν η εμφανιζόμενη συχνότητα είναι μικρότερη από τη γνωστή τότε σημαίνει ότι η συχνότητα ρολογιού είναι πολύ υψηλή και αντίστροφα. Βρίσκω ότι μια αύξηση OSCCAL προσαρμόζει το ρολόι κατά περίπου 0,05%
  6. Υπολογίστε μια νέα τιμή OSCCAL για βελτίωση του ρολογιού.
  7. Εισαγάγετε νέα τιμή OSCCAL στο OSCCAL_VAL στην κορυφή του υλικολογισμικού.
  8. Ανακατασκευάστε και ανεβάστε νέο υλικολογισμικό. Επαναλάβετε τα βήματα 1 -5 που πρέπει να δείχνουν τη νέα τιμή OSCCAL και τη νέα μέτρηση συχνότητας.
  9. Εάν είναι απαραίτητο, επαναλάβετε τα βήματα μέχρι να επιτευχθεί το καλύτερο αποτέλεσμα.

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

Συνιστάται: