В частности необходимо интерполировать круг с переменным радиусом,линию и дугу. ШД подключаются через драйверы STEP/DIR. Хочу написать на ассемблере,на Си будет тормозить и хавать много памяти. Прошу помощи,если кто сталкивался с этими задачами или хотя бы указать ссылку на материал
Интерполяция на asm для AVR
Интерполяция на asm для AVR
Приветствую всех. Назрела проблема линейной интерполяции для шаговых двигателей,которые будут двигать устройство в 3D пространстве.
В частности необходимо интерполировать круг с переменным радиусом,линию и дугу. ШД подключаются через драйверы STEP/DIR. Хочу написать на ассемблере,на Си будет тормозить и хавать много памяти. Прошу помощи,если кто сталкивался с этими задачами или хотя бы указать ссылку на материал
.
В частности необходимо интерполировать круг с переменным радиусом,линию и дугу. ШД подключаются через драйверы STEP/DIR. Хочу написать на ассемблере,на Си будет тормозить и хавать много памяти. Прошу помощи,если кто сталкивался с этими задачами или хотя бы указать ссылку на материал
- Реклама
-
woosterstring
- Нашел транзистор. Понюхал.
- Сообщения: 192
- Зарегистрирован: Чт сен 16, 2010 19:47:01
- Откуда: Украина
Re: Интерполяция на asm для AVR
Задача интересная.
Вот мои соображения. В случае с шаговыми двигателями задать трёхмерный вектор скоростей, чтобы "гладко" отрисовать заданную кусочно кривую (окружности, прямые) скорее всего невозможно. Это связано с тем, что рабочий орган (станка?) обладает большой инертностью и такие двигатели работают по трапецеидальной диаграмме. Тогда нужен сервопривод с хорошим запасом мощности.
Когда говорят о линейной интерполяции то подразумевают линейную аппроксимацию заданной опорными точками кривой и соответственно перемещение рабочего органа по образующим отрезкам вписанной/описанной ломанной. Например, в двумерном варианте (ортогональный базис) "изображение" получится на равностоящей сетке с шагом минимальной дискреты двигателя, пересчитанной для реализованной кинематики (тут, кстати, тоже нужно иметь строгую модель). И вот если длина отрезка произвольно расположенной ломанной будет больше шага сетки то двигаться по ней точно с заданным допуском с шаговым двигателем не получится по описанной выше причине. Поэтому скорее всего нужно просто решать задачу обратную методу наименьших квадратов - ищутся "целочисленные" координаты точек, среднеквадратичное отклонение которых от исходной кривой наименьшее. Это справедливо для любой системы координат. Конечно, если исходных опорных точек достаточно. Иначе сначала нужно аппроксимировать саму кривую.
Может, тут будут полезные ссылки http://www.openservo.com/.
И поискать тут http://sourceforge.net/.
И могут оказаться полезными алгоритмы обработки растровой графики, тот же Брезенхэм.
Вот мои соображения. В случае с шаговыми двигателями задать трёхмерный вектор скоростей, чтобы "гладко" отрисовать заданную кусочно кривую (окружности, прямые) скорее всего невозможно. Это связано с тем, что рабочий орган (станка?) обладает большой инертностью и такие двигатели работают по трапецеидальной диаграмме. Тогда нужен сервопривод с хорошим запасом мощности.
Когда говорят о линейной интерполяции то подразумевают линейную аппроксимацию заданной опорными точками кривой и соответственно перемещение рабочего органа по образующим отрезкам вписанной/описанной ломанной. Например, в двумерном варианте (ортогональный базис) "изображение" получится на равностоящей сетке с шагом минимальной дискреты двигателя, пересчитанной для реализованной кинематики (тут, кстати, тоже нужно иметь строгую модель). И вот если длина отрезка произвольно расположенной ломанной будет больше шага сетки то двигаться по ней точно с заданным допуском с шаговым двигателем не получится по описанной выше причине. Поэтому скорее всего нужно просто решать задачу обратную методу наименьших квадратов - ищутся "целочисленные" координаты точек, среднеквадратичное отклонение которых от исходной кривой наименьшее. Это справедливо для любой системы координат. Конечно, если исходных опорных точек достаточно. Иначе сначала нужно аппроксимировать саму кривую.
Может, тут будут полезные ссылки http://www.openservo.com/.
И поискать тут http://sourceforge.net/.
И могут оказаться полезными алгоритмы обработки растровой графики, тот же Брезенхэм.
Последний раз редактировалось woosterstring Вс окт 23, 2011 01:30:14, всего редактировалось 3 раза.
Re: Интерполяция на asm для AVR
У вас будет много вычислений, поэтому советую всё-же делать на Си. Для управления ШД скорость не так критична, а на ассемблере вычислениями (при том на 8-битном контроллере) можно взорвать себе мозг...Хочу написать на ассемблере,на Си будет тормозить и хавать много памяти.
Re: Интерполяция на asm для AVR
woosterstring,благодарю,учту ваши замечания. А не подскажите книжку,где описывается подробно ЧПУ трех ШД или Servo двигателя в пространстве со всеми расчетами,хотя б в инглиш варианте,а то переходить с математической теории на практический лад туговато.
Re: Интерполяция на asm для AVR
ploop,да,кстати я тоже так подумал. В частности,могут возникнуть расчеты тригонометрических функций с помощью разбиения их в ряд.
- Реклама
Re: Интерполяция на asm для AVR
Не так страшен черт... Имея достаточный объем памяти программ, можно применить табличный метод с интерполяцией для повышения точности. На асме делается на раз без особого насилия над мозгом. Конечно, если есть хорошая библиотека float .PeLeg писал(а): В частности,могут возникнуть расчеты тригонометрических функций с помощью разбиения их в ряд.
-
woosterstring
- Нашел транзистор. Понюхал.
- Сообщения: 192
- Зарегистрирован: Чт сен 16, 2010 19:47:01
- Откуда: Украина
Re: Интерполяция на asm для AVR
Сходу книгу на русском подсказать не могу.
Дело в том, что все "Методики программирования станков с ЧПУ" содержат описание и примеры работы с функциями, но не описывают внутреннюю математику. А вот эта книга может оказаться весьма полезной: Smid P. CNC Programming Handbook. Есть аналогичные.
И ещё вспомнил: в сети есть несколько открытых проектов 3D принтеров (RepRap, etc.). Не привязываясь к схемотехнике, наверное можно адаптировать алгоритмы. На сайте есть статья http://radiokot.ru/lab/hardwork/33/, глубоко не читал. Может, можно найти исходники управляющей программы, подобной описанной.
Дело в том, что все "Методики программирования станков с ЧПУ" содержат описание и примеры работы с функциями, но не описывают внутреннюю математику. А вот эта книга может оказаться весьма полезной: Smid P. CNC Programming Handbook. Есть аналогичные.
И ещё вспомнил: в сети есть несколько открытых проектов 3D принтеров (RepRap, etc.). Не привязываясь к схемотехнике, наверное можно адаптировать алгоритмы. На сайте есть статья http://radiokot.ru/lab/hardwork/33/, глубоко не читал. Может, можно найти исходники управляющей программы, подобной описанной.


