Не работает гальваническая развязка UART

Необходимо сделать гальваническую развязку Serial порта.
Плата Digispark Attiny85.
Схема:

Serial на Attiny сконфигурён так

#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 4);

void setup() {

  mySerial.begin(9600);
  mySerial.setTimeout(50);
  mySerial.println("INA START...");
.... etc ...
}

БЕЗ оптронов всё работает. Как в составе проекта, так и просто с обычным USB/UART адаптером.

Что я сделал не так?

Взял зачем-то оптроны. Не посмотрел что на выходе осциллографом. Сбавляй частоту раз в 10 - будет работать.

1 лайк

А ничего, что оптрон инвертирует сигнал?

1 лайк

А надо было взять … ???

Ещё не смотрел. Каюсь… Посмотрю, конечно.

Это где?

P.S. Кстати, про оптроны.
Даташит утверждает, что они

High speed response (TYP. 1Mb/s)

И макс. время задержки от 0.2 до 0.8 мкс.

А ничего, что в ЭТОЙ схеме НЕ инвертирует?

Да, протупил

У меня есть ещё одно предположение, что в SoftwareSerial неверная интерпретация RX/TX.
Я когда проверял без оптронов, не посмотрел, как подключены к адаптеру ардуиновские RX/TX.
Просто перебрасывал, чтобы заработало и всё.
Сейчас уже не перебросить, надо перепаивать…

Хотя… Попробую поменять пины в скетче. Если не прокатит, то значит что-то другое.

Не прокатило… Ушёл за осциллографом… Проверять схему (в десятый раз) и думать… :slight_smile:

Открываем даташит на оптопару, смотрим вдумчиво и думаем, что же ты
делаешь не так…

Я вот в даташите свободных ног не увидел…

1 лайк

А вообще есть специальные микросхемы для развязки.
Китайские так вообще копеешные, дешевле быстрых оптронов уж точно.

Хотя бы вот:

Вот даташит:
https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://taoic.oss-cn-hangzhou.aliyuncs.com/temp/product/hstz_1576814805000.pdf&ved=2ahUKEwio1PP0nI-DAxWElMMKHYDiDIYQ6sMDegQIGRAB&usg=AOvVaw3ekDxWax9Ytjd2hHYs9cVU

1 лайк

Млять!!! Так оно и оказалось!

Пока шёл с работы, подумал о том же…
Век живи - век учись… внимательно читать даташиты…
А оптрончик-то оказался хитровы… И “обычный” вывод базы транзистора оказался совсем не обычным…
Вообщем, припаял 6 ногу на VCC и… Вуаля!

18:58:55.443 → Dolboeb…
18:58:56.416 → Dolboeb…
18:58:57.432 → Dolboeb…
18:58:58.443 → Dolboeb…
18:58:59.459 → Dolboeb…
18:59:00.453 → Dolboeb…

И что самое обидное - перед тем, как запаять оптроны, видел типовую схему включения.
Видел и пин 6, подключенный к VCC…
Но победили стереотипы и дрогнула рука… :slight_smile:

1 лайк

В плане реабилитации незаслуженно осуждённых оптронов -

Вот :wink:

rkit тут часто несёт пургу, это нормально, в бесперебойниках некоторых стоят 817 и ничего, справляются

Было бы странно ,если бы не справлялись, частота 50Гц…

Я там выше ссылки и даташиты приводил на микросхемы развязки, самые дешёвые были на 150кгц, а те что на мегагерцы дороже в несколько раз.

на фото плата сопряжения с компортом

Kakmyc, так PC457L и есть копеешные. 42 рэ у китайцев.
И “мегагерцовые” они вроде как… Или я неверно интерпретировал данные из даташита?

По большому счёту, такая скорострельность мне и не нужна. Важнее достоверность данных.
Кстати, 115200 на 5-м 5Е патчкорде начинают кашлять. На 57600 устойчиво.
Мне и этого с лихвой. Буду делать на 19200.

P.S. Сейчас как раз занимаюсь с приёмом/передачей с использованием crc8.
Пока чего-то туплю, не работает… :frowning:

crc16, рабочая

/*
  Name  : CRC-16 CCITT
  Poly  : 0x1021    x^16 + x^12 + x^5 + 1
  Init  : 0xFFFF
  Revert: false
  XorOut: 0x0000
  Check : 0x29B1 ("123456789")
  MaxLen: 4095 байт (32767 бит) - обнаружение
    одинарных, двойных, тройных и всех нечетных ошибок
*/
uint16_t crc16(uint8_t *adrBuff, uint16_t len)
{
  uint16_t crc = 0xFFFF;
  unsigned char i;

  while (len--)
  {
    crc ^= *adrBuff++ << 8;
    for (i = 0; i < 8; i++)
      crc = crc & 0x8000 ? (crc << 1) ^ 0x1021 : crc << 1;
  }
  return crc;
}

Я хз.
У меня всё проще.
У заказчика слетела в станке микросхема преобразователя(одна из тех что в даташите), заказал жменю (10шт), а китайца косоглазая прислала не те, что заказывали(направления портов на ногах инверсные но зато скорость максимальная). По спору вернул 100% средств. Повторил заказ, прислали уже тех что надо.
Итого имеем 18 микросхем (одну на запас приклеил в пакетике скотчем на плату) по цене 10 оплаченных заказчиком.
Плюсом ещё одна от аналогдевайс (заказчик брал по ссылке в чипдип за дорого) но у той тоже пины инверсные как у первой партии китайской. Работать то работает, но вот к плате крепить навесным монтажом на проводах.
Станок то сделал сразу(запаяв AD), а вот “подтирание соплей” затянулось…

Кстати, есть у кого опыт в ковырянии мозгов станков высечных Trumpf ?
Механик вручил блок вроде как ПЛК ЧПУ, с диагнозом ошибка по связи, что это значит не знаю пока не подключал.
На плате обнаружены две плисины циклон.
Какие узлы проверить в первую очередь и есть у кого хотя бы блок схема ? От принципиалки бы тоже не отказался.

Спасибо! Но у меня проблема (была) не в этом.
Разобрался уже. Просто накосячил с “избыточным использованием” CRC.

Увы… Я даже таких “неприличных слов” не знаю…