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

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

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

Сообщение ukr-sasha »

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

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

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

Оказалось, что припаять микроконтроллер совсем не сложно.
Дольше ставил его точно на свое место. :D
(надеюсь, что припаялся, без косяков)

А вот мелочевка - много времени отнимает.
IMAG0608.jpg (3796 просмотров) <a class='original' href='./download/file.php?id=15553&mode=view' target=_blank>Загрузить оригинал (1.01 МБ)</a>
Из за того, что я ошибся с шагом разъемов - придется эту платку использовать, как "дочернюю", и втыкать ее во что-то другое.
Оно и к лучшему, наверное. Будет проще сделать вставку фильтра в соединитель LPT - LPT
Или в интерфейсную плату.
Или просто в плату с разъемами под винт.

Блин, еще про подтягивающие резисторы на входе забыл....

И со стабилизатором напряжения накосячил.
Вместо того, чтобы найти родной даташит - взял назначение выводов с какой-то попавшейся в сети картинки :evil:

Радует хотя бы то, что программатор видит чип.
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2181
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

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

Сообщение ukr-sasha »

Михаил, поражаюсь, когда вы все успеваете!
nik1
Мастер
Сообщения: 8408
Зарегистрирован: 02 окт 2012, 07:37
Репутация: 3629
Откуда: Красногорск
Контактная информация:

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

Сообщение nik1 »

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

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

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

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

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

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

ukr-sasha писал(а):Михаил, поражаюсь, когда вы все успеваете!
А я и не успеваю. Александр, лучше - на "ты".
Сегодня вот опять в офисе уснул. "Друзья" заваливают своей работой, пытаются на мне денег заработать, и еще не довольны, что я в их сроки не укладываюсь. :?
nik1 писал(а):Классно получилось
Михаил, сколько по времени выходит на фрезеровку такой платки?
Спасибо! Да, получилось в целом - удачно. Платка маленькая, вырезалась за пол часа (я к тому же не спешил, т.к. боялся испортить). Миллиметровой фрезой выбрал большие участки, а потом гравером доработал.
Serg-tmn писал(а):Мелочевку - феном.
Вот феном - не умею. Да и ее раскладывать дольше, чем паять.
Может быть потому что первый раз собирал эту плату.
Serg-tmn писал(а):В чем ошибся? вроде как надо, если сравнивать с соседними микросхемами - 2,54. Или ровно 2,5 нарисовал?
Я дома рисовал, а разъемы - на работе лежали. Оказалось - у них шаг 3,81 мм http://www.promelec.ru/pdf/340.pdf
а я сделал 2,54. Возможно, подойдут вот такие клеммы: http://www.promelec.ru/catalog_info/53/121/505/592/ или что-то еще найдется с таким шагом.
А может быть и плату перерисую, но потом.
IMAG0613.jpg (3747 просмотров) <a class='original' href='./download/file.php?id=15561&mode=view' target=_blank>Загрузить оригинал (991.31 КБ)</a>
Может быть с разъемами даже к лучшему - идея использовать плату, как дочернюю, очень даже интересна.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

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

Сообщение aftaev »

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

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

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

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

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

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

aftaev писал(а):ты лучшее фрезы покажи какими фрезеровал, так нагляднее
Вообще - мелких фрез у меня довольно много,
Вот фото некоторых:
Плату фрезеровал 1 мм короткой фрезой (с белым кольцом), и гравером (с синими колпачками),
Отверстия платы и по контуру - 0,7 мм (слева от граверов).

Для сравнения тюбик суперклея и обычные фрезы на 2 и 3,175 мм (слева сверху).

А вот та, что в цанге, однозаходная на 6 мм - этой фрезой я чуть плату не вырезал, когда меня aftaev про COM-порт отвлекал :freak:
IMAG0617.jpg (3735 просмотров) <a class='original' href='./download/file.php?id=15567&mode=view' target=_blank>Загрузить оригинал (922.7 КБ)</a>
IMAG0619.jpg (3735 просмотров) <a class='original' href='./download/file.php?id=15568&mode=view' target=_blank>Загрузить оригинал (853.66 КБ)</a>
IMAG0615.jpg (3735 просмотров) <a class='original' href='./download/file.php?id=15566&mode=view' target=_blank>Загрузить оригинал (770.96 КБ)</a>
IMAG0620.jpg (3735 просмотров) <a class='original' href='./download/file.php?id=15569&mode=view' target=_blank>Загрузить оригинал (855.18 КБ)</a>
Фотоаппарата нет - жена отобрала и не отдает, поэтому снимаю на телефон.
И купить новый не дает, потому что ей новый фотоаппарат нужнее и больше хочется.
aftaev писал(а):Поток пойдет СМД раскладчик из своего станка сделаешь
Не, такого потока, конечно, не будет. Проще у китайцев заказать партию. У меня своей работы хватает.
Я не знаю, как быстрый раскладчик сделать - возникнут проблемы со сверхзвуковым барьером :hehehe:
Serg-tmn писал(а):michael-yurov, гребенки-мамы распаяю на кабели и вперед!
Serg, не спеши, я еще программу пишу.
Чем дольше буду писать - тем лучше будет работать.
romanru1
Мастер
Сообщения: 584
Зарегистрирован: 22 фев 2013, 22:31
Репутация: 177
Откуда: Первоуральск
Контактная информация:

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

Сообщение romanru1 »

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

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

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

romanru1 писал(а):
michael-yurov писал(а):Я не знаю, как быстрый раскладчик сделать - возникнут проблемы со сверхзвуковым барьером
Надо копать в сторону линейных моторов , на ебае вчера видал SANYO DENKI НЕДОРОГО , и опять начали посещать мысли : а как сделать самому ? , а сколько будет момент
Основная проблема в сильном нагреве таких моторов (а значит, их нужно охлаждать) и повышенной электропрожорливости.

У меня вот тут под боком есть завод, который производит одни из лучших и самых мощных редкоземельных магнитов http://www.poz-progress.ru/
Я к ним заезжал, покупал магниты лет 10 назад. Очень приветливые люди там работают.
Продали мне магнитов с крошечными сколами (дефектами) практически за бесценок.
Просили еще приезжать, а я так и не приехал.
romanru1
Мастер
Сообщения: 584
Зарегистрирован: 22 фев 2013, 22:31
Репутация: 177
Откуда: Первоуральск
Контактная информация:

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

Сообщение romanru1 »

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

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

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

В общем - возникла решаемая, но все же проблема.

Возможностей 16 предделителей таймеров явно не достаточно, т.к. возникает высокая дискретность задания высоких частот (близких к частоте микроконтроллера),
что в свою очередь создает проблемы с качеством работы петли обратной связи.
И к тому же - невозможность задания низких частот.

И если выделенные на графике артефакты можно убрать, используя для расчетов 32 числа, а для задания частоты - 16-битные,
то все равно лесенка задания частоты остается, и мне это не нравится.

Так что буду изворачиваться, используя 16-битный счетный регистр таймеров и 16 битный предделитель одновременно. Для точно го задания частот.
Пока что-то в голове не укладывается, как бы это сделать то...
Фильтр-новый-расчет.png (3618 просмотров) <a class='original' href='./download/file.php?id=15628&mode=view' target=_blank>Загрузить оригинал (234.21 КБ)</a>
Если ничего хорошего не выйдет - придется использовать микроконтроллеры с 32 таймерами и вычисления с плавающей точкой.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

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

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

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

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

michael-yurov писал(а):Пока что-то в голове не укладывается, как бы это сделать то...
Пол ночи не могу уснуть - из за сломанной от сложной задачи головы.
В итоге придумал, в какие моменты можно обновлять регистр счетчика таймера, и в какие моменты - предделитель, и как это сделать, чтобы не пострадала производительность и стабильность работы.
Теперь нужна помощь UAVpilot.
(может быть и не в эту тему стоило писать, но все же, тут, вроде, тоже нормально)
Вот у меня есть 32 битное число - требуемый интервал обновления таймера (в тактах),
и мне нужно сделать из него два 16 битных - для основного счетчика таймера и для предделителя.
Как когда, что обновлять, и как это повлияет на работу я уже обдумал; вопрос в другом:

Как красиво написать в Си (для быстрого выполнения) следующую обработку:
нужно сдвинуть вправо все биты исходного числа на столько позиций (порядков), чтобы это число стало умещаться в 16 битах.
И в то же время во втором 16-битном числе нужно установить столько единичек, начиная с младшего бита, на сколько порядков мы уменьшили исходное число.
Untitled-2.jpg (3605 просмотров) <a class='original' href='./download/file.php?id=15629&mode=view' target=_blank>Загрузить оригинал (149.62 КБ)</a>
Самое простое, что приходит в голову - это сделать цикл в котором проверять - умещается ли исходное число в 16 бит, и если нет - то сдвинуть его на позицию вправо (разделить на 2), и в то же время сдвинуть второе число на порядок влево (либо единицу из младшего бита сдвигать, либо на 2 умножать, либо сдвигать, и добавлять единицу в младший разряд). Повторить.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

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

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

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

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

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

Я понял тебя, у меня немного по другому получилось - получилось, что частота (интервал импульсов) скачет между соседними допустимыми значениями, но не с каждым тактом, а с каждым перерасчетом (петлей сервоцикла). В моем случае это 100 мкс (10 кГц), меньше не вижу смысла делать, т.к. у linuxcnc это 1 кГц, а у Mach3 - 500 Гц.
Serg-tmn писал(а):добиться работы таймеров на частоте, скажем, 300-500 кГц,
Пока не знаю, что получится. Скорее всего на данном чипе (24 мГц) - сумма частот всех импульсов всех каналов не должна будет превышать 2 мГц (или около того). А частота будет генерироваться исходя из ряда целочисленных делителей для 12 мГц опорного сигнала (т.е. для частот около 250 кГц шаг будет около 5 кГц, ну и чем ниже - тем мельче).
Serg-tmn писал(а):На низких частотах сглаживание теряет смысл. И твое устройство должно будет просто передавать импульсы на выход с определенной задержкой. Потому что низкую частоту надо еще как-то измерить. А для этого нужно время не меньше периода этой самой частоты - для 10 Гц - 100 мс, а такую задержку мы себе позволить не можем.
Вот над этим я себе и ломал голову всю ночь... В итоге - сломал, но решение нашел!
Сначала доказал, что задача имеет решение, а потом - нашел его.

Сложность была в другом - в микроконтроллере нельзя менять интервал до тех пор, пока счетчик таймера не обнулится и не сгенерирует очередной импульс.
Если текущая частота близка к нулевой, то, нельзя ждать, пока закончится интервал между очередными импульсами. Т.е. нужно будет уменьшить интервал до того, как таймер досчитает до конца.
А по простому это сделать нельзя.
Serg-tmn писал(а):Но сперва подумай - а так ли нужны очень низкие частоты?
Нужны! Без них вся концепция рушится, и Общее решение превращается в какой-то частный случай для определенного диапазона частот, скоростей, микрошага и т.п. А я наоборот, изо всех сил старался от этого уйти, чтобы никак не быть привязанным к конкретным настройкам конкретного станка.
Эта штука должна работать всегда, везде, и одинаково при любых условиях.

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

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

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

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

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

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

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

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

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

Serg-tmn писал(а):
michael-yurov писал(а):Например, если по какой-то причине на неподвижном станке комп вдруг выдасть последовательно десяток шагов на максимальной частоте?
А если придет ОДИН импульс? что с ним делать? Ждать второго? А если не дождемся (ну едем мы из точки 0,0 в точку 1000,0.001)? или передать его на станок по истечении некоторой фиксированной задержки?
Это частный случай. В реальности - шагнет со стандартной задержкой.
Закрыто

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