Большое спасибо, за качественный контент. Не могу не подметить, очень интересное решения с транзисторами перед микросхемой. Однако теперь , из за полного понимания принципа работы, очень сильно расстроился. Это всё хорошо работает, только в режиме (один-Мастер- остальные слейв). В маём случае, когда у меня много приборов которые должны производить передачу на события, это не куда не годится,слишком много костылей придётся вставлять. В тот момент когда на линию будут выходить сразу несколько приборов, будет каша с пакетами. Как то нужно думать, проверку занятости линии, если занята то, ждать очереди,или производить запросы, на разрешения передачи по иным линиям, ну или согласования выстраивать . В общем всё не просто выходит.
Вам все-таки нужно воспользоваться режимом один мастер, остальные слевы, это не сложно, но придется разработать свой протокол поверх юарта. Советую воспользоваться библиотекой изи трансфер для построения своего протокола
@@sv-avtomatika К сожалению, это наверно будет не приемлемо , есть процессы которые требуют немедленных реакций. А в режиме опроса, пока до него дойдёт очередь. столько газа утечёт. Ладно будем думать.
Работа с транзистором или от порта МК ни какой разницы нет, и нет проблем что с одним мастером, что каждый сам за себя, суть в том, чтобы небело одновременной передачи от разных устройств, так как произойдет коллизия данных. По этому и делается, что одно устройство (Мастер) опрашивает все подчиненные устройства. Соответственно у подчиненных устройств должен быть свой уникальный адрес, у кого адрес совпал тот и ответил, если устройство потерянно соответственно оно не отвечает, а в мастере надо реализовать таймер ответа, чтобы он не отправлял следующий запрос пока подчиненный не ответит. Вот приблизительная посылка [адрес][команда][кол-во байт][данные+n][контрольная сумма], ответ [Адрес][Команда][Кол-во байт][данные][Контрольная сумма]
Сделал проэкт rs485, в котором 1 мастер и много слейвов, так без обьединения земель общение было с ошибками или вовсе не работало. Поэтому использую трехпроводную линию: канал А, канал В и земля
Возможно у вас не согласованно волновое сопротивление витой пары, и обязательно надо использовать витую пару (можно от сетевой кабель RJ-45 у него 120 Ом волновое сопротивление). Я на работе развел сеть длиной почти 1Км на скорости 9600 все отлично работает. Один нюанс резисторы для согласования волнового сопротивления ставятся только 2 штуки в начале и в конце линии, в промежутке их ставить необязательно, если от соединения - линия не далеко идет.
Уважаемый автор. Вначале Вы сказали, что когда на re de низкий уровень то микросхема работает на передачу. А потом, после подключения транзистора, на этих выводах при передаче потенциал становится высоким. Разъясните пожалуйста эту информацию. Спасибо.
Здравствуйте, когда подключен NPN транзистор в режиме ключа (эмиттером на землю, а коллектор подтянут резистором к плюсу и к нему подключены выводы RE и DE ) - при подаче высокого уровня на базу - транзистор открывается и замыкает линии RE и DE к земле, при низком уровне - транзистор закрывается и через подтягивающий резистор на этих выводах устанавливается высокий уровень. Получается своего рода инвертор сигнала.
Тоесть, инвертирования сигнала делает микросхема? Значит, если соединить два мк вместе, без микросхем, то они просто буду обьщатся по RS-232 ? Собственно если подгрузит протокол modbus, то он будет работать и по инерфейсу rs 232.
Да все верно МК модно подключать без дополнительных приблуд, и некоторые устройства у которых нет преобразователя для непосредственной работы с СОМ портм. С помощью RS485 можно в одну линию подключить несколько устройств в отличии от RS232
Здравствуйте, самый простой способ - осциллографом, если таковой есть, если нет, то вольт метром тоже можно: в стоянии покоя между линиями должен быть ноль, а при передаче - около 3-5 вольт, в зависимости от какого напряжения питается трансивер.
Тут надо знать последовательность байт. Если есть возможность - на рабочем устройстве (подключенном ведущий ведомый) - посмотреть осциллографом или полиграфом - как идет запрос и ответ, при различном уровне или температуре (если нет документации с описанием). Как правило 1й байт - адрес устройства к которому идет обращение, 2й - команда (чтение/запись/регистр обращения), 3 - кол-во байт, 4 - может быть данными, их может быть несколько, 5 - контрольная сумма CRC16 или CRC8.
@@remden Для памяти, как прошивка! плюс туда постоянно записывать статические значения. Что бы контроллер дольше работал! Я да же не предстовляю, как это возможно по spi
Запишу в будущем подобное видео. Для прошивки, а точнее загрузчик через USB, я планирую в скором времени выпустить видео (если минутка найдется). Для записи статики можно использовать собственную EEPROM память, а если не достаточно, то можно писать в Flash самого МК. На счет долговечности - МК рассчитан на 100 тысяч для Flash и 1М для EEPROM.
Насколько я понимаю- Цепляя Re, De на коллектор транзистора мы никогда не сможем передать 1. Только 0. Не очень информативный сигнал получается. В чем я ошибаюсь?
Почему? Единица там будет, когда транзистор закрыт, она - будет за счет подтягивающего резистора от плюса питания, который вторым выводом подключается к RE и DE.
У меня есть устройство, которое использует интерфейс i2с, в домашних условиях прекрасно работает, но стоило мне его притащить на производство, оно перестало работать вообще. Не могу понять почему, ведь и там и там я использую экранированную витую пару одинаковой длины. Есть у кого мысли, почему это происходит.
Это возможно из-за помех, для I2C не обязательна витая пара, так как при синхронной передаче она бесполезна и сигнал на ней сильнее затухает. Единственно ее можно использовать когда одна скрутка идет на такт, а вторая на данные. Еще попробуйте понизить скорость передачи.
@@ПавелИгнатьев-в4у Скорее всего нет, если только самостоятельно сделать преобразователь на МК или как я ранее говорил - для тактового вывода использовать один преобразователь интерфейса или нех инвертор и пускать сигнал по витой паре в противофазе, а для данных - второй преобразователь, но тут надо подумать как это реализовать, так как линию надо отпускать в третье состояние чтобы принимать, в том числе флаг АСК. Попробуйте подобрать номинал подтягивающих сопротивлений на линиях.
Превосходство зашкаливает
Большое спасибо, за качественный контент. Не могу не подметить, очень интересное решения с транзисторами перед микросхемой. Однако теперь , из за полного понимания принципа работы, очень сильно расстроился. Это всё хорошо работает, только в режиме (один-Мастер- остальные слейв). В маём случае, когда у меня много приборов которые должны производить передачу на события, это не куда не годится,слишком много костылей придётся вставлять. В тот момент когда на линию будут выходить сразу несколько приборов, будет каша с пакетами. Как то нужно думать, проверку занятости линии, если занята то, ждать очереди,или производить запросы, на разрешения передачи по иным линиям, ну или согласования выстраивать . В общем всё не просто выходит.
Вам все-таки нужно воспользоваться режимом один мастер, остальные слевы, это не сложно, но придется разработать свой протокол поверх юарта. Советую воспользоваться библиотекой изи трансфер для построения своего протокола
@@sv-avtomatika К сожалению, это наверно будет не приемлемо , есть процессы которые требуют немедленных реакций. А в режиме опроса, пока до него дойдёт очередь. столько газа утечёт. Ладно будем думать.
Работа с транзистором или от порта МК ни какой разницы нет, и нет проблем что с одним мастером, что каждый сам за себя, суть в том, чтобы небело одновременной передачи от разных устройств, так как произойдет коллизия данных. По этому и делается, что одно устройство (Мастер) опрашивает все подчиненные устройства. Соответственно у подчиненных устройств должен быть свой уникальный адрес, у кого адрес совпал тот и ответил, если устройство потерянно соответственно оно не отвечает, а в мастере надо реализовать таймер ответа, чтобы он не отправлял следующий запрос пока подчиненный не ответит. Вот приблизительная посылка [адрес][команда][кол-во байт][данные+n][контрольная сумма], ответ [Адрес][Команда][Кол-во байт][данные][Контрольная сумма]
Сделал проэкт rs485, в котором 1 мастер и много слейвов, так без обьединения земель общение было с ошибками или вовсе не работало. Поэтому использую трехпроводную линию: канал А, канал В и земля
Возможно у вас не согласованно волновое сопротивление витой пары, и обязательно надо использовать витую пару (можно от сетевой кабель RJ-45 у него 120 Ом волновое сопротивление). Я на работе развел сеть длиной почти 1Км на скорости 9600 все отлично работает. Один нюанс резисторы для согласования волнового сопротивления ставятся только 2 штуки в начале и в конце линии, в промежутке их ставить необязательно, если от соединения - линия не далеко идет.
Сравнение с переменным током некорректное, его можно передавать на большие расстояния не поэтому. А в остальном познавательно, лайк.
Спасибо!
Спасибо.
Спасибо автору, всегда видео очень познавательные.
Уважаемый автор. Вначале Вы сказали, что когда на re de низкий уровень то микросхема работает на передачу. А потом, после подключения транзистора, на этих выводах при передаче потенциал становится высоким.
Разъясните пожалуйста эту информацию. Спасибо.
Здравствуйте, когда подключен NPN транзистор в режиме ключа (эмиттером на землю, а коллектор подтянут резистором к плюсу и к нему подключены выводы RE и DE ) - при подаче высокого уровня на базу - транзистор открывается и замыкает линии RE и DE к земле, при низком уровне - транзистор закрывается и через подтягивающий резистор на этих выводах устанавливается высокий уровень. Получается своего рода инвертор сигнала.
Тоесть, инвертирования сигнала делает микросхема? Значит, если соединить два мк вместе, без микросхем, то они просто буду обьщатся по RS-232 ? Собственно если подгрузит протокол modbus, то он будет работать и по инерфейсу rs 232.
Да все верно МК модно подключать без дополнительных приблуд, и некоторые устройства у которых нет преобразователя для непосредственной работы с СОМ портм. С помощью RS485 можно в одну линию подключить несколько устройств в отличии от RS232
Поделитесь ссылкой на юсб 485 с гальванической развязкой на али?
У меня Болидовский преобразователь, а так на алике полно подобных, вы можете сами найти - RS485
Интересно, а MAX485 будет работать с протоколом i2c? Понятно без ухищрений наверное не получится, вопрос только каких ухищрений?
В принципе можно поставить две микросхемы - на тактовый вход и линию данных, но зачем?
@@remden Затем что у меня есть проблемка с i2c которую я пытаюсь решить.
@@ПавелИгнатьев-в4у А какая проблема? Постараюсь помочь
@@remden В другом комментарии😁
здравствуй) как искать неисправности 485 или как его проверить? занимаемся сигнализацией
Здравствуйте, самый простой способ - осциллографом, если таковой есть, если нет, то вольт метром тоже можно: в стоянии покоя между линиями должен быть ноль, а при передаче - около 3-5 вольт, в зависимости от какого напряжения питается трансивер.
@@remden спасибо большое!
а как читать датчики по rs485 , например датчики уровня топлива?
Тут надо знать последовательность байт. Если есть возможность - на рабочем устройстве (подключенном ведущий ведомый) - посмотреть осциллографом или полиграфом - как идет запрос и ответ, при различном уровне или температуре (если нет документации с описанием). Как правило 1й байт - адрес устройства к которому идет обращение, 2й - команда (чтение/запись/регистр обращения), 3 - кол-во байт, 4 - может быть данными, их может быть несколько, 5 - контрольная сумма CRC16 или CRC8.
В будующем, было бы интеренсно увидеть урок, как прикрутить флеш память, к мк!
Вполне возможно, хотя вы сами можете использовать SPI интерфейс для подключения, единственное под какие цели?
@@remden Для памяти, как прошивка! плюс туда постоянно записывать статические значения. Что бы контроллер дольше работал! Я да же не предстовляю, как это возможно по spi
Запишу в будущем подобное видео. Для прошивки, а точнее загрузчик через USB, я планирую в скором времени выпустить видео (если минутка найдется). Для записи статики можно использовать собственную EEPROM память, а если не достаточно, то можно писать в Flash самого МК. На счет долговечности - МК рассчитан на 100 тысяч для Flash и 1М для EEPROM.
Насколько я понимаю- Цепляя Re, De на коллектор транзистора мы никогда не сможем передать 1. Только 0. Не очень информативный сигнал получается. В чем я ошибаюсь?
Почему? Единица там будет, когда транзистор закрыт, она - будет за счет подтягивающего резистора от плюса питания, который вторым выводом подключается к RE и DE.
У меня есть устройство, которое использует интерфейс i2с, в домашних условиях прекрасно работает, но стоило мне его притащить на производство, оно перестало работать вообще. Не могу понять почему, ведь и там и там я использую экранированную витую пару одинаковой длины. Есть у кого мысли, почему это происходит.
Это возможно из-за помех, для I2C не обязательна витая пара, так как при синхронной передаче она бесполезна и сигнал на ней сильнее затухает. Единственно ее можно использовать когда одна скрутка идет на такт, а вторая на данные. Еще попробуйте понизить скорость передачи.
@@remden А есть конвертеры i2c в rs485 и обратно?
@@ПавелИгнатьев-в4у Скорее всего нет, если только самостоятельно сделать преобразователь на МК или как я ранее говорил - для тактового вывода использовать один преобразователь интерфейса или нех инвертор и пускать сигнал по витой паре в противофазе, а для данных - второй преобразователь, но тут надо подумать как это реализовать, так как линию надо отпускать в третье состояние чтобы принимать, в том числе флаг АСК. Попробуйте подобрать номинал подтягивающих сопротивлений на линиях.
а кто скинет ломаную прогу virtual serial ports emulator ?
disk.yandex.ru/d/8ur-ppdJW3Ti5w Качайте быстрей, доступ сутки, чтобы не забанили
@@remden спасибо, но пишет ключ не подходит
@@Кост286 Она работает без ключа, он только на 32х битные системы
@@remden понятно. спасибо