Аналоговое считывание манометра через RS232

Я пытаюсь считать аналоговый сигнал с одного датчика Pfeiffer TPG 261 (https://www.idealvac .com/files/brochures/Pfeiffer_Single_Gauge_TPG261.pdf)

Назначение контактов разъема, который я использую, следующее:

RS232Pinassingement

Вот схема, которую я построил:

BreadboardConnection

А вот и используемый код:

int pressureSensorPin = A0;

int analogValueP = 0;

void setup(void)
{
  Serial.begin(9600);
}
void loop()
{
  analogValueP = analogRead(pressureSensorPin);
  Serial.println(analogValueP);
  delay(1000);
}

К сожалению, при такой сборке я получаю только 0, а иногда и 1023.

Есть идеи, что я делаю неправильно?

, 👍0

Обсуждение

Arduino имеет 5-вольтовый TTL-последовательный порт. разъем RS232, возможно +/-12 В. Нужен преобразователь. Значение, прочитанное на RS232, будет данными для чтения с помощью Serial.read(), а не аналоговым сигналом., @Juraj


1 ответ


Лучший ответ:

4

У вас неправильное представление, какие сигналы откуда выводятся. Если вы хотите просто прочитать аналоговый сигнал датчика, вам нужно использовать разъем «управление». Там вы можете найти аналоговый сигнал на контакте 2. Но этот аналоговый сигнал достигает 10 В, поэтому вам нужен делитель напряжения между датчиком и Arduino, чтобы разделить напряжение до 5 В макс.

В настоящее время вы используете разъем RS232. RS232 — это стандарт связи, который передает цифровые данные, а не аналоговые данные. Таким образом, вы читаете только цифровые значения (минимальное напряжение и максимальное напряжение, ничего между ними). Вы можете использовать его, чтобы разговаривать с датчиком, изменять настройки конфигурации и считывать данные в цифровом виде. Но чтобы это сделать, нужно учитывать две важные вещи:

  1. RS232 — это интерфейс, в котором используются собственные уровни напряжения (а именно +-12 В), которые не соответствуют уровню TTL (0–5 В), который использует Arduino Uno. Вы вполне можете уничтожить свой Arduino, подключив его напрямую к RS232. Для выполнения этой работы вам понадобится микросхема преобразователя уровней (я думаю, для этого обычно используется MAX232), чтобы преобразовывать уровни напряжения в логику TTL. С этого момента эта связь обычно называется UART.

  2. Необходимо понять, а затем внедрить протокол связи датчиков (когда и какие данные отправлять), чтобы датчик и Arduino понимали друг друга


Мне кажется, что аналоговый сигнал с "управляющего" разъема - это все, что вам сейчас нужно, так что для простоты можете использовать и это. RS232 используется для большего контроля над функциональностью датчика.

,

Даже аналоговый сигнал с управляющего разъема подает напряжение в диапазоне 0..10В, что требует некоторой обработки (делителя напряжения) и не применимо напрямую к Arduino., @DataFiddler

Вы правы, я добавлю это к ответу, @chrisl

Спасибо за всю информацию, да, у меня было серьезное заблуждение, теперь я понимаю лучше. Итак, если бы я хотел получить доступ к цифровому выходу, что-то вроде этого могло бы работать: https://www.conrad.de/de/p/entwicklungsboard-mikroelektronika-mikroe-222-1221401.html?, @Anthony Lethuillier

Да, это сработает, @chrisl