Двигатели постоянного тока работают только в одном направлении

Я новичок в Arduino и делаю свой первый полноценный проект — робота, избегающего препятствий.

Я использую Arduino Uno и защиту двигателя, совместимую с библиотекой драйверов двигателей Adafruit. Я пытаюсь запустить пример кода отсюда: https://learn.adafruit.com/ adafruit-motor-shield/using-dc-motors, но оба мотора работают одновременно. Это должно запустить двигатели вперед на 1 секунду, назад на 1 секунду и затем сделать паузу на 1 секунду.

Я получаю противоречивое поведение при запуске кода. Когда я подключаю только 1 двигатель, он работает нормально. Когда Arduino подключен к моему ноутбуку через USB, он работает нормально. Однако, когда я использую внешний источник питания 6 В и оба двигателя, они будут двигаться только в одном направлении и оставаться неподвижными в течение второго периода движения. Когда я задаю им движение вперед-назад-стационарно, они двигаются только вперед. Когда я устанавливаю их в положение «назад-вперед-неподвижно», они двигаются только назад.

Есть идеи, что может быть причиной этого / как я могу это исправить? Как я уже сказал, я новичок в этом, поэтому могу ошибаться .

Вот моя установка: 4 батареи AA для питания моторного щита, с 2 двигателями постоянного тока, подключенными к портам двигателей 1 и 4.

У меня есть 2 двигателя постоянного тока, один из которых подключен к порту 1, а другой к порту 4 на моторном шилде. Источником питания являются 4 батарейки АА (думаю, 6В?), которые также подключены к моторному шилду.

А вот мой код:

#include <AFMotor.h>

AF_DCMotor leftMotor(1, MOTOR12_1KHZ);
AF_DCMotor rightMotor(4, MOTOR12_1KHZ);

void setup() {
  leftMotor.setSpeed(255);
  rightMotor.setSpeed(255);
}

void loop() {
  leftMotor.run(FORWARD);
  rightMotor.run(FORWARD);
  delay(1000);

  leftMotor.run(BACKWARD);
  rightMotor.run(BACKWARD);
  delay(1000);

  leftMotor.run(RELEASE);
  rightMotor.run(RELEASE);
  delay(1000);
}

Любая помощь приветствуется!

, 👍2


3 ответа


1

Ваш код выглядит довольно просто, и тот факт, что все работает правильно с разъемом ноутбук-USB, заставляет меня подозревать, что ваша проблема связана с аккумулятором.

Когда вы сказали: "Когда Arduino подключен к моему ноутбуку через USB, он работает нормально", вы имели в виду, что 4-элементный аккумулятор по-прежнему подключен к моторному шилду, как показано на рисунке, но на Arduino подается питание? с ноутбука через USB?

Я подозреваю, что происходит то, что при переходе с одного направления на другое напряжение батареи временно падает ниже точки отсечки низкого напряжения Arduino, и все останавливается, ЗА ИСКЛЮЧЕНИЕМ, когда Arduino подключается к ноутбуку через USB, соединение USB продолжает питать Arduino в течение периода отключения, и все работает.

Поскольку вы начинаете работать с электроникой и Arduino, возможно, вы захотите приобрести базовый DVM (цифровой вольт-амперметр) и базовый лабораторный блок питания. Эти два элемента позволят вам легко устранить эту проблему. Обычный блок питания для настольных ПК с выходным напряжением 5, 12 и (иногда) 24 В постоянного тока является хорошим настольным блоком питания, широко доступным и дешевым.

Надеюсь, это поможет,

Фрэнк

,

2

Возможное аппаратное решение:

Рассмотрите возможность использования 2 аккумуляторных батарей. Один подключен к Arduino, а другой подключен к плате привода двигателя. Не забудьте соединить заземление двух батарей вместе.

Возможное программное решение:

Программное обеспечение часто упускают из виду при решении проблем, которые кажутся аппаратными. Рассмотрите возможность введения короткой паузы между изменениями направления движения. Может случиться так, что мощность, необходимая для изменения направления вращения двигателя, превышает емкость аккумуляторной батареи. Скорее всего, потребуется меньше энергии, чтобы сначала остановить двигатель, сделать паузу, а затем запустить двигатель в противоположном направлении.

,

0

4 батарейки типа АА — это 6 вольт, что соответствует напряжению для 2 двигателей постоянного тока. Как и все другие ответы на этой странице, проблема, скорее всего, связана с вашим аккумулятором, хотя я не уверен, как это повлияет на ваши двигатели. Я не могу сказать по картинке, но проблема должна быть с проводкой от вашего аккумуляторного блока. Если у вас есть провода, идущие от аккумуляторной батареи к двигателям, убедитесь, что они подключены правильно, так как это может вызвать проблемы.

Надеюсь, эта информация поможет, и остальные ваши проекты с Arduino пройдут очень гладко!

-Саймон

,