Входное напряжение от схемы падает, несмотря на выключенный Arduino

Я использую Arduino Uno для эмуляции старого дисковода Atari, как описано здесь: http://whizzosoftware.com/sio2arduino/

Поскольку и Atari, и Arduino используют последовательную связь TTL 5 В, настройка оборудования довольно проста: RX и TX перекрещены, GND подключен, а дополнительная линия используется для информации о состоянии.

Все работает отлично, когда Arduino — единственное устройство, подключенное к последовательному порту Atari (называемому SIO). Поскольку шина SIO представляет собой последовательную шину, я должен иметь возможность подключать сервальные устройства друг за другом. Однако, как только я подключаю оригинальный дисковод вместе с Arduino, как оригинальный дисковод, так и тот, который эмулируется Arduino, перестают работать.

Что заставило меня задуматься, так это то, что к оригинальному диску нельзя было получить доступ, даже если Arduino был выключен, но проводка оставалась на месте. Только после того, как я удалил контакты RX и TX из соединения, к оригинальному диску можно было получить доступ.

Я проверил с помощью осциллографа и понял, что передача данных все еще достигала обоих устройств, однако напряжение покоя составляло всего около 2 В вместо 5 В. Затем я проверил сопротивление на Arduino между цифровыми входными контактами, а также RX/TX по отношению к GND и получил (разные, в зависимости от шкалы, которую я установил на своем мультиметре) значения, которые, вероятно, имеют эффект делителя напряжения и, таким образом, уменьшают напряжение на всей шине примерно вдвое.

Я думал добавить резистор на линии RX/TX, идущие от шины SIO, чтобы поддерживать напряжение на шине, но это фактически означало бы, что на контакты RX/TX Arduino будет поступать меньше тока, и, следовательно, он может стать бесполезным, если напряжение упадет ниже точки, где Arduino сможет различать логический высокий и низкий уровень.

Или есть способ обойти эти внутренние резисторы между цифровыми входами и GND? Это как-то связано с подтягивающими/стягивающими резисторами, на которые я, вероятно, могу влиять только при включенном Arduino?

Заранее спасибо за любые указания (кроме добавления еще одного переключателя для физического отключения RX/TX от шины, когда устройство выключено ;) )!

, 👍2


2 ответа


Лучший ответ:

4

Для защиты внутренних компонентов интегральных схем многие из них содержат диоды на большинстве входных и выходных контактов VCC. При нормальной работе, когда напряжение на этих контактах не должно превышать VCC, эти диоды не находятся в прямом смещении. Однако, если произойдет непредвиденное и напряжение на этих контактах превысит VCC, диоды будут находиться в прямом смещении. То есть диоды пытаются поддерживать напряжение на выводе не выше VCC.

Когда вы отключили питание от Arduino, вы по сути снизили VCC до нуля. Это, скорее всего, сместит диоды внутри Arduino в прямом направлении и приведет к снижению напряжения на выводе до нуля.

Хорошее обсуждение этого вопроса можно найти в этом вопросе и ответе на сайте StackExchange по электротехнике.

,

1

Хотя st2000 уже ответил на мой вопрос, я все же хотел бы добавить, как я решил проблему, на случай, если кто-то еще столкнется с такой же ситуацией:

В конце концов, мне помогло добавление резистора номиналом 560 Ом в каждую точку входа линий RX/TX. Этого было достаточно мало, чтобы Arduino все еще могла различать логический высокий и низкий уровень, и достаточно много, чтобы шина SIO продолжала работать, когда Arduino выключена. 470 Ом было уже слишком мало, чтобы экранировать шину SIO, 680 Ом было слишком много, чтобы Arduino нормально функционировала при использовании. Я не знаю, есть ли способ правильно рассчитать эти значения, но, по крайней мере, они работают для меня.

,