Unlimited PowerPoint templates, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Business
  2. Computer Skills

Ελέγχοντας DC Μοτέρ, χρησιμοποιώντας Python και ένα Raspberry Pi

by
Difficulty:IntermediateLength:LongLanguages:

Greek (ελληνικά) translation by Iris Diakoumi (you can also view the original English article)

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

Στόχος

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

Αυτός ο οδηγός απαιτεί μια προσεκτική ματιά για να πιάσετε οποιαδήποτε λάθη, και λίγο θάρρος, ειδικά αν είστε αρχάριοι στις υποδοχές GPIO. Θα ήθελα να τονίσω πως δεν είμαι υπεύθυνος για οποιαδήποτε ζημία προκληθεί στο Raspberry Pi ή/και άλλα εξαρτήματά σας.

ΣΗΜΑΝΤΙΚΟ: Μην συνδέσετε ένα μοτέρ, ανεξαρτήτως του πόσο μικρό είναι, άμεσα με το Raspberry Pi, επειδή κάτι τέτοιο θα βλάψει το Raspberry Pi σας.

Ο κύριος επεξεργαστή μπορεί να παρέχει μόνο αρκετή ισχύ για να φωτίσει ένα LED, περίπου 20mA. Ένα μοτέρ θα θέλει τουλάχιστον 400mA ρεύματος για να αρχίσει να περιστρέφεται.

Απαιτήσεις

Για να κάνετε ένα μοτέρ να λειτουργήσει, θα χρειαστείτε:

  • Ένα Raspberry Pi με κάρτα SD με προεγκατεστημένο το Raspbian
  • Ένα Breadboard για να κάνετε όλες τις συνδέσεις
  • Ένα L293 ή SN755410 τσιπ οδήγησης μοτέρ (θα αναφέρομαι και στα δύο ως L293D σε αυτό το tutorial)
  • Καλώδια jumper για να συνδέσετε τα πάντα (Aρσενικό σε αρσενικό και θηλυκό σε αρσενικό)
  • Ένα ή δύο DC μοτέρ κατασκευασμένα για 6v
  • 4x AA μπαταρίες και θήκη

GPIO pins

Αν δεν έχετε ήδη κοιτάξει προσεκτικά το Raspberry Pi, τώρα ίσως είναι η κατάλληλη στιγμή για να ρίξετε μια ενδελεχή ματιά. Υπάρχουν 26 pins ομαδοποιημένα σε δύο σειρές των 13, και αυτές συλλογικά ονομάζονται General Purpose Input Output  header (Είσοδοι έξοδοι γενικού σκοπού) ή GPIO για συντομία. Πρόκειται για ένα μείγμα από τέσσερα pins, πέντε pins γείωσης και 17 pins δεδομένων.


Σχήμα 1. Η διάταξη των GPIOs με την αρίθμηση των pins. To Pin 1 είναι το πάνω-πάνω αριστερά ονομασμένο ως 3V3

Ορισμένα από αυτά τα pins δεδομένων έχουν επιπλέον λειτουργίες όπως ένας i2c δίαυλος, SPI δίαυλος και UART σειριακές συνδέσεις, τα οποία μπορούν να συνδεθούν με άλλο υλικό για να επιτρέψουν στο Raspberry Pi να μιλήσει με άλλα στοιχεία, όπως ένα Arduino, έναν Αναλογικό σε Ψηφιακό Μετατροπέα (ADC) ή πρόσθετες πλακέτες, όπως ένα PiGlow ή PiFace.

Συμβουλή: Όταν εργάζεστε με τα GPIO pins, πάντα να το κάνετε με το Pi αποσυνδεδεμένο, γιατί οποιοδήποτε ατύχημα από τη σύνδεση (ή βραχυκύκλωμα) 2 pins, μπορεί να προκαλέσει βλάβη στο Raspberry Pi.

Συναρμολόγηση του Kυκλώματος

Προσθέτοντας Τροφοδοσία και Γείωση

Είναι σημαντικό να το κάνετε αυτό, ενώ η τροφοδοσία του Raspberry Pi είναι κλειστή ή έχει αποσυνδεθεί, αφού θέλετε να αποφύγετε να βραχυκυκλώσετε κατά λάθος οποιαδήποτε pins.

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


Σχήμα 2: Συνδέστε τα καλώδια τροφοδοσίας και γείωσης

Η γείωση στο Raspberry Pi είναι το pin 6. Αναφερόμενος στο Σχήμα 1 το βρίσκουμε ξεκινώντας από την αριστερά κορυφή με το pin 3V3, μετρώντας αριστερά προς τα δεξιά έτσι ώστε το 5V να είναι το pin 2, GPIO 2 (ονομαζόμενο ως 2) είναι το pin 3 και ούτω καθεξής.

Η ανάγνωση αριθμών pin σε τσιπ ολοκληρωμένου κυκλώματος (IC) γίνεται εύκολα κοιτώντας από την εγκοπή ή τελεία στα αριστερά, και ύστερα ξεκινώντας από κάτω αριστερά μας δίνει το pin 1.

Σχήμα 3. Το Pin 1 είναι κάτω αριστερά

Προσθέτοντας τα Καλώδια Δεδομένων

Τώρα προσθέστε τρία καλώδια από τα GPIO pins στο L293D.

  • GPIO 25–Pin 22 > L293D–Pin 1
  • GPIO 24–Pin 18 > L293D–Pin 2
  • GPIO 23–Pin 16 > L293D–Pin 7

Σχήμα 4. Προσθέστε τα τρία καλώδια GPIO για τον έλεγχο του μοτέρ

Προσθέστε το μοτέρ:

  • Motor–wire 1 > L293D–pin 3
  • Motor–wire 2 > L293D–pin 6
Σχήμα 5. Συνδέσαμε τη μπαταρία και το μοτέρ

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

Προσθέστε ένα Δεύτερο Μοτέρ (προαιρετικά)

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

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

  • GPIO 11–Pin 23 > L293D–Pin 9
  • GPIO 9–Pin 21 > L293D–Pin 10
  • GPIO 10–Pin 19 > L293D–Pin 15
Η πλήρης σύνθεση έτοιμη για χρήση σε ρομποτική

Ενεργοποίηση

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

Πάντα ελέγχετε την καλωδίωσή σας και, στη συνέχεια, ελέγξτε ξανά!

Αν δεν έχετε ξανασετάρει μια κάρτα SD για το Pi σας, αξίζει να κατανοήσετε πώς μπορείτε να δημιουργήσετε μια, διαβάζοντας πρώτα το tutorial How to Flash an SD Card for Raspberry Pi.

Με μία καινούρια Raspbian SD κάρτα τοποθετημένη, συνδέστε το Raspberry Pi ως συνήθως και ενεργοποιήστε το.

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

Η επόμενη δουλειά είναι να πείτε στο Raspberry Pi ότι ένα μοτέρ, ή δύο, έχουν συνδεθεί. Για να το κάνω αυτό χρησιμοποιώ μια γλώσσα που ονομάζεται Python. Έρχεται ήδη εγκατεστημένη στο Raspbian κάτι που είναι πολύ θετικό. Αν χρησιμοποιείτε άλλο λειτουργικό σύστημα, όπως το Arch ή PiDora, ελέγξτε ξανά αν το RPi.GPIO είναι διαθέσιμο.

Δοκιμές

Προκειμένου να κάνετε τα μοτέρ σας να λειτουργούν κάντε διπλό κλικ στο LXTerminal στην επιφάνεια εργασίας σας για να εμφανίσετε ένα παράθυρο τερματικού. Εδώ θα γίνει η συγγραφή κώδικα Python χρησιμοποιώντας ένα πρόγραμμα που ονομάζεται Nano. Το Nano είναι ένα πρόγραμμα επεξεργασίας κειμένου, παρόμοιo με το Notepad ή το TextEdit, αλλά για τη γραμμή εντολών. Θα σας διδάσκω μερικές εντολές όσο προχωράμε, αν είστε καινούριος σε αυτό.

Για να ενεργοποιήσετε το μοτέρ για δύο δευτερόλεπτα, χρησιμοποιήστε τον ακόλουθο κώδικα:

Οι πρώτες δύο γραμμές λένε στην Python, τι είναι αναγκαίο για το πρόγραμμα.

Η πρώτη γραμμή θα θέλει να αποκτήσει πρόσβαση σε ένα module που ονομάζεται RPi.GPIO.Το module αυτό χειρίζεται όλη τη σκληρή δουλειά που έχει να κάνει με την ενεργοποίηση και απενεργοποίηση των GPIO pins πάνω στο Raspberry Pi.

Η δεύτερη γραμμή φέρνει το sleep από τo module time για να καταστεί δυνατό να κάνετε παύση στο script δίνοντας του χρόνο να εκτελέσει μια συγκεκριμένη ενέργεια, σε αυτή την περίπτωση να αφήσει το μοτέρ ανοιχτό για λίγα δευτερόλεπτα.

Η συνάρτηση setmode λέει στο RPi.GPIO  να χρησιμοποιήσει την αρίθμηση του board στο Raspberry Pi. Τους αριθμούς 16, 18 και 22 θα τους χρησιμοποιήσουμε για να πούμε στην Python ότι αυτά είναι τα pins που συνδέονται με το μοτέρ.

Όταν χρησιμοποιείτε το L293D μπορείτε να του δώσετε μια κατεύθυνση, ενεργοποιώντας μία πλευρά για να στρίψει προς μία κατεύθυνση, που ονομάζεται pin A και το αντίστροφο είναι το pin Β. Για να ενεργοποιήσετε το μοτέρ χρησιμοποιήστε ένα pin που ονομάζεται Enable, ονομαζόμενο ως Ε στο script δοκιμής – αυτό είναι το pin 22. Θα μιλήσουμε γι'αυτό λίγο περισσότερο αργότερα.

Τέλος, πείτε στο Raspberry Pi ότι όλες αυτές είναι έξοδοι, το οποίο γίνεται με το GPIO.OUT.

Έχοντας έτοιμο το script, το Raspberry Pi είναι έτοιμo να γυρίσει τα μοτέρ. Θα ενεργοποιήσετε μερικά pins, θα περιμένετε δύο δευτερόλεπτα και ύστερα θα τα απενεργοποιήσετε πάλι, όπως φαίνεται στο υπόλοιπο script.

Αποθηκεύστε και κάντε έξοδο πατώντας CTRL-X, κατά μήκος της κάτω πλευράς ένα μήνυμα σας ζητά να επιβεβαιώσετε τις αλλαγές. Πιέστε το πλήκτρο Y και Enter για να επιβεβαιώσετε. Τώρα είστε πίσω στη γραμμή εντολών για να εκτελέσετε το script και να δείτε το μοτέρ να γυρίζει.

sudo python motor.py

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

Τώρα Πηγαίνετε Αντίστροφα

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

Δε χρειάξετε να αλλάξετε κάτι στην καλωδίωση, από εδώ και πέρα είναι καθαρά θέμα Python. Αυτό επιτυγχάνεται με τη δημιουργία ενός νέου script, ονομάζοντάς το motorback.py. Για να δημιουργήσετε το script σε Nano, πληκτρολογήστε την εντολή:

nano motorback.py

Πληκτρολογήστε τον ακόλουθο κώδικα:

CTRL-X και ύστερα Y, ακολουθούμενο από Enter για να αποθηκεύσετε.

Το script είναι αρκετά όμοιο με το προηγούμενο, αλλά εάν παρατηρήσετε για την αντίστροφη κίνηση ορίσαμε το Motor1A ως low και το Motor1B ως high.

Τα high και low είναι τα προγραμματιστικά αντίστοιχα του on (ανοικτό) και off (κλειστό).

Για να σταματήσετε τον κινητήρα θα απενεργοποιήσετε, δηλαδή θα θέσετε σε low το Motor1E.

Το Enable είναι ο διακόπτης για να ανοίξετε και να κλείσετε το μοτέρ, ανεξάρτητα με το τί κάνουν τα A και Β.

Αν το παραπάνω σας μπερδεύει, κοιτάξτε έναν Πίνακα Αλήθειας, για να δείτε τι συμβαίνει.

Πίνακας αλήθειας

Υπάρχουν μόνο δύο καταστάσεις που επιτρέπουν στο μοτέρ να γυρίζει, όταν το Enable είναι on ή high, και είτε τα A ή Β πρέπει να είναι high, αλλά όχι και τα δύο ταυτόχρονα.

Για δύο μοτέρ δείτε το ακόλουθο script. To μόνο διαφορετικό είναι μερικές ακόμα γραμμές για να σετάρετε το δεύτερο μοτέρ.

Συμπέρασμα

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

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

Βρείτε ένα σασί για να τοποθετήσετε τα πάντα ή χρησιμοποιείστε ένα USB φορτιστή μπαταρίας κινητού τηλεφώνου για να κάνετε το Rasbperry Pi σας πλήρως κινητό.

Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.