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

Οδηγήστε Stepper Motor με μικροεπεξεργαστή AVR: 8 βήματα
Οδηγήστε Stepper Motor με μικροεπεξεργαστή AVR: 8 βήματα

Βίντεο: Οδηγήστε Stepper Motor με μικροεπεξεργαστή AVR: 8 βήματα

Βίντεο: Οδηγήστε Stepper Motor με μικροεπεξεργαστή AVR: 8 βήματα
Βίντεο: Stepper Motor and Arduino UNO Microprocessor board 2024, Ιούλιος
Anonim
Οδηγήστε Stepper Motor με μικροεπεξεργαστή AVR
Οδηγήστε Stepper Motor με μικροεπεξεργαστή AVR

Έχετε μερικά σκουπισμένα βηματικά μοτέρ από εκτυπωτές/μονάδες δίσκου/κλπ που βρίσκονται γύρω;

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

Βήμα 1: Γνωρίστε τα Steppers

Γνωρίστε τους Steppers
Γνωρίστε τους Steppers
Γνωρίστε τους Steppers
Γνωρίστε τους Steppers

Βασικά, θα πρέπει να καταλάβετε πού πηγαίνουν όλα τα μικρά καλώδια.

Το πρώτο βήμα είναι να καταλάβουμε αν πρόκειται για μονοπολικό ή διπολικό κινητήρα. Ρίξτε μια ματιά στον Jones στο Steppers για κάποιο βαθύτερο υπόβαθρο, στη συνέχεια στο Site του Ian Harries για μια απλή μέθοδο για να καταλάβετε έναν άγνωστο κινητήρα. Διαβάστε λίγο, στη συνέχεια, ελάτε μαζί μου σε μια περιήγηση αυτού του κινητήρα που πήρα φθηνά. (Πωλούνται προς το παρόν για 0,99 δολάρια. Είναι μικρά, σχετικά ελαφριά, αλλά δεν έχουν μεγάλη ροπή. Δεν ξέρω για τι θα είναι ακόμα καλό.)

Βήμα 2: Βρείτε κοινό έδαφος

Βρείτε κοινό έδαφος
Βρείτε κοινό έδαφος
Βρείτε κοινό έδαφος
Βρείτε κοινό έδαφος

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

Αν κοιτάτε μόνο τέσσερα καλώδια, είστε τυχεροί - είναι ένας διπολικός κινητήρας. Το μόνο που έχετε να κάνετε είναι να καταλάβετε ποια δύο ζεύγη καλωδίων πάνε μαζί. Εάν έχετε μονοπολικό κινητήρα ή περισσότερα από 4 καλώδια, θα πρέπει να σπάσετε το ωμόμετρό σας. Αυτό που ψάχνετε είναι το κοινό (γειωμένο) σύρμα για κάθε μισό. Μπορείτε να καταλάβετε ποιος είναι γειωμένος σε έναν διπολικό κινητήρα επειδή έχει τη μισή αντίσταση σε οποιονδήποτε από τους πόλους από ό, τι οι πόλοι στον εαυτό τους. Στην εικόνα φαίνονται οι σημειώσεις μου από το να συνδέσω καλώδια σε καλώδια και να σημειώσω την αντίσταση (ή αν είναι εντελώς συνδεδεμένα). Μπορείτε να δείτε ότι το Λευκό είναι το έδαφος για την κάτω τριάδα b/c έχει τη μισή αντίσταση στο Κόκκινο ή το Μπλε που έχουν ο ένας στον άλλο. (Αυτό το μοτέρ είναι περίεργο και δεν έχει κεντρική βρύση στο επάνω μαγνητικό πηνίο. Είναι σαν να είναι μισό διπολικό, μισό μονοπολικό. Maybeσως θα μπορούσατε να το χρησιμοποιήσετε για να αισθανθείτε την περιστροφή στο κόκκινο-λευκό-μπλε πηνίο όταν το μαύρο-κίτρινο το πηνίο οδηγείται.)

Βήμα 3: Καταλάβετε τη σειρά βηματισμού

Καταλάβετε τη σειρά βηματισμού
Καταλάβετε τη σειρά βηματισμού

Θα οδηγούσα αυτόν τον κινητήρα ως διπολικό, οπότε αγνοώ το καλώδιο γείωσης White. Έχω μόνο τέσσερα καλώδια για να ανησυχώ.

Mightσως θελήσετε να χρησιμοποιήσετε το μονοπολικό μοτέρ σας ως διπολικό ούτως ή άλλως, επειδή χρησιμοποιεί ολόκληρο το πηνίο και στις δύο φάσεις αντί να εναλλάσσεται μεταξύ των δύο μισών κάθε πηνίου. Περισσότερο πηνίο = περισσότερη ροπή. Εκτέλεση ρεύματος σε ένα ζεύγος (σημειώνοντας την πολικότητα που επιλέξατε) και, στη συνέχεια, τρέξτε ρεύμα στο άλλο ζεύγος ταυτόχρονα. Όταν συνδέετε το δεύτερο ζευγάρι, προσέξτε με ποια κατεύθυνση γυρίζει ο κινητήρας. Γράψτε αυτό. Τώρα αντιστρέψτε την πολικότητα στο πρώτο ζευγάρι που επιλέξατε. Στη συνέχεια, συνδέστε ξανά το δεύτερο ζεύγος με την πολικότητά τους επίσης αντίστροφη. Σημειώστε την κατεύθυνση. Από αυτό θα πρέπει να μπορείτε να καταλάβετε την ακολουθία περιστροφής του κινητήρα προς οποιαδήποτε κατεύθυνση. Στο παράδειγμά μου, και οι δύο κατέληξαν αριστερόστροφα, οπότε η μετάβαση στην ακολουθία με τον ίδιο τρόπο που επέλεξα θα ανεβάσει το μοτέρ CCW.

Βήμα 4: Λήψη του μοτέρ για δοκιμαστική κίνηση

Λήψη του μοτέρ για δοκιμαστική οδήγηση
Λήψη του μοτέρ για δοκιμαστική οδήγηση

Εάν δεν είστε ήδη έτοιμοι για προγραμματισμό μικροεπεξεργαστών, θα μπορούσατε να κάνετε χειρότερα από το Ghetto Development Kit ή οποιονδήποτε από τους διάφορους προγραμματιστές PIC. Συνδέστε τα καλώδια απευθείας στο microproc σας και κάψτε τα με τον ακόλουθο κωδικό:

/* Παίζοντας με την οδήγηση των μικρών βηματικών κινητήρων. */

/ * Συμπεριλάβετε τη λειτουργία καθυστέρησης */ #define F_CPU 1000000UL #include/ * Pin defs for ATTiny2313 *// * Clockwise order */ #define BLUE _BV (PB0) #define BLACK _BV (PB1) #define RED _BV (PB2) #define YELLOW _BV (PB3) #define DELAY 200 / * χιλιοστά του δευτερολέπτου μεταξύ των βημάτων * / int main (void) {DDRB = 0xff; / * Ενεργοποίηση εξόδου σε όλες τις ακίδες Β */ PORTB = 0x00. / * Ορίστε τα όλα σε 0v */ ενώ (1) {/ * κύριος βρόχος εδώ */ PORTB = BLUE; _delay_ms (ΚΑΘΥΣΤΕΡΗΣΗ); PORTB = ΜΑΥΡΟ? _delay_ms (ΚΑΘΥΣΤΕΡΗΣΗ); PORTB = RED? _delay_ms (ΚΑΘΥΣΤΕΡΗΣΗ); PORTB = ΚΙΤΡΙΝΟ _delay_ms (ΚΑΘΥΣΤΕΡΗΣΗ); }} Πόσο απλός είναι αυτός ο κώδικας; Πραγματικά απλό. Το μόνο που κάνει είναι να κάνει κάποιους ωραίους ορισμούς, ώστε να μπορώ να αναφέρομαι στα καλώδια με βάση το χρώμα και όχι με τα ονόματα τους, και στη συνέχεια τα εναλλάσσει με τη σειρά με μια ρυθμιζόμενη καθυστέρηση στο μεταξύ. Για αρχή, επέλεξα καθυστέρηση μισού δευτερολέπτου μεταξύ των βημάτων. Δείτε το σύντομο βίντεο για τα αποτελέσματα. Εάν είστε πραγματικά στο παιχνίδι σας, μετρήστε τον αριθμό των βημάτων ανά κύκλο για να καταλάβετε τη γωνιακή ανάλυση του μοτέρ σε ένα βήμα. (Ω ναι. ΥΓ. Οδηγεί χωρίς φορτίο στα 3,6v εύκολα. Δείτε την μπαταρία στο βίντεο.)

Βήμα 5: Γυρίστε το προς τα πίσω και προς τα εμπρός

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

int main (άκυρο) {const uint8_t καθυστέρηση = 50; const uint8_t δεξιόστροφα = {ΜΠΛΕ, ΜΑΥΡΟ, ΚΟΚΚΙΝΟ, ΚΙΤΡΙΝΟ}; uint8_t i; DDRB = 0xff; / * Ενεργοποίηση εξόδου σε όλες τις ακίδες Β */ PORTB = 0x00. / * Ορίστε τα όλα σε 0v */ ενώ (1) {/ * κύριος βρόχος εδώ */ για (i = 0; i <= 3; i ++) {/ * βήμα στα χρώματα δεξιόστροφα */ PORTB = δεξιόστροφα ? _delay_ms (καθυστέρηση); } για (i = 3; i> = 0; i-) { / * βήμα στα χρώματα ccw * / PORTB = δεξιόστροφα ; _delay_ms (καθυστέρηση)? }}} Δείτε το περίεργο βίντεο για το back-and-forthing.

Βήμα 6: Ποτέ δεν κάνω μισό βήμα, γιατί δεν είμαι μισό βήμα…

Αναζητήστε τη στιχουργική στην άκρη, στο μισό βήμα το μοτέρ σας είναι εκεί που βρίσκεται. Παίρνετε περισσότερο ρεύμα αιχμής, περισσότερη στιγμιαία ροπή και διπλάσια γωνιακή ανάλυση. Μισό βήμα με λίγα λόγια: Αντί για μπλε, μαύρο, κόκκινο, κίτρινο, οδηγείτε τον κινητήρα με μπλε, μπλε+μαύρο, μαύρο, μαύρο+κόκκινο, κόκκινο, κόκκινο+κίτρινο, κίτρινο, κίτρινο+μπλε. Το αποτέλεσμα είναι ότι για το μισό χρόνο εμπλέκετε και τους δύο μαγνήτες ταυτόχρονα. Και κατά τη διάρκεια της εμπλοκής και των δύο σετ, ο κινητήρας δείχνει στο μισό μεταξύ των δύο, συρρικνώνοντας τη γωνία μεταξύ των "βημάτων" και κάνοντας τον κινητήρα να γυρίζει πιο ομαλά. Μπορείτε να καταλάβετε από το βίντεο; Δεν είμαι σίγουρος … Τώρα το μέρος του κώδικα που κάνει το μισό βήμα μοιάζει με αυτό:

άκυρο μισό βήμα (uint16_t καθυστέρηση, uint8_t κατεύθυνση ) {uint8_t i; για (i = 0; i <= 3; i ++) {PORTB = διεύθυνση ; / * μέρος μονής σπείρας */ _delay_ms (καθυστέρηση); PORTB | = κατεύθυνση [i+1]; / * προσθήκη σε μισό βήμα */ _delay_ms (καθυστέρηση). }} Η πρώτη εντολή PORTB ορίζει έναν μόνο πόλο σε θετικό και όλους τους υπόλοιπους σε αρνητικούς. Μετά περιμένει. Στη συνέχεια, η δεύτερη εντολή PORTB θέτει έναν δεύτερο πόλο (στο άλλο τύλιγμα) σε θετικό, ενεργοποιώντας και τις δύο περιελίξεις για 1,4x τη ροπή (και 2x το ρεύμα). Μια πλήρης λίστα του προγράμματος επισυνάπτεται παρακάτω. Δύο πίνακες ορίζονται τώρα (δεξιόστροφα, αριστερόστροφα) και οι δύο έχουν 5 στοιχεία το καθένα για να επιτρέψει την είσοδο i+1 στη συνάρτηση halfStepping.

Βήμα 7: Προσθέστε ένα πρόγραμμα οδήγησης κινητήρα

Προσθέστε ένα πρόγραμμα οδήγησης κινητήρα
Προσθέστε ένα πρόγραμμα οδήγησης κινητήρα
Προσθέστε ένα πρόγραμμα οδήγησης κινητήρα
Προσθέστε ένα πρόγραμμα οδήγησης κινητήρα
Προσθέστε ένα πρόγραμμα οδήγησης κινητήρα
Προσθέστε ένα πρόγραμμα οδήγησης κινητήρα

Μέχρι εδώ καλά.

Το μόνο πρόβλημα είναι ότι ο κινητήρας δεν φαίνεται να έχει τόση ροπή, η οποία θα μπορούσε να οφείλεται στο γεγονός ότι ο μικροεπεξεργαστής θα βγάλει μόνο 50mA per ανά καρφίτσα. Το προφανές επόμενο βήμα θα ήταν να το συνδέσετε με έναν οδηγό κινητήρα για να το τροφοδοτήσετε με περισσότερο χυμό. Αλλά μετά σκέφτομαι λίγο: το οδηγώ μόνο με 5v και η αντίσταση στο τύλιγμα είναι 125 h. Αυτό σημαίνει ότι ο κινητήρας αντλεί μόνο 40mA ανά καρφίτσα και θα πρέπει να οδηγείται μια χαρά από το τσιπ AVR. Έτσι, για να αυξήσω την τάση του κινητήρα, τον ένωσα σε ένα τσιπ SN754410 H-bridge. Το κύκλωμα είναι αρκετά απλό. Κάθε ακίδα από το AVR πηγαίνει σε μια είσοδο και οι αντίστοιχοι πείροι εξόδου πηγαίνουν στον κινητήρα. Το τσιπ χρειάζεται 5v για το λογικό τμήμα και μπορεί να πάρει πολύ περισσότερη τάση στο τμήμα του κινητήρα. Η λειτουργία του με 11.25v (τρεις μπαταρίες 3.6v) βοήθησε λίγο. Αξιοσημείωτα μεγαλύτερη ροπή στο δάχτυλό μου, αλλά εξακολουθεί να μην είναι δύναμη. Δεν είναι κακό για έναν κινητήρα που είναι μικρότερος από το νικέλιο, όμως. Και τώρα το κύκλωμα έχει γίνει διπολικός οδηγός stepper γενικής χρήσης. Προστέθηκε 29 Νοεμβρίου: Ρυθμίστε το μοτέρ χθες το βράδυ στις 12v για λίγο και άρχισε να ζεσταίνεται. Δεν είμαι σίγουρος αν επρόκειτο για ένα πρόβλημα συντονισμένης συχνότητας ή αν ήταν πολύ πολύ ρεύμα για τις περιελίξεις. Σε κάθε περίπτωση, να είστε λίγο προσεκτικοί εάν οδηγείτε αυτό το μικρό μοτέρ με μεγαλύτερες τάσεις.

Βήμα 8: Το τέλος

Τι έμαθα λοιπόν; Η οδήγηση ενός βηματικού μοτέρ με AVR (και ένα τσιπ γέφυρας H) είναι αρκετά εύκολη, ακόμη και στην "φανταχτερή" λειτουργία μισού βηματισμού.

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

Συνιστάται: