AN0007 Arduino σε Platinum COMM
“
Πληροφορίες προϊόντος
Προδιαγραφές
- Όνομα προϊόντος: Έγγραφο βοήθειας επικοινωνίας ARDUINO to PLATINUM
- Κατασκευαστής: Dynament Limited
- Διεύθυνση: ΕρμίtagΒιομηχανική Περιοχή E Lane, Kings Mill Way,
Μάνσφιλντ, Νότιγχαμσαϊρ, NG18 5ER, Ηνωμένο Βασίλειο - Επικοινωνία: Τηλ.: 44 (0)1623 663636, Ηλεκτρονικό ταχυδρομείο: sales@dynament.com,
Webιστότοπος: www.dynament.com - Τεύχος: 1.2, Ημερομηνία: 09/04/2025
Οδηγίες χρήσης προϊόντος
Σύνδεση του αισθητήρα
Αυτό το φύλλο δεδομένων χρησιμοποιεί το Arduino Mega ως πρώηνampδηλ. Σύνδεση ως
ακολουθεί:
- 5v -> ακίδα Arduino 5v
- 0v -> Γείωση Arduino
- Tx -> Arduino RX1
- Rx -> Πηγαίνει στην έξοδο του διαιρέτη δυναμικού. Η είσοδος
πηγαίνει στο Arduino Tx
Τομtagε Συμβατότητα
Το Arduino χρησιμοποιεί λογική υψηλή τάση 5v ενώ ο αισθητήρας Platinum χρησιμοποιεί
3.3v. Χρησιμοποιήστε μια έντασηtagδιαιρέτη e με προτεινόμενες τιμές για R1 και R2 ως
4K7 για την αποφυγή ζημιάς στον αισθητήρα.
Εγκατάσταση Arduino IDE
- Κατεβάστε την νεότερη έκδοση του λογισμικού Arduino IDE από
το Arduino webτοποθεσία. - Επιλέξτε την πλακέτα Arduino, τον επεξεργαστή και τη θύρα στα εργαλεία
αναπτυσσόμενο μενού.
Μεταφόρτωση κώδικα
- Αντιγράψτε το παρεχόμενο παράδειγμαampΕισάγετε τον κώδικα στο IDE του Arduino.
- Ανεβάστε τον κώδικα στο Arduino κάνοντας κλικ στο βέλος.
- Ανοίξτε την σειριακή οθόνη για να view μετάδοση δεδομένων.
FAQ
Ε: Τι πρέπει να κάνω εάν έχω ένα Arduino Uno με μόνο μία επικοινωνία;
λιμάνι;
A: Συνδέστε τον αισθητήρα Platinum σε αυτήν τη θύρα. Όταν χρησιμοποιείτε το
σειριακή οθόνη, θα εμφανίσει επίσης το μεταδιδόμενο εξάγωνο.
“`
Σημείωση Εφαρμογής AN0007
Έγγραφο βοήθειας για την επικοινωνία ARDUINO σε PLATINUM
Dynament Limited
ΕρμήtagΒιομηχανική Περιοχή e Lane, Kings Mill Way, Mansfield, Nottinghamshire, NG18 5ER, Ηνωμένο Βασίλειο. Τηλ.: 44 (0)1623 663636
ηλεκτρονικό ταχυδρομείο: sales@dynament.com www.dynament.com
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 1 από 14
Περιεχόμενα
Dynament Limited ………………………………………………………………………………………………………….1 Σύνδεση του αισθητήρα………………………………………………………………………………………..3 Arduino IDE …… ...5 Επεξήγηση κώδικα……………………………………………………………………………………………..9 Ανάλυση πακέτων ……………………………………………………………………………………………………………….11 Χρήση Serial.read() ……………………………………………………………………………………………………………………….13
Σημειώσεις για προχωρημένες μετατροπές… ....14
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 2 από 14
Σύνδεση του αισθητήρα Αυτό το φύλλο δεδομένων χρησιμοποιεί το Arduino Mega ως exampδηλ. Το Ardunio Mega παρέχει περισσότερες από μία θύρες επικοινωνίας, επομένως η θύρα επικοινωνίας 1 χρησιμοποιείται για την επικοινωνία με τον αισθητήρα και η θύρα επικοινωνίας 0 χρησιμοποιείται για την εκτύπωση στον υπολογιστή.
Το Arduino χρησιμοποιεί λογική υψηλή τάση 5v ενώ ο αισθητήρας Platinum χρησιμοποιεί 3.3v, επομένως για να αποφευχθεί η ζημιά στον αισθητήρα, απαιτείται τάση...tagΠρέπει να χρησιμοποιηθεί ο διαιρέτης e. Οι προτεινόμενες τιμές για τα R1 και R2 είναι 4K7.
Σχήμα 1: Μειώνει την ένταση του ήχουtage σε επίπεδο χρήσης
Η γραμμή μετάδοσης του αισθητήρα που πηγαίνει στη λήψη του Arduino δεν χρειάζεται διαχωριστή, καθώς τα 3.3V είναι μια αποδεκτή είσοδος για το Arduino.
Για να τροφοδοτήσετε τον αισθητήρα, πρέπει να τον συνδέσετε σε πρίζες 5v και 0v. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε τις ακίδες του Arduino.
Αφού ολοκληρωθεί αυτό, ο αισθητήρας θα πρέπει τώρα να έχει συνδεδεμένες τις ακόλουθες ακίδες:
5v -> ακίδα Arduino 5v
0v -> Γείωση Arduino
Tx -> Arduino RX1
Rx -> Πηγαίνει στην έξοδο του διαιρέτη δυναμικού. Η είσοδος πηγαίνει στο Arduino Tx
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 3 από 14
Αφού ολοκληρωθεί αυτό, ο αισθητήρας Platinum θα πρέπει να είναι συνδεδεμένος όπως φαίνεται:
Σχήμα 2: Ο αισθητήρας απεικονίζεται ανάποδα με έναν προσαρμογέα συγκόλλησης
Αν χρησιμοποιείτε ένα Arduino με μόνο μία θύρα επικοινωνίας (όπως το Arduino Uno), θα πρέπει να το συνδέσετε σε αυτήν, ωστόσο όταν χρησιμοποιείτε την σειριακή οθόνη (εμφανίζεται παρακάτω) θα εμφανίζεται επίσης το δεκαεξαδικό που μεταδίδεται.
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 4 από 14
Arduino IDE Μετάβαση στο Arduino webκαι κατεβάστε την νεότερη έκδοση του λογισμικού Arduino IDE. Μόλις εγκατασταθεί, θα πρέπει να δείτε την ακόλουθη οθόνη:
Σχήμα 3: Αρχική οθόνη Arduino
Στο αναπτυσσόμενο μενού εργαλείων, επιλέξτε την πλακέτα Arduino, τον επεξεργαστή και τη θύρα που χρησιμοποιείτε:
Σχήμα 4: Επιλογή επιλογών Πλακέτας, Επεξεργαστή και Θύρας
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 5 από 14
Αντιγραφή σε αυτό το πρώηνampο κώδικας: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);}}}
}
void loop() { send_read_live_data_simple(); receive_read_live_data_simple(); καθυστέρηση(5000);
}
void send_read_live_data_simple(){ // 0x10, 0x13, 0x06, 0x10, 0x1F, 0x00, 0x58 Serial1.write(0x10); Serial1.write(0x13); Serial1.write(0x06); Serial1.write(0x10); Serial1.write(0x1F); Serial1.write(0x00); Serial1.write(0x58);
}
void receive_read_live_data_simple(){ ενώ (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print("|"); } Serial.println();
}
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 6 από 14
Σχήμα 5: Κώδικας έτοιμος για μεταφόρτωση
Κάντε κλικ στο βέλος για να ανεβάσετε τον κώδικα στο Arduino. Αφού προγραμματιστεί το Arduino, ανοίξτε την σειριακή οθόνη.
AN0007
Σχήμα 6: Άνοιγμα της Σειριακής Οθόνης
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 7 από 14
Σχήμα 7: Ο σειριακός πίνακας ελέγχου δείχνει το πακέτο που έχει ληφθεί
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 8 από 14
Επεξήγηση κώδικα Το IDE του Arduino χρησιμοποιεί C++ για τον προγραμματισμό του Arduino.
Αυτή η γραμμή είναι μια δήλωση προς τα εμπρός. Χρησιμοποιείται για να ενημερώσει τον μικροελεγκτή ότι πιο κάτω στο πρόγραμμα θα κληθούν η συνάρτηση `send_read_live_data_simple' και η συνάρτηση `receive_read_live_data_simple'.
Στη συνέχεια, ακολουθεί η συνάρτηση εγκατάστασης. Αυτός ο κώδικας εκτελείται μόνο μία φορά κατά την εκκίνηση. Εκκινεί τις θύρες Serial0 και Serial1. Η Serial0 εμφανίζεται στην οθόνη σειριακής παρακολούθησης. Η Serial1 είναι η θύρα επικοινωνίας με τον αισθητήρα.
Αυτός είναι ο κύριος βρόχος, ο κώδικας αυτός επαναλαμβάνεται επανειλημμένα. Μπορείτε να δείτε διαβάζοντας τα ονόματα των συναρτήσεων ότι στέλνει ένα αίτημα για να διαβάσει μια απλοποιημένη έκδοση της δομής δεδομένων σε πραγματικό χρόνο. Στη συνέχεια, διαβάζει τη θύρα λήψης για να διαβάσει την απάντηση. Μετά από αυτό, ο μικροελεγκτής περιμένει 5000mS.
Αυτή η συνάρτηση γράφει το αίτημα για να λάβει την απλή δομή δεδομένων σε πραγματικό χρόνο στη σειριακή θύρα 1. Όπως αναφέρθηκε προηγουμένως, εάν έχετε μόνο μία σειριακή θύρα, θα πρέπει να αλλάξετε τη Σειριακή1 σε Σειριακή. Για να δείτε την πλήρη λίστα εντολών, ανατρέξτε στο έγγραφο του πρωτοκόλλου επικοινωνίας του Premier sensor. Ακολουθεί το μέρος του εγγράφου που σας λέει τι να γράψετε για αυτήν την εντολή:
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 9 από 14
Αυτή η συνάρτηση επαναλαμβάνει τη συνάρτηση ανάγνωσης όσο υπάρχουν ακόμη δεδομένα που πρέπει να ληφθούν από τον αισθητήρα Platinum. Η συνάρτηση Serial1.read() διαβάζει τα δεδομένα από το Serial1, το οποίο είναι συνδεδεμένο με τον αισθητήρα, και τα εκτυπώνει στο Serial0, ώστε να είναι ορατά στη σειριακή οθόνη. Στη συνέχεια, εκτυπώνεται ο χαρακτήρας `|' για να διαχωρίσει κάθε byte που λαμβάνεται, ώστε να είναι πιο ευανάγνωστο στη σειριακή οθόνη.
Αφού ολοκληρωθεί αυτό, γράφει μια νέα γραμμή στην σειριακή οθόνη.
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 10 από 14
Ανάλυση Πακέτων Τα Σχήματα 8 και 9 δείχνουν την έξοδο ενός σειριακού αποκωδικοποιητή συνδεδεμένου στις γραμμές λήψης και μετάδοσης.
Σχήμα 8: Εξερχόμενο πακέτο
Σχήμα 9: Εισερχόμενο πακέτο
Τα Σχήματα 10 και 11 δείχνουν το εξερχόμενο και το εισερχόμενο εξάγωνο αντίστοιχα με μια στήλη που δείχνει ποια εντολή είναι.
Σχήμα 10: Περιγραφή εξερχόμενου πακέτου
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 11 από 14
Σχήμα 11: Περιγραφή εισερχόμενου πακέτου
Λάβετε υπόψη ότι η ένδειξη αερίου είναι δεκαδική και όχι ακέραια. Αυτή η δεκαδική τιμή είναι σε μορφή IEEE-754, μπορείτε να χρησιμοποιήσετε έναν ηλεκτρονικό μετατροπέα όπως αυτόν για να τη μετατρέψετε. Η τιμή αερίου σε αυτήν την περίπτωση δείχνει -250 (καθώς βρισκόταν σε λειτουργία σφάλματος εκείνη τη στιγμή).
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 12 από 14
Χρησιμοποιώντας το Serial.read()
Ο προηγούμενος κώδικας εκτύπωνε μόνο τα δεδομένα που λαμβάνονται στην σειριακή οθόνη. Αν θέλετε να αποθηκεύσετε τα δεδομένα σε μεταβλητές, θα χρειαστεί να κάνετε κάποια περαιτέρω επεξεργασία. Το πακέτο που λαμβάνετε χωρίζεται σε bytes, γι' αυτό θα χρειαστεί να συνενώσετε ορισμένα από αυτά τα δεδομένα σε μεταβλητές. Η Serial1.Read() επιστρέφει έναν ακέραιο αριθμό (ο οποίος για το Arduino είναι 16 bit), ωστόσο, χρησιμοποιούνται μόνο τα πρώτα 8 bit. Γι' αυτό μπορούμε να τον αντιγράψουμε σε έναν μικρότερο τύπο δεδομένων που είναι μόνο 8 bit. Σε αυτήν την περίπτωση θα χρησιμοποιήσω char.
Για τα πακέτα που έχουν μήκος μόνο ένα byte, αυτό λειτουργεί καλά:
Για τα πακέτα μήκους 2 ή 4 byte, θα χρειαστεί να συνενώσετε τα δεδομένα.
Μπορείτε να το κάνετε αυτό με πολλούς διαφορετικούς τρόπους, εδώ αυτό που θα κάνω είναι να μετακινήσω τα δεδομένα προς τα αριστερά και μετά Ή τα.
Χρησιμοποιώντας αυτόν τον κώδικα, αν το readByte1 είναι 0x34 και το readByte2 είναι 0x12.
(int)readByte2
// αυτό μετατρέπει το 0x12 σε 0x0012.
(int)readByte2 << 8
// αυτό μετατοπίζει τα bit κατά ένα byte κάνοντάς το 0x1200.
(int)readByte2 << 8 | readByte1 // αυτό στη συνέχεια λαμβάνει την τιμή OR, με το 0x34 να κάνει 0x1234.
Ένας άλλος τρόπος για να το κάνετε αυτό θα ήταν να βάλετε τις τιμές σε έναν πίνακα και στη συνέχεια να μετατρέψετε τον πίνακα στον τύπο που θέλετε:
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 13 από 14
Οι χαρακτήρες έχουν μήκος ένα byte, ενώ η μεταβλητή float έχει μήκος 4 byte. Εξαιτίας αυτού, αν δημιουργήσουμε έναν πίνακα 4 χαρακτήρων με τις τιμές μας σε αυτόν και αλλάξουμε τον τύπο σε float.
Σε αυτήν την περίπτωση, το readArray είναι ένας δείκτης σε έναν πίνακα char. (float*)readArray αυτό το μέρος το μετατρέπει σε έναν δείκτη σε έναν πίνακα float και στη συνέχεια προστίθεται ένα * μπροστά για να ληφθεί η τιμή του πίνακα float.
Σημειώσεις για προχωρημένες μετατροπές
1. Η συνάρτηση Serial.read() επιστρέφει int αντί για char επειδή τα σφάλματα θα επιστρέψουν αρνητικές τιμές. Το πρόγραμμά σας θα πρέπει να το ελέγξει αυτό.
2. Τα uint8_t και uint16_t θα πρέπει να χρησιμοποιούνται αντί για char και int αντίστοιχα, καθώς αυτοί οι τύποι δεν έχουν τυποποιημένο μέγεθος (στον υπολογιστή μου το int είναι 32 bit ενώ στο Arduino είναι 16 bit).
3. Το πρωτόκολλο επικοινωνίας περιέχει χαρακτήρες γεμισμένους με byte (γνωστούς και ως χαρακτήρες ελέγχου), κάτι που εξηγείται λεπτομερέστερα στο έγγραφο πρωτοκόλλου επικοινωνίας αισθητήρα Premier tds0045. Εξαιτίας αυτού, το απλό πακέτο δεδομένων σε πραγματικό χρόνο που διαβάζεται θα είναι περιστασιακά μεγαλύτερο από το αναμενόμενο.
AN0007
Τεύχος 1.2
09/04/2025
Αλλαγή Σημείωσης 805
Σελίδα 14 από 14
Έγγραφα / Πόροι
![]() |
DYNAMENT AN0007 Arduino σε Platinum COMM [pdf] Οδηγός χρήστη AN0007 Arduino σε Platinum COMM, AN0007, Arduino σε Platinum COMM, σε Platinum COMM, Platinum COMM |