Blog posts How an Arduino or Raspberry Pi Communicates with our Hall effect actuator: the PA-04-HS

How an Arduino or Raspberry Pi Communicates with Our Hall Effect Actuator: the PA-04-HS

Guest Writer
Guest Writer
PA Engineer

Καλώς ήρθατε σε ακόμη ένα τεχνικό blog της Progressive Automations! Σήμερα, θα περιγράψουμε πώς ένα Arduino μπορεί να επικοινωνήσει με το PA-04-HS μας.

Ένας αισθητήρας φαινομένου Hall είναι ένα ηλεκτρονικό εξάρτημα που επιτρέπει τον ακριβή έλεγχο ενός γραμμικού ενεργοποιητή. Συνήθως βρίσκεται μέσα στο κιβώτιο μετάδοσης κίνησης μαζί με έναν μαγνητικό δίσκο. Καθώς ο γραμμικός ενεργοποιητής κινείται, ο μαγνητικός δίσκος περιστρέφεται, δημιουργώντας ένα μαγνητικό πεδίο που περνά μέσα από τον αισθητήρα Hall. Αυτό δημιουργεί έναν παλμό τάσης, ο οποίος μπορεί να μετρηθεί για να προσδιοριστεί η θέση, η ταχύτητα ή η κατεύθυνση του γραμμικού ενεργοποιητή. Ωστόσο, για να αξιοποιηθούν αυτά τα σήματα, χρειάζεται ένας μικροελεγκτής όπως ένα Arduino ή ένα Raspberry Pi. Σε αυτό το άρθρο, θα εξετάσουμε τη χρήση ενός ενεργοποιητή με Raspberry Pi και πώς να ελέγξετε έναν γραμμικό ενεργοποιητή με Arduino. Όπως αναφέρθηκε, και οι δύο αυτοί μικροελεγκτές θα παρουσιαστούν με έναν PA-04-HS Hall Effect Linear Actuator της Progressive Automations.

Το PA-04-HS διαθέτει ενσωματωμένη ανάδραση αισθητήρα Hall!

Υπολογισμοί θέσης, ταχύτητας και κατεύθυνσης

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

Θέση

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

Εξίσωση 1

 

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

 

Ταχύτητα

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

Εξίσωση 2

 

Κατεύθυνση

Η κατεύθυνση της κίνησης ενός ενεργοποιητή μπορεί να προσδιοριστεί εξετάζοντας την τρέχουσα κατάσταση των δύο σημάτων (σήμα A και B) και συγκρίνοντάς την με την προηγούμενη κατάσταση των δύο σημάτων. Αυτό συμβαίνει επειδή τα δύο σήματα αλλάζουν ποιο προηγείται και ποιο υστερεί, ανάλογα με την κατεύθυνση κίνησης του ενεργοποιητή.

Σχηματική παράσταση της κατάστασης των δύο σημάτων (σήμα A και B)

 

Πίνακας της κατάστασης των δύο σημάτων (σήμα A και B)

 

Τι είναι καλύτερο, ένας μικροελεγκτής Arduino ή Raspberry Pi;

Δεν πρόκειται για το ποιος είναι γενικά καλύτερος, αλλά για το ποιος είναι καλύτερος για τη συγκεκριμένη εφαρμογή σας. Θα ήταν προτιμότερο να επιλέξετε ένα Arduino αν το κύριο έργο της εφαρμογής σας είναι να διαβάζει τα δεδομένα από τον αισθητήρα Hall και να επιστρέφει ένα συγκεκριμένο σύνολο εντολών.

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

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

Ας μπούμε στις λεπτομέρειες και ας σας δείξουμε πώς να ελέγχετε έναν γραμμικό ενεργοποιητή με Arduino.

 

Arduino με γραμμικούς ενεργοποιητές

Arduino Uno Rev3

 

Ανάλογα με την εφαρμογή σας, μπορείτε να επιλέξετε μεταξύ της μεθόδου polling ή της χρήσης διακοπής (interrupt) σε έναν μικροελεγκτή όταν χειρίζεστε ψηφιακά σήματα. Το polling είναι μια προγραμματισμένη μέθοδος όπου ένας μικροελεγκτής ελέγχει περιοδικά την κατάσταση μιας εισόδου για να δει αν υπήρξε αλλαγή. Οι διακοπές είναι ένας μηχανισμός υλικού που μετατοπίζει αμέσως την εκτέλεση του προγράμματος του μικροελεγκτή όταν αλλάζει η κατάσταση σε μια είσοδο.

Για λόγους επίδειξης, θα επιλέξουμε τη μέθοδο της διακοπής ώστε να γνωρίζουμε την ακριβή στιγμή που ένα σήμα αλλάζει κατάσταση. Σε έναν μικροελεγκτή Arduino, μια διακοπή χρησιμοποιείται δημιουργώντας μια Ρουτίνα Εξυπηρέτησης Διακοπής (ISR).

Τι θα χρειαστείτε:

 

Καλωδίωση Arduino και Shield

Οι αισθητήρες Hall έχουν 4 καλώδια: 5V, GND και 2 καλώδια σήματος. Κάθε καλώδιο σήματος δίνει παλμούς όσο ο κινητήρας περιστρέφεται. Υπάρχουν επίσης δύο καλώδια του ενεργοποιητή που πρέπει να συνδεθούν στο MegaMoto. Θα χρησιμοποιήσουμε μόνο ένα από τα σήματα Hall.

Συνδέστε τον γραμμικό ενεργοποιητή με το Arduino και το MegaMoto ως εξής:

  • Κόκκινο καλώδιο αισθητήρα στο pin 5V του Arduino.
  • Μαύρο καλώδιο αισθητήρα στο pin GND του Arduino.
  • Κίτρινο/πορτοκαλί καλώδιο στο pin 2 ή 3 του Arduino (αν χρησιμοποιείτε διαφορετικό Arduino, βεβαιωθείτε ότι τα pins υποστηρίζουν διακοπές).
  • Κόκκινο καλώδιο ενεργοποιητή στο MOTA του MegaMoto.
  • Μαύρο καλώδιο ενεργοποιητή στο MOTB του MegaMoto.

Αφού συνδέσετε σωστά τους κινητήρες στις πλακέτες, συνδέστε την τροφοδοσία ως εξής:

  • Συνδέστε 12V στο BAT+.
  • Συνδέστε GND στο BAT-.
  • Συνδέστε 12V στο Vin του Arduino.
  • Καλωδιώστε δύο κουμπιά μεταξύ των pins 7 και 8 στο Arduino και συνδέστε τα στο GND.

Υπάρχουν 4 τύποι εναυσμάτων για τη διακοπή: Rising, Falling, High και Low. Αλλάζοντας το έναυσμα, μπορείτε να προσαρμόσετε πότε θα συμβαίνει η διακοπή. Rising είναι όταν το pin βλέπει μετάβαση από χαμηλό σε υψηλό, Falling όταν βλέπει από υψηλό σε χαμηλό, Low όταν το pin είναι χαμηλό και High όταν το pin είναι υψηλό.

Για τον πλήρη κώδικα Arduino, επισκεφθείτε τον οδηγό μας εδώ: Hall Effect Linear Actuator Arduino Code

Ο κώδικας θα μετακινεί τον ενεργοποιητή προς τα εμπρός ή προς τα πίσω κατά ένα προκαθορισμένο ποσό όταν πατάτε τα κουμπιά στο pin 7 ή 8 (active LOW). Περιλαμβάνει επίσης μια ρουτίνα αρχικοποίησης θέσης (homing). Αυτό είναι σημαντικό, διότι αν τρέχετε τον κινητήρα μπρος-πίσω για μεγάλο διάστημα, μπορεί να χαθούν μετρήσεις και να χάσετε σταδιακά την ακριβή θέση. Η ρουτίνα homing μετακινεί τον γραμμικό ενεργοποιητή πίσω σε μια γνωστή θέση, ώστε ο μετρητής να μηδενιστεί.

 

Ενεργοποιητής με Raspberry Pi

Πώς συνδέει κανείς έναν ενεργοποιητή σε Raspberry Pi 2, 4 ή νεότερο μοντέλο; Ο έλεγχος ενός γραμμικού ενεργοποιητή με Raspberry Pi είναι απλός και μπορεί να γίνει μέσω διαδικτύου, επιτρέποντας ασύρματο έλεγχο. Ακολουθήστε τα βήματα στον παρακάτω οδηγό για να δείτε ακριβώς πώς: Raspberry Pi Linear Actuator Control.

Το Raspberry Pi 4 χρησιμοποιείται για να τρέχει το λογισμικό διακομιστή και να λαμβάνει εντολές για τον έλεγχο του γραμμικού ενεργοποιητή. Ωστόσο, αυτός ο οδηγός δεν χρησιμοποιεί αισθητήρα Hall. Για να το κάνετε, μια πλακέτα Arduino μπορεί να συνδεθεί με τον γραμμικό ενεργοποιητή και το Raspberry Pi ώστε να στέλνει/λαμβάνει δεδομένα ασύρματα. Αν και το Raspberry Pi μπορεί επίσης να χρησιμοποιηθεί απευθείας για ανάγνωση δεδομένων αισθητήρων, όπως το Arduino, ίσως είναι υπερβολή αν ελέγχετε μόνο λίγους γραμμικούς ενεργοποιητές.

 

Έλεγχος πολλαπλών γραμμικών ενεργοποιητών

Hall Effect Sensor Actuator IP66 Model: PA-04-HS

 

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

Δείτε το πλήρες σετ οδηγιών εδώ: Ελέγξτε πολλαπλούς γραμμικούς ενεργοποιητές με έναν μικροελεγκτή

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

Περιηγηθείτε στη γκάμα μικροελεγκτών μας για απόλυτο έλεγχο ενεργοποιητών!

Συμπέρασμα

Αν είστε έτοιμοι για την πρόκληση, υπάρχουν επιπλέον μέθοδοι που μπορείτε να δοκιμάσετε χρησιμοποιώντας ένα Arduino με γραμμικούς ενεργοποιητές για να ελέγξετε την κίνηση, όπως η χρήση έξυπνου κώδικα PID, τον οποίο μπορείτε να δείτε εδώ: Linear Actuator PID Control. Ένας αισθητήρας Hall μέσα σε έναν γραμμικό ενεργοποιητή, όπως ο PA-04-HS, προσφέρει ένα επιπλέον επίπεδο ελέγχου που μπορεί εύκολα να ρυθμιστεί με τη βοήθεια ενός Arduino ή Raspberry Pi. Είτε η εφαρμογή σας απαιτεί μόνο ανάγνωση δεδομένων αισθητήρων είτε θέλετε να περάσετε τον γραμμικό ενεργοποιητή σας στο επόμενο επίπεδο βάζοντάς τον online, ένας αισθητήρας Hall, σε συνδυασμό με τον μικροελεγκτή της επιλογής σας, είναι ο σωστός δρόμος.

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