Управление насосом Arduino через MOSFET
Я хочу включить насос, который работает от 12 В и потребляет ток не более 1,7 А, с помощью моего Arduino Uno.
Для этого я купил МОП-транзистор RFP30N06LE и, следуя этим инструкциям, все это подключил.< /п>
Я подключил красный провод от насоса к VIN Arduino и подключил к Arduino блок питания 12 В, 2 А. Однако, когда я устанавливаю выходной контакт в положение HIGH, насос качает слабо, и МОП-транзистор сильно нагревается.
Когда я подключаю насос напрямую к VIN и GND, он работает как положено, поэтому Arduino может обеспечить необходимый ток. Я думаю, что в МОП-транзисторе есть что-то, чего я не правильно понимаю. Я измерил VGS при напряжении 4,5 В, поэтому МОП-транзистор должен выдерживать ток. Есть ли что-то, что мне не хватает?
Вот проводка:
Это (очень простой) скетч, который я использую, чтобы все это протестировать:
#define PIN_PUMP_ON 7
void setup() {
pinMode(PIN_PUMP_ON, OUTPUT);
}
void loop() {
digitalWrite(PIN_PUMP_ON, HIGH);
delay(1000);
}
@pumper, 👍0
Обсуждение3 ответа
Лучший ответ:
Vin рассчитан на ток не более 1 А из-за защитного диода от обратной полярности, подключенного последовательно от цилиндрического разъема к выводу Vin. Вы попытаетесь подать через него ток 1,7 А, и вы можете выкурить это. Разъем Vin также рассчитан только на 1А.
Подключите двигатель напрямую к источнику питания. Земля Arduino также должна быть подключена к источнику питания. R2 ограничивает ток вывода Arduino IO до безопасного уровня. R1 отключает МОП-транзистор во время загрузки Arduino. Диод рассеивает ток, генерируемый двигателем, когда МОП-транзистор переходит из состояния «включено» в состояние «выключено». RFP30N06LE рассчитан на полное включение при Vgs 5 В и Rd 47 миллиом, поэтому эту деталь можно использовать.
Питание Arduino от того же источника, что и двигатель, может вызвать проблемы. Если вы можете питать Arduino от USB или от отдельного аккумуляторного блока, а не от того же напряжения 12 В, которое питает двигатель, это, вероятно, даст лучшие результаты, особенно если напряжение 12 В вообще падает при больших нагрузках двигателя. Это может привести к перезагрузке Arduino.
Перемонтируйте питание двигателя так, чтобы оно не использовало контакты питания Arduino или GND. Подключайте затвор MOSFET к выводу Arduino только с помощью подходящего резистора. Сток MOSFET должен идти непосредственно к заземлению источника питания. Таким образом, вы не готовите свой Arduino. Реле вместо МОП-транзистора не позволит сопротивлению МОП-транзистора снизить мощность вашего двигателя.
3 больших контакта под разъемом питания Arduino (2 GND и 1 +V) можно использовать для питания двигателя, просто припаяйте непосредственно к ним для +V двигателя и GND для стока MOSFET. Это обходит диод Arduino.
Почему вы говорите не соединять землю ардуино и питание двигателя? Я видел другие проекты с высокой силой тока для Arduino, в которых специально предлагалось сделать именно это, например, питание длинной цепочки RGB-светодиодов WS2812b. Есть ли здесь какие-то другие критерии (например, двигатель), которые я не понимаю?, @Kelly S. French
Если вы подключите землю непосредственно к контактам цилиндрического разъема, это предотвратит протекание тока через печатную плату Arduino., @Jeff Wahaus
Я нашел ссылку на ситуацию, которая меня смутила, см. пункт № 7 в этом ответе: https://arduinoprosto.ru/q/34531/42061 о запуске двигателя с отдельным источником питания, но соединении заземлений обоих запасы. Может быть, это должен быть отдельный вопрос?, @Kelly S. French
Ни при каких обстоятельствах не подключайте двигатель к VIN на Arduino. Двигатель потребляет слишком большой ток.
Вы хотите, чтобы земля на Arduino была подключена к земле двигателя, но вам нужны разные положительные источники питания для двух разных устройств. Вам также необходимо убедиться, что у вас есть защитный диод подходящего размера, подключенный параллельно двигателю, но направленный против потока тока.
- Как контролировать скорость двухпроводного вентилятора с помощью Arduino и только потенциометра?
- Соленоид «вибрирует», а не толкает.
- Проблемы с ШИМ и подключением прерываний
- почему p-mos действует как постоянный переключатель, когда источник подключен к любому порту в схеме? Я не могу найти решение?
- Контролировать ток 48 вольт и 30 ампер с помощью ШИМ-сигнала - какие компоненты необходимы для этого
- Мотор, управляемый Mosfet, работает, пока НИЗКИЙ
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
Можете показать фото проводки? или схема. Можете ли вы показать эскиз, который вы используете? Будьте осторожны с 12В. Никогда не подавайте питание на двигатель через контакт VIN. Используйте напряжение 12 В для питания платы Arduino и двигателя. Используете ли вы макет, все пойдет не так. Макетная плата не выдерживает большой ток двигателя. Мосфет очень хороший, он не должен нагреваться., @Jot
следовал этим инструкциям
.... нет, вы этого не сделали .... в инструкции не сказано о подключении двигателя к Arduino Vin, @jsotolaДобавил эскиз и схему подключения. В чем проблема с использованием VIN? Согласно документации Arduino, его можно использовать для доступа к 12 В, которые я подаю через разъем питания: «Вы можете подавать напряжение через этот контакт или, если напряжение подается через разъем питания, получить доступ к нему через этот контакт»., @pumper
Между вилкой питания ствольного разъема и VIN находится диод. Какой ток может выдержать этот диод, зависит от Arduino Uno или клона, но 1,7 А — это слишком много. Вы также пропускаете ток земли двигателя через плату Arduino через контакт GND. Мне это тоже не нравится., @Jot
Я ожидаю, что диод выпустит свой волшебный дым через несколько секунд после включения двигателя., @Jeff Wahaus
Более высокое напряжение VGS может снизить сопротивление RDS. Попробуйте добавить подтяжку к 12 В на затворе. Добавьте обычный NPN-транзистор, чтобы позволить Arduino понизить напряжение на затворе до земли и выключить двигатель. Этот транзистор необходим, потому что контакты Arduino не выдерживают напряжение 12 В. См. [этот ответ для хорошей схемы](https://electronics.stackexchange.com/a/281995/43978), @Gerben
Код voidloop() { digitalWrite (PIN_PUMP_ON, ВЫСОКИЙ); задержка(1000); } не выключает насос — для выключения на выводе после задержки должен быть записан НИЗКИЙ уровень., @CrossRoads