Что определяет, какой ток может протекать через 2N2222 A?

Я возился с щеточным двигателем постоянного тока, 2N2222 и ШИМ Arduino, чтобы получить разные скорости от моего двигателя. Теперь, основываясь на видео-уроке, который я смотрел на YouTube, было рекомендовано поставить резистор 1 кОм между выводом ШИМ и базой, по-видимому, для защиты ардуино в случае, если транзистор сломается. Я сделал то, что мне сказали, следуя этой схеме (мой источник питания 1,5 В, а R1 1K, а не 220)У меня блок питания 1,5В, а R1 1К.

Но двигатель не будет вращаться, когда вывод микроконтроллера выдаст 5 В (полная нагрузка). Итак, я подумал, ладно, позвольте мне не возиться с моим ардуино на случай, если проблема в нем, поэтому я подключил базу через резистор 1 кОм к тому же 1,5 В, питающему двигатель ... все еще ничего ... поставил новый резистор на 1 кОм... все еще ничего... поэтому я снял резистор на 1 кОм и подключил базу прямо к источнику 1,5 В, и двигатель начал вращаться.

Может кто-нибудь объяснить мне, почему это так? Из того, что я читал, разве напряжение на базе не определяет ток, протекающий от коллектора к эмиттеру? -_- <-- растерянное лицо

Вы уверены, что у вас правильно подключен транзистор?
Двигатель питается от 9 В или 1,5 В?
BJT — это устройство, «управляемое током», а FET — это устройство, «управляемое напряжением». Уменьшение тока базы путем добавления резистора уменьшит ток эмиттера.
В дополнение к ответу Игнасио я хотел бы порекомендовать этот веб-сайт для изучения «Как использовать транзистор в качестве переключателя»: использование транзистора в качестве переключателя . Я сам узнал, как использовать транзистор в качестве переключателя на этой веб-странице.

Ответы (3)

Для вращения двигателю требуется определенное количество тока. То, сколько тока может проходить через транзистор от коллектора к эмиттеру и, следовательно, через двигатель, контролируется током, проходящим через транзистор от базы к эмиттеру, умноженным на усиление тока транзистора, известное как «h fe ». Базовый резистор уменьшил этот ток до слишком низкого значения, чтобы позволить двигателю вращаться даже при усилении транзистором. Используйте то, что вы знаете о требуемом токе двигателя, напряжении на транзисторе от базы к эмиттеру во время насыщения, напряжении от вывода микроконтроллера к эмиттеру и h fe транзистора, чтобы вычислить правильное максимальное значение резистора для использования. Например:

300 мА ( двигатель I ) / 70 А/А (h fe ) = 4,2 мА
(5 В (V MCU ) - 0,7 В (V BE(SAT) ) /4,2 мА = 1,024 кОм

Обратите внимание, что напряжение питания двигателя не участвует в этих расчетах, но оно все равно должно быть достаточно высоким после вычитания напряжения от коллектора к эмиттеру в соответствии со спецификациями двигателя.

Использование коэффициента усиления 70 в расчетах приведет к току базы, который не будет насыщать транзистор (что желательно при использовании транзистора в качестве ключа) и приведет к увеличению падения напряжения коллектор-эмиттер. Эмпирическое правило для насыщения транзистора состоит в том, чтобы управлять базой током примерно от 1/10 до 1/20 выходного тока. В таблице данных 2N2222 напряжения насыщения даны для коэффициента усиления 10.

Как и в случае любого NPN-транзистора, вы должны ограничить ток на базе вашего 2N2222, поэтому требуется R1, потому что NPN-транзисторы являются частями, управляемыми током (например, светодиоды).

При использовании NPN-транзистора в качестве переключателя желательно использовать его в режиме насыщения, поскольку это минимизирует падение напряжения на коллекторе (см V_CE(sat). ). Для этого вы должны ограничить ток на базе до 1/10 от I_C, то есть тока, с которым вы хотите управлять своим двигателем.

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

Обратите внимание, что контакт GPIO на вашем Arduino (ATmega328p) может подавать только до 20 мА. Таким образом, вы ограничены 200 мА для вашего двигателя. Которого может быть недостаточно.

При вычислении значения R1 вы должны учитывать падение напряжения на базе (т.е. V_BE(sat)) и падение напряжения на выводе GPIO (при 20 мА, сравните V_OHс выходным током в таблице данных ATmega328p).

См. также, скажем , техническое описание Onsemi 2N2222A для фигур V_CE(sat) и V_BE(sat).

Альтернативой использованию NPN-транзистора для переключения двигателя является использование полевого МОП-транзистора с логическим уровнем. В отличие от транзистора NPN, он управляется напряжением, поэтому он более энергоэффективен. Кроме того, с помощью полевого МОП-транзистора вы можете переключать гораздо более высокие нагрузки с небольшим током, доступным на выводе GPIO.

OP может использовать два транзистора 2N2222 в качестве пары Дарлингтона, чтобы преодолеть предложенный здесь предел 200 мА.
@AndrewMorton Да, это еще одна альтернатива. См. также Есть ли смысл использовать переходные транзисторы или транзисторы Дарлингтона для силовых приложений? для некоторых плюсов/минусов. В частности, пара Дарлингтона была бы совершенно неэффективной.

Я рискну и предположу, что когда вы подключили базу транзистора к источнику питания 1,5 В, вы фактически подключили его к двигателю. Это объяснило бы, почему поведение было таким, как вы описали.

Предполагая, что ваша реализация схемы была правильной, а транзистор не задом наперед (это меня постоянно достает; стоит перепроверить), проблема с этой схемой почти наверняка связана с напряжением вашего источника питания. Транзистор отключит около 0,6 В в переходе база-эмиттер и, вероятно, ближе к 0,8 В между коллектором и эмиттером, в зависимости от того, насколько он насыщен. 5 В через 1 кОм даст 5 мА, что при h fe около 100 (довольно стандартно) дает максимальный ток 500 мА через коллектор.

Этого должно быть достаточно для небольшого игрушечного мотора, но вы не получите 500 мА через мотор с питанием 1,5-0,8В = 0,7В, особенно если это всего лишь батарейка или две. Как и в комментариях, предложенных в комментариях, вам следует рассмотреть источник питания, больше похожий на вашу схему, 9 В. Я бы сказал, что 5 В будет минимум, или, может быть, 3 В.

Резистор 1K важен не потому, что он защищает Arduino от обратной связи (хотя она тоже есть), а потому, что он предотвращает короткое замыкание своих 5 В через транзистор, что может сжечь то одно, то другое (хотя ток, подаваемый от Arduino ограничен, я думаю, менее 100 мА). Вы обязательно должны использовать его всегда .

Наконец, в зависимости от того, как вы питаете Arduino, вы можете разделить его источник питания с двигателем. Если вы питаете его от разъема для бочек, я на 80% уверен, что вы можете подключиться напрямую к этому источнику питания, используя разъем V in , который находится рядом с 5 В и 3,3 В, и все они (я представляю Uno ). Эта линия не будет подвергаться никакому регулированию (опять же, на 80% уверена), поэтому вам не придется беспокоиться о перегрузке компонентов Arduino. И наоборот, вы можете получить приличный источник питания и запитать от него двигатель и Arduino, выполнив обратную операцию и подключив контакт V in Arduino к напряжению источника питания, как это и предполагалось...

Удачи; надеюсь, это поможет.