Arduino AccelStepper

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Arduino AccelStepper

Сообщение selenur »

sidor094 писал(а):По моему это для окружностей и дуг
На самом деле алгоритм очень универсален, и можно просчитывать не только, движение по дугам, или по прямой, в 2-х,3-х,4 и более осях для станка, но и для вычисления ускорения, при генерации step, и для кучи других задач, там список получается не маленький.....
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Morroc
Мастер
Сообщения: 202
Зарегистрирован: 22 ноя 2015, 03:17
Репутация: 22
Настоящее имя: Александр
Контактная информация:

Re: Arduino AccelStepper

Сообщение Morroc »

Tomasina писал(а):в тему целочисленной арифметики - какого ляда разработчики AccelStepper используют данные размерностью float, ведь операции с ними на порядок медленнее. Где там могут возникать дробные числа, если оперируем целыми шагами, а на 1/8 или 1/16 делит сам драйвер?
Думаю задачи сделать офигенно быстро и плавно автор перед собой и не ставил, зато ее используют в аналогах ардуин на других мк и она работает.
Да вот взять хотя бы обновление данных на выходах, тот же float только в профиль.

Код: Выделить всё

for (i = 0; i < numpins; i++)
digitalWrite(_pin[i], (mask & (1 << i)) ? (HIGH ^ _pinInverted[i]) : (LOW ^ _pinInverted[i]));
Зато можно взять какую нибудь teensy 3.1(2) запустить там тот же скетч (с хорошей вероятностью вообще без переделок) и поиметь x5-x7 в скорости нахаляву :D
За плавность и параллельность с другими задачами может быть и имеет смысл пободаться с ней, а если скорость нужна и не нужна совместимость с другими дуинами - лучше поискать что то другое или свою писать.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino AccelStepper

Сообщение grakun »

selenur писал(а):но и для вычисления ускорения
Алгоритм мне очень понравился, кстати по Вашей рекомендации я его и делал, правда только для прямой.
Про ускорение не совсем понял, что имеете ввиду?
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Arduino AccelStepper

Сообщение sidor094 »

grakun писал(а):Алгоритм мне очень понравился, кстати по Вашей рекомендации я его и делал, правда только для прямой.
А как это?Для прямой?
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino AccelStepper

Сообщение grakun »

sidor094 писал(а):А как это?Для прямой?
Извиняюсь не прямой, вектора. Для окружности и вектора, есть различия. Делал только для вектора, постпроцессор(в арткаме) выдает окружность и дуги в в виде векторов, попробовал понравилось, на этом остановился.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Arduino AccelStepper

Сообщение sidor094 »

Алгоритм Брезенхэма не позволяет разбить окружность на равные сектора .Из-за этого становится невозможным рассчитать движение с равномерным подъёмом по оси z.А так-же построение равномерно увеличивающегося радиуса.Поэтому не смотря на простоту и высокую точность построения дуг, отказался от этого алгоритма .
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Arduino AccelStepper

Сообщение selenur »

grakun писал(а):
selenur писал(а):но и для вычисления ускорения
Алгоритм мне очень понравился, кстати по Вашей рекомендации я его и делал, правда только для прямой.
Про ускорение не совсем понял, что имеете ввиду?
Представь что в алгоритме ты вычисляешь не X и Y, а X и длительность между импульсами
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino AccelStepper

Сообщение grakun »

sidor094 писал(а):Алгоритм Брезенхэма не позволяет разбить окружность
Не разбирался с этим, не знаю. Пока цель, сделать что то очень бюджетное, меня он устраивает.
Аватара пользователя
grakun
Мастер
Сообщения: 273
Зарегистрирован: 30 сен 2015, 02:47
Репутация: 53
Настоящее имя: Гракун
Откуда: г.Саратов
Контактная информация:

Re: Arduino AccelStepper

Сообщение grakun »

selenur писал(а):Представь что в алгоритме ты вычисляешь не X и Y, а X и длительность между импульсами
Понятно, я это делаю по другому.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Arduino AccelStepper

Сообщение selenur »

grakun писал(а):
sidor094 писал(а):Алгоритм Брезенхэма не позволяет разбить окружность
Не разбирался с этим, не знаю. Пока цель, сделать что то очень бюджетное, меня он устраивает.
Алгоритм брезенхема для окружности, имеет один нюанс, он позволяет просчитать дугу равную 1/8 окружности,или если смотреть от центра круга то участок круга в 45 градусов.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1422
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 328
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

Re: Arduino AccelStepper

Сообщение evgenymcp »

Кто-нибудь использует эту библиотеку? Столкнулся с тем, что на этой библиотеке невозможно получить нормальный сигнал STEP. Хочу собрать антенный ротатор проекта Satnogs. Использую червячный редуктор с редукцией 1:233. Без проблем могу крутить им из GRBL со скоростью 1 оборот за 30сек. Заливаю скетч из проекта и не могу добиться скорости от ШД. Перестает реагировать на переменную #define MAX_SPEED после какого-то небольшого значения. ШД сильно шумит . Мне нужно получить около 500об/мин на 8 микрошаге для этого по моим подсчетам мне нужен сигнал STEP 13333им/сек (200*8*500)/60
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1422
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 328
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

Re: Arduino AccelStepper

Сообщение evgenymcp »

Нашел ответ внутри AccelStepper.h
Похоже 4кГц предел для этой библиотеки :problem:

Код: Выделить всё

/ \par Performance
/// The fastest motor speed that can be reliably supported is about 4000 steps per
/// second at a clock frequency of 16 MHz on Arduino such as Uno etc. 
/// Faster processors can support faster stepping speeds. 
/// However, any speed less than that
/// down to very slow speeds (much less than one per second) are also supported,
/// provided the run() function is called frequently enough to step the motor
/// whenever required for the speed set.
/// Calling setAcceleration() is expensive,
/// since it requires a square root to be calculated.
///
/// Gregor Christandl reports that with an Arduino Due and a simple test program, 
/// he measured 43163 steps per second using runSpeed(), 
/// and 16214 steps per second using run();
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Arduino AccelStepper

Сообщение nkp »

evgenymcp писал(а): для этой библиотеки
если у тебя такая же частота процессора
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1422
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 328
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

Re: Arduino AccelStepper

Сообщение evgenymcp »

nkp писал(а):если у тебя такая же частота процессора
Да выбор не велик. 8 и 16Mhz :-) Тот же GRBL переварил эту частоту без проблем.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Arduino AccelStepper

Сообщение MX_Master »

на STM'ах GRBL тоже работает :)
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1422
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 328
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

Re: Arduino AccelStepper

Сообщение evgenymcp »

MX_Master писал(а):на STM'ах GRBL тоже работает :)
Проблема в том, что мне нужен не GRBL а другая прошивка, которая как выяснилось не умеет. Выход или использовать шаг, 1/2 шага либо редукцию снижать. Вопрос, чем отличается на драйвере полушаг 2/a от 2/b?
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Arduino AccelStepper

Сообщение selenur »

evgenymcp писал(а):чем отличается на драйвере полушаг 2/a от 2/b?
А откуда у тебя информация о таком полушаге с буквами?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
evgenymcp
Мастер
Сообщения: 1422
Зарегистрирован: 23 апр 2017, 05:37
Репутация: 328
Настоящее имя: Евгений
Откуда: Абакан,Хакасия
Контактная информация:

Re: Arduino AccelStepper

Сообщение evgenymcp »

selenur писал(а):
evgenymcp писал(а):чем отличается на драйвере полушаг 2/a от 2/b?
А откуда у тебя информация о таком полушаге с буквами?
На tb6600 таблица микрошага.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Arduino AccelStepper

Сообщение Сергей Саныч »

evgenymcp писал(а):чем отличается на драйвере полушаг 2/a от 2/b?
В режиме B в промежуточных положениях через обе обмотки течет полный ток, а в режиме A - 71% от полного. Это способствует выравниванию момента удержания во всех положениях ротора. В современных драйверах используется только режим A.
Чудес не бывает. Бывают фокусы.
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: Arduino AccelStepper

Сообщение vmarkiv »

Ответить

Вернуться в «LinuxCNC»