Βολτόμετρο Bluetooth βασισμένο σε arduino. Ψηφιακό βολτόμετρο σε Arduino με σύνδεση με υπολογιστή μέσω σειριακής θύρας Βολτόμετρο Arduino με έξοδο δεδομένων σε υπολογιστή

Τα πολυλειτουργικά συγκροτήματα Arduino παρουσιάζουν μεγάλο ενδιαφέρον για τους λάτρεις των οικιακών ηλεκτρονικά προγραμματιζόμενων συσκευών, επιτρέποντάς τους να ζωντανεύουν ενδιαφέρουσες ιδέες.

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

Μονάδες Arduinoείναι χτισμένα σε έναν γενικό μικροελεγκτή με δικό του bootloader, που διευκολύνει το flash με τον απαραίτητο κώδικα προγράμματος, χωρίς τη χρήση πρόσθετων συσκευών. Ο προγραμματισμός πραγματοποιείται σε τυπική γλώσσα C++.

Ένα από τα απλούστερα παραδείγματα χρήσης του Arduino μπορεί να είναι η υλοποίηση, με βάση αυτό το συγκρότημα, ενός βολτόμετρου DC υψηλής ακρίβειας με εύρος μέτρησης από 0 έως 30 V.

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


Διάγραμμα σύνδεσης του Areduino μέσω διαιρέτη τάσης

Ένας διαιρέτης τάσης αποτελείται από δύο αντιστάσεις συνδεδεμένες σε σειρά. Υπολογίζεται χρησιμοποιώντας τον τύπο:

Εξωτερική υποδοχή USB στο ραδιόφωνο αυτοκινήτου

Παρουσιάζεται ένα χρήσιμο διάγραμμα για όσους τους αρέσει να πειραματίζονται με το Arduino. Αυτό είναι ένα απλό ψηφιακό βολτόμετρο που μπορεί να μετρήσει αξιόπιστα την τάση DC στην περιοχή 0 - 30V. Η πλακέτα Arduino, ως συνήθως, μπορεί να τροφοδοτηθεί από μπαταρία 9V.

Όπως πιθανότατα γνωρίζετε, οι αναλογικές είσοδοι του Arduino μπορούν να χρησιμοποιηθούν για τη μέτρηση της τάσης DC στην περιοχή από 0 - 5 V και αυτό το εύρος μπορεί να αυξηθεί,
χρησιμοποιώντας δύο αντιστάσεις ως διαιρέτη τάσης. Ο διαχωριστής θα μειώσει τη μετρούμενη τάση στο επίπεδο των αναλογικών εισόδων Arduino. Και τότε το πρόγραμμα θα υπολογίσει την πραγματική τιμή τάσης.

Ο αναλογικός αισθητήρας στην πλακέτα Arduino ανιχνεύει την παρουσία τάσης στην αναλογική είσοδο και τη μετατρέπει σε ψηφιακή μορφή για περαιτέρω επεξεργασία από τον μικροελεγκτή. Στο σχήμα, η τάση τροφοδοτείται στην αναλογική είσοδο (A0) μέσω ενός απλού διαιρέτη τάσης που αποτελείται από αντιστάσεις R1 (100 kOhm) και R2 (10 kOhm).

Με αυτές τις τιμές διαιρέτη, η πλακέτα Arduino μπορεί να τροφοδοτηθεί με τάση από 0 έως
55V. Στην είσοδο Α0 έχουμε τη μετρούμενη τάση διαιρούμενη με 11, δηλαδή 55V / 11=5V. Με άλλα λόγια, όταν μετράμε 55V στην είσοδο Arduino, έχουμε μέγιστη επιτρεπόμενη τιμή 5V. Στην πράξη, είναι καλύτερο να γράψετε την περιοχή "0 - 30V" σε αυτό το βολτόμετρο έτσι ώστε να παραμείνει
Περιθώριο ασφαλείας!

Σημειώσεις

Εάν οι ενδείξεις της οθόνης δεν συμπίπτουν με τις ενδείξεις ενός βιομηχανικού (εργαστηριακού) βολτόμετρου, τότε είναι απαραίτητο να μετρήσετε την τιμή των αντιστάσεων R1 και R2 με ένα ακριβές όργανο και να εισαγάγετε αυτές τις τιμές αντί για R1=100000.0 και R2=10000.0 στον κώδικα του προγράμματος. Στη συνέχεια, θα πρέπει να μετρήσετε την πραγματική τάση μεταξύ των ακίδων 5V και "Ground" της πλακέτας Arduino με ένα εργαστηριακό βολτόμετρο. Το αποτέλεσμα θα είναι μια τιμή μικρότερη από 5 V, για παράδειγμα, θα είναι 4,95 V. Αυτή η πραγματική τιμή πρέπει να εισαχθεί στη γραμμή κώδικα
Vout = (τιμή * 5,0) / 1024,0 αντί για 5,0.
Επίσης, προσπαθήστε να χρησιμοποιήσετε αντιστάσεις ακριβείας με ανοχή 1%.

Οι αντιστάσεις R1 και R2 παρέχουν κάποια προστασία από αυξημένες τάσεις εισόδου. Ωστόσο, να θυμάστε ότι τυχόν τάσεις πάνω από 55 V μπορεί να καταστρέψουν την πλακέτα Arduino. Επιπλέον, αυτός ο σχεδιασμός δεν παρέχει άλλους τύπους προστασίας (από υπερτάσεις, αντιστροφή πολικότητας ή υπέρταση).

Πρόγραμμα ψηφιακού βολτόμετρου

/*
Βολτόμετρο DC
Ένα Arduino DVM βασισμένο στην ιδέα του διαιρέτη τάσης
T.K.Hareendran
*/
#περιλαμβάνω
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int analogInput = 0;
float vout = 0,0;
float vin = 0,0;
float R1 = 100000,0; // αντίσταση του R1 (100K) -δείτε το κείμενο!
float R2 = 10000,0; // αντίσταση R2 (10K) – δείτε το κείμενο!
τιμή int = 0;
void setup())(
pinMode(analogInput, INPUT);
lcd.begin(16, 2);
lcd.print("ΒΟΛΤΜΕΤΡΟ DC");
}
void loop()
// διαβάστε την τιμή στην αναλογική είσοδο
value = analogRead(analogInput);
vout = (τιμή * 5,0) / 1024,0; // βλέπε κείμενο
vin = βουτ / (R2/(R1+R2));
αν (vin<0.09) {
vin=0.0;//δήλωση για να καταργηθεί η ανεπιθύμητη ανάγνωση !
}
lcd.setCursor(0, 1);
lcd.print("INPUT V= ");
lcd.print(vin);
καθυστέρηση (500);
}

Σχηματικό διάγραμμα Arduino-voltmeter

Κατάλογος εξαρτημάτων

Πλακέτα Arduino Uno
Αντίσταση 100 kOhm
Αντίσταση 10 kOhm
Αντίσταση 100 ohm
Αντίσταση κοπής 10 kOhm
Οθόνη LCD 16?2 (Hitachi HD44780)

Σχηματικό διάγραμμα ενός σπιτικού διπολικού βολτόμετρου στο Arduino Uno και με οθόνη 1602A. Στο άρθρο «Διπλό βολτόμετρο στο ARDUINO UNO» (L.1), ο συγγραφέας πρότεινε μια περιγραφή του βολτόμετρου και ένα πρόγραμμα για ταυτόχρονη μέτρηση και ένδειξη δύο σταθερών τάσεων. Το οποίο είναι πολύ βολικό εάν χρειάζεται να μετρήσετε ταυτόχρονα δύο σταθερές τάσεις και να τις συγκρίνετε.

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

Ωστόσο, υπάρχουν κυκλώματα με διπολική παροχή ρεύματος, όταν η τάση σε κάποιο σημείο του κυκλώματος σε σχέση με το κοινό «μηδέν» μπορεί να είναι είτε θετική είτε αρνητική.

Σχηματικό διάγραμμα

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

Αρχικά, οι μετρούμενες τάσεις παρέχονται σε δύο αναλογικές εισόδους A1 και A2. Υπάρχουν έξι αναλογικές είσοδοι συνολικά, A0-A5, μπορείτε να επιλέξετε οποιαδήποτε δύο από αυτές. Σε αυτήν την περίπτωση επιλέγονται τα Α1 και Α2. Η τάση στις αναλογικές θύρες μπορεί να είναι μόνο θετική και μόνο στην περιοχή από το μηδέν έως την τάση τροφοδοσίας του μικροελεγκτή, δηλαδή, ονομαστικά, έως και 5 V.

Η έξοδος της αναλογικής θύρας μετατρέπεται σε ψηφιακή μορφή από το ADC του μικροελεγκτή. Για να λάβετε το αποτέλεσμα σε μονάδες βολτ, πρέπει να το πολλαπλασιάσετε με 5 (με την τάση αναφοράς, δηλαδή με την τάση τροφοδοσίας του μικροελεγκτή) και να διαιρέσετε με το 1024.

Ρύζι. 1. Σχηματικό διάγραμμα διπολικού βολτόμετρου σε Arduino Uno και 1602A.

Για να μπορείτε να μετρήσετε τάσεις μεγαλύτερες από 5 V, ή μάλλον, μεγαλύτερες από την τάση τροφοδοσίας του μικροελεγκτή, επειδή η πραγματική τάση στην έξοδο του σταθεροποιητή 5 volt στην πλακέτα ARDUINO UNO μπορεί να διαφέρει από 5V και συνήθως λίγο πιο κάτω, πρέπει να χρησιμοποιήσετε συμβατικά ωμικά διαχωριστικά στην είσοδο.

Εδώ αυτοί είναι διαιρέτες τάσης στις αντιστάσεις R1, R3 και R2, R4. Τι γίνεται όμως αν η τάση πρέπει να μετρηθεί λιγότερο από το μηδέν; Σε αυτή την περίπτωση, υπάρχει μόνο μία διέξοδος από την κατάσταση - να αυξηθεί το επίπεδο της εισόδου μηδέν. Στην ιδανική περίπτωση, χρειάζεστε τη μισή τάση τροφοδοσίας, δηλαδή έως και 2,5 V. Σε αυτήν την περίπτωση, δεδομένα 2,5 V θα προστεθούν στην τάση εισόδου.

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

Εκτός από τον σταθεροποιητή τάσης 5 V, η πλακέτα ARDUINO UNO διαθέτει πηγή τάσης 3,3 V. Έτσι μπορεί να χρησιμοποιηθεί ως «εικονικό μηδέν» για είσοδο.

Οι αλλαγές στο κύκλωμα είναι ορατές στο Σχήμα 1. Σε σύγκριση με την πρώτη επιλογή, η είσοδος «μηδέν» απλώς αναδιατάσσεται από το κοινό μηδέν στην πηγή +Z.ZV. Επομένως, όταν η τάση εισόδου είναι θετική, στην είσοδο είναι μεγαλύτερη από 3,3 V (αλλά όχι περισσότερο από 5 V - αυτό είναι το ανώτατο όριο μέτρησης) και όταν είναι αρνητική - μικρότερη από 3,3 V (αλλά όχι λιγότερο από OV - αυτό είναι το κατώτερο όριο μέτρησης).

Η αύξηση των ορίων μέτρησης (modulo) επιτυγχάνεται με έναν ωμικό διαιρέτη και η ένδειξη της πραγματικής τάσης εισόδου που παρέχεται στα X2 και X3 επιτυγχάνεται με την αφαίρεση του λογισμικού μιας τιμής 3,3 V από την τάση στις εισόδους του μικροελεγκτή.

Το πρόγραμμα φαίνεται στον Πίνακα 1. Αυτό φαίνεται στις γραμμές:

volt=(vout*5.0/1024.0-3.3)/0.048 ;

voltl=(voutl*5.0/1024.0-3.3)/0.048;

Ο αριθμός 3.3 είναι ακριβώς αυτή η τάση της εισόδου «εικονικού μηδέν».

Σε αυτές τις γραμμές, ο αριθμός 5.0 είναι η τάση στην έξοδο του σταθεροποιητή της πλακέτας ARDUINO UNO. Στην ιδανική περίπτωση, θα πρέπει να είναι 5 V, αλλά για να λειτουργεί με ακρίβεια το βολτόμετρο, πρέπει πρώτα να μετρηθεί αυτή η τάση. Συνδέστε την πηγή ρεύματος και μετρήστε την τάση +5V στο βύσμα POWER της πλακέτας με ένα βολτόμετρο αρκετά ακριβείας.

Τι συμβαίνει, τότε εισάγετε σε αυτές τις γραμμές αντί για 5,0. Το ίδιο ισχύει και για την τάση +3,3 V - πρέπει να μετρηθεί στον σύνδεσμο της πλακέτας, επειδή στην πραγματικότητα μπορεί να διαφέρει ελαφρώς από τα 3,3 V. Για παράδειγμα, εάν το "5V" είναι στην πραγματικότητα 4,85V και το "3,3V" είναι στην πραγματικότητα 3,32V, οι γραμμές θα μοιάζουν με αυτό:

volt=(vout*4,85/1024,0-3,32)/0,048;

voltl=(voutl*4,85/1024,0-3,32)/0,048;

Στο επόμενο στάδιο, θα χρειαστεί να μετρήσετε τις πραγματικές αντιστάσεις των αντιστάσεων R1-R4 και να προσδιορίσετε τους συντελεστές K (που υποδεικνύονται ως 0,048) για αυτές τις γραμμές χρησιμοποιώντας τους τύπους:

K1 = R3 / (R1+R3) και K2 = R4 / (R2+R4)

Ας πούμε K1 = 0,046 και K2 = 0,051, οπότε γράφουμε:

volt=(vout*4,85/1024,0-3,32)/0,046;

voltl=(voutl*4,85/1024,0-3,32)/0,051;

Επομένως, πρέπει να γίνουν αλλαγές στο κείμενο του προγράμματος σύμφωνα με την πραγματική τάση στην έξοδο των σταθεροποιητών 5-volt και 3,3-volt της πλακέτας ARDUINO UNO και σύμφωνα με τους πραγματικούς συντελεστές διαίρεσης των διαιρετών αντίστασης.

Μετά από αυτό, η συσκευή θα λειτουργεί με ακρίβεια και δεν θα απαιτεί καμία ρύθμιση ή βαθμονόμηση. Κατά τη μέτρηση μιας αρνητικής τάσης στην ένδειξη LCD, θα υπάρχει ένα σύμβολο μείον μπροστά από την τιμή τάσης στην αντίστοιχη γραμμή. Κατά τη μέτρηση της θετικής τάσης, δεν υπάρχει κανένα σημάδι.

Αλλάζοντας τους συντελεστές διαίρεσης των διαιρετών αντίστασης (και, κατά συνέπεια, τους συντελεστές "K"), μπορείτε να κάνετε άλλα όρια μέτρησης, και όχι απαραίτητα τα ίδια και για τις δύο εισόδους.

Θα ήθελα να σας υπενθυμίσω ότι η μονάδα οθόνης υγρών κρυστάλλων τύπου H1 1602A είναι συνδεδεμένη στις ψηφιακές θύρες D2-D7 της πλακέτας ARDUINO UNO. Η ένδειξη LCD τροφοδοτείται από έναν σταθεροποιητή τάσης 5V που βρίσκεται στην πλακέτα σταθεροποιητή τάσης 5V.

Για να αλληλεπιδράσει η ένδειξη με το ARDUINO UNO, πρέπει να φορτώσετε μια υπορουτίνα στο πρόγραμμα για να την ελέγξετε. Τέτοιες ρουτίνες ονομάζονται "βιβλιοθήκες" και υπάρχουν πολλές διαφορετικές "βιβλιοθήκες" στο πακέτο λογισμικού ARDUINO UNO. Για να εργαστείτε με μια ένδειξη LCD που βασίζεται στο HD44780, χρειάζεστε τη βιβλιοθήκη LiquidCrystal. Επομένως, το πρόγραμμα (Πίνακας 1) ξεκινά με τη φόρτωση αυτής της βιβλιοθήκης:

Αυτή η γραμμή δίνει την εντολή για φόρτωση αυτής της βιβλιοθήκης στο ARDUINO UNO. Στη συνέχεια, πρέπει να αντιστοιχίσετε θύρες ARDUINO UNO που θα λειτουργούν με την ένδειξη LCD. Επέλεξα τις θύρες D2 έως D7. Μπορείτε να επιλέξετε άλλους. Αυτές οι θύρες εκχωρούνται από τη γραμμή:

LiquidCrystal led(2, 3, 4, 5, 6, 7);

Μετά από αυτό, το πρόγραμμα προχωρά στην πραγματική λειτουργία του βολτόμετρου.

Karavkin V. RK-06-17.

Βιβλιογραφία: 1. Karavkin V. - Διπλό βολτόμετρο στο ARDUINO UNO. RK-01-17.

Ιδέα

Ιδέα συσκευές μέτρησης τάσης, ρεύματος, χωρητικότητας, εκφόρτισης και ίσως φόρτισης προέκυψαν εδώ και πολύ καιρό και όχι μόνο για μένα. Μπορείτε να βρείτε πολλά παιχνίδια που ονομάζονται USB Tester (Doctor) για τη δοκιμή διαφόρων συσκευών USB. Ενδιαφέρομαι για μια κάπως πιο καθολική συσκευή, ανεξάρτητη από τη διεπαφή, αλλά απλά σχεδιασμένη για συγκεκριμένες τάσεις και ρεύματα. Για παράδειγμα, 0 - 20,00v, 0 - 5,00a, 0 - 99,99Ah. Όσο για τις λειτουργίες, το βλέπω έτσι

  • Εμφανίζει την τάση και το ρεύμα ρεύματος, δηλαδή ένα μετρητή βολτ-αμπέρ. Κατ 'αρχήν, μπορείτε να αντικατοπτρίσετε αμέσως τη δύναμη.
  • Μέτρηση και εμφάνιση συσσωρευμένης χωρητικότητας. Σε αμπέρ και πιθανότατα σε βατώρες.
  • Εμφάνιση χρόνου διεργασίας
  • Και, πιθανότατα, ρυθμιζόμενα κατώτερα και ανώτερα όρια αποκοπής τάσης (όρια εκφόρτισης και φόρτισης)

Ανάπτυξη

Για την υλοποίηση υπολογισμών και μετρήσεων χρειαζόμαστε έναν ελεγκτή. Θυμήθηκα αυτή την ιδέα ως μέρος της γνωριμίας μου με το Arduino, οπότε το χειριστήριο θα είναι ένα απλό δημοφιλές Atmega328 και θα προγραμματίζεται στο περιβάλλον Arduino. Από μηχανικής άποψης, η επιλογή μάλλον δεν είναι η καλύτερη - ο ελεγκτής είναι λίγο χοντρός για την εργασία και το ADC του δεν μπορεί να ονομαστεί μέτρηση, αλλά... θα προσπαθήσουμε.

  • Δεν θα κολλήσουμε πολύ σε αυτό το έργο. Ως βάση, θα πάρουμε μια έτοιμη μονάδα Arduino Pro Mini, καθώς οι Κινέζοι είναι έτοιμοι να τις προμηθεύσουν για 1,5 $ λιανικής.
  • Η συσκευή προβολής θα είναι οθόνη 1602 - άλλο 1,5 $. Έχω μια επιλογή με μια μονάδα διασύνδεσης I2C, αλλά σε αυτό το έργο δεν χρειάζεται πραγματικά (0,7 $).
  • Για ανάπτυξη χρειαζόμαστε ένα breadboard. Στην περίπτωσή μου, αυτό είναι ένα μικρό BreadBoard για $1.
  • Φυσικά, θα χρειαστείτε καλώδια και μια σειρά από αντιστάσεις διαφορετικών τιμών. Για μια οθόνη 1602 χωρίς I2C, πρέπει επίσης να επιλέξετε την αντίθεση - αυτό γίνεται με μια μεταβλητή αντίσταση 2 - 20 kOhm.
  • Για να εφαρμόσετε ένα αμπερόμετρο θα χρειαστείτε μια διακλάδωση. Σε μια πρώτη προσέγγιση, θα μπορούσε να είναι μια αντίσταση 0,1 Ohm, 5 W.
  • Για να εφαρμόσετε την αυτόματη απενεργοποίηση, θα χρειαστείτε ένα ρελέ με επαφές σχεδιασμένες για το μέγιστο ρεύμα της συσκευής και τάση ίση με την τάση τροφοδοσίας. Για να ελέγξετε το ρελέ χρειάζεστε ένα τρανζίστορ NPN και μια προστατευτική δίοδο.
  • Η συσκευή θα τροφοδοτείται από εξωτερική πηγή ρεύματος, προφανώς τουλάχιστον 5 V. Εάν η παροχή ρεύματος ποικίλλει πολύ, τότε θα χρειαστεί επίσης ένας ενσωματωμένος σταθεροποιητής τύπου 7805 - θα καθορίσει την τάση του ρελέ.
  • Οταν Το Arduino Pro Mini απαιτεί μετατροπέα USB-TTL για τη μεταφόρτωση του υλικολογισμικού.
  • Για τη ρύθμιση θα χρειαστείτε ένα πολύμετρο.

Βολτόμετρο

Υλοποιώ ένα απλό βολτόμετρο με ένα εύρος περίπου 0 - 20V. Αυτή η σημείωση είναι σημαντική επειδή το ADC του ελεγκτή μας έχει χωρητικότητα 10 bit (1024 διακριτές τιμές), επομένως το σφάλμα θα είναι τουλάχιστον 0,02 V (20 / 1024). Για την υλοποίηση του υλικού, χρειαζόμαστε μια αναλογική είσοδο του ελεγκτή, ένα διαχωριστικό κατασκευασμένο από ένα ζεύγος αντιστάσεων και κάποιο είδος εξόδου (μια οθόνη στην τελική έκδοση, μια σειριακή θύρα μπορεί να χρησιμοποιηθεί για εντοπισμό σφαλμάτων).

Η αρχή της μέτρησης ADC είναι η σύγκριση της τάσης στην αναλογική είσοδο με την αναφορά VRef. Η έξοδος ADC είναι πάντα ακέραιος - 0 αντιστοιχεί σε 0V, 1023 αντιστοιχεί σε τάση VRef. Η μέτρηση υλοποιείται με μια σειρά διαδοχικών ενδείξεων τάσης και υπολογισμού του μέσου όρου κατά την περίοδο μεταξύ των ενημερώσεων της τιμής στην οθόνη. Η επιλογή της τάσης αναφοράς είναι σημαντική επειδή είναι προεπιλεγμένη στην τάση τροφοδοσίας, η οποία μπορεί να μην είναι σταθερή. Αυτό δεν μας ταιριάζει καθόλου - θα πάρουμε ως βάση μια σταθερή εσωτερική πηγή αναφοράς με τάση 1,1 V, αρχικοποιώντας την καλώντας analogReference(INTERNAL). Στη συνέχεια θα βαθμονομήσουμε την τιμή του χρησιμοποιώντας τις ενδείξεις του πολύμετρου.

Το διάγραμμα στα αριστερά δείχνει μια παραλλαγή με άμεσο έλεγχο της οθόνης (απλά ελέγχεται - δείτε το τυπικό σκίτσο LiquidCrystal\HelloWorld). Στα δεξιά είναι η επιλογή I2C, την οποία θα χρησιμοποιήσω περαιτέρω. Το I2C σάς επιτρέπει να εξοικονομείτε καλώδια (από τα οποία υπάρχουν 10 στη συνηθισμένη έκδοση, χωρίς να υπολογίζεται ο οπίσθιος φωτισμός). Αλλά αυτό απαιτεί μια πρόσθετη ενότητα και πιο περίπλοκη προετοιμασία. Σε κάθε περίπτωση, πρέπει πρώτα να ελεγχθεί η εμφάνιση των χαρακτήρων στη μονάδα και να ρυθμιστεί η αντίθεση - για να γίνει αυτό, πρέπει απλώς να εμφανίσετε οποιοδήποτε κείμενο μετά την προετοιμασία. Η αντίθεση ρυθμίζεται από την αντίσταση R1 ή μια παρόμοια αντίσταση της μονάδας I2C.

Η είσοδος είναι ένας διαιρέτης 1:19, ο οποίος σας επιτρέπει να λάβετε μέγιστη τάση περίπου 20 V σε Vref = 1,1 (συνήθως ένας πυκνωτής + μια δίοδος zener τοποθετείται παράλληλα στην είσοδο για προστασία, αλλά αυτό δεν είναι σημαντικό για εμάς προς το παρόν ). Οι αντιστάσεις έχουν εξάπλωση, το ίδιο και το Vref αναφοράς του ελεγκτή, οπότε μετά τη συναρμολόγηση πρέπει να μετρήσουμε την τάση (τουλάχιστον την παροχή) παράλληλα με τη συσκευή μας και ένα πολύμετρο αναφοράς και να επιλέξουμε Vref στον κωδικό μέχρι να ταιριάζουν οι ενδείξεις. Αξίζει επίσης να σημειωθεί ότι κάθε ADC έχει μηδενική τάση μετατόπισης (η οποία χαλάει τις μετρήσεις στην αρχή του εύρους), αλλά δεν θα ασχοληθούμε προς το παρόν.

Θα είναι επίσης σημαντικό να διαχωριστεί η τροφοδοσία και το έδαφος μέτρησης. Το ADC μας έχει ανάλυση ελαφρώς χειρότερη από 1 mV, κάτι που μπορεί να δημιουργήσει προβλήματα εάν η καλωδίωση είναι λανθασμένη, ειδικά σε μια πλακέτα ψησίματος. Επειδή η διάταξη της πλακέτας της μονάδας έχει ήδη γίνει και δεν έχουμε παρά να επιλέξουμε τις ακίδες. Η μονάδα έχει πολλές ακίδες «γείωσης», επομένως πρέπει να βεβαιωθούμε ότι η ισχύς εισέρχεται στη μονάδα μέσω της μίας «γείωσης» και οι μετρήσεις μέσω της άλλης. Στην πραγματικότητα, για να κάνω αλλαγές, χρησιμοποιώ πάντα τον πείρο γείωσης που βρίσκεται πιο κοντά στις αναλογικές εισόδους.

Για τον έλεγχο του I2C, χρησιμοποιείται μια έκδοση της βιβλιοθήκης LiquidCrystal_I2C - στην περίπτωσή μου, υποδεικνύεται το συγκεκριμένο pinout της μονάδας I2C (οι Κινέζοι παράγουν μονάδες με διαφορετικά χειριστήρια). Σημειώνω επίσης ότι το I2C στο Arduino απαιτεί τη χρήση ακίδων A4 και A5 - στην πλακέτα Pro Mini δεν βρίσκονται στην άκρη, κάτι που είναι άβολο για πρωτότυπο στο BreadBoard.

Πηγή

#περιλαμβάνω #περιλαμβάνω // Απλό βολτόμετρο με οθόνη i2c 1602. V 16,11 // Ρυθμίσεις για την οθόνη i2c 1602 με μη τυπικό pinout #define LCD_I2C_ADDR 0x27 #define BACKLIGHT 3 #define LCD_EL 2 #define LCD_EL 2 #define LCD_RW 2 #define LCD_fin 1602 5 #define LCD_D6 6 #define LCD_D7 7 LiquidCrystal_I2C lcd(LCD_I2C_ADDR,LCD_EN,LCD_RW,LCD_RS,LCD_D4,LCD_D5,LCD_D6,LCD_D7); // Χρόνος ενημέρωσης ανάγνωσης, ms (200-2000) #define REFRESH_TIME 330 // Αναλογική είσοδος #define PIN_VOLT A0 // Εσωτερική τάση αναφοράς (επιλογή) const float VRef = 1,10; // Συντελεστής διαίρεσης αντίστασης εισόδου (Rh + Rl) / Rl. ΣΕ<-[ Rh ]--(analogInPin)--[ Rl ]--|GND const float VoltMult = (180.0 + 10.0) / 10.0; float InVolt, Volt; void setup() { analogReference(INTERNAL); // Инициализация дисплея lcd.begin (16, 2); lcd.setBacklightPin(BACKLIGHT, POSITIVE); lcd.setBacklight(HIGH); // включить подсветку lcd.clear(); // очистить дисплей lcd.print("Voltage"); } void loop() { unsigned long CalcStart = millis(); int ReadCnt = 0; InVolt = 0; // Чтение из порта с усреднением while ((millis() - CalcStart) < REFRESH_TIME) { InVolt += analogRead(PIN_VOLT); ReadCnt++; } InVolt = InVolt / ReadCnt; // Смещение 0 для конкретного ADC (подобрать или отключить) if (InVolt >0,2) InVolt += 3; // Μετατροπή σε βολτ (Τιμή: 0..1023 -> (0..VRef) σε κλίμακα Mult) Volt = InVolt * VoltMult * VRef / 1023; // Δεδομένα εξόδου lcd.setCursor (0, 1); lcd.print(Volt); lcd.print("V"); )

Αυτό το άρθρο παρέχει ένα ενδιαφέρον διάγραμμα για όσους τους αρέσει να πειραματίζονται και Arduino. Διαθέτει ένα απλό ψηφιακό βολτόμετρο που μπορεί να μετρήσει με ασφάλεια την τάση DC μεταξύ 0 και 30 V. Η ίδια η πλακέτα Arduino μπορεί να τροφοδοτηθεί από μια τυπική παροχή 9 V.



Όπως γνωρίζετε, χρησιμοποιώντας την αναλογική είσοδο Arduino μπορείτε να μετρήσετε τάση από 0 έως 5 V (με τυπική τάση αναφοράς 5 V). Αλλά αυτό το εύρος μπορεί να επεκταθεί χρησιμοποιώντας έναν διαιρέτη τάσης.


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



Ο αναλογικός αισθητήρας στο Arduino ανιχνεύει την τάση στην αναλογική είσοδο και τη μετατρέπει σε ψηφιακή μορφή που μπορεί να διαβαστεί από τον μικροελεγκτή. Συνδέουμε έναν διαιρέτη τάσης που σχηματίζεται από αντιστάσεις R1 (100K) και R2 (10K) στην αναλογική είσοδο A0. Με αυτές τις τιμές αντίστασης, μπορεί να τροφοδοτηθεί έως και 55 V στο Arduino, αφού ο συντελεστής διαίρεσης σε αυτή την περίπτωση είναι 11, άρα 55V/11 = 5V. Για να βεβαιωθείτε ότι οι μετρήσεις είναι ασφαλείς για την πλακέτα, είναι προτιμότερο να μετράτε την τάση στην περιοχή από 0 έως 30 V.



Εάν οι ενδείξεις της οθόνης δεν ταιριάζουν με τις επαληθευμένες ενδείξεις του βολτόμετρου, χρησιμοποιήστε ένα ψηφιακό πολύμετρο ακριβείας για να βρείτε τις ακριβείς τιμές των R1 και R2. Σε αυτήν την περίπτωση, στον κωδικό θα χρειαστεί να αντικαταστήσετε τα R1=100000.0 και R2=10000.0 με τις δικές σας τιμές. Στη συνέχεια, θα πρέπει να ελέγξετε την παροχή ρεύματος μετρώντας την τάση στην πλακέτα μεταξύ 5V και GND. Η τάση μπορεί να είναι 4,95 V. Στη συνέχεια, στον κωδικό vout = (τιμή * 5,0) / 1024,0 πρέπει να αντικαταστήσετε το 5,0 με 4,95. Συνιστάται η χρήση αντιστάσεων ακριβείας με σφάλμα όχι μεγαλύτερο από 1%. Θυμηθείτε ότι η τάση πάνω από 55 V μπορεί να βλάψει την πλακέτα Arduino!



#περιλαμβάνω LiquidCrystal lcd(7, 8, 9, 10, 11, 12); int analogInput = 0; float vout = 0,0; float vin = 0,0; float R1 = 100000,0; // αντίσταση R1 (100K) float R2 = 10000,0; // αντίσταση R2 (10K) int τιμή = 0; void setup())( pinMode(analogInput, INPUT); lcd.begin(16, 2); lcd.print("DC VOLTMETER"); ) void loop())( // read the analog value = analogRead(analogInput ); βουτ = (τιμή * 5,0) / 1024,0; vin = βουτ / (R2/(R1+R2)), αν (vin<0.09) { vin=0.0;// обнуляем нежелательное значение } lcd.setCursor(0, 1); lcd.print("INPUT V= "); lcd.print(vin); delay(500); }


Στοιχεία που χρησιμοποιούνται:


Πλακέτα Arduino Uno
Αντίσταση 100 KOhm
Αντίσταση 10 KOhm
Αντίσταση 100 ohm
Ποτενσιόμετρο 10 KOhm
Οθόνη LCD 16×2