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

Μοντέλο ελεγκτή τρένου Arduino 2 σε 1: 4 βήματα
Μοντέλο ελεγκτή τρένου Arduino 2 σε 1: 4 βήματα

Βίντεο: Μοντέλο ελεγκτή τρένου Arduino 2 σε 1: 4 βήματα

Βίντεο: Μοντέλο ελεγκτή τρένου Arduino 2 σε 1: 4 βήματα
Βίντεο: INDUSTRY.TEC FORUM 2023: Ειδική Εκδήλωση ΕΚΠΑ για Τεχνολογίες Industry 4.0/5.0 2024, Νοέμβριος
Anonim
Μοντέλο ελεγκτή τρένου Arduino 2 σε 1
Μοντέλο ελεγκτή τρένου Arduino 2 σε 1

Πριν από σαράντα χρόνια σχεδίασα ένα μοντέλο πεταλούδας γκαζιού για δύο φίλους και στη συνέχεια πριν από περίπου τέσσερα χρόνια το ξαναδημιούργησα χρησιμοποιώντας έναν μικροελεγκτή PIC. Αυτό το έργο Arduino αναδημιουργεί την έκδοση PIC αλλά προσθέτει επίσης τη δυνατότητα χρήσης σύνδεσης Bluetooth αντί των χειροκίνητων διακοπτών για το γκάζι, το φρένο και τον έλεγχο κατεύθυνσης. Ενώ ο σχεδιασμός που παρουσιάζω εδώ απευθύνεται σε σιδηροδρομικό κινητήρα μοντέλου 12 volt, μπορεί εύκολα να τροποποιηθεί για μια ποικιλία άλλων εφαρμογών ελέγχου κινητήρα DC.

Βήμα 1: Διαμόρφωση πλάτους παλμού (PWM)

Διαμόρφωση πλάτους παλμού (PWM)
Διαμόρφωση πλάτους παλμού (PWM)

Για όσους από εσάς δεν είστε εξοικειωμένοι με το PWM, δεν είναι τόσο τρομακτικό όσο ακούγεται. Το μόνο που σημαίνει πραγματικά για την απλή εφαρμογή ελέγχου κινητήρα είναι ότι δημιουργούμε ένα τετραγωνικό κύμα κάποιας συχνότητας και στη συνέχεια αλλάζουμε τον κύκλο λειτουργίας. Ο κύκλος λειτουργίας ορίζεται ως ο λόγος χρόνου που η έξοδος είναι λογικά υψηλή σε σύγκριση με την περίοδο κυματομορφής. Μπορείτε να το δείτε πολύ καθαρά στο παραπάνω διάγραμμα με την κορυφαία κυματομορφή στον κύκλο λειτουργίας 10%, τη μεσαία κυματομορφή στον κύκλο λειτουργίας 50% και την κάτω κυματομορφή στον 90% κύκλο λειτουργίας. Η διακεκομμένη γραμμή που επικαλύπτεται σε κάθε κυματομορφή αντιπροσωπεύει την ισοδύναμη τάση DC που βλέπει ο κινητήρας. Δεδομένου ότι το Arduino διαθέτει ενσωματωμένη δυνατότητα PWM, είναι πραγματικά πολύ απλό να δημιουργηθεί αυτός ο τύπος ελέγχου κινητήρα DC. Ένα άλλο πλεονέκτημα της χρήσης του PWM είναι ότι βοηθά να κρατηθεί ο κινητήρας από την άβολη εκκίνηση που μπορεί να συμβεί όταν χρησιμοποιείτε ευθεία DC. Ένα μειονέκτημα του PWM είναι ότι μερικές φορές ακούγεται ένας θόρυβος από τον κινητήρα στη συχνότητα του PWM.

Βήμα 2: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

Η πρώτη εικόνα δείχνει τις συνδέσεις Arduino για τους διακόπτες και τη μονάδα οδηγού κινητήρα LM298. Υπάρχουν αδύναμες αντιστάσεις έλξης εσωτερικά στο Arduino, οπότε δεν χρειάζονται αντιστάσεις έλξης για τους διακόπτες. Ο διακόπτης κατεύθυνσης είναι ένας απλός διακόπτης SPST (μονόπολος μονής ρίψης). Οι διακόπτες γκαζιού και φρένων εμφανίζονται ως συνήθως ανοιχτά, στιγμιαία κουμπιά επαφής.

Η δεύτερη εικόνα δείχνει τις συνδέσεις Arduino για τη μονάδα Bluetooth και τη μονάδα προγράμματος οδήγησης κινητήρα LM298. Η έξοδος Bluetooth TXD συνδέεται απευθείας με τη σειριακή είσοδο Arduino RX.

Η τρίτη εικόνα είναι μια μονάδα διπλής γέφυρας L298N. Η μονάδα LM298 διαθέτει ενσωματωμένο ρυθμιστή 5 volt που μπορεί να ενεργοποιηθεί από έναν βραχυκυκλωτήρα. Χρειαζόμαστε +5 βολτ για το Arduino και το Bluetooth, αλλά θέλουμε +12 βολτ για να κινήσουμε τον κινητήρα. Σε αυτήν την περίπτωση εφαρμόζουμε τα +12 βολτ στην είσοδο " +12V ισχύος" του L298N και αφήνουμε τον βραχυκυκλωτήρα "5V enable" στη θέση του. Αυτό επιτρέπει στον ρυθμιστή 5 βολτ να εξέρχεται στη σύνδεση "+5 power" της μονάδας. Συνδέστε το με το Arduino και το Bluetooth. Μην ξεχάσετε να συνδέσετε τα καλώδια γείωσης για την είσοδο +12 και την έξοδο +5 στη μονάδα "power GND".

Θέλουμε η τάση εξόδου στον κινητήρα να ποικίλλει με βάση το PWM που παράγεται από το Arduino αντί να είναι απλώς ενεργοποιημένο ή απενεργοποιημένο. Για να γίνει αυτό, αφαιρούμε τους βραχυκυκλωτήρες από το "ENA" και το "ENB" και συνδέουμε την έξοδο Arduino PWM με το "ENA" στη μονάδα. Λάβετε υπόψη ότι ο πραγματικός πείρος ενεργοποίησης είναι αυτός που βρίσκεται πιο κοντά στην άκρη της πλακέτας (δίπλα στις ακίδες "εισόδου"). Ο πίσω πείρος για κάθε ενεργοποίηση είναι +5 βολτ, οπότε θέλουμε να βεβαιωθούμε ότι δεν θα συνδεθούμε με αυτό.

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

Βήμα 3: Ενότητα Bluetooth

Μονάδα Bluetooth
Μονάδα Bluetooth

Η εικόνα που εμφανίζεται εδώ είναι τυπική των διαθέσιμων μονάδων Bluetooth. Όταν ψάχνετε για αγορά, μπορείτε να κάνετε αναζήτηση με τους όρους "HC-05" και HC-06 ". Οι διαφορές μεταξύ των δύο είναι στο υλικολογισμικό και συνήθως στον αριθμό των ακίδων στον πίνακα. Η παραπάνω εικόνα είναι μιας μονάδας HC-06 και συνοδεύεται από απλοποιημένο υλικολογισμικό που επιτρέπει μόνο πολύ βασικές ρυθμίσεις. Ορίζεται επίσης ως συσκευή Bluetooth "Slave" μόνο. Με απλά λόγια αυτό σημαίνει ότι μπορεί να απαντήσει μόνο σε εντολές από μια συσκευή "Master" και δεν μπορεί να εκδώσει εντολές από μόνο του. Η μονάδα HC-05 έχει περισσότερες δυνατότητες ρύθμισης παραμέτρων και μπορεί να οριστεί ως συσκευή "Master" ή "Slave". Το HC-05 έχει συνήθως έξι ακίδες αντί για τις τέσσερις που εμφανίζονται παραπάνω για το HC-06. Η καρφίτσα κατάστασης δεν είναι πραγματικά σημαντική, αλλά η καρφίτσα κλειδιού (μερικές φορές γίνεται με άλλα ονόματα όπως "EN") απαιτείται εάν θέλετε να κάνετε οποιαδήποτε διαμόρφωση. Γενικά, οι μονάδες δεν χρειάζονται καμία ρύθμιση παραμέτρων εάν είστε εντάξει με τον προεπιλεγμένο ρυθμό baud των 9600 και δεν σας ενδιαφέρει να δώσετε ένα συγκεκριμένο όνομα στη μονάδα. Έχω πολλά έργα όπου τα χρησιμοποιώ, οπότε μου αρέσει να τα ονομάζω ανάλογα.

Η διαμόρφωση των μονάδων Bluetooth απαιτεί είτε να αγοράσετε είτε να δημιουργήσετε μια διεπαφή σε μια σειριακή θύρα RS-232 ή σε μια θύρα USB. Δεν θα καλύψω πώς να δημιουργήσετε ένα σε αυτήν την ανάρτηση, αλλά θα πρέπει να μπορείτε να βρείτε πληροφορίες στον ιστό. Or απλώς αγοράστε μια διεπαφή. Οι εντολές διαμόρφωσης χρησιμοποιούν εντολές ΑΤ περίπου όπως εκείνες που χρησιμοποιούνταν παλιά με τα τηλεφωνικά μόντεμ. Έχω επισυνάψει ένα εγχειρίδιο χρήστη εδώ που περιλαμβάνει τις εντολές AT για κάθε τύπο ενότητας. Ένα πράγμα που πρέπει να σημειωθεί είναι ότι το HC-06 απαιτεί UPPERCASE εντολές και η συμβολοσειρά εντολών πρέπει να ολοκληρωθεί εντός 1 δευτερολέπτου. Αυτό σημαίνει ότι μερικές από τις μεγαλύτερες συμβολοσειρές για πράγματα όπως η αλλαγή των ρυθμών baud θα πρέπει να κοπούν και να επικολληθούν στο τερματικό σας πρόγραμμα ή θα χρειαστεί να ρυθμίσετε αρχεία κειμένου για αποστολή. Η απαίτηση UPPERCASE είναι μόνο εάν προσπαθείτε να στείλετε εντολές διαμόρφωσης. Η κανονική λειτουργία επικοινωνίας μπορεί να δεχτεί οποιαδήποτε δεδομένα 8 bit.

Βήμα 4: Λογισμικό

Το λογισμικό είναι αρκετά απλό τόσο για τη χειροκίνητη έκδοση όσο και για την έκδοση Bluetooth. Για να επιλέξετε την έκδοση Bluetooth, απλώς αποσυνδέστε τη δήλωση "#define BT_Ctrl".

Όταν έγραψα τον κωδικό PIC πειραματίστηκα με τη συχνότητα PWM και τελικά εγκαταστάθηκα στα 500-Hz. Ανακάλυψα ότι αν η συχνότητα ήταν πολύ υψηλή τότε η μονάδα LM298N δεν ήταν ικανή να αντιδράσει αρκετά γρήγορα στους παλμούς. Αυτό σήμαινε ότι η έξοδος τάσης δεν ήταν γραμμική και μπορούσε να κάνει μεγάλα άλματα. Το Arduino έχει ενσωματωμένες εντολές PWM αλλά σας επιτρέπουν να αλλάζετε μόνο τον κύκλο λειτουργίας και όχι τη συχνότητα. Ευτυχώς, η συχνότητα είναι περίπου 490-Hz, ώστε να είναι αρκετά κοντά στα 500-Hz που χρησιμοποίησα στο PIC.

Ένα από τα "χαρακτηριστικά" των γκαζιών του τρένου είναι η αίσθηση της ορμής για επιτάχυνση και φρενάρισμα για να προσομοιώσουν πώς λειτουργεί ένα πραγματικό τρένο. Για να επιτευχθεί αυτό, μια απλή χρονική καθυστέρηση εισάγεται στον βρόχο για τη χειροκίνητη έκδοση του λογισμικού. Με την τιμή που εμφανίζεται, χρειάζονται περίπου 13 δευτερόλεπτα για να μεταβείτε από 0 έως 12 βολτ ή από 12 βολτ πίσω στο μηδέν. Η καθυστέρηση μπορεί εύκολα να τροποποιηθεί για μεγαλύτερους ή μικρότερους χρόνους. Η μόνη περίπτωση όπου η ορμή δεν είναι σε ισχύ είναι όταν αλλάζει ο διακόπτης κατεύθυνσης. Για λόγους προστασίας, ο κύκλος λειτουργίας PWM ρυθμίζεται αμέσως στο 0% κάθε φορά που αλλάζει αυτός ο διακόπτης. Αυτό, ουσιαστικά, κάνει τον διακόπτη κατεύθυνσης επίσης διπλό ως φρένο έκτακτης ανάγκης.

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

Η έκδοση Bluetooth του λογισμικού χρησιμοποιεί εντολές με ένα γράμμα για την εκκίνηση των λειτουργιών Forward, Reverse, Brake και Throttle. Στην πραγματικότητα, οι ληφθείσες εντολές αντικαθιστούν τους χειροκίνητους διακόπτες αλλά προκαλούν τις ίδιες αποκρίσεις. Η εφαρμογή που χρησιμοποιώ για έλεγχο Bluetooth ονομάζεται "Σειριακός ελεγκτής Bluetooth" από τα Next Prototypes. Σας επιτρέπει να διαμορφώσετε ένα εικονικό πληκτρολόγιο και να ορίσετε τις δικές σας συμβολοσειρές εντολών και ονόματα για κάθε κλειδί. Σας επιτρέπει επίσης να ορίσετε έναν ρυθμό επανάληψης, οπότε έθεσα τα κουμπιά φρένου και γκαζιού στα 50ms για να δώσω περίπου 14 δευτερόλεπτα ορμής. Απενεργοποίησα τη λειτουργία επανάληψης για τα κουμπιά Εμπρός και Αντίστροφη.

Αυτά για αυτό το post. Ελέγξτε τις άλλες οδηγίες μου. Εάν ενδιαφέρεστε για έργα μικροελεγκτών PIC, ελέγξτε τον ιστότοπό μου στη διεύθυνση www.boomerrules.wordpress.com

Συνιστάται: