DYNAMENT AN0007 Arduino hanggang Platinum COMM User Guide

AN0007 Arduino hanggang Platinum COMM

Impormasyon ng Produkto

Mga pagtutukoy

  • Pangalan ng Produkto: ARDUINO hanggang PLATINUM COMMS HELP DOCUMENT
  • Tagagawa: Dynament Limited
  • Address: Hermitage Lane Industrial Estate, Kings Mill Way,
    Mansfield, Nottinghamshire, NG18 5ER, UK
  • Kontakin: Tel: 44 (0)1623 663636, Email: sales@dynament.com,
    Website: www.dynament.com
  • Isyu: 1.2, Petsa: 09/04/2025

Mga Tagubilin sa Paggamit ng Produkto

Pagkonekta sa Sensor

Ginagamit ng data sheet na ito ang Arduino Mega bilang example. Kumonekta bilang
sumusunod:

  • 5v -> 5v Arduino pin
  • 0v -> Arduino GND
  • Tx -> Arduino RX1
  • Rx -> Pupunta sa output ng potensyal na divider. Ang input
    papunta sa Arduino Tx

Voltage Pagkakatugma

Ang Arduino ay gumagamit ng 5v logic high habang ang Platinum Sensor ay gumagamit
3.3v. Gumamit ng voltage divider na may mga iminungkahing halaga para sa R1 at R2 bilang
4K7 upang maiwasan ang pinsala sa Sensor.

Pag-setup ng Arduino IDE

  1. I-download ang pinakabagong bersyon ng Arduino IDE software mula sa
    ang Arduino website.
  2. Piliin ang Arduino board, processor, at port sa mga tool
    drop-down na menu.

Pag-upload ng Code

  1. Kopyahin ang ibinigay na example code sa Arduino IDE.
  2. I-upload ang code sa Arduino sa pamamagitan ng pag-click sa arrow.
  3. Buksan ang serial monitor sa view paglipat ng datos.

FAQ

Q: Ano ang dapat kong gawin kung mayroon akong Arduino Uno na may isang comm lang
daungan?

A: Ikonekta ang Platinum Sensor sa port na iyon. Kapag ginagamit ang
serial monitor, ipapakita din nito ang ipinadalang hex.

“`

Application Note AN0007
ARDUINO hanggang PLATINUM COMMS HELP DOCUMENT

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

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 1 ng 14

Mga nilalaman
Dynament Limited ……………………………………………………………………………………………………….1 Pagkonekta sa Sensor……………………………………………………………………………………………………..3 Arduino IDE ………………………………………………………………………………………………5 Paliwanag ng Code……………………………………………………………………………………………………..9 Packet Breakdown ………………………………………………………………………………………………….11 Paggamit ng Serial..……………………………………………………………….
Mga Advanced na Tala ng Conversion…………………………………………………………………………………….14

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 2 ng 14

Pagkonekta sa Sensor Ang data sheet na ito ay gumagamit ng Arduino Mega bilang example. Ang Ardunio Mega ay nagbibigay ng higit sa isang comm port, kaya ang comm port 1 ay ginagamit upang makipag-ugnayan sa sensor at ang comm port 0 ay ginagamit upang mag-print sa PC.
Ang Arduino ay gumagamit ng 5v logic high samantalang ang Platinum Sensor ay gumagamit ng 3.3v, kaya upang maiwasan ang pinsala sa Sensor isang voltage divider ang dapat gamitin. Ang mga iminungkahing value para sa R1 at R2 ay 4K7.

Figure 1: Ibinababa ang voltage sa magagamit na antas
Ang Sensor transmit line na papunta sa Arduino receive ay hindi nangangailangan ng divider dahil ang 3.3v ay isang katanggap-tanggap na input sa Arduino.
Upang mapagana ang Sensor dapat itong konektado sa 5v at 0v. Upang gawin ito maaari mong gamitin ang mga pin sa Arduino.
Matapos ito ay makumpleto, ang sensor ay dapat na ngayon ay may mga sumusunod na pin na konektado:
5v -> 5v Arduino pin
0v -> Arduino GND
Tx -> Arduino RX1
Rx -> Pupunta sa output ng potensyal na divider. Ang input ay napupunta sa Arduino Tx

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 3 ng 14

Matapos ito ay makumpleto ang iyong Platinum Sensor ay dapat na konektado tulad ng ipinapakita:
Figure 2: Ang sensor ay ipinapakita nang baligtad gamit ang isang solder adapter
Kung gumagamit ka ng Arduino na may isang comm port lamang (tulad ng Arduino Uno) kakailanganin mong ikonekta ito doon, gayunpaman kapag ginamit mo ang serial monitor (ipinapakita sa ibang pagkakataon) ipapakita din nito ang hex na ipinadala.

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 4 ng 14

Arduino IDE Pumunta sa Arduino website at i-download ang pinakabagong bersyon ng Arduino IDE software. Sa sandaling naka-install dapat mong makita ang sumusunod na screen:
Figure 3: Arduino home screen
Sa drop down na menu ng mga tool piliin ang Arduino board, processor at port na iyong ginagamit:

Figure 4: Piliin ang mga opsyon sa Board, Processor at Port

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 5 ng 14

Kopyahin sa ex na itoampang code: 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(); pagkaantala(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

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 6 ng 14

Figure 5: Handa nang i-upload ang code
I-click ang arrow upang i-upload ang code sa Arduino. Matapos ma-program ang Arduino, buksan ang serial monitor.

AN0007

Figure 6: Buksan ang Serial Monitor

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 7 ng 14

Figure 7: Ipinapakita ng Serial Montor ang packet na natanggap

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 8 ng 14

Paliwanag ng Code Ang Arduino IDE ay gumagamit ng C++ upang i-program ang Arduino.
Ang linyang ito ay isang pasulong na deklarasyon. Ito ay ginagamit upang sabihin sa Microcontroller na sa ibaba ng programa ay tatawagin ang function na `send_read_live_data_simple' at ang `receive_read_live_data_simple' function.
Susunod ay ang setup function. Isang beses lang tatakbo ang code na ito sa startup. Sinisimulan nito ang Serial0 at Serial1 port. Ang Serial0 ay kung ano ang ipinapakita sa serial monitor screen. Ang Serial1 ay ang port upang makipag-usap sa sensor.
Ito ang pangunahing loop, ang code na ito ay paulit-ulit na na-loop. Makikita mo sa pamamagitan ng pagbabasa ng mga pangalan ng function na nagpapadala ito ng kahilingang magbasa ng pinasimpleng bersyon ng live data struct. Pagkatapos ay binabasa nito ang receive port upang mabasa ang tugon. Pagkatapos nito ang Microcontroller ay naghihintay ng 5000mS.
Ang function na ito ay nagsusulat ng kahilingan upang makuha ang live na data na simpleng struct sa serial port 1. Gaya ng naunang nabanggit kung mayroon ka lamang isang serial port dapat mong baguhin ang Serial1 sa Serial. Upang makita ang buong listahan ng mga command, sumangguni sa Premier sensor Communications protocol na dokumento. Narito ang bahagi ng dokumento na nagsasabi sa iyo kung ano ang isusulat para sa utos na ito:

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 9 ng 14

Ang function na ito ay naglo-loop sa read function habang mayroon pang data na matatanggap mula sa Platinum Sensor. Binabasa ng Serial1.read() ang data mula sa Serial1 na konektado sa sensor at ini-print ito sa Serial0 para makita ito sa serial monitor. Ang karakter `|' ay pagkatapos ay naka-print upang masira ang bawat byte na natanggap upang gawin itong mas malinaw sa serial monitor.
Matapos ito ay kumpleto na ito ay nagsusulat ng isang bagong linya sa serial monitor.

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 10 ng 14

Packet Breakdown Ang Figure 8 at 9 ay nagpapakita ng output ng isang serial decoder na konektado sa receive at transmit lines.
Figure 8: Papalabas na Packet
Figure 9: Papasok na Packet
Ipinapakita ng Figure 10 at 11 ang papalabas at papasok na hex ayon sa pagkakabanggit na may column na nagpapakita kung aling command ito.

Figure 10: Outgoing Packet Description

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 11 ng 14

Larawan 11: Papasok na Paglalarawan ng Packet
Pakitandaan na ang pagbabasa ng Gas ay isang decimal at hindi isang integer. Ang decimal na ito ay nasa format na IEEE-754, maaari kang gumamit ng online na converter na tulad nito para i-convert ito. Ang halaga ng gas sa kasong ito ay nagpapakita ng -250 (dahil nasa error mode ito noong panahong iyon).

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 12 ng 14

Gamit ang Serial.read()
Ang nakaraang code ay nag-print lamang ng data na natanggap sa serial monitor, kung gusto mong i-save ang data sa mga variable kakailanganin mong gumawa ng ilang karagdagang pagproseso. Ang packet na natanggap mo ay nahahati sa mga byte, dahil dito kakailanganin mong pagsamahin ang ilan sa data na ito sa mga variable. Ang Serial1.Read() ay nagbabalik ng int (na para sa Arduino ay 16 bits), gayunpaman, ang unang 8 bits lang ang ginagamit. Dahil dito maaari nating kopyahin ito sa isang mas maliit na uri ng data na 8 bits lamang, sa kasong ito ay gagamit ako ng char.
para sa mga packet na isang byte lang ang haba, ito ay gumagana nang maayos:
Para sa mga packet na 2 bytes o 4 bytes ang haba kakailanganin mong pagsamahin ang data.

Magagawa mo ito sa maraming iba't ibang paraan, narito ang gagawin ko ay iwanang ilipat ang data at pagkatapos ay O ito.

Gamit ang code na ito, kung ang readByte1 ay 0x34 at ang readByte2 ay 0x12.

(int)readByte2

// iko-convert nito ang 0x12 sa 0x0012.

(int)readByte2 << 8

// inililipat nito ang mga bit sa pamamagitan ng isang byte na ginagawa itong 0x1200.

(int)readByte2 << 8 | readByte1 // ito ay na-OR, na may 0x34 na nagiging 0x1234.

Ang isa pang paraan upang gawin ito ay ang ilagay ang mga halaga sa isang array at pagkatapos ay i-convert ang array sa uri na gusto mo:

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 13 ng 14

Ang mga character ay isang byte ang haba, samantalang ang float ay 4 na byte ang haba. Dahil dito kung gagawa tayo ng array ng 4 na character kasama ang mga value natin dito at babaguhin ang uri para lumutang.
Sa kasong ito readArray ay isang pointer sa isang char array. (float*)readArray ang bahaging ito ay inihagis ito sa isang pointer sa isang float at pagkatapos ay isang * ay idinagdag sa harap upang makuha ang halaga ng float.
Advanced na Conversion Notes
1. Ang Serial.read() ay nagbabalik ng int sa halip na char dahil ang mga error ay magbabalik ng mga negatibong halaga. Dapat suriin ito ng iyong programa.
2. Dapat gamitin ang uint8_t at uint16_t bilang kapalit ng char at int ayon sa pagkakabanggit, dahil ang mga uri na ito ay walang karaniwang sukat (sa aking PC int ay 32 bits samantalang sa Arduino ito ay 16 bits).
3. Ang comms protocol ay naglalaman ng byte stuffed character (kilala rin bilang control character), ito ay ipinaliwanag nang mas detalyado sa tds0045 Premier sensor Communications protocol na dokumento. Dahil dito ang read live data simple packet ay paminsan-minsan ay mas malaki kaysa sa inaasahan.

AN0007

Isyu 1.2

09/04/2025

Baguhin ang Tala 805

Pahina 14 ng 14

Mga Dokumento / Mga Mapagkukunan

DYNAMENT AN0007 Arduino hanggang Platinum COMM [pdf] Gabay sa Gumagamit
AN0007 Arduino hanggang Platinum COMM, AN0007, Arduino hanggang Platinum COMM, hanggang Platinum COMM, Platinum COMM

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *