Страница 10 из 16

Шаговый двигатель на AccelStepper

Добавлено: 23 ноя 2020, 22:25
Ingwar
Davit07 писал(а): 23 ноя 2020, 22:11 Если не ошибаюсь , то предел у ШД 2000об/мин.
При экспериментах легко разгонял шаговик (от 3д принтера) 3000+. Тут решающим будет напряжение питание шаговика. Соответственно и драйвер должен "переваривать" более 30В.

Шаговый двигатель на AccelStepper

Добавлено: 23 ноя 2020, 22:48
Davit07
Ingwar писал(а): 23 ноя 2020, 22:25
Davit07 писал(а): 23 ноя 2020, 22:11 Если не ошибаюсь , то предел у ШД 2000об/мин.
При экспериментах легко разгонял шаговик (от 3д принтера) 3000+. Тут решающим будет напряжение питание шаговика. Соответственно и драйвер должен "переваривать" более 30В.
Есть у меня комплект ШД драйвер блок на 48 или 60 в . Проверю и отпишусь

Шаговый двигатель на AccelStepper

Добавлено: 24 ноя 2020, 08:45
ingener
Вопрос не в возможностях мотора, а в использовании микрошага (деление сигнала) в драйвере. Просто сравните, как работает мотор (лучше с нагрузкой) на одной и той же частоте при делении на 1 и, к примеру, на 8.

Шаговый двигатель на AccelStepper

Добавлено: 25 ноя 2020, 21:03
Davit07
Добрый день. При загрузки одного и того же скетча, с 2 блоками управления ШД с кнопки , МЕГА работает хорошо . Загружаею в Дуе, соответственно с блоками под Дуе , на кнопку реагирует при 2 илр 4 нажатии . В чем может быть ошибка?

Отправлено спустя 3 часа 1 минуту 28 секунд:
Забыл указать самое главное
С блоком меню и LCD d проекте

Отправлено спустя 2 минуты 52 секунды:
ingener писал(а): 24 ноя 2020, 08:45 Вопрос не в возможностях мотора, а в использовании микрошага (деление сигнала) в драйвере. Просто сравните, как работает мотор (лучше с нагрузкой) на одной и той же частоте при делении на 1 и, к примеру, на 8.
У меня есть много разного железа. Укажи более подробно, проведу эксперименты и отвечу на поставленный вопрос, если есть интерес

Шаговый двигатель на AccelStepper

Добавлено: 08 дек 2020, 02:36
Davit07
Доброго дня .
Функция "Защита от зависания " может как то повлиять на работу блока ?

Шаговый двигатель на AccelStepper

Добавлено: 11 дек 2020, 04:11
Davit07
ingener писал(а): 24 ноя 2020, 08:45 Вопрос не в возможностях мотора, а в использовании микрошага (деление сигнала) в драйвере. Просто сравните, как работает мотор (лучше с нагрузкой) на одной и той же частоте при делении на 1 и, к примеру, на 8.
Протестировал несколько видов шд , nema 34, без и с обратной связью . В первом примере , шд без обратной связи, нагрузка плоншайпа Ф360 мм закреплена в ступице на подшибникех , привод ременной , шкивы 1:10. Дробление шага 1/16, 32 000 импульса на оборот , с лёгкостью разогнал до 200 об/мин ( дальше страшно стало ).
Шд с обратной связью: перемещение шпинделя в втулке графитовой капролон. Втулка разрезна и находиться в корпусе похожие на хомут, болты м16 затянуты без сильного усилия . В очнм вес будет не меньше 30 кг ( по моему мнению). Шд работает без проблем до скорости 150 об мин ( выше скорость дать не получилось ) дробление шага от 400 до 40 000 . Приводиться в действие шкивом 1:3 и швп 1604. Бремя отврнмеги драйвер уход в ошибку из- за нагрузки.
Плата DUE

Отправлено спустя 20 минут 47 секунд:
viktorz1 писал(а): 24 сен 2020, 00:24 Подскажите пожалуйста, на этом блоке можно собрать просто крутилку с регулировкой скорости вращения? Хочу собрать станочек свивки провода. Так как диаметр провода будет разный то скорее всего нужно будет подстраивать соотношение скоростей двух моторов (тип Nemo 17). Второе, это плавный старт с начальной скоростью вращения и если всё устраивает то по необходимости увеличение оборотов до номинальной.
Может есть у кого подходящий пример нечто похожего? Был бы очень признателен в помощи.
viktorz1 писал(а): 24 сен 2020, 00:24 Подскажите пожалуйста, на этом блоке можно собрать просто крутилку с регулировкой скорости вращения? Хочу собрать станочек свивки провода. Так как диаметр провода будет разный то скорее всего нужно будет подстраивать соотношение скоростей двух моторов (тип Nemo 17). Второе, это плавный старт с начальной скоростью вращения и если всё устраивает то по необходимости увеличение оборотов до номинальной.
Может есть у кого подходящий пример нечто похожего? Был бы очень признателен в помощи.
Доброго дня .
На днях закончил проект, пример сырой , требуеться подбор оптимальной скорости шд . Завтра выложу, уверен весь проект Вам не подпйдет , возможно частично используете. Работа 2 шд состоит из 2х контролёров , DUE , Nano , управление ШД и меню с передачей переменной UART , Due от блоков I2C висит постоянно , по этой причине было принято решение создать передачу данных между платами

Шаговый двигатель на AccelStepper

Добавлено: 11 дек 2020, 23:02
Davit07
Прошу строго не судить

Шаговый двигатель на AccelStepper

Добавлено: 12 дек 2020, 09:45
ElectronicRTC
Доброго дня всем, возможно не совсем по теме вопрос: а для этого блока используется какая то микросхема или модуль для ардуино есть ?
Хотел понять в железе как реализовать управление для шагового двигателя, да и к тому же разные двигатели бывают: просто 2 обмотки, обмотки со средними точками. Можно ссылочку на модуль

Шаговый двигатель на AccelStepper

Добавлено: 12 дек 2020, 12:47
Davit07
ElectronicRTC писал(а): 12 дек 2020, 09:45 Доброго дня всем, возможно не совсем по теме вопрос: а для этого блока используется какая то микросхема или модуль для ардуино есть ?
Хотел понять в железе как реализовать управление для шагового двигателя, да и к тому же разные двигатели бывают: просто 2 обмотки, обмотки со средними точками. Можно ссылочку на модуль
Доброго дня .
Блок созданный, AlexCrane работает с сигналами Step, Dir. Управляющий сигнал Step отвечает за шаги , Dir направление. Шаговым двигателем управляет драйвер, принимающий эти сигналы. Данный блок может управлять любым двигателем , с помощью драйвера.
Не ленитесь искать в интернете, примеров очень много

Шаговый двигатель на AccelStepper

Добавлено: 16 дек 2020, 09:16
ztekem
День добрый!
при заливке выдаёт такую вот ошибку

#include "user_interface.h";

^

pr7:17:1: error: 'AccelStepper' does not name a type

AccelStepper Stepper01(1, 10, 11); //1 - режим "external driver" (A4988)

^

C:\Users\zteke\AppData\Local\Temp\flprog\pr7\pr7.ino: In function 'void setup()':

pr7:44:1: error: 'Stepper01' was not declared in this scope

Stepper01.setMinPulseWidth(lengthPulse);

^

pr7:44:28: error: 'lengthPulse' was not declared in this scope

Stepper01.setMinPulseWidth(lengthPulse);

^

C:\Users\zteke\AppData\Local\Temp\flprog\pr7\pr7.ino: In function 'void loop()':

pr7:107:2: error: 'Stepper01' was not declared in this scope

Stepper01.setMaxSpeed(MaxSpeed01);

^

pr7:111:2: error: 'Stepper01' was not declared in this scope

Stepper01.setAcceleration(Acceleration01);

^

pr7:117:2: error: 'Stepper01' was not declared in this scope

Stepper01.setSpeed(SpeedContinuous01*(curCCW01 ? -1 : 1));

^

pr7:120:25: error: 'Stepper01' was not declared in this scope

if (SetZeroPosition01) {Stepper01.setCurrentPosition(0); curSpeed01=0; }

^

pr7:125:18: error: 'Stepper01' was not declared in this scope

if (AbsSteps01) {Stepper01.moveTo(Steps01*(curCCW01 ? -1 : 1));}

^

pr7:126:8: error: 'Stepper01' was not declared in this scope

else {Stepper01.move(Steps01*(curCCW01 ? -1 : 1));}

^

pr7:128:19: error: 'Stepper01' was not declared in this scope

if (StopAccel01) {Stepper01.stop();}

^

pr7:131:14: error: 'Stepper01' was not declared in this scope

Position01 = Stepper01.currentPosition();

^

exit status 1
'AccelStepper' does not name a type

Шаговый двигатель на AccelStepper

Добавлено: 16 дек 2020, 09:58
AlexCrane
[ref]ztekem[/ref], установите библиотеку, или из шапки или с сайта автора (есть в описании)

Шаговый двигатель на AccelStepper

Добавлено: 20 дек 2020, 11:11
ztekem
В том и дело что библиотека установлена, и в разделе примеры она появилась с примерами.
Но при заливке вот такое.

Отправлено спустя 7 минут 21 секунду:
extern "C" {
#include "user_interface.h";
}
bool Continuous01;
int SpeedContinuous01;
bool SetZeroPosition01;
bool EnSteps01;
float MaxSpeed01;
float Acceleration01;
int Steps01;
bool CCW01;
bool AbsSteps01;
bool StopAccel01;
bool Ready01;
long Position01;
AccelStepper Stepper01(1, 10, 11); //1 - режим "external driver" (A4988)
int curSpeed01= 0;
int curMaxSpeed01= 0;
int curAcceleration01= 0;
bool curCCW01=false;
bool EnSteps01temp= false;
int _gtv1;
bool _bounseInputD2S = 0;
bool _bounseInputD2O = 0;
unsigned long _bounseInputD2P = 0UL;
bool _bounseInputD14S = 0;
bool _bounseInputD14O = 0;
unsigned long _bounseInputD14P = 0UL;
bool _changeNumber1_Out = 0;
int _changeNumber1_OLV;
bool _count1I = 0;
bool _count1_SCST = 0;
int _count1_Value = 0;

void setup()
{
pinMode(14, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);


_bounseInputD2O = digitalRead(2);
_bounseInputD14O = digitalRead(14);
Stepper01.setMinPulseWidth(lengthPulse);

}
void loop()
{

int _tempVariable_int;

bool _bounceInputTmpD2 = (digitalRead (2));

if (_bounseInputD2S)
{
if (millis() >= (_bounseInputD2P + 40))
{_bounseInputD2O= _bounceInputTmpD2; _bounseInputD2S=0;}
}
else
{
if (_bounceInputTmpD2 != _bounseInputD2O )
{_bounseInputD2S=1; _bounseInputD2P = millis();}
}
bool _bounceInputTmpD14 = (digitalRead (14));

if (_bounseInputD14S)
{
if (millis() >= (_bounseInputD14P + 40))
{_bounseInputD14O= _bounceInputTmpD14; _bounseInputD14S=0;}
}
else
{
if (_bounceInputTmpD14 != _bounseInputD14O )
{_bounseInputD14S=1; _bounseInputD14P = millis();}
}




//Плата:1
if (!(_bounseInputD14O)){
if ( ! _count1I) {
_count1I = 1;
_count1_Value = _count1_Value + 1;
}} else {
_count1I = 0;}
if (_bounseInputD2O){
if ( ! _count1_SCST) {
_count1_SCST = 1;
_count1_Value = _count1_Value - 1;
}} else {
_count1_SCST = 0;}
if (_changeNumber1_Out) {_changeNumber1_Out = 0;} else {_tempVariable_int = _count1_Value;
if (_tempVariable_int != _changeNumber1_OLV) {_changeNumber1_OLV = _tempVariable_int; _changeNumber1_Out = 1;}
}
Continuous01 = 0;
SpeedContinuous01 = 0;
SetZeroPosition01 = 0;
EnSteps01 = _changeNumber1_Out;
MaxSpeed01 = 800.00;
Acceleration01 = 400.00;
Steps01 = (_count1_Value)*(500);
CCW01 = (_count1_Value) > (_gtv1);
AbsSteps01 = 0;
StopAccel01 = 0;
if (curMaxSpeed01 != MaxSpeed01) {
Stepper01.setMaxSpeed(MaxSpeed01);
curMaxSpeed01 = MaxSpeed01;}

if (curAcceleration01 != Acceleration01) {
Stepper01.setAcceleration(Acceleration01);
curAcceleration01 = Acceleration01;}

if (curCCW01 != CCW01) {curCCW01 = CCW01;}

if (curSpeed01 != SpeedContinuous01) {
Stepper01.setSpeed(SpeedContinuous01*(curCCW01 ? -1 : 1));
curSpeed01 = SpeedContinuous01;}

if (SetZeroPosition01) {Stepper01.setCurrentPosition(0); curSpeed01=0; }
if (Continuous01) { curSpeed01=0;}
else{
if (EnSteps01) {

if (AbsSteps01) {Stepper01.moveTo(Steps01*(curCCW01 ? -1 : 1));}
else {Stepper01.move(Steps01*(curCCW01 ? -1 : 1));}
}
if (StopAccel01) {Stepper01.stop();}
}

Position01 = Stepper01.currentPosition();

_gtv1 = Position01;






}

bool _isTimer(unsigned long startTime, unsigned long period )
{
unsigned long currentTime;
currentTime = millis();
if (currentTime>= startTime) {return (currentTime>=(startTime + period));} else {return (currentTime >=(4294967295-startTime+period));}
}

Ругается на эту строчку. в коде нет обычного подключения библиотеки вида
#include "AccelStepper";
так и должно быть?

Шаговый двигатель на AccelStepper

Добавлено: 20 дек 2020, 22:31
AlexCrane
[ref]ztekem[/ref], Добавь блок ШД Основной

Шаговый двигатель на AccelStepper

Добавлено: 25 дек 2020, 03:01
Davit07
Доброго дня .
Хочу всех поздравить с Рождеством и наступающем Новым годом

Создалась потребность в управление шаговиком с помощью энкодера . Как можно использовать данный энкодер с блоком ШД?

Шаговый двигатель на AccelStepper

Добавлено: 27 дек 2020, 07:40
Di123
как к блоку подключить шд 28byj-48 ?
там тока 2 пина и то не понятно на какой провод подключать
2020-12-27_113639.png

Шаговый двигатель на AccelStepper

Добавлено: 27 дек 2020, 15:54
AlexCrane
[ref]Di123[/ref], Использовать блоки ШД1_v1.3_UNI и ШД основной для 1х ШД v1.3

Шаговый двигатель на AccelStepper

Добавлено: 02 янв 2021, 09:58
ztekem
Спасибо что помогаете, но теперь вот такое
теперь ругается на
ПРЕДУПРЕЖДЕНИЕ: библиотека TimerOne должна запускаться на архитектурах avr и может быть несовместима с вашей платой на архитектуре esp8266.
C:\Users\zteke\AppData\Local\Temp\flprog\pr2\pr2.ino:7:28: warning: extra tokens at end of #include directive [enabled by default]

#include "user_interface.h";

^

C:\Users\zteke\AppData\Local\Temp\flprog\pr2\pr2.ino: In function 'void setup()':

pr2:51:8: error: 'class TimerOne' has no member named 'initialize'

Timer1.initialize( 100 ); // инициализация таймера 1,

^

pr2:52:8: error: 'class TimerOne' has no member named 'attachInterrupt'

Timer1.attachInterrupt ( timerInterrupt, 100 ); // задаем обработчик прерываний

^

Несколько библиотек найдено для "AccelStepper.h"
Используется: c:\Program
Не используется: c:\Program
exit status 1
'class TimerOne' has no member named 'initialize'

проверил начие дублей, нет нигде. почему ругается не пойму.

Шаговый двигатель на AccelStepper

Добавлено: 02 янв 2021, 14:32
AlexCrane
[ref]ztekem[/ref], Для esp8266 вот такой попробуй без основного

Шаговый двигатель на AccelStepper

Добавлено: 24 янв 2021, 09:45
Vadimbol
Добрый день. Спасибо за блок. Не могли бы Вы подсказать в чем может быть проблема - при использовании 6 шаговых моторов происходит полный ужас, моторы начинают прыгать и пропускать шаги. Но если использовать 3 ШД то все плавно и без пропусков. Плата MEGA питание 24 вольта, 10 ампер. Межет быть проблема с библиотекой TIMERONE ? с прерыванием? Или только на каких-то определенных выводах нужно работать ? Я подключил на следующие STEP - 44,45,46,6,7,8 и DIR- 26,27,28,29,30,31.

Шаговый двигатель на AccelStepper

Добавлено: 12 фев 2021, 01:25
Wadim77
Ребята, доброго времени суток. Помогите пожалуйста! Не могу сообразить ((( Нужна блок-схема основанная на данной теме (Шаговый двигатель на AccelStepper). суть очень простая - при запуске шаговик крутит назад (лево) пока не упрется в концевой датчик. ЗАмыкается контакт концевика и Устанавливается как нулевая позиция. Затем количество оборотов от нулевой точки меняться относительно значений со входа с потенциометра. Большое спасибо! Буду примного признателек если выложите здесь такой блок-программу. МИР.