DYNAMENT AN0007 Arduino naar Platinum COMM Gebruikershandleiding

AN0007 Arduino naar Platinum COMM

Productinformatie

Specificaties

  • Productnaam: ARDUINO naar PLATINUM COMMS HELP DOCUMENT
  • Fabrikant: Dynament Limited
  • Adres: HermitagIndustriegebied e Lane, Kings Mill Way,
    Mansfield, Nottinghamshire, NG18 5ER, VK
  • Contact: Tel: 44 (0)1623 663636, E-mail: sales@dynament.com,
    Webwebsite: www.dynament.com
  • Uitgave: 1.2, Datum: 09/04/2025

Instructies voor productgebruik

De sensor aansluiten

In dit gegevensblad wordt de Arduino Mega als voorbeeld gebruiktampe. Verbinden als
volgt:

  • 5v -> 5v Arduino-pin
  • 0v -> Arduino GND
  • Tx -> Arduino RX1
  • Rx -> Gaat naar de uitgang van de potentiaaldeler. De ingang
    gaat naar Arduino Tx

Deeltage Compatibiliteit

De Arduino gebruikt 5V logische hoogspanning, terwijl de Platinum Sensor 5V gebruikt.
3.3v. Gebruik een voltagde deler met voorgestelde waarden voor R1 en R2 als
4K7 om schade aan de sensor te voorkomen.

Arduino IDE-installatie

  1. Download de nieuwste versie van de Arduino IDE-software van
    de Arduino webplaats.
  2. Selecteer het Arduino-bord, de processor en de poort in de tools
    keuzemenu.

Code uploaden

  1. Kopieer de meegeleverde example-code in de Arduino IDE.
  2. Upload de code naar de Arduino door op de pijl te klikken.
  3. Open de seriële monitor om view dataoverdracht.

Veelgestelde vragen

V: Wat moet ik doen als ik een Arduino Uno heb met slechts één communicatie-apparaat?
haven?

A: Sluit de platinasensor aan op die poort. Bij gebruik van de
seriële monitor, zal deze ook de verzonden hex weergeven.

“`

Toepassingsnotitie AN0007
ARDUINO naar PLATINUM COMMS HELPDOCUMENT

Dynament beperkt
HermitagIndustriegebied e Lane Kings Mill Way Mansfield Nottinghamshire NG18 5ER VK. Tel: 44 (0)1623 663636
e-mail: sales@dynament.com www.dynament.com

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 1 van 14

Inhoud
Dynament Limited ………………………………………………………………………………………………………….1 De sensor aansluiten……………………………………………………………………………………………………..3 Arduino IDE …………………………………………………………………………………………………………………………5 Code-uitleg………………………………………………………………………………………………………………..9 Pakketverdeling ……………………………………………………………………………………………………….11 Serial.read() gebruiken ……………………………………………………………………………………………………….13
Geavanceerde conversienotities…………………………………………………………………………………….14

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 2 van 14

Sensor aansluiten In dit gegevensblad wordt de Arduino Mega als voorbeeld gebruiktampbijv. De Ardunio Mega biedt meer dan één COM-poort. COM-poort 1 wordt daarom gebruikt om te communiceren met de sensor en COM-poort 0 om naar de pc te printen.
De Arduino gebruikt 5V logische hoogspanning, terwijl de Platinum Sensor 3.3V gebruikt. Om schade aan de Sensor te voorkomen, moet een voltagDe deler moet worden gebruikt. De aanbevolen waarden voor R1 en R2 zijn 4K7.

Figuur 1: Verlaagt het volumetage naar bruikbaar niveau
De zendlijn van de sensor naar de ontvangstlijn van de Arduino heeft geen verdeler nodig, omdat 3.3 V een acceptabele ingangsspanning is voor de Arduino.
Om de sensor van stroom te voorzien, moet deze worden aangesloten op 5V en 0V. Hiervoor kunt u de pinnen op de Arduino gebruiken.
Nadat dit is voltooid, zouden de volgende pinnen op de sensor aangesloten moeten zijn:
5v -> 5v Arduino-pin
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> Gaat naar de uitgang van de potentiaalverdeler. De ingang gaat naar Arduino Tx

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 3 van 14

Nadat dit is voltooid, moet uw platinasensor worden aangesloten zoals afgebeeld:
Figuur 2: Sensor ondersteboven afgebeeld met een soldeeradapter
Als u een Arduino met slechts één communicatiepoort gebruikt (zoals de Arduino Uno), moet u hem hierop aansluiten. Als u echter de seriële monitor gebruikt (zie verderop), wordt ook de hex-waarde weergegeven die wordt verzonden.

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 4 van 14

Arduino IDE Ga naar de Arduino webGa naar de website en download de nieuwste versie van de Arduino IDE-software. Na installatie zou je het volgende scherm moeten zien:
Figuur 3: Arduino-startscherm
Selecteer in het dropdownmenu 'Extra' het Arduino-bord, de processor en de poort die u gebruikt:

Figuur 4: Opties voor het selecteren van het bord, de processor en de poort

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 5 van 14

Kopieer in dit exampde code: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serieel.begin(38400); Serieel1.begin(38400);
}
void loop() { send_read_live_data_simple(); receive_read_live_data_simple(); delay(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(){ while (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 6 van 14

Figuur 5: Code klaar om te uploaden
Klik op de pijl om de code naar de Arduino te uploaden. Nadat de Arduino geprogrammeerd is, open je de seriële monitor.

AN0007

Figuur 6: Open de seriële monitor

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 7 van 14

Figuur 7: De seriële monitor toont het pakket dat is ontvangen

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 8 van 14

Code-uitleg De Arduino IDE gebruikt C++ om de Arduino te programmeren.
Deze regel is een forward-declaratie. Deze wordt gebruikt om de microcontroller te vertellen dat verderop in het programma de functies `send_read_live_data_simple' en `receive_read_live_data_simple' zullen worden aangeroepen.
Vervolgens is er de setup-functie. Deze code wordt slechts één keer bij het opstarten uitgevoerd. Het start de poorten Serial0 en Serial1. Serial0 is wat er op het scherm van de seriële monitor wordt weergegeven. Serial1 is de poort voor communicatie met de sensor.
Dit is de hoofdlus, deze code wordt herhaaldelijk herhaald. Je kunt aan de functienamen zien dat deze een verzoek stuurt om een ​​vereenvoudigde versie van de live datastruct te lezen. Vervolgens leest hij de ontvangstpoort om het antwoord te lezen. Hierna wacht de microcontroller 5000 ms.
Deze functie schrijft de aanvraag om de eenvoudige live data-struct op te halen naar seriële poort 1. Zoals eerder vermeld, moet u Serial1 wijzigen in Serial als u slechts één seriële poort hebt. Raadpleeg het document 'Premier Sensor Communications Protocol' voor de volledige lijst met opdrachten. Dit is het deel van het document dat aangeeft wat u voor deze opdracht moet schrijven:

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 9 van 14

Deze functie herhaalt de leesfunctie zolang er nog gegevens van de Platinum Sensor ontvangen moeten worden. Serial1.read() leest de gegevens van Serial1, die verbonden is met de sensor, en print deze naar Serial0, zodat ze zichtbaar zijn op de seriële monitor. Het teken `|' wordt vervolgens afgedrukt om elke ontvangen byte op te splitsen, zodat deze duidelijker zichtbaar is op de seriële monitor.
Nadat dit is voltooid, wordt er een nieuwe regel naar de seriële monitor geschreven.

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 10 van 14

Pakketspecificatie Figuur 8 en 9 tonen de uitvoer van een seriële decoder die is aangesloten op de ontvangst- en verzendlijnen.
Figuur 8: Uitgaand pakket
Figuur 9: Binnenkomend pakket
Figuur 10 en 11 tonen respectievelijk de uitgaande en inkomende hex, met een kolom die aangeeft om welke opdracht het gaat.

Figuur 10: Beschrijving van uitgaande pakketten

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 11 van 14

Figuur 11: Beschrijving van binnenkomende pakketten
Let op: de gaswaarde is een decimaal, geen geheel getal. Deze decimaal heeft het IEEE-754-formaat; u kunt een online converter zoals deze gebruiken om deze om te rekenen. De gaswaarde geeft in dit geval -250 aan (omdat er op dat moment een foutmodus was).

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 12 van 14

Serial.read() gebruiken
De vorige code printte alleen de ontvangen data naar de seriële monitor. Als je de data in variabelen wilt opslaan, moet je deze verder verwerken. Het pakket dat je ontvangt, wordt in bytes gesplitst. Daarom moet je een deel van deze data in variabelen samenvoegen. Serial1.Read() retourneert een int (die voor Arduino 16 bits is), maar alleen de eerste 8 bits worden gebruikt. Hierdoor kunnen we het kopiëren naar een kleiner datatype van slechts 8 bits. In dit geval gebruik ik char.
voor de pakketten die slechts een byte lang zijn, werkt dit prima:
Voor pakketten van 2 bytes of 4 bytes moet u de gegevens samenvoegen.

Je kunt dit op veel verschillende manieren doen. In dit geval ga ik de data naar links verschuiven en er dan een OF-bewerking op uitvoeren.

Met deze code is readByte1 0x34 en readByte2 0x12.

(int)leesByte2

// dit converteert 0x12 naar 0x0012.

(int)readByte2 << 8

// dit verschuift de bits met een byte, waardoor de waarde 0x1200 wordt.

(int)readByte2 << 8 | readByte1 // dit wordt vervolgens ge-OR'd, waarbij 0x34 0x1234 oplevert.

Een andere manier om dit te doen is om de waarden in een array te zetten en de array vervolgens om te zetten naar het gewenste type:

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 13 van 14

chars zijn een byte lang, terwijl float 4 bytes lang is. Dit is de reden waarom we een array van 4 chars maken met onze waarden erin en het type wijzigen naar float.
In dit geval is readArray een aanwijzer naar een char-array. (float*)readArray dit deel zet het om in een aanwijzer naar een float en vervolgens wordt er een * aan het begin toegevoegd om de waarde van de float te verkrijgen.
Geavanceerde conversie-opmerkingen
1. Serial.read() retourneert een int in plaats van een char, omdat fouten negatieve waarden opleveren. Je programma moet hierop controleren.
2. Uint8_t en uint16_t moeten worden gebruikt in plaats van char en int, omdat deze typen geen standaardgrootte hebben (op mijn pc is int 32 bits, terwijl het op de Arduino 16 bits is).
3. Het communicatieprotocol bevat byte-stuffed tekens (ook wel controletekens genoemd). Dit wordt uitgebreider uitgelegd in het document tds0045 Premier Sensor Communications Protocol. Hierdoor kan het gelezen live data simple packet soms groter zijn dan verwacht.

AN0007

Nummer 1.2

09/04/2025

Wijzigingsnotitie 805

Pagina 14 van 14

Documenten / Bronnen

DYNAMENT AN0007 Arduino naar Platinum COMM [pdf] Gebruikershandleiding
AN0007 Arduino naar Platinum COMM, AN0007, Arduino naar Platinum COMM, naar Platinum COMM, Platinum COMM

Referenties

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *