Декодер Manchester-II M2D

В мире существует не мало систем, в которых есть жесткая необходимость передавать данные на расстояние от нескольких сотен метров до нескольких километров. Причём, никакой иной способ передачи данных кроме как по кабелю не походит.

Ну, например, необходимо «поднять» на поверхность информацию из скважины. Часто для решения таких задач используется одножильный кабель. Причём по одной жиле вниз (с поверхности земли к измерительному зонду) подается питание, а обратно вверх передаются данные.

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

Одна из таких проблем — при передаче данных теряется постоянная составляющая сигнала. Иначе говоря, при передаче длинной последовательности, состоящей только из одних нулей или только из одних единиц, с какого-то момента уже невозможно сказать, что на входе приёмника присутствует — последовательность нулей или последовательность единиц?

Для решения этой проблемы был придуман способ кодирования информации кодом Manchester-II. Я не буду подробно останавливаться на этом коде, он хорошо описан в литературе.

Чтобы получить код Manchester-II на выходе передатчика большой трудности нет. Трудности возникают при приёме этого кода и декодировании его обратно в поток двоичных данных.

Вообще, если брать в целом, то проблема декодирования решается не очень красиво. Кто-то пишет программы для декодирования, отбирая тем самым драгоценную вычислительную мощность у микроконтроллера, кто-то использует «плиски», а кто-то собирает схему на «рассыпухе» из счетчиков, триггеров и других логических элементов.

Я предлагаю, как мне кажется, довольно-таки симпатичное решение — использовать заказную микросхему декодера Manchester-II — M2D.

Схема включения микросхемы крайне простая:

На вход IN микросхемы подаётся сигнал, снятый с кабеля, в кодировке Manchester-II. Одновременно со входным сигналом на выходе DATA появляются декодированные данные. Данные сопровождаются синхроимпульсами CLK. Их фиксация в приёмном устройстве осуществляется по нарастающему фронту синхроимпульсов.

Данные могут передаваться на интерфейсы, которые присутствуют в каждом микроконтроллере: UART и SPI.

Входная цепь R1C1 осуществляет подавление импульсных помех и делает вход толерантным к 5-вольтовому входному напряжению. Допустимый диапазон входных сигналов составляет от -2 В до +5 В.

Времязадающие цепочки RV1, R2, С2 и RV2, R3, С3 обеспечивают работу внутренних генераторов микросхемы.

Микросхема имеет два режима работы: тестовый режим и рабочий режим.

Блок-схема внутреннего устройства микросхемы.

Для перевода микросхемы в тестовый режим необходимо при подаче питания на неё и во время работы в этом режиме удерживать на её выводе TEST уровень логического нуля. Это осуществляется с помощью установки джампера J1, который замыкает этот вывод на общий провод.

Для перевода микросхемы в рабочий режим на вывод TEST необходимо подать уровень логической единицы. Для этого нужно удалить джампер. Внутри микросхемы присутствует интегральный резистор для подтяжки вывода к питанию. Ориентировочное сопротивление резистора около 100 кОм.

Если проводник, к которому припаян вывод TEST, на печатной плате имеет длину несколько сантиметров (1-2 см, не более), то вывод можно оставить в не подключенном состоянии. Если длина проводника большая и предполагается, что микросхема будет работать в жестких условиях (высокий уровень электромагнитных помех), то вывод можно дополнительно подтянуть к питанию с помощью резистора 1-10 кОм.

В тестовом режиме выходы CLK и DATA отключены от декодера и подсоединены к выходам генераторов. Это позволяет настроить частоты генераторов с помощью осциллографа или частотомера.

Питание микросхемы +3.3В. Потребляемый ток не более 60 мкА в отсутствие сигнала на входе M2, и не более 600 мкА при декодировании.

Микросхема выполнена в стандартном SMD корпусе TSSOP-14 с шагом выводов 0.65 мм.

Ниже приводятся несколько типовых примеров подключения микросхемы M2D к широко распространённому микроконтроллеру ATMEGA8.

Типовое подключение к ATMEGA8 по UART при одинаковом напряжении питания у обеих микросхем.

А здесь напряжение питания у микросхем разное.

Можно подключиться по SPI.

Микроконтроллеры других типов подключаются аналогичным образом.

На следующей схеме показано типовое подключение декодера M2D к компьютеру через USB:

Вариант подключения к компу через USB.

Напряжение питания у микросхемы M2D +3.3 В. В этой схеме необходимое напряжение получается с помощью стабилизатора, встроенного в CH340G.

В интернете гуляет утверждение, что вывод V3 у CH340G — это выход внутреннего источника опорного напряжения. В какой-то момент я засомневался в этом утверждении.

Ведь, если это примерно такая же «опора», какой мы понимаем её внутри микроконтроллеров, то снять с неё сколь-нибудь разумную мощность не представляется возможным. А если это выход внутреннего стабилизатора напряжения (что скорее всего так оно и есть), то наверняка безболезненно можно снять десяток-другой миллиампер.

Я тупо провел эксперимент. Подал на CH340G +5 В от USB, а на вывод V3 повесил резистор в 100 Ом. Не смотря на то, что на выводе присутствовали чёткие 3.3 В, микросхема не заработала. В документашке на микросхему кроме всего прочего сказано, что при питании от +5 В на этот вывод нужно повесить конденсатор 0.1 мкФ.

Вообще, когда речь заходит о конденсаторах ёмкостью 0.1 мкФ, то можно считать, что должен быть хоть какой-то конденсатор с ненормированной ёмкостью. Ориентировочно, от 10 нФ и до нескольких микрофарад. Годится любой, лишь хоть что-то было. У меня под руку попалась керамика на 68нФ. Его-то я и припаял. И микросхема ожила.

Я ещё раз измерил напряжение на выводе — те же самые 3.3 В. То есть, я свободно снял ток около 30 мА, и микросхема даже не чихнула. Это надо использовать во блага человечеству!

В общем, товарищи, на вывод V3 можно навешивать микроконтроллеры и другие не очень многожрущие схемы.

Китайцы вообще не заморачиваются на эту тему — получают +3.3 В из +5 В путем «гашения» излишнего напряжения на двух последовательно включённых диодах типа 1N4148. Почему до них не допёрло попробовать так, как сделал я, — я не знаю. Видимо, Китай большой.

С точки зрения геофизики предложенное решение крайне бюджетно. В скважину опускается зонд, собранный на базе какой-нибудь Mega8, которая тупо передает по UART-у измеренные данные. UART кодируется в Manchester-II и загоняется в кабель. Наверху, манчестеровский код снимается с кабеля и через предусилитель подаётся на приведённую выше схему. Это всё, что нужно для получения данных из-под земли в комп. Разумеется, на компе должна работать какая-то прога, которая будет принимать данные и сохранять их в файле. Да поможет вам Питон!

Поэтому я делаю акцент на том, что основное назначение микросхемы M2D — применение в системах передачи данных в геофизике.

Микросхема также может быть использована для организации звуковых каналов связи по воздуху (динамик-микрофон на звуковых и ультразвуковых частотах) или через вибрации твёрдых поверхностей (например, через непрозрачный для радиоволн корпус подводной лодки). Наверно возможно использование микросхемы также и для подводной передачи данных посредством акустических волн в воде. Но я это не проверял. Возможное также использование микросхемы в каналах передачи модулированным светом (светодиод-фотодиод) как альтернативно решение ИК-пультам.

Можно попробовать применить микросхему в системе «умного дома» для передачи данных по каналам, о которых раньше никто не догадывался.

На приведенной ниже осциллограмме показан пример выходов DATA (жёлтый луч) CLK (лиловый) при приёме пакета данных.

В начале пакета хорошо просматривается (жёлтый луч) серия из восьми «нулевых» байт (0x00), а затем следуют информационно наполненные байты. На осциллограмме так же видно, что вне времени передачи пакета выход DATA микросхемы M2D находится в состоянии логической единицы. Если этот выход подключен к микроконтроллеру к модулю UART, то последний воспринимает такое состояние как состояние STOP.

Вот так выглядит начало приёма пакета:

Хорошо видно как «гуляет» сигнал CLK. Но, тем не менее, даже такое сильное отклонение по времени для SPI не страшно. Что же касается интерфейса UART, то в нём не используется сигнал CLK, а длительность передачи «нулевого» байта тоже остаётся в пределах нормы.

Теперь самое главное: эти осциллограммы были сняты на эквиваленте 5-километрового кабеля.

На коротких кабелях та же картинка выглядит намного «чище»:

На этой и на предыдущей осциллограмме следует обратить внимание на то, что нарастающий фронт CLK всегда находится на установившемся значении DATA — неоднозначность состояния DATA исключена.

На следующей осциллограмме снова присутствует сигналы DATA и CLK. Первый единичный «зубчик» на треке данных — это «стоповый» бит от предыдущего «нулевого» байта. За этим «стоповым» битом идет сразу «стартовый» бит и информационные биты байта.

Я опять попрошу обратить внимание на чёткость формирования нарастающего фронта CLK.

На следующей диаграмме показан тот же фрагмент пакета, только нижний лиловый луч отображает входной сигнал IN:

Видно, что фронты сигнала Manchester-II не очень стабильные. Что бы понять проблему, давайте посмотрим как выглядит Manchester-II в самом начале пакета, когда переходные процессы толком ещё не «устаканились»:

Видно, что схема предусилителя-корректора хоть и с большим трудом, но справляется со своей задачей. Не забываете, что мы «прокачиваем» 5 км кабеля!

А как выглядит сигнал до пред-усилителя?

А выглядит он примерно вот так (лиловый луч):

Заметьте, как плавно «плывёт» уровень среднего. По какому напряжению производить компорирование (компорацию?) входного сигнала?

Для сравнения, когда кабеля нет:

Фронты сигнала хорошие, но «плавучка» всё равно присутствует. От неё никуда не деться.

Ну и последнее «фото на память» — здесь лиловый луч показывает какой «красивый» сигнал приходит после серии «нулевых» байт.

Попробуйте интерпретировать его как последовательность и из тысячи и более бит, в которой не должно быть НИ ОДНОГО «битого» бита. (Простите за тавтологию!)

Если среди тысячи бит попадётся хотя бы один «битый», то придётся отбросить весь пакет пакет целиком.

Я добавлю ещё парочку осциллограмм. Я ещё сильнее усложнил задачу декодеру. Здесь желтый луч показывает выход микроконтроллера передатчика (зонда) — красивый UART-овский сигнал. Лиловый луч — это то, что поступает на вход предусилителя-корректора:

Да, бывает и такое. В самом начале передачи, переходные процессы ещё не установились. Амплитуда сигнала почти нулевая, и только можно различить слегка заметные зубчики, оставшиеся от фронтов импульсов Manychester-II. Это длиться примерно 2-2.5 клетки (400-500 мкс). Потом амплитуда нарастает и уже можно делать какие-то предположения по раскодировке сигнала.

Таким образом, казалось бы, — первый байт наверняка потерян. Ан-нет! И вот — подтверждение:

Здесь желтый луч по прежнему показывает то, что передаёт микроконтроллер зонда, а лиловый луч — это то, что поступает на USB-конвертер для передачи в комп.

Хорошо видно, что «лиловый» сигнал повторяет «жёлтый», только немного отстаёт по времени.

На самом деле, первый байт пакета иногда теряется. Что нужно делать для организации надёжной передачи, я, возможно, расскажу как нибудь потом. Это немножко другая тема и она достаточно объёмная, чтобы рассматривать её здесь.

По нынешним временам никто не передаёт информацию по-байтно. Это слишком медленно и слишком дорого. Информация передаётся пакетами от нескольких десятков до полутора тысяч байт.

Теперь о поддержке микросхемы в KiCAD-e. Создайте текстовый файл m2d.lib и скопируйте в него следующий текст:

EESchema-LIBRARY Version 2.3
#encoding utf-8
#
# M2D
#
DEF M2D U 0 40 Y Y 1 F N
F0 "U" 150 400 60 H V C CNN
F1 "M2D" 0 0 60 H V C CNB
F2 "Housings_SSOP:TSSOP-10_3x3mm_Pitch0.5mm" 100 -650 60 H I C CNN
F3 "https://zhevak.wordpress.com/" 100 -750 60 H I C CNN
$FPLIST
 TSSO14
$ENDFPLIST
DRAW
S -350 300 350 -300 0 1 20 f
X VCC 1 0 500 200 D 50 50 1 1 W
X RC1 2 -550 100 200 R 50 50 1 1 U
X RC2 3 -550 0 200 R 50 50 1 1 U
X ~TEST 4 -550 -200 200 R 50 50 1 1 I I
X M2IN 7 -550 -100 200 R 50 50 1 1 I
X DATA 8 550 -100 200 L 50 50 1 1 I
X CLK 9 550 100 200 L 50 50 1 1 I
X ~RST 10 -550 200 200 R 50 50 1 1 I I
X GND 14 0 -500 200 U 50 50 1 1 W
ENDDRAW
ENDDEF
#
#End Library

Обращаю внимание радиолюбителей — эта микросхема не рассчитана на использование её в радиолюбительских конструкциях. Хотя она и может с успехом применяться в системах «умного дома» для передачи данных и питания по одному проводу, но зачастую её применение не оправдано. Значительно дешевле пробросить отдельные кабели для питания и для сигналов, чем городить огород на базе Manchester-II.

А вот для применений в геофизике, где никакой другой способ подачи питания и получения сигналов, кроме как по многокилометровому коаксиальному кабелю не подходит, эта микросхема позволяет даже сэкономить. Так что, извиняйте, мои дорогие, — применение микросхемы чисто промышленное.

Для организаций: по вопросам о приобретения микросхемы можете обращаться непосредственно ко мне. Форма запроса не имеет значения.

Реклама

2 responses to “Декодер Manchester-II M2D

  1. А где можно купить данную микросхему?

    • Можно непосредственно у меня.

      Я планирую, что к концу следующей неделе у меня будет готова необходимая документация на неё и типовые схемы её применения.

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

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s