Помогите с Nema 17

Vadok
Offline
Зарегистрирован: 05.02.2017

Здравствуйте. Молю о помощи, неделю сижу в интернете перепробовал все что мог, не могу разобраться.
Использую драйвер L298N и ШД Nema 17. Нужен скетч на 10 оборотов в минуту, просто 10 оборотов в минуту и все!!!

Спасибо всем неравнодушным.

Vadok
Offline
Зарегистрирован: 05.02.2017

Загружал простой скетч из библиотеки 60 оборотов на 200 шагов, все работает отлично меняю значение 60 на 10, обороты уменьшаются но при этом двигатель потребляет запредельный ток...

sadman41
Offline
Зарегистрирован: 19.10.2016

Vadok пишет:

Загружал простой скетч из библиотеки 60 оборотов на 200 шагов, все работает отлично меня. значение 60 на 10, обороты уменьшаются но при этом двигатель потребляет запредельный ток...

Если работает, то в чем проблема? Хотели уменьшить - уменьшилось.

Vadok
Offline
Зарегистрирован: 05.02.2017

В таком режиме ток больше 3 ампер, такого явно быть не должно...

Это без нагрузки в холостом режиме.

sadman41
Offline
Зарегистрирован: 19.10.2016

Vadok пишет:

В таком режиме ток больше 3 ампер, такого явно быть не должно...

Кто вам это сказал? L298N не ограничивает ток. Это как водопроводная труба без вентиля - оттуда или прёт на полную катушку или не прет. 

Вы выбрали неправильный драйвер, вот и всё. 

Vadok
Offline
Зарегистрирован: 05.02.2017

Я думал что Ардуино управляет с помощью ШИМ сигнала и за счет изменения частоты меняются обороты, ведь на большой скорости, где-то 300 оборотов ток падает до 0,5 А

sadman41
Offline
Зарегистрирован: 19.10.2016

Как это расходится с тем, что я написал?

Vadok
Offline
Зарегистрирован: 05.02.2017

А если взять другой драйвер, то к нему и скетч другой нужен?

sadman41
Offline
Зарегистрирован: 19.10.2016

Я же не знаю, какой ваш. Может там достаточно поменять в конструкторе параметры.

Vadok
Offline
Зарегистрирован: 05.02.2017
#include <Stepper.h>

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(60);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}

Вот здесь меняю 60 на 10 обороты падают но он явно ведет себя как то не так, видел видео с драйверами L298N все работало нормально на малых оборотах, а программу найти не могу, может подскажите что то???

sadman41
Offline
Зарегистрирован: 19.10.2016

Вот вам в картинках (даже на пикабу): https://pikabu.ru/story/arduino_i_shagovyiy_dvigatel_nema_17__yunioram_4302854

Hint: Stepper.h не работает со STEP/DIR драйверами.

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

sadman41 пишет:
Вот вам в картинках (даже на пикабу):
Мне понравилась фраза "Используйте библиотеку AccelStepper вместо голого кода Ардуино". Видимо, AccelStepper - "одетый код ардуино".

sadman41
Offline
Зарегистрирован: 19.10.2016

Так у gcc есть же какой-то атрибут 'naked', вроде. Так что кто не 'naked', тот вполне себе может оказаться 'dressed'...

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

Vadok пишет:

, а программу найти не могу, может подскажите что то???

я бы вам порекомендовал отказаться от библиотеки, разобраться как работают ШД и самому посылать команды на обмотки, там сложного ничего нет, сам с этого начинал.

вот кусок кода (чуть правда переделанный) из библиотеки - проще некуда:

#define l298n_in1_pin A1 // A+ red
#define l298n_in2_pin A2 // A- green
#define l298n_in3_pin A3 // B+ yellow
#define l298n_in4_pin 13 // B- black

byte driver_current_step = 0;

void addMove() {
  if ((++driver_current_step) > 3) driver_current_step = 0;
  setDriverStep(driver_current_step);
}

void decMove() {
  if (driver_current_step == 0) driver_current_step = 3; else --driver_current_step;
  setDriverStep(driver_current_step);
}

void setDriverStep(byte drvStep) {
  switch (drvStep) {
    case 0: { // 1010
        digitalWrite(l298n_in1_pin, HIGH);
        digitalWrite(l298n_in2_pin, LOW);
        digitalWrite(l298n_in3_pin, HIGH);
        digitalWrite(l298n_in4_pin, LOW);
        break;
      }
    case 1: { // 0110
        digitalWrite(l298n_in1_pin, LOW);
        digitalWrite(l298n_in2_pin, HIGH);
        digitalWrite(l298n_in3_pin, HIGH);
        digitalWrite(l298n_in4_pin, LOW);
        break;
      }
    case 2: { // 0101
        digitalWrite(l298n_in1_pin, LOW);
        digitalWrite(l298n_in2_pin, HIGH);
        digitalWrite(l298n_in3_pin, LOW);
        digitalWrite(l298n_in4_pin, HIGH);
        break;
      }
    case 3: { // 1001
        digitalWrite(l298n_in1_pin, HIGH);
        digitalWrite(l298n_in2_pin, LOW);
        digitalWrite(l298n_in3_pin, LOW);
        digitalWrite(l298n_in4_pin, HIGH);
        break;
      }
    default: {
      }
  }
}

 

sadman41
Offline
Зарегистрирован: 19.10.2016

andycat пишет:

я бы вам порекомендовал отказаться от библиотеки, разобраться как работают ШД и самому посылать команды на обмотки, там сложного ничего нет, сам с этого начинал.

Только драйвер как хреначил в мотор ток, так и будет... У него драйвер вдувает всё, что есть, в мотор и по току не контролирует ничего. Перегрев, дигродация и вот это всё.

Vadok
Offline
Зарегистрирован: 05.02.2017

Спасибо за информацию заказал А4988, завтра поеду забирать, буду экспериментировать, надеюсь получится.

 

Vadok
Offline
Зарегистрирован: 05.02.2017

Спасибо всем не равнодушным за полезную информацию!

 

 

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Не забывайте про резистор на драйвере - он регулирует максимальный уровень тока, который будет подаваться в обмотки.

Vadok
Offline
Зарегистрирован: 05.02.2017

Уже просматриваю видео по регулировке)

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

sadman41 пишет:

andycat пишет:

я бы вам порекомендовал отказаться от библиотеки, разобраться как работают ШД и самому посылать команды на обмотки, там сложного ничего нет, сам с этого начинал.

Только драйвер как хреначил в мотор ток, так и будет... У него драйвер вдувает всё, что есть, в мотор и по току не контролирует ничего. Перегрев, дигродация и вот это всё.

просьба уточнить: если я рассчитал и поставил на каждую обмотку токоограничивающий резистор согласно даташита на двигатель - этого же достаточно для драйвера L298N для корректной работы?

P.S. Во всяком случае перегрева двигателя и драйвера не наблюдается на различных режимах работы, сила у двигателя тоже есть - рукой остановить держась за ось практически невозможно.

sadman41
Offline
Зарегистрирован: 19.10.2016

andycat пишет:

просьба уточнить: если я рассчитал и поставил на каждую обмотку токоограничивающий резистор согласно даташита на двигатель - этого же достаточно для драйвера L298N для корректной работы?

Нет, ну это пожалуйста, конечно, только зачем воздух греть, если есть прекрасный step/dir драйвер, который сыканомит денежки за электричество, позволит без перерасчета резисторов манипулировать напругой, даст сделать микрошаг и займет всего два выхода? К тому же не легко заменяется на TB6600 для наращивания мощи работающей системы...

andycat
andycat аватар
Offline
Зарегистрирован: 07.09.2017

sadman41 пишет:

Нет, ну это пожалуйста, конечно, только зачем воздух греть,

Тупо для экспериментов взял :) с ним интереснее :)

Ок, спасибо.