Умножитель частоты шагов на STM32

Контроллеры, драйверы, датчики, управляющие устройства.

Re: Умножитель частоты шагов на STM32

Сообщение Сергей Саныч » 19 июн 2017, 10:06

MX_Master писал(а):Осталось дело за малым - сделать это аппаратно :hehehe:
Аппаратно я такое делал лет 35 назад. На паре микросхем К155ИЕ8 :hottabych:
Базовая частота была, кстати, 10 МГц :)
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8438
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2640
Медальки:

Re: Умножитель частоты шагов на STM32

Сообщение MX_Master » 19 июн 2017, 19:26

Сегодня часа 4 ушло на последовательные тесты умножителя в деле - на станке. Поставил электроящик на стол. К стенке ящика прикрутил струбцину и на неё установил монтажную платку с умножителем. Умножитель подключен к LPT порту. Питается умножитель прямо с материнки от 5V. Управление - LinuxCNC. На монтажной платке расположились 3 модуля:


На осях выставлял микрошаг от 1/64 до 1/256. Звук шаговиков стал более приятным, стессна, без потери скоростей. Пока тестировал, выявил косяк с направлением движения осей. Т.к. умножитель включается раньше чем LinuxCNC, то при старте умножителя может выставится неправильное начальное значение DIR. Скоро исправлю.

Фотки в массе похожи на паутину из проводов, но всё же. Видео не стал снимать, т.к. разница пока лишь в звуке моторов.
Умножитель частоты шагов на STM32 PHOTO_20170619_195903.jpg
Умножитель частоты шагов на STM32 PHOTO_20170619_200035.jpg
Умножитель частоты шагов на STM32 PHOTO_20170619_200054.jpg
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4456
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 2142
Медальки:
Настоящее имя: Михаил

Re: Умножитель частоты шагов на STM32

Сообщение Prav » 19 июн 2017, 19:33

MX_Master писал(а): Звук шаговиков стал более приятным, стессна, без потери скоростей.

Из-за микрошага или ...?
Аватара пользователя
Prav
Мастер
 
Сообщения: 357
Зарегистрирован: 14 июл 2015, 05:10
Откуда: Москва
Репутация: 70
Настоящее имя: Петр Раввинский

Re: Умножитель частоты шагов на STM32

Сообщение MX_Master » 19 июн 2017, 20:02

Prav писал(а):Из-за микрошага или ...?

У меня шаговики 86мм, длиной 118мм. Дрожат при вращении будь здоров. Поэтому микрошаг по всем осям мельче чем 1/64 ощутимо смягчает звук всего оркестра моторов.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4456
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 2142
Медальки:
Настоящее имя: Михаил

Re: Умножитель частоты шагов на STM32

Сообщение Prav » 19 июн 2017, 20:07

Понятно. А я подумал, что из-за более стабильной выходной частоты.
Аватара пользователя
Prav
Мастер
 
Сообщения: 357
Зарегистрирован: 14 июл 2015, 05:10
Откуда: Москва
Репутация: 70
Настоящее имя: Петр Раввинский

Re: Умножитель частоты шагов на STM32

Сообщение MX_Master » 20 июн 2017, 09:19

В первом посте выложил исправленную версию прошивки для платки STM32F103C8T6. Сделал принудительную синхронизацию DIR во время простоя оси. Имеются разные варианты прошивки под разные множители - x2, x4, x8, x16, x32.

http://www.cnc-club.ru/forum/viewtopic.php?f=41&t=13977

Также добил все тесты на своём станке. Использовал множитель = 8 и исправленную прошивку. Самый крупный микрошаг получился по Z, где ШВП 2005 - 1/64. На приводах, где шестерня/рейка - 1/256, на поворотке с ременным редуктором (1:6) - 1/128. Максимальную подачу оставил как есть - 6 м/мин, больше жёсткость станка не позволяет.

Небольшой теоретический расчёт. Материнка с LinuxCNC выдаёт максимум 24 КГц. Дрова принимают максимум 200 Кгц. Допустим, по всем осям стоит ШВП с шагом 5мм, а микрошаг на драйверах = 1/16. Что соответствует 0.0015625 мм/шаг. Без умножителя максимальная скорость осей получится 2250 мм/мин = 24000гц / (200шагов * 16 / 5мм) * 60сек. А с умножителем X8 (24 КГц * 8 = 192Кгц) = 18 м/мин. Шаговик 57мм при хорошем питании на ШВП 5мм стабильно вытянет 5 м/мин рабочей подачи, а при шаге 10мм вытащит все 12 м/мин. В холостую будет еще быстрей, ну а дальше только сервы.

По итогу получается, что можно взять любой контроллер по вкусу и бюджету, будь-то ардуина с GRBL, материнка с LPT, клон NCStudio/USBCNC или китайский контроллер под Mach3. И разогнать их вывод до максимальной частоты бюджетных драйверов (200 Кгц). К тому же, в запасе останется возможность пересесть на более производительные драйвера (400 Кгц) или даже сервы.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4456
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 2142
Медальки:
Настоящее имя: Михаил

Re: Умножитель частоты шагов на STM32

Сообщение MX_Master » 26 июн 2017, 07:41

Опробовал вчера еще один полуаппаратный способ вывода шагов на бюджетке с F103C8T6.

У этого F103C8T6 в наличии всего 4 аппаратных таймера. В текущем варианте умножителя это значит, что можно использовать только 4 оси и всё. Но этого маловато, хотелось бы выдавить из этого МК как минимум 5 осей.

Для этого я использовал способ вывода, при котором есть базовая несущая частота таймера. А генерация шагов для каждой оси происходит в каждом из 4-х отдельных каналов этого таймера. Я сделал так, что при каждом входящем шаге создаётся (обновляется) отдельный DMA массив из "2*множитель" элементов на основе текущего периода между входящими шагами. Каждый элемент массива это одно из будущих значений счётчика таймера, при котором будет дёргаться выходной пин. Далее этот массив скармливается своему каналу таймера и с помощью метода Output Compare + DMA происходит аппаратная генерация выходных шагов.

При таком подходе дело упирается только в кол-во DMA каналов МК, коих у F103C8T6 есть 7 штук. Проще говоря, можно организовать аппаратный вывод для 7 осей, используя всего 2 таймера из 4-х. Именно так я и сделал, но для начала выставил только 5 осей. Проверил вывод всех осей на анализаторе - всё работает. Есть, конечно, мелкие косяки в генерации, которые нужно допилить, но в целом этот новый способ весьма стабилен.

Вощем, будем развивать этот способ и далее. О дальнейших успехах буду сообщать уже с наглядными примерами.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4456
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 2142
Медальки:
Настоящее имя: Михаил

Re: Умножитель частоты шагов на STM32

Сообщение Bender » 25 июл 2017, 08:13

MX_Master писал(а):Свежая версия прошивки для STM32F103C8Tx от 20.06.2017.
В комплект входят 5 прошивок с разными множителями - 2, 4, 8, 16, 32:


И зачем тут STM?
Делаем умножитель на 2 можно и так сделать... и на 4 итд.
Изображение

на STM надо делать с возможностью дробного коэффициета как у всех сервомоторов(цифр. редуктор) т.е. целочисленный числитель и знаменатель (16/32,bits)
и у каждой оси свой!
Контроллеры, софт, поддержка...
Аватара пользователя
Bender
Мастер
 
Сообщения: 755
Зарегистрирован: 24 янв 2012, 16:04
Откуда: Новосибирск
Репутация: 207
Медальки:
Настоящее имя: Сергей

Re: Умножитель частоты шагов на STM32

Сообщение MX_Master » 25 июл 2017, 08:43

Здесь всё как с модулем выравнивания портала, схема простая, но никто сам делать не будет (:

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

Re: Умножитель частоты шагов на STM32

Сообщение Сергей Саныч » 25 июл 2017, 09:32

Bender писал(а):Делаем умножитель на 2 можно и так сделать... и на 4 итд.
Корректно такой умножитель будет работать только при меандре на входе и коэффициенте 2. И то на выходе у него будут короткие импульсы фиксированной длительности. При дальнейшем умножении они преобразуются в пачки импульсов по 2-4-8... Толку от такого умножения для управления ШД никакого.
Для того и нужны "умные" умножители, чтобы проанализировав входной поток импульсов, выдать равномерную частоту в n раз большую, причем количество импульсов должно получиться тоже точно в n раз большим.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8438
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2640
Медальки:

Re: Умножитель частоты шагов на STM32

Сообщение Bender » 25 июл 2017, 09:32

Prav писал(а):Звук шаговиков стал более приятным, стессна, без потери скоростей.

а момент? я на своём гибочном станке тоже баловался(у меня контроллер может выдавать до 2,4МГц) но в результате пришёл к выводу, что скорость может и та же и звук лучше,но момент меньше, почему незнаю.
Контроллеры, софт, поддержка...
Аватара пользователя
Bender
Мастер
 
Сообщения: 755
Зарегистрирован: 24 янв 2012, 16:04
Откуда: Новосибирск
Репутация: 207
Медальки:
Настоящее имя: Сергей

Re: Умножитель частоты шагов на STM32

Сообщение Bender » 25 июл 2017, 09:52

Сергей Саныч писал(а):Для того и нужны "умные" умножители, чтобы проанализировав входной поток импульсов, выдать равномерную частоту в n раз большую, причем количество импульсов должно получиться тоже точно в n раз большим.


А если например один импульс придёт, то с какой частотой он должен выдать умноженные импульсы? что он будет анализировать?

В данной теме нужно говорить о не умножении частоты, а умножении импульсов шага.
Контроллеры, софт, поддержка...
Аватара пользователя
Bender
Мастер
 
Сообщения: 755
Зарегистрирован: 24 янв 2012, 16:04
Откуда: Новосибирск
Репутация: 207
Медальки:
Настоящее имя: Сергей

Re: Умножитель частоты шагов на STM32

Сообщение Сергей Саныч » 25 июл 2017, 10:02

Bender писал(а):А если например один импульс придёт, то с какой частотой он должен выдать умноженные импульсы? что он будет анализировать?
Его, родимого, и будет анализировать :)
Начнет выдавать импульсы с некоторой минимальной частотой. Придет второй импульс - частота увеличится.
Bender писал(а):В данной теме нужно говорить о не умножении частоты, а умножении импульсов шага.
А смысл в таком умножении?
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8438
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2640
Медальки:

Re: Умножитель частоты шагов на STM32

Сообщение MX_Master » 25 июл 2017, 10:07

Bender писал(а):
Prav писал(а):Звук шаговиков стал более приятным, стессна, без потери скоростей.

а момент? я на своём гибочном станке тоже баловался(у меня контроллер может выдавать до 2,4МГц) но в результате пришёл к выводу, что скорость может и та же и звук лучше,но момент меньше, почему незнаю.

Контроллер 2.4 Мгц может выдать, а драйвер сколько может принять? Аналоговый драйвер или цифровой? Нюансы и мелочи могут дать ответ.

Но я думаю так.. Самый высокий момент бывает только в устойчивых положениях статора - шаг, полушаг. И чем меньше мотор движется, тем больше момент. При очень мелком шаге, моторчик чаще находится в движении. И ротор чаще бывает в неустойчивых положениях. Отсюда снижение момента шаговика. Вощем, тут нужен компромисс.

Bender писал(а):А если например один импульс придёт, то с какой частотой он должен выдать умноженные импульсы? что он будет анализировать?

Умножение происходит между двумя шагами. Но у меня есть максимальное время ожидания второго шага, на тот случай, если был только 1 шаг.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4456
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 2142
Медальки:
Настоящее имя: Михаил

Re: Умножитель частоты шагов на STM32

Сообщение Bender » 25 июл 2017, 10:11

Сергей Саныч писал(а):Начнет выдавать импульсы с некоторой минимальной частотой. Придет второй импульс - частота увеличится.

допустим, а след приходит с максимальной частотой, и он уже не успевает сделать текущую пачку. т.е. должен будет накопить ошибку и потом выдать....да? так это уже целый PID а не умножитель...

Сергей Саныч писал(а):А смысл в таком умножении?

Так если вы фактически умножаете количество импульсов т.е шагов...а потом делите на драйвере обратно.... или я не прав?
Контроллеры, софт, поддержка...
Аватара пользователя
Bender
Мастер
 
Сообщения: 755
Зарегистрирован: 24 янв 2012, 16:04
Откуда: Новосибирск
Репутация: 207
Медальки:
Настоящее имя: Сергей

Re: Умножитель частоты шагов на STM32

Сообщение Сергей Саныч » 25 июл 2017, 10:25

Bender писал(а):допустим, а след приходит с максимальной частотой
Это неправильно, так не должно быть в реальной системе. ШД - устройство механическое, инерционное. Ошибка следования будет в любом случае, а то и срыв шагов.
Bender писал(а):так это уже целый PID а не умножитель...
см. StepMaster :)
Последний раз редактировалось Сергей Саныч 25 июл 2017, 10:48, всего редактировалось 1 раз.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8438
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2640
Медальки:

Re: Умножитель частоты шагов на STM32

Сообщение Bender » 25 июл 2017, 10:27

MX_Master писал(а):Контроллер 2.4 Мгц может выдать, а драйвер сколько может принять? Аналоговый драйвер или цифровой? Нюансы и мелочи могут дать ответ.

драйвер 200к.
MX_Master писал(а):Но я думаю так.. Самый высокий момент бывает только в устойчивых положениях статора - шаг, полушаг. И чем меньше мотор движется, тем больше момент. При очень мелком шаге, моторчик чаще находится в движении. И ротор чаще бывает в неустойчивых положениях. Отсюда снижение момента шаговика. Вощем, тут нужен компромисс.

согласен
Контроллеры, софт, поддержка...
Аватара пользователя
Bender
Мастер
 
Сообщения: 755
Зарегистрирован: 24 янв 2012, 16:04
Откуда: Новосибирск
Репутация: 207
Медальки:
Настоящее имя: Сергей

Re: Умножитель частоты шагов на STM32

Сообщение Bender » 25 июл 2017, 10:31

MX_Master писал(а):Умножение происходит между двумя шагами. Но у меня есть максимальное время ожидания второго шага, на тот случай, если был только 1 шаг.

надо ещё ч/з себя и dir пропускать, а то упрыгать может всё.
Контроллеры, софт, поддержка...
Аватара пользователя
Bender
Мастер
 
Сообщения: 755
Зарегистрирован: 24 янв 2012, 16:04
Откуда: Новосибирск
Репутация: 207
Медальки:
Настоящее имя: Сергей

Re: Умножитель частоты шагов на STM32

Сообщение Сергей Саныч » 25 июл 2017, 10:47

Bender писал(а):надо ещё ч/з себя и dir пропускать, а то упрыгать может всё.
Обязательно.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8438
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2640
Медальки:

Re: Умножитель частоты шагов на STM32

Сообщение MX_Master » 25 июл 2017, 10:53

Bender писал(а):
MX_Master писал(а):Умножение происходит между двумя шагами. Но у меня есть максимальное время ожидания второго шага, на тот случай, если был только 1 шаг.

надо ещё ч/з себя и dir пропускать, а то упрыгать может всё.

Да, DIR каждой оси тоже заводится на вход
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4456
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 2142
Медальки:
Настоящее имя: Михаил

Пред.След.

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

Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot], Majestic-12 [Bot], Yandex [bot]

Reputation System ©'