Я использую следующую схему (из 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 и двигатель имеют отдельные источники питания) или проблема с противо-ЭДС.
Любая помощь будет оценена по достоинству.
Спасибо,
-Роб
Я думаю, что проблема в беспаечной макетной плате. Соединения двигателя будут потреблять большой ток, что не подходит для пружинных контактов на макетной плате и вносит шум в питание Arduino через общую землю, когда двигатель глохнет. Двигатель может потреблять 1 А или около того при большой нагрузке или в условиях остановки, а эти макетные платы без пайки рассчитаны только на несколько мА, IIRC. Правильно подключите схему на печатной плате или макетной плате с заземлением в одной точке, и ваша проблема, вероятно, исчезнет. Или избегайте остановки двигателя и его большой нагрузки.
Вы можете контролировать ток двигателя с помощью чувствительного резистора и входа АЦП на Arduino, выключать привод, когда ток становится чрезмерным, и зажигать светодиод, чтобы указать на неисправность.
Похоже, это может быть какая-то проблема с землей. Какие у вас блоки питания и как они подключены? Вы сделали схему на макетной плате, как на картинке в ссылке?
Когда вы сильно нагружаете или останавливаете двигатель, он пропускает значительный ток. Предполагая, что вы построили его, как показано на рисунке, большой ток в проводе возврата питания вашего двигателя может привести к тому, что (-) рейка на макетной плате поднимется. Если двигатель ps подключен к земле ПК (остерегайтесь «скрытого пути»!), это может привести к тому, что кажущиеся уровни напряжения на интерфейсе USB будут не соответствовать спецификации. Вы даже можете получить эффект блокировки, который потребует отключения питания.
Если ваш двигатель не является батареей, вы можете попробовать использовать батарею и посмотреть, сохраняется ли состояние.
Я добавил конденсатор емкостью 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) установка ферритовой шайбы на этот входной провод
Я бы тоже побеспокоился об основаниях - заземления подключены в другом месте? (земляной контур)
Леон Хеллер