- Απαιτούμενα στοιχεία για τη δημιουργία μιας κλίμακας βάρους Arduino:
- Φόρτωση μονάδας αισθητήρα βάρους κυψέλης και HX711:
- Επεξήγηση κυκλώματος:
- Επεξήγηση εργασίας:
- Κωδικός ζυγαριάς Arduino:
Σήμερα πρόκειται να κατασκευάσουμε μια μηχανή Arduino wight, συνδέοντας το Load Cell και τον αισθητήρα βάρους HX711 με το Arduino. Έχουμε δει μηχανήματα βάρους σε πολλά καταστήματα, όπου το μηχάνημα εμφανίζει το βάρος τοποθετώντας ένα αντικείμενο στην πλατφόρμα ζύγισης. Εδώ χτίζουμε το ίδιο μηχάνημα ζύγισης χρησιμοποιώντας Arduino και Load Cell, με χωρητικότητα έως 40 κιλά. Αυτό το όριο μπορεί να αυξηθεί περαιτέρω με τη χρήση του στοιχείου φόρτωσης υψηλότερης χωρητικότητας.
Το κύριο συστατικό που απαιτείται για την κατασκευή αυτής της κλίμακας ζύγισης Arduino είναι ένας αισθητήρας που μπορεί να μετατρέψει το βάρος σε ένα ισοδύναμο ηλεκτρικό σήμα. Αυτός ο αισθητήρας ονομάζεται κελί φόρτωσης, οπότε σε αυτό το έργο, θα χρησιμοποιήσουμε αυτό το κελί φόρτωσης ως τον αισθητήρα βάρους Arduino. Έχουμε χρησιμοποιήσει επίσης το ίδιο κελί φόρτωσης σε λίγα άλλα έργα όπως, όπως η φορητή μηχανή ζύγισης λιανικής Arduino, η ζυγαριά Raspberry pi κ.λπ., μπορείτε επίσης να τα ελέγξετε αν ενδιαφέρεστε.
Απαιτούμενα στοιχεία για τη δημιουργία μιας κλίμακας βάρους Arduino:
- Arduino Uno
- Φορτίο κυψέλης (40kg)
- Ενότητα Ενισχυτή κυψέλης φόρτωσης HX711
- LCD 16x2
- Σύνδεση καλωδίων
- καλώδιο USB
- Ψωμί
- Μπουλόνια παξιμαδιών, πλαίσιο και βάση
Φόρτωση μονάδας αισθητήρα βάρους κυψέλης και HX711:
Η κυψέλη φορτίου είναι ένας μορφοτροπέας που μετατρέπει τη δύναμη ή την πίεση σε ηλεκτρική έξοδο. Το μέγεθος αυτής της ηλεκτρικής εξόδου είναι άμεσα ανάλογο με την ισχύ που ασκείται. Τα κελιά φόρτωσης έχουν ένα μανόμετρο, το οποίο παραμορφώνεται όταν ασκείται πίεση σε αυτό. Και έπειτα ο μετρητής τάσης παράγει ένα ηλεκτρικό σήμα κατά την παραμόρφωση καθώς η αποτελεσματική αντίστασή του αλλάζει κατά την παραμόρφωση. Ένα κελί φορτίου αποτελείται συνήθως από τέσσερις μετρητές πίεσης σε διαμόρφωση γέφυρας Wheatstone. Το Load cell διατίθεται σε διάφορα εύρη όπως 5kg, 10kg, 100kg και περισσότερα, εδώ έχουμε χρησιμοποιήσει Load cell, το οποίο μπορεί να ζυγίζει έως και 40kg.
Τώρα τα ηλεκτρικά σήματα που παράγονται από την κυψέλη φόρτωσης είναι σε λίγα χιλιοστόβια, επομένως πρέπει να ενισχυθούν περαιτέρω από κάποιον ενισχυτή και ως εκ τούτου ο αισθητήρας ζύγισης HX711 έρχεται στην εικόνα. Η μονάδα αισθητήρα ζύγισης HX711 διαθέτει τσιπ HX711, το οποίο είναι μετατροπέας A / D υψηλής ακρίβειας 24 (μετατροπέας αναλογικού σε ψηφιακό). Το HX711 διαθέτει δύο αναλογικά κανάλια εισόδου και μπορούμε να κερδίσουμε έως και 128 προγραμματίζοντας αυτά τα κανάλια. Έτσι, η μονάδα HX711 ενισχύει τη χαμηλή ηλεκτρική έξοδο των κυψελών φορτίου και στη συνέχεια αυτό το ενισχυμένο και ψηφιακά μετατρεπόμενο σήμα τροφοδοτείται στο Arduino για να υπολογίσει το βάρος.
Το κελί φόρτωσης συνδέεται με τον ενισχυτή κυψέλης φορτίου HX711 χρησιμοποιώντας τέσσερα καλώδια. Αυτά τα τέσσερα καλώδια είναι κόκκινο, μαύρο, λευκό και πράσινο / μπλε. Μπορεί να υπάρχει μια μικρή παραλλαγή στα χρώματα των καλωδίων από μονάδα σε μονάδα. Κάτω από τις λεπτομέρειες και το διάγραμμα σύνδεσης:
- Το καλώδιο RED είναι συνδεδεμένο στο E +
- Το BLACK Wire είναι συνδεδεμένο στο E-
- Το WHITE Wire είναι συνδεδεμένο στο A-
- Το GREEN Wire είναι συνδεδεμένο στο A +
Διόρθωση κυψέλης φόρτωσης με πλατφόρμα και βάση:
Αυτό το βήμα είναι προαιρετικό και μπορείτε να βάλετε απευθείας τα βάρη στο κελί φόρτωσης χωρίς πλατφόρμα και μπορείτε απλώς να το στερεώσετε χωρίς να το διορθώσετε με οποιαδήποτε βάση, αλλά είναι καλύτερο να συνδέσετε μια πλατφόρμα για να βάλετε τα μεγάλα πράγματα σε αυτήν και να την διορθώσετε σε μια βάση έτσι ώστε να σταματήσει. Εδώ λοιπόν πρέπει να φτιάξουμε ένα πλαίσιο ή πλατφόρμα για να βάλουμε τα πράγματα για τη μέτρηση βάρους. Απαιτείται επίσης βάση για τη στερέωση του στοιχείου φόρτωσης πάνω από αυτό χρησιμοποιώντας παξιμάδια και μπουλόνια. Εδώ χρησιμοποιήσαμε σκληρό χαρτόνι για το πλαίσιο για την τοποθέτηση αντικειμένων πάνω από αυτό και μια ξύλινη σανίδα ως βάση. Τώρα κάντε τις συνδέσεις όπως φαίνεται στο διάγραμμα κυκλώματος και είστε έτοιμοι να ξεκινήσετε.
Επεξήγηση κυκλώματος:
Οι συνδέσεις για αυτό το έργο είναι εύκολες και το σχηματικό δίνεται παρακάτω. Οι ακίδες 16x2 LCD RS, EN, d4, d5, d6 και d7 συνδέονται με τους αριθμούς ακίδων 8, 9, 10, 11, 12 και 13 του Arduino αντίστοιχα. Οι ακροδέκτες DX και SCK της μονάδας HX711 συνδέονται απευθείας με τους ακροδέκτες Adu και A1 του Arduino. Οι συνδέσεις κυψέλης φόρτωσης με τη μονάδα HX711 εξηγούνται ήδη νωρίτερα και επίσης φαίνονται στο παρακάτω διάγραμμα κυκλώματος.
Επεξήγηση εργασίας:
Η αρχή λειτουργίας αυτού του έργου μέτρησης βάρους Arduino είναι εύκολη. Πριν ξεκινήσουμε τις λεπτομέρειες, πρώτα, πρέπει να βαθμονομήσουμε αυτό το σύστημα για τη μέτρηση του σωστού βάρους. Όταν ο χρήστης το ενεργοποιήσει, το σύστημα θα ξεκινήσει αυτόματα τη βαθμονόμηση. Και αν ο χρήστης θέλει να το βαθμονομήσει χειροκίνητα, πατήστε το κουμπί. Έχουμε δημιουργήσει μια συνάρτηση void calibrate () για σκοπούς βαθμονόμησης, ελέγξτε τον παρακάτω κώδικα.
Για βαθμονόμηση, περιμένετε για ένδειξη LCD για τοποθέτηση 100 γραμμαρίων πάνω από το κελί φόρτωσης, όπως φαίνεται στην παρακάτω εικόνα. Όταν η οθόνη LCD δείξει "βάλτε 100 γρ" τότε τοποθετήστε το βάρος 100 γρ πάνω από το κελί φόρτωσης και περιμένετε. Μετά από μερικά δευτερόλεπτα, η διαδικασία βαθμονόμησης θα ολοκληρωθεί. Μετά τη βαθμονόμηση, ο χρήστης μπορεί να βάλει οποιοδήποτε βάρος (έως 40 κιλά) πάνω από το κελί φόρτωσης και να πάρει την τιμή πάνω από την LCD σε γραμμάρια.
Σε αυτό το έργο, χρησιμοποιήσαμε το Arduino για τον έλεγχο ολόκληρης της διαδικασίας. Το στοιχείο κυψέλης ανιχνεύει το βάρος και παρέχει ηλεκτρική αναλογική τάση στη μονάδα ενισχυτή φόρτωσης HX711. Το HX711 είναι ένα 24bit ADC, το οποίο ενισχύει και μετατρέπει ψηφιακά την έξοδο Cell cell. Στη συνέχεια, αυτή η ενισχυμένη τιμή τροφοδοτείται στο Arduino. Τώρα το Arduino υπολογίζει την έξοδο του HX711 και το μετατρέπει σε τιμές βάρους σε γραμμάρια και το εμφανίζει σε LCD. Χρησιμοποιείται ένα μπουτόν για τη βαθμονόμηση του συστήματος. Έχουμε γράψει ένα πρόγραμμα Arduino για όλη τη διαδικασία, ελέγξτε τον κώδικα και το βίντεο επίδειξης στο τέλος αυτού του σεμιναρίου.
Κωδικός ζυγαριάς Arduino:
Το μέρος προγραμματισμού αυτού του έργου είναι λίγο περίπλοκο για αρχάριους. Σε αυτό το έργο, δεν χρησιμοποιήσαμε καμία βιβλιοθήκη για τη διασύνδεση του αισθητήρα φόρτωσης HX711 με το Arduino. Ακολουθήσαμε μόλις το φύλλο δεδομένων του HX711 και τις σημειώσεις εφαρμογής. Παρόλο που υπάρχουν ορισμένες βιβλιοθήκες για το σκοπό αυτό, όπου πρέπει να συμπεριλάβετε μόνο αυτήν τη βιβλιοθήκη και μπορείτε να πάρετε το βάρος χρησιμοποιώντας μια γραμμή κώδικα.
Πρώτα απ 'όλα, έχουμε συμπεριλάβει ένα αρχείο κεφαλίδας για LCD και ορίσαμε τις ακίδες για το ίδιο. Και για μπουτόν επίσης. Στη συνέχεια, δηλώθηκαν ορισμένες μεταβλητές για τον υπολογισμό.
#περιλαμβάνω
Μετά από αυτό, έχουμε δημιουργήσει την παρακάτω συνάρτηση για την ανάγνωση δεδομένων από τη μονάδα HX711 και επιστρέφουμε την έξοδο.
unsigned long readCount (void) {χωρίς υπογραφή long Count; χωρίς υπογραφή char i; pinMode (DT, OUTPUT); digitalWrite (DT, HIGH); digitalWrite (SCK, LOW); Πλήθος = 0; pinMode (DT, INPUT); ενώ (digitalRead (DT)); για (i = 0; i <24; i ++) {digitalWrite (SCK, HIGH); Καταμέτρηση = Καταμέτρηση << 1; digitalWrite (SCK, LOW); if (digitalRead (DT)) Αριθμός ++; } digitalWrite (SCK, HIGH); Πλήθος = Καταμέτρηση ^ 0x800000; digitalWrite (SCK, LOW); επιστροφή (Count) }
Μετά από αυτό, έχουμε προετοιμάσει την οθόνη LCD και δίνουμε οδηγίες για τους ακροδέκτες εισόδου και εξόδου σε ρύθμιση κενού ().
άκυρη ρύθμιση () {Serial.begin (9600); pinMode (SCK, OUTPUT); pinMode (sw, INPUT_PULLUP); lcd.begin (16, 2); lcd.print ("Βάρος"); lcd.setCursor (0,1); lcd.print ("Μέτρηση"); καθυστέρηση (1000) lcd.clear (); μετρώ την διάμετρο(); }
Στη συνέχεια στη λειτουργία void loop () , έχουμε διαβάσει δεδομένα από τη μονάδα HX711 και μετατρέψαμε αυτά τα δεδομένα σε βάρος (γραμμάρια) και τα στείλαμε στην οθόνη LCD.
void loop () {count = readCount (); int w = (((μέτρηση-δείγμα) / val) -2 * ((count-sample) / val)); Serial.print ("βάρος:"); Serial.print ((int) w); Serial.println ("g"); lcd.setCursor (0,0); lcd.print ("Βάρος"); lcd.setCursor (0,1); lcd.print (w); lcd.print ("g"); εάν (digitalRead (sw) == 0) {val = 0; δείγμα = 0; β = 0; μέτρηση = 0; μετρώ την διάμετρο(); }}
Πριν από αυτό, έχουμε δημιουργήσει μια λειτουργία βαθμονόμησης στην οποία έχουμε βαθμονομήσει το σύστημα τοποθετώντας το βάρος 100gm πάνω από το στοιχείο Cell.
άκυρη βαθμονόμηση () {lcd.clear (); lcd.print ("Βαθμονόμηση…"); lcd.setCursor (0,1); lcd.print ("Παρακαλώ περιμένετε…"); για (int i = 0; i <100; i ++) {count = readCount (); δείγμα + = μέτρηση; Serial.println (πλήθος); }……………….
Εδώ μάθαμε λοιπόν τη βασική διασύνδεση του Load cell και του HX11 Weight Sensor με το Arduino για να μετρήσουμε τα βάρη. Στα σεμινάρια κειμένου μας, θα δημιουργήσουμε μερικές εφαρμογές με βάση τη μέτρηση βάρους, όπως Smart container, Automatic gate κ.λπ.