Интерполяция на asm для AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
PeLeg
Родился
Сообщения: 13
Зарегистрирован: Сб окт 22, 2011 06:05:22

Интерполяция на asm для AVR

Сообщение PeLeg »

Приветствую всех. Назрела проблема линейной интерполяции для шаговых двигателей,которые будут двигать устройство в 3D пространстве.
В частности необходимо интерполировать круг с переменным радиусом,линию и дугу. ШД подключаются через драйверы STEP/DIR. Хочу написать на ассемблере,на Си будет тормозить и хавать много памяти. Прошу помощи,если кто сталкивался с этими задачами или хотя бы указать ссылку на материал :) .
Реклама
woosterstring
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Чт сен 16, 2010 19:47:01
Откуда: Украина

Re: Интерполяция на asm для AVR

Сообщение woosterstring »

Задача интересная.
Вот мои соображения. В случае с шаговыми двигателями задать трёхмерный вектор скоростей, чтобы "гладко" отрисовать заданную кусочно кривую (окружности, прямые) скорее всего невозможно. Это связано с тем, что рабочий орган (станка?) обладает большой инертностью и такие двигатели работают по трапецеидальной диаграмме. Тогда нужен сервопривод с хорошим запасом мощности.
Когда говорят о линейной интерполяции то подразумевают линейную аппроксимацию заданной опорными точками кривой и соответственно перемещение рабочего органа по образующим отрезкам вписанной/описанной ломанной. Например, в двумерном варианте (ортогональный базис) "изображение" получится на равностоящей сетке с шагом минимальной дискреты двигателя, пересчитанной для реализованной кинематики (тут, кстати, тоже нужно иметь строгую модель). И вот если длина отрезка произвольно расположенной ломанной будет больше шага сетки то двигаться по ней точно с заданным допуском с шаговым двигателем не получится по описанной выше причине. Поэтому скорее всего нужно просто решать задачу обратную методу наименьших квадратов - ищутся "целочисленные" координаты точек, среднеквадратичное отклонение которых от исходной кривой наименьшее. Это справедливо для любой системы координат. Конечно, если исходных опорных точек достаточно. Иначе сначала нужно аппроксимировать саму кривую.
Может, тут будут полезные ссылки http://www.openservo.com/.
И поискать тут http://sourceforge.net/.
И могут оказаться полезными алгоритмы обработки растровой графики, тот же Брезенхэм.
Последний раз редактировалось woosterstring Вс окт 23, 2011 01:30:14, всего редактировалось 3 раза.
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Интерполяция на asm для AVR

Сообщение ploop »

Хочу написать на ассемблере,на Си будет тормозить и хавать много памяти.
У вас будет много вычислений, поэтому советую всё-же делать на Си. Для управления ШД скорость не так критична, а на ассемблере вычислениями (при том на 8-битном контроллере) можно взорвать себе мозг...
PeLeg
Родился
Сообщения: 13
Зарегистрирован: Сб окт 22, 2011 06:05:22

Re: Интерполяция на asm для AVR

Сообщение PeLeg »

woosterstring,благодарю,учту ваши замечания. А не подскажите книжку,где описывается подробно ЧПУ трех ШД или Servo двигателя в пространстве со всеми расчетами,хотя б в инглиш варианте,а то переходить с математической теории на практический лад туговато.
Реклама
Эиком - электронные компоненты и радиодетали
PeLeg
Родился
Сообщения: 13
Зарегистрирован: Сб окт 22, 2011 06:05:22

Re: Интерполяция на asm для AVR

Сообщение PeLeg »

ploop,да,кстати я тоже так подумал. В частности,могут возникнуть расчеты тригонометрических функций с помощью разбиения их в ряд.
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6317
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Интерполяция на asm для AVR

Сообщение Jack_A »

PeLeg писал(а): В частности,могут возникнуть расчеты тригонометрических функций с помощью разбиения их в ряд.
Не так страшен черт... Имея достаточный объем памяти программ, можно применить табличный метод с интерполяцией для повышения точности. На асме делается на раз без особого насилия над мозгом. Конечно, если есть хорошая библиотека float .
Реклама
woosterstring
Нашел транзистор. Понюхал.
Сообщения: 192
Зарегистрирован: Чт сен 16, 2010 19:47:01
Откуда: Украина

Re: Интерполяция на asm для AVR

Сообщение woosterstring »

Сходу книгу на русском подсказать не могу.
Дело в том, что все "Методики программирования станков с ЧПУ" содержат описание и примеры работы с функциями, но не описывают внутреннюю математику. А вот эта книга может оказаться весьма полезной: Smid P. CNC Programming Handbook. Есть аналогичные.
И ещё вспомнил: в сети есть несколько открытых проектов 3D принтеров (RepRap, etc.). Не привязываясь к схемотехнике, наверное можно адаптировать алгоритмы. На сайте есть статья http://radiokot.ru/lab/hardwork/33/, глубоко не читал. Может, можно найти исходники управляющей программы, подобной описанной.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»