Мой моторный щит сломан?

Итак, я пытаюсь работать над проектом мини-боевого бота. Однако прошло некоторое время с тех пор, как я работал с электроникой Arduino. Так что я прохожу и учусь делать каждую вещь, прежде чем собрать все воедино. До сих пор я научился использовать ИК-пульт, и это заработало. Я получил свой бесколлекторный двигатель с esc, работающим с Arduino. Теперь я пытаюсь заставить свои двигатели постоянного тока работать на компонент колеса. Я просто пытаюсь запустить один двигатель из моторного щита, по сути, в качестве доказательства концепции. Итак, вот и бег вниз.

У меня есть 8 батарей типа АА, соединенных последовательно, каждая из которых работает от напряжения 1,5 В, всего 12 В. Я проверил это с помощью своего мультиметра. Для работы двигателей постоянного тока требуется 9-18 вольт, поэтому 12 должно работать. Тем не менее, я, вероятно, увеличу это до 18 вольт для максимальной мощности и запущу 4 двигателя постоянного тока, так как я предполагаю, что мой проект будет немного тяжелым, поэтому мне нужно как можно больше мощности. У меня есть батареи 8xAA, правильно подключенные плюсом к плюсу и минусом к минусу на моторном щите. Я проверил паяное соединение, контакты не погнуты, все выглядит ровно и хорошо. Я убедился, что сильно нажал, чтобы вставить его в Arduino. Двигатель подключен к m2 в соответствии с кодом. Я не понимаю, почему это не работает так, как должно работать. Я пытался использовать эту форму: Почему мой моторный шилд Adafruit не вращает мои моторы?

И это не решило проблему. Первоначально я использовал 9-вольтовую батарею, но в этой форме мне было сказано использовать более 9 вольт и использовать батареи AA, поэтому я так и сделал. Я также проверил свои соединения и убедился, что пайка в порядке. Вот мой код:

#include <AFMotor.h>

// Двигатель постоянного тока на M2
AF_DCMotor motor(2);

void setup() {
  Serial.begin(9600);           // настраиваем последовательную библиотеку на 9600 бит/с
  Serial.println("Motor party!");

  // включаем мотор №2
  motor.setSpeed(200);
  motor.run(RELEASE);
}

int i;

// Проверка двигателя постоянного тока
void loop() {
  motor.run(FORWARD);
}

Я подключил двигатель напрямую к аккумулятору, и двигатель работает нормально. Я проверил напряжение моей батареи, и оно отличное, не ниже 12 вольт и не выше 13 вольт. Я открыл последовательный монитор и вижу «моторную вечеринку», поэтому я знаю, что код работает. Я искал ошибки внизу и не нашел ни одной. Порт я проверил, и это правильно. Моторный щит производства Adafruit. У меня установлена правильная библиотека, на самом деле я только что установил ее сегодня, поэтому у меня есть последняя версия библиотеки. Индикаторы на Arduino загораются, а индикатор питания на моторном щите также загорается, когда мои батареи типа АА подключены. Когда я подключаю его, загораются индикаторы, но двигатель не работает. Вот несколько картинок.

https://imgur.com/a/lzXDQmO

Мне трудно понять это, поэтому, если кто-нибудь может мне помочь, заранее спасибо.

, 👍0

Обсуждение

Я бы еще раз проверил проводку. Контроллер двигателя довольно жесткий. Скорее всего, вы бы знали, если бы взорвали его. Есть ли индикатор включения привода на моторном щите? Это происходит? Если нет, то попробуйте заменить моторный привод на светодиод или измерьте штырек измерителем., @markshancock

Троекратно проверил проводку, на фото все в порядке. Что касается индикатора включения привода, я вижу светодиод «питание», который загорается, когда к нему подключены батарейки типа АА. Кроме этого, я не вижу ни одного. Для измерения штыря вы имеете в виду меру м2 на щитке? Если это так, я пробовал это, но мой мультиметр показывает 0 при установке на 20 вольт постоянного тока. Отчасти поэтому я думаю, что он сломан, но я никогда не видел дыма или чего-то еще, что действительно говорило бы мне, что я «взорвал его»., @Bob G.

Я просто добавил еще 2 фотографии в конец, через сайт, который я дал. На них показано, что он подключен к сети, а также крупным планом во время подключения., @Bob G.

Я не использовал эту доску, но она выглядит довольно хорошо. Я нашел техническую информацию о нем [здесь](https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/resources), он использует пару двойных h-мостов 6612. Похоже, что каждый двигатель использует сигнал ШИМ (скорость) и два сигнала управления направлением, которые генерируются на плате и управляются через SPI., @markshancock

В этой [Документации AF](https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/using-dc-motors) используются другие команды., @markshancock

Итак, то, что вы сказали, действительно заставило это работать, поэтому моя проблема заключалась в неправильной библиотеке и неправильном коде, код, который я использовал, был для старой библиотеки. Я вижу, что код теперь использует программирование ООП, поэтому я предполагаю, что мне нужно создать новый объект для каждого двигателя, верно? В любом случае, я хотел бы отдать вам должное, поскольку даже jDAQ сказал, что это было отмечено вами. Так что дайте ответ, и я могу поставить вам галочку., @Bob G.

О, я вижу в документации, там просто сказано, что я могу дать ему другое имя и инициализировать его с другим мотором, так что мне не нужно создавать совершенно новый объект., @Bob G.


2 ответа


Лучший ответ:

2

Команды, которые вы используете, не соответствуют перечисленным для этой платы. Вот документация AF для платы Motor Shield V2.

Попробовать

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *motor = AFMS.getMotor(2);

void setup() {
  Serial.begin(9600);           // настраиваем последовательную библиотеку на 9600 бит/с
  Serial.println("Motor party!");

  // включаем мотор №2
  AFMS.begin();
}

int i;

// Проверка двигателя постоянного тока
void loop() {
  motor->run(FORWARD);
}

Примечание. В этой библиотеке функция getMotor() возвращает указатель; поэтому вам нужно использовать «->», а не «.». для доступа к методу запуска двигателя().

,

3

Как заметил markhancock, вы используете более старую версию библиотеки Adrafruit Motor Shield, предназначенную для версии 1 платы (у вас версия 2.3), и, согласно их форуму, они несовместимы (они используют другую связь). протоколы) используйте более новую версию библиотеки https://forums.adafruit.com/viewtopic.php ?f=31&p=276888

,

Так что да, новая библиотека и другой код сделали свое дело. Теперь это работает, однако, я хочу отдать должное правильному человеку, которого вы сказали, «как отметил Маркшенкок», поэтому я отдам ему должное, если он опубликует ответ, если нет, то я поставлю вам большой палец вверх и поставлю галочку. . Я вижу, что этот новый код использует ООП, поэтому я предполагаю, что мне нужно создать новый объект для каждого двигателя?, @Bob G.

О, я вижу в документации, там просто сказано, что я могу дать ему другое имя и инициализировать его с другим мотором, так что мне не нужно создавать совершенно новый объект., @Bob G.

Спасибо @BobG. Рад слышать, что это была проблема. Я добавил ответ, как вы просили :), @markshancock