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

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

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

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

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

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

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

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

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

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

Serg-tmn писал(а):
michael-yurov писал(а):Это частный случай.
Но ведь очень низкая частота - это и есть последовательность таких "частных случаев". Причем сглаживать эту последовательность особого смысла нет, потому как каждый импульс приведет к продвижению с остановкой.
Я может не правильно сказал...
Частный т.е. не исключение, а точно такой же случай, как и с любой другой чстотой.
С этим вопросом проблем нет, я все обдумал. Почти все.
Мне сейчас нужно убедиться, что я могу изменить предделитель таймера не меняя основной счетчик, кторый мне нужно будет обновить, как обычно в момент переполнения.
В документации ответов не нашел, а в интернете народ плохо разобрался с вопросом и мнения противоречивые.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

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

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

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

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

Serg-tmn писал(а):Может, проще не менять коэффициент предделителя, а использовать "постделитель"? То есть, скажем, считать прерывания от таймера в программном счетчике и при достижении заданного значения разрешать выход таймера, а в остальное время запрещать?
Но сперва подумай - а так ли нужны очень низкие частоты? И как у тебя организовано измерение частоты (если это не :silent: )?
У меня так и было сделано на Atmel, это позволило уйти от операции деления для вычисления интервала.
Но такой метод очень прожорливый, и я не могу его себе позволить.

Сейчас алгоритм значительно сложнее.

Измерение частоты у меня никак не организовано. У меня вычисляется требуемая частота для текущего момента времени. Что-то вроде ФАПЧ или ПИД с а автоматической корректирвокой коэффициентов и еще некоторыми хитростями.
Т.е. у меня есть требуемая частота, есть таймеры, нужно менять частоту сигнала, генерируемого таймерами в соответствии с требуемой.
Производится подсчет входящих и исходящих импульсов, расхождения с расчетными, требуемыми и всякими там другими позициями, с учетом временного интервала фильтра.

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

Короче - не заморачивайтесь,
Буду пробовать,
Вроде бы есть варианты.
Вроде бы наоборот можно.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

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

UAVpilot писал(а):А даташите вполне чётко описана процедура перестройки счётчиков.
Ткни носом, пожалуйста. Я еще пока очень плохо ориентируюсь, где читать.
UAVpilot писал(а):купи микросхем от altera или xilinx, подключи их так-же к лпт, только передавай не степ и дир, а расстояние и скорость каждый сервоцикл... Ой, это помоему называется pluto-p.
Да не хочу я внешний контроллер делать. Он не ко всем системам подходит, с ним разбираться нужно, плагины/драйверы устанавливать. Их сейчас, как собак из диснеевских мультиков.
Передавать данные позиции после каждого сервоцикла - проще пареной репы, и обработать это потом намного проще.
Хотя... если ограничить минимальную частоту такой же величиной, как период сервоцикла... то и проблем с моментом изменения длительности импульсов не возникнет.
Но я все таки помучаюсь, попытаюсь сделать до конца правильно, без "костылей".
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

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

UAVpilot писал(а):ещё неделю не ткну - у меня тут инет еле шевелится, не располагает к чтению толстых пдфов. :(
помоему это было в апнотах про таймеры. на сайте st.com вбивай в поиск свой мк и тебе дадут правильный набор доков и примеров.
Так вот сегодня еще раз просматривал этот список, и опять не нашел.
Там есть файлик про таймеры, но я его вдоль и поперек изучил, но там только самое основное, а про тонкости не написано.
Поищу сам тогда. Но сначала попробую, как это работает - опытным путем.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

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

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

Настраиваю вывод 17 таймера, и на ноге выхода не вижу изменений,
При чем таймер работает, генерирует прерывание, но напряжение на выходе не меняет...

Настраиваю точно так же (через copy/paste) 3 таймер, и он нормально тикает и мигает выходом...

С входом pb3 еще какая-то фигня, как будто я его сжег, что само по себе крайне маловероятно.
Микроконтроллер и не читает состояние ноги, и не меняет его, и прерывание на этой ноге не срабатывает...

В общем - мучаюсь с элементарными вещами.
Времени уже не остается на это дело. Придется отложить на неопределенный срок :cry:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

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

UAVpilot писал(а):А какая-нибудь альтернативная функция для этой ноги не включена?
Так вот альтернативная функция и включена - для тикания таймером.
Выключаешь эту альтернативную функцию и оно работает.
Пол ночи мучился, и не смог добиться результата,
а на другом таймере настроил, и все сразу заработало.

Буду разбираться, попробую еще другие таймеры, как с ними будет.

Не мог продолжить писать программу из за ошибки оптимизатора.

Был сегодня в Промэлектронике, купил парочку микроконтроллеров с двумя 32 битными таймерами и частотой ядра 120 мГц.
Пока не знаю, буду ли использовать, но если на них все очень удачно получится, то буду делать на них.
romanru1
Мастер
Сообщения: 584
Зарегистрирован: 22 фев 2013, 22:31
Репутация: 177
Откуда: Первоуральск
Контактная информация:

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

Сообщение romanru1 »

michael-yurov писал(а):Был сегодня в Промэлектронике, купил парочку микроконтроллеров с двумя 32 битными таймерами и частотой ядра 120 мГц.Пока не знаю, буду ли использовать, но если на них все очень удачно получится, то буду делать на них.
Так может уже сразу STM32F4 DISCOVERY взять и паять ничего не надо и проект можно будет " раздувать " , 16 DMA потоков , 17 таймеров , к каждому можно прикрутить квадратурный энкодер ( даже простенький ) , и помимо сглаживания еще реализовать "поправку ошибки" , и управление с пульта без участия компа .
— Мы месяц по Галактике «маму» попоём — и планета у нас в кармане.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

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

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

romanru1 писал(а):
michael-yurov писал(а):Был сегодня в Промэлектронике, купил парочку микроконтроллеров с двумя 32 битными таймерами и частотой ядра 120 мГц.Пока не знаю, буду ли использовать, но если на них все очень удачно получится, то буду делать на них.
Так может уже сразу STM32F4 DISCOVERY взять и паять ничего не надо и проект можно будет " раздувать " , 16 DMA потоков , 17 таймеров , к каждому можно прикрутить квадратурный энкодер ( даже простенький ) , и помимо сглаживания еще реализовать "поправку ошибки" , и управление с пульта без участия компа .
Есть у меня STM32F4 DISCOVERY. У нее чип слишком довольно дорогой, а мне 98% его возможностей - не нужны.

Поправку ошибки реализовывать не хочу, т.к. ошибок не должно быть принципиально.
И с пульта управление и т.п. - не вижу смысла.
А вот 17 таймеров - это не так уж и много, учитывая то, что несколько из них системные,
а все остальные - 16 битные.
Там всего 2 штуки 32 битных.
А я взял чипы STM32F205RCT6 в 64-ногом корпусе, у которых столько же таймеров и всего, что мне нужно.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

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

UAVpilot писал(а):Пардон, поторопился закончить предложение:
Для большинства перефирии (адльтернативных функций) есть два набора ног, которые можно выбирать для упрощения разводки - может конфликтует с другим набором какой-нибудь другой перефирии?..
Может быть и в этом дело,
Я готовил файл инициализации в MicroXplorer, и он почему-то задал переназначение этой ноги,
наверное потому что я перепутал обычный и инверсный выход,
я убрал команду переназаначения, но эффекта не заметил.

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

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

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

В общем проблема нашлась:
По какой-то непонятной причине MicroXplorer предлагал использовать для первого неинверсного канала TIM17 альтернативный выход (PA7 - 17 пин) вместо нормального (PB9 - 46),
но, в принципе, используя функцию ремапинга позволял перенести на основоной выход.
Плату я по этой же причине развел под альтернативный выход.
Может быть я бы и разобрался с проблемой побыстрее, если бы не этот глюк с оптимизатором LTO, который как раз происходил тогда, когда я пытался настроить в программе этот таймер на выход.
Т.е. два глюка от разных программ и полная неуверенность в своих действиях привели к проблемам с опуханием мозга. :monkey:
Огромное спасибо всем, кто помогает! особенно UAVpilot!

За то теперь разобрался с переназначением выводов :problem:

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

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

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

Опять пол ночи возился с этой адской штукой,
Никак не получалось менять все параметры таймера одновременно в нужный момент, не перезагружая его.

На данный момент еще работы тьма тьмущая, но уже что-то заработало.
Боюсь радоваться, т.к. могут быть серьезные дефекты в алгоритме.
Так же на данный момент не проработан алгоритм смены направления,
Но все же что-то работает, сглаживает, и на слух я не могу отличить от KFlop-а.
https://www.youtube.com/watch?v=wHH1xUQuBOw

Частота ядра Mach3 - 25 кГц, никаких настроек оптимизации компьютера не проводилось.
Максимальная частота Step генерируемая LPT портом в данном тесте - 14,4 кГц.
Умножение частоты фильтром в 10 раз.
Итоговая частота Step - до 144 кГц.
Микрошаг драйверов - 1:48.
Скорость - до 4500 мм/мин.
Выше не позволила частота Step, т.к. оптопары драйверов уходили в насыщение при скважности генерируемого сигнала 50%, да и тест на скорость я пока не проводил.
Ускорения - от 30, 250 и 1000 мм/сек².

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

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

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

Попробовал увеличить скважность импульсов, чтобы оптопары драйверов не уходили в насыщение, и получил точно такую же максимальную скорость, как у килофлопа :D
Видео снимать не стал, т.к. сейчас стоит блок питания на 36 В, а этого явно мало для установки рекордов скорости.

С килофлопом, кстати, тоже пришлось повозиться со скважностью импульсов.

Наверное мне придется в своей штуке сделать какой-то переключатель для этой настройки. Или для всех жестко задать, например, 15-25%, т.к. драйверы у всех примерно одинаковые, и у оптопар обычно спадающий фронт сильнее размазан.

А еще я опасаюсь, что микроконтроллеру может не хватить быстродействия для всех 4 осей, т.к. уже сейчас он загружен более чем на 25%
К сожалению, оптимизация кода не работает, а она, как мне показалось, способна творить чудеса.
Сам алгоритм уже сложно сделать значительно быстрее.
Можно пожертвовать частотой сервоцикла (сейчас - 10 кГц), но это позволит выиграть в максимальной частоте шагов не существенно - процентов на 20-30.
Так что, вероятно, придется использовать чип мощнее раза в 3, и раза в 4 дороже, чтобы возможности фильтра охватывали требования большинства пользователей.
Закрыто

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