Использование Arduino для чтения и записи данных на устройство RS232

У меня есть турбореактивный микродвигатель (JetCat P100-RX), который управляется электронным блоком управления (ЭБУ).

ЭБУ содержит много информации о двигателе. Я хочу получить доступ к этой информации, а также отправить команды на ЭБУ для управления двигателем.

ЭБУ подключается к устройству Mini I/O. Это подключение показано на следующем изображении:

Подробные сведения о последовательном соединении ECU и мини-плате ввода-вывода приведены на этой странице руководства. 4. (Я понимаю, что поток данных от Mini Board следует протоколу RS232.) Это выглядит так:

Я хотел бы собрать информацию с контактов Tx, Rx и GND с помощью Arduino Uno. Как я могу это сделать? Arduino подключен к моему ПК через порт USB.

EDIT1: Что я пытался сделать:

Я подключил Tx, Rx и GND мини-платы к контактам 10 и 11 Arduino и настроил 10 и 11 как последовательные контакты, а GND к Arduino GND (Rx и Tx соответственно) с помощью SerialSoftware следующим образом:

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // прием, передача

void setup() {
  // Открытие последовательной связи и ожидание открытия порта:
  Serial.begin(57600);
  while (!Serial) {
    ; // ждем подключения последовательного порта. Требуется только для родного порта USB
  }

  // устанавливаем скорость передачи данных для порта SoftwareSerial
  mySerial.begin(9600); // Установите 9600, как написано в руководстве (ссылка выше)
}

void loop() {
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
}

Моя принципиальная схема:

Но у меня ничего не выводится на Serial Monitor.

Читая в Интернете, я обнаружил, что мне нужен конвертер. После этих сообщений я купил MAX3232. Нужно ли мне это использовать? Как мне это использовать и какие изменения внести в свой код?

, 👍2

Обсуждение

не вопрос конкретно про ардуино... у вас возник бы тот же вопрос, если бы вы использовали любой другой микроконтроллер... первое что нужно сделать, это определить уровни сигнального напряжения на выводах RxD и TxD, @jsotola

В руководстве к устройству указано, что TX и RX являются сигналами 3,3 В., @Wendall

@jsotola Да Действительно, контакты на 3,3 В. Теперь, куда мне двигаться отсюда? Я не электронщик ;), @Atharva

@Wendall Вы правы, в руководстве это сказано. Как мне теперь подключиться?, @Atharva

Поскольку вы не используете адаптер JetCat RS232 (который преобразует сигналы 3,3 В в уровни RS-232 (для чего потребуется MAX 3232), вы сможете напрямую подключиться к UART вашего Arduino. Как только он заработает с вашим ЗАТЕМ попытайтесь запустить его, используя последовательный порт, управляемый программным обеспечением. По моему опыту, программные порты работают нормально, но не очень хорошо и почти не работают, если я использую прерывания для своих целей. Поскольку это сигнал 3,3 В, вы МОЖЕТЕ нужно преобразовать их в 5 В. Погуглите немного, есть много способов сделать это.Есть также 3 В Arduinos, тогда он будет работать на 3 В., @Wendall

Поскольку интерфейс USB использует тот же UART Arduino, будьте осторожны, чтобы ничего не отправлять с вашего ПК на Arduino, или действительно используйте программный порт. Как уже упоминалось, он может работать нормально., @Wendall


1 ответ


-1

Это относительно легко сделать. Если у вас есть Mega или другой Arduino с более чем одним последовательным портом, отлично. Если нет, тогда softwareserial — это то, что вам нужно. Для этого все основания должны быть соединены.

Softwareserial может одновременно принимать только один канал. На аппаратном уровне вы должны использовать приемник с высоким импедансом для мониторинга сигналов RX и TX. Я использую 74HC14 (74C914 рассчитан на +- 25 В на входе) или подобное устройство. Поместите резистор 50 кОм от RX к входу на IC, сделайте то же самое с TX к другому входу на IC. Входные защитные диоды 74HC будут ограничивать ток, при 50 кОм 50 В дает 1 мА.

Подключите выходы микросхемы к входам Arduino. Каждый вход необходимо настроить для приема асинхронного ввода с правильной скоростью передачи и другими параметрами. Я делал это много раз, и это прекрасно работает. Я всегда делал это с помощью UART, а не программного обеспечения. Обратите внимание, что устройство 74HC инвертирует сигнал, как это обычно бывает с RS232. Для Arduino доступны различные модули с USART, UART или аналогичным последовательным устройством.

,

Спасибо за ваш ответ. Пункт 1: Проверка software serial. Что значит "все" основания? Я вижу только 1 контакт GnD на мини-плате. Пункт 2: Я не понимаю, о чем вы говорите, напряжение на мини-плате 3,3 В, откуда 50 В? Параграф 3: Как настроить получение асинхронного ввода с правильной скоростью передачи данных? Можете ли вы показать код в качестве примера?, @Atharva

К чему подключается мини-плата. RS232 — это три провода, один для Tx, один для Rx и один для земли. Земли каждого блока должны быть соединены. То есть просто показать, что вход в ворота прочный. При 50В у вас будет 1 мА тока в защиту ВК, а не разрушить микросхему. Извините за код, его много для Arduino. В лучшем случае я мог только догадываться, поскольку у вас даже не закончен дизайн. Убедитесь, что вы указали правильное количество битов, правильную четность, правильное количество стоповых битов и, конечно же, скорость. Обычно это 9600,n,1 (9600 бод, без четности и 1 стоп., @Gil