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

UCL - Ενσωματωμένο - Επιλογή και Τόπος: 4 Βήματα
UCL - Ενσωματωμένο - Επιλογή και Τόπος: 4 Βήματα

Βίντεο: UCL - Ενσωματωμένο - Επιλογή και Τόπος: 4 Βήματα

Βίντεο: UCL - Ενσωματωμένο - Επιλογή και Τόπος: 4 Βήματα
Βίντεο: Levin Λ Friston Λ Fields: "Meta" Hard Problem of Consciousness 2024, Νοέμβριος
Anonim
UCL - Ενσωματωμένο - Επιλογή και θέση
UCL - Ενσωματωμένο - Επιλογή και θέση

Αυτό το διδακτικό θα ακολουθήσει τον τρόπο με τον οποίο κατασκευάζεται μια μονάδα επιλογής και τοποθέτησης 2D και πώς να την κωδικοποιήσετε.

Βήμα 1: Compunets

Compunets
Compunets

1x Adrio Mega

2x βηματικούς κινητήρες (χρησιμοποιήσαμε JLB Stepper Motor, μοντέλο 17H1352-P4130)

2x Stepper Motor Drive Controller Module L298N Dual H Bridge DC For Arduino

1x σερβοκινητήρα (δεν έχουμε το στίγμα σε αυτό)

Αντίσταση 3x 10k ohm

2 φορές νάιλον τσιγάρα

Τροφοδοσία 1x 12v

Λίγο ξύλο για το πλαίσιο

Καλώδια

Βήμα 2: Κατασκευή

Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή
Κατασκευή

Το πρώτο πράγμα κατά τη διάρκεια της κατασκευής ήταν να καθορίσετε το μέγεθος και το σχήμα του μηχανήματος επιλογής και τοποθέτησης

Πρώτα χτίζουμε το ξύλο βασικού σχήματος. Κατασκευάσαμε το πλαίσιο επιλογής και τοποθέτησης μας 50cm επί 25cm επί 30cm. Όλα εκτός από το πλαίσιο, τη γέφυρα και τον βραχίονα ανύψωσης, κατασκευάστηκαν με λέιζερ.

Ακολουθεί ένας σύνδεσμος για όλα τα αρχεία

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

20mm

50mm

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

Το οποίο στη συνέχεια κολλήθηκε σε μορφή U. Στη συνέχεια, το συνδέσαμε με τη γέφυρα.

Πλευρική πλάκα

Πιάτο πίσω

Τώρα που έχουν τελειώσει τα μέρη για την κίνηση του βραχίονα πάνω και κάτω. Πρέπει να το μεταφέρουμε μπρος -πίσω.

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

Βήμα 3: Κωδικός

Κώδικας
Κώδικας
Κώδικας
Κώδικας
Κώδικας
Κώδικας

Ο προγραμματισμός είναι αρκετά απλός και αποτελείται από 5 μέρη

  1. Συμπερίληψη Βιβλιοθηκών και Ρύθμιση μεταβλητών για εσωτερική χρήση και ΙΟ
  2. Φόρτωση εισόδων στο Ram
  3. Sekvens, επιλέγοντας την κίνηση που θέλεις.
  4. Έλεγχος θέσης stepper/servo
  5. Έξοδος στον κόσμο

Σε γενικές γραμμές θα εξηγήσουμε κάθε μέρος, αλλά να θυμάστε ότι αυτή είναι μόνο μία από τις πολλές λύσεις.

1: Πριν από τη ρύθμιση void συμπεριλάβαμε τις 2 βιβλιοθήκες που χρειαζόμαστε για αυτό το έργο. Stepper και Servo. Χρησιμοποιώντας τις συμπεριλαμβανόμενες βιβλιοθήκες, σας εξοικονομεί από την εκμάθηση κάθε λεπτομέρειας σχετικά με τους βηματικούς και τους σερβοκινητήρες.

#περιλαμβάνω

#περιλαμβάνω

const int stepsPerRevolution = 200; // αλλάξτε αυτό για να ταιριάζει στον αριθμό των βημάτων ανά περιστροφή για τον κινητήρα σας

// προετοιμάστε τη βιβλιοθήκη stepper στις ακίδες 8 έως 11:

Stepper XStepper (βήματαPerRevolution, 22, 23, 24, 25). Stepper YStepper (βήματαPerRevolution, 28, 29, 30, 31). Servo Griper; // δημιουργία αντικειμένου σερβο για τον έλεγχο ενός σερβο

το Gripper πρέπει να συνδεθεί στο κενό setup

void setup () {// αρχικοποίηση της σειριακής θύρας: Serial.begin (9600); Griper.attach (9); // συνδέει το σερβο στο pin 9 στο σερβο αντικείμενο

Το υπόλοιπο αυτού του τμήματος είναι απλώς ρύθμιση των Variable's και Constant's.

2: Το πρώτο πράγμα στο Void Loop είναι να φορτώσετε όλες τις χρησιμοποιούμενες εισόδους σε μια μεταβλητή. Αυτό γίνεται για δύο λόγους. Ο πρώτος λόγος είναι ο περιορισμός των βαρέων εργασιών της CPU για την ανάγνωση μιας εισόδου. Ο δεύτερος λόγος, που είναι ο πιο σημαντικός, για να βεβαιωθείτε ότι εάν μια Είσοδος χρησιμοποιείται περισσότερες από μία φορές, θα έχει την ίδια τιμή σε ολόκληρη τη σάρωση. Αυτό καθιστά ευκολότερη τη σύνταξη σταθερού κώδικα. Αυτή είναι μια πολύ συνηθισμένη πρακτική στον προγραμματισμό PLC, αλλά ισχύει και για τον ενσωματωμένο προγραμματισμό.

// ------------------------- Εισαγωγή στη μνήμη RAM -------------------- Xend = digitalRead (34); Yend = digitalRead (35); Ena = digitalRead (36);

3: Στο τμήμα sekvens του κώδικα, μόλις δημιουργήσαμε ένα sekvens με τις εντολές Switch και case. Το τμήμα sekvens απλώς δίνει σήματα στο τμήμα ελέγχου θέσης του κώδικα. Αυτό το μέρος μπορεί εύκολα να προσαρμοστεί στην εφαρμογή σας ή να χρησιμοποιηθεί ως έχει.

4: Η θέση του servo ελέγχεται απλώς από το servo liberi και μια δήλωση if για gripper ανοιχτή και κλειστή.

Το Stepper Control είναι λίγο πιο δύσκολο. Η συνάρτηση συγκρίνει το σημείο ρύθμισης (τη θέση στην οποία θέλετε να πάει ο βραχίονας) και την τρέχουσα θέση. Εάν η τρέχουσα θέση είναι αγαπημένη, η συνάρτηση προσθέτει στη θέση και ζητά από τη λειτουργία Stepper liberi να κάνει ένα θετικό βήμα. Το αντίθετο ισχύει για μια θέση υψηλού επιπέδου. εάν η θέση είναι ίδια με το Setpoint, ένα bit του XinPos είναι καθαρό και το βήμα σταματά.

// SP controal X

εάν (XstepCountXsp και όχι Home) {

XstepCount = XstepCount-1; Xstep = -1; XinPos = 0; } if (XstepCount == Xsp) {Xstep = 0; XinPos = 1; }

5: Προσθέστε το τέλος του κωδικού, τα μοτέρ ελέγχονται με τις λειτουργίες liberi.

// -------------------- Έξοδος ---------------------- // βήμα ένα βήμα: XStepper.step (Xstep); // βήμα ένα βήμα: YStepper.step (Ystep);

Griper.write (GripSp);

Βήμα 4: Made By

casp6099 - Casper Hartung Christensen

rasm616d - Rasmus Hansen

Συνιστάται: