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
- Baixeu la versió més recent del programari Arduino IDE des de
l'Arduino weblloc. - Seleccioneu la placa Arduino, el processador i el port a les eines
menú desplegable.
Càrrega de codi
- Copieu l'ex. proporcionatampel codi a l'IDE d'Arduino.
- Puja el codi a l'Arduino fent clic a la fletxa.
- 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 |