Не могу контролировать скорость двигателей постоянного тока с помощью analogWrite()

У меня есть Arduino Uno, и я подключил его к 2 двигателям постоянного тока с мостом L298N. Я хочу контролировать скорость двигателей, чтобы они не двигались с максимальной скоростью. Я использую analogWrite (), но он ничего не делает, и двигатели движутся с максимальной скоростью

Вот мой код:

//двигатель A
int enA = 9;
int in1 = 8;
int in2 = 7;

//двигатель B
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup() {
  Serial.begin(9600);
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {

  analogWrite(enA, 0);

  analogWrite(enB, 0);

  digitalWrite (in1, HIGH);
  digitalWrite (in3, HIGH);
  digitalWrite (in2, LOW);
  digitalWrite (in4, LOW);

  delay(50);
}

, 👍1

Обсуждение

Знаете ли вы, что analogWrite(enA, 0); останавливает его? Или в чем именно проблема?, @gre_gor

При использовании analogWrite убедитесь, что вы используете контакты pwn arduino для управления двигателями., @Mukhar Jain

да,я знаю, что analogWrite(enA, 0) останавливает двигатель, и это то, что я хочу, но это не работает, и двигатели всегда работают на максимальной скорости, @Mustafa Mohamed

Пожалуйста, добавьте схему и фотографию вашей проводки. Как вы уже описали, ваш код должен остановить двигатель, так что, возможно, проводка неверна., @jose can u c

@josecanuc я сделал свою проводную базу на видео на YouTube с моей же электроникой, и она отлично работает с его устройством, @Mustafa Mohamed

@MukharJain я уверен ,что использую их, и я попробовал все контакты, однако проблема все та же, @Mustafa Mohamed

Если видеопроект YouTube работает идеально, а ваш-нет, вот почему мы просим посмотреть, что вы сделали, из-за возможности того, что вы допустили ошибку при воссоздании этого проекта., @jose can u c


2 ответа


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

2

Я действительно нашел решение этой проблемы. Оказалось,что мост работает не так, как должен быть, и штифты en(A, B) заменены штифтами in ..теперь я могу контролировать скорость, но не могу изменить направление двигателей

,

Это было действительно неприятно выяснить, так что спасибо за ваш ответ здесь! У меня был похожий плохой модуль, и, похоже, просто подключение моего шим-контакта к IN1 было всем, что требовалось для управления скоростью в одном направлении. Я просто отсоединил перемычку enable/pin и контакт in2 и измерил хороший шим-выход. Похоже, что вывод enable ничего не делает в моем модуле!, @ehsanul


1

analogWrite() может принимать значения от 0 до 255 в качестве второго параметра. Где 255 даст вам максимальную скорость двигателя, а 0-самую низкую (двигатель не будет работать).

Например, приведенный ниже код даст вам почти половину максимальной скорости.

analogWrite(enA, 128);  
analogWrite(enB, 128);
,

я знаю, что он делает, но он работает не так, как должен, и двигатели всегда работают на максимальной скорости, даже если я ставлю его на (0), и я уверен в выводах, @Mustafa Mohamed

Я смотрю на один из мостов L298N на Амазонке. Что это за две перемычки на контактах ENA и ENB? Попробуй их снять, потому что мне интересно, привязывают ли они тебя к полной "включенности"., @LegitimateWorkUser

@LegitimateWorkUser это контакты управления скоростью(напряжение), если вы их снимите, двигатель вообще не будет работать, @Mustafa Mohamed