Guia de l'usuari de DYNAMENT AN0007 Arduino a Platinum COMM

AN0007 Arduino a Platinum COMM

Informació del producte

Especificacions

  • Nom del producte: DOCUMENT D'AJUDA DE COMUNICACIONS D'ARDUINO A PLATINUM
  • Fabricant: Dynament Limited
  • Adreça: HermitagPolígon Industrial E Lane, Kings Mill Way,
    Mansfield, Nottinghamshire, NG18 5ER, Regne Unit
  • Contacte: Telèfon: 44 (0)1623 663636, Correu electrònic: sales@dynament.com,
    Weblloc web: www.dynament.com
  • Edició: 1.2, Data: 09/04/2025

Instruccions d'ús del producte

Connexió del sensor

Aquesta fitxa tècnica utilitza l'Arduino Mega com a exemple.ampés a dir, connecta com a
segueix:

  • 5v -> pin d'Arduino de 5v
  • 0v -> Arduino GND
  • Tx -> Arduino RX1
  • Rx -> Va a la sortida del divisor de potencial. L'entrada
    va a Arduino Tx

Voltage Compatibilitat

L'Arduino utilitza 5v lògica alta mentre que el sensor de platí utilitza
3.3 V. Utilitzeu un voltagdivisor e amb valors suggerits per a R1 i R2 com a
4K7 per evitar danys al sensor.

Configuració de l'IDE d'Arduino

  1. Baixeu la versió més recent del programari Arduino IDE des de
    l'Arduino weblloc.
  2. Seleccioneu la placa Arduino, el processador i el port a les eines
    menú desplegable.

Càrrega de codi

  1. Copieu l'ex. proporcionatampel codi a l'IDE d'Arduino.
  2. Puja el codi a l'Arduino fent clic a la fletxa.
  3. Obriu el monitor sèrie per a view transmissió de dades.

Preguntes freqüents

P: Què he de fer si tinc un Arduino Uno amb només un punt de comunicació?
port?

A: Connecteu el sensor de platí a aquest port. Quan utilitzeu el
monitor sèrie, també mostrarà l'hexadecimal transmès.

"`

Nota d'aplicació AN0007
DOCUMENT D'AJUDA DE COMUNICACIONS D'ARDUINO A PLATINUM

Dynament Limited
HermitagPolígon Industrial e Lane, Kings Mill Way, Mansfield, Nottinghamshire, NG18 5ER, Regne Unit. Tel.: 44 (0)1623 663636
correu electrònic: sales@dynament.com www.dynament.com

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 1 de 14

Continguts
Dynament Limited …………………………………………………………………………………………………….1 Connectant el sensor……………………………………………………………………………………..3 Arduino IDE ………………………………………………………………………………………………5 Explicació del codi…………………………………………………………………………………………..9 Desglossament de paquets …………………………………………………………………………………….11 Ús de Serial.read() …………………………………………………………………………………….13
Notes avançades de conversió……………………………………………………………………………….14

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 2 de 14

Connectant el sensor Aquesta fitxa tècnica utilitza l'Arduino Mega com a exemple.ampés a dir, l'Ardunio Mega proporciona més d'un port de comunicació, per tant, el port de comunicació 1 s'utilitza per comunicar-se amb el sensor i el port de comunicació 0 s'utilitza per imprimir al PC.
L'Arduino utilitza 5v lògica alta mentre que el sensor de platí utilitza 3.3v, per tant, per evitar danys al sensor, un volumtagCal utilitzar el divisor e. Els valors suggerits per a R1 i R2 són 4K7.

Figura 1: Redueix el volumtage a nivell utilitzable
La línia de transmissió del sensor que va al receptor Arduino no necessita un divisor, ja que 3.3 V és una entrada acceptable per a l'Arduino.
Per alimentar el sensor, cal connectar-lo a 5v i 0v. Per fer-ho, podeu utilitzar els pins de l'Arduino.
Un cop finalitzat això, el sensor hauria de tenir els següents pins connectats:
5v -> pin d'Arduino de 5v
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> Va a la sortida del divisor de potencial. L'entrada va al Tx d'Arduino.

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 3 de 14

Un cop finalitzat això, el sensor de platí hauria d'estar connectat tal com es mostra:
Figura 2: El sensor es mostra cap per avall amb un adaptador de soldadura.
Si utilitzeu un Arduino amb només un port de comunicació (com l'Arduino Uno), haureu de connectar-lo a aquest, però quan utilitzeu el monitor sèrie (que es mostra més endavant) també mostrarà l'hexadecimal que es transmet.

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 4 de 14

Aneu a l'IDE d'Arduino weblloc web i descarregueu la versió més recent del programari Arduino IDE. Un cop instal·lat, hauríeu de veure la pantalla següent:
Figura 3: Pantalla d'inici d'Arduino
Al menú desplegable d'eines, seleccioneu la placa Arduino, el processador i el port que esteu utilitzant:

Figura 4: Seleccioneu les opcions de placa, processador i port

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 5 de 14

Copia en aquest ex.ampcodi: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);
}
bucle buit() { send_read_live_data_simple(); receive_read_live_data_simple(); retard(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(){ mentre (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print("|"); } Serial.println();
}

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 6 de 14

Figura 5: Codi llest per carregar
Feu clic a la fletxa per carregar el codi a l'Arduino. Un cop programat l'Arduino, obriu el monitor sèrie.

AN0007

Figura 6: Obriu el monitor sèrie

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 7 de 14

Figura 7: El Monitor sèrie mostra el paquet que s'ha rebut

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 8 de 14

Explicació del codi L'IDE d'Arduino utilitza C++ per programar l'Arduino.
Aquesta línia és una declaració directa. Això s'utilitza per indicar al microcontrolador que més endavant en el programa es cridaran les funcions `send_read_live_data_simple' i `receive_read_live_data_simple'.
A continuació ve la funció de configuració. Aquest codi només s'executa una vegada a l'inici. Inicia els ports Serial0 i Serial1. Serial0 és el que es mostra a la pantalla del monitor sèrie. Serial1 és el port per comunicar-se amb el sensor.
Aquest és el bucle principal, aquest codi es repeteix repetidament. Podeu veure llegint els noms de les funcions que envia una sol·licitud per llegir una versió simplificada de l'estructura de dades en directe. A continuació, llegeix el port de recepció per llegir la resposta. Després d'això, el microcontrolador espera 5000 mS.
Aquesta funció escriu la sol·licitud per obtenir les dades en directe amb una estructura simple al port sèrie 1. Com s'ha esmentat anteriorment, si només teniu un port sèrie, heu de canviar Serial1 a Serial. Per veure la llista completa d'ordres, consulteu el document del protocol de comunicacions de sensors Premier. Aquesta és la part del document que us indica què heu d'escriure per a aquesta ordre:

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 9 de 14

Aquesta funció repeteix la funció de lectura mentre encara hi ha dades per rebre del sensor Platinum. Serial1.read() llegeix les dades de Serial1, que està connectat al sensor, i les imprimeix a Serial0 perquè es puguin veure al monitor sèrie. A continuació, s'imprimeix el caràcter `|' per dividir cada byte rebut i fer-lo més clar al monitor sèrie.
Un cop finalitzat això, escriu una nova línia al monitor sèrie.

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 10 de 14

Desglossament de paquets Les figures 8 i 9 mostren la sortida d'un descodificador sèrie connectat a les línies de recepció i transmissió.
Figura 8: Paquet sortint
Figura 9: Paquet entrant
Les figures 10 i 11 mostren l'hexàgon de sortida i d'entrada respectivament amb una columna que indica de quin comandament es tracta.

Figura 10: Descripció del paquet sortint

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 11 de 14

Figura 11: Descripció del paquet entrant
Tingueu en compte que la lectura del gas és un decimal, no un enter. Aquest decimal està en format IEEE-754; podeu utilitzar un convertidor en línia com aquest per convertir-lo. El valor del gas en aquest cas mostra -250 (ja que estava en mode d'error en aquell moment).

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 12 de 14

Ús de Serial.read()
El codi anterior només imprimia les dades rebudes al monitor sèrie. Si voleu desar les dades en variables, haureu de fer un processament addicional. El paquet que rebeu es divideix en bytes, per això haureu de concatenar algunes d'aquestes dades en variables. Serial1.Read() retorna un int (que per a Arduino és de 16 bits), però només s'utilitzen els primers 8 bits. Gràcies a això, podem copiar-lo en un tipus de dades més petit que només sigui de 8 bits, en aquest cas utilitzaré char.
per als paquets que només tenen un byte de llargada, això funciona bé:
Per als paquets de 2 o 4 bytes de llargada, caldrà concatenar les dades.

Podeu fer això de moltes maneres diferents, aquí el que faré és desplaçar les dades a l'esquerra i després aplicar-les a l'operador OR.

Utilitzant aquest codi, si readByte1 és 0x34 i readByte2 és 0x12.

(int)readByte2

// això converteix el 0x12 en 0x0012.

(int)readByte2 << 8

// això desplaça els bits un byte, fent que sigui 0x1200.

(int)readByte2 << 8 | readByte1 // això s'aplica a un operació OR, on 0x34 resulta en 0x1234.

Una altra manera de fer-ho seria posar els valors en una matriu i després convertir la matriu al tipus que vulgueu:

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 13 de 14

Els caràcters tenen una longitud d'un byte, mentre que el valor float en té 4. Per això, si creem una matriu de 4 caràcters amb els nostres valors i canviem el tipus a float.
En aquest cas, readArray és un punter a una matriu de caràcters. (float*)readArray aquesta part el converteix en un punter a un nombre flotant i després s'afegeix un * al davant per obtenir el valor del nombre flotant.
Notes de conversió avançades
1. Serial.read() retorna un nombre enter en comptes d'un nombre char perquè els errors retornaran valors negatius. El programa ho hauria de comprovar.
2. S'haurien d'utilitzar uint8_t i uint16_t en lloc de char i int respectivament, ja que aquests tipus no tenen una mida estàndard (al meu PC int és de 32 bits mentre que a l'Arduino és de 16 bits).
3. El protocol de comunicacions conté caràcters de bytes (també coneguts com a caràcters de control); això s'explica amb més detall al document del protocol de comunicacions del sensor Premier tds0045. Per això, el paquet simple de dades en directe llegit ocasionalment serà més gran del que s'esperava.

AN0007

edició 1.2

09/04/2025

Nota de canvi 805

Pàgina 14 de 14

Documents/Recursos

DYNAMENT AN0007 Arduino a Platinum COMM [pdfGuia de l'usuari
AN0007 Arduino a Platinum COMM, AN0007, Arduino a Platinum COMM, a Platinum COMM, Platinum COMM

Referències

Deixa un comentari

La teva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats *