Цифровой фильтр для коррекции неравномерности импульсов Step
- michael-yurov
- Почётный участник

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

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

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
У меня так и было сделано на Atmel, это позволило уйти от операции деления для вычисления интервала.Serg-tmn писал(а):Может, проще не менять коэффициент предделителя, а использовать "постделитель"? То есть, скажем, считать прерывания от таймера в программном счетчике и при достижении заданного значения разрешать выход таймера, а в остальное время запрещать?
Но сперва подумай - а так ли нужны очень низкие частоты? И как у тебя организовано измерение частоты (если это не)?
Но такой метод очень прожорливый, и я не могу его себе позволить.
Сейчас алгоритм значительно сложнее.
Измерение частоты у меня никак не организовано. У меня вычисляется требуемая частота для текущего момента времени. Что-то вроде ФАПЧ или ПИД с а автоматической корректирвокой коэффициентов и еще некоторыми хитростями.
Т.е. у меня есть требуемая частота, есть таймеры, нужно менять частоту сигнала, генерируемого таймерами в соответствии с требуемой.
Производится подсчет входящих и исходящих импульсов, расхождения с расчетными, требуемыми и всякими там другими позициями, с учетом временного интервала фильтра.
Сейчас разбираюсь, как бы так сделать, чтобы на низких частотах изменялся предделитель, а на высоких - основной счетный регистр,
чтобы на низких частотах реакция на изменение интервала была мгновенно, а на высоких - обеспечивалась высокая точность генерации интервала и не возникло слипшихся импульсов.
Придется обновление счетного регистра засунуть в прерывание обновления таймера (выполнять его только, когда необходимо, конечно).
Короче - не заморачивайтесь,
Буду пробовать,
Вроде бы есть варианты.
Вроде бы наоборот можно.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
а это никак не регламентируется, посему даже результат может быть разный для разных версий чипа.michael-yurov писал(а):Мне сейчас нужно убедиться, что я могу изменить предделитель таймера не меняя основной счетчик, кторый мне нужно будет обновить, как обычно в момент переполнения.
В документации ответов не нашел, а в интернете народ плохо разобрался с вопросом и мнения противоречивые.
А даташите вполне чётко описана процедура перестройки счётчиков.
купи микросхем от altera или xilinx, подключи их так-же к лпт, только передавай не степ и дир, а расстояние и скорость каждый сервоцикл... Ой, это помоему называется pluto-p.michael-yurov писал(а):вот думаю - может купить микросхем с более высокой рабочей частотой,
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- michael-yurov
- Почётный участник

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

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Так вот сегодня еще раз просматривал этот список, и опять не нашел.UAVpilot писал(а):ещё неделю не ткну - у меня тут инет еле шевелится, не располагает к чтению толстых пдфов.
помоему это было в апнотах про таймеры. на сайте st.com вбивай в поиск свой мк и тебе дадут правильный набор доков и примеров.
Там есть файлик про таймеры, но я его вдоль и поперек изучил, но там только самое основное, а про тонкости не написано.
Поищу сам тогда. Но сначала попробую, как это работает - опытным путем.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
ну так там есть порядок инициализации и запуска таймера, а любые изменения этого порядка не документированы - значит не факт, что работают или будут работать завтра.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Наступило "завтра" и таймеры не хотят работать.UAVpilot писал(а):ну так там есть порядок инициализации и запуска таймера, а любые изменения этого порядка не документированы - значит не факт, что работают или будут работать завтра.
Настраиваю вывод 17 таймера, и на ноге выхода не вижу изменений,
При чем таймер работает, генерирует прерывание, но напряжение на выходе не меняет...
Настраиваю точно так же (через copy/paste) 3 таймер, и он нормально тикает и мигает выходом...
С входом pb3 еще какая-то фигня, как будто я его сжег, что само по себе крайне маловероятно.
Микроконтроллер и не читает состояние ноги, и не меняет его, и прерывание на этой ноге не срабатывает...
В общем - мучаюсь с элементарными вещами.
Времени уже не остается на это дело. Придется отложить на неопределенный срок
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
А какая-нибудь альтернативная функция для этой ноги не включена?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- michael-yurov
- Почётный участник

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

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Есть у меня STM32F4 DISCOVERY. У нее чип слишком довольно дорогой, а мне 98% его возможностей - не нужны.romanru1 писал(а):Так может уже сразу STM32F4 DISCOVERY взять и паять ничего не надо и проект можно будет " раздувать " , 16 DMA потоков , 17 таймеров , к каждому можно прикрутить квадратурный энкодер ( даже простенький ) , и помимо сглаживания еще реализовать "поправку ошибки" , и управление с пульта без участия компа .michael-yurov писал(а):Был сегодня в Промэлектронике, купил парочку микроконтроллеров с двумя 32 битными таймерами и частотой ядра 120 мГц.Пока не знаю, буду ли использовать, но если на них все очень удачно получится, то буду делать на них.
Поправку ошибки реализовывать не хочу, т.к. ошибок не должно быть принципиально.
И с пульта управление и т.п. - не вижу смысла.
А вот 17 таймеров - это не так уж и много, учитывая то, что несколько из них системные,
а все остальные - 16 битные.
Там всего 2 штуки 32 битных.
А я взял чипы STM32F205RCT6 в 64-ногом корпусе, у которых столько же таймеров и всего, что мне нужно.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Пардон, поторопился закончить предложение:
Для большинства перефирии (адльтернативных функций) есть два набора ног, которые можно выбирать для упрощения разводки - может конфликтует с другим набором какой-нибудь другой перефирии?..
Для большинства перефирии (адльтернативных функций) есть два набора ног, которые можно выбирать для упрощения разводки - может конфликтует с другим набором какой-нибудь другой перефирии?..
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- michael-yurov
- Почётный участник

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

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
В общем проблема нашлась:
По какой-то непонятной причине MicroXplorer предлагал использовать для первого неинверсного канала TIM17 альтернативный выход (PA7 - 17 пин) вместо нормального (PB9 - 46),
но, в принципе, используя функцию ремапинга позволял перенести на основоной выход.
Плату я по этой же причине развел под альтернативный выход.
Может быть я бы и разобрался с проблемой побыстрее, если бы не этот глюк с оптимизатором LTO, который как раз происходил тогда, когда я пытался настроить в программе этот таймер на выход.
Т.е. два глюка от разных программ и полная неуверенность в своих действиях привели к проблемам с опуханием мозга.
Огромное спасибо всем, кто помогает! особенно UAVpilot!
За то теперь разобрался с переназначением выводов
Написал вот так, и теперь работает:
По какой-то непонятной причине MicroXplorer предлагал использовать для первого неинверсного канала TIM17 альтернативный выход (PA7 - 17 пин) вместо нормального (PB9 - 46),
но, в принципе, используя функцию ремапинга позволял перенести на основоной выход.
Плату я по этой же причине развел под альтернативный выход.
Может быть я бы и разобрался с проблемой побыстрее, если бы не этот глюк с оптимизатором LTO, который как раз происходил тогда, когда я пытался настроить в программе этот таймер на выход.
Т.е. два глюка от разных программ и полная неуверенность в своих действиях привели к проблемам с опуханием мозга.
Огромное спасибо всем, кто помогает! особенно UAVpilot!
За то теперь разобрался с переназначением выводов
Написал вот так, и теперь работает:
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Опять пол ночи возился с этой адской штукой,
Никак не получалось менять все параметры таймера одновременно в нужный момент, не перезагружая его.
На данный момент еще работы тьма тьмущая, но уже что-то заработало.
Боюсь радоваться, т.к. могут быть серьезные дефекты в алгоритме.
Так же на данный момент не проработан алгоритм смены направления,
Но все же что-то работает, сглаживает, и на слух я не могу отличить от 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 мм/сек².
Прошу прощения за безобразное видео, но я скорее звук записать пытался.
Никак не получалось менять все параметры таймера одновременно в нужный момент, не перезагружая его.
На данный момент еще работы тьма тьмущая, но уже что-то заработало.
Боюсь радоваться, т.к. могут быть серьезные дефекты в алгоритме.
Так же на данный момент не проработан алгоритм смены направления,
Но все же что-то работает, сглаживает, и на слух я не могу отличить от 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 мм/сек².
Прошу прощения за безобразное видео, но я скорее звук записать пытался.
Последний раз редактировалось michael-yurov 25 июн 2013, 09:29, всего редактировалось 1 раз.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Попробовал увеличить скважность импульсов, чтобы оптопары драйверов не уходили в насыщение, и получил точно такую же максимальную скорость, как у килофлопа 
Видео снимать не стал, т.к. сейчас стоит блок питания на 36 В, а этого явно мало для установки рекордов скорости.
С килофлопом, кстати, тоже пришлось повозиться со скважностью импульсов.
Наверное мне придется в своей штуке сделать какой-то переключатель для этой настройки. Или для всех жестко задать, например, 15-25%, т.к. драйверы у всех примерно одинаковые, и у оптопар обычно спадающий фронт сильнее размазан.
А еще я опасаюсь, что микроконтроллеру может не хватить быстродействия для всех 4 осей, т.к. уже сейчас он загружен более чем на 25%
К сожалению, оптимизация кода не работает, а она, как мне показалось, способна творить чудеса.
Сам алгоритм уже сложно сделать значительно быстрее.
Можно пожертвовать частотой сервоцикла (сейчас - 10 кГц), но это позволит выиграть в максимальной частоте шагов не существенно - процентов на 20-30.
Так что, вероятно, придется использовать чип мощнее раза в 3, и раза в 4 дороже, чтобы возможности фильтра охватывали требования большинства пользователей.
Видео снимать не стал, т.к. сейчас стоит блок питания на 36 В, а этого явно мало для установки рекордов скорости.
С килофлопом, кстати, тоже пришлось повозиться со скважностью импульсов.
Наверное мне придется в своей штуке сделать какой-то переключатель для этой настройки. Или для всех жестко задать, например, 15-25%, т.к. драйверы у всех примерно одинаковые, и у оптопар обычно спадающий фронт сильнее размазан.
А еще я опасаюсь, что микроконтроллеру может не хватить быстродействия для всех 4 осей, т.к. уже сейчас он загружен более чем на 25%
К сожалению, оптимизация кода не работает, а она, как мне показалось, способна творить чудеса.
Сам алгоритм уже сложно сделать значительно быстрее.
Можно пожертвовать частотой сервоцикла (сейчас - 10 кГц), но это позволит выиграть в максимальной частоте шагов не существенно - процентов на 20-30.
Так что, вероятно, придется использовать чип мощнее раза в 3, и раза в 4 дороже, чтобы возможности фильтра охватывали требования большинства пользователей.