DYNAMENT AN0007 Arduino zu Platinum COMM Benutzerhandbuch

AN0007 Arduino zu Platinum COMM

Produktinformationen

Technische Daten

  • Produktname: ARDUINO zu PLATINUM COMMS HILFEDOKUMENT
  • Hersteller: Dynament Limited
  • Adresse: Hermitage Lane Industriegebiet, Kings Mill Way,
    Mansfield, Nottinghamshire, NG18 5ER, Vereinigtes Königreich
  • Kontakt: Tel: 44 (0)1623 663636, Email: sales@dynament.com,
    WebWebsite: www.dynament.com
  • Ausgabe: 1.2, Datum: 09

Anweisungen zur Produktverwendung

Sensor anschließen

Dieses Datenblatt verwendet den Arduino Mega als Beispielample. Verbinden als
ist wie folgt:

  • 5 V -> 5 V Arduino-Pin
  • 0 V -> Arduino GND
  • Tx -> Arduino RX1
  • Rx -> Geht zum Ausgang des Spannungsteilers. Der Eingang
    geht an Arduino Tx

Bandtage Kompatibilität

Der Arduino verwendet 5V Logik hoch, während der Platin-Sensor verwendet
3.3 V. Verwenden Sie einen Voltage Teiler mit vorgeschlagenen Werten für R1 und R2 als
4K7, um eine Beschädigung des Sensors zu verhindern.

Arduino IDE-Setup

  1. Laden Sie die neueste Version der Arduino IDE-Software herunter von
    der Arduino webWebsite.
  2. Wählen Sie in den Tools das Arduino-Board, den Prozessor und den Port aus
    Dropdown-Menü.

Code-Upload

  1. Kopieren Sie das bereitgestellte BeispielampDateicode in die Arduino IDE.
  2. Laden Sie den Code auf den Arduino hoch, indem Sie auf den Pfeil klicken.
  3. Öffnen Sie den seriellen Monitor, um view Datenübertragung.

Häufig gestellte Fragen

F: Was soll ich tun, wenn ich einen Arduino Uno mit nur einer Kommutierung habe?
Hafen?

A: Schließen Sie den Platin-Sensor an diesen Anschluss an. Bei Verwendung des
Im seriellen Monitor wird auch das übertragene Hex angezeigt.

„`

Anwendungshinweis AN0007
ARDUINO zu PLATINUM COMMS HILFEDOKUMENT

Dynament Limited
Hermitage Lane Industrial Estate Kings Mill Way Mansfield Nottinghamshire NG18 5ER UK. Tel: 44 (0)1623 663636
E-Mail: sales@dynament.com www.dynament.com

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 1 von 14

Inhalt
Dynament Limited …………………………………………………………………………………………………….1 Anschließen des Sensors……………………………………………………………………………………………..3 Arduino IDE …………………………………………………………………………………………………………………5 Code-Erklärung…………………………………………………………………………………………………..9 Paketaufschlüsselung ………………………………………………………………………………………………….11 Verwenden von Serial.read() ………………………………………………………………………………………………….13
Erweiterte Konvertierungshinweise……………………………………………………………………………….14

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 2 von 14

Anschließen des Sensors Dieses Datenblatt verwendet den Arduino Mega als Beispielample. Der Ardunio Mega verfügt über mehr als einen Kommunikationsanschluss. Daher wird Kommunikationsanschluss 1 zur Kommunikation mit dem Sensor und Kommunikationsanschluss 0 zum Drucken auf dem PC verwendet.
Der Arduino verwendet 5V Logik hoch, während der Platin-Sensor 3.3V verwendet. Um eine Beschädigung des Sensors zu verhindern,tagDer Teiler muss verwendet werden. Empfohlene Werte für R1 und R2 sind 4K7.

Abbildung 1: Senkt die Lautstärketage auf nutzbares Niveau
Die Sensor-Sendeleitung zum Arduino-Empfänger benötigt keinen Teiler, da 3.3 V ein akzeptabler Eingang für den Arduino sind.
Um den Sensor mit Strom zu versorgen, muss er an 5 V und 0 V angeschlossen werden. Dazu können Sie die Pins am Arduino verwenden.
Wenn dies abgeschlossen ist, sollten am Sensor nun die folgenden Pins angeschlossen sein:
5 V -> 5 V Arduino-Pin
0 V -> Arduino GND
Tx -> Arduino RX1
Rx -> Geht zum Ausgang des Spannungsteilers. Der Eingang geht zum Arduino Tx

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 3 von 14

Nachdem dies abgeschlossen ist, sollte Ihr Platinum-Sensor wie gezeigt angeschlossen sein:
Abbildung 2: Der Sensor ist kopfüber mit einem Lötadapter dargestellt
Wenn Sie einen Arduino mit nur einem Kommunikationsanschluss verwenden (wie den Arduino Uno), müssen Sie ihn damit verbinden. Wenn Sie jedoch den seriellen Monitor verwenden (siehe später), wird auch der übertragene Hex-Wert angezeigt.

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 4 von 14

Arduino IDE Zum Arduino webBesuchen Sie die Website und laden Sie die neueste Version der Arduino IDE-Software herunter. Nach der Installation sollte folgender Bildschirm angezeigt werden:
Abbildung 3: Arduino-Startbildschirm
Wählen Sie im Dropdown-Menü „Tools“ das Arduino-Board, den Prozessor und den Port aus, die Sie verwenden:

Abbildung 4: Wählen Sie die Optionen für Board, Prozessor und Port aus

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 5 von 14

Kopieren Sie dieses BeispielampDateicode: 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(); Verzögerung(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(){ während (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 6 von 14

Abbildung 5: Code bereit zum Hochladen
Klicken Sie auf den Pfeil, um den Code auf den Arduino hochzuladen. Öffnen Sie nach der Programmierung des Arduino den seriellen Monitor.

AN0007

Abbildung 6: Öffnen Sie den seriellen Monitor

Problem 1.2

09

Änderungshinweis 805

Seite 7 von 14

Abbildung 7: Der Serial Monitor zeigt das empfangene Paket an

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 8 von 14

Codeerklärung: Die Arduino IDE verwendet C++ zum Programmieren des Arduino.
Diese Zeile ist eine Vorwärtsdeklaration. Sie teilt dem Mikrocontroller mit, dass weiter unten im Programm die Funktionen „send_read_live_data_simple“ und „receive_read_live_data_simple“ aufgerufen werden.
Als Nächstes folgt die Setup-Funktion. Dieser Code wird nur einmal beim Systemstart ausgeführt. Er startet die Ports Serial0 und Serial1. Serial0 wird auf dem seriellen Monitor angezeigt. Serial1 ist der Port für die Kommunikation mit dem Sensor.
Dies ist die Hauptschleife. Dieser Code wird wiederholt ausgeführt. Anhand der Funktionsnamen lässt sich erkennen, dass eine Anfrage zum Lesen einer vereinfachten Version der Live-Datenstruktur gesendet wird. Anschließend wird der Empfangsport gelesen, um die Antwort zu lesen. Danach wartet der Mikrocontroller 5000 ms.
Diese Funktion schreibt die Anforderung zum Abrufen der einfachen Live-Datenstruktur an den seriellen Port 1. Wie bereits erwähnt, sollten Sie Serial1 in Serial ändern, wenn Sie nur einen seriellen Port haben. Die vollständige Befehlsliste finden Sie im Dokument zum Premier Sensor Communications Protocol. Hier ist der Teil des Dokuments, der Ihnen erklärt, was Sie für diesen Befehl schreiben müssen:

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 9 von 14

Diese Funktion führt die Lesefunktion in einer Schleife aus, solange noch Daten vom Platinum-Sensor empfangen werden. Serial1.read() liest die Daten von Serial1, das mit dem Sensor verbunden ist, und gibt sie auf Serial0 aus, sodass sie auf dem seriellen Monitor angezeigt werden. Das Zeichen „|“ wird dann ausgegeben, um jedes empfangene Byte zu trennen und es auf dem seriellen Monitor übersichtlicher zu gestalten.
Nachdem dies abgeschlossen ist, wird eine neue Zeile in den seriellen Monitor geschrieben.

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 10 von 14

Paketaufschlüsselung Abbildung 8 und 9 zeigen die Ausgabe eines seriellen Decoders, der an die Empfangs- und Sendeleitungen angeschlossen ist.
Abbildung 8: Ausgehendes Paket
Abbildung 9: Eingehendes Paket
Abbildung 10 und 11 zeigen das ausgehende und eingehende Hex-Signal jeweils mit einer Spalte, die angibt, um welchen Befehl es sich handelt.

Abbildung 10: Beschreibung des ausgehenden Pakets

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 11 von 14

Abbildung 11: Beschreibung des eingehenden Pakets
Bitte beachten Sie, dass der Gaswert eine Dezimalzahl und keine Ganzzahl ist. Diese Dezimalzahl liegt im IEEE-754-Format vor. Sie können einen Online-Konverter wie diesen verwenden, um sie umzurechnen. Der Gaswert zeigt in diesem Fall -250 an (da er sich zu diesem Zeitpunkt im Fehlermodus befand).

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 12 von 14

Verwenden von Serial.read()
Der vorherige Code hat nur die empfangenen Daten auf dem seriellen Monitor ausgegeben. Wenn Sie die Daten in Variablen speichern möchten, müssen Sie weitere Verarbeitungsschritte durchführen. Das empfangene Paket ist in Bytes aufgeteilt, daher müssen Sie einige dieser Daten in Variablen verknüpfen. Serial1.Read() gibt einen int-Wert zurück (bei Arduino 16 Bit), allerdings werden nur die ersten 8 Bit verwendet. Daher können wir es in einen kleineren Datentyp mit nur 8 Bit kopieren; in diesem Fall verwende ich char.
Für Pakete, die nur ein Byte lang sind, funktioniert dies einwandfrei:
Bei Paketen mit einer Länge von 2 oder 4 Byte müssen Sie die Daten verketten.

Sie können dies auf viele verschiedene Arten tun. Hier werde ich die Daten nach links verschieben und dann mit ODER verknüpfen.

Verwenden Sie diesen Code, wenn readByte1 0x34 und readByte2 0x12 ist.

(int)readByte2

// dies konvertiert 0x12 in 0x0012.

(int)readByte2 << 8

// Dadurch werden die Bits um ein Byte verschoben, sodass 0x1200 entsteht.

(int)readByte2 << 8 | readByte1 // dies wird dann mit ODER verknüpft, wobei 0x34 0x1234 ergibt.

Eine andere Möglichkeit hierfür besteht darin, die Werte in ein Array einzufügen und das Array dann in den gewünschten Typ zu konvertieren:

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 13 von 14

Zeichen sind ein Byte lang, Float hingegen 4 Byte. Aus diesem Grund erstellen wir ein Array mit 4 Zeichen und unseren Werten und ändern den Typ in Float.
In diesem Fall ist readArray ein Zeiger auf ein Zeichenarray. (float*)readArray: Dieser Teil wandelt es in einen Zeiger auf einen Float um und fügt dann vorne ein * hinzu, um den Wert des Floats zu erhalten.
Erweiterte Konvertierungshinweise
1. Serial.read() gibt int statt char zurück, da Fehler negative Werte zurückgeben. Ihr Programm sollte dies überprüfen.
2. uint8_t und uint16_t sollten anstelle von char bzw. int verwendet werden, da diese Typen keine Standardgröße haben (auf meinem PC ist int 32 Bit, auf dem Arduino hingegen 16 Bit).
3. Das Kommunikationsprotokoll enthält Byte-Stuffed-Zeichen (auch Steuerzeichen genannt). Dies wird im Dokument zum Kommunikationsprotokoll des Premier-Sensors tds0045 ausführlicher erläutert. Aus diesem Grund ist das gelesene Live-Datenpaket gelegentlich größer als erwartet.

AN0007

Problem 1.2

09

Änderungshinweis 805

Seite 14 von 14

Dokumente / Ressourcen

DYNAMENT AN0007 Arduino zu Platinum COMM [pdf] Benutzerhandbuch
AN0007 Arduino zu Platinum COMM, AN0007, Arduino zu Platinum COMM, zu Platinum COMM, Platinum COMM

Verweise

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *