Цифровой фильтр для коррекции неравномерности импульсов Step
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Классная плата получилась.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Оказалось, что припаять микроконтроллер совсем не сложно.
Дольше ставил его точно на свое место.
(надеюсь, что припаялся, без косяков)
А вот мелочевка - много времени отнимает. Из за того, что я ошибся с шагом разъемов - придется эту платку использовать, как "дочернюю", и втыкать ее во что-то другое.
Оно и к лучшему, наверное. Будет проще сделать вставку фильтра в соединитель LPT - LPT
Или в интерфейсную плату.
Или просто в плату с разъемами под винт.
Блин, еще про подтягивающие резисторы на входе забыл....
И со стабилизатором напряжения накосячил.
Вместо того, чтобы найти родной даташит - взял назначение выводов с какой-то попавшейся в сети картинки
Радует хотя бы то, что программатор видит чип.
Дольше ставил его точно на свое место.
(надеюсь, что припаялся, без косяков)
А вот мелочевка - много времени отнимает. Из за того, что я ошибся с шагом разъемов - придется эту платку использовать, как "дочернюю", и втыкать ее во что-то другое.
Оно и к лучшему, наверное. Будет проще сделать вставку фильтра в соединитель LPT - LPT
Или в интерфейсную плату.
Или просто в плату с разъемами под винт.
Блин, еще про подтягивающие резисторы на входе забыл....
И со стабилизатором напряжения накосячил.
Вместо того, чтобы найти родной даташит - взял назначение выводов с какой-то попавшейся в сети картинки
Радует хотя бы то, что программатор видит чип.
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2181
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Михаил, поражаюсь, когда вы все успеваете!
-
nik1
- Мастер
- Сообщения: 8408
- Зарегистрирован: 02 окт 2012, 07:37
- Репутация: 3629
- Откуда: Красногорск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Классно получилось
Михаил, сколько по времени выходит на фрезеровку такой платки?
Михаил, сколько по времени выходит на фрезеровку такой платки?
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Глаза боятся - руки делаютmichael-yurov писал(а):Оказалось, что припаять микроконтроллер совсем не сложно
Мелочевку - феном.michael-yurov писал(а):А вот мелочевка - много времени отнимает.
В чем ошибся? вроде как надо, если сравнивать с соседними микросхемами - 2,54. Или ровно 2,5 нарисовал?michael-yurov писал(а):Из за того, что я ошибся с шагом разъемов
Чудес не бывает. Бывают фокусы.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
А я и не успеваю. Александр, лучше - на "ты".ukr-sasha писал(а):Михаил, поражаюсь, когда вы все успеваете!
Сегодня вот опять в офисе уснул. "Друзья" заваливают своей работой, пытаются на мне денег заработать, и еще не довольны, что я в их сроки не укладываюсь.
Спасибо! Да, получилось в целом - удачно. Платка маленькая, вырезалась за пол часа (я к тому же не спешил, т.к. боялся испортить). Миллиметровой фрезой выбрал большие участки, а потом гравером доработал.nik1 писал(а):Классно получилось
Михаил, сколько по времени выходит на фрезеровку такой платки?
Вот феном - не умею. Да и ее раскладывать дольше, чем паять.Serg-tmn писал(а):Мелочевку - феном.
Может быть потому что первый раз собирал эту плату.
Я дома рисовал, а разъемы - на работе лежали. Оказалось - у них шаг 3,81 мм http://www.promelec.ru/pdf/340.pdfSerg-tmn писал(а):В чем ошибся? вроде как надо, если сравнивать с соседними микросхемами - 2,54. Или ровно 2,5 нарисовал?
а я сделал 2,54. Возможно, подойдут вот такие клеммы: http://www.promelec.ru/catalog_info/53/121/505/592/ или что-то еще найдется с таким шагом.
А может быть и плату перерисую, но потом. Может быть с разъемами даже к лучшему - идея использовать плату, как дочернюю, очень даже интересна.
-
aftaev
- Зачётный участник

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
ты лучшее фрезы покажи какими фрезеровал, так нагляднееmichael-yurov писал(а):Спасибо! Да, получилось в целом - удачно. Платка маленькая, вырезалась за пол часа (я к тому же не спешил, т.к. боялся испортить). Миллиметровой фрезой выбрал большие участки, а потом гравером доработал.
Поток пойдет СМД раскладчик из своего станка сделаешьmichael-yurov писал(а):Вот феном - не умею. Да и ее раскладывать дольше, чем паять.
Может быть потому что первый раз собирал эту плату.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
michael-yurov, гребенки-мамы распаяю на кабели и вперед!
Чудес не бывает. Бывают фокусы.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Вообще - мелких фрез у меня довольно много,aftaev писал(а):ты лучшее фрезы покажи какими фрезеровал, так нагляднее
Вот фото некоторых:
Плату фрезеровал 1 мм короткой фрезой (с белым кольцом), и гравером (с синими колпачками),
Отверстия платы и по контуру - 0,7 мм (слева от граверов).
Для сравнения тюбик суперклея и обычные фрезы на 2 и 3,175 мм (слева сверху).
А вот та, что в цанге, однозаходная на 6 мм - этой фрезой я чуть плату не вырезал, когда меня aftaev про COM-порт отвлекал
И купить новый не дает, потому что ей новый фотоаппарат нужнее и больше хочется.
Не, такого потока, конечно, не будет. Проще у китайцев заказать партию. У меня своей работы хватает.aftaev писал(а):Поток пойдет СМД раскладчик из своего станка сделаешь
Я не знаю, как быстрый раскладчик сделать - возникнут проблемы со сверхзвуковым барьером
Serg, не спеши, я еще программу пишу.Serg-tmn писал(а):michael-yurov, гребенки-мамы распаяю на кабели и вперед!
Чем дольше буду писать - тем лучше будет работать.
-
romanru1
- Мастер
- Сообщения: 584
- Зарегистрирован: 22 фев 2013, 22:31
- Репутация: 177
- Откуда: Первоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Надо копать в сторону линейных моторов , на ебае вчера видал SANYO DENKI НЕДОРОГО , и опять начали посещать мысли : а как сделать самому ? , а сколько будет моментmichael-yurov писал(а):Я не знаю, как быстрый раскладчик сделать - возникнут проблемы со сверхзвуковым барьером
— Мы месяц по Галактике «маму» попоём — и планета у нас в кармане.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Основная проблема в сильном нагреве таких моторов (а значит, их нужно охлаждать) и повышенной электропрожорливости.romanru1 писал(а):Надо копать в сторону линейных моторов , на ебае вчера видал SANYO DENKI НЕДОРОГО , и опять начали посещать мысли : а как сделать самому ? , а сколько будет моментmichael-yurov писал(а):Я не знаю, как быстрый раскладчик сделать - возникнут проблемы со сверхзвуковым барьером
У меня вот тут под боком есть завод, который производит одни из лучших и самых мощных редкоземельных магнитов http://www.poz-progress.ru/
Я к ним заезжал, покупал магниты лет 10 назад. Очень приветливые люди там работают.
Продали мне магнитов с крошечными сколами (дефектами) практически за бесценок.
Просили еще приезжать, а я так и не приехал.
-
romanru1
- Мастер
- Сообщения: 584
- Зарегистрирован: 22 фев 2013, 22:31
- Репутация: 177
- Откуда: Первоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Нагрев и прожорливость наверное потому чио большие токи , а большой ток потому что момент хочется большой ( редукции то никакой ) !michael-yurov писал(а):Основная проблема в сильном нагреве таких моторов (а значит, их нужно охлаждать) и повышенной электропрожорливости.
В случае smd раскладчика наверное ни то ни другое не грозит.
— Мы месяц по Галактике «маму» попоём — и планета у нас в кармане.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
В общем - возникла решаемая, но все же проблема.
Возможностей 16 предделителей таймеров явно не достаточно, т.к. возникает высокая дискретность задания высоких частот (близких к частоте микроконтроллера),
что в свою очередь создает проблемы с качеством работы петли обратной связи.
И к тому же - невозможность задания низких частот.
И если выделенные на графике артефакты можно убрать, используя для расчетов 32 числа, а для задания частоты - 16-битные,
то все равно лесенка задания частоты остается, и мне это не нравится.
Так что буду изворачиваться, используя 16-битный счетный регистр таймеров и 16 битный предделитель одновременно. Для точно го задания частот.
Пока что-то в голове не укладывается, как бы это сделать то...
Если ничего хорошего не выйдет - придется использовать микроконтроллеры с 32 таймерами и вычисления с плавающей точкой.
Возможностей 16 предделителей таймеров явно не достаточно, т.к. возникает высокая дискретность задания высоких частот (близких к частоте микроконтроллера),
что в свою очередь создает проблемы с качеством работы петли обратной связи.
И к тому же - невозможность задания низких частот.
И если выделенные на графике артефакты можно убрать, используя для расчетов 32 числа, а для задания частоты - 16-битные,
то все равно лесенка задания частоты остается, и мне это не нравится.
Так что буду изворачиваться, используя 16-битный счетный регистр таймеров и 16 битный предделитель одновременно. Для точно го задания частот.
Пока что-то в голове не укладывается, как бы это сделать то...
Если ничего хорошего не выйдет - придется использовать микроконтроллеры с 32 таймерами и вычисления с плавающей точкой.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
А оно сильно надо?michael-yurov писал(а):Возможностей 16 предделителей таймеров явно не достаточно, т.к. возникает высокая дискретность задания высоких частот (близких к частоте микроконтроллера)
Поясняю: вот есть LinuxCNC. У него базовая частота несколько десятков килогерц (50 кГц - это если очень повезет с материнкой). Частота Step получается путем деления базовой. Если базовая частота не кратна заданной, то появляется неравномерность (разброс периода частоты Step в пределах одного периода базовой). И ничего, живем как-то. Если тебе удастся добиться работы таймеров на частоте, скажем, 300-500 кГц, то это будет уже раз в 10 лучше, чем в LinuxCNC. Другое дело, что для этого придется корректировать коэффициент пересчета таймеров на каждом периоде их работы.
На низких частотах сглаживание теряет смысл. И твое устройство должно будет просто передавать импульсы на выход с определенной задержкой. Потому что низкую частоту надо еще как-то измерить. А для этого нужно время не меньше периода этой самой частоты - для 10 Гц - 100 мс, а такую задержку мы себе позволить не можем.michael-yurov писал(а):И к тому же - невозможность задания низких частот.
Чудес не бывает. Бывают фокусы.
- michael-yurov
- Почётный участник

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

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Надо сделать максимально хорошо, иначе от моей затеи не много толку будет.Serg-tmn писал(а):А оно сильно надо?
Это фигня, в общем то, с этим можно жить, а вот то, что он не может базовую частоту стабильно генерировать - вот это уже создает массу проблем.Serg-tmn писал(а):Если базовая частота не кратна заданной, то появляется неравномерность (разброс периода частоты Step в пределах одного периода базовой). И ничего, живем как-то.
Я понял тебя, у меня немного по другому получилось - получилось, что частота (интервал импульсов) скачет между соседними допустимыми значениями, но не с каждым тактом, а с каждым перерасчетом (петлей сервоцикла). В моем случае это 100 мкс (10 кГц), меньше не вижу смысла делать, т.к. у linuxcnc это 1 кГц, а у Mach3 - 500 Гц.
Пока не знаю, что получится. Скорее всего на данном чипе (24 мГц) - сумма частот всех импульсов всех каналов не должна будет превышать 2 мГц (или около того). А частота будет генерироваться исходя из ряда целочисленных делителей для 12 мГц опорного сигнала (т.е. для частот около 250 кГц шаг будет около 5 кГц, ну и чем ниже - тем мельче).Serg-tmn писал(а):добиться работы таймеров на частоте, скажем, 300-500 кГц,
Вот над этим я себе и ломал голову всю ночь... В итоге - сломал, но решение нашел!Serg-tmn писал(а):На низких частотах сглаживание теряет смысл. И твое устройство должно будет просто передавать импульсы на выход с определенной задержкой. Потому что низкую частоту надо еще как-то измерить. А для этого нужно время не меньше периода этой самой частоты - для 10 Гц - 100 мс, а такую задержку мы себе позволить не можем.
Сначала доказал, что задача имеет решение, а потом - нашел его.
Сложность была в другом - в микроконтроллере нельзя менять интервал до тех пор, пока счетчик таймера не обнулится и не сгенерирует очередной импульс.
Если текущая частота близка к нулевой, то, нельзя ждать, пока закончится интервал между очередными импульсами. Т.е. нужно будет уменьшить интервал до того, как таймер досчитает до конца.
А по простому это сделать нельзя.
Нужны! Без них вся концепция рушится, и Общее решение превращается в какой-то частный случай для определенного диапазона частот, скоростей, микрошага и т.п. А я наоборот, изо всех сил старался от этого уйти, чтобы никак не быть привязанным к конкретным настройкам конкретного станка.Serg-tmn писал(а):Но сперва подумай - а так ли нужны очень низкие частоты?
Эта штука должна работать всегда, везде, и одинаково при любых условиях.
Например, если по какой-то причине на неподвижном станке комп вдруг выдасть последовательно десяток шагов на максимальной частоте? тогда вильтр должен будет это дело моментально разровнять в плавный всплеск движения, отработать эти 10 шагов и плавно остановится. Т.е. график скорости должен быть похож на колокол по форме.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Если максимальное значение старшей части числа не сильно большое (скажем, вписывается в 8-9 битов), то можно использовать табличный метод.michael-yurov писал(а):Как красиво написать в Си (для быстрого выполнения) следующую обработку:
Чудес не бывает. Бывают фокусы.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
А если придет ОДИН импульс? что с ним делать? Ждать второго? А если не дождемся за разумное время (ну едем мы из точки 0,0 в точку 1000,0.001)? или передать его на станок по истечении некоторой фиксированной задержки?michael-yurov писал(а):Например, если по какой-то причине на неподвижном станке комп вдруг выдасть последовательно десяток шагов на максимальной частоте?
Чудес не бывает. Бывают фокусы.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Это частный случай. В реальности - шагнет со стандартной задержкой.Serg-tmn писал(а):А если придет ОДИН импульс? что с ним делать? Ждать второго? А если не дождемся (ну едем мы из точки 0,0 в точку 1000,0.001)? или передать его на станок по истечении некоторой фиксированной задержки?michael-yurov писал(а):Например, если по какой-то причине на неподвижном станке комп вдруг выдасть последовательно десяток шагов на максимальной частоте?