HiTechnic Αισθητήρας Επιτάχυνσης  για LEGO Mindstorms NXT

Εισαγωγή

Ο Αισθητήρας Επιτάχυνσης NXT περιέχει ένα επιταχυνσιόμετρο τριών αξόνων  το οποίο μέτρα επιτάχυνση σε τρεις άξονες, X, Y και Z. Η επιτάχυνση μετράται στην περιοχή από -2g έως 2g με κλιμάκωση  περίπου 200 γραμμάρια ανά μέτρηση.

Ο Αισθητήρας Επιτάχυνσης NXT μπορεί επίσης να χρησιμοποιηθεί για τη μέτρηση της κλίσης σε τρεις άξονες.

Συνδέεται σε μια θύρα ειδόδου του NXT με τη χρήση του τυποποιημένου 6-πλού καλωδίου και χρησιμοποιεί το ψηφιακό πρωτόκολλο επικοινωνιών I2C. Η μετρούμενη επιτάχυνση για κάθε άξονα ανανεώνεται περίπου 100 φορές ανά δευτερόλεπτο.

Ο Αισθητήρας Επιτάχυνσης NXT είναι κατασκευασμένος σε ένα πρότυπη θήκη αισθητήρων Mindstorms για να ταιριάζει με τα υπόλοιπα στοιχεία Mindstorms.

Οι τρεις άξονες της μέτρησης ονομάζονται x, y, και z, όπως φαίνεται παρακάτω.

Για να δοκιμάσετε τον αισθητήρα, συνδέστε τον στη θύρα 2 του NXT σας και επιλέξτε View/Ultrasonic cm > Port 2 στην οθόνη του ΝΧΤ. Κρατήστε το επίπεδο του αισθητήρα στο χέρι σας και αργά γύρτε τον προς τα εμπρός και πίσω. Η εμφανιζόμενη τιμή στην οθόνη του NXT θα εκπροσωπεί την επιτάχυνση ή την τιμή κλίσης για τον άξονα Χ και θα είναι της τάξης του 0 – 254. (Το 0 θα εμφανίσει ως ?????? στην Προβολή (View). Πρέπει να σημειωθεί ότι μόνο ο x άξονας μπορεί να εμφανιστεί στην λειτουργία Προβολής (View).

Προγραμματισμός

Mindstorms NXT-G

Ο Αισθητήρας Επιτάχυνσης NXT μπορεί να προγραμματιστεί με τη χρήση του μπλοκ Αισθητήρα Επιτάχυνσης (Acceleration Sensor Block) στο λογισμικό LEGO Mindstorms NXT. Αν το μπλοκ Αισθητήρα Επιτάχυνσης δεν είναι διαθέσιμο μπορείτε επίσης να χρησιμοποιήσετε το πρότυπο μπλοκ  Αισθητήρα Υπερήχων για πρόσβαση μόνο στο άξονα εξόδου x.

Το μπλοκ Αισθητήρα Επιτάχυνσης είναι διαθέσιμο για δωρεάν λήψη στον ιστοχώρο της HiTechnic http://www.hitechnic.com/contents/en-us/d19.html.

Μπλοκ  Αισθητήρα Υπερήχων

Εάν χρησιμοποιείτε το μπλοκ  Αισθητήρα Υπερήχων για να προγραμματίσετε τον Αισθητήρα Επιτάχυνσης, ρυθμίστε το σε λειτουργία εκατοστών όπως φαίνεται στην εικόνα. Το Block θα επιστρέψει την τιμή του άξονα Χ  που θα είναι στην περιοχή 0 – 254.

Μπλοκ Αισθητήρα Επιτάχυνσης

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

Προσθετικά, ένα σημείο σκανδαλισμού μπορεί να τεθεί για τον άξονα X. Οι προϋποθέσεις για την ενεργοποίηση θα πρέπει να πληρούνται, όταν η τιμή του άξονα x υπερβαίνει αυτη του σκανδάλισμού.

Ρύθμιση του μπλοκ  Αισθητήρα Επιτάχυνσης

Διαμόρφωση εικόνας της ομάδας

  1. Επιλέξτε τη θύρα, όπου συνδέεται ο Αισθητήρας Επιτάχυνσης. Προεπιλεγμένη θα είναι η Θύρα 3. Μπορείτε να αλλάξετε αυτή την επιλογή εάν θέλετε.
  2. Εάν επιλέξετε τη λειτουργία Σύγκρισης, το μπλοκ θα ενεργοποιείται όταν η τιμή του άξονα x θα είναι πάνω ή κάτω από την επιλεγμένη τιμή,  Επιλέξετε < «λιγότερο από» για τον σκανδαλισμό του μπλοκ όταν η τιμή είναι χαμηλότερη από την τιμή ενεργοποίησης ή > «μεγαλύτερο από» για τον σκανδαλισμό του μπλοκ όταν η τιμή είναι πάνω από την τιμή ενεργοποίησης. Χρησιμοποιήστε το ρυθμιστικό για να ρυθμίσετε την τιμή ενεργοποίησης ή πληκτρολογήστε την απευθείας στο κουτί εισόδου.

Πίνακας Καταχωρητών Αισθητήρα

Διεύθυνση

Τύπος

Περιεχόμενα

42H

byte

X άξονα άνω 8 bits

43H

byte

Y άξονα άνω 8 bits

44H

byte

άξονα άνω 8 bits

45H

byte

X  άξονα χαμηλά 2 bits

46H

byte

Υ άξονα χαμηλά 2 bits

47H

byte

Ζ άξονα χαμηλά 2 bits

Άλλα περιβάλλοντα προγραμματισμού

RobotC

Όλα τα χαρακτηριστικά του αισθητήρα  HiTechnic Acceleration Sensor μπορούν να προσεγγιστούν με τη χρήση RobotC.

Για περισσότερες πληροφορίες, μεταβείτε στο http://www-education.rec.ri.cmu.edu/robotc/.

NXC

Η NXC είναι μια γλώσσα προγραμματισμού C που μπορεί να έχει πρόσβαση σε όλες τα χαρακτηριστικά του Αισθητήρα Επιτάχυνσης.  Για περισσότερες πληροφορίες, μεταβείτε στο http://bricxcc.sourceforge.net/nbc/.

Παράδειγμα NXC Κώδικα

#include «NXCDefs.h»
task main()
{
SetSensorLowspeed(IN_1);
int count;

int xval;
int yval;
int zval;

byte inI2Ccmd[];
byte outbuf[];
while (TRUE)
{

ArrayInit(inI2Ccmd, 0, 2); // set the buffer to hold 10 values (initially all are zero)
inI2Ccmd[0] = 0x02; // set values in the array
inI2Ccmd[1] = 0x42;
count=8;                                  //read count set to 8 bytes

I2CBytes(IN_1, inI2Ccmd, count, outbuf);  //read the acceleration sensor on port 1
xval=outbuf[0];                           //load x axis upper 8 bits
yval=outbuf[1];                           //load Y axis upper 8 bits
zval=outbuf[2];                           //load z axis upper 8 bits
if (xval > 127) xval-=256;                //convert x to 10 bit value
xval=xval*4 + outbuf[3];
if (yval > 127) yval-=256;                //convert y to 10 bit value
yval=yval*4 + outbuf[4];
if (zval > 127) zval-=256;                //convert z to 10 bit value
zval=zval*4 + outbuf[5];
… …

}

Σημειώσεις:

Η έκδοση Firmware  1,03 και πάνω, πρέπει να έχει φορτωθεί στο NXT για να λειτουργεί σωστά ο Αισθητήρας Επιτάχυνσης . Μπορείτε να ελέγξετε την έκδοση firmware από την εμφάνιση του παράθυρου NXT στο λογισμικό Mindstorms.

Επιπλέον παρατηρήσεις

Ο Αισθητήρας Επιταχυνσιόμετρο και το μυστήριο I2C

Έχουν γίνει περισσότερες δοκιμές με το «ACCL-Nx-3g3x» επιταχυνσιόμετρο μέρος από Mindsensors. Στόχος μας ήταν να αποκτηθούν οι Χ και Υ τιμές του άξονα από τον αισθητήρα μέσω Bluetooth χρησιμοποιώντας Άμεσες Εντολές Lego NXT , και στη συνέχεια, να συνδεθούν αυτές οι τιμές με ένα πίνακα στο PC.

Πρώτον, κοίταξαμε ποιες
Άμεσες Εντολές Lego NXT  ήταν αναγκαίες για να διαβαστούν οι τιμές του αισθητήρα μεσω του I2C. Έλεγξαμε τον πινακα χαρακτηρηστικών του  Mindsensors που καθορίζει τους κωδικούς εντολής του I2C και τις διευθύνσεις μνήμης. Η απλή ανάγνωση των καταχωρητών αξόνων λειτούργησε καλά, όμως, όταν αρχίσαμε διαδοχικές αναγνώσεις του αισθητήρα σε διαστήματα των 40ms , το NXT βγηκε εκτός ορίου. Πιστεύουμε στις επόμενες εκδόσεις firmware (τρεχουσα 1.03) να έχει διορθωθεί.

Τα χρώματα και άλλες ιδιότητες μπορούν να υποστούν επεξεργασία. Εδω είναι ενα δείγμα του πίνακα οργάνων roboDNA Lego NXT:

Tags : , , | add comments

Αισθητήρας Γυροσκοπίου HiTechnic για LEGO Mindstorms NXT

Εισαγωγή

Ο HiTechnic Γυροσκοπικός Αισθητήρας περιλαμβάνει ένα γυροσκοπικό αισθητήρα απλού άξονα που ανιχνεύει την περιστροφή και επιστρέφει μια τιμή που αντιπροσωπεύει τον αριθμό των μοιρών ανά δευτερόλεπτο περιστροφής, επιτρέποντας το NXT να μετρά την πρόσθετη διάσταση της περιστροφής. Ο Γυροσκοπικός Αισθητήρας θα σας επιτρέψει να εντοπίσετε με ακρίβεια την περιστροφή του NXT σας. Ο γυροσκοπικός αισθητήρας επιστρέφει τον αριθμό των μοιρών ανά δευτερόλεπτο περιστροφής και επίσης δείχνει την κατεύθυνση της περιστροφής. Μετρά +/-360° ανά δευτερόλεπτο και κατασκευάζει ρομπότ που μπορούν να ισορροπούν, κολυμπούν, ή να εκτελούν άλλες λειτουργίες όπου η μέτρηση της περιστροφής είναι απαραίτητη.

Ο Γυροσκοπικός Αισθητήρας NXT συνδέται σε μια θύρα εισόδου του NXT  με τη χρήση τυποποιημένου 6-πλού καλωδίου και αξιοποιεί την διεπαφή αναλογικού αισθητήρα. Ο ρυθμός περιστροφής που μπορεί να διαβασεί είναι περίπου μέχρι 300 φορές ανά δευτερόλεπτο.

Ο Αισθητήρας Γυροσκοποίου NXT είναι κατασκευασμένος σε ένα πρότυπη θήκη αισθητήρων Mindstorms για να ταιριάζει με τα υπόλοιπα στοιχεία Mindstorms.

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

Για μια γρήγορη δοκιμή του νέου αισθητήρα σας, τοποθετήστε τον στη θύρα 1 του NXT σας και επιλέξτε  View – Ambient light – Port 1 στην οθόνη του ΝΧΤ. Καθώς περιστρέφετε τον αισθητήρα όπως φαίνεται, θα παρατηρήσετε ότι οι μετρήσεις θα αλλάξουν από την ονομαστική αξία κέντρου 40. Η ταχύτερη περιστροφή του αισθητήρα, θα δόσει μεγαλύτερη απόκλιση από 40. Αυτή είναι μια δοκιμή μόνο και δεν αποτελεί απόδειξη του τρόπου με τον οποίο ο αισθητήρας θα πρέπει να χρησιμοποιείται. Παράδειγμα

Προγραμματισμός

Mindstorms NXT-G

Ο Γυροσκοπικός Αισθητήρας μπορεί να προγραμματιστεί με την χρήση του λογισμικού LEGO Mindstorms NXT-G με την εισαγωγή του μπλοκ Γυροσκοπικός Αισθητήρας. Αυτο και άλλα μπλοκ προγραμματισμού αισθητήρων HiTechnic ειναι διαθέσιμα την σελίδα downloads.

Μπλοκ Γυροσκοπικού Αισθητήρα

Το Μπλοκ Γυροσκοπικού Αισθητήρας παρέχει πρόσβαση στην έξοδο του αισθητήρα και σε άλλα χαρακτηριστικά.

Αυτό το βύσμα συνδέει τον αριθμό της θύρας του ΝΧΤ σας στην οποία είναι συνδεδεμένος  ο αισθητήρας πυξίδας.

  1. Αυτό το βύσμα εισάγει την τιμή σκανδαλισμού.
  2. Αυτό το βύσμα εισάγει την κατάσταση σκανδαλισμού σύγκρισης.
  3. Αυτό το βύσμα εξάγει τον σκανδαλισμό.
  4. Αυτό το βύσμα εισάγει την τιμή αντισταθμησης.
  5. Αυτό το βύσμα εξάγει την μετρούμενη τιμή του ρυθμού περιστροφής.
  6. Αυτό το βύσμα εξάγει μια λογική έξοδο , αληθή ή ψευδή, όταν η τιμή εξόδου και κατάστασης που επιλέγονται από την Σύγκριση (Compare)  πληρούνται.

Gyro Sensor Block Front Panel

  1. Επιλέξτε την Θύρα που είναι συνδεδεμένος ο Αισθητήρας Γυροσκοπίου. Προεπιλεγμενη είναι η Θύρα 3. Μπορείτε να αλλάξετε αυτή την τιμή.
  2. Η τιμή εξόδου του αισθητήρα μπορεί να επηρεασθεί από την θερμοκρασία και εργοστασιακές ανοχές οι οποίες προκαλούν μια μη μηδενική τιμή όταν ο αισθητήρας είναι σταθερός. Για να αντισταθμιστεί αυτό,  μια αντιστάθμιση μηδενισμού ή μια τιμή πόλωσης, που μπορεί να ρυθμίζεται από την είσοδο που λαμβάνεται από τον αισθητήρα όταν αυτός δεν περιστρέφεται.
  3. Μπορείτε να προσαρμόσετε την τιμή Σύγκρισης  στην οποία η έξοδος σκανδαλισμού θα αλλάξει.
  4. Η έξοδος σκανδαλισμού μπορεί να επιλέγεται μεγαλύτερη ή μικρότερη από την επιλογή του τύπου Trigger. Όταν η τιμή εξόδου και κατάστασης που επιλέγονται από την Σύγκριση (Compare)  πληρούνται, αυτό θα προκαλέσει μια λογική έξοδο  αληθή ή ψευδή (Boolean True/False).

Υπολογισμός της τιμής Αντιστάθμισης

Για τον υπολογισμό της τιμής αντιστάθμιση που απαιτείται για το «μηδέν» στην έξοδο του αισθητήρα είναι απαραίτητο να διαβάσετε την τιμή, ενώ ο αισθητήρας είναι απολύτως ακίνητος. Με το NXT-G αυτό μπορεί να γίνει με ανάγνωση και εμφάνιση της εξόδου η οποία μπορεί στη συνέχεια να χρησιμοποιηθεί για να εισέλθει ως αντιστάθμιση ή να έχει το πρόγραμμα υπολογίσει την αντιστάθμιση, όπως φαίνεται στο παρακάτω παράδειγμα προγράμματος.

Μπορείτε να κατεβάσετε τον κώδικα για αυτό το πρόγραμμα και άλλα παραδείγματα απο την σελίδα  downloads .

Άλλα περιβάλλοντα Προγραμματισμού

NXC

Η έξοδος του Αισθητήρα Γυροσκοποίου μπορεί να διαβαστείαπο την NXC  διαβάζοντας τον αισθητήρα οπώς φένεται στο παρακάτω παράδειγμα.

NXC Example code

#define GYRO_PORT IN_3 //Gyro on port 3
#define GYRO_Offset 602 //offset value to apply to the output value

long Gyro_value;

..

Gyrovalue=SensorRaw(GYRO_PORT)-GYRO_Offset;  //read the gyro sensor

..

Περισσότερες πληροφορίες είναι διαθέσιμες στο http://bricxcc.sourceforge.net/nbc/.

RobotC

const tSensors GyroSensor          = (tSensors) S1;   //gyro sensor//

#define offset 598       //offset value may vary depending on sensor & temperature
long Gyro_value;

task main()
{
Gyrovalue=SensorValue(GyroSensor)-offset;  //read the gyro sensor
….

}

Περισσότερες πληροφορίες είναι διαθέσιμες στο http://www-education.rec.ri.cmu.edu/robotc/

Σημειώσεις:

Η τελευταία έκδοση του μπλοκ γυροσκοποίου είναι διαθέσιμη στο www.hitechnic.com. Πηγαίνετε στην σελίδα λήψης για να κατεβάσετε όλα τα τμήματα προγραμματισμού HiTechnic.

Tags : , , | add comments