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

Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από παλιοσίδερα: 5 βήματα
Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από παλιοσίδερα: 5 βήματα

Βίντεο: Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από παλιοσίδερα: 5 βήματα

Βίντεο: Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από παλιοσίδερα: 5 βήματα
Βίντεο: Sainsmart 3018 PROVer Mach3 Cnc Build, Test & Review 2024, Ιούλιος
Anonim
Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από παλιοσίδερα
Εργαλείο μέτρησης ρυθμού τροφοδοσίας CNC κατασκευασμένο από παλιοσίδερα

Wantedθελε ποτέ κανείς να μετρήσει τον πραγματικό ρυθμό τροφοδοσίας σε μηχανή CNC; Πιθανώς όχι, έως ότου τα κομμάτια φρεζαρίσματος είναι άθικτα μετά από μια εργασία CNC … αλλά όταν αρχίσουν να σπάνε σε τακτική βάση, ίσως είναι καιρός να ερευνήσουμε. Σε αυτό το οδηγό μπορείτε να ακολουθήσετε μια αναζήτηση για τον προσδιορισμό του πραγματικού ρυθμού τροφοδοσίας ενός μηχανήματος CNC. Θα καλύψει το τμήμα αντίστροφης μηχανικής ενός εκτυπωτή, υλικολογισμικού arduino, λογισμικού υπολογιστή και τα αποτελέσματα που πήρα με τη βοήθεια των συναδέλφων μου, και ένα σκουπίδι που μετατράπηκε σε θησαυρό.

Βήμα 1: Υλικά, Εργαλεία, Συσκευές που χρησιμοποιούνται για την εκτέλεση του έργου

Όταν άρχισα να εργάζομαι σε αυτό, σκέφτηκα μια σύντομη λίστα με τα πράγματα που θα χρειαστούμε:

  • αποσυναρμολογημένος μηχανισμός μεταφοράς εκτυπωτή
  • εργαλεία χειρός για να το προσαρμόσετε
  • κολλητήρι, συγκόλληση, σύρματα
  • πολύμετρο
  • παλμογράφος ή λογικός αναλυτής - αυτό δεν είναι απολύτως απαραίτητο
  • παροχή ηλεκτρικού ρεύματος
  • μικροσκόπιο
  • Arduino nano + pinout
  • Υπολογιστής με Arduino IDE, Visual Studio 2008 Express + MS Charting εργαλεία εγκατεστημένα
  • (MPU6050 - κατέληξα να μην το χρησιμοποιώ)
  • πρόθυμοι να αναζητήσουν όλα όσα δεν ξέρετε πώς να κάνετε

Στην αρχή, σκέφτηκα ότι ένας πίνακας MPU6050 θα μου επιτρέψει να μετρήσω την ταχύτητα τροφοδοσίας και στους τρεις άξονες ταυτόχρονα. Έχοντας το επιταχυνσιόμετρο μέσα του, ήμουν σίγουρος ότι η σύνοψη των δεδομένων του επιταχυνσιόμετρου θα μου δώσει την επιθυμητή τιμή - την ταχύτητα σε κάθε άξονα. Μετά τη λήψη και την τροποποίηση ενός αποσπάσματος Arduino που εμφάνιζε ακατέργαστα δεδομένα στη σειριακή οθόνη, έγραψα ένα μικρό πρόγραμμα υπολογιστή στο Visual Studio που επεξεργάστηκε τα δεδομένα και το σχεδίασα σε ένα γράφημα για ευκολότερη ερμηνεία. Έπρεπε να κατεβάσω τόσο το Visual Studio C# Express 2008 όσο και τα εργαλεία χαρτογράφησης για αυτό.

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

Βήμα 2: Υλικά που έπρεπε να γίνουν

Υλικά υλικού που έπρεπε να γίνουν
Υλικά υλικού που έπρεπε να γίνουν
Υλικά υλικού που έπρεπε να γίνουν
Υλικά υλικού που έπρεπε να γίνουν
Υλικά υλικού που έπρεπε να γίνουν
Υλικά υλικού που έπρεπε να γίνουν
Υλικά υλικού που έπρεπε να γίνουν
Υλικά υλικού που έπρεπε να γίνουν

Αντίστροφη μηχανική

Φυσικά, ο μηχανισμός του εκτυπωτή δεν είχε αριθμό εξαρτήματος που θα μπορούσα να χρησιμοποιήσω για να προσδιορίσω τις ακριβείς ιδιότητές του, χρειαζόταν λίγη αντίστροφη μηχανική για να φτάσουμε εκεί που θέλαμε. Αφού εξέτασα προσεκτικά τον μηχανισμό και τα ηλεκτρονικά, αποφάσισα ότι το πρώτο πράγμα πρέπει να είναι η αναγνώριση των ακίδων του οπτικού αισθητήρα. Αυτό έπρεπε να γίνει προκειμένου να διασυνδεθεί το όλο θέμα με το Arduino. Αποσυναρμολόγησα το μαύρο πλαστικό μέρος, έβγαλα το PCB και εξέτασα τον αισθητήρα: είχε γραμμένο το ROHM RPI-2150. Αυτό με χαροποίησε, η ελπίδα ήταν μεγάλη ότι θα βρω ένα φύλλο δεδομένων. Δυστυχώς, αυτό είναι είτε ένα παλιό είτε ένα προσαρμοσμένο μέρος - δεν υπήρχε φύλλο δεδομένων που να βρεθεί οπουδήποτε στον ιστό. Αυτό σήμαινε ότι έπρεπε να πάρω τα πράγματα στα χέρια μου: γνωρίζοντας ότι αυτοί οι αισθητήρες έχουν συνήθως ένα υπέρυθρο LED και δύο φωτο-τρανζίστορ μέσα, έπιασα ένα πολύμετρο, το έβαλα σε λειτουργία μέτρησης διόδου και άρχισα να μετράω μεταξύ των ακίδων.

Οι ακίδες τροφοδοσίας είναι συνήθως εύκολο να βρεθούν - θα έχουν πυκνωτές απέναντί τους και συνήθως συνδέονται με μεγάλα ίχνη στα PCB. Τα ίχνη εδάφους συνδέονται συχνά με πολλαπλά μαξιλάρια για καλύτερη απόρριψη θορύβου.

Ωστόσο, οι ακίδες εισόδου και εξόδου δεν είναι τόσο ασήμαντες. Κατά τη μέτρηση σε μια δίοδο, ο μετρητής θα δείχνει την τάση εμπρός του προς τη μία κατεύθυνση και υπερφόρτωση (άπειρο) στην άλλη. Κατάφερα να εντοπίσω τέσσερις διόδους μεταξύ ακίδων, κατέληξα στο συμπέρασμα ότι η τέταρτη δίοδος πρέπει να είναι κάποιου είδους διόδου zener ή TVS, καθώς ήταν ακριβώς μεταξύ των ακίδων ισχύος του εξαρτήματος. Ο εντοπισμός του πομπού υπέρυθρων ήταν εύκολος, υπήρχε μια αντίσταση 89R σε σειρά μαζί του. Έμεινα με δύο μετρήσεις διόδου στις υπόλοιπες δύο ακίδες, αυτές έπρεπε να είναι οι δύο δέκτες.

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

Όταν εντοπίστηκε ο πομπός και οι δύο δέκτες, κόλλησα καλώδια στις καρφίτσες τους, ώστε να μπορώ να συνδέσω τον αισθητήρα με το Arduino. Πριν από αυτό, έδωσα στον αισθητήρα 3.3V, τράβηξα τη λωρίδα μεταξύ του αισθητήρα μερικές φορές και παρατήρησα το τετραγωνικό κύμα στις εξόδους. Η συχνότητα του τετραγωνικού κύματος ποικίλλει ανάλογα με την ταχύτητα κίνησης και κατέληξα ότι το σύστημα μέτρησης είναι πλέον έτοιμο να συνδεθεί με το Arduino.

Συνδέοντας το Arduino

Η σύνδεση αυτού του νέου «αισθητήρα» είναι πολύ εύκολη. Απλώς συνδέστε τις εξόδους του αισθητήρα στα D2 και D3 (ακίδες με δυνατότητα διακοπής!), Και τις γραμμές τροφοδοσίας και η κωδικοποίηση μπορεί να ξεκινήσει.

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

Κωδικοποίηση Arduino
Κωδικοποίηση Arduino

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

  • σε μία κατεύθυνση η φάση Α βρίσκεται σε υψηλή λογική σε κάθε ανοδική άκρη φάσης Β
  • στην άλλη κατεύθυνση η φάση Α είναι χαμηλή λογικά σε κάθε άνοδο της φάσης Β

Αυτή ήταν η ιδιότητα του κωδικοποιητή που εκμεταλλεύτηκα: δεδομένου ότι η συνάρτηση elapse εκτελείται κάθε φορά που το D2 έχει μια ανερχόμενη άκρη, έγραψα απλά ένα αν αυξάνει έναν μετρητή όταν το D3 είναι υψηλό και το μειώνει όταν το D3 είναι χαμηλό. Αυτό λειτούργησε στην πρώτη προσπάθεια, έστειλα την τιμή του μετρητή στη σειριακή οθόνη και την παρακολούθησα να αυξάνεται/μειώνεται όταν μετακίνησα την κεφαλή του εκτυπωτή στον άξονα.

Εν συντομία, το υλικολογισμικό κάνει τα εξής στη λειτουργία βρόχου:

  1. ελέγχει το buffer σειριακής λήψης για τυχόν εισερχόμενα δεδομένα
  2. εάν υπάρχουν εισερχόμενα δεδομένα, ελέγξτε αν είναι «1» ή όχι
  3. αν είναι «1», σημαίνει ότι το λογισμικό υπολογιστή ζητά την αντίθετη αξία
  4. στείλτε την τιμή του μετρητή στον υπολογιστή μέσω σειριακής σειράς
  5. ξεκινήστε από το 1.

Με αυτό, η μπάλα είναι τώρα στο γήπεδο του λογισμικού PC. Ας μπούμε σε αυτό!

Βήμα 4: Λογισμικό Visual Studio C#

Ο σκοπός του προγράμματος VS C# ήταν να μετατοπίσει το υπολογιστικό βάρος από το Arduino στον υπολογιστή. Αυτό το λογισμικό λαμβάνει τα δεδομένα που παρέχει το Arduino, υπολογίζει και εμφανίζει την ταχύτητα με τη μορφή γραφήματος.

Αυτό που έκανα πρώτα ήταν να ψάξω στο google πώς να κάνω σειριακή επικοινωνία σε C#. Βρήκα πολλές καλές πληροφορίες στο MSDN.com μαζί με ένα καλό παράδειγμα, στη συνέχεια έριξα ό, τι δεν χρειαζόμουν - βασικά τα πάντα εκτός από το κομμάτι της ανάγνωσης. Ρύθμισα τη θύρα COM και την ταχύτητα που ταιριάζει με αυτή του Arduino, έπειτα έκανα μερικές προσπάθειες και έριξα όλα όσα ήρθαν στη σειριακή θύρα σε ένα πλαίσιο κειμένου πολλαπλών γραμμών.

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

Εάν δεν μπορείτε να δείτε το στοιχείο ελέγχου γραφήματος στην εργαλειοθήκη σας VS, μπορείτε να κάνετε google το πρόβλημα και να βρείτε τη λύση εδώ (αναζητήστε την απάντηση #1): σύνδεσμος

Η αρχή της μέτρησης

Για να βρούμε τη σύνδεση μεταξύ του αριθμού των μετρήσεων και της απόστασης που διανύει η κεφαλή, μηδενίσαμε την τιμή μέτρησης, μετακινήσαμε την κεφαλή του εκτυπωτή 100 mm με το χέρι και παρατηρήσαμε την αλλαγή των μετρήσεων. Τελικά καταλήξαμε στην ακόλουθη αναλογία: 1 καταμέτρηση = 0,17094mm.

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

Υπάρχει ένας πρόχειρος χρόνος λογισμικού 50ms χάρη στο TMR0, αλλά παρατηρήσαμε ότι αυτοί οι χρονισμοί δεν ήταν πολύ ακριβείς. Στην πραγματικότητα, μετά από μερικές μετρήσεις ταχύτητας λογισμικού, διαπιστώσαμε ότι τα χρονισμένα 50ms δεν είναι καθόλου 50ms. Αυτό σήμαινε ότι τα δείγματα δεν ελήφθησαν σε σταθερό διάστημα, οπότε ο υπολογισμός της ταχύτητας δεν μπορούσε να χρησιμοποιήσει ούτε μια σταθερή χρονική βάση. Μόλις βρήκαμε αυτό το ζήτημα, ήταν εύκολο να προχωρήσουμε: πήραμε τη διαφορά στην απόσταση και τη διαφορά στο χρόνο και υπολογίσαμε την ταχύτητα ως D_distance/D_time (αντί για D-απόσταση/50ms).

Επίσης, επειδή η εξίσωση μας θα επέστρεφε ταχύτητα σε μονάδες mm/50ms, πρέπει να το πολλαπλασιάσουμε με 1200 για να έχουμε την απόσταση που θα πήγαινε η κεφαλή σε ένα λεπτό, σε [mm/λεπτό].

Σημείωση: Το λογισμικό ελέγχου μύλου Mach 3 CNC καθορίζει τους ρυθμούς τροφοδοσίας σε μονάδες [mm/λεπτό]

Φιλτράρισμα

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

Λεπτές προσαρμογές στο λογισμικό

Προκειμένου να αλλάξει ο ρυθμός δείγματος και ο ρυθμός φίλτρου κατά τη διάρκεια του χρόνου εκτέλεσης, προστέθηκαν γραμμές κύλισης - μία για κάθε μία. Επίσης, εισήχθη επίσης η δυνατότητα απόκρυψης των σχεδίων.

Βήμα 5: Αποτελέσματα

Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα
Αποτελέσματα

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

Τούτου λεχθέντος, φαίνεται ότι το Mach 3 χειρίζεται αυτές τις ρυθμίσεις ταχύτητας με μεγάλη ακρίβεια, αλλά τώρα γνωρίζουμε με βεβαιότητα:)

Ελπίζω να σας άρεσε αυτό το σύντομο οδηγό σχετικά με την αντίστροφη μηχανική και τη μετατροπή του νερού σε κρασί!

Στην υγειά σας!

Συνιστάται: