Сбой последовательной связи Arduino при остановке / загрузке двигателя постоянного тока, управляемого ШИМ

Я использую следующую схему (из http://luckylarry.co.uk/arduino-projects/arduino-control-a-dc-motor-with-potentiometer-and-multiple-power-supplies/ ) для управления скоростью двигателя постоянного тока 6 В, питаемого от отдельного источника питания:

введите описание изображения здесь

Когда я сильно нагружаю двигатель или останавливаю его, последовательная связь между моим Arduino Uno и моим ПК (через USB) не работает. Данные перестают поступать, и мне нужно отключить Uno, закрыть IDE, снова подключить Uno, а затем запустить IDE, чтобы восстановить связь.

Не уверен, что это проблема с заземлением (я позаботился о том, чтобы все заземления были подключены к одной шине), проблема с нагрузкой (хотя Uno и двигатель имеют отдельные источники питания) или проблема с противо-ЭДС.

Любая помощь будет оценена по достоинству.

Спасибо,

-Роб

Питание полностью раздельное, с двумя подключениями к сети?

Ответы (4)

Я думаю, что проблема в беспаечной макетной плате. Соединения двигателя будут потреблять большой ток, что не подходит для пружинных контактов на макетной плате и вносит шум в питание Arduino через общую землю, когда двигатель глохнет. Двигатель может потреблять 1 А или около того при большой нагрузке или в условиях остановки, а эти макетные платы без пайки рассчитаны только на несколько мА, IIRC. Правильно подключите схему на печатной плате или макетной плате с заземлением в одной точке, и ваша проблема, вероятно, исчезнет. Или избегайте остановки двигателя и его большой нагрузки.

Вы можете контролировать ток двигателя с помощью чувствительного резистора и входа АЦП на Arduino, выключать привод, когда ток становится чрезмерным, и зажигать светодиод, чтобы указать на неисправность.

Похоже, это может быть какая-то проблема с землей. Какие у вас блоки питания и как они подключены? Вы сделали схему на макетной плате, как на картинке в ссылке?

Когда вы сильно нагружаете или останавливаете двигатель, он пропускает значительный ток. Предполагая, что вы построили его, как показано на рисунке, большой ток в проводе возврата питания вашего двигателя может привести к тому, что (-) рейка на макетной плате поднимется. Если двигатель ps подключен к земле ПК (остерегайтесь «скрытого пути»!), это может привести к тому, что кажущиеся уровни напряжения на интерфейсе USB будут не соответствовать спецификации. Вы даже можете получить эффект блокировки, который потребует отключения питания.

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

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

Я добавил конденсатор емкостью 0,1 мкФ к выводам двигателя и конденсатор емкостью 470 мкФ к шинам питания и заземления на макетной плате, прямо рядом с точкой подключения заземляющего провода Uno. Я больше не теряю последовательную связь с Uno, когда двигатель находится под нагрузкой или глохнет.

Я был близок к созданию схемы изолятора, чтобы полностью отделить сторону двигателя от стороны Arduino/ПК, используя ADUM1402 (http://www.analog.com/en/interface/digital-isolators/adum1402/products/ product.html), но я понял, что это не может быть единственным решением. Я провел еще несколько исследований и обнаружил, что хорошей практикой является фильтрация шума и пиков от двигателей постоянного тока с помощью конденсаторов, как показано на http://www.pololu.com/docs/0J15/9 и на многих других сайтах. Явное проявление невежества с моей стороны, но теперь я знаю лучше.

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

В любом случае, спасибо всем, кто пытался помочь!

У меня есть Makerbot — одна из плат управляет двигателем постоянного тока, а также имеет вход термистора — я видел похожие проблемы — решил их с помощью

1) прокладывание проводов вдали друг от друга 2) установка крышки 100 нФ на аналоговый вход 3) установка ферритовой шайбы на этот входной провод

Я бы тоже побеспокоился об основаниях - заземления подключены в другом месте? (земляной контур)