Могу ли я проверить, почему мой двигатель не работает?

В настоящее время я использую Arduino Uno, подключенную к L298N (зеленая плата), подключенную к двигателю постоянного тока с номинальным напряжением 12 В. Я предоставил выделенный источник питания 12 В для двигателя постоянного тока, а питание платы Arduino подается через USB, подключенный к моему компьютеру. Я подключил контакт 9 arduino uno к «ENA» на L298N, контакт 7 & 8 (UNO) на «INA» & «ИНБ» L298N. Подключил «-» полярность питания двигателя к GND L298N, а также подключил «GND» L298N к GND Arduino UNO. И последнее, но не менее важное: подключение «OUT B» к двигателю постоянного тока. Это изображение того, как выглядит L298N (зеленый) ?cur_warehouse=CN">https://sea.banggood.com/Green-Board-L298N-DC-Motor-Driver-Board-Stepper-Motor-p-974549.html?cur_warehouse=CN

Могу ли я проверить, почему мой двигатель не работает? Заранее спасибо.

char data = 0;
int enB = 9;
int InC = 8;
int InD = 7;


void setup()
{
    Serial.begin(9600);                   
    Serial.println("Motor test !");
  pinMode(enB, OUTPUT);
   pinMode(InC, OUTPUT);
  pinMode(InD, OUTPUT);

}


void loop()
{Serial.println("Entered loop, should start moving now !");
  digitalWrite(InC, HIGH);
  digitalWrite(InD, LOW);
   digitalWrite(enB, HIGH);
   analogWrite(enB, 255);
 }

, 👍0

Обсуждение

код, который находится внутри блока loop(), нужно запустить только один раз... вы можете переместить его в блок setup(), @jsotola


1 ответ


1

Ну, с вашей проводкой все в порядке, но я думаю,

'digitalWrite(enB, HIGH);

в коде loop() возникает ваша проблема. Вы не хотите использовать один и тот же контакт для цифровых и аналоговых функций.

Я подключил здесь Uno с вашей настройкой и L298N и добился того, чтобы двигатель работал нормально со следующим скетчем, который вообще не использует loop() — он делает все в setup().

char data = 0;
int enB = 9;
int InC = 8;
int InD = 7;


void setup()
{
    Serial.begin(9600);
    Serial.println("Motor test !");
    pinMode(enB, OUTPUT);
    pinMode(InC, OUTPUT);
    pinMode(InD, OUTPUT);

    Serial.println("motor should start moving now !");
    digitalWrite(InC, HIGH);
    digitalWrite(InD, LOW);
    // цифровая запись (enB, HIGH);

    for (size_t i = 0; i < 10; i++)
    {
        analogWrite(enB, 20*i);
        Serial.print("motor speed = "); Serial.println(20 * i);
        delay(2000);
    }

    Serial.println("quitting!");
    while (true)
    {

    }

}


void loop()
{
    //Serial.println("Начался цикл, теперь нужно начать движение!");
    // цифровая запись (InC, HIGH);
    // цифровая запись (InD, LOW);
    // цифровая запись (enB, HIGH);
    //аналоговая запись(enB, 255);
}

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

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

Фрэнк

,

Привет, Фрэнк, спасибо за вашу помощь, после использования кода, которым вы поделились, он все еще не работает. Я подозреваю, что этот зеленый L298N отличается от обычных «красных». На моей плате L298N горит только светодиод «5v», а не все «A», «B», «C», «D»., @user10748500

Обойти все и НЕМЕДЛЕННО подключить +12В к двигателю. Двигатель работает? У вас есть мультиметр? Если это так, вы можете отключить двигатель, чтобы убедиться, что у вас нет обрыва обмотки. Если двигатель работает при прямом подключении к 12 В, попробуйте использовать другой выходной контакт ШИМ вместо контакта 9. Попробуйте подключить двигатель к другому выходу L298N. Если у вас есть цифровой вольтметр, измерьте напряжение постоянного тока на выходе двигателя L298N; он должен считывать почти полное напряжение питания, когда программа работает. Если у вас нет DVM, вам следует подумать о его приобретении — это бесценный инструмент для устранения неполадок ;-), @user3765883

@user10748500 user10748500 вы можете добавить еще одну картинку (существующая ссылка не работает)? Я знаю только зеленую, а не красную..., @Sim Son