Как сделать полный СТОП двигателя?

MorAlex
Offline
Зарегистрирован: 12.10.2015

Всем доброго времени суток.

К Arduino Nano подключен один двигатель постоянного тока через драйвер двигателя и одна сервомашинка. Так же джойстик. Схема подключения самая обычная. Питается всё через стабилизатор который в свою очередь подключен к выходу 12В компьютера. Arduino к USB.

Написан скетч для управления двигателем и сервомашинкой. Но вот проблема. Всё работет испровно пока Arduino подключен к USB, но стоит USB отключить как на двигатель начинает поступать слыбый ШИМ сигнал и немного меняется положение сервы. Разогнаться двигатель конечно не может, а начинает свистеть. Да и сервомашинка чуть дребезжит. Это видимо из за изменения напряжения с джойстика на аналоговый вход ардуины при отключении от USB.

Если при включённом USB я подобрал среднее значение, то при отключении я уже не смогу увидеть, что творится в порту.

Как быть?

Вот сам скетч:

#include <Servo.h>
Servo Servo1;

int zValue;
int ENA = 3;
int in1 = 2;
int in2 = 4;
int ENB = 6;
int in3 = 7;
int in4 = 8;
int zPin = A1;
int yPin = A0;    
float N=10.;

void setup()
{
  pinMode(ENA, OUTPUT);
  pinMode(ENB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(yPin, INPUT);
  pinMode(zPin, INPUT);
  Servo1.attach(5);
  Serial.begin(9600);
}
void loop()
{

Motor();
int val_H = map(analogRead(A1), 0, 1023, 50, 120);
Servo1.write(val_H);

//Serial.println();
//Serial.print("    H:");
//Serial.print(val_H);
//Serial.print("    Z:");
//Serial.print(zValue);
}

void Motor()
{
zValue = zValue + ((map(analogRead(yPin), 0, 1023, 0, 255) -zValue)*2)/(N+1);

if (zValue>127) //назад
  {
  analogWrite(ENA, zValue-127);
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  }
if (zValue<133) //вперёд
  {
  analogWrite(ENA, 127-zValue);
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  }
if (zValue >= 128 && zValue <= 133) //стоп
  {
  digitalWrite(ENA, LOW);
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  }
}

 

infyniti
Offline
Зарегистрирован: 15.07.2017

А на выходе стабилизатора сколько?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ардуино от USB отключаете и ... она без питания остаётся?

MorAlex
Offline
Зарегистрирован: 12.10.2015

infyniti пишет:

А на выходе стабилизатора сколько?

На выходе стабилизатора 4,95 в.

infyniti пишет:

Ардуино от USB отключаете и ... она без питания остаётся?

Нет конечно. Питается от стабилизатора на пин Vin. Пин 5v свободен. На нём при отключенном USB 3.9 в., при влключенном 3.6 в.  Если вот только движки и серву запитать от стабилизатора, а ардуину от 12 ти. Пусть сама стабилизирует. Или со стабилизатора подавать 4,95 в на пины Vin и 5v, но я не знаю можно ли так делать. Питаться в дальнейшем должно от аккумулятора.

Меня ещё интересуют последние строчки. как будто контроллер их просто игнорирует.

В сл. виде точно пролетает:

58 if (zValue > 128 && zValue < 133) //стоп (это средняя точка джойстика)
59   {
60   digitalWrite(ENA, LOW);
61   digitalWrite(in1, LOW);
62   digitalWrite(in2, LOW);
63   }

Хоть с подключенным USB хоть с подключенным.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MorAlex пишет:

На выходе стабилизатора 4,95 в. ...

Питается от стабилизатора на пин Vin. Пин 5v свободен. 

Т.е. у Вас на выходе стабилизатора 5В, и Вы подаёте их на VIN? Вообще-то на VIN подаётся минимум 7В.

Подайте свои 5В на специально так и подписанный пин 5В, окей?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MorAlex пишет:

Меня ещё интересуют последние строчки. как будто контроллер их просто игнорирует.

Так выведите свою zValue в сериал и полюбуйтесь на неё.

infyniti
Offline
Зарегистрирован: 15.07.2017

MorAlex пишет:

 

Нет конечно. Питается от стабилизатора на пин Vin. Пин 5v свободен. На нём при отключенном USB 3.9 в., при влключенном 3.6 в.  Если вот только движки и серву запитать от стабилизатора, а ардуину от 12 ти. Пусть сама стабилизирует. Или со стабилизатора подавать 4,95 в на пины Vin и 5v, но я не знаю можно ли так делать. Питаться в дальнейшем должно от аккумулятора.

 

Для начала запитайте как положено или повысте напрежение или на 5v.

А запитать от аккумулятора можно только вот от какого аккумулятора?

MorAlex
Offline
Зарегистрирован: 12.10.2015

Кинул питание на пин 5v. тоже, что и на vin со стабилизатора. Серва и двигатель так же питаются от 12в. Проблема исчезла. Нужно было самому головой подумать, что на vin нет смысла подавать 5в. Он его ещё просадит. Так или иначе всё работает. Могу скинуть скетч, но вряд ли он кому нибудь пригодится. Я это для подводной лодки делаю.

Питаться в дальнейшем будет (я так думаю) или от одного аккумулятора 12в для бесперебойника или двух по 6в. Как раз груз подходящий. Пока до этого ещё далеко. Нужно всё по радиоканалу развести. Но это уже другая история.

Спасибо за советы!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MorAlex пишет:

для подводной лодки делаю ... Питаться в дальнейшем будет (я так думаю) или от одного аккумулятора 

Такого?

MorAlex
Offline
Зарегистрирован: 12.10.2015

Шутка хорошая! :-)