Планирование движения шагового мотора

C_D
Ср 26 сентября 2018 г. 1:30
Кто -нибудь пытался выполнить какое -либо расширенное управление двигателем шаговых двигателей с помощью F1 или F4? Я предполагаю, что кто -то, должно быть, посмотрел на это, так как были разговоры о портировании Марлина и/или о создании 3D -контроллера принтера. Смириться с форумами, я могу найти нескольких человек, которые попробовали библиотеку AccelStepper http: // www.Airspayce.com/mikem/arduino/accelstepper/ Но это не место, где близко быстро, для того, что я надеюсь сделать: в идеале я хотел бы контролировать 8 шаговых двигателей при скорости шагов 50 кГц.

Я сделал небольшую оптимизацию ступенчатого кода в AccelStepper (например,. Избавление от DigitalWrite () и Delay ()), но на F1 расчеты ускорения являются sssllloooowww, потому что они используют математику с плавающей запятой. Некоторая грубая маркировка скамейки показала около 30us математики на шаг на мотор. Так что меняет меня в лучший Скорость шага 30 кГц на одном моторе, и не осталось времени делать что -то еще во время шага.

Я играл с доской F407 и работал FPU (спасибо, Pito и AG123 ViewTopic.PHP?F = 39&T = 2001) но еще не сравнивал AccelStepper, используя его. Я, вероятно, должен сначала взломать библиотеку, чтобы убедиться, что все это единственное точное плавание и т. Д.

Я на самом деле после того, что я после, это существующая библиотека, которая в основном отвечает моим потребностям, не требуя тонны дальнейшей работы. Я уверен, что это было сделано много раз раньше, и я бы предпочел не тратить недели на написание кода, чтобы вычислять профили ускорения, когда кто -то, вероятно, уже сделал это!

Кто -нибудь еще здесь делает что -то подобное?

РЕДАКТИРОВАТЬ:
На самом деле это выглядит довольно многообещающе: https: // github.com/luni64/teensystep. The Teensy 3.2 выглядит похоже на F103 и Teensy 3.6 выглядит как даже более мощный, чем F4.

AG123
Ср 26 сентября 2018 г., 6:44
Я давно хотел поиграть со ступенками. Тем не менее, я отметил, что когда, скажем, кто -то, скажем, собирать 3D -принтер
Часто это более удобно и более низкие затраты с общими шаговыми модулями
https: // www.eBay.com/sch/i.HTML?_NKW = A4988&_SACAT = 0
https: // www.eBay.com/sch/i.HTML?_NKW = DRV8825&_SACAT = 0
Скорее часто большинство существующих кодов написаны для использования A4988, DRV8825 шаговых модулей
Хотя довольно возможно сделать STM32 (скажем, F103), это часто стоит несколько дороже за устройство, E.глин. Больше компонентов, больше работы по сборке контроллеров двигателя
Чтобы сохранить работу, однажды мог в основном подражать те же особенности A4988, DRV8825 или переписать драйверов, чтобы использовать новые пользовательские драйверы для управления двигателем STM32, это намного сложнее и может включать изменение большого количества базовых кодов

Тем не менее, существуют различные преимущества управления шагами непосредственно из STM32, включая программную калибровку управления токами, микроэлемент, управление током с закрытым циклом и в идеале сделать двигатель управления двигателем, который может выполнять шаг, используя высокоуровневые команды, а не низкие направление уровня и управление клетками шага
Я думаю, что в сети есть ряд проектов, который делает только E.глин.
https: // chackaday.com/2016/06/01/mechadu ... -каждый/
https: // github.com/misfittech/nano_stepper
https: // reprap.org/wiki/motor_control_loop
http: // www.Ustepper.com/index/
https: // github.com/jcchurch13/mechaduino-firmware
http: // tropical-labs.компонент

C_D
Ср 26 сентября 2018 г. 9:04
[AG123 - Ср 26 сентября 2018 г. 6:44] - Часто это более удобно и более низкие затраты с общими шаговыми модулями
Извините, я должен был быть более ясным, это именно то, что я буду делать. У меня есть массив модулей драйверов DRV8825 на моем столе для тестирования. Роль STM32 будет заключаться в создании требуемых сигналов шага и направления для водителей. Очевидно, что генерировать быстрые импульсы легко, его профили ускорения и синхронизация нескольких двигателей движутся одновременно, что становится сложным.

Фоно
Ср 21 ноября 2018 г. 20:17
У меня есть некоторый опыт работы с этой темой, но не могли бы вы прояснить ваши потребности: вы упомянули скорость 50 кГц. Я не думаю, что вы говорите о физических шагах, поскольку на классических двигателях с 200 шагами/Rev это будет означать скорость вала 250 Rev/S или 15 000 Rev/Min!
Можете ли вы указать скорость вала, вам нужна?
Я потратил часть своего носителя на разработку шаговых моторных дисков, поэтому я мог бы помочь вам.

C_D
Солнце 25 ноября 2018 г., 21:55
Phono, было бы здорово обсудить мой проект с вами, вы звучите, как будто у вас гораздо больше опыта в этой области, чем я.

Я строю программируемый контроллер двигателя, который может одновременно запускать несколько (до 16) шаговых двигателей одновременно. STM32 будет генерировать шаг и сигналы направления для внешних драйверов. Высокие показатели шага требуются для драйверов микростеппинга, которые иногда устанавливаются на 32, 64 или 128 микростеп, поэтому вам нужно отправлять до 25 тыс. упражняться.

В идеале я хотел бы придерживаться F103 по причинам затрат, поэтому я надеюсь, что простого постоянного контроля ускорения будет достаточно для моих нужд. Я не думаю, что контролируемое движение придурок будет возможным без FPU, и это кажется чрезмерно сложным для того, что мне нужно на данный момент. Это определенно то, что я хочу изучить в будущем, хотя.

Я был занят разработкой аппаратного обеспечения в течение последних нескольких недель, но сейчас я снова вернулся на сторону программного обеспечения. Я собираюсь хорошо взглянуть на Teensystep на этой неделе и посмотрю, смогу ли я запустить его на STM32. Шаблонный код немного смутил меня, когда я впервые попытался прочитать его, но я думаю, что он сейчас под контролем :ржу не могу:

Я также только что нашел Tinyg который выполняет контролируемое движение 3 -го порядка в 6 осей одновременно на XMega, который, похоже, не имеет аппаратного плавающего запястья. Я тоже посмотрю на это немного дальше.

Flyboy74
Пн 26 ноября 2018 г., 6:59
Пожалуйста, продолжайте публиковать то, что вы сталкиваетесь, и проблемы, которые сталкиваются, и решения, найденные, поскольку я также очень заинтересован в изучении этой темы.

Я создал свою собственную мельницу с ЧПУ, но использовал аппаратное и программное обеспечение с полки.

Я погружаю робот для решения куба Рубика 5x5x5 Рубика. Я использую сервоприводы роботов для открытия/закрытия захватов, но буду использовать Steppers для линейного акуатора и повернуть захватывающие, чтобы повернуть лица. Смотрите мой проект до сих пор https: // www.YouTube.com/watch?v = tyfdmjejue8

Paulvdh
Чт 13 декабря 2018 г., 22:04
Подходит ли GRBL ваш список?
GRBL также был перенесен в STM32F103.
На GitHub есть куча вилок:
https: // github.com/search?Q = GRBL+STM32
Похоже, что одна из последних вилок:
https: // github.com/usbcnc/grbl

И STM32 также упоминается на GNEA/GRBL, который, по -видимому, является официальным хранилищем для GRBL.

Если относительное движение вашей оси исправлено, как и в большинстве машин ЧПУ, то вы можете легко расширить движения всех двигателей, экстраполируя из алгоритма линии Бресенхэма.
Просто возьмите двигатель с наибольшим количеством шагов и используйте эту ось в качестве ссылки для хода.
Все остальные двигатели перечислены на самый быстрый мотор.
Полки GRBL делает только 3 оси Бресенхэм, но это не имеет большого значения из -за вышеизложенного.

C_D
Ср 19 декабря 2018 г., 2:19
[Paulvdh - Чт 13 декабря 2018 г. 22:04] - Просто возьмите двигатель с наибольшим количеством шагов и используйте эту ось в качестве ссылки для хода.
Все остальные двигатели перечислены на самый быстрый мотор.
Это то, что реализует Teensystep, но с таким большим количеством двигателей, как вам нравится (или имеют память и способность процессора) для). Все еще работая над тем, чтобы перенести его в STM32, в последнее время не было много времени, но я надеюсь скоро вернуться в него.

Я уезжал от GRBL, потому что у него есть много функций, которые мне не нужны, как анализ GCODE и планирование движения. Этот поток не очень хорошо назван, так как мне не нужно планировщик движения, просто ускорение и синхронизированные движения.

Flyboy74
Ср 19 декабря 2018 г., 11:21
Я видел это видео на днях https: // www.YouTube.com/watch?V = FHAO7SW-SZI

Кажется, очень хорошо работает, чтобы плавно координировать 6 шаговых двигателей на 8 -метровом 8 -битном Ardunio, поэтому та же концепция не должна иметь никаких проблем на STM32.

Paulvdh
Чт 27 декабря 2018 г. 18:04
Flyboy упоминает VID YouTube, в котором упоминается примечание к атмеле для расчетов ускорения моторного двигателя.
Эта записка Atmel основана на отличной статье, написанной Дэвидом Остином, и опубликованной в...
https: // duckduckgo.com/html?Q = Дэвид+AUS ... +алгоритм
https: // www.встроенный.com/design/mcus-pr ... -в режиме реального времени

Его алгоритм только реализует постоянное ускорение и без гладких S-кривов.
Аспект «в реальном времени» заключается в том, что ему нужно только одно разделение и несколько дополнений / вычитаний для расчета следующей задержки шага.

В каком-то будущем проекте я планирую сделать не менее 6 моторных скоординированных шагов для 6-осевого промышленного робота, но я, вероятно, тоже хочу планировать заранее для некоторой вспомогательной оси. В этот момент я думаю, что построить на GRBL, потому что расширение количества оси легко и уже перенесено на STM32.
Я еще не изучал Teensy Step, Marlin или другие скоординированные шаговые моторные вещи.

Flyboy74
Чт 27 декабря 2018 г., 21:51
Большое спасибо :)
Вторая ссылка была отличной и помочь гораздо лучше объяснить это решение.

Для моего более простого робототехника потребностей в банкомате, который будет отлично работать и является идеальной стартовой точкой для новичка, как я :)