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

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

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Mamont » 12 дек 2016, 00:06

u37 писал(а):Теперь по сути. ТС задался вопросом быстрых тиков для мягкости вращения двигателей, но забыл, что программа выдает тики явно не аппаратно.

А не беда. К примеру мач3 (не знаю, на чем работает ТС) на частоте 100кгц. Мач думает что выдает импульсы с периодом 10мкс. По факту может сильно отличатся, особенно если винда7 на компе.
Значит импульсы надо принять и квантовать по времени. Если разбежка импульсов меньше 5мкс (половины периода от 10мкс) то метод будет работать.
А если заставить комп постоянно выдавать импульс 100кгц, то совсем все хорошо, этот импульс использовать для синхронизации
Аватара пользователя
Mamont
Мастер
 
Сообщения: 1243
Зарегистрирован: 10 дек 2015, 12:21
Откуда: РБ Минск
Репутация: 219
Настоящее имя: Виталий

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 » 12 дек 2016, 00:10

По поводу "полезных функций", может что заинтересует.
1. буферизирование импульсов для =гарантированно= мягкого и монотонного разгона/торможения двигателей (шаговиков). Об этом уже сказал.
Дополню - с функцией торможения/реверса/возврата, если надо - см. ниже.
2. "программные" поставщики импульсов управления (например, драйвер LPT в OS) ограничены _спонтанным_ лимитом по скорости. Завышенная скорость тиков будет ими нормально выдаваться только при низких скоростях движения, на высоких следует ограничение скорости реакции драйвера. Для обхода этого зла можно снизить скорость тиков в программе, и добавить маштабирование (умножение) в своем девайсе. Собственно, вся эта тема о том.
3. поставить умное ограничение площади стола. Т.е завести контакты лимитов не на контроллер, а на свой девайс. При этом сами импульсы "как-бы исполняются", но до драйверов не доходят. Например, если стол уперся в левый край, то последующие импульсы движения влево не пройдут в мотор, но сами импульс будут считаться и последующие "правые" импульсы начнут проходить в мотор только после обнуления счетчика. В отличии от простого лимита это позволит изготавливать деталь большего размера, чем размер стола. Всё, что "больше", естественно, придется пилить на другой заготовке и склеивать, но от этого уж никак не избавиться.
4. Можно делать компенсацию остановки и датчиков 0
5. отлично врезается пульт управления. Простые аналоговые джойстики по 40 рублей и всё удовольствие. ))
6. и самое любимое - калибровка 0 инструмента и позиционирования простым нажатием кнопки. Поднимать зад и тащиться кликать мышой - это скучно. Да и подсветку курсора можно включить на этот момент.
Всё сказанное IMHO и, по бОльшей части глупость. ))))
u37
Новичок
 
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Mamont » 12 дек 2016, 00:16

u37 писал(а):3. поставить умное ограничение площади стола.

ипосиблле.
выйдет координата за пределы. мастер-контроллер задушит импульсы на драйвера, но будет считать.
комп пойдет в обратку, наберет плавно скорость и влетит в рабочую зону. мастер контроллер сходу завалит драйвер быстрыми импульсами. а мотор будет жужжать, не сможет раскрутиться
Аватара пользователя
Mamont
Мастер
 
Сообщения: 1243
Зарегистрирован: 10 дек 2015, 12:21
Откуда: РБ Минск
Репутация: 219
Настоящее имя: Виталий

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 » 12 дек 2016, 00:24

Mamont, мач3 выдает 100кгц только в среднем, да и то, он только думает, что там 100 кгц.
"По факту может сильно отличатся, особенно если винда7 на компе."
И я о том же. Причем, от "винды" почти не зависит. Драйверы - вот основное зло.
Сама цифра взялась вот откуда - время выпонения 1 запроса драйвера с доступом к порту занимает 10 uS (типичный максимум 30 uS), вот отсюда и 100 кгц.
Любой вмешательство OS и между 10uS тиками вклеивается разрыв в 2.5 ms.
u37
Новичок
 
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Mamont » 12 дек 2016, 00:29

u37 писал(а):Любой вмешательство OS и между 10uS тиками вклеивается разрыв в 2.5 ms.

можно поподробнее о вмешательстве, и почему оно никогда не происходит?
Аватара пользователя
Mamont
Мастер
 
Сообщения: 1243
Зарегистрирован: 10 дек 2015, 12:21
Откуда: РБ Минск
Репутация: 219
Настоящее имя: Виталий

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 » 12 дек 2016, 00:32

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

"1. буферизирование импульсов для =гарантированно= мягкого и монотонного разгона/торможения двигателей (шаговиков). "
Не вижу никаких проблем. ))
Мало того, что обрежутся импульсы в лимите, так еще можно легко учесть инерционный выбег механики, добавив несколько импульсов назад.
Да, сюда же придется вложить гистерезис кнопок датчиков лимитов. Но - всё решаемо.
u37
Новичок
 
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Mamont » 12 дек 2016, 00:43

u37 писал(а):"1. буферизирование импульсов для =гарантированно= мягкого и монотонного разгона/торможения двигателей (шаговиков). "
Не вижу никаких проблем. ))

Если не видишь проблем, это означает или зрение плохое, или нет ничего.
Практика - критерий истинны
Аватара пользователя
Mamont
Мастер
 
Сообщения: 1243
Зарегистрирован: 10 дек 2015, 12:21
Откуда: РБ Минск
Репутация: 219
Настоящее имя: Виталий

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 » 12 дек 2016, 00:51

Mamont писал(а):
u37 писал(а):Любой вмешательство OS и между 10uS тиками вклеивается разрыв в 2.5 ms.

можно поподробнее о вмешательстве, и почему оно никогда не происходит?

Насчет "никогда не происходит" вы меня порадовали. )))
Программа с выводом в железо может работать двумя способами - или выдачей каждого импульса, или спецификацией драйверу выдать столько-то импульсов. Судя по рекомендации не запускать ресурсоемкие приложения одновременно с мач3, он работает по первому принципу (могу и заблуждаться).
Пока нагрузки на OS нет, то исполняемой программе дается практически всё время и никто ее особо не прерывает. Однако, появление другой "нагрузки" вызывает режим переключения задач и приложение усыпляется. На это время прохождение импульсов не происходит, программа же стоит.
Если драйвер порта не "просто генерит импульсы", то усыпление программы вызовет лишь небольшие неконтролируемые задержки между пачками импульсов. Вроде пустяк, но это так-же может вызывать срыв - механика не любит резких изменений скорости. Это как быстро идти и остановиться на шаге - неизбежно упадешь. ))
Если есть "аппаратная" буферизация, то проблемы с разрывами нет, надо лишь медленно (монотонно) подтормаживать, а потом разогнаться. Физически, механика и так и так будет замедляться-разгоняться, но при буферизации не произойдет срыва слежения.
u37
Новичок
 
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение UAVpilot » 12 дек 2016, 01:21

AndyBig писал(а):Отквотил целиком всю функцию

Я про мои слова. :)

AndyBig писал(а):С M4 не работаю

О чём тогда говорить?.. :) Ну а хотя-бы с stm32f3 работал? Или только f0 и f1? Там да, spl можно обойтись.

AndyBig писал(а):Бери плату с Altera EP4CE10

Туда разве что прошивка из проекта pluto-p поместиться, но это уже давно сделано. Там элементов даже на самое простое ядро arm не хватит, а оно для этой задачи понадобится.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 19132
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4662
Медальки:
Настоящее имя: Сергей

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение AndyBig » 12 дек 2016, 03:02

UAVpilot писал(а):Я про мои слова.

А, значит я не так понял :)
UAVpilot писал(а):Ну а хотя-бы с stm32f3 работал?

Нет, только с 100-й серией :)
UAVpilot писал(а):Туда разве что прошивка из проекта pluto-p поместиться, но это уже давно сделано. Там элементов даже на самое простое ядро arm не хватит, а оно для этой задачи понадобится.

Задача же - умножать импульсы STEP? Четыре оси влезут в десятку с огромным запасом, и не нужно никаких ядер :)
Но это я пошутил, разумеется :) Для автора это было бы слишком жестко :)
Аватара пользователя
AndyBig
Мастер
 
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Откуда: юг России
Репутация: 1116
Медальки:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение Сергей Саныч » 12 дек 2016, 07:59

u37, почитайте эту тему
Цифровой фильтр для коррекции неравномерности импульсов Step #1
Задача давно поставлена, решена и реализована на практике.
Так что на данный момент она представляет интерес разве что в следующих вариантах:
- сделать что-то подобное, но с открытым кодом
- реализовать алгоритм на более дешевой платформе
- просто потренироваться в работе с МК
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 8659
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2724
Медальки:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение ALS » 12 дек 2016, 09:15

Крамольную мысль выскажу.
Чем начинать осваивать новые камни, собирая все шишки и начиная с пресловутого мигания светодиодом, не проще ли взять то, что уже изучено (авр, я так понимаю) и сделать умножитель шагов для _одной_ оси на _одном_ МК.
Код при этом будет одинаковый для всех МК, нужно будет только запаять (подключить в случае с дуней) нужное их количество.
Учитывая их дешевизну, имхо, проще и дешевле будет поставить их, напр., 5 штук для пяти осей, чем пытаться сейчас впихивать все это в одного "монстра".
Аватара пользователя
ALS
Опытный
 
Сообщения: 159
Зарегистрирован: 15 ноя 2013, 01:46
Откуда: Севастополь
Репутация: 160

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение MX_Master » 12 дек 2016, 10:56

На дуньку2560 код на 4 оси уже готов и ждет приезда самой дуньки. А другой МК взят, т.к. в дуньке достигнут аппаратный потолок и добавить туда какие-то вспомогательные фильтры на вход/выход не выйдет.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4995
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 2265
Медальки:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 » 12 дек 2016, 11:03

Сергей Саныч, так тож коммерческий проект. Смысла в нём 0. ))
Там используется F1, а значит высокоумных вычислений ждать не приходится. Что до "упрощенной" модели, то всё упрется в PID, который является ... ну, кто имел дело с PID, тот знает. Для subj вполне проходит обычный следящий фильтр - не такой умный, не такой эффективный, но с задачей справляется (IMHO), и не такой капризный в настройке, в отличии от PID.
u37
Новичок
 
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение UAVpilot » 12 дек 2016, 11:54

AndyBig писал(а):Задача же - умножать импульсы STEP?

А частоту умноженных импульсов ты чем вычислять будешь?..

u37 писал(а):и не такой капризный в настройке, в отличии от PID.

А что там сложного и капризного? Обычная несложная математика...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 19132
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4662
Медальки:
Настоящее имя: Сергей

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 » 12 дек 2016, 12:59

В PID нет ничего сложного, кроме его к-тов P I D.)) А без правильных к-тов PID работает безобразно. Будете прошивать индивидуальные настройки, или сделаете авонастройку? И тут прощай простота.
u37
Новичок
 
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение UAVpilot » 12 дек 2016, 13:04

А в чём проблема с индивидуальными настройками PID? Всё тоже самое как и с настройками коэф. умножения и т.п., можно eeprom шить, можно через COM задавать...

И вообще не понятно зачем там PID? Вон Степмастер спокойно без него обходится...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 19132
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4662
Медальки:
Настоящее имя: Сергей

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение u37 » 12 дек 2016, 13:16

вообще-то, я и НЕ предлагал PID. ))
Следящий ограничитель проще и устойчивее.
u37
Новичок
 
Сообщения: 15
Зарегистрирован: 11 дек 2016, 15:03
Репутация: 1
Настоящее имя: serj

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение AndyBig » 12 дек 2016, 13:23

UAVpilot писал(а):А частоту умноженных импульсов ты чем вычислять будешь?..

Модулем вычисления частоты :-D Есть какие-то конкретные трудности с этим? Может быть я что-то недопонял в том что и как надо вычислять?
В EP3C16 влазило два канала перестраиваемого трехступенчатого цифрового фильтра с промежуточными дециматорами (в одной только первой ступени было более 2000 коэффициентов), выделявший из 20-кГц сигнала полосу до 30 Гц. Плюс куча сервисных функций, в том числе полное управление специализированным АЦП (AD6652). Влазил с огромным запасом по ячейкам, под завязку использованы были только умножители и память. Тут что-то сопоставимое по сложности предвидится? :)
Аватара пользователя
AndyBig
Мастер
 
Сообщения: 3971
Зарегистрирован: 07 мар 2014, 04:01
Откуда: юг России
Репутация: 1116
Медальки:

Re: Умножитель STEP/DIR на Arduino или STM32 Cortex M4

Сообщение UAVpilot » 12 дек 2016, 14:03

Нет, тут задачка посложней предвидится...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
UAVpilot
Мастер
 
Сообщения: 19132
Зарегистрирован: 17 апр 2012, 14:58
Откуда: Москва
Репутация: 4662
Медальки:
Настоящее имя: Сергей

Пред.След.

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

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

Зарегистрированные пользователи: 8cd, Alex-et, andergrin, at90, Bing [Bot], BlackBeard, bred55, evgeni70, frezeryga, gigs, Google [Bot], iMaks-RS, Kupfershcmidt, Lebede, mikehv, MSN [Bot], mymitrol, Ncoz, nik0, nik1, s_erg, selenur, shalek, tehnic, tto4ka, xenon-alien, xvovanx, Yandex [bot], yurayerz, Печник, Тагир

Reputation System ©'