Перейти к содержанию
    

Как дифференциальный сигнал завести в микроконтроллер?

Добрый день. Нужен концептуальный совет. Как такой сигнал ввести в микроконтроллер?  Это цифровой поток.
На рисунке в приложении осциллограмма дифференциального сигнала. Синий трек — линия P (positive ).  
Красный трек — N (negative). Средняя точка 1.5 В.  Частота 100 кГц.
Желательно отслеживать запрещенные состояния.

У меня два варианта. Оба не шибко нравятся.
1. Использовать внешние компараторы  типа LM393 (их много похожих)
2. Использовать встроенный в STM компаратор (на линию P и L) и отслеживать прерывание.

Но при таком подходе часть информации теряется, так как каждый сигнал имеет переходы с разными уровнями.

2024-04-12_15-30-58.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы предложил следующее. Сначала вычесть одно из другого, что позволит избавиться от синфазной помехи. Затем два компаратора с уровнями, подстраиваемыми в зависимости от амплитуды полученного сигнала. Это будет работать устойчиво.

А поставить штатный приемник для такого сигнала не вариант?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы взял готовый приемник RS485. Но можно завести и на два входа АЦП - скорости у него хватит с большим запасом, а дальше программно можно любую обработку делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использовать стандартный преобразователь дифференциального сигнала в TTL/CMOS. Что-то типа DS90LV012A, только на нужное дифференциальное напряжение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 minutes ago, MrYuran said:

Смесь ARINC и 485?

Практически в точку. Это ARINC 429, только сигнал после гальванической развязки на стороне МК.
Да. Приходиться изобретать велосипед.
Найти готовую микросхему line driver/receiver стало очень сложно.

 

18 minutes ago, Alex11 said:

Я бы предложил следующее. Сначала вычесть одно из другого, что позволит избавиться от синфазной помехи. Затем два компаратора с уровнями, подстраиваемыми в зависимости от амплитуды полученного сигнала. Это будет работать устойчиво.

А поставить штатный приемник для такого сигнала не вариант?

Буду думать думать в этом направлении.

 

18 minutes ago, Сергей Борщ said:

Я бы взял готовый приемник RS485. Но можно завести и на два входа АЦП - скорости у него хватит с большим запасом, а дальше программно можно любую обработку делать.

Про АЦП подумал. Но это крайняя мера. Придется использовать производительный МК, а я хотел обойтись STM32L0

 

18 minutes ago, StewartLittle said:

Использовать стандартный преобразователь дифференциального сигнала в TTL/CMOS. Что-то типа DS90LV012A, только на нужное дифференциальное напряжение.

На нужные уровни сходу не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

31 минуту назад, shamrel сказал:

Про АЦП подумал. Но это крайняя мера. Придется использовать производительный МК, а я хотел обойтись STM32L0

У меня не было необходимости укладываться в спецификации ARINC 429, была задача просто читать и писать его на столе для подключения реальных приборов к игровому авиасимулятору. Я просто подавал сигнал через делители на порты (использовал пороги переключения портов), входной регистр порта при помощи ПДП складывал в память и дальше анализировал программно. Аналогично выходной сигнал формировался в массиве, массив при помощи ПДП складывался в выходной регистр порта и с пары ног при помощи сдвоенного ОУ получался выходной сигнал. На F072 получалось одновременно принимать 4 канала и передавать 8, для каждого канала можно было задать высокую (100К) или низкую (12.5К) скорость, процессор успевал еще общаться на 115200 по RS485 и через USB делать виртуальный COM-порт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, Сергей Борщ said:

У меня не было необходимости укладываться в спецификации ARINC 429, была задача просто читать и писать его на столе для подключения реальных приборов к игровому авиасимулятору. Я просто подавал сигнал через делители на порты (использовал пороги переключения портов), входной регистр порта при помощи ПДП складывал в память и дальше анализировал программно. Аналогично выходной сигнал формировался в массиве, массив при помощи ПДП складывался в выходной регистр порта и с пары ног при помощи сдвоенного ОУ получался выходной сигнал. На F072 получалось одновременно принимать 4 канала и передавать 8, для каждого канала можно было задать высокую (100К) или низкую (12.5К) скорость, процессор успевал еще общаться на 115200 по RS485 и через USB делать виртуальный COM-порт.

Интересное колдунство 🙂
Спасибо. Попробую с симуляторе. Проблема в том, что с аналоговой схемотехникой я не дружу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.04.2024 в 16:44, shamrel сказал:

Практически в точку. Это ARINC 429, только сигнал после гальванической развязки на стороне МК.

самое простое - использовать приемник RS-485.

Так-то лучше знать как реализована развязка, тогда можно что-то осмысленное  подсказать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, HardEgor said:

самое простое - использовать приемник RS-485.

Так-то лучше знать как реализована развязка, тогда можно что-то осмысленное  подсказать.

Легко!
Кусочек схемы на рисунке в подцепе.
RX0, RX1 -- входные линии. Схема защиты на рисунке не показана.
Развязка на микросхеме CA-IS1200G. Осциллограмма сигнала на линиях AIN1P и AIN1N относительно  линии GND показана в стартовом топике.

2024-04-12_19-27-39.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 12.04.2024 в 19:30, shamrel сказал:

RX0, RX1 -- входные линии. Схема защиты на рисунке не показана.
Развязка на микросхеме CA-IS1200G. Осциллограмма сигнала на линиях AIN1P и AIN1N относительно  линии GND показана в стартовом топике.

+-250 мВ дифференциального - это любой RS-485 приёмник.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Терзают меня смутные сомнения, а что выдаст "любой RS-485 приёмник" в неопределенном состоянии. И как это потом интерпретировать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, MrYuran said:

Терзают меня смутные сомнения, а что выдаст "любой RS-485 приёмник" в неопределенном состоянии. И как это потом интерпретировать.

Вот вот. RS485 не умеет в третье состояние. 

И да. CA-IS1200G усиливает в 8 раз. То-есть, на выходе +- 1 В от средней точки.
CAN преобразователь, вроде как умеет, но опыта у меня с ним нет вообще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Раз там такая развязка, то вычитать уже ничего не нужно, только два компаратора с регулируемыми уровнями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот такой вариант несложный, но вполне рабочий. Можно поиграться параметрами в зависимости от вариантов входного сигнала.

 

sch.png

sim.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...