Полноприводной вездеход не движется

Я пытаюсь создать полноприводный автомобиль. Я загрузил код, все соединения в порядке, я использовал L298N и HC-05. Но при запуске приложения Bluetooth моторы не вращаются. Я пробовал и с Уно, и с Нано, но ничего не происходит. Может ли кто-нибудь помочь мне найти ошибки?

Я использовал этот код в Arduino Uno:

#include <SoftwareSerial.h>

SoftwareSerial BT(0, 1); //TX, RX соответственно
String readvoice;

void setup() {
  BT.begin(9600);
  Serial.begin(9600);
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
}
//------------------------------------------------ -----------------------//
void loop() {
  while (BT.available()) {  //Проверяем, есть ли доступный байт для чтения
    delay(10);              //Добавлена задержка, чтобы сделать работу стабильной
    char c = BT.read();     //Проводим последовательное чтение
    readvoice += c; //строим строку- "вперед", "назад", "влево" и "вправо"
  }
  if (readvoice.length() > 0) {
    Serial.println(readvoice);

    if (readvoice == "*forward#")
    {
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(100);
    }
    else if (readvoice == "*back#")
    {
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, HIGH);
      digitalWrite(6, HIGH);
      delay(100);
    }
    else if (readvoice == "*left#")
    {
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(800);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(100);
    }
    else if (readvoice == "*right#")
    {
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(800);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(100);
    }
    else if (readvoice == "*stop#")
    {
      digitalWrite(3, LOW);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(100);
    }
    else if (readvoice == "*keep watch in all direction#")
    {
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(100);
    }
    else if (readvoice == "*show me Garba#")
    {
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);

      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(400);
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);
      digitalWrite(5, LOW);
      digitalWrite(6, LOW);
      delay(600);
      digitalWrite(3, LOW);
      digitalWrite(4, HIGH);
      digitalWrite(5, HIGH);
      digitalWrite(6, LOW);
      delay(500);
      digitalWrite(3, HIGH);
      digitalWrite(4, LOW);
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      delay(500);
    }
    readvoice = ""; //Сбрасываем переменную
  }
}

Это электрическая схема ровера:

Схема подключения

, 👍0

Обсуждение

Сначала попробуйте без Bluetooth. Какой источник питания вы используете для двигателя? L298 — это деталь с ужасными потерями, и вам понадобится одна или две дополнительные ячейки АА, чтобы компенсировать ее потери. Между тем, маленькие 9-вольтовые батареи не смогут в настоящее время использоваться в проекте по производству двигателей. А где еще два мотора, чтобы сделать этот 4wd?, @Chris Stratton

Сэр, я использовал батарею на 9 В, соединил два других двигателя с другим двигателем и соединил их положительную и отрицательную клеммы вместе, и, пожалуйста, также скажите мне, правильный ли код или нет, и если есть проблемы с L298N, то что мне делать? использовать.., @Aryan Dhall

Не используйте батареи напряжением 9 В для моторных проектов. Попробуйте 6 или 7 ячеек АА — с абсурдно потерями L298, может быть, даже 8 ячеек АА., @Chris Stratton

Спасибо, сэр, это сработало без Bluetooth, но в чем тогда проблема с подключением Bluetooth????, @Aryan Dhall

Ну, во-первых, вам не следует использовать программный последовательный порт на контактах 0 и 1, это аппаратный последовательный порт. Вы решили сделать это самостоятельно или следуете указаниям, написанным кем-то, кто не знает, что делает?, @Chris Stratton

Я сам попробовал, сэр, а потом куда подключать контакты tx и rx вместо последовательных контактов 1 и 0....., @Aryan Dhall

Возможный дубликат [Arduino 4wd rover](https://arduinoprosto.ru/q/52375/arduino-4wd-rover), @Code Gorilla


1 ответ


2

Если у вас правильная проводка, которую вы, вероятно, уже проверили 100 раз, то, вероятно, дело в том, что вы не подаете достаточный ток, чтобы остановить остановку двигателя. Найдите в Интернете техническое описание двигателя и найдите «Ток опрокидывания», а затем проверьте, подаете ли вы достаточный ток.

Проверяли ли вы двигатель без присоединенного редуктора, если это возможно?

Двигателю будут предъявляться требования как по напряжению, так и по току. Вы используете двигатель на 6 В, но нам также необходимо знать рабочий ток и ток остановки, чтобы вы могли тренироваться, если ваши батареи способны его обеспечить. Вы пытаетесь запустить один двигатель или 4? Сначала запустите один двигатель, а затем увеличивайте количество до 4, когда вам потребуется подать в 4 раза больше мощности.

Также могу ли я просто проверить, подключены ли батареи последовательно (чтобы обеспечить напряжение 7,4 В). Этого, вероятно, недостаточно, если двигателям требуется ровно 6 В из-за падения напряжения на микросхеме в 2 В.

Измерьте напряжение на мосту и на двигателе, как показано на веб-странице. Также поможет измерение тока, но вам придется поискать, как лучше всего это сделать.

,

Сэр, я также использовал батарею на 3,7 В и емкостью 7800 мАч для мотор-редуктора...., @Aryan Dhall

Да, сэр, я пробовал без оборудования, и оно все равно вибрирует...., @Aryan Dhall

Пожалуйста, не могли бы вы проверить и остальные пункты в ответе?, @Code Gorilla