невозможно прочитать вывод RS232 на Arduino mega с экраном MAX232

Я пытаюсь считать данные с датчика, оборудованного RS232, с помощью последовательного монитора, подключенного к Arduino Mega с экраном RS-232, но я не получаю никаких данных.

Я не могу определить точную причину проблемы, так как она возникает только при объединении датчика и RS232shield/Arduino, в то время как связь работает должным образом при тестировании их по отдельности

Что работает:

  • Подключение датчика к компьютеру с помощью переходного кабеля RS232-USB.
  • Передача данных с компьютера через кабель-переходник USB-RS232 на экран RS232 и обратно через USB-выход Arduino.
  • Подключение контакта 2 RS232 к порту 10 с использованием библиотеки {SoftwareSerial} с инвертированной логикой.

Что не работает:

  • Передача данных с датчика на компьютер через MAX232 и Arduino.

Настройка:

  • Ардуино Мега 2560
  • Шилд Seeed RS232 (на базе MAX232)
  • Датчик с выходом RS232 (57600 8N1)

Я подключил выход RS232 датчика к экрану с помощью преобразователя пола MM. Шилд и Arduino соединены тремя проводами: GND-GND, 5V-5V, 232_TX-RX1), а Arduino подключается к Macbook через USB. Последовательный монитор на компьютере настроен на 56700 бод.

Я использую следующий скетч для передачи данных с экрана RS232 на последовательный:

void setup()
{
// Открытая последовательная связь на скорости 5700 бод
    Serial.begin(57600);
    Serial1.begin(57600);

// Проверяем, активен ли Serial1
if (Serial1.available())
     while (!Serial1) {
        ;
    }
    Serial.println("Serial 1 is active");
}

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

}

, 👍1

Обсуждение

Требуются ли вашему датчику аппаратные сигналы управления потоком, которые не обеспечивает экран?, @Majenko


1 ответ


2

Я решил вышеизложенное и поделюсь ответом, поскольку он может помочь другим:

Поскольку светодиодный индикатор Tx на экране RS232 не загорался при подключении к датчику, я проверил разницу напряжений между контактом 2 (Tx) и контактом 5 (GND) разъема RS232. Оказалось, что это всего 5 В, что указывает на то, что используется протокол TTL-RS232, а не «настоящий» RS232.

Из-за низкого напряжения я подключил контакты RS232 Tx и GND напрямую к Arduino. С Tx, подключенным к цифровому порту 10, я использовал библиотеку SoftwareSerial с логической инверсией для чтения данных: SoftwareSerial mySerial(10, 11, 1).

Это работает!

,

это не ответ на вопрос, потому что в ответе используется информация, не упомянутая в вопросе. что за датчик?, @Juraj