Проблемы формирования сигнала в кодировке Manchester-II

Аватар пользователя zhevak

При геофизических каротажных работах имеется специфическая вещь -- передача по кабелю и питания и сигналов. Поскольку зачастую кабель одножильный, то по одному и тому же проводу в одну сторону (от наземного оборудования к датчикам зонда) поступает питание, а в обратном направлении -- происходит передача информации. Это обстоятельство оказывает влияние на архитектуру системы для получения данных.

Чтобы подать питание много усилий прилагать не надо.

Для примера, у нас, допустим имеется кое-какие измерители и датчики, которые питаются от напряжения 24 В. Зная омическое сопротивление кабеля можно прикинуть какое напряжение мы должны подавать на кабель, чтобы к датчикам пришли положенные 24 В. Это легко.

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

Для передачи данных по геофизическому кабелю обычно используется кодированный (модулированный) сигнал в коде Manchester-II. Суть этого кодирования заключается в том, что каждый информационный бит передаётся не уровнем сигнала (не уровнем напряжения или тока), а изменением уровня. Другими словами -- передача нулевого бита ( бит логического нуля) -- это перепад уровня сигнала с единицы на ноль. Передача единичного бита -- перепад уровня с нуля на единицу. При этом перепады уровней между битами могут происходит, а и могут не происходить.

Важно другое. Важно, что сигнал, модулированный в коде Manchester-II не имеет постоянной составляющей. А это значит, его можно легко примешать к напряжению питания, а на другом конце отделить от питания. Никто никому не помешает.

Рассмотрим вопрос -- как получить такой сигнал.

15-20 лет назад, в эпоху микроконтроллеров легендарной фирмы ATMEL, сигнал можно было получить относительно легко из модуля UART. Модуль UART конфигурировался на передачу синхронных данных, а сигналы микроконтроллера TXD и XCK подавались на микросхему Исключающего-ИЛИ. На выходе получался желанный Manchrester-II, который можно было подавать на вход передатчика.

Как я уже упоминал в предыдущей статье (https://aftershock.news/?q=node/1270327), скорость передачи по геофизическому кабелю весьма небольшая. Поэтому UART программировался на скорость работы 9600 или 10000 Бод (в зависимости от требований заказчика).

Получить сигнал в Manchester-II можно точно так же при использовании модуля SPI -- Используются сигнала MOSI и SCK. Однако есть нюансы, которые могут перечеркнуть этот способ.

Дело в том, что SPI позиционируется как высокоскоростной интерфейс. Ключевое слово -- "высокоскоростной". Так просто заставить работать модуль SPI  на частоте 10 кГц и ниже не получится. Точнее вопрос звучит так -- заставить-то можно, но что при этом придётся потерять?

Дело в том, что предделители (с помощью которых определяется скорость работы модуля) у микросхем с ядром AVR имеют максимальное значение 128. Это значит, что если микроконтроллер работает на частоте 8 МГц, то минимальная частота, на которую можно запрограммировать скорость работы SPI, составляет 8 МГц / 128 = 62.5 кГц.

Для геофизического кабеля это очень много. Снизить частоту SPI можно только уменьшением тактовой частоты микроконтроллера.

Пойдём обратным путём. Допустим, мы хотим передавать данные по кабелю со скоростью 10 Кбит/с, это значит, тактовая частота микроконтроллера должна быть 10 кГц * 128 = 1.28 МГц. Эта частота примерно на порядок ниже, чем обычно на которой работают эти микроконтроллеры.

Дебет с кредитом немного не сходятся.

Не-е, в принципе, конечно, можно запустить работу микроконтроллера на частоте 1-1.5 МГц. Но как мне кажется, вычислительной мощности на другие задачи может и не хватить. Хотя, опять же -- смотря какие (ещё) задачи должен выполнять микроконтроллер. Вполне может оказаться, что такой низкой частоты тактирования будет вполне достаточно.

Несколько лучшим образом эта же ситуация выглядит у микроконтроллеров типа STM32 и CH32V. У этих микроконтроллеров имеется дополнительный предделитель, который находится между линиями тактирования ядра и линиями тактирования шин. Да, в отношении этих микроконтроллеров можно сохранить высокую скорость работы ядра, но в жертву придётся принести скорость работы шины периферийных устройств.  Это всё же лучше, но целиком дилеммы не снимает.

Есть ещё один способ формирования сигнала в кодировке Manchester-II. Я имею ввиду полностью программный способ. Иначе говоря микроконтроллер сам (по программе) управляет дёрганием одной из своих ножек.

Преимущества этого метода в том, что не требуется внешней микросхемы и частота сигнала практически ни отчего не зависит -- можно задавать любую (в разумных пределах, конечно!)

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

Я немного поигрался с методом программного формирования сигнала. Да. работает. Запас мощности микроконтроллера даже у ATTINY2313, работающей на частоте 7.37 МГц имеется. Его вполне достаточно для работы с АЦП, для подсчёта CRC и других задач. Более того, при правильном построении программы я увидел, что джиттер (дрожжание фронтов или, другими словами -- нестабильность по времени формирования фронтов сигнала) составляет менее одной микросекунды, что можно считать крайне не существенным.

Программный способ формирования сигнала в микроконтроллерах STM32 и CH32V я не проверял. Думаю, что там будет не хуже.


Таким образом, создать сигнал в кодировке Manchester-II не очень сложно. Конечно, нужно потрудится, чем-то пожертвовать, но принципиально получить такой сигнал реально. Гораздо сложнее обратно раскодировать этот сигнал.

Авторство: 
Авторская работа / переводика
Комментарий автора: 

Одно время я предоставлял потребителям декодеры M2D, M2D2 и M2D3. Но потом я был вынужден прекратить эту практику. А поскольку люди всё равно периодически обращаются к моим статьям, где описывается работа с этими декодерами, то я, вот, пробую снова поднять эту тему. Может что и выйдет полезное.

Комментарии

Аватар пользователя ВладимирХ
ВладимирХ(11 лет 11 месяцев)

Децкий сад какой-то.

Как в том анекдоте про Вовочку: Марьванна, мне бы Ваши проблемы.

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

Так мир-то он не везде одинаковый.

У кого-то жемчуг мелкий, а у кого-то щи пустые.

Кто-то рад и 50 килорублям, а кто-то губу воротит от 500000.

Кто толстый, а кто-то высокий. Кто-то быстро бегает, а у кого-то кулаки как кувалды...

А вы по какому параметру свою письку меряете -- по диаметру, по длине? По количеству сахара в урине или по белку? А то действительно получается детский сад какой-то.

Аватар пользователя ВладимирХ
ВладимирХ(11 лет 11 месяцев)

Гораздо сложнее обратно раскодировать этот сигнал.

Аватар пользователя raptor
raptor(1 год 10 месяцев)

Да, блин, проблема... Поставь 2, 3, 4 микроконтроллера, чтобы не жрать вычислительную мощность одного. Чё мешает? По деньгам  - мизерный дополнительный расход.

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

Вот жешь блин! Как же я сам-то до этого не допёр... Голова!

(Это был сарказм, если кто не уловил.)

Аватар пользователя raptor
raptor(1 год 10 месяцев)

И какая тут магия и шаманство? Если единица и ноль? Какие могут быть ошибки? Ну для надёжности распознавания нуля и единицы можно и напряжение питания подавать со стабилизацией напряжения на конце кабеля, чтобы там точно было, например 24 вольта. Тогда какие проблемы с распознаванием? А при напряжении 24 вольта, да даже и 12 вольт никакие помехи не помешают. Были проблемы с 2.5-3 вольта, это да, помехи...

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

Да, Действительно -- какие проблемы. Какая нахрен магия и шаманство?

Самое просто решение:

- открыл кошелёк,
- достал денюшку,
- купил канадские (или какие-там?) девайсики,
- подсоединил кабель,
- порофит.

Аватар пользователя serg2013
serg2013(11 лет 6 месяцев)

У нас в конце 90-х на базе ХТ компьютера, все проблемы одновременного питания и приёма данных каротажа с геофизического кабеля 5 км были решены. 

Аватар пользователя ВладимирХ
ВладимирХ(11 лет 11 месяцев)

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

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

Дак это понятно, что всё украдено ещё до нас.

Какие проблемы-то! Подписываешь контракт на разработку, заходишь в интернет, скачиваешь программу, заливаешь в Ардуино и -- вуаля! Вообще вопросов нет! И я так подозреваю, что такой подход к разработке даже где-то есть и кое-кому приносит кое-какие деньги. Ачо нет-то? Всё ж просто! Нахрена лезть в проблемы. Если есть проблемы, то как правило они "решаются" деньгами. Жить надо проще!

Это был сарказм если чо.

Просто иногда бывает весело читать отзывы "специалистов" заочно определяющих по почерку уровень других специалистов и знающих как решать любую проблему

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

Аватар пользователя RusEngineer
RusEngineer(8 лет 4 месяца)

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

Взлетит / не взлетит? Это вопрос. Но сейчас на волне импортозамещения и обрубания сервиса с той стороны... Может, и прокатит.

Окно возможностей небольшое и недолгое. Ибо:

Подписываешь контракт на разработку, заходишь в интернет, скачиваешь программу, заливаешь в Ардуино и -- вуаля! Вообще вопросов нет!

- вот это решение без изобретения велосипеда. Но именно сейчас временная потребность в велосипеде есть.

Выжимайте из своей изобретательности максимум. Как минимум, научную степень. Удачи!

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

Если это было сказано без сарказма, то... вопрос реально не простой.

Мне 61 год. Какая нафиг кандидатская! Мне бы как-то денег бы заработать. Пензию отодвинули, а в современную технологию ардуино-скетчей я не умею. Работодателям нужны 35-летние, а не старые пердуны. Я умею разрабатывать, вникая глубоко в проблемы, и не умею программировать мышкой не приходя в сознание. Особенно когда дело касается ответственности за подписанный контракт.

Хотя о как можно обрисовать всю картину в нескольких предложениях. Как можно вынести какой-то авторитетный вердикт по теме и компетенции автора, прочитав пару его статей, в которых он даже не раскрыл тему.

Поэтому, увы!

Аватар пользователя ВладимирХ
ВладимирХ(11 лет 11 месяцев)

а в современную технологию ардуино-​скетчей я не умею. Работодателям нужны 35-​летние, а не старые пердуны.

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

Декодировать Манчестер-2 сложно? Что же от Вас ждать на реально сложной задаче?

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

Блин! Ну, если так тяжело доходит, то придётся пояснить.

В мой фразе

Гораздо сложнее обратно раскодировать этот сигнал.

использовано сравнение не "сложно" (то есть "абсолютно сложно), а "сложнее" -- то есть "сложнее, чем закодировать".

Каждый видит то, к чему он предрасположен.

Аватар пользователя Mitchell
Mitchell(9 лет 1 месяц)

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

Лучше с такой темой на специализированные сайты для железячников. 

когда то я и сам паял геофизические приборы, но потом ушел в интерпретацию  ГИС и с полевой работой закончил .. 

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

Да. Я отдаю себе отчёт, что aftershock не совсем подходящая площадка для подобных тем.

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

Wordpress меня давно уже не устраивает, но в последнее на его качество время начали жаловаться подписчики. Поэтому возник вопрос миграции. Куда переезжать -- я не знаю. Поскольку я так же читаю aftershock, то решил попробовать здесь печататься. В сравнении с wordpress.com здесь сервис для создания статей очень понятный.

Опубликовал на antershick.news пока только пару непрофильных статей. Опубликовал у себя в блоге. Я не знаю, кто их вытаскивает на главную. Поэтому если никто не будет вмешиваться, то все должно быть нормально. Кому надо, то подпишется и будет в курсе, кому не надо, тот почти не увидит ничего раздражающего.

Аватар пользователя RusEngineer
RusEngineer(8 лет 4 месяца)

Хм... Если не затруднит - пришлите ссылочку на статьи.

Аватар пользователя zhevak
zhevak(4 года 3 месяца)

пришлите ссылочку на статьи.

Не совсем понял -- на какие статьи?

Которые

 Опубликовал на antershick.news пока только пару непрофильных статей.

или которые

 я обычно публикую свои статьи (wordpress.com)