время изменяется, как только двигатели постоянного тока подключены к источнику питания
Я использую Arduino Uno с двумя двигателями постоянного тока. Я также использую встроенный светодиод, чтобы сообщить мне, когда моторы должны быть включены, в качестве инструмента отладки. Код представляет собой простой цикл while, который включает моторы и светодиод на 10 секунд, выключает на 5 и повторяет, пока горит ведьма. Это прекрасно работает, когда двигатели не подключены к источнику питания (когда переключатель включен, светодиод включается на 10 секунд, выключается на 5 и так далее), но когда драйвер двигателя подключен к источнику питания, синхронизация изменяется. Двигатели и светодиод горят менее секунды и гаснут на 5. индикатор «вкл.» период немного меняется, как только он даже достигает намеченных 10 секунд.
Почему это и как это исправить? Я пробовал менять батарейки (хотя не знаю, как это может изменить ситуацию, так как светодиод тоже работает неправильно и работает от отдельного источника питания).
Arduino подключен к 9-вольтовой батарее, а двигатели подключены к 4 батареям AA через драйвер двигателя L298N.
это мой код:
#include <Arduino.h>
int RightSpeedPin = 5;
int Rdir2 = 6;
int Rdir1 = 7;
int led = 13;
int LeftSpeedPin = 10;
int Ldir2 = 8;
int Ldir1 = 9;
int SwitchPin = 4;
int ReadVal;
void setup() {
// поместите сюда код установки для однократного запуска:
pinMode(Rdir1, OUTPUT);
pinMode(Rdir2, OUTPUT);
pinMode(RightSpeedPin, OUTPUT);
pinMode(LeftSpeedPin, OUTPUT);
pinMode(Ldir1, OUTPUT);
pinMode(Ldir2, OUTPUT);
pinMode(SwitchPin, INPUT);
pinMode(led, OUTPUT);
}
void loop() {
ReadVal = digitalRead(SwitchPin);
while (ReadVal == 1)
{
digitalWrite(led, HIGH);
// исходная ситуация - оба двигателя движутся вперед
// работает 10 секунд
digitalWrite(Rdir1, HIGH);
digitalWrite(Ldir1, HIGH);
digitalWrite(Rdir2, LOW);
digitalWrite(Ldir2, LOW);
analogWrite(RightSpeedPin, 255);
analogWrite(LeftSpeedPin, 255);
delay(10000);
// выключено на 5
analogWrite(RightSpeedPin, 0);
analogWrite(LeftSpeedPin, 0);
digitalWrite(led, LOW);
ReadVal = digitalRead(SwitchPin);
delay(5000);
}
}
ссылка на схемы. это грубо, я не очень опытен в рисовании схем. Обратите внимание, что все заземляющие провода подключены к шине заземления макетной платы, отличной от 9В, которая питает Arduino. он подключен к круглой вилке, поэтому у меня нет отдельных проводов. РЕДАКТИРОВАТЬ: исправлена схема
@young marx, 👍1
Обсуждение1 ответ
Лучший ответ:
После отладки путем печати:
sTime = millis();
analogWrite(RightSpeedPin, 255);
analogWrite(LeftSpeedPin, 255);
delay(5000);
analogWrite(RightSpeedPin, 0);
analogWrite(LeftSpeedPin, 0);
Serial.print(millis() - stime);
Время меньше 300 мс, сброса нет (в настройки добавлена печать). Я до сих пор понятия не имею, почему.
после этого я просто заменил задержку на while (millis() < Stime + t) {
, что решило мою проблему.
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Как устранить шум от вентилятора 12 В с ШИМ-управлением на низкой скорости
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Как заставить сервопривод вращаться на угол больше 180°
- Почему Adafruit motor shield не крутит моторы?
- Как управлять 6 шаговыми двигателями с помощью Arduino?
- Пропорциональный контроль расхода воды
- L298N Dual Motor Controller Enable Pin имеет питание, но двигатели не работают
Схема вашей установки не помешала бы. Можно фото, если все провода хорошо видны. Также ваше предложение: "...и работает от отдельного источника питания)". звучит важно, но сбивает с толку. Я бы написал ОТВЕТ, но я только предполагаю без схемы ... вы подключили питание 5 В между платой двигателя Arduino и L298N?, @st2000
мое первое предположение состоит в том, что состояние переключателя не определяется правильно ... используйте подтягивающий резистор ... второе предположение заключается в том, что arduino сбрасывает ... у вас нет кода, чтобы сообщить вам, когда выполняется setup() .. , используйте Serial.print() для отладки сообщений... или дважды помигайте светодиодом внутри setup(), @jsotola
добавил схемы. что мне подскажет мигание внутри настройки?, @young marx
подумайте о том, когда выполняется setup () ... снова прочитайте весь мой комментарий, @jsotola
Пожалуйста, вставьте схему в свой вопрос, не используйте внешние ресурсы, так как они могут исчезнуть., @the busybee
символы батареи нарисованы назад, @jsotola