Проблема с двигателем постоянного тока на Arduino для новичков

Итак, я новичок в Arduino и в электронике в целом. Я просмотрел несколько руководств, и во всех них есть простой ранний учебник, который включает двигатель постоянного тока и снова выключает его. Что-то вроде этого:

Действительный XHTML
(источник: cloudfront.net)

Транзистор, который я использую, представляет собой 2N2222, а двигатель представляет собой небольшой игрушечный двигатель постоянного тока на 3 В.

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

Я отключаю Arduino от USB-порта.

В качестве теста я заменил резистор 2,2 кОм на резистор 560 Ом, и двигатель работает нормально. Тем не менее, он ползает во время "выключения" время (двигатель не находится под какой-либо нагрузкой). Кроме того, примерно через минуту работы этого контура транзистор сильно нагревается.

Итак, мои вопросы:

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

  2. Почему переход на 560 Ом дает такой эффект

  3. Почему двигатель ползет во время цикла выключения при использовании 560 Ом?

  4. Почему транзистор так сильно нагревается при использовании резистора 560 Ом?

  5. Наконец, иногда в качестве теста, чтобы просто попытаться включить двигатель, я просто перенаправляю провод на контакт 9 непосредственно на Arduino 5V на моей макетной плате (полностью минуя управление Arduino). Есть ли причина, по которой это плохая идея?

Я ожидаю вопросов о потреблении тока, но мой мультиметр показывает максимальное значение 200 мА; Я покупаю новый, рассчитанный на 10 А, и он поможет мне увидеть, сколько я рисую.

Заранее благодарим за любую помощь. Я старался быть ясным и кратким, так что, надеюсь, это не вызовет сарказма. Если есть какие-либо ресурсы, на которые можно указать, я буду рад их услышать.

Спасибо!

Джим

, 👍3

Обсуждение

Вы используете внешний источник питания? USB недостаточно силен для управления двигателем постоянного тока., @KIIV

Вы уверены, что подключили транзистор правильно?, @Majenko

Транзистор — это устройство, управляемое током. Когда он насыщен, напряжение CE должно быть около 0,7 В, если больше, как вы увидите с 2,2 кОм, вы не используете его достаточно сильно, что-то в диапазоне 200 Ом должно работать хорошо, хотя 560 может зависеть от коэффициента усиления транзистора. Попробуйте использовать устройство, управляемое напряжением, с той же схемой, но с N-канальным полевым МОП-транзистором (CD, E=S, B=G) с лавинным номиналом логического уровня, рассчитанным на несколько ампер. С лавинным номиналом MOSFET вы можете оставить диод выключенным. Ожидайте гораздо лучшую производительность и намного более крутую часть. МОП-транзистор будет холодным, он не сжигает энергию в виде тепла., @Gil


2 ответа


6

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

  1. Первое, что вам нужно сделать при управлении двигателем, это узнать его максимальный ток останова. Ток остановки — это ток, который будет циркулировать через двигатель (и через транзистор), когда вы прикладываете внешнюю силу для остановки вала двигателя. Но это также тот же ток, необходимый для запуска двигателя, когда он полностью остановлен. Таким образом, для определения размеров транзистора вы обычно выбираете тот, у которого, как правило, ток коллектора в два раза больше, чем ток останова двигателя.

  2. Максимальный ток Ic 2N2222 составляет 800 мА (в лучшем случае, поскольку, насколько мне известно, существуют версии на 600 мА). Хотя вы не указываете много о своем конкретном двигателе, типичный двигатель постоянного тока 3 В может легко запросить 500+ мА. У некоторых небольших двигателей (особенно плохого качества) ток останова может превышать 1 А.

  3. Если ваш двигатель требует, скажем, 300 мА при непрерывной работе, значит, вы достаточно близки к максимальному току 2N2222.

  4. Но здесь есть кое-что поважнее: падение напряжения в транзисторе. 2N2222 является биполярным, поэтому его Vce будет выше 1 В (вероятно, около 2 В), что означает, что вы рассеиваете нетривиальное количество энергии в транзисторе. Эта мощность бесполезна ни для вашего двигателя, ни для вашего транзистора. Вот при номинальном напряжении двигателя 3В даже желательно падение 2В на транзисторе, но я не вижу в вашем описании ваших расчетов про реальное падение. Поэтому я предполагаю, что вы просто считаете, что будет приблизительное падение напряжения 2 В. Это означает, что если ваш двигатель потребляет 0,5 А для работы, вы рассеиваете 2 В x 0,5 А = 1 Вт (Ватт) на транзисторе. Но бедный 2N2222 — это транзистор мощностью 0,5 Вт! Но даже если ваш двигатель потребляет гораздо меньший ток, скажем, 0,25 А, вы все равно используете его на пределе своих возможностей. Это объясняет, почему становится жарко.

  5. Итак, мой совет: выберите транзистор большего размера, если вы хотите рассчитывать на его отключение, чтобы не подавать на двигатель напряжение больше 3 В (что действительно может значительно сократить срок его службы намного). ), И выполните некоторые расчеты, чтобы убедиться, что при используемых токах вы получите желаемое значение Vce.

  6. Еще один вариант, вероятно, лучший, — заменить этот старый биполярный транзистор на полевой МОП-транзистор, но вам нужно будет обеспечить соответствующее напряжение для питания двигателя, поскольку в противном случае вы получите почти все 5 В на двигатель. (из-за очень низкого сопротивления на МОП-транзисторах и, следовательно, очень низкого напряжения падения), и это будет очень плохо.

  7. Кроме того, обратите внимание, что 500 мА порта USB, вероятно, недостаточно для вашей установки. Но даже если вы питаете свой Arduino от внешнего источника питания через его разъем питания, вы найдете хорошей идеей использовать общие основания, но разные источники Vcc для логики и для двигателя.

  8. Напоследок небольшой совет: убедитесь, что диод, защищающий противоЭДС (диод, подключенный своим катодом к Vcc в вашей цепи), является быстродействующим диодом. Медленный диод 1Nxxxx обычно слишком медленный для эффективной защиты вашего транзистора. Если вы используете, например, 1N4007, вы можете переключиться на UF4007 (Ultra Fast).

  9. Что касается вашего резистора 560R против 2K2, это немного превышает ответ, поэтому я советую прочитать что-нибудь о базе резисторы в транзисторах, вот так. Также может помочь кое-что о конфигурации открытого коллектора.

  10. Наконец, практика подключения базового резистора к Vcc в такой схеме для проверки транзистора должна быть приемлемой. Но НЕ ПОДКЛЮЧАЙТЕ базу транзистора напрямую, всегда используйте резистор.

,

Одни только ссылки на evilmadscientist стоят +1, но очень хороший ответ. У меня та же проблема с образцом комплекта Arduino и двигателем, который глохнет при запуске, поэтому теперь я знаю, как к этому подойти., @Kelly S. French


0

***ИСПРАВЛЕНИЕ ОШИБКИ: Извините, у меня была одна ошибка в моем коде, которая объясняет ползучести. Я думал, что запускаю цикл, чтобы просто включать и выключать двигатель, но на самом деле он работал на полную мощность в течение 5 секунд (255) и на частичной скорости (120) в течение 1 секунды, поэтому ползучесть. При сбросе кода на включение на 5 секунд, полное выключение на 1 секунду с резистором 560 Ом все работает как положено. (У меня все еще есть проблема с 2,2 кОм, хотя большая часть моего вопроса остается в силе.

nbloqs, спасибо; Я подробно рассмотрю ваш ответ.

Что бы так много руководств показывали эту базовую схему, если бы у нее было так много проблем?

Еще раз спасибо!

,

Некоторые учебные пособия предназначены для комплектов, которые поставляются с двигателями, где они знают задействованные токи. Кроме того, обычно они довольно просты, и большинство из них не касаются значений базовых резисторов или правильного выбора транзистора. Я не говорил, что 2N2222 не будет работать, но он, вероятно, будет работать на пределе своих возможностей и, следовательно, будет греться (особенно если двигатель какой-то неизвестный). Что касается вашего резистора, я добавил к своему ответу пункт 9., @nbloqs

Также добавлен пункт 10 о вашем вопросе «тест с Vcc»., @nbloqs