На самом деле алгоритм очень универсален, и можно просчитывать не только, движение по дугам, или по прямой, в 2-х,3-х,4 и более осях для станка, но и для вычисления ускорения, при генерации step, и для кучи других задач, там список получается не маленький.....sidor094 писал(а):По моему это для окружностей и дуг
Arduino AccelStepper
- selenur
- Почётный участник

- Сообщения: 4605
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1622
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Arduino AccelStepper
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
-
Morroc
- Мастер
- Сообщения: 202
- Зарегистрирован: 22 ноя 2015, 03:17
- Репутация: 22
- Настоящее имя: Александр
- Контактная информация:
Re: Arduino AccelStepper
Думаю задачи сделать офигенно быстро и плавно автор перед собой и не ставил, зато ее используют в аналогах ардуин на других мк и она работает.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]));
За плавность и параллельность с другими задачами может быть и имеет смысл пободаться с ней, а если скорость нужна и не нужна совместимость с другими дуинами - лучше поискать что то другое или свою писать.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: Arduino AccelStepper
Алгоритм мне очень понравился, кстати по Вашей рекомендации я его и делал, правда только для прямой.selenur писал(а):но и для вычисления ускорения
Про ускорение не совсем понял, что имеете ввиду?
-
sidor094
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Arduino AccelStepper
А как это?Для прямой?grakun писал(а):Алгоритм мне очень понравился, кстати по Вашей рекомендации я его и делал, правда только для прямой.
- grakun
- Мастер
- Сообщения: 273
- Зарегистрирован: 30 сен 2015, 02:47
- Репутация: 53
- Настоящее имя: Гракун
- Откуда: г.Саратов
- Контактная информация:
Re: Arduino AccelStepper
Извиняюсь не прямой, вектора. Для окружности и вектора, есть различия. Делал только для вектора, постпроцессор(в арткаме) выдает окружность и дуги в в виде векторов, попробовал понравилось, на этом остановился.sidor094 писал(а):А как это?Для прямой?
-
sidor094
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Arduino AccelStepper
Алгоритм Брезенхэма не позволяет разбить окружность на равные сектора .Из-за этого становится невозможным рассчитать движение с равномерным подъёмом по оси z.А так-же построение равномерно увеличивающегося радиуса.Поэтому не смотря на простоту и высокую точность построения дуг, отказался от этого алгоритма .
- selenur
- Почётный участник

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

- Сообщения: 4605
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1622
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Arduino AccelStepper
Алгоритм брезенхема для окружности, имеет один нюанс, он позволяет просчитать дугу равную 1/8 окружности,или если смотреть от центра круга то участок круга в 45 градусов.grakun писал(а):Не разбирался с этим, не знаю. Пока цель, сделать что то очень бюджетное, меня он устраивает.sidor094 писал(а):Алгоритм Брезенхэма не позволяет разбить окружность
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- evgenymcp
- Мастер
- Сообщения: 1422
- Зарегистрирован: 23 апр 2017, 05:37
- Репутация: 328
- Настоящее имя: Евгений
- Откуда: Абакан,Хакасия
- Контактная информация:
Re: Arduino AccelStepper
Кто-нибудь использует эту библиотеку? Столкнулся с тем, что на этой библиотеке невозможно получить нормальный сигнал 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
Нашел ответ внутри AccelStepper.h
Похоже 4кГц предел для этой библиотеки
Похоже 4кГц предел для этой библиотеки
Код: Выделить всё
/ \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
если у тебя такая же частота процессораevgenymcp писал(а): для этой библиотеки
- evgenymcp
- Мастер
- Сообщения: 1422
- Зарегистрирован: 23 апр 2017, 05:37
- Репутация: 328
- Настоящее имя: Евгений
- Откуда: Абакан,Хакасия
- Контактная информация:
Re: Arduino AccelStepper
Да выбор не велик. 8 и 16Mhznkp писал(а):если у тебя такая же частота процессора
- MX_Master
- Мастер
- Сообщения: 7488
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3113
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Arduino AccelStepper
на STM'ах GRBL тоже работает 
- evgenymcp
- Мастер
- Сообщения: 1422
- Зарегистрирован: 23 апр 2017, 05:37
- Репутация: 328
- Настоящее имя: Евгений
- Откуда: Абакан,Хакасия
- Контактная информация:
Re: Arduino AccelStepper
Проблема в том, что мне нужен не GRBL а другая прошивка, которая как выяснилось не умеет. Выход или использовать шаг, 1/2 шага либо редукцию снижать. Вопрос, чем отличается на драйвере полушаг 2/a от 2/b?MX_Master писал(а):на STM'ах GRBL тоже работает
- selenur
- Почётный участник

- Сообщения: 4605
- Зарегистрирован: 21 авг 2013, 19:44
- Репутация: 1622
- Настоящее имя: Сергей
- Откуда: Новый Уренгой
- Контактная информация:
Re: Arduino AccelStepper
А откуда у тебя информация о таком полушаге с буквами?evgenymcp писал(а):чем отличается на драйвере полушаг 2/a от 2/b?
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
- evgenymcp
- Мастер
- Сообщения: 1422
- Зарегистрирован: 23 апр 2017, 05:37
- Репутация: 328
- Настоящее имя: Евгений
- Откуда: Абакан,Хакасия
- Контактная информация:
Re: Arduino AccelStepper
На tb6600 таблица микрошага.selenur писал(а):А откуда у тебя информация о таком полушаге с буквами?evgenymcp писал(а):чем отличается на драйвере полушаг 2/a от 2/b?
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Arduino AccelStepper
В режиме B в промежуточных положениях через обе обмотки течет полный ток, а в режиме A - 71% от полного. Это способствует выравниванию момента удержания во всех положениях ротора. В современных драйверах используется только режим A.evgenymcp писал(а):чем отличается на драйвере полушаг 2/a от 2/b?
Чудес не бывает. Бывают фокусы.