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

Έξυπνος μετρητής νήματος εκτυπωτή 3D: 5 βήματα (με εικόνες)
Έξυπνος μετρητής νήματος εκτυπωτή 3D: 5 βήματα (με εικόνες)

Βίντεο: Έξυπνος μετρητής νήματος εκτυπωτή 3D: 5 βήματα (με εικόνες)

Βίντεο: Έξυπνος μετρητής νήματος εκτυπωτή 3D: 5 βήματα (με εικόνες)
Βίντεο: 🚀 Το AMAZON 2.0 επιστρέφει! - ONLINE ΚΑΤΑΣΤΗΜΑ σε 6 ώρες - Μέρος 2 2024, Ιούνιος
Anonim
Έξυπνος μετρητής νήματος εκτυπωτή 3D
Έξυπνος μετρητής νήματος εκτυπωτή 3D

Γιατί να μπω στον κόπο να μετράω νήμα; Μερικοί λόγοι:

Οι επιτυχημένες εκτυπώσεις απαιτούν έναν σωστά βαθμονομημένο εξωθητήρα: όταν ο gcode λέει στον εξωθητή να μετακινήσει το νήμα 2mm, πρέπει να μετακινηθεί ακριβώς 2mm. Κακά πράγματα συμβαίνουν αν υπερβολίζει ή υπερβολίζει. Ένας καλά βαθμονομημένος μετρητής μπορεί να κρατήσει έναν εξωθητή ειλικρινή

Οι τεμαχιστές προσεγγίζουν πόση συνολική ίνα θα πάρει μια δεδομένη εκτύπωση (σε μήκος και βάρος) και θα ήθελα να ελέγξω αυτές τις τιμές

Μετρώντας την κίνηση του νήματος επίσης ενημερώστε με πότε ξεκίνησε και πότε σταμάτησε

Χρειαζόμουν κάτι για να καλύψω τον χώρο που άφησε η αφαίρεση του άσχημου γιγαντιαίου λογότυπου στο μπροστινό μέρος του εκτυπωτή μου

Είναι κουλ

Εμπνεύστηκα από αυτό το διδακτικό, το οποίο επανατοποθέτησε ένα παλιό ποντίκι PS/2 ως μετρητή νημάτων για έναν 3D εκτυπωτή. Όχι μόνο πρόσθεσε μια χρήσιμη λειτουργία σε έναν τρισδιάστατο εκτυπωτή, αλλά επανατοποθέτησε μια παλιά συσκευή που διαφορετικά θα κατέληγε σε χωματερή. Αλλά αυτό το έργο χτίστηκε γύρω από τη διεπαφή PS/2 του ποντικιού, η οποία φαινόταν άσκοπα δυσκίνητη. Το πήρα λοιπόν ως ευκαιρία να μάθω για το μόνο ουσιαστικό συστατικό: τον περιστροφικό κωδικοποιητή.

Προμήθειες

Περιστροφικός κωδικοποιητής

Πίνακας dev βασισμένος σε ESP32

Οθόνη I2C OLED (η μονάδα δύο χρωμάτων φαίνεται ιδιαίτερα δροσερή)

Μικρό στιγμιαίο κουμπί

Λιπαντικό ρουλεμάν 608ZZ

Δύο δακτύλιοι από το κατάστημα υλικού (diameter 33mm ID x diameter 1.5mm διάμετρο προφίλ - δείτε σχόλια)

Δύο βίδες 2,5 mm για το περίβλημα

Δύο βίδες 4mm, παξιμάδια και ροδέλες για να συνδέσετε τη βάση στον εκτυπωτή σας

Δέσμη καλωδίων

3D εκτυπωτής και κάποιο νήμα

Βήμα 1: Επιλέξτε έναν περιστροφικό κωδικοποιητή

Επιλέξτε έναν περιστροφικό κωδικοποιητή
Επιλέξτε έναν περιστροφικό κωδικοποιητή
Επιλέξτε έναν περιστροφικό κωδικοποιητή
Επιλέξτε έναν περιστροφικό κωδικοποιητή

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

Αν αξίζει να το κάνεις, αξίζει να το παρακάνεις. Έτσι αγόρασα έναν μεγάλο, φιλικό, κωδικοποιητή 360 σφυγμών ανά περιστροφή και έχτισα το έργο μου γύρω από αυτόν. Αυτό που επέλεξα ήταν ένας Signswise Incremental Optical Rotary Encoder, τύπου LPD3806-360BM-G5-24C. Αλλά κάθε αξιοπρεπής κωδικοποιητής θα κάνει.

Βήμα 2: Προσθέστε μια τροχαλία και ένα ρελαντί

Προσθέστε μια τροχαλία και ένα ρελαντί
Προσθέστε μια τροχαλία και ένα ρελαντί

Η γραμμική κίνηση του νήματος μεταφράζεται σε περιστροφική κίνηση του κωδικοποιητή με τροχαλία. Και το νήμα συγκρατείται στην τροχαλία από ένα ρελαντί.

Η τροχαλία έχει δύο αυλάκια, το καθένα κρατά ένα τεντωμένο δακτύλιο ο, ώστε να μην γλιστράει, Το ρελαντί έχει μια μόνο αυλάκωση v για να διατηρεί το νήμα στο κέντρο της τροχαλίας κωδικοποιητή. Κάθεται σε ένα ρουλεμάν 608ZZ που είχα τοποθετήσει και ήταν τοποθετημένο σε ένα σπειροειδές ελατήριο τυπωμένο ακριβώς στο κύριο σώμα του έργου μου. (Τα αρχεία STL επισυνάπτονται παρακάτω.)

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

Βήμα 3: Κωδικοποίηση

Image
Image

Μόνο για την καταμέτρηση του νήματος, οποιοσδήποτε πίνακας dev με δύο ψηφιακές εισόδους θα κάνει. Ο κωδικοποιητής που επέλεξα έχει τέσσερις ακίδες: Vcc, γείωση και δύο ακίδες κωδικοποιητή. Εδώ είναι μια πολύ ωραία εγγραφή που εξηγεί πώς λειτουργούν οι περιστροφικοί κωδικοποιητές και πώς να τους διασυνδέσετε με το Arduino. (Επίσης: αυτό το άρθρο σχετικά με τους κωδικοποιητές 3 ακίδων.)

Η βασική καταμέτρηση είναι απλή: δύο είσοδοι - ρυθμισμένες για να τραβούν εσωτερικά ώστε οι εξωτερικές αντιστάσεις να μην χρειάζεται να κολληθούν σε Vcc - και μία διακοπή. Πρόσθεσα επίσης ένα κουμπί μηδέν/επαναφοράς, απαιτώντας μία ακόμη είσοδο και διακοπή:

void setUpPins () {

pinMode (ENCODER_PIN_1, INPUT_PULLUP); pinMode (ENCODER_PIN_2, INPUT_PULLUP); pinMode (ZERO_BTN_PIN, INPUT_PULLUP); attachInterrupt (ENCODER_PIN_1, encoderPinDidChange, CHANGE); attachInterrupt (ZERO_BTN_PIN, zeroButtonPressed, CHANGE); } void IRAM_ATTR encoderPinDidChange () {if (digitalRead (ENCODER_PIN_1) == digitalRead (ENCODER_PIN_2)) {position += 1; } else {θέση -= 1; }} void IRAM_ATTR zeroButtonPressed () {// χειρισμός μηδέν & επαναφορά}

Αλλά ήθελα κάτι περισσότερο από έναν απλό πάγκο. Με ένα ESP32 (ή ESP8266) και το ενσωματωμένο WiFi του, μπορώ πραγματικά να κάνω κάτι με τα δεδομένα που συλλέγω. Χρησιμοποιώντας έναν απλό κωδικό λήξης χρόνου (εξηγείται παρακάτω), μπορώ να καθορίσω πότε ξεκινά και τελειώνει η εκτύπωση και να στέλνω αυτά τα συμβάντα ως ειδοποιήσεις στο τηλέφωνό μου. Στο μέλλον, ενδέχεται να προσθέσω έναν αισθητήρα εξάντλησης και να ειδοποιηθώ (και να θέσω σε παύση τον εκτυπωτή μου) όταν χρειάζεται η προσοχή μου.

Ο πλήρης κωδικός βρίσκεται στο Github.

Λίγες σημειώσεις για τον κώδικα:

Για να το προσαρμόσετε στην κατασκευή σας, το μόνο που χρειάζεστε είναι η ανάλυση (encoderPPR) - σε παλμούς ανά περιστροφή, η οποία είναι τυπικά διπλάσια από τις δηλωμένες προδιαγραφές - και η ακτίνα της τροχαλίας (wheelRadius). Αυτές οι τιμές, συν το ssid και τον κωδικό πρόσβασης του wifi σας και τις συγκεκριμένες ακίδες που είναι συνδεδεμένες με το κουμπί, τον κωδικοποιητή και την οθόνη OLED, είναι όλες στο config.h

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

Οι διακοπές είναι ισχυρές - μερικές φορές πολύ ισχυρές. Ένα μόνο πάτημα του κουμπιού μηδέν θα μπορούσε να προκαλέσει την κλήση της συνάρτησης zeroButtonPressed () 10-20 φορές, οπότε πρόσθεσα κάποια λογική αποσύνδεσης. Ο οπτικός κωδικοποιητής μου δεν το χρειαζόταν, αλλά YMMV

Ενώ οι διακοπές φροντίζουν για τις εισόδους ασύγχρονα, η ρουτίνα του βρόχου () χειρίζεται την τήρηση βιβλίων. Το encoderState - ένα enum που μπορεί να τροφοδοτηθεί, να ανασυρθεί ή να σταματήσει - ενημερώνεται με την αλλαγή στη θέση του κωδικοποιητή. Στη συνέχεια, τα χρονικά όρια καθορίζουν πότε ο εκτυπωτής έχει ξεκινήσει και ολοκληρώσει την εκτύπωση. Αλλά το δύσκολο κομμάτι είναι ότι οι τρισδιάστατοι εκτυπωτές ξεκινούν και σταματούν συχνά την κίνηση, οπότε αυτό που λειτούργησε καλύτερα ήταν να ορίσουμε το συμβάν "ολοκλήρωση εκτύπωσης" που σταματούσε συνεχώς για τουλάχιστον 5 δευτερόλεπτα. Οποιαδήποτε κίνηση ενεργοποιεί ένα δεύτερο χρονόμετρο που ορίζει το συμβάν "εκκίνηση εκτύπωσης" μόνο εάν δεν συμβεί "πλήρης εκτύπωση" σε χρονικό πλαίσιο 15 δευτερολέπτων. Στην πράξη, αυτό λειτουργεί κολυμπώντας

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

Υπάρχει ένα σωρό επιπλέον κώδικας στο παράδειγμά μου για να (A) δημιουργήσετε και να διατηρήσετε μια σύνδεση δικτύου με WiFi και mDNS, (B) να πάρετε το χρόνο από έναν διακομιστή NTC, ώστε να μπορώ να σφραγίσω χρονικά τις ειδοποιήσεις έναρξης και λήξης και να εμφανίσω ένα ευχάριστο ρολόι στο OLED μου και (C) χειρίζομαι τις ενημερώσεις OTA, ώστε να μην χρειάζεται να συνδέσω φυσικά τον πίνακα μου στο Mac μου για ενημερώσεις κώδικα. Προς το παρόν, είναι όλα σε ένα μονολιθικό αρχείο C ++, μόνο και μόνο επειδή δεν έχω πάρει τον χρόνο να το οργανώσω καλύτερα

Χρησιμοποίησα την υπέροχη (και δωρεάν) εφαρμογή Prowl iOS για να στείλω ειδοποιήσεις push στο τηλέφωνό μου με τίποτα περισσότερο από μεθόδους HTTP Get

Για να αναπτύξω τον κώδικα και να αναβοσβήνω στον πίνακα, χρησιμοποίησα το θεαματικό PlatformIO που εκτελείται στο Visual Studio Code, και τα δύο δωρεάν

Για το έργο μου, χρησιμοποίησα αυτές τις βιβλιοθήκες: u8g2 του Oliver, elapsedMillis του Paul Stoffregen και HTTPClient του Markus Sattler, η οποία συνοδεύεται από την πλατφόρμα Espressif ESP32. Όλα τα άλλα έρχονται είτε με τη βιβλιοθήκη Arduino είτε με την πλατφόρμα ESP32 στο PlatformIO

Τέλος, δημιούργησα έξι απλούς χάρτες bitm της κύριας τροχαλίας μου σε διαφορετικές γωνίες, ώστε να μπορώ να δείξω μια τακτοποιημένη κινούμενη κίνηση με τον τροχό περιστροφής στο OLED πίσω από τον πάγκο. Κινείται στην κατάλληλη κατεύθυνση με τον κωδικοποιητή, αν και πολύ πιο γρήγορα για πιο δραματικό αποτέλεσμα

Βήμα 4: Καλωδίωση

Καλωδίωση
Καλωδίωση

Σχεδίασα αυτό, έτσι ώστε η καλωδίωση να είναι απλή, κυρίως έτσι ώστε το περίβλημα μου να είναι μικρό, αλλά και ο τρόπος εντοπισμού σφαλμάτων θα ήταν άμεσος. Σημειώστε τις περιορισμένες συνθήκες στο μικρό κουτί μου.:)

Η πρώτη απαίτηση ήταν η τάση τροφοδοσίας 5V του περιστροφικού κωδικοποιητή μου. Από τους διάφορους πίνακες προγραμματιστών ESP32 που είχα στην αποθήκη μου, μόνο μερικοί παρείχαν πραγματικό 5V στο Vcc pin όταν τροφοδοτούνταν από USB. (Οι άλλοι μέτρησαν 4,5-4,8V, το οποίο, σε περίπτωση που τα μαθηματικά σας είναι κακά, είναι χαμηλότερα από 5V.) Ο πίνακας που χρησιμοποίησα ήταν Wemos Lolin32.

Στη συνέχεια, ακολουθούν οι δύο ακίδες σήματος περιστροφικού κωδικοποιητή. Δεδομένου ότι χρησιμοποιώ διακοπές, το κύριο μέλημα είναι ότι οι καρφίτσες που χρησιμοποιώ δεν παρεμβαίνουν σε τίποτα. Τα έγγραφα ESP32 αναφέρουν ότι το ADC2 δεν μπορεί να χρησιμοποιηθεί ταυτόχρονα με το WiFi, έτσι δυστυχώς σημαίνει ότι δεν μπορώ να χρησιμοποιήσω καμία από τις καρφίτσες του ADC2 GPIO: 0, 2, 4, 12, 13, 14, 15, 25, 26, ή 27. Επέλεξα 16 και 17.

Επαγγελματική συμβουλή: εάν, αφού τα συνδυάσετε όλα αυτά, ο κωδικοποιητής σας φαίνεται να μετρά αντίστροφα, μπορείτε απλώς να αλλάξετε τις δύο εκχωρήσεις ακίδων στο config.h.

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

Στη συνέχεια, το κουμπί μηδέν/επαναφοράς συνδέεται μεταξύ γείωσης και ενός άλλου δωρεάν πείρου (επέλεξα το GPIO 18).

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

Τέλος, το OLED, εάν δεν είναι ήδη συνδεδεμένο στην πλακέτα σας, χρειάζεται μόνο τέσσερις ακίδες: 3V3, γείωση, ρολόι i2c και δεδομένα i2c. Στην πλακέτα dev μου, το ρολόι και τα δεδομένα είναι 22 και 21, αντίστοιχα.

Βήμα 5: Εκτυπώστε τα μέρη

Εκτυπώστε τα μέρη
Εκτυπώστε τα μέρη

Σχεδίασα επτά μέρη για αυτήν την κατασκευή:

Η τροχαλία, η οποία τοποθετείται απευθείας στον άξονα του περιστροφικού κωδικοποιητή

Το ρελαντί, το οποίο ταιριάζει σε ένα ρουλεμάν 608ZZ (αφαιρέστε τα περιβλήματα και λιπάνετε με το WD40 ώστε να περιστρέφεται ελεύθερα)

Το στήριγμα, στο οποίο τοποθετούνται οι δύο φτέρνες και ο κωδικοποιητής - σημειώστε το σπειροειδές ελατήριο για το ρελαντί

Μια βάση για τη σταθεροποίηση της θήκης. Η φωτογραφία σε αυτό το βήμα δείχνει πώς το στήριγμα προσαρτάται στο στήριγμα

Το περίβλημα (κάτω) για να κρατήσω την πλακέτα dev ESP32, με ένα χώρο για το καλώδιο USB στο πλάι και ένα άλλο στην κορυφή για την υποδοχή που πρόσθεσα στα καλώδια κωδικοποιητή μου. Αυτό έχει σχεδιαστεί για να ταιριάζει στο Wemos Lolin32, οπότε ίσως χρειαστεί να τροποποιήσετε λίγο αυτό το σχέδιο για να χωρέσει σε διαφορετικό πίνακα

Το περίβλημα (επάνω) για να κρατήσει την οθόνη OLED, μια άλλη σπείρα για το κουμπί μηδέν / επαναφοράς

Μια θήκη κουμπιών προσαρμοσμένη για τον μικροσκοπικό διακόπτη που είχα, σχεδιασμένη για να ακουμπά ανάμεσα στα δύο ράφια στο κάτω περίβλημα. Χρησιμοποίησα κολλητήρι για να "κολλήσω" το διακόπτη στη βάση. δείτε το προηγούμενο βήμα για μια φωτογραφία

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

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

Συνιστάται: