Для постоянного тока. Скорость двигателя медленно увеличивается, чтобы достичь максимальной скорости, а также реверса.
Я попытался управлять скоростью двигателя постоянного тока 12 В, медленно увеличивая скорость до максимальной скорости, а также реверсивно, но не получил удовлетворительного результата, код приведен ниже:
int motor = 3;
int fade valu=0;
void setup() (
pinMode(motor, OUTPUT);
}
void loop () {
for (int fadeValue= 0 ; fadeValue<= 255; fadeValue +=5) {
analogwrite (motor, HIGH);
delay (10);
analogWrite (motor, LOW);
}
}
@Joy2406, 👍-1
Обсуждение1 ответ
Поскольку ваши текущие знания в настоящее время кажутся очень ограниченными, я объясню здесь некоторые основы. Но важно, чтобы вы читали существующую документацию и учебные пособия, которые есть в Интернете, и выполняли небольшие шаги на их основе.
analogWrite()
создаст ШИМ-сигнал на данном выводе. Это означает, что сигнал будет варьироваться между состояниями ВЫСОКИЙ (5 В для Uno) и НИЗКИЙ (0 В) на определенной частоте. В зависимости от второго параметра функции относительное время HIGH будет больше или меньше. Нулевое значение означает отсутствие времени ВЫСОКОГО уровня (все время вывод на НИЗКИЙ уровень). Значение 255 всегда означает HIGH. Значение 127 означает, что наполовину ВЫСОКИЙ, наполовину НИЗКИЙ. Если вы подключите это к драйверу двигателя, двигатель будет получать небольшие толчки с довольно высокой частотой (относительно времени реакции двигателя). Чем дольше толчки, тем больше энергии получает двигатель. Таким образом, при значении 127 он будет работать на половинной скорости.
В настоящее время вы указываете HIGH
и LOW
в качестве параметров, которые определены как 1
и 0
. Итак, вы говорите: «бегите на очень-очень низкой скорости» и «не бегите» быстро (10 мс). fadeValue
не используется в вашем коде. Вы должны записать это во второй параметр analogWrite()
и удалить второй вызов analogWrite()
.
Для повторного снижения после этого вы можете скопировать весь цикл for и запустить его с 255 до 0.
Поскольку вы ничего не рассказали нам о схеме, вот предупреждение: двигатель (особенно 12-вольтовый) не может управляться непосредственно Arduino. Вы всегда должны использовать какую-то схему драйвера. Он может состоять либо из одного полевого МОП-транзистора, либо, особенно если вы хотите управлять в обоих направлениях, из H-моста в виде дискретного МОП-транзистора или микросхемы. Обязательно отделите электронику двигателя от электроники Arduino, чтобы никакие индуцированные всплески обратного напряжения не могли достичь Arduino. Также шум двигателя может существенно мешать аналоговому измерению.
Кстати, я использовал один MOSFET, большое спасибо., @Joy2406
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
https://www.arduino.cc/reference/en/language/functions/analog-io/analogwrite/, @Majenko
это очень плохое описание наблюдаемых результатов «не получил удовлетворительного результата», @jsotola