- Μηχανή ζύγισης Arduino που λειτουργεί
- Απαιτούμενα εξαρτήματα για μηχανή ζύγισης με βάση το Arduino
- Μηχανή ζύγισης με βάση το Arduino - Διάγραμμα κυκλώματος
- Δημιουργία του κυκλώματος σε ένα διάστικτο Perfboard
- Δημιουργία περιβλήματος για μηχανή ζύγισης με βάση το Arduino
- Μηχανή ζύγισης Arduino - Κωδικός
Οι ψηφιακές κλίμακες φορτίου είναι ένα άλλο θαύμα της σύγχρονης μηχανικής και σχεδιασμού. Ναι, μιλάμε για τη ζυγαριά που βλέπουμε συχνά στα περισσότερα παντοπωλεία και σε άλλα μέρη, αλλά έχετε αναρωτηθεί ποτέ πώς λειτουργεί μια κλίμακα βάρους; Για να απαντήσουμε σε αυτήν την ερώτηση, σε αυτό το έργο, θα ρίξουμε μια ματιά στο κελί φόρτωσης και τη λειτουργία του. Τέλος, θα κατασκευάσουμε μια φορητή κλίμακα φόρτωσης με βάση το Arduino με τον αισθητήρα βάρους HX711, ο οποίος μπορεί να μετρήσει βάρη έως και 10 κιλά.
Αυτή η μηχανή ζύγισης είναι ιδανική για τοπικά καταστήματα, όπου συσκευάζουν αντικείμενα σε μεγάλη ποσότητα. Όπως και τα εμπορικά προϊόντα, η κλίμακα βάρους μας θα έχει ένα κουμπί μηδέν που θα μηδενίζει την κλίμακα. Επίσης, έχει την επιλογή να ρυθμίζει το βάρος για μέτρηση, όταν το βάρος μέτρησης φτάνει το καθορισμένο βάρος, ένας βομβητής ηχεί γρήγορα και σταματά όταν το καθορισμένο βάρος ισούται με το βάρος μέτρησης. Με αυτόν τον τρόπο, ο χρήστης μπορεί να το συσκευάσει μόνο ακούγοντας τον ήχο και δεν θα έπρεπε να κοιτάξει την οθόνη. Δεδομένου ότι πρόκειται για ένα πολύ απλό έργο, θα το κατασκευάσουμε πολύ εύκολα χρησιμοποιώντας εξαρτήματα όπως το Arduino και το κελί φόρτισης πίεσης. Λοιπόν, χωρίς περαιτέρω καθυστέρηση, ας πάμε κατευθείαν σε αυτό.
Σε προηγούμενο άρθρο, έχουμε κάνει έργα όπως το Raspberry Pi Based Weight Sensor και το IoT Smart Container with Email Alert και Web Monitoring χρησιμοποιώντας τη δημοφιλή μονάδα ενισχυτή κυψελών φορτίων HX711. Επομένως, ελέγξτε αν αυτή είναι η απαίτησή σας.
Μηχανή ζύγισης Arduino που λειτουργεί
Το κύριο συστατικό αυτού του έργου είναι ένα κύτταρο φορτίου και HX711 φορτίο μονάδας ενισχυτή κυττάρων. Όπως μπορείτε να δείτε, η μία πλευρά σημειώνεται με δέκα κιλά. Επίσης, μπορείτε να παρατηρήσετε ένα είδος λευκής προστατευτικής κόλλας πάνω από το κελί φόρτωσης και τέσσερα διαφορετικά χρώματα καλωδίων βγαίνουν, θα αποκαλύψει το μυστικό κάτω από τη λευκή προστατευτική κόλλα και τη λειτουργία αυτών των τεσσάρων χρωμάτων καλωδίων αργότερα στο άρθρο.
Ένα στοιχείο φόρτωσης είναι ένας μορφοτροπέας που μετατρέπει τη δύναμη ή την πίεση σε ηλεκτρική έξοδο. Έχει δύο πλευρές, ας πούμε τη δεξιά και την αριστερή πλευρά, και είναι κατασκευασμένο από μπλοκ αλουμινίου. Όπως μπορείτε να δείτε στη μέση του υλικού αραιώνεται βάζοντας μια μεγάλη τρύπα. Γι 'αυτό είναι το σημείο που υφίσταται παραμόρφωση όταν τοποθετείται φορτίο στην πλευρά στήριξης. Τώρα φανταστείτε ότι το κελί δεξιάς πλευράς είναι τοποθετημένο στη βάση και η αριστερή πλευρά είναι όπου τοποθετείται το φορτίο, αυτή η διαμόρφωση παραμορφώνει την κυψέλη φορτίου καταπόνησης λόγω της γιγαντιαίας τρύπας στη μέση.
Όταν ένα φορτίο τοποθετείται στην πλευρά φόρτωσης του στοιχείου φόρτωσης, το πάνω μέρος θα υποστεί ένταση και το κάτω μέρος θα υποστεί συμπίεση. Γι 'αυτό η ράβδος αλουμινίου λυγίζει προς τα κάτω στην αριστερή πλευρά. Εάν μετρήσουμε αυτήν την παραμόρφωση, μπορούμε να μετρήσουμε τη δύναμη που ασκήθηκε στο μπλοκ αλουμινίου και αυτό ακριβώς θα κάνουμε.
Τώρα, το ερώτημα παραμένει τι υπάρχει μέσα στη λευκή προστατευτική κόλλα; Μέσα σε αυτήν την προστατευτική κόλλα, θα βρούμε ένα πολύ λεπτό ελαστικό εξάρτημα που ονομάζεται καταπόνηση. Ένας μετρητής τάσης είναι ένα συστατικό που χρησιμοποιείται για τη μέτρηση της καταπόνησης. Εάν ρίξουμε μια πιο προσεκτική ματιά σε αυτό το στοιχείο, μπορούμε να δούμε δύο τακάκια σύνδεσης και στη συνέχεια έχουμε ένα αγώγιμο μοτίβο σύρματος με επαναλαμβανόμενες εκτροπές. Αυτό το αγώγιμο σύρμα έχει καθορισμένη αντίσταση. Όταν το λυγίσουμε, η τιμή αντίστασης θα αλλάξει; Έτσι, μια πλευρά του μετρητή τάσης είναι τοποθετημένη και στερεωμένη σε ένα μέρος, εάν τοποθετήσουμε βάρος στην άλλη πλευρά της ράβδου αλουμινίου, αυτό θα αναγκάσει το μανόμετρο τάσης να λυγίσει, το οποίο θα προκαλέσει αλλαγή στην αντίσταση. Πώς συμβαίνει αυτό; Το αγώγιμο σχέδιο του μανόμετρου είναι κατασκευασμένο από χαλκό, αυτό το σύρμα θα έχει μια συγκεκριμένη περιοχή και μήκος, έτσι αυτές οι δύο μονάδες θα δώσουν την αντίσταση του σύρματος. Η αντίσταση ενός σύρματος αντιτίθεται στη ροή του ρεύματος. Τώρα είναι προφανές ότι εάν η περιοχή αυτού του καλωδίου γίνεται μικρότερη,λιγότερα ηλεκτρόνια θα μπορούσαν να περάσουν που σημαίνει χαμηλότερο ρεύμα. Τώρα αν αυξήσουμε την περιοχή, θα αυξήσει την αντίσταση ενός αγωγού. Εάν ασκηθεί κάποια δύναμη σε αυτό το καλώδιο, αυτό θα τεντώσει την περιοχή και θα γίνει μικρότερη ταυτόχρονα, αυξάνεται η αντίσταση. Αλλά αυτή η παραλλαγή αντίστασης είναι πολύ χαμηλή. Εάν τεντώσουμε το μανόμετρο, η αντίσταση θα αυξηθεί και αν το συμπιέσουμε, η αντίσταση θα μειωθεί. Για να μετρήσουμε τη δύναμη, πρέπει να μετρήσουμε την αντίσταση. Η άμεση μέτρηση της αντίστασης δεν είναι πάντα πρακτική, επειδή η αλλαγή είναι πολύ μικρή. Έτσι, αντί να μετρήσουμε την αντίσταση, μπορούμε να μετρήσουμε τις τάσεις εύκολα. Έτσι, σε αυτήν την περίπτωση, πρέπει να μετατρέψουμε την έξοδο μετρητή από τιμές αντίστασης σε τιμές τάσης.Εάν ασκηθεί κάποια δύναμη σε αυτό το καλώδιο, αυτό θα τεντώσει την περιοχή και θα γίνει μικρότερη ταυτόχρονα, αυξάνεται η αντίσταση. Αλλά αυτή η παραλλαγή αντίστασης είναι πολύ χαμηλή. Εάν τεντώσουμε το μανόμετρο, η αντίσταση θα αυξηθεί και αν το συμπιέσουμε, η αντίσταση θα μειωθεί. Για να μετρήσουμε τη δύναμη, πρέπει να μετρήσουμε την αντίσταση. Η άμεση μέτρηση της αντίστασης δεν είναι πάντα πρακτική, επειδή η αλλαγή είναι πολύ μικρή. Έτσι, αντί να μετρήσουμε την αντίσταση, μπορούμε να μετρήσουμε τις τάσεις εύκολα. Έτσι, σε αυτήν την περίπτωση, πρέπει να μετατρέψουμε την έξοδο μετρητή από τιμές αντίστασης σε τιμές τάσης.Εάν ασκηθεί κάποια δύναμη σε αυτό το καλώδιο, αυτό θα τεντώσει την περιοχή και θα γίνει μικρότερη ταυτόχρονα, αυξάνεται η αντίσταση. Αλλά αυτή η παραλλαγή αντίστασης είναι πολύ χαμηλή. Εάν τεντώσουμε το μανόμετρο, η αντίσταση θα αυξηθεί και αν το συμπιέσουμε, η αντίσταση θα μειωθεί. Για να μετρήσουμε τη δύναμη, πρέπει να μετρήσουμε την αντίσταση. Η άμεση μέτρηση της αντίστασης δεν είναι πάντα πρακτική, επειδή η αλλαγή είναι πολύ μικρή. Έτσι, αντί να μετρήσουμε την αντίσταση, μπορούμε να μετρήσουμε τις τάσεις εύκολα. Έτσι, σε αυτήν την περίπτωση, πρέπει να μετατρέψουμε την έξοδο του μετρητή από τις τιμές αντίστασης σε τιμές τάσης.η αντίσταση θα μειωθεί. Για να μετρήσουμε τη δύναμη, πρέπει να μετρήσουμε την αντίσταση. Η άμεση μέτρηση της αντίστασης δεν είναι πάντα πρακτική, επειδή η αλλαγή είναι πολύ μικρή. Έτσι, αντί να μετρήσουμε την αντίσταση, μπορούμε να μετρήσουμε τις τάσεις εύκολα. Έτσι, σε αυτήν την περίπτωση, πρέπει να μετατρέψουμε την έξοδο μετρητή από τιμές αντίστασης σε τιμές τάσης.η αντίσταση θα μειωθεί. Για να μετρήσουμε τη δύναμη, πρέπει να μετρήσουμε την αντίσταση. Η άμεση μέτρηση της αντίστασης δεν είναι πάντα πρακτική, επειδή η αλλαγή είναι πολύ μικρή. Έτσι, αντί να μετρήσουμε την αντίσταση, μπορούμε να μετρήσουμε τις τάσεις εύκολα. Έτσι, σε αυτήν την περίπτωση, πρέπει να μετατρέψουμε την έξοδο του μετρητή από τις τιμές αντίστασης σε τιμές τάσης.
Μπορούμε να το κάνουμε αυτό με τη βοήθεια της γέφυρας Wheatstone. Τοποθετούμε το μανόμετρο στη γέφυρα Wheatstone εάν η γέφυρα είναι ισορροπημένη, η τάση στο μεσαίο σημείο πρέπει να είναι μηδέν (προηγουμένως έχουμε κατασκευάσει ένα έργο όπου έχουμε περιγράψει πώς λειτουργεί μια γέφυρα Wheatstone, μπορείτε να το ελέγξετε αν θέλετε μάθετε περισσότερα για το θέμα). Όταν το μανόμετρο αλλάζει την αντίστασή του, θα αντισταθμίσει τη γέφυρα και η τάση θα αλλάξει επίσης. Έτσι, έτσι η γέφυρα Wheatstone μετατρέπει τις παραλλαγές αντίστασης σε τιμές τάσης.
Αλλά αυτή η αλλαγή τάσης είναι ακόμα πολύ μικρή, οπότε για να αυξηθεί αυτό, πρέπει να χρησιμοποιήσουμε τη μονάδα HX711. Το HX711 είναι ένα διαφορικό ADC 24-bit, με αυτόν τον τρόπο, θα μπορούσαμε να μετρήσουμε πολύ μικρές αλλαγές τάσης. θα δώσει τιμές από 0 έως 2 εκθετική 24.
Απαιτούμενα εξαρτήματα για μηχανή ζύγισης με βάση το Arduino
Για να κάνουμε αυτό το έργο όσο το δυνατόν πιο απλό, χρησιμοποιήσαμε πολύ γενικά στοιχεία που μπορείτε να βρείτε σε οποιοδήποτε τοπικό κατάστημα χόμπι. Η παρακάτω εικόνα θα σας δώσει μια ιδέα για τα συστατικά. Επιπλέον, έχουμε τον Bill of Materials (BOM) που αναφέρεται παρακάτω.
- Load cell (Χρησιμοποιούμε 10 kg load cell)
- Ενισχυτής HX 711
- Arduino Nano
- Συμβατό με I2C LCD 16X2 - I2C
- 1k αντίσταση -2 Αριθ
- LED -2Nos
- Βομβητής
- Κοινό PCB
- 7.4V μπαταρία (αν θέλετε φορητή)
- Ρυθμιστής τάσης LM7805
Μηχανή ζύγισης με βάση το Arduino - Διάγραμμα κυκλώματος
Το κελί φόρτωσης έχει τέσσερα καλώδια που είναι κόκκινα, μαύρα, πράσινα και άσπρα. Αυτό το χρώμα μπορεί να διαφέρει ανάλογα με τους κατασκευαστές, επομένως είναι καλύτερα να ανατρέξετε στο φύλλο δεδομένων. Συνδέστε το κόκκινο στο E + της πλακέτας HX711, συνδέστε το μαύρο στο E-, συνδέστε το λευκό στο A + και συνδέστε το πράσινο στο A-, Dout και το ρολόι της πλακέτας συνδέονται στα D4 και D5 αντίστοιχα. Συνδέστε το ένα άκρο των μπουτόν με τα D3, D8, D9 και άλλα άκρα στο έδαφος. Έχουμε I2C LCD, οπότε συνδέστε το SDA στο A4 και το SCL στο A5. Συνδέστε τη γείωση των LCD, HX711 και Arduino στο έδαφος, συνδέστε επίσης τα VCC με το 5Vpin του Arduino. Όλες οι μονάδες λειτουργούν σε 5V, οπότε έχουμε προσθέσει έναν ρυθμιστή τάσης LM7805. Εάν δεν θέλετε να είναι φορητό, μπορείτε να τροφοδοτήσετε απευθείας το Arduino χρησιμοποιώντας ένα καλώδιο USB.
Δημιουργία του κυκλώματος σε ένα διάστικτο Perfboard
Έχουμε κολλήσει όλα τα εξαρτήματα σε ένα κοινό διάστιχο. Χρησιμοποιήσαμε γυναικείες κεφαλίδες για να κολλήσουμε το Arduino και το ADC με την πλακέτα κυκλώματος, επίσης χρησιμοποιήσαμε καλώδια για τη σύνδεση όλων των μπουτόν και των LED. Αφού ολοκληρωθεί όλη η διαδικασία συγκόλλησης, βεβαιωθήκαμε ότι το σωστό 5V βγαίνει από το LM7805. Τέλος, θέσαμε έναν διακόπτη ενεργοποίησης / απενεργοποίησης του κυκλώματος. Μόλις τελειώσαμε όλοι, έμοιαζε με την παρακάτω εικόνα.
Δημιουργία περιβλήματος για μηχανή ζύγισης με βάση το Arduino
Όπως μπορείτε να δείτε, το κελί φόρτωσης έχει μερικά σπειρώματα βιδών, έτσι μπορούμε να το τοποθετήσουμε σε μια πλάκα βάσης. Θα χρησιμοποιήσουμε μια πλακέτα PVC για τη βάση της κλίμακας μας, για αυτό, κόψαμε πρώτα 20 * 20 cm τετράγωνο και τέσσερα 20 * 5 ορθογώνια από την πλακέτα PVC. Στη συνέχεια, χρησιμοποιώντας σκληρή κόλλα, κολλήσαμε κάθε κομμάτι και φτιάξαμε ένα μικρό περίβλημα.
Θυμηθείτε, δεν διορθώσαμε τη μία πλευρά, γιατί πρέπει να τοποθετήσουμε τα κουμπιά, τα LED και την οθόνη LCD. Στη συνέχεια χρησιμοποιήσαμε μια πλαστική σανίδα για την κορυφή της κλίμακας. Πριν κάνουμε αυτήν τη ρύθμιση μόνιμη, πρέπει να βεβαιωθούμε ότι έχουμε αρκετό χώρο από το έδαφος έως το κελί φόρτωσης, ώστε να είναι σε θέση να λυγίσει, οπότε τοποθετήσαμε βίδες και παξιμάδια μεταξύ του κυττάρου φόρτωσης και της βάσης, επίσης προσθέσαμε μερικοί πλαστικοί αποστάτες μεταξύ του στοιχείου φόρτωσης και του άνω μέρους. χρησιμοποιήσαμε ένα στρογγυλό πλαστικό φύλλο ως κορυφαία έξυπνη ισορροπία.
Στη συνέχεια, τοποθετήσαμε την οθόνη LCD, τα LED και τα κουμπιά στο μπροστινό πλαίσιο, και όλα όσα συνδέονται με μακρύ μονωμένο καλώδιο. Αφού ολοκληρώσαμε τη διαδικασία καλωδίωσης, κολλήσαμε τον μπροστινό πίνακα στην κύρια βάση με κάποια κλίση, ώστε να μπορούμε να διαβάζουμε τις τιμές από την LCD πολύ εύκολα. Τέλος, συνδέσαμε τον κύριο διακόπτη στο πλάι της ισορροπίας και αυτό είναι. Έτσι φτιάξαμε το σώμα για την κλίμακα βάρους μας .
Μπορείτε να σχεδιάσετε με τις ιδέες σας, αλλά θυμηθείτε να τοποθετήσετε το κελί φόρτωσης όπως στην εικόνα.
Μηχανή ζύγισης Arduino - Κωδικός
Καθώς τελειώσαμε με τη διαδικασία κατασκευής για την ψηφιακή μας κλίμακα, μπορούμε να προχωρήσουμε στο τμήμα προγραμματισμού. Για εύκολο προγραμματισμό, πρόκειται να χρησιμοποιήσουμε τη βιβλιοθήκη HX711, τη βιβλιοθήκη EEPROM και τη βιβλιοθήκη LiquidCrystal. Μπορείτε να κατεβάσετε τη βιβλιοθήκη HX711 από το επίσημο αποθετήριο GitHub ή να μεταβείτε στα εργαλεία > συμπερίληψη βιβλιοθήκης > διαχείριση βιβλιοθήκης και, στη συνέχεια , να πραγματοποιήσετε αναζήτηση στη βιβλιοθήκη χρησιμοποιώντας τη λέξη-κλειδί HX711, μετά τη λήψη της βιβλιοθήκης, να την εγκαταστήσετε στο Arduino ide.
Αρχικά, πρέπει να βαθμονομήσουμε το κελί φόρτωσης και να αποθηκεύσουμε αυτήν την τιμή στο EEPROM, για αυτό, μεταβείτε στο αρχείο> παραδείγματα> HX 711_ADC και, στη συνέχεια, επιλέξτε τον κωδικό βαθμονόμησης. Πριν ανεβάσετε τον κωδικό, τοποθετήστε το υπόλοιπο σε σταθερή επιφάνεια. Στη συνέχεια, ανεβάστε τον κωδικό στο Arduino και ανοίξτε τη σειριακή οθόνη. Στη συνέχεια, αλλάξτε το ρυθμό baud σε 572600. Τώρα η οθόνη ζητά να πάρει το βάρος, για αυτό πρέπει να πατήσουμε το t και να εισέλθουμε.
Τώρα, πρέπει να τοποθετήσουμε το γνωστό βάρος στο υπόλοιπο, στην περίπτωσή μου, δηλαδή 194gm. Αφού τοποθετήσετε το γνωστό βάρος, πληκτρολογήστε βάρος στη σειριακή οθόνη και πατήστε enter.
Τώρα, η σειριακή οθόνη σας ρωτά αν θέλετε να αποθηκεύσετε την τιμή στο EEPROM ή όχι, οπότε πληκτρολογήστε Y για να επιλέξετε ναι. Τώρα μπορούμε να δούμε το βάρος στη σειριακή οθόνη.
Ο κύριος κώδικας αυτού του έργου, το οποίο δημιουργήσαμε από το παράδειγμα σκίτσο της βιβλιοθήκης HX711. Μπορείτε να κατεβάσετε τον κωδικό αυτού του έργου από κάτω.
Στην ενότητα κωδικοποίησης, πρώτα, προσθέσαμε και τις τρεις βιβλιοθήκες. Η βιβλιοθήκη HX711 προορίζεται για τη λήψη των τιμών του κελιού φόρτωσης. Το EEPROM είναι η ενσωματωμένη βιβλιοθήκη του Arduino ide, η οποία χρησιμοποιείται για την αποθήκευση τιμών στο EEPROM και η βιβλιοθήκη LiquidCrystal προορίζεται για τη μονάδα LCD l2C.
#περιλαμβάνω
Στη συνέχεια ορίστηκαν ακέραιοι αριθμοί για διαφορετικές ακίδες και εκχωρημένες τιμές. Η λειτουργία HX711_ADC loadcell είναι για τη ρύθμιση του Dout και του pin ρολογιού.
const int HX711_dout = 4; const int HX711_sck = 5; int tpin = 3; HX711_ADC LoadCell (HX711_dout, HX711_sck); const int calVal_eepromAdress = 0; μακρύ t; const int Up_buttonPin = 9; const int Down_buttonPin = 8; κουμπί floatPushCounter = 0; float up_buttonState = 0; float up_lastButtonState = 0; float down_buttonState = 0; float down_lastButtonState = 0;
Στην ενότητα εγκατάστασης, πρώτα, ξεκινήσαμε τη σειριακή οθόνη, αυτό είναι μόνο για εντοπισμό σφαλμάτων Στη συνέχεια, ορίσαμε τις λειτουργίες pin, όλα τα κουμπιά ορίζονται ως είσοδος. Με τη βοήθεια της λειτουργίας Arduino PULL UP, ρυθμίζουμε τις ακίδες σε λογικό υψηλό κανονικά. Έτσι, δεν θέλουμε να χρησιμοποιήσουμε εξωτερικές αντιστάσεις για αυτό.
pinMode (tpin, INPUT_PULLUP); pinMode (6, ΕΞΟΔΟΣ); pinMode (12, ΕΞΟΔΟΣ); pinMode (Up_buttonPin, INPUT_PULLUP); pinMode (Down_buttonPin, INPUT_PULLUP);
Οι ακόλουθες γραμμές κώδικα είναι για τη ρύθμιση LCD I2C. Αρχικά, εμφανίστηκε το κείμενο καλωσορίσματος χρησιμοποιώντας τη λειτουργία LCD.print () , μετά από δύο δευτερόλεπτα, διαγράψαμε την οθόνη χρησιμοποιώντας το lcd.clear () . Δηλαδή, στην αρχή, η οθόνη δείχνει το ARDUINO BALANCE ως κείμενο καλωσορίσματος και μετά από δύο δευτερόλεπτα, θα καθαρίσει και θα εμφανίσει τα βάρη μέτρησης.
lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ARDUINO BALANCE"); lcd.setCursor (0, 1); lcd.print ("ας μετρήσουμε"); καθυστέρηση (2000); lcd.clear ();
Στη συνέχεια άρχισε να διαβάζει τις τιμές από το loadcell χρησιμοποιώντας τη συνάρτηση loadCell.begin () , μετά από αυτό, διαβάζουμε το EEPROM για τις βαθμονομημένες τιμές, το κάνουμε χρησιμοποιώντας τη συνάρτηση EEPROM.get () . Δηλαδή, έχουμε ήδη αποθηκεύσει την τιμή χρησιμοποιώντας σκίτσο βαθμονόμησης στη διεύθυνση EEPROM, επαναλαμβάνουμε αυτήν την τιμή.
LoadCell.begin (); EEPROM.get (calVal_eepromAdress, calibrationValue);
Στην ενότητα βρόχου, πρώτα, ελέγχουμε εάν υπάρχουν διαθέσιμα δεδομένα από το κελί φόρτωσης χρησιμοποιώντας το LoadCell.update (), εάν είναι διαθέσιμο, διαβάζουμε και αποθηκεύουμε αυτά τα δεδομένα, για αυτό, χρησιμοποιούμε το LoadCell.getData () . Στη συνέχεια, πρέπει να εμφανίσουμε την αποθηκευμένη τιμή σε LCD. Για να το κάνουμε αυτό, χρησιμοποιήσαμε τη λειτουργία LCD.print () . επίσης, εκτυπώνουμε το καθορισμένο βάρος. Η ρύθμιση του βάρους ρυθμίζεται με τη βοήθεια του μετρητή κουμπιού. Αυτό εξηγείται στην τελευταία ενότητα.
if (LoadCell.update ()) newDataReady = true; if (newDataReady) { if (millis ()> t + serialPrintInterval) { float i = LoadCell.getData (); lcd.setCursor (0, 0); lcd.print ("set wei:"); lcd.setCursor (9, 0); lcd.print (buttonPushCounter); lcd.setCursor (14, 0); lcd.print ("GM"); lcd.setCursor (0, 1); lcd.print ("βάρος:"); lcd.setCursor (9, 1); lcd.print (i); lcd.setCursor (14, 1); lcd.print ("GM");
Στη συνέχεια, ορίζουμε την τιμή απόβαρου, γι 'αυτό, πρώτα, διαβάζουμε την κατάσταση του κουμπιού απόβαρου χρησιμοποιώντας τη συνάρτηση digitalRead () , εάν η κατάσταση είναι χαμηλή, αποσπάσουμε αυτό το βάρος στο μηδέν. Η λειτουργία απόβαρου αυτής της κλίμακας βάρους είναι να μηδενίσει τις μετρήσεις. Για παράδειγμα, εάν έχουμε ένα μπολ στο οποίο φορτώνονται τα πράγματα, τότε το καθαρό βάρος θα είναι το βάρος του μπολ + το βάρος των πραγμάτων. Εάν πατήσουμε το κουμπί απόβαρου με το μπολ στο κελί φόρτωσης πριν φορτώσουμε τα πράγματα, το βάρος του καλαθιού θα αναιρεθεί και μπορούμε να μετρήσουμε μόνο το βάρος των πραγμάτων.
if (digitalRead (tpin) == LOW) { LoadCell.tareNoDelay ();
Τώρα, πρέπει να ορίσουμε τις προϋποθέσεις για διαφορετικές ενδείξεις, όπως ο καθορισμός της καθυστέρησης του βομβητή και της κατάστασης led. Το κάναμε χρησιμοποιώντας εάν οι συνθήκες, έχουμε συνολικά τρεις συνθήκες. Κατ 'αρχάς, υπολογίζουμε τη διαφορά μεταξύ του καθορισμένου βάρους και του βάρους μέτρησης, στη συνέχεια αποθηκεύσαμε αυτήν την τιμή στη μεταβλητή k.
float k = buttonPushCounter-i;
1. Εάν η διαφορά μεταξύ του καθορισμένου βάρους και του βάρους μέτρησης είναι μεγαλύτερη ή ίση με 50gms, ο βομβητής ηχεί με καθυστέρηση 200 χιλιοστών του δευτερολέπτου (αργά).
εάν (k> = 50) { digitalWrite (6, HIGH); καθυστέρηση (200) digitalWrite (6, LOW); καθυστέρηση (200) }
2. Εάν η διαφορά μεταξύ του καθορισμένου βάρους και του βάρους μέτρησης είναι μικρότερη από 50 και μεγαλύτερη από 1 γραμμάριο, ο βομβητής ηχεί με καθυστέρηση 50 χιλιοστών του δευτερολέπτου (γρηγορότερα).
εάν (k <50 && k> 1) { digitalWrite (6, HIGH); καθυστέρηση (50) digitalWrite (6, LOW); καθυστέρηση (50) }
3. Όταν το βάρος μέτρησης είναι ίσο ή μεγαλύτερο από την καθορισμένη τιμή, αυτό θα ανάψει το πράσινο led και θα σβήσει το βομβητή και το κόκκινο led.
if (i> = buttonPushCounter) { digitalWrite (6, LOW); digitalWrite (12, ΥΨΗΛΟΣ); }
Έχουμε δύο ακόμη άκυρες λειτουργίες () για τον καθορισμό του καθορισμένου βάρους (για την καταμέτρηση του πλήκτρου)
Η συνάρτηση αυξάνει την καθορισμένη τιμή κατά 10gms για κάθε πάτημα. Αυτό γίνεται χρησιμοποιώντας τη λειτουργία digitalRead του Arduino εάν ο πείρος είναι χαμηλός που σημαίνει ότι το κουμπί είναι πατημένο και αυτό θα αυξήσει την τιμή κατά 10gms.
up_buttonState = digitalRead (Up_buttonPin); if (up_buttonState! = up_lastButtonState) { if (up_buttonState == LOW) { bPress = true; buttonPushCounter = κουμπίPushCounter + 10; }
Ομοίως, Ο έλεγχος είναι για τη μείωση της καθορισμένης τιμής κατά 10gms για κάθε πάτημα.
down_buttonState = digitalRead (Down_buttonPin); if (down_buttonState! = down_lastButtonState) { if (down_buttonState == LOW) { bPress = true; buttonPushCounter = κουμπίPushCounter - 10; }
Αυτό σηματοδοτεί το τέλος του τμήματος προγραμματισμού.
Αυτή η ηλεκτρονική κλίμακα με βάση το Arduino είναι ιδανική για τη μέτρηση των βαρών έως και 10 κιλά (μπορούμε να αυξήσουμε αυτό το όριο χρησιμοποιώντας ένα υψηλότερο ονομαστικό φορτίο). Αυτό είναι 99% ακριβές στις αρχικές μετρήσεις.
Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το κύκλωμα μηχανής εξισορρόπησης βάρους LCD με βάση το Arduino, παρακαλώ δημοσιεύστε το στην ενότητα σχολίων, ευχαριστώ!