Как узнать кол-во шагов у шагового двигателя?

SDL2000
Offline
Зарегистрирован: 18.02.2013

Есть двигатель, на 12В, 4-е вывода, 2 обмотки, по 25Ом

Вот накидал на основе примера простенький скет, им и экспериментировал

Подключаю через плату на L298N, питание подаю от аккума на 12В

Но толком ничего от движка добиться не могу. Или вращается быстро, но никакого момента, или дергается.

И сильно греется.

Вопрос. Можно как-то узнать кол-во шагов, на которое он расчитан?

#include <Stepper.h>


#define STEPS 64

Stepper stepper(STEPS, 8, 9, 10, 11);


int previous = 0;

int analogPin = 7;     // номер порта к которому подключен потенциометр
int val2 = 1010;           // переменная для хранения считываемого значения
 
 
void setup()
{
  // set the speed of the motor to 30 RPMs
  stepper.setSpeed(28);
}

void loop()
{

    if (val2 > 1000)
    {
  int val = 5;

  stepper.step(val);
  val2 = val2 - 1;
    }

}

 

maksim
Offline
Зарегистрирован: 12.02.2012

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

vvadim
Offline
Зарегистрирован: 23.05.2012

Ну и проверьте правильность подключения драйвера и диоды не забудьте поставить.

SDL2000
Offline
Зарегистрирован: 18.02.2013

На самом движке ничего не написано. Вернее мне он достался без крышечки. На ней наверное шильдик был.

Драйвер уже по всякому включал.

На библиотеку AccelStepper только сегодня наткнулся. Попробовал с ее примерами позапускать. Крутиться, скорость меняется.

Но тяги почему-то нет.

"что бы не заниматься считанием шагов" - поясните плиз, что Вы имеете ввиду?

Я только начинаю изучать Ардуино. Не пинайте сильно за глупые вопросы :)

maksim
Offline
Зарегистрирован: 12.02.2012

Что бы нормально работала библиотека Stepper нужно указывать количество шагов на оборот - Stepper stepper(STEPS, 8, 9, 10, 11); в случае с AccelStepper ничего не нужно. А тяги нет из-за того что при 12В и 250Ом ток составляет всего 50мА. 

SDL2000
Offline
Зарегистрирован: 18.02.2013

Не 250, а 25 Ом....

Поизучаю завтра  AccelStepper

maksim
Offline
Зарегистрирован: 12.02.2012

Да ошибся. Получается 480мА в принципе тяга должна быть нормальная.

SDL2000
Offline
Зарегистрирован: 18.02.2013

Все равно чего-то с этим движком не получается.

Ради интереса подключил шаговик от флоппика - все ок. Пальцами вал с трудом удерживаю.

Двигатель вот такой. Обмотки - крест-накрест звоняться.

Экспериментировал вот с этим скетчем. Пробовал и HALF и FULL

#include <AccelStepper.h>

//AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5
AccelStepper stepper(AccelStepper::HALF4WIRE, 2, 3, 4, 5);

void setup()
{  

   stepper.setMaxSpeed(200);
//   stepper.setSpeed(50);
//  stepper.setMinPulseWidth(10);
//  stepper.moveTo(50);	

}

void loop()
{  

stepper.moveTo(200);	
stepper.setSpeed(5);
stepper.runSpeedToPosition();

}

 

vvadim
Offline
Зарегистрирован: 23.05.2012

Купите нормальный шаговый двигатель и  осваивайте его.  А сейчас вы мучаетесь с неизвестным мотором и толку от этого не будет.

SDL2000
Offline
Зарегистрирован: 18.02.2013

Спасибо за совет. Но... Если бы так все просто было.

Это двигатель от подъемного механизма монитора от авто (БМВ Х3).

Делаю CarPC.  Другой двигатель туда очень проблематично приспособить. Место ограничено. Крепление. Шестерни..

На нем вобще стояла своя небольшая плата управления. Управлялась по SPI интерфейсу.

Но ее оживить не удалось. Может ума конечно не хватило

maksim
Offline
Зарегистрирован: 12.02.2012

А почему вы указали HALF4WIRE если у вас двигатель без центральных отводов? Так проинициализируйте:

AccelStepper stepper(2, 3, 4, 5);

 

SDL2000
Offline
Зарегистрирован: 18.02.2013

Инициализировал вот так: 

AccelStepper stepper;

А HALF - уже просто для опытов пробовал

maksim
Offline
Зарегистрирован: 12.02.2012

Так может этот двигатель так и должен работать и должно у него быть сильной тяги...

SDL2000
Offline
Зарегистрирован: 18.02.2013

Должна. Иначе как он монитор-то поднимет? Счас еще гляну про микростеп.

vvadim
Offline
Зарегистрирован: 23.05.2012

SDL2000 пишет:

Инициализировал вот так: 

AccelStepper stepper;

 

 

Так можно инициировать только если у вас используются те же пины, чтот указаны в библиотеке AccelStepper.

 

SDL2000
Offline
Зарегистрирован: 18.02.2013

Ну естественно те же самые :)

Вобщем заказал Adafruit Motor/Stepper/Servo Shield. Буду пробовать с ним

 

Еще вопросик. Подаю на одну обмотку 12 В. По идее, это будет "удержание".

Вал дергается, занимает определенную позицию - и почти без усилий его поворачиваю. Назад не возвращается.

Делаю такой же опыт с движком от флоппика - пальцем не могу провернуть. 

Двигатель от флопика почти в три раза меньше...

Что бы это значило?

maksim
Offline
Зарегистрирован: 12.02.2012

Значит все как я вам выше написал - так и должен работать.

SDL2000
Offline
Зарегистрирован: 18.02.2013

Угу. Только шестерня привода, даже без монитора, не двигается с места.

maksim
Offline
Зарегистрирован: 12.02.2012

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

SDL2000
Offline
Зарегистрирован: 18.02.2013

Да вот сейчас собрал все. Только без монитора. Не едет. Посмотрел осцилом картинку на выводах обмоток

Она такая и должна быть? Т.е. фазы накладываются одна на другую?

Скетч из 7-го сообщения, только FULL4WIRE, ну и со скоростью играл, не помню уже, что ставил

ales2k
Offline
Зарегистрирован: 25.02.2013

А вы уверены что это шаговый двигатель? Мне он издали напоминает двигатель переменного тока...

 

SDL2000
Offline
Зарегистрирован: 18.02.2013

На плате, что стояла на двигателе драйвер L9935 

Да и 4-ре вывода - как-то слабо с переменником сочетаются. И как с помощью двигателя переменного тока, можно управлять позицией монитора? Он не только открывался, но и под разными углами мог устанавливаться

ales2k
Offline
Зарегистрирован: 25.02.2013

Тогда да - видимо шаговый. L9935 именно для биполярников помоему.

SDL2000
Offline
Зарегистрирован: 18.02.2013

Так видно же, что биполярный. 4 вывода, две обмотки. Но вот как он гад управляется...

Не думал, что с ним такие сложности возникнут

Да. Что еще заметил. Если его долго мучать, он нагревается, и.... У него растет момент! 

Думал даже, что L298N вышибло. Но покупал сразу две платки. Подкинул вторую - такая же картина

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

maksim
Offline
Зарегистрирован: 12.02.2012

Вы местами провода ("полюсацию") каждой из обмоток пробовали менять? Все комбинации перепробовали?

maksim
Offline
Зарегистрирован: 12.02.2012

И попробуйте вот такой пример

#include <AccelStepper.h>

// Define a stepper and the pins it will use
AccelStepper stepper; // Defaults to AccelStepper::FULL4WIRE (4 pins) on 2, 3, 4, 5

void setup()
{  
    stepper.setMaxSpeed(200.0);
    stepper.setAcceleration(100.0);
}

void loop()
{    
    stepper.runToNewPosition(0);
    stepper.runToNewPosition(1000);
}

 

SDL2000
Offline
Зарегистрирован: 18.02.2013

Да, с проводами - баловался по всякому.

За пример - спасибо. Завтра попробую

SDL2000
Offline
Зарегистрирован: 18.02.2013

Спасибо огромное за пример! Он помог найти проблему. Она оказалась банальнейшей. Даже стыдно писать, в чем проблема.

Но факт.

Вал двигателя прокручивается относительно коллектора. Т.е. его сорвало внутри.

Сколько крутил - не чуствовал, что он внутри вертиться.

От нагрева - видимо подклинивал - и момент увеличивался (как я писал выше)

Теперь вот надо придумать как его закрепить.

P.S. Стукнул легонько сверху по валу вроде как зацепился - теперь пальцами не удержать.

Спасибо всем за участие

Shura_666
Offline
Зарегистрирован: 22.05.2013

SDL2000 как с Вами связаться? Вопрос как раз по монитору Х3. Про тот же самый двигатель.

SDL2000
Offline
Зарегистрирован: 18.02.2013

Пишите на e-mail

nik_mil собака mail.ru