Шаговый генератор на STM32 (STEP/DIR/ENBL)

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

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

Все исходники здесь - закрыты, автор наелся этим open-source до полного отвращения
Последний раз редактировалось MX_Master 07 апр 2020, 10:18, всего редактировалось 4 раза.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

На данный момент идут тесты и доработка библиотеки аппаратного вывода шагов
http://www.cnc-club.ru/forum/viewtopic. ... 40#p373636
https://github.com/MX-Master/stm32-step ... tree/TEST1
2017-07-30_114522.png
2017-07-30_114522.png (8.33 КБ) 7846 просмотров
Последний раз редактировалось MX_Master 02 авг 2017, 13:34, всего редактировалось 1 раз.
tims
Опытный
Сообщения: 103
Зарегистрирован: 21 фев 2017, 00:57
Репутация: 5
Настоящее имя: Тим
Откуда: СПб
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение tims »

Планируется получение задания скорости/положения по ethernet?
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

tims писал(а):Планируется получение задания скорости/положения по ethernet?
Да
tims
Опытный
Сообщения: 103
Зарегистрирован: 21 фев 2017, 00:57
Репутация: 5
Настоящее имя: Тим
Откуда: СПб
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение tims »

А в качестве планировщика, linuxcnc на ядре preempt-rt?
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

tims писал(а):А в качестве планировщика, linuxcnc на ядре preempt-rt?
:hehehe: если такое и будет, то в следующем проекте. Использовать LCNC здесь не планируется. Функции планировщика в этом проекте распределятся между STM32 и веб-интерфейсом.
tims
Опытный
Сообщения: 103
Зарегистрирован: 21 фев 2017, 00:57
Репутация: 5
Настоящее имя: Тим
Откуда: СПб
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение tims »

А кто будет интерпретировать g код? Если задание скорости/положения будет принимать по ethernet можно и к lcnc прикрутить.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

tims писал(а):А кто будет интерпретировать g код?
Задуманный генератор - это всего лишь комплексная проверка перед самостоятельным контроллером. Так что полноценного интерпретатора G кода может в генераторе не быть. Впоследствии, когда дело дойдёт до контроллера, на первых парах разбирать G код и что-то планировать будет веб-морда средствами JavaScript. Звучит забавно, но я хочу попробовать. Если веб морда не будет справляться, возьму STM'ку по мощней (F407VET6) и сделаю разбор и планировщик внутри.
tims писал(а):Если задание скорости/положения будет принимать по ethernet можно и к lcnc прикрутить.
Да
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4605
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1622
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение selenur »

MX_Master писал(а):Задуманный генератор - это всего лишь комплексная проверка перед самостоятельным контроллером. Так что полноценного интерпретатора G кода может в генераторе не быть. Впоследствии, когда дело дойдёт до контроллера, на первых парах разбирать G код и что-то планировать будет веб-морда средствами JavaScript. Звучит забавно, но я хочу попробовать. Если веб морда не будет справляться, возьму STM'ку по мощней (F407VET6) и сделаю разбор и планировщик внутри.
Так этого на самом деле и не нужно, делать на данном контроллере, я это к чему, давным давно я писал программу для управления контроллером Planet-CNC (которую так и не доделал), и в последней разработке я работал с контроллером MK2, который мог работать как через USB, так и с SD карты. Содержимое файла на SD карте представляет собой бинарный формат, похожий на тот что посылался в контроллер.
Контроллер последовательно считывал блок из 64 байт, в этом блоке содержалась информация, о необходимом количестве импульсов для каждой оси, о том на каких выходах какой уровень сигнала установить, либо с какой частотой генерировать импульсы на определенном выводе.
Причем в этих данных содержалась информация, о необходимости замедления между пакетами, что позволяло проходить траекторию из нескольких прямых отрезков без остановки.
И если-бы ты пошел по похожему пути было-бы круто.
Когда формат посылаемых данных по сети, или считываемых с SD карты был идентичным.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
tims
Опытный
Сообщения: 103
Зарегистрирован: 21 фев 2017, 00:57
Репутация: 5
Настоящее имя: Тим
Откуда: СПб
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение tims »

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

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

Как я и писал выше, генератор - это не контроллер. Это проба пера. Смысл в том, чтобы на деле проверить одновременную генерацию шагов, чтение/запись с SD карты и передачу данных по сети. Если всё это будет мешать друг другу, то генератор станет полностью отдельным модулем без плюшек. А все остальные функции контроллера (GUI, планировщик и т.д.) возьмёт на себя ещё одна STM'ка или какой-ньть Orange Pi One.

Как только подойдём к полноценному контроллеру, так и обсудим его функции. А это всего лишь генератор с простым GUI.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение Serg »

MX_Master писал(а):Как только подойдём к полноценному контроллеру, так и обсудим его функции.
Планировщик LinuxCNC довольно легко портируется на Cortex-M4, я это ещё года 3 назад делал.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение wldev »

MX_Master писал(а):Проект открытый, прошивка открытая.
Пожалуйста пиши комментарии)))
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

И как я раньше жил без этой крохотной программки SPEQMATH! В текущем проекте при расчётах S-кривой, да и много где ещё, постоянно надо что-то считать с формулами и переменными. Обычный калькулятор тут уже всё. Я, обычно, открывал браузер и запускал консоль разработчика, в которой можно писать JavaScript код и выполнять его. И вот теперь понадобилось рисовать графики для реального представления формул. Обрыл интернет в поисках быстрого и бесплатного.. и нашёл! Этот чудо калькулятор не только считает и рисует, но и сохраняет листы с расчётами в отдельные файлы. Вощем, рекомендую всем, кто не хочет лезть в программирование.

Лично мне программка очь сильно помогла при возьне с формулами ускорений и скоростей вывода шагов. Причём, я всегда наглядно видел результат в виде графика.

Скриншоты в гугле - https://www.google.com/search?q=SPEQ+MA ... S&tbm=isch
screenshot_engineer.png (7621 просмотр) <a class='original' href='./download/file.php?id=117602&mode=view' target=_blank>Загрузить оригинал (29.98 КБ)</a>
screenshot_simple.png (7621 просмотр) <a class='original' href='./download/file.php?id=117603&mode=view' target=_blank>Загрузить оригинал (12.53 КБ)</a>
Аватара пользователя
Shkryab
Опытный
Сообщения: 143
Зарегистрирован: 15 июн 2017, 21:25
Репутация: 18
Настоящее имя: Леонидыч
Откуда: Страна, которой нет
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение Shkryab »

MX_Master писал(а):И как я раньше жил без этой крохотной программки SPEQMATH!
Любопытно... Я как-то до сих пор для этих целей обходился экселем (точнее тем, что в гугльдоках заменяет эксель), но вдруг эта программка мне тоже жуть как нужна? Что она может такого, чего не могут электронные таблицы? Мне действительно интересно. :thinking:
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

Shkryab писал(а):
MX_Master писал(а):И как я раньше жил без этой крохотной программки SPEQMATH!
Любопытно... Я как-то до сих пор для этих целей обходился экселем (точнее тем, что в гугльдоках заменяет эксель), но вдруг эта программка мне тоже жуть как нужна? Что она может такого, чего не могут электронные таблицы? Мне действительно интересно. :thinking:
2017-08-08_230851.jpg (7549 просмотров) <a class='original' href='./download/file.php?id=117738&mode=view' target=_blank>Загрузить оригинал (81.2 КБ)</a>
2017-08-08_233109.jpg (7549 просмотров) <a class='original' href='./download/file.php?id=117739&mode=view' target=_blank>Загрузить оригинал (127.52 КБ)</a>
Автор скрестил блокнот с калькулятором и добавил довольно мощный вывод графиков. Скачайте посмотреть, всего 500 Кб. Зато сколько удовольствия.

Оч понравилось, что можно рисовать не просто графики функций, но и результат логических выражений. Например, чтобы изобразить обычный меандр красной линией толщиной 3 пикселя, достаточно одной строчки:
  • Plot( IIf(Floor(x)%2, 1, -1), x, Color=Red, Width=3 )
    где
    Plot(выражение, имя переменной, параметры вывода) - вывод графика,
    IIf(выражение, если правда, если ложь) - простой логически оператор,
    Floor(число) - округление в меньшую сторону до целого
А теперь подрисуем в график ещё парочку функций другим цветом. Сверху - синюю кубическую функцию, а снизу - зеркально две отрицательные зелёные половины корня из Х:
  • Plot( x^2 + 2, x, Color=Blue, Width=3 )
  • Plot( IIf( x > 0, -Sqrt(x) - 2, -Sqrt(-x) - 2), x, Color=Green, Width=3 )
И это только вывод графиков. Кроме этого в программе можно тупо посчитать всё и вся с любыми переменными и функциями. Для тех, кто не англичанин - есть русский язык.
Аватара пользователя
Shkryab
Опытный
Сообщения: 143
Зарегистрирован: 15 июн 2017, 21:25
Репутация: 18
Настоящее имя: Леонидыч
Откуда: Страна, которой нет
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение Shkryab »

Очаровательно! Беру на вооружение. Бесплатная и не требует инсталляции! :good:
Аватара пользователя
MX_Master
Мастер
Сообщения: 7488
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3113
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение MX_Master »

2017-08-09_080530.png (7520 просмотров) <a class='original' href='./download/file.php?id=117761&mode=view' target=_blank>Загрузить оригинал (12.51 КБ)</a>
Ну и возвращаясь к теме.. Вот пример графика S-разгона от 0 до 5 КГц с максимальным ускорением в 100000 шагов/с. Синим цветом - с использованием квадратной функции. Красным цветом - с кубической функцией. Эти функции хороши тем, что подсчёт частоты идёт быстро и в целых числах. Частотный ряд состоит из двух сегментов. Буду пробовать оба варианта. Чуть позже попробую вариант из трёх сегментов, в середине которого будет постоянное ускорение. Если у кого-то есть советы на этот счёт - пишите.









Исходник для speqmath

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

freq = 5000; ' Hz, destination frequency
accel = 100000; ' Hz/s, max acceleration
steps = Floor( freq^2 / accel ) ' steps to accelerate frequency from 0 to freq
steps_half = Floor( steps/2 )

' plot settings
Title = s-curve frequency acceleration;
LegendPos = BottomRight;
xLabel=step;
yLabel=frequency, Hz;

square_freq1(step) = (freq/2) * ((1000*2*step/steps)^2) / 1000^2;
square_freq2(step) = freq - (freq/2) * ((1000*2*(steps - step)/steps)^2) / 1000^2;
square_freq(step) = IIf(step < steps_half, square_freq1(step), square_freq2(step));

cubic_freq1(step) = (freq/2) * ((100*2*step/steps)^3) / 100^3;
cubic_freq2(step) = freq - (freq/2) * ((100*2*(steps - step)/steps)^3) / 100^3;
cubic_freq(step) = IIf(step < steps_half, cubic_freq1(step), cubic_freq2(step));

Plot( square_freq(step), Legend=using "x^2", Color=Blue, Width=3, xMin=0,xMax=steps,xScale=50,yMin=0,yMax=freq,yScale=1000);
Plot( cubic_freq(step), Legend=using "x^3", Color=Red, Width=3 );
Аватара пользователя
Shkryab
Опытный
Сообщения: 143
Зарегистрирован: 15 июн 2017, 21:25
Репутация: 18
Настоящее имя: Леонидыч
Откуда: Страна, которой нет
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение Shkryab »

MX_Master писал(а):Если у кого-то есть советы на этот счёт - пишите.
А почему бы не использовать кусочно-линейную интерполяцию? Вся математика сведётся к сложению-вычитанию и, возможно, табличному преобразованию...
interp.png (7493 просмотра) <a class='original' href='./download/file.php?id=117787&mode=view' target=_blank>Загрузить оригинал (292.25 КБ)</a>
Извините если не в тему -- это я со своей ассемблерной колокольни рассуждаю...
Аватара пользователя
wldev
Мастер
Сообщения: 1650
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: Шаговый генератор на STM32 (STEP/DIR/ENBL)

Сообщение wldev »

MX_Master писал(а):Ну и возвращаясь к теме.. Вот пример графика S-разгона от 0 до 5 КГц с максимальным ускорением в 100000 шагов/с. Синим цветом - с использованием квадратной функции. Красным цветом - с кубической функцией. Эти функции хороши тем, что подсчёт частоты идёт быстро и в целых числах. Частотный ряд состоит из двух сегментов. Буду пробовать оба варианта. Чуть позже попробую вариант из трёх сегментов, в середине которого будет постоянное ускорение. Если у кого-то есть советы на этот счёт - пишите.
Не согласен!
График разгона это функция от времени(F(t)) а не от позиции...
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Ответить

Вернуться в «Электроника»