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

Arduino Volt Meter (0-100V DC) - Έκδοση 2 (καλύτερη): 3 βήματα
Arduino Volt Meter (0-100V DC) - Έκδοση 2 (καλύτερη): 3 βήματα

Βίντεο: Arduino Volt Meter (0-100V DC) - Έκδοση 2 (καλύτερη): 3 βήματα

Βίντεο: Arduino Volt Meter (0-100V DC) - Έκδοση 2 (καλύτερη): 3 βήματα
Βίντεο: Mini DC 0-32V Digital LED Display Volt Meter / Trick / POWER GEN 2024, Ιούνιος
Anonim
Image
Image
Βήμα 1: Τα Σχήματα
Βήμα 1: Τα Σχήματα

Σε αυτό το διδακτικό, έχω δημιουργήσει ένα βολτόμετρο για τη μέτρηση υψηλών τάσεων DC (0-100v) με σχετική ακρίβεια και ακρίβεια χρησιμοποιώντας ένα Arduino Nano και ένα ADS 1115 ADC.

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

Οι μετρήσεις δοκιμής που έκανα ήταν ακριβείς, κυρίως εντός 0,1v της πραγματικής τάσης που μετρήθηκε με ένα τυπικό βολτόμετρο (χρησιμοποίησα Astro AI DM6000AR).

Αυτό είναι πολύ καλύτερο και ευκολότερο κατά τη γνώμη μου από τη χρήση εξωτερικής αναφοράς τάσης στο Arduino.

Προμήθειες

1 x Arduino Nano - Σύνδεσμος

1 x Oled Display (SSD 1306) - Σύνδεσμος

1 x ADS 1115 - 16 bit ADC - Σύνδεσμος

1 x 1/4W (προτείνω να χρησιμοποιήσετε αντιστάσεις 1W όμως) 1% αντιστάσεις - 220k ohm - σύνδεσμος

1 x 1/4W (προτείνω να χρησιμοποιήσετε αντιστάσεις 1W όμως) 1% αντιστάσεις - 10k ohm - σύνδεσμος

Breadboard και σύρματα - Σύνδεσμος

Astro AI DM6000AR - Σύνδεσμος

USB Power Bank - Σύνδεσμος

Μπαταρίες 9V - Σύνδεσμος

Το CanadianWinters συμμετέχει στο πρόγραμμα Amazon Services LLC Associates Program, ένα πρόγραμμα διαφήμισης θυγατρικών που έχει σχεδιαστεί για να παρέχει μέσα στους ιστότοπους να κερδίζουν τέλη συνδέοντας το Amazon.com και συνδεδεμένους ιστότοπους. Χρησιμοποιώντας αυτούς τους συνδέσμους, ως Amazon Associate κερδίζω από κατάλληλες αγορές, ακόμη και αν αγοράζετε κάτι άλλο-και δεν θα σας κοστίσει τίποτα.

Βήμα 1: Βήμα 1: Τα Σχήματα

Βήμα 1: Τα Σχήματα
Βήμα 1: Τα Σχήματα

Συνδέσα όλα τα μέρη σύμφωνα με τα παραπάνω σχήματα.

Έδεσα τον πείρο ADDR του ADC1115 στη γείωση. Αυτό ορίζει τη διεύθυνση του ADC σε 0x48.

Βήμα 2: Βήμα 2: Υπολογισμοί κώδικα και αντίστασης

Βήμα 2: Υπολογισμοί κώδικα και αντίστασης
Βήμα 2: Υπολογισμοί κώδικα και αντίστασης

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

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

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

Όπως και στο προηγούμενο με οδηγίες, έφτιαξα ένα υπολογιστικό φύλλο που αυτοματοποιεί τους υπολογισμούς σε περίπτωση που θέλετε να χρησιμοποιήσετε διαφορετικές τιμές αντίστασης στο διαχωριστή τάσης: Σύνδεση με το Φύλλο Google

Εδώ είναι ο κώδικας που χρησιμοποίησα για αυτό το έργο:

#περιλαμβάνω

#include #include #include Adafruit_ADS1115 διαφημίσεις (0x48); // Διεύθυνση του ADC U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (περιστροφή, [επαναφορά]) int calib = 7; // Τιμή βαθμονόμησης του ADS1115 για μείωση της τάσης πλωτήρα σφάλματος = 0; // χρησιμοποιείται για την αποθήκευση της τιμής float Radjust = 0.043421905; // Συντελεστής διαίρεσης τάσης (R2 / R1+R2) float vbat = 0; // τελική τάση μετά από υπολογισμούς- τάση της μπαταρίας // μεταβλητές για ανανέωση της οθόνης χωρίς καθυστέρηση χωρίς υπογραφή πολύ προηγούμενοMillis = 0; // θα αποθηκευτεί την τελευταία φορά που ανανεώθηκε η οθόνη // οι σταθερές δεν θα αλλάξουν: const μεγάλο διάστημα = 250; // διάστημα στο οποίο θα ανανεωθεί η οθόνη (χιλιοστά του δευτερολέπτου) void setup (void) {Serial.begin (9600); u8g2.begin (); ads.begin (); } void loop (void) {int16_t adc0; // 16 bit ADC ανάγνωση της εισόδου A0 adc0 = ads.readADC_SingleEnded (0); τάση = ((adc0 + calib) * 0.1875)/1000; ανυπόγραφο μακρύ ρεύμαMillis = millis (); vbat = τάση/Radjust; // Αποτρέψτε την εμφάνιση αρνητικής τάσης όταν η μπαταρία αποσυνδέεται εάν (vbat = διάστημα) {previousMillis = currentMillis; u8g2.clearBuffer (); // εκκαθάριση της εσωτερικής μνήμης // Ένδειξη τάσης συσκευασίας - Γραμματοσειρές σε αυτήν τη σελίδα: https://github.com/olikraus/u8g2/wiki/fntlistall //u8g2.setFont(u8g2_font_fub20_tr). // γραμματοσειρά 20px u8g2.setFont (u8g2_font_fub35_tr); // γραμματοσειρά 35px u8g2.setCursor (1, 42); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // γραμματοσειρά 10 px u8g2.setCursor (1, 60); u8g2.print ("Volts"); } u8g2.sendBuffer (); // μεταφορά εσωτερικής μνήμης στην καθυστέρηση οθόνης (1). }

Βήμα 3: Βήμα 3: Ας το δοκιμάσουμε

Βήμα 3: Ας το δοκιμάσουμε!
Βήμα 3: Ας το δοκιμάσουμε!

Για να δοκιμάσω αυτό το βολτόμετρο χρησιμοποίησα μπαταρίες 10x 9v που πήρα σε τοπικό κατάστημα. Αυτή τη φορά θα μπορούσα να μετρήσω μέχρι 97 βολτ! Σκοπεύω να χρησιμοποιήσω αυτό το βολτόμετρο για να μετρήσω την τάση στις μπαταρίες των ηλεκτρικών ποδηλάτων μου (έχουν τάσεις που κυμαίνονται από 24-60v με τις περιστασιακές 72v).

Μόλις τα ηλεκτρονικά συσκευαστούν σε ένα pcb και ένα μικρό κουτί, αυτό θα κάνει ένα ωραίο και φορητό μετρητή μπαταρίας. Τα γραφικά και οι γραμματοσειρές στο OLED θα μπορούσαν να προσαρμοστούν ώστε να ταιριάζουν στις ανάγκες σας (π.χ. μεγαλύτερη γραμματοσειρά για εύκολη ανάγνωση). Ο στόχος μου ήταν να έχω μια ένδειξη τάσης στον μετρητή Oled/Arduino όχι πολύ μακριά από τον ψηφιακό μου πολύμετρο. Στόχος μου ήταν το +/- 0, 3v max delta.

Όπως μπορείτε να δείτε από το βίντεο στην αρχή του Instructable, κατάφερα να το αρχειοθετήσω! Οι περισσότερες αναγνώσεις ήταν άμεσες!

Ελπίζω να σας άρεσε αυτό το Instructable και πείτε μου τις σκέψεις σας!

Συνιστάται: