Обновление: я в настоящее время изменяю несколько вещей с проектом. Я воспользовался некоторыми из вас советом. Я перешел с шагового двигателя на RC-сервопривод (управляемый через ШИМ), и если я столкнусь с какими-либо проблемами и не смогу их решить, я спрошу. Спасибо за помощь!
Я работаю над проектом с другом, и мы впервые используем Arduino. Мы используем Arduino для получения данных от датчика (акселерометр), а затем включаем двигатель (6 В, постоянный ток).
Я занимался копанием, и кажется, что питания от Arduino может быть недостаточно для двигателя и датчика одновременно. Может быть, что-то вроде задержки может сработать (возможно ли это?).
Я собираюсь использовать моторный щит . Смогу ли я по-прежнему управлять акселерометром и двигателем?
Я пытаюсь использовать один внешний источник питания (максимум: 6 батареек типа АА; я пытаюсь ограничить количество батарей, поскольку мы пытаемся сохранить его портативность), поэтому есть ли способ использовать один источник, так как Arduino и моторный щит нужны два разных блока питания (из моего понимания).
Ответы:
Проблема 1 : Управление двигателем напрямую от Arduino
Вождение двигателя непосредственно от выводов Arduino не рекомендуется по нескольким причинам:
Хотя каждый вывод Arduino для Arduinos на базе ATmega рассчитан на 40 мА, я лично предпочитаю, чтобы любая постоянная нагрузка была ниже 30 мА, ваш аппетит к риску может отличаться. Не видя спецификацию рассматриваемого двигателя, невозможно предположить, какой ток требуется двигателю
Обратное ЭДС - это, в основном, обратное напряжение, генерируемое катушками двигателя (или любой индуктивной нагрузкой при отключении), переходные процессы (пики), которые могут на мгновение значительно превышать допустимый диапазон напряжения, который могут выдержать контакты микроконтроллера.
Противо-ЭДС остается риском, хотя и уменьшенным, даже если быстрый диод подключен с обратным смещением к выводам двигателя, что настоятельно рекомендуется.
Если вы знакомы с базовой электроникой, это также может быть достигнуто путем непосредственного подключения подходящей ИС драйвера двигателя и обратных диодов. ( Правка : это отлично описано в ответе Манишарта )
Драйвер мотора, будь то экран или микросхема, должен получать питание независимо от Arduino, но с двумя линиями заземления источника питания, соединенными вместе. Смотрите дальше вниз.
Проблема 2 : Управление акселерометром и моторным щитом одновременно
Для удобства ищите моторный щиток со стекируемыми заголовками, то есть со штырьками Arduino, дублированными на моторном щитке, для подключения дополнительного оборудования, в вашем случае акселерометра. Не все экраны обеспечивают наращиваемые заголовки. Таким образом, усложняется использование штырьков, не используемых экраном, необходимость припайки проводов к соответствующим контактным площадкам на печатной плате или какое-либо подобное расположение.
В случае, если выбранный вами экран двигателя израсходует все контакты GPIO, как это может быть в случае экранов для управления несколькими двигателями, у вас могут возникнуть проблемы. Поскольку необходимо приводить в действие только один двигатель, избегайте экранов с несколькими двигателями, которые не оставляют достаточно неиспользованных выводов GPIO.
Проблема 3 : Распределение мощности между Arduino и моторным щитом
источник
Большинство экранов занимают несколько выводов, а остальные оставляют для вас (поэтому многие из них имеют точную копию системы выводов Arduino поверх них, используя наращиваемые заголовки). Они спроектированы так, чтобы быть максимально без проблем, поэтому получить щит - самый простой способ обойти это.
Я лично не питаю моторы от платы напрямую; вместо этого я использую моторные драйверы, такие как L293D для этого. Контакты не очень хороши для извлечения тока, и обычно лучше подключать датчики напрямую, а не через контакты Arduino. Помните, что контакты имеют ограничение по току, и если вы их перегрузите, они сгорят.
Использовать L293D легко:
Подключите контакты 1,9,16 к источнику Vcc (положительный вывод любого источника 5 В, которым вы питаете Arduino. Для меня это, как правило, линия, вытянутая от LM7805). Теперь подключите контакты 4,5,13,12 к вашему GND (отрицательный вывод). Теперь подключите контакт 8 к источнику высокого напряжения (6 В, 12 В или любой другой, который вы хотите подать на ваши двигатели). Обратите внимание, что отрицательные клеммы всех источников напряжения должны быть замкнуты на GND.
Теперь подключите ваш двигатель через два выходных контакта на одном участке (3,4 слева). Подключите входные контакты (2,7) к двум различным контактам на Arduino. Когда вы подаете одинаковый сигнал (ВЫСОКИЙ или НИЗКИЙ) на оба контакта, двигатель останавливается. Если вы дадите HIGH от одного контакта и LOW от другого, двигатель будет вращаться по часовой стрелке или против часовой стрелки, в зависимости от того, какой вывод получил какой сигнал.
Если вы хотите однонаправленный двигатель и хотите сохранить контакты, замкните один из входных контактов на GND. Теперь, когда другой входной контакт НИЗКИЙ, двигатель будет выключен, а когда он ВЫСОКИЙ, двигатель будет включен.
Вы можете присоединить другой двигатель, используя ту же процедуру на противоположном конце чипа, если хотите.
L293D потребляет небольшое количество тока от Arduino и питает двигатель от тока, подаваемого через контакт 8, и обычно идеально подходит для таких ситуаций.
источник