Adafruit Motorshield v2.3 не работает

Я хочу подключить свой мотор-шилд adafruit v2.3 к сенсорной плате из оголенного проводника, чтобы моторчик вращался при прикосновении к одному из электродов.

Я протестировал сенсорную часть, и это не проблема, поэтому я протестировал моторный шилд на своем arduino uno. Я использую пример DCMotorTest, и при загрузке он не выдает никаких ошибок. На щит подается питание, но двигатель не вращается.

Двигатель вращается при подключении к 9-вольтовой батарее. Двигатель не вращается при подключении к моторному щиту без внешнего питания и подключенной перемычки VIN. Введите описание изображения здесь Двигатель не вращается при подключении к моторному щиту с внешним питанием с подключенной перемычкой VIN и без нее.

/*
Это тестовый скетч для собранного Adafruit Motor Shield для Arduino v2.
Это не будет работать с моторными шилдами v1.x! Только для v2 со встроенным ШИМ
контроль

Для использования с Adafruit Motor Shield v2
----> http://www.adafruit.com/products/1438
*/

#include <Wire.h>
#include <Adafruit_MotorShield.h>

// Создаем объект моторного щита с адресом I2C по умолчанию
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
// Или создайте его с другим адресом I2C (скажем, для стекирования)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

// Выберите «порт» M1, M2, M3 или M4. В этом случае М1
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
// Вы также можете сделать еще один мотор на порту M2
//Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

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

  AFMS.begin();  // создаем с частотой по умолчанию 1,6 кГц
  //AFMS.begin(1000); // ИЛИ с другой частотой, скажем, 1 кГц

  // Установить начальную скорость от 0 (выкл.) до 255 (максимальная скорость)
  myMotor->setSpeed(150);
  myMotor->run(FORWARD);
  // включаем мотор
  myMotor->run(RELEASE);
}

void loop() {
  uint8_t i;

  Serial.print("tick");

  myMotor->run(FORWARD);
  for (i=0; i<255; i++) {
    myMotor->setSpeed(i);  
    delay(10);
  }
  for (i=255; i!=0; i--) {
    myMotor->setSpeed(i);  
    delay(10);
  }

  Serial.print("tock");

  myMotor->run(BACKWARD);
  for (i=0; i<255; i++) {
    myMotor->setSpeed(i);  
    delay(10);
  }
  for (i=255; i!=0; i--) {
    myMotor->setSpeed(i);  
    delay(10);
  }

  Serial.print("tech");
  myMotor->run(RELEASE);
  delay(1000);
}

https://imgur.com/a/tEGndDQ

, 👍0

Обсуждение

Если вы используете блочную батарею на 9 В: не используйте ее. Эти батареи предназначены для приложений с низким энергопотреблением и могут обеспечивать только низкий ток. Не подходит для приводных двигателей, @chrisl

Что я должен использовать вместо этого?, @Nick

Много возможностей. Например, подходящее количество батареек типа АА, соединенных последовательно. Или литий-полимерный аккумулятор, @chrisl


2 ответа


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

1

В соответствии с документацией adafruit у вас есть две возможности питания щита.

A: подключите Arduino к разъему питания (не USB) Arduino и установите перемычку VIN.

B: Оставьте перемычку VIN отключенной и подключите питание к разъему питания шилда.

Не пробуйте другие возможности. Они могут убить щит или Arduino.

Причина, по которой ваш двигатель не вращается, заключается в том, что вы его выключили. myMotor->run(RELEASE); сразу после включения myMotor->run(FORWARD);.

,

Установка перемычки VIN означает подключение контактов или оставление их неподключенными?, @Nick

Я не уверен, правильно ли я понял ваш вопрос. Если я это сделаю, ответ таков: установка перемычки VIN означает взятие перемычки или других проводящих материалов и установка ее на два контакта VIN или между ними. Это два контакта рядом с разъемом питания на шилде. Если они соединены вместе, то питание Arduino (но только от _*ext Power plug*_, _*не*_ от USB-разъема) подключается к управлению питанием шилда и вам не нужно доп. мощность на щите., @Peter Paul Kiefer

Да, это то, что я имел в виду, извините за столь странную формулировку вопроса. Когда я оставляю перемычку VIN и подключаю экран к батарее 9 В, светодиоды экрана загораются, но Arduino не загорается., @Nick

При подключении пары батареек АА происходит то же самое, я тоже менял М1 на М4 но это тоже ничего не дало, @Nick

Если я правильно понял документацию, Arduino должен питаться отдельно, даже если вы питаете шилд извне. Но можно запитать шилд от ардуино, если перемычка VIn установлена на контакты. Тогда вам не нужно питать щит извне., @Peter Paul Kiefer


2

Я только что использовал другой моторный щит, и теперь он работает, спасибо всем за ваши ответы и исследования!

,