Цифровой фильтр для коррекции неравномерности импульсов Step
-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Почему 500 кгц? 24мгц.michael-yurov писал(а):Ну, как же хватит с головой? Если взять максимальную частоту таймера, например, 500 кГц,.. то ближайшая меньшая возможная частота будет уже 250 кГц, а следующая - 125 кГц, и т.п.
Давай посчитаем. При максимальной частоте степ 200кгц за период сервоцикла может пройти максимум 200(1мс) или 400(2мс) импульсов.
Но измеряем не количество, а период. Т.е. За 5мкс получаем наихудшудшее разрешение 5*24 - 120 импульсов в счетчике.
И нужно учесть, что за сервоцикл приращение периода не может увеличится больше величины заданной предельным ускорением в системе.
Если это произошло, то это ошибка.
Поэтому берем отсчеты периодов, записываем в фифо память и вычисляем на основе этого скорость и ускорение.
Неравномерность сигналов степ будет давать скачки вычисленной скорости, а соответственно и ускорений.
Ставим на ускорение фильтр нижних частот и преобразуем обратно в скорость. Скорость подаем на ПИД и генерируем шаги.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Ускорение системы не влияет на результат работы - это одна из хитростей, что фильтр будет корректно работать с любыми ускорениями (если оно постоянно в течении выполнения УП).
Но, конечно, он наиболее адекватен в обычном диапазоне (от 0,001 g до 0,5 g).
И еще, про четыре канала в таймере - все равно не получится генерировать одним таймером 4 разные частоты.
В общем - я понял, что можно немного снизить требования к фильтру и больше доверившись драйверу LPT - увеличить быстродействие прошивки.
Но я полагаю, что Mach3 может спокойно подвиснуть на время значительно большее одного сервоцикла, и тогда генерация низких частот (около 0,5 - 1 кГц) может сильно пострадать.
В общем я уже не хочу переделывать программу коренным образом, т.к. она написана и работает. А увеличение стоимости устройства на 100 руб (из за более дорогого чипа) ни на что не повлияет.
По большому счету у меня примерно так все и работает,
Только период сервоцикла - 0,25 мс, реакция на изменение входящей частоты практически мгновенная,
Но самое сложное из всего в этой штуке (если не считать изучения STM32 с нуля) это адаптация алгоритмов и коэффициентов фильтра пот такие значения, чтобы при достаточно высокой силе фильтрации сохранить очень высокую точность следования траектории. В случае со средним уровнем фильтрации и ускорениях 500 мм/сек2, отклонение в местах резкого изменения направления не превысит 0,00625 мм. А в случае с минимальным уровнем фильтрации - менее 0,002 мм.
Но и минимальная фильтрация дает очень хорошие результаты.
Но, конечно, он наиболее адекватен в обычном диапазоне (от 0,001 g до 0,5 g).
И еще, про четыре канала в таймере - все равно не получится генерировать одним таймером 4 разные частоты.
В общем - я понял, что можно немного снизить требования к фильтру и больше доверившись драйверу LPT - увеличить быстродействие прошивки.
Но я полагаю, что Mach3 может спокойно подвиснуть на время значительно большее одного сервоцикла, и тогда генерация низких частот (около 0,5 - 1 кГц) может сильно пострадать.
В общем я уже не хочу переделывать программу коренным образом, т.к. она написана и работает. А увеличение стоимости устройства на 100 руб (из за более дорогого чипа) ни на что не повлияет.
По большому счету у меня примерно так все и работает,
Только период сервоцикла - 0,25 мс, реакция на изменение входящей частоты практически мгновенная,
Но самое сложное из всего в этой штуке (если не считать изучения STM32 с нуля) это адаптация алгоритмов и коэффициентов фильтра пот такие значения, чтобы при достаточно высокой силе фильтрации сохранить очень высокую точность следования траектории. В случае со средним уровнем фильтрации и ускорениях 500 мм/сек2, отклонение в местах резкого изменения направления не превысит 0,00625 мм. А в случае с минимальным уровнем фильтрации - менее 0,002 мм.
Но и минимальная фильтрация дает очень хорошие результаты.
Последний раз редактировалось michael-yurov 28 июн 2013, 15:53, всего редактировалось 1 раз.
-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Тогда рекомендую перейти на STM32F373CCT6. И плату не придется переделывать, и плавающая точка есть, и два 32 битных таймера.michael-yurov писал(а):В общем я уже не хочу переделывать программу коренным образом, т.к. она написана и работает. А увеличение стоимости устройства на 100 руб (из за более дорогого чипа) ни на что не повлияет.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Impartial, большое спасибо за заинтересованность и действительно полезные советы.
Это я просто уперся по той причине, что сейчас завален срочной работой, и мне хочется побыстрее выбросить все связанное с фильтром из головы.
Работа сделана, и, пока что значительных проблем, требующих серьезных переделок - нет.
На самом деле я перебрал в голове уже уйму вариантов реализации, и все таки пришел к выводу, что текущий - наиболее удачный и в плане качества работы и в плане надежности (в первою очередь для меня важно не потерять ни одного шага). На более сложную прошивку у меня не хватит пока опыта и умственных способностей.
STM32F373CCT6 у нас в магазине нет в наличии
http://www.promelec.ru/catalog/1/11/1777/0/
Думал - может быть перейти на 64-ногий корпус, чтобы меньше возиться с разводкой.
Еще, если делать интерфейсную плату - нужно будет добавить преобразователь для ШИМ, чтобы чип измерял входящую скважность, и генерировал ШИМ на большей частоте, для последующего преобразования.
И обработку сторожевого таймера еще нужно будет добавить.
Это я просто уперся по той причине, что сейчас завален срочной работой, и мне хочется побыстрее выбросить все связанное с фильтром из головы.
Работа сделана, и, пока что значительных проблем, требующих серьезных переделок - нет.
На самом деле я перебрал в голове уже уйму вариантов реализации, и все таки пришел к выводу, что текущий - наиболее удачный и в плане качества работы и в плане надежности (в первою очередь для меня важно не потерять ни одного шага). На более сложную прошивку у меня не хватит пока опыта и умственных способностей.
STM32F373CCT6 у нас в магазине нет в наличии
Думал - может быть перейти на 64-ногий корпус, чтобы меньше возиться с разводкой.
Еще, если делать интерфейсную плату - нужно будет добавить преобразователь для ШИМ, чтобы чип измерял входящую скважность, и генерировал ШИМ на большей частоте, для последующего преобразования.
И обработку сторожевого таймера еще нужно будет добавить.
-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
372 увидел, что есть. Я порекомендовал 373 по той причине, что у многих есть интерес к преобразователю степ - 10вольт.michael-yurov писал(а):STM32F373CCT6 у нас в магазине нет в наличии
В 373 процессоре есть три ЦАП. Наиболее подходящий для этого. Дополни свое устройство этой фичей и интерес к нему резко вырастет.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
А смысл? Зачем оно без подключенного энкодера?Impartial писал(а):у многих есть интерес к преобразователю степ - 10вольт.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Этот номер не пройдет - нужна ведь гальваническая развязка между микроконтоллером и инвертором. Я хотел измерить скважность, сгенерировать заново шим, передать через оптопару и преобразовать простым RC фильтром и ОУImpartial писал(а):372 увидел, что есть. Я порекомендовал 373 по той причине, что у многих есть интерес к преобразователю степ - 10вольт.
В 373 процессоре есть три ЦАП. Наиболее подходящий для этого. Дополни свое устройство этой фичей и интерес к нему резко вырастет.
Я запутался - вы про шпиндель, или про аналоговые сервы?UAVpilot писал(а):А смысл? Зачем оно без подключенного энкодера?
Если про сервы, то я уже обдумываю эту мысль. Устройство легко переделать под эту задачу,
использовать еще несколько таймеров для обратной связи от энкодера.
Последний раз редактировалось michael-yurov 28 июн 2013, 21:41, всего редактировалось 1 раз.
-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Так а какие проблемы энкодер подключить? Те же таймера и использовать. Они специально под обработку энкодеров заточены. Только на корпус другой придется перейти.
-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Гальваноразвязку проще по аналогу сделать, чем потом фильтровать ШИМ.michael-yurov писал(а):Этот номер не пройдет - нужна ведь гальваническая развязка между микроконтоллером и инвертором. Я хотел измерить скважность, сгенерировать заново шим, передать через оптопару и преобразовать простым RC фильтром и ОУ
- michael-yurov
- Почётный участник

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

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

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
мож MYapsc пару букв от michael-yurovUAVpilot писал(а):Я даже ему хорошее название придумал: YAPSC.
а что уговаривать сервы аналоговые купил вот и делай сразу MYapsc, а не мудри с ШИМомmichael-yurov писал(а):Меня aftaev об этом давно просит.
Может быть уговорит - сделаю.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Не, YAPSC не получится.
Во первых - из за сложности повторения печатной платы для lqfp.
Во вторых - я не готов пока открыть исходники.
Думаю, было бы хорошей идеей реализовать YAPSC на какой-нибудь недорогой стандартной популярной отладочной плате STM32,
выложить прошивку и инструкцию пошаговую.
Во первых - из за сложности повторения печатной платы для lqfp.
Во вторых - я не готов пока открыть исходники.
Думаю, было бы хорошей идеей реализовать YAPSC на какой-нибудь недорогой стандартной популярной отладочной плате STM32,
выложить прошивку и инструкцию пошаговую.
Наверное, я не так говорил, а что-нибудь вроде "Чего там снимать - я же под слоем воды фрезерую - там ничего не видно."aftaev писал(а):я фрезерую под водой
-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Давай опять посчитаем. Максимальную частоту ШИМ, при использовании тактовой 72мгц и при том же разрешении, что дает ЦАП (4096), можем получитьmichael-yurov писал(а):Мне не проще, я боюсь нелинейных искажений, а фильтровать высокочастотный ШИМ очень просто.
72 000 000/4096 = 17578,125. Не так уж и много.
Температурный джиттер оптрона не позволит точно передать изменение периода в 1/72 000 000 = 13,8 нс. Плюс свою лепту в задержку внесет фильтр.
Возникает проблема со скоростным ПИД, где получается при 4кгц сервоцикле всего чуть больше 4х итераций.
-
aftaev
- Зачётный участник

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
а что религия запрещает скрывать исходникиmichael-yurov писал(а):Во вторых - я не готов пока открыть исходники.
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
На отладочной не получится - я не встречал отладочных плат с аналоговым трактом для реализации +/-10V.michael-yurov писал(а):Думаю, было бы хорошей идеей реализовать YAPSC на какой-нибудь недорогой стандартной популярной отладочной плате STM32,
выложить прошивку и инструкцию пошаговую.
P.S. Желающие заказать платы YAPSC на Резоните пишите в личку, дам номер заказа этих плат - возможно сможете сэкономить на стоимости подготовки.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- michael-yurov
- Почётный участник

- Сообщения: 11730
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4703
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Фильтр для сглаживания неравномерности импульсов Step
Блин, да я про преобразователь ШИМ -> напряжение для управления шпинделем говорил про опторазвязку.Impartial писал(а):Давай опять посчитаем. Максимальную частоту ШИМ, при использовании тактовой 72мгц и при том же разрешении, что дает ЦАП (4096), можем получить
72 000 000/4096 = 17578,125. Не так уж и много.
Температурный джиттер оптрона не позволит точно передать изменение периода в 1/72 000 000 = 13,8 нс. Плюс свою лепту в задержку внесет фильтр.
Возникает проблема со скоростным ПИД, где получается при 4кгц сервоцикле всего чуть больше 4х итераций.
А для сервоприводов - это отдельная история, для них, наверное, и не нужно никакую гальваническую развязку.
Значит придется еще надстройку придумать...UAVpilot писал(а):На отладочной не получится - я не встречал отладочных плат с аналоговым трактом для реализации +/-10V.
Хотя, тогда уже не понятно, стоит ли заморачиваться с оценочной платой.
