Программное отключение микроконтроллера на транзисторе 2N4401

Я пытаюсь понять, зачем подключать, скажем, цифровой контакт 4 Arduino к контакту 2 2N4401, а также блок питания 5V к 2N4401 контакт 1 и Arduino от VCC до 2N4401 контакта 3, питание не сохраняется.

При замыкании контактов 1 и 3 на 2N4401 MCU включается, а для контакта 4 в программном обеспечении устанавливается значение pinMode OUTPUT и HIGH, что должно позволить 2N4401 пропускать питание к MCU до тех пор, пока питание доступно, даже при коротком замыкании между выводом 2N4401 1 и 3 вырезаны.

Вместо того, что происходит, когда замыкание между контактами 1 и 3 размыкается, MCU мгновенно выключается.

Как будто транзистор вообще не реагирует на сигнал вывода 4 MCU.

Может ли кто-нибудь объяснить, почему это происходит?

Я уверен, что мне здесь не хватает знаний, и я хочу знать, как можно использовать 2N4401 для создания системы отключения ПО .

Почему 2N4401? Почему не МОП-транзистор? Схемы МОП-транзисторов, обеспечивающие отключение ПО, доступны, но схем отключения ПО на базе транзистора нигде не найти, и 2N4401 — это все, что у меня есть на данный момент.

Обновить

void setup(){
  pinMode(4, OUTPUT);
}

void loop(){
  digitalWrite(4, HIGH);

  delay(3000);

  digitalWrite(4, LOW);
}

, 👍0

Обсуждение

Можете ли вы нарисовать схему и показать код?, @Roger Rowland

Хорошо, но эта штука Фрицинга — не настоящая схема! Однако в вашем коде есть проблема с функцией loop - вам, вероятно, понадобится еще одна delay после digitalWrite(4, LOW), иначе она немедленно снова запишет HIGH в следующем цикле - так что вы на самом деле вы не увидите эффекта от «LOW», поскольку оно будет слишком коротким. Правильная схема необходима, чтобы увидеть, каким образом у вас подключен транзистор., @Roger Rowland

Потому что loop выполняется непрерывно, поэтому он снова включится в начале следующего цикла. Он будет выключен всего на несколько микросекунд. Мне это кажется немного странным: вы пытаетесь использовать Arduino, чтобы выключить *само* себя*?, @Roger Rowland

Сколько времени потребуется, чтобы мощность спала до точки, в которой код перестает выполняться? В источнике питания имеется емкость, которая будет поддерживать его, возможно, даже в течение нескольких сотен миллисекунд. Вместо того, чтобы спорить об этом, просто добавьте еще 3-секундную задержку и посмотрите, изменится ли что-нибудь., @Roger Rowland


2 ответа


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

2

Вот что вам, похоже, нужно... Контакт с ручным управлением (S1 на вашей «схеме») на мгновение замыкает транзистор NPN и подает питание на Arduino. В течение этого короткого времени, когда контакт активен, вам нужно, чтобы транзистор обходил этот переключатель и продолжал подавать питание на Arduino, так что если контакт разомкнется, питание останется на Arduino.

Основная проблема, если предположить, что моя догадка о том, что вам нужно, верна, заключается в использовании NPN-транзистора в качестве эмиттерного повторителя; какое бы напряжение вы ни подали на базу, оно будет примерно на 0,7 вольт ниже на эмиттере, поэтому, когда контакт размыкается, напряжение эмиттера падает примерно до 4,3 вольт, чтобы поддерживать NPN включенным, но это, в свою очередь, приводит к падению напряжения базы, и довольно быстро вы остаетесь ни с чем на эмиттере.

Вам нужен транзистор PNP, который можно включить гораздо эффективнее с помощью NPN, подтягивающего базу PNP к земле. Другими словами, вам нужно два транзистора, чтобы сделать то, что вы хотите: -

Это показано при 5,5 вольтах на шине питания, но 5 вольт будет достаточно. Также показано использование p-канального MOSFET вместо PNP, потому что MOSFET будет действовать как гораздо лучшее «короткое замыкание» при активации.

Вот один из них, на котором показан PNP-транзистор — не обращайте внимания на 12 вольт — он будет работать и от 5 вольт: -

«Лампа» — это то место, куда вы подключаете Arduino (он же PIC в схеме). Вам лучше подойдет p-канальный FET, но на всякий случай, если вы решите использовать версию PNP, вам может потребоваться уменьшить R3 до 470 Ом, чтобы обеспечить достаточный базовый ток для пропускания достаточного тока коллектора для питания Arduino.

Вам также необходимо подключить S1 через "проходной" транзистор - в данный момент он подключен обратно к себе и, следовательно, абсолютно ничего не делает. Обратите внимание, что это было исправлено в вопросе!

,

3

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

  1. Схема — дерьмо. Понятия не имею, что вы пытаетесь сказать пунктирной линией между клеммой «-» батареи и выводом GND процессора.

    Линия, проходящая через середину транзистора, по-видимому, должна быть соединением с базой, но это в лучшем случае неряшливо.

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

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

  2. Вы говорите, что транзистор — 2N4401, который является NPN, но вы показываете PNP. А? Какой это?

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

Обновление

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

,