Цифровой фильтр для коррекции неравномерности импульсов Step

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

aftaev писал(а):и в чем причина была что каждая плата по своему работала?
А фиг его знает, наверное - некачественная пайка или фрезеровка.
Скорее всего - где-то были косяки самой платы. Да и тяжело паять такие мелкие платы без маски.
В этот раз планирую делать платы с мелкими дорожками попроще, а потом их втыкать, как модули в большую плату.
Да и вообще - хочу заказать изготовление.

Плюс ко всему - на тот момент я не разобрался толком с системой тактирования. В этот раз планирую ее корректно настроить.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Сегодня еще немного поэкспериментировал.
Заменил целочисленные расчеты скорости на числа с плавающей точкой. Стало еще чуть чуть лучше на самых низких частотах.
Чуда, конечно, не произошло, и если исходный сигнал очень редкий (несколько герц), то умноженный (для более мелкого микрошага) сигнал на выходе генерируется волнами (группами с количеством импульсов равным коэффициенту умножения). С этим, наверное уже ничего не сделать.

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

Пробовал, установить в Mach3 ускорение 5000 мм/сек². Станок работал без срывов и потери координат.
Максимальная скорость станка получилась точно такая же, как с килофлопом.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение Nick »

michael-yurov писал(а):С этим, наверное уже ничего не сделать.
Ага, это уже врядли получится исправить... Или придется сильно сглаживать траекторию... что тоже не желательно...
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Nick писал(а):Или придется сильно сглаживать траекторию...
Я этого не могу сделать, т.к. "время запаздывания" должно быть постоянным (с минимальными отклонениями), иначе не получится достаточно точно следовать траектории, а в этом и была основная идея - отфильтровать сигнал так, чтобы это негативно не отразилось на точности работы станка.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение Сергей Саныч »

michael-yurov писал(а):С этим, наверное уже ничего не сделать.
А зачем? С частотами ниже нескольких сотен герц, ПМСМ, вообще заморачиваться не стоит - пусть при умножении импульсы идут пачками. Проблемы-то связанные с неравномерностью шага возникают только на высоких частотах.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Serg-tmn писал(а):А зачем? С частотами ниже нескольких сотен герц, ПМСМ, вообще заморачиваться не стоит - пусть при умножении импульсы идут пачками. Проблемы-то связанные с неравномерностью шага возникают только на высоких частотах.
Да там уже после 100 Гц уже почти идеально становится.
А на высоких частотах все отлично.

Сейчас еще остается вопрос на тему скважности импульсов.
Скважность я могу сделать любую,
но из за того, что верхняя частота не ограничена, я не могу установить фиксированную длительность импульсов, поэтому приходится уменьшать длительность импульсов пропорционально росту частоты.
Наверное оставлю 25% / 75%.
И выбор активного фронта тоже делать не буду, а оставлю по умолчанию нарастающий фронт для подсчета импульсов на входе (LinuxCNC и Mach3 все равно будут корректно работать при любой настройке), а на выходе смена сигнала Dir только при низком уровне выходного сигнала, так что не имеет значения, по какому фронту будут работать драйверы ШД.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение Сергей Саныч »

michael-yurov писал(а):а на выходе смена сигнала Dir только при низком уровне выходного сигнала, так что не имеет значения, по какому фронту будут работать драйверы ШД.
Вот это, кстати, не очевидно. Был у меня (и есть до сих пор, никак не сдохнет :) ) блок управления от Реабина. И долго я с ним имел безответную любоффь (на вырезании одной и той же детали в форме буквы D появлялось "сползание" по одной из координат). Пока не выяснил, что переключение направления при низком уровне сигнала Step вызывало лишний шаг. Смена полярности Step сняла проблему.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Serg-tmn писал(а):
michael-yurov писал(а):а на выходе смена сигнала Dir только при низком уровне выходного сигнала, так что не имеет значения, по какому фронту будут работать драйверы ШД.
Вот это, кстати, не очевидно. Был у меня (и есть до сих пор, никак не сдохнет :) ) блок управления от Реабина. И долго я с ним имел безответную любоффь (на вырезании одной и той же детали в форме буквы D появлялось "сползание" по одной из координат). Пока не выяснил, что переключение направления при низком уровне сигнала Step вызывало лишний шаг. Смена полярности Step сняла проблему.
У меня есть пауза после последнего импульса Step перед сменой направления, и небольшая пауза перед последующим импульсом.
Если менять сигнал направления всегда только при высоком или только при низком уровне, и выдерживать минимальные паузы - проблем не будет.
Алгоритм довольно сложный и реализовать его без ошибок не так то просто.

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

Забавно. Прочитал. что блоки управления от этой реабины тоже имеют встроенный алгоритм умножения шагов. Видимо разработчики тоже, как и я решили сделать хитрую штуку, но не справились с поставленной задачей.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение Сергей Саныч »

michael-yurov писал(а):Если менять сигнал направления всегда только при высоком или только при низком уровне, и выдерживать минимальные паузы - проблем не будет.
Это обеспечивал TurboCNC. Паузы были. Паразитный шаг получался именно в момент изменения состояния сигнала Dir. А Step все время был в низком уровне. Обнаружить удалось, только перебирая вручную биты регистров LPT в досовском отладчике.
Это я к тому, что возможность инвертировать выходной сигнал Step - она не лишняя.
michael-yurov писал(а):Прочитал. что блоки управления от этой реабины тоже имеют встроенный алгоритм умножения шагов.
Покажи, где? :o там такая древность, что по сравнению с ней L297+L298 - вершина хайтека. Во всяком случае, выходные каскады сделаны на дискретных транзисторах.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Serg-tmn писал(а):Покажи, где?
Вот, открыл первый попавшийся блок управления: http://reabin.ru/data/125-04m1.html
Читай второй пункт.

Если контроллер воспринимает момент смены направления, как шаг, как же я могу с таким бороться? Это уже серьезные проблемы у блока управления.
Я все же не буду делать такую настройку, т.к. это усложнит алгоритм и возможны человеческие ошибки с моей стороны. Лучше уж тогда просто логическим элементом менять полярность выхода, или подключить вход Step не между нолем и выходом, а между +5В и выходом.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение Сергей Саныч »

michael-yurov писал(а):Читай второй пункт.
не, у меня не такой. БУ-03 (без М1). Это едва ли не первый экземпляр их БУ для станков с ЧПУ (буквально). Год то ли 2005, то ли 2006. Работает только в режиме полушага.
Может, они и вправду с тех пор неплохо продвинулись.
michael-yurov писал(а):Если контроллер воспринимает момент смены направления, как шаг, как же я могу с таким бороться?
Если при смене направления Step находится в 1, паразитных шагов нет.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Осталось небольшое видео после последних тестов (снимал не для форума).
Если, вдруг кому интересно - выкладываю:
Голову не сверните - станок на боку стоит.
https://www.youtube.com/watch?v=_wGftWeLhKo

В фильтре включено умножение частоты в 20 раз, микрошаг драйверов - 1/48, источник сигнала - Mach3 LPT.
Конкретные скорости не скажу, т.к. уже не помню, да и особой роли это не играет.

Пока работу над фильтром пришлось остановить на неопределенное время по материальным причинам.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Днем получил посылку с осциллографом - и вот, наконец увидел, как работает моя штука:
1.png (3136 просмотров) <a class='original' href='./download/file.php?id=20510&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (30.25 КБ)</a>
2.png (3136 просмотров) <a class='original' href='./download/file.php?id=20511&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (31.04 КБ)</a>
6.png (3136 просмотров) <a class='original' href='./download/file.php?id=20512&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (29.45 КБ)</a>
7.png (3136 просмотров) <a class='original' href='./download/file.php?id=20513&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (28.34 КБ)</a>
8.png (3136 просмотров) <a class='original' href='./download/file.php?id=20514&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (29.39 КБ)</a>
10.png (3136 просмотров) <a class='original' href='./download/file.php?id=20515&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (17.77 КБ)</a>
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение Сергей Саныч »

А посчитать количество входных и выходных импульсов пробовал? (программно, надеюсь твой осциллограф умеет выводить данные не только в виде картинок).
Чудес не бывает. Бывают фокусы.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Serg-tmn писал(а):А посчитать количество входных и выходных импульсов пробовал? (программно, надеюсь твой осциллограф умеет выводить данные не только в виде картинок).
Ну он в файл сохраняет, частоту измеряет... Но как посчитать с его помощью - не знаю.

Вручную считал - ошибок нет.
Станком тоже долго ездил туда/сюда, в итоге - вернулся точно в ноль.

Сейчас прошивка совсем другая.
Совершенно новый алгоритм смены частоты (судя по осциллограммам - работает идеально? за что огромное благодарность Денису Железнякову).
На последней картинке видно, как плавно меняется частота, при этом она меняется во много раз чаще частоты импульсов.
Новый алгоритм смены направления,
И аппаратный подсчет входящих и исходящих импульсов без вмешательства программы (раньше я считал вызывая прерывания).
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение Сергей Саныч »

michael-yurov писал(а):Но как посчитать с его помощью - не знаю.
Если сохраняет в текстовый файл - нетрудно перевести в таблицу и посчитать тем же экселем. я твой первый девайс так и анализировал.
Чудес не бывает. Бывают фокусы.
asutpka
Мастер
Сообщения: 294
Зарегистрирован: 17 апр 2013, 14:27
Репутация: 78
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение asutpka »

С 21 10 этого года в очередной раз перечитал тему 2 раза. Работа проведена обалденная- я в восхищении. Появилась возможность наконец внятно сформулировать вопрос - попытаюсь
1 В данном графике я надеюсь вымышленное условие требуемого ускорения или реальные? Если реальные то как это может выражаться в реальности.
4 (1).png (3028 просмотров) <a class='original' href='./download/file.php?id=20655&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (76.86 КБ)</a>
2 Если я правильно понял Шаговые импульсы считаются и фиксируются с частотой сервоцикла - 4kHz. Как реагирует система если в одном цикле подсчёта появятся как "левые" импульсы так и "правые" . Я бы нашел их разность знак разности определил бы как направление , то есть отфильтровал бы такой скачёк ускорения. А как вы решили данную ситуацию?

3 В скриншотах осцилографа в нижнем правом углу продолжительность времени. Чему оно равно - клетке? всему экрану?
4 Что кроме корявости оттолкнуло решить эту задачу с помощью N процессоров где N = число осей? У вас есть связь вычислений динамики между осями?
5 Если не секрет Какова длина "сэмпла" входов выраженная в сервоциклах применяющихся при расчётах? Или я неверно понял логику записи импульсов?

6 Не понял целесообразность выдержки скважности импульсов. Это побочный продукт программирования или "художественный замысел"? Чем не угодило постоянное время импульса STEP?
Последний раз редактировалось asutpka 05 ноя 2013, 18:46, всего редактировалось 7 раз.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

Serg-tmn писал(а):
michael-yurov писал(а):Но как посчитать с его помощью - не знаю.
Если сохраняет в текстовый файл - нетрудно перевести в таблицу и посчитать тем же экселем. я твой первый девайс так и анализировал.
Я сейчас за количество импульсов не переживаю.
Важнее, чтобы он их генерировал корректно, без всяких огрызков (чрезмерно коротких импульсов),
И чтобы смена направления была правильной (осциллограмму не сохранил, но, вроде бы все отлично и с этим делом).

Сейчас занят тем, что придумываю и развожу интерфейсную плату (подбираю компоненты для гальванической развязки, думаю над сторожевым таймером, хочу сделать цифровой преобразователь ШИМ -> напряжение, на 12 битном ЦАП и ОУ).
Довольно дорогая плата получается... но и плохо делать тоже нет желания.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11624
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение michael-yurov »

asutpka писал(а):1 В данном графике я надеюсь вымышленное условие требуемого ускорения или реальные? Если реальные то как это может выражаться в реальности.
Этот график уже не актуален. Сейчас логика работы изменилась. Сейчас после фильтрации всплеска практически нет, а ускорение меняется примерно так (кстати, заодно, получились S-кривые ускорения):
44.png (3105 просмотров) <a class='original' href='./download/file.php?id=20516&sid=2fa38d9901597c3ed233e982d1a0af25&mode=view' target=_blank>Загрузить оригинал (62.73 КБ)</a>
(т.е. резких изменений ускорения нет, и нет провалов).
График пока не могу построить. Будет возможность - сделаю.

Ускорения вымышленные, но образованы они банальным провалом в последовательности импульсов.
На осциллограммах видны аналогичные случаи.
asutpka писал(а):2 Если я правильно понял Шаговые импульсы считаются и фиксируются с частотой сервоцикла - 4kHz.
Сейчас уже частота пересчета - 10 кГц.
asutpka писал(а):Как реагирует система если в одном цикле подсчёта появятся как "левые" импульсы так и "правые"
Реагирует одинаково. Так же, как отреагирует водитель, если на протяжении 50 метров установить десяток знаков ограничения скорости с разными значениями.
Материться только не умеет...
Импульсов то левых там нет... Т.е. их количество в итоге - верное, но вот частота может сильно скакать.
asutpka писал(а):3 В скриншотах осцилографа в нижнем правом углу продолжительность времени. Чему оно равно - клетке? всему экрану?
Оно равно ширине больших клеток (из точек).
asutpka писал(а):4 Что кроме корявости оттолкнуло решить эту задачу с помощью N процессоров где N = число осей? У вас есть связь вычислений динамики между осями?
В данный момент один процессор обрабатывает 2 оси. Больше - не позволяют аппаратные возможности. Связи между осями нет, кроме задания начальных параметров степени фильтрации. Оси обрабатываются совершенно идентично, и это позволило исключить взаимосвязь в расчетах.
asutpka писал(а):5 Если не секрет Какова длина "сэмпла" входов в сервоциклах?
Не понял вопрос.
Аватара пользователя
mhael
Мастер
Сообщения: 2443
Зарегистрирован: 09 мар 2013, 11:22
Репутация: 769
Настоящее имя: Ильдар
Контактная информация:

Re: Фильтр для сглаживания неравномерности импульсов Step

Сообщение mhael »

michael-yurov писал(а): ускорение меняется примерно так
Может все-таки скорость?
Закрыто

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