AN0007 Arduino - Platinum COMM
“
Информация о продукте
Технические характеристики
- Название продукта: Справочный документ ARDUINO - PLATINUM COMMS
- Производитель: Dynament Limited
- Адрес: ХермиtagПромышленная зона e Lane, Кингс-Милл-Уэй,
Мэнсфилд, Ноттингемшир, NG18 5ER, Великобритания - Контакты: Тел.: 44 (0)1623 663636, Электронная почта: sales@dynament.com,
Webсайт: www.dynament.com - Выпуск: 1.2, Дата: 09
Инструкции по применению продукта
Подключение датчика
В этом техническом описании в качестве примера используется Arduino Mega.ampле. Подключиться как
следует:
- 5v -> 5v контакт Arduino
- 0 В -> Земля Ардуино
- Tx -> Arduino RX1
- Rx -> Подаёт на выход делителя напряжения. Вход
идет в Arduino Tx
Томtage Совместимость
Arduino использует высокий логический уровень 5 В, тогда как Platinum Sensor использует
3.3 В. Используйте громкостьtagделитель с предлагаемыми значениями для R1 и R2
4K7, чтобы предотвратить повреждение датчика.
Настройка Arduino IDE
- Загрузите последнюю версию программного обеспечения Arduino IDE с сайта
Ардуино webсайт. - Выберите плату Arduino, процессор и порт в инструментах.
выпадающее меню.
Загрузка кода
- Скопируйте предоставленный примерample код в Arduino IDE.
- Загрузите код в Arduino, нажав на стрелку.
- Откройте последовательный монитор, чтобы view передача данных.
Часто задаваемые вопросы
В: Что делать, если у меня Arduino Uno только с одним портом связи?
порт?
A: Подключите Platinum Sensor к этому порту. При использовании
последовательный монитор, он также покажет переданный шестнадцатеричный код.
«`
Примечание по применению AN0007
Справочный документ ARDUINO - PLATINUM COMMS
Динамент Лимитед
ГермиtagПромышленная зона e Lane, Kings Mill Way, Мэнсфилд, Ноттингемшир, NG18 5ER, Великобритания. Тел.: 44 (0)1623 663636
электронная почта: sales@dynament.com www.dynament.com
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 1 из 14
Содержание
Dynament Limited …………………………………………………………………………………………………………….1 Подключение датчика ………………………………………………………………………………………………………..3 Arduino IDE ………………………………………………………………………………………………………………5 Пояснение кода …………………………………………………………………………………………………………………..9 Разбивка пакетов …………………………………………………………………………………………………………….11 Использование Serial.read() ………………………………………………………………………………………………….13
Дополнительные примечания по конвертации…………………………………………………………………………………….14
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 2 из 14
Подключение датчика. В этом техническом описании в качестве примера используется Arduino Mega.ampле. Ardunio Mega имеет более одного порта связи, поэтому порт связи 1 используется для связи с датчиком, а порт связи 0 — для печати на ПК.
Arduino использует 5 В логического высокого уровня, тогда как Platinum Sensor использует 3.3 В, поэтому, чтобы предотвратить повреждение датчика, необходимоtagНеобходимо использовать делитель. Рекомендуемые значения R1 и R2 — 4 кОм.
Рисунок 1: Снижает громкостьtagе до пригодного к использованию уровня
Линия передачи датчика, идущая к приемнику Arduino, не нуждается в делителе, поскольку 3.3 В является приемлемым входным напряжением для Arduino.
Для питания датчика его необходимо подключить к 5 В и 0 В. Для этого можно использовать контакты на Arduino.
После завершения установки к датчику должны быть подключены следующие контакты:
5v -> 5v контакт Arduino
0 В -> Земля Ардуино
Tx -> Arduino RX1
Rx -> Подаёт на выход делителя напряжения. Вход подаёт на Arduino Tx.
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 3 из 14
После этого ваш датчик Platinum Sensor должен быть подключен, как показано на рисунке:
Рисунок 2: Датчик показан перевернутым с паяльным адаптером.
Если вы используете Arduino только с одним коммуникационным портом (например, Arduino Uno), вам придется подключиться к нему, однако при использовании последовательного монитора (показан ниже) он также будет показывать передаваемый шестнадцатеричный код.
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 4 из 14
Arduino IDE Перейти к Arduino webЗайдите на сайт и скачайте последнюю версию Arduino IDE. После установки вы увидите следующий экран:
Рисунок 3: Домашний экран Arduino
В раскрывающемся меню инструментов выберите плату Arduino, процессор и порт, которые вы используете:
Рисунок 4: Выбор параметров платы, процессора и порта
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 5 из 14
Копировать в этот бывшийampкод le: 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(); 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();
}
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 6 из 14
Рисунок 5: Код готов к загрузке
Нажмите на стрелку, чтобы загрузить код в Arduino. После программирования Arduino откройте монитор последовательного порта.
АН0007
Рисунок 6: Откройте последовательный монитор
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 7 из 14
Рисунок 7: Последовательный монитор показывает полученный пакет.
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 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». Вот часть документа, где объясняется, что нужно написать для этой команды:
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 9 из 14
Эта функция циклически выполняет чтение, пока есть данные, ожидающие получения от датчика Platinum. Функция Serial1.read() считывает данные с порта Serial1, подключенного к датчику, и выводит их на порт Serial0 для отображения на мониторе последовательного порта. Затем выводится символ `|', который разбивает каждый полученный байт и делает его более понятным на мониторе последовательного порта.
После этого он записывает новую строку в последовательный монитор.
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 10 из 14
Разбивка пакетов На рисунках 8 и 9 показаны выходные данные последовательного декодера, подключенного к линиям приема и передачи.
Рисунок 8: Исходящий пакет
Рисунок 9: Входящий пакет
На рисунках 10 и 11 показаны исходящий и входящий шестнадцатеричный код соответственно со столбцом, который показывает, какая это команда.
Рисунок 10: Описание исходящего пакета
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 11 из 14
Рисунок 11: Описание входящего пакета
Обратите внимание, что показания расхода газа представлены в виде десятичной дроби, а не целого числа. Эта десятичная дробь имеет формат IEEE-754, и вы можете использовать онлайн-конвертер, например, этот. Значение расхода газа в данном случае равно -250 (поскольку в тот момент оно находилось в режиме ошибки).
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 12 из 14
Использование Serial.read()
Предыдущий код только вывел полученные данные на последовательный монитор. Если вы хотите сохранить данные в переменных, потребуется дополнительная обработка. Полученный пакет разбивается на байты, поэтому вам потребуется объединить часть этих данных в переменные. Serial1.Read() возвращает int (который для Arduino равен 16 битам), однако используются только первые 8 бит. Благодаря этому мы можем скопировать данные в более короткий тип данных, занимающий всего 8 бит, в данном случае я буду использовать char.
для пакетов длиной всего в один байт это работает нормально:
Для пакетов длиной 2 байта или 4 байта вам потребуется объединить данные.
Это можно сделать разными способами. Сейчас я сделаю сдвиг данных влево, а затем применю к ним операцию ИЛИ.
Используя этот код, если readByte1 равен 0x34, а readByte2 равен 0x12.
(целое)readByte2
// это преобразует 0x12 в 0x0012.
(целое)readByte2 << 8
// это сдвигает биты на один байт, делая их равными 0x1200.
(int)readByte2 << 8 | readByte1 // затем это объединяется по схеме ИЛИ, при этом 0x34 превращается в 0x1234.
Другой способ сделать это — поместить значения в массив, а затем преобразовать массив в нужный вам тип:
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 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. Протокол связи содержит символы, заполненные байтами (также известные как управляющие символы). Более подробно это описано в документе «Протокол связи датчика Premier» tds0045. Из-за этого простой пакет данных, считываемых в режиме реального времени, иногда может быть больше ожидаемого.
АН0007
Выпуск 1.2
09/04/2025
Изменение примечания 805
Страница 14 из 14
Документы/Ресурсы
![]() |
DYNAMENT AN0007 Arduino - Platinum COMM [pdf] Руководство пользователя AN0007 Arduino в Platinum COMM, AN0007, Arduino в Platinum COMM, в Platinum COMM, Platinum COMM |