Не могу контролировать скорость двигателей постоянного тока с помощью 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);
}
@Mustafa Mohamed, 👍1
Обсуждение2 ответа
Лучший ответ:
Я действительно нашел решение этой проблемы. Оказалось,что мост работает не так, как должен быть, и штифты en(A, B) заменены штифтами in ..теперь я могу контролировать скорость, но не могу изменить направление двигателей
Это было действительно неприятно выяснить, так что спасибо за ваш ответ здесь! У меня был похожий плохой модуль, и, похоже, просто подключение моего шим-контакта к IN1 было всем, что требовалось для управления скоростью в одном направлении. Я просто отсоединил перемычку enable/pin и контакт in2 и измерил хороший шим-выход. Похоже, что вывод enable ничего не делает в моем модуле!, @ehsanul
analogWrite() может принимать значения от 0 до 255 в качестве второго параметра. Где 255 даст вам максимальную скорость двигателя, а 0-самую низкую (двигатель не будет работать).
Например, приведенный ниже код даст вам почти половину максимальной скорости.
analogWrite(enA, 128);
analogWrite(enB, 128);
я знаю, что он делает, но он работает не так, как должен, и двигатели всегда работают на максимальной скорости, даже если я ставлю его на (0), и я уверен в выводах, @Mustafa Mohamed
Я смотрю на один из мостов L298N на Амазонке. Что это за две перемычки на контактах ENA и ENB? Попробуй их снять, потому что мне интересно, привязывают ли они тебя к полной "включенности"., @LegitimateWorkUser
@LegitimateWorkUser это контакты управления скоростью(напряжение), если вы их снимите, двигатель вообще не будет работать, @Mustafa Mohamed
- L298N издает звуковые сигналы и дает сбой при получении определенных значений AnalogWrite
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Как вывести истинное аналоговое напряжение на выходной контакт
- Как управлять 6 шаговыми двигателями с помощью Arduino?
- Как Arduino Uno может поддерживать до 12 сервоприводов, если у него всего 6 цифровых выводов ШИМ?
- Ускорение двигателя постоянного тока с помощью ШИМ
- Контакты ШИМ серводвигателей, Arduino Uno
Знаете ли вы, что
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