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

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

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

Сообщение MX_Master » 30 июл 2017, 08:47

Продолжаю тесты с аппаратным выводом шагов на больших частотах. С помощью не очевидных ухищрений с DMA, удалось получить точный вывод нужного кол-ва шагов на частоте 3.2 МГц (ядро пашет на 72 МГц). Вся сложность в том, чтобы вовремя остановить генерацию. На частотах выше 3.2 МГц аппаратная часть всё-таки успевает сгенерировать лишнего. Например, вместо 10 шагов на выходе будет 11. И это, несмотря на то, что генератор останавливается аппаратно (DMA). Если останавливать программно, то уже после 500 КГц могут проскакивать лишние шаги.

2017-07-30_114522.png
2017-07-30_114522.png (8.33 Кб) Просмотров: 2149

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

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

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

Предлагаю поменять стратегию умножения)
1.Нужно ввести понятие типа "накопление данных" допустим 1мс (сервоцикл и прочее).
2.Далее нужно считать сколько импульсов попало в этот промежуток.
3.Выдавать эти импульсы в след участок времени (условно +1мс). и параллельно считать новые импульсы.
Контроллеры, софт, поддержка...
Аватара пользователя
Bender
Мастер
 
Сообщения: 755
Зарегистрирован: 24 янв 2012, 16:04
Откуда: Новосибирск
Репутация: 207
Медальки:
Настоящее имя: Сергей

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

Сообщение MX_Master » 31 июл 2017, 11:16

Bender писал(а):Предлагаю поменять стратегию умножения)
1.Нужно ввести понятие типа "накопление данных" допустим 1мс (сервоцикл и прочее).
2.Далее нужно считать сколько импульсов попало в этот промежуток.
3.Выдавать эти импульсы в след участок времени (условно +1мс). и параллельно считать новые импульсы.

Я не против, в одном из начальных вариантов такое даже было. Есть пара нюансов, которые делают этот способ не таким простым. Во-первых, обработка и вывод сигнала DIR. Во-вторых, обработка шагов, между которыми период больше, чем 1 мс. В-третьих, 1 мс это довольно большой линейный кусок, который сделает вывод ускорений на больших частотах не таким плавным. К примеру, 100 мкс вместо 1 мс дадут более плавный вывод.

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

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

Сообщение Bender » 01 авг 2017, 04:39

MX_Master писал(а):Во-первых, обработка и вывод сигнала DIR. Во-вторых, обработка шагов, между которыми период больше, чем 1 мс. В-третьих, 1 мс это довольно большой линейный кусок, который сделает вывод ускорений на больших частотах не таким плавным. К примеру, 100 мкс вместо 1 мс дадут более плавный вывод.


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

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

Сообщение Bender » 01 авг 2017, 04:45

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

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

Сообщение Сергей Саныч » 01 авг 2017, 05:21

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

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

Сообщение MX_Master » 01 авг 2017, 05:36

Bender писал(а):2. Если попал один импульс то реакция на него должна быть выдана в след сервоцикл. Иначе у нас будет сильно инерционная система. (это равносильно увеличению сервоцикла)

А ты представь, что шаги на входе идут с периодом 50 мс. В реальности бывает и медленней. Как будет выглядеть умноженный вывод, если сервоцикл всего 1мс? Это ж будут отдельные кучки умноженных шагов, разнесённые друг от друга на 48-49 мс.

Как только ты начнёшь проверять на новой идее все возможные случаи входных периодов, то сразу станет ясно, что реализация будет не из лёгких. Если не задумываться о мелочах, то можно и синхронизацию выходных шагов на основе входных придумать. И всякие фильтры, и замену кривых разгона/торможения, и много чего интересного.

Bender писал(а):Так сказать "Адаптивное деление шага".

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

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

Сообщение Bender » 01 авг 2017, 06:30

MX_Master писал(а):Это ж будут отдельные кучки умноженных шагов, разнесённые друг от друга на 48-49 мс.

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

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

Сообщение MX_Master » 01 авг 2017, 06:43

Bender писал(а):
MX_Master писал(а):Это ж будут отдельные кучки умноженных шагов, разнесённые друг от друга на 48-49 мс.

Да кучки, но! на минимальной частоте...
Всё равно нужен предел минимальной частоты который будет определяться сервоциклом.
А если 1имп/час то что тогда? в любом случаем от кучек не деться...

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

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

Сообщение Bender » 01 авг 2017, 07:04

MX_Master писал(а): умножитель, который будет выдавать такой рваный STEP сигнал, к сожалению, никому не пригодится

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

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

Сообщение Bender » 01 авг 2017, 07:06

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

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

Сообщение MX_Master » 01 авг 2017, 07:33

Максимальное время ожидания второго шага = 65 мс в текущей версии в связи с текущим способом аппаратного вывода. И это плохо. Но 65 мс это, всё-таки, не 1 мс. В новом способе вывода (в процессе) можно выдавать шаги с частотой 1 Гц и ниже. Т.е. период может быть 1000мс и выше.

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

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

Сообщение Bender » 01 авг 2017, 08:09

понятно, везде есть + и -.

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

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

Сообщение Bender » 01 авг 2017, 08:13

MX_Master писал(а):Я ж не против. Попробуй сделать так как советуешь, с сервоциклом в 1 мс. И stm'ка у тебя есть для тестов. Осциллограмму с анализатора обязательно выложи. Если люди посмотрят и решат, что так будет приемлемо, то твой способ имеет место быть. Я всеми руками и ногами за новые способы.

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

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

Сообщение Сергей Саныч » 01 авг 2017, 09:48

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

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

Сообщение MX_Master » 01 авг 2017, 11:40

Сергей Саныч писал(а):Михаил, когда разрабатывал Степмастер, первоначально делал только фильтр, без умножения частоты. Идея ввести умножение появилась позже. Может и здесь есть смысл начать с фильтрации? То есть проектировать не абстрактный алгоритм умножения частоты, а учесть, что это частота будет управлять механическим, достаточно инерционным устройством, которое не может мгновенно изменить скорость.

Умножитель начинался с моих нулевых знаний по работе с МК (: Поэтому софт менялся согласно уровню знаний, а не тому "как будет лучше в итоге". Это теперь, когда я съел собаку по работе с переферией МК, можно сделать что-то получше. Для начала я хочу доделать мини библиотеку по аппаратной генерации шагов. Помимо генерации с постоянной частотой, я сделаю функции генерации с ускорениями - линейным, s-образным, u-образным, по формуле. После этого такое понятие как фильтр уже не понадобится. Мы будем наблюдать за входом некоторое время, и на основе наблюдений прикажем генератору сделать соответствующий вывод. А уж генератор позаботится о том, чтобы вывод был плавным и равномерным.
Аватара пользователя
MX_Master
Мастер
 
Сообщения: 4456
Зарегистрирован: 27 июн 2015, 19:45
Откуда: KZ
Репутация: 2142
Медальки:
Настоящее имя: Михаил

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

Сообщение Bender » 05 авг 2017, 07:57

Bender писал(а):пока ещё точно не знаю как лучше)))


Вроде кое что придумал...

1. Все входные сигналы нужно загонять в таймера чтобы они считались аппаратно (как энкодерный вход AB (нужно поставить доп. логику)) и ничего не пропадало.
мы сразу учитываем направление.
2. Далее обрабатываем значение счётчика (я так сделал у себя в WLMotion / энкодерный вход) ч/з определённый промежуток времени.Для вычисления его
приращения.
Счётчик никогда не сбрасываем, чтобы непропадали шаги!!! (определяем наименьший путь приращения и берём его за истинный, надеюсь поняли)))
3. Вычислив преращения счётчика энкодера умножаем его (сдвигом). и пребавляем в наш счётчик рассогласования.
4. Обрабатываем наше рассогласование....

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

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

Сообщение MX_Master » 05 авг 2017, 08:20

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

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

Сообщение Bender » 06 авг 2017, 16:36

MX_Master писал(а):А шо такое "рассогласование"?

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

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

Сообщение MX_Master » 06 авг 2017, 17:14

Bender писал(а):
MX_Master писал(а):А шо такое "рассогласование"?

Ах да....
Это накопительный счётчик с которого мы будем списывать импульсы в процессе генерации.

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

Пред.След.

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

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

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

Reputation System ©'