Самый простой способ переключить индуктивную нагрузку с помощью Arduino?

Я пытаюсь переключить (просто включить / выключить) двигатель 3,7 В (сопротивление катушки 2,2 Ом) и двигатель 6 В (сопротивление катушки 8 Ом) с помощью Arduino Mini. У меня проблемы с поиском универсального способа сделать это.

Что я знаю на данный момент:

  1. должен быть обратный диод (D1 на принципиальной схеме).

  2. Есть 4 варианта переключения.

    а) реле (простейшее, Arduino Uno с помпой 12В: транзистор или оптрон+реле 12В? )

    б) NPN-транзистор https://electronicsclub.info/transistorcircuits.htm

    c) МОП-транзистор с низким напряжением на затворе Как управлять нагрузкой с низким импедансом с помощью Arduino и транзистора

    г) оптопара (см. ссылку на реле)

  3. Переключатель с низкой стороны лучше, чем переключатель с высокой стороны. Переключатель высокой стороны и переключатель низкой стороны

  4. Все земли должны быть соединены вместе (если не используется оптопара). Должна ли сигнальная земля быть соединена с фактической землей?

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

Вопросы :

  1. Какие компоненты я могу безопасно удалить из схемы?
  2. Что важнее всего сделать правильно?

Я понимаю, что мне нужен R1, чтобы предотвратить плавающий контакт. Что делает подтягивающий резистор от выходного контакта Arduino до земли? Это необходимо?

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

Изменить 2019:

В итоге ( после прочтения ответов ) построил следующую схему:

Схема транзисторного ключа

Мораль в том, что пункты 3 и 4 чрезвычайно важны.

Изменить 2022:

Появился новый ответ, который дает хорошие результаты!

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

Ответы (2)

Нет места для комментария. Я беру SWAG, так как много необходимой информации отсутствует.

Это должно в конечном итоге привести вас к рабочему решению.

Надеюсь, у вас есть большая коробка 1N4148. С вашей текущей конфигурацией и напряжением вы будете их регулярно дуть. С индуктором то, что входит, выходит.

Вы теряете около вольта через транзистор, и он станет горячим. Измерьте напряжение на клеммах 9-вольтовой батареи при включенном двигателе.

После того, как вы сделаете это измерение, вы обнаружите, что оно недостаточно велико для привода двигателя.

R1 должен находиться между контактом 10 GPIO и землей, особенно если вы используете MOSFET. В вашей текущей конфигурации он также действует как делитель напряжения.

Как питаете микроконтроллер? Как вы получаете указанные вами напряжения для двигателей, или я правильно предполагаю, что они питаются от 9-вольтовой батареи? Я бы рекомендовал использовать N-канальный МОП-транзистор с лавинным номиналом логического уровня.

Вы правы, транзистор периодически нагревался и сгорал. Я думаю, что я запитал Arduino от другого источника, так как, когда двигатель запустился, Arduino потерял мощность. Я отказался от проекта несколько лет назад (и не занимался другими проектами), поэтому не могу быть уверен.

Цепь необходима для тока, протекающего в базу Q5 и обратно. Обратный путь отсутствует.

Чтобы исправить это, подключите эмиттер Q5 к arduino GND.

R1 не нужен, но и не вредит.

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