Я использую 4 МОП-транзистора логического уровня Si2302 для управления 4 двигателями постоянного тока без сердечника. Скорость двигателей управляется сигналом PWM от Arduino Pro Mini. Блок питания для плат — 3,7 В (4,2 В при полной зарядке) 500 мАч 50C Lipo.
Схема устроена следующим образом:
смоделируйте эту схему - схема, созданная с помощью CircuitLab
Двигатель получает значение RPM через джойстик, который подключен к аналоговому входу на Arduiuno. Затем оно преобразуется в значение 0-255 и выводится на выходе ШИМ.
Столкнулся со следующими проблемами в схеме:
Как только я подаю питание на схему, двигатели работают на полных оборотах, пока Arduino не начнет получать данные с джойстика. Затем он устанавливается на число оборотов в минуту, соответствующее положению джойстика. Есть ли способ противостоять этому, чтобы двигатели оставались выключенными до тех пор, пока Arduino не начнет получать значения от джойстика? (Насколько я понимаю, об этом позаботится резистор Rgs 10 кОм.)
Вторая проблема заключается в том, что мосфет никогда полностью не выключается. Это происходит, даже когда джойстик находится в положении 0. Я также пробовал переключать контакты HIGH и LOW, однако двигатель все еще движется. Есть ли средство от этой проблемы?
Когда я измеряю сопротивление между затвором и истоком, полевой транзистор показывает около 6 кОм. Разве это не должно быть около 10 кОм, поскольку резистор Rgs равен 10 кОм? Является ли это признаком того, что мосфет поврежден?
Уменьшите резистор 10K до 3,3K или даже 1K.
Устройство Si2302, которое вы используете, имеет пороговое напряжение около 0,65 В, это намного ниже, чем у многих МОП-транзисторов, которые обычно имеют пороговое значение 2–4,5 В.
Все эффекты, которые вы видите, вероятно, связаны с подтягивающим резистором в Arduino (при условии, что он использует процессор AVR). Это может быть где-то между 20K и 100K, и будет отводиться от процессора достаточный ток, чтобы создать напряжение смещения, которое слегка включает MOSFET.
Когда вы измерили сопротивление затвора, он все еще был подключен к Arduino?
Подтягивание можно отключить программно, но, конечно, пока не заработает ПО.
Кевин
На Arduino Pro Mini все цифровые контакты (кроме контакта 13, светодиодного индикатора) являются плавающими, пока не будет запрограммировано иное, поэтому, если вы намеренно не активируете внутреннюю подтяжку, ваш подтягивающий резистор должен предотвращать включение полевого транзистора при запуске.
Когда я измеряю сопротивление между затвором и истоком, полевой транзистор показывает около 6 кОм.
Чтение только 6k подозрительно. Однако, чтобы исключить влияние других компонентов, вы должны вынуть полевой транзистор из схемы, а затем измерить сопротивления затвор-сток и затвор-исток с помощью цифрового мультиметра. Наконец, замкните Ворота на Исток и измерьте от Слива (выход +ve метра) до Источника (выход -ve метра). Все показания должны быть выше мегаом. Если соединение затвор-сток или исток-сток повреждено, полевой транзистор может оставаться частично включенным даже при нулевом ШИМ.
Ваша первая проблема возникает после того, как вы включите свою систему, без какого-либо движения джойстика, верно? Может быть, глупо, но вы пытались сделать следующее :):
int motorSpeed1 = 0;
int motorSpeed2 = 0;
int motorSpeed3 = 0;
int motorSpeed4 = 0;
Удачи, С уважением,
СидхартМ
Крис Стрэттон