Πίνακας περιεχομένων:
Βίντεο: Arduino Precise & Accurate Volt Meter (0-90V DC): 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Σε αυτό το διδακτικό, έχω δημιουργήσει ένα βολτόμετρο για τη μέτρηση υψηλών τάσεων DC (0-90v) με σχετική ακρίβεια και ακρίβεια χρησιμοποιώντας ένα Arduino Nano.
Οι μετρήσεις δοκιμής που έκανα ήταν αρκετά ακριβείς, κυρίως εντός 0,3v της πραγματικής τάσης που μετρήθηκε με ένα τυπικό βολτόμετρο (χρησιμοποίησα Astro AI DM6000AR). Αυτό είναι αρκετά κοντά για την προβλεπόμενη χρήση της συσκευής.
Για να αρχειοθετήσω αυτό χρησιμοποίησα μια αναφορά τάσης (4.096v) και διαχωριστή τάσης.
Από την πλευρά του κώδικα, χρησιμοποίησα, φυσικά, την επιλογή "εξωτερική αναφορά" για το Arduino Nano και το παράδειγμα "Smoothing" στα μαθήματα Arduino.
Προμήθειες
1 x Arduino Nano - Σύνδεσμος
1 x Oled Display (SSD 1306) - Σύνδεσμος
1 x 1/4W 1% αντιστάσεις - 1k ohm - σύνδεσμος
Αντιστάσεις 1 x 1/4W 1% - 220k ohm - Σύνδεσμος
Αντιστάσεις 1 x 1/4W 1% - 10k ohm - Σύνδεσμος
1 x 4.096v LM4040DIZ -4.1 Αναφορά Τάσης - Σύνδεσμος
Breadboard και σύρματα - Σύνδεσμος
Astro AI DM6000AR - Σύνδεσμος
USB Power Bank - Σύνδεσμος
Μπαταρίες 9V - Σύνδεσμος
Το CanadianWinters συμμετέχει στο πρόγραμμα Amazon Services LLC Associates Program, ένα πρόγραμμα διαφήμισης θυγατρικών που έχει σχεδιαστεί για να παρέχει μέσα στους ιστότοπους να κερδίζουν τέλη συνδέοντας το Amazon.com και συνδεδεμένους ιστότοπους. Χρησιμοποιώντας αυτούς τους συνδέσμους, ως Amazon Associate κερδίζω από κατάλληλες αγορές, ακόμη και αν αγοράζετε κάτι άλλο-και δεν θα σας κοστίσει τίποτα.
Βήμα 1: Τα Σχήματα
Συνδέσα όλα τα μέρη σύμφωνα με τα παραπάνω σχήματα. Συγκεκριμένα επέλεξα την αναφορά τάσης 4.096 για να μείνω όσο το δυνατόν πιο κοντά στο σήμα των 5v για να αποφύγω την απώλεια ανάλυσης.
Ακολουθώντας το φύλλο δεδομένων, επέλεξα μια αντίσταση 1K ohm για την αναφορά τάσης, παρόλο που θα μπορούσε να χρησιμοποιηθεί διαφορετική τιμή. Η τάση για την αναφορά παρέχεται από τον πείρο Nano 5v.
Η ιδέα του κυκλώματος είναι ότι η τάση DC που θα μετρηθεί περνάει από μια αντίσταση τάσης. Η κλιμακούμενη τάση και μετά μπαίνει στον αναλογικό πείρο του Arduino για δειγματοληψία, εξομάλυνση, εκ νέου κλίμακα και εμφάνιση στην οθόνη OLed.
Προσπάθησα να κρατήσω τα πράγματα απλά:)
Βήμα 2: Υπολογισμοί κώδικα και αντίστασης
Οι τιμές των αντιστάσεων επιλέχθηκαν όπως είναι σκόπιμο (αν δεν κάνω λάθος αυτό είναι στο φύλλο δεδομένων Arduino/Atmega) για να διατηρηθεί η σύνθετη αντίσταση κάτω από 10k ohm.
Για να απλοποιήσω τα πράγματα, έφτιαξα ένα υπολογιστικό φύλλο που αυτοματοποιεί τους υπολογισμούς σε περίπτωση που θέλετε να χρησιμοποιήσετε διαφορετικές τιμές αντίστασης: Σύνδεσμος προς το Φύλλο Google
Εδώ είναι ο κώδικας που χρησιμοποίησα για αυτό το έργο:
#περιλαμβάνω
#include U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0); // (περιστροφή, [επαναφορά]) τάση πλωτήρα = 0; // χρησιμοποιείται για την αποθήκευση της τιμής float Radjust = 0.043459459; // Συντελεστής διαίρεσης τάσης (R2 /R1+R2) float vbat = 0; // τελική τάση μετά από υπολογισμούς- τάση του πλωτήρα μπαταρίας Vref = 4.113; // Αναφορά τάσης - μετρημένη πραγματική τιμή. Ονομαστική τιμή 4.096v const int numReadings = 50; // αριθμός δειγμάτων ανάγνωσης - αύξηση για περισσότερη εξομάλυνση. Μείωση για ταχύτερη ανάγνωση. int αναγνώσεις [numReadings]; // οι ενδείξεις από την αναλογική είσοδο int readIndex = 0; // το ευρετήριο της τρέχουσας ανάγνωσης ανυπόγραφο μακρύ σύνολο = 0; // ο συνολικός τρέχων μέσος όρος int = 0; // μεταβλητές για ανανέωση της οθόνης χωρίς χρήση καθυστέρησης χωρίς υπογραφή πολύ προηγούμενοMillis = 0; // θα αποθηκευτεί την τελευταία φορά που η οθόνη ενημερώθηκε // οι σταθερές δεν θα αλλάξουν: const μεγάλο διάστημα = 50; // διάστημα στο οποίο θα ανανεωθεί η οθόνη (χιλιοστά του δευτερολέπτου) void setup (void) {analogReference (EXTERNAL); // χρησιμοποιήστε το AREF για τάση αναφοράς 4.096. Η πραγματική τάση αναφοράς μου είναι 4.113v u8g2.begin (); για (int thisReading = 0; thisReading = numReadings) {// … τυλίξτε μέχρι την αρχή: readIndex = 0; } // υπολογίστε τον μέσο όρο: μέσος όρος = (σύνολο / αριθμικές αναγνώσεις); τάση = μέσος όρος * (Vref / 1023.0); //4.113 είναι το Vref vbat = τάση/Radjust; // Ρύθμιση της καθυστέρησης για την ανανέωση της οθόνης χρησιμοποιώντας το Millis if (currentMillis - previousMillis> = διάστημα) {// αποθήκευση της τελευταίας φοράς που ενημερώθηκε η οθόνη previousMillis = currentMillis; u8g2.clearBuffer (); // εκκαθάριση της εσωτερικής μνήμης // Ένδειξη τάσης συσκευασίας u8g2.setFont (u8g2_font_fub20_tr); // γραμματοσειρά 20px u8g2.setCursor (1, 20); u8g2.print (vbat, 2); u8g2.setFont (u8g2_font_8x13B_mr); // γραμματοσειρά 10 px u8g2.setCursor (76, 20); u8g2.print ("Volts"); u8g2.setCursor (1, 40); u8g2.print ("CanadianWinters"); u8g2.setCursor (1, 60); u8g2.print ("Precise Voltage"); } u8g2.sendBuffer (); // μεταφορά εσωτερικής μνήμης στην καθυστέρηση οθόνης (1). }
Λάβετε υπόψη ότι είμαι λίγο σκουριασμένος με την κωδικοποίηση Arduino, οπότε αν βρείτε κάποιο λάθος ή τρόπο βελτίωσης του κώδικα, είμαι ανοιχτός σε προτάσεις:)
Βήμα 3: Ας το δοκιμάσουμε
Για να δοκιμάσω αυτό το βολτόμετρο χρησιμοποίησα μπαταρίες 8x 9v που πήρα σε τοπικό κατάστημα. Σκοπεύω να χρησιμοποιήσω αυτό το βολτόμετρο για να μετρήσω την τάση στις μπαταρίες των ηλεκτρικών ποδηλάτων μου (έχουν τάσεις που κυμαίνονται από 24-60v με τις περιστασιακές 72v).
Μόλις τα ηλεκτρονικά συσκευαστούν σε ένα pcb και ένα μικρό κουτί, αυτό θα κάνει ένα ωραίο και φορητό μετρητή μπαταρίας. Τα γραφικά και οι γραμματοσειρές στο OLED θα μπορούσαν να προσαρμοστούν ώστε να ταιριάζουν στις ανάγκες σας (π.χ. μεγαλύτερη γραμματοσειρά για εύκολη ανάγνωση).
Ο στόχος μου ήταν να έχω μια ένδειξη τάσης στον μετρητή Oled/Arduino όχι πολύ μακριά από τον ψηφιακό μου πολύμετρο. Στόχος μου ήταν το +/- 0, 3v max delta. Όπως μπορείτε να δείτε από το βίντεο, μπόρεσα να το αρχειοθετήσω, εκτός από το επάνω άκρο των μετρήσεων.
Ελπίζω να σας άρεσε αυτό το Instructable και πείτε μου τις σκέψεις σας!
Συνιστάται:
Waveshare E-ink Display Precise Voltmeter (0-90v DC) With Arduino Nano: 3 βήματα
Waveshare E-ink Display Precise Voltmeter (0-90v DC) With Arduino Nano: In this Instructable, I use a 2.9 "Waveshare E-Paper display with a Arduino Nano, a tension divider and ADS1115 to display ακριβείς τάσεις έως 90 βολτ DC στην οθόνη E-Paper. Αυτό το διδακτικό συνδυάζει αυτά τα δύο προηγούμενα έργα:- Ardui
Arduino Volt Meter (0-100V DC) - Έκδοση 2 (καλύτερη): 3 βήματα
Arduino Volt Meter (0-100V DC)-Έκδοση 2 (καλύτερη): Σε αυτό το διδακτικό, έχω κατασκευάσει ένα βολτόμετρο για τη μέτρηση υψηλών τάσεων DC (0-100v) με σχετική ακρίβεια και ακρίβεια χρησιμοποιώντας Arduino Nano και ADS 1115 ADC .Αυτή είναι μια δεύτερη έκδοση του βολτόμετρου που χρησιμοποιήθηκε εδώ για προηγούμενες οδηγίες: https: // ww
Shield for Arduino From Old Russian VFD Tubes: Clock, Thermometer, Volt Meter : 21 Steps (with Pictures)
Shield for Arduino From Old Russian VFD Tubes: Clock, Thermometer, Volt Meter …: Αυτό το έργο χρειάστηκε σχεδόν μισό χρόνο για να ολοκληρωθεί. Δεν μπορώ να περιγράψω πόση δουλειά έγινε σε αυτό το έργο. Το να κάνω αυτό το έργο μόνος μου θα με πάρει για πάντα, οπότε είχα βοήθεια από τους φίλους μου. Εδώ μπορείτε να δείτε τη δουλειά μας συγκεντρωμένη σε μια πολύ μεγάλη οδηγία
Ρομπότ SnappyXO Precise Mover: 6 βήματα
Ρομπότ SnappyXO Precise Mover: Κάντε το ρομπότ σας Arduino να πάει κατευθείαν για μια καθορισμένη απόσταση ή στρίψτε σε μια καθορισμένη γωνία χρησιμοποιώντας τη βιβλιοθήκη PreciseMovement Arduino. Το ρομπότ χρειάζεται έναν κύλινδρο τροχού ή ισοδύναμο για να ελαχιστοποιήσει την τριβή ενώ στρίβετε. Https://www.pololu. com/produ
Ένας ακόμη Μετεωρολογικός Σταθμός Arduino (ESP-01 & BMP280 & DHT11 & OneWire): 4 Βήματα
Ένας ακόμη Μετεωρολογικός Σταθμός Arduino (ESP-01 & BMP280 & DHT11 & OneWire): Εδώ μπορείτε να βρείτε μια επανάληψη χρήσης του OneWire με τις πολύ λίγες ακίδες ενός ESP-01. Η συσκευή που δημιουργήθηκε σε αυτό το εκπαιδευτικό συνδέεται με το δίκτυο Wifi του δικτύου σας επιλογή (πρέπει να έχετε τα διαπιστευτήρια …) Συλλέγει αισθητήρια δεδομένα από ένα BMP280 και ένα DHT11