Посібник користувача DYNAMENT AN0007 для Arduino to Platinum COMM

AN0007 Зв'язок Arduino-Platinum

Інформація про продукт

Технічні характеристики

  • Назва продукту: ДОПОВІДНИЙ ДОКУМЕНТ З КОМУНІКАЦІЇ ARDUINO TO PLATINUM
  • Виробник: Dynament Limited
  • Адреса: ГерміtagПромислова зона «e Lane», Кінгз Мілл Вей,
    Менсфілд, Ноттінгемшир, NG18 5ER, Велика Британія
  • Контакт: Тел.: +44 (0)1623 663636, Ел. пошта: sales@dynament.com
    Webсайт: www.dynament.com
  • Випуск: 1.2, Дата: 09/04/2025

Інструкція з використання продукту

Підключення датчика

У цьому технічному описі як приклад використовується Arduino Mega.ampле. Підключитися як
слідує:

  • 5 В -> 5 В вивід Arduino
  • 0 В -> Земля Ардуїно
  • Передавач -> Arduino RX1
  • Rx -> Подається на вихід дільника напруги. Вхід
    йде до Arduino Tx

томtage Сумісність

Arduino використовує високий логічний рівень 5 В, тоді як Platinum Sensor використовує
3.3 В. Використовуйте об'ємtagдільник із запропонованими значеннями для R1 та R2 як
4K7, щоб запобігти пошкодженню датчика.

Налаштування Arduino IDE

  1. Завантажте найновішу версію програмного забезпечення Arduino IDE з
    Ардуїно webсайт.
  2. Виберіть плату Arduino, процесор та порт у інструментах
    спадне меню.

Завантаження коду

  1. Скопіюйте наданий прикладampкод у середовище розробки Arduino.
  2. Завантажте код на Arduino, натиснувши на стрілку.
  3. Відкрийте монітор послідовного порту, щоб view передача даних.

FAQ

З: Що робити, якщо у мене Arduino Uno лише з одним комутатором?
порт?

A: Підключіть платиновий датчик до цього порту. Під час використання
послідовний монітор, він також відображатиме переданий шістнадцятковий код.

“`

Примітка щодо застосування AN0007
ДОПОМІЖНИЙ ДОКУМЕНТ З ПЕРЕХОДУ ВІД ARDUINO ДО PLATINUM

Dynament Limited
ЕрміtagПромислова зона e Lane, Kings Mill Way, Mansfield, Nottinghamshire, NG18 5ER, Велика Британія. Тел.: +44 (0)1623 663636
електронна пошта: sales@dynament.com www.dynament.com

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 1 з 14

Зміст
Dynament Limited ……………………………………………………………………………………………………….1 Підключення датчика……………………………………………………………………………………..3 Arduino IDE …… .....5 Пояснення коду……………………………………………………………………………………………………………..9 Розбивка пакетів ………………………………………………………………………………………………………………….11 Використання Serial.read() ………………………………………………………………………………………………………….13
Примітки щодо розширеного перетворення… ....14

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 2 з 14

Підключення датчика. У цьому технічному описі як приклад використовується Arduino Mega.ampтобто. Ardunio Mega має більше одного комунікаційного порту, тому комунікаційний порт 1 використовується для зв'язку з датчиком, а комунікаційний порт 0 — для друку на ПК.
Arduino використовує високий логічний рівень 5 В, тоді як Platinum Sensor використовує 3.3 В, тому, щоб запобігти пошкодженню датчика, напруга живлення...tagНеобхідно використовувати дільник. Рекомендовані значення для R1 та R2 — 4K7.

Рисунок 1: Знижує об'ємtagдо рівня, придатного для використання
Лінія передачі датчика, що йде до приймача Arduino, не потребує дільника, оскільки 3.3 В є прийнятним вхідним сигналом для Arduino.
Щоб живити датчик, його потрібно підключити до 5 В та 0 В. Для цього можна використовувати контакти на Arduino.
Після завершення цього, датчик має мати підключені такі контакти:
5 В -> 5 В вивід Arduino
0 В -> Земля Ардуїно
Передавач -> Arduino RX1
Rx -> Надходить на вихід дільника напруги. Вхід надходить на передавач Arduino.

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 3 з 14

Після завершення цього ваш платиновий датчик слід підключити, як показано на малюнку:
Рисунок 2: Датчик показано догори дном з паяним адаптером
Якщо ви використовуєте Arduino лише з одним комунікаційним портом (наприклад, Arduino Uno), вам доведеться підключити його до нього, проте, коли ви використовуєте монітор послідовного порту (показано пізніше), він також відображатиме шістнадцятковий код, що передається.

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 4 з 14

Arduino IDE Перейти до Arduino webсайт та завантажте найновішу версію програмного забезпечення Arduino IDE. Після встановлення ви повинні побачити наступний екран:
Рисунок 3: Головний екран Arduino
У випадаючому меню інструментів виберіть плату Arduino, процесор та порт, який ви використовуєте:

Рисунок 4: Вибір опцій плати, процесора та порту

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 5 з 14

Скопіюйте в цьому прикладіampкод: void send_read_live_data_simple(); void receive_read_live_data_simple();
втрата налаштувань() { Serial.begin(38400); Serial1.begin(38400);
}
недійсний цикл() { send_read_live_data_simple(); receive_read_live_data_simple(); затримка(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

Випуск 1.2

09

Зміна примітки 805

Сторінка 6 з 14

Рисунок 5: Код готовий до завантаження
Натисніть стрілку, щоб завантажити код на Arduino. Після програмування Arduino відкрийте монітор послідовного порту.

AN0007

Рисунок 6: Відкрийте монітор послідовного порту

Випуск 1.2

09

Зміна примітки 805

Сторінка 7 з 14

Рисунок 7: Монітор послідовного порту показує отриманий пакет

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 8 з 14

Пояснення коду. Arduino IDE використовує C++ для програмування Arduino.
Цей рядок є оголошенням прямого введення. Він використовується для повідомлення мікроконтролеру про те, що далі в програмі будуть викликані функції `send_read_live_data_simple' та `receive_read_live_data_simple'.
Далі йде функція налаштування. Цей код виконується лише один раз під час запуску. Він запускає порти Serial0 та Serial1. Serial0 відображається на екрані монітора послідовного порту. Serial1 – це порт для зв'язку з датчиком.
Це основний цикл, цей код повторюється неодноразово. З назв функцій видно, що він надсилає запит на зчитування спрощеної версії структури даних у реальному часі. Потім він зчитує порт отримання, щоб прочитати відповідь. Після цього мікроконтролер чекає 5000 мс.
Ця функція записує запит на отримання простих структур даних у реальному часі на послідовний порт 1. Як згадувалося раніше, якщо у вас лише один послідовний порт, вам слід змінити Serial1 на Serial. Щоб переглянути повний список команд, зверніться до документа протоколу зв'язку Premier sensor. Ось частина документа, яка вказує, що писати для цієї команди:

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 9 з 14

Ця функція зациклює функцію читання, поки ще є дані, які потрібно отримати від Platinum Sensor. Serial1.read() зчитує дані з Serial1, підключеного до датчика, та друкує їх на Serial0, щоб їх можна було побачити на моніторі послідовного порту. Потім друкується символ `|', щоб розбити кожен отриманий байт, щоб зробити його чіткішим на моніторі послідовного порту.
Після завершення цього він записує новий рядок у монітор послідовного порту.

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 10 з 14

Розбивка пакетів На рисунках 8 та 9 показано вихідний сигнал послідовного декодера, підключеного до ліній прийому та передачі.
Рисунок 8: Вихідний пакет
Рисунок 9: Вхідний пакет
На рисунках 10 та 11 показано вихідний та вхідний шістнадцятковий код відповідно зі стовпцем, який показує, яка це команда.

Рисунок 10: Опис вихідного пакета

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 11 з 14

Рисунок 11: Опис вхідного пакета
Зверніть увагу, що показник газу є десятковим, а не цілим числом. Це десяткове число має формат IEEE-754, ви можете скористатися онлайн-конвертером, подібним до цього, щоб конвертувати його. Значення газу в цьому випадку показує -250 (оскільки на той момент воно було в режимі помилки).

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 12 з 14

Використання Serial.read()
Попередній код лише виводив отримані дані на монітор послідовного порту. Якщо ви хочете зберегти дані у змінних, вам потрібно буде виконати подальшу обробку. Отриманий пакет розділяється на байти, тому вам потрібно буде об'єднати деякі з цих даних у змінні. Serial1.Read() повертає ціле число (яке для Arduino має 16 біт), проте використовуються лише перші 8 біт. Завдяки цьому ми можемо скопіювати його в менший тип даних, який має лише 8 біт, у цьому випадку я використовуватиму char.
для пакетів довжиною лише один байт це працює добре:
Для пакетів довжиною 2 або 4 байти вам потрібно буде об'єднати дані.

Ви можете зробити це багатьма різними способами, тут я зрушу дані вліво, а потім зроблю операцію "АБО".

Використовуючи цей код, якщо readByte1 дорівнює 0x34, а readByte2 дорівнює 0x12.

(ціл.)читанняБайт2

// це перетворює 0x12 на 0x0012.

(ціл.)читанняБайта2 << 8

// це зсуває біти на один байт, додаючи значення 0x1200.

(int)readByte2 << 8 | readByte1 // це потім об'єднується за допомогою операції АБО, де 0x34 перетворюється на 0x1234.

Інший спосіб зробити це — помістити значення в масив, а потім перетворити масив у потрібний вам тип:

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 13 з 14

Тип char має довжину один байт, тоді як тип float має довжину 4 байти. Через це, якщо ми створимо масив із 4 символів з нашими значеннями в ньому та змінимо тип на float.
У цьому випадку readArray є вказівником на масив символів. (float*)readArray ця частина перетворює його на вказівник на число з плаваючою комою, а потім на початок додається *, щоб отримати значення цього числа з плаваючою комою.
Розширені нотатки щодо конвертації
1. Serial.read() повертає int замість char, оскільки помилки повертатимуть від'ємні значення. Ваша програма повинна це перевірити.
2. Замість char та int слід використовувати uint8_t та uint16_t відповідно, оскільки ці типи не мають стандартного розміру (на моєму ПК int має 32 біти, тоді як на Arduino — 16 бітів).
3. Протокол зв'язку містить байтові символи (також відомі як керуючі символи). Це детальніше пояснюється в документі tds0045 Premier sensor Communications Protocol. Через це простий пакет даних для читання в реальному часі іноді може бути більшим, ніж очікувалося.

AN0007

Випуск 1.2

09

Зміна примітки 805

Сторінка 14 з 14

Документи / Ресурси

DYNAMENT AN0007 Зв'язок Arduino-Platinum [pdfПосібник користувача
AN0007 Arduino до Platinum COMM, AN0007, Arduino до Platinum COMM, до Platinum COMM, Platinum COMM

Список літератури

Залиште коментар

Ваша електронна адреса не буде опублікована. Обов'язкові поля позначені *