Aesthete Animus 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба *) по 4000 тактов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Понятно, сморозил я, но решение для энкодеров лучше такое : 1. Запускаем поллинг на >=16кГц. Энкодеры на один порт. 2. Учитывая, что автор возможно-таки присядет на mega64, читать порт и через таблицу переходов на все 256 состояний (ну, отожрет оно памяти, дык не страшно) сделать в асме наилегчайшее прерывание, работа которого уж точно будет незаметна. Только таблицу и состояния сделать сторонней программой. Так уж можно и 4/8/16/...скока нада энкодеров обслужить и без альтеры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aesthete Animus 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Понятно, сморозил я, но решение для энкодеров лучше такое : 1. Запускаем поллинг на >=16кГц. Энкодеры на один порт. 2. Учитывая, что автор возможно-таки присядет на mega64, читать порт и через таблицу переходов на все 256 состояний (ну, отожрет оно памяти, дык не страшно) сделать в асме наилегчайшее прерывание, работа которого уж точно будет незаметна. Только таблицу и состояния сделать сторонней программой. Так уж можно и 4/8/16/...скока нада энкодеров обслужить и без альтеры. Честноя говоря, не понял, что Вы имеете ввиду? Какой полинг? Чтобы получить скорость двигателя, нам необходимо замерять интервал между импульсами (или частоту импульсов) - как Вы это предлагаете делать на меге? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Чтобы получить скорость двигателя, нам необходимо замерять интервал между импульсами (или частоту импульсов) - как Вы это предлагаете делать на меге? Подождем автора, пусть скажет, какой у него временнОй шаг по стабилизации. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Тем не менее по 4000 тактов. Какой смысл обрабатывать таким образом. Необходимо чётко разделять ввод от вывода. То есть я бы делал груповвой ввод всех энкодеров (полингом как отмечали) с табличным пересчётом и формированием таблицы направлений. Ориентировочно это бы заняло ~ 15% загрузки процессора. Ну пусть 30%. Ну и груповой совтовый ШИМ ещё процентов 10-15. Причём при таком подходе очень мало загрузка будет зависить от количества каналов. О чём я и имел вам сказать. Да и ещё. Управление шаговым двигателем с дроблением шага, на мой взгляд сложнее управления двигателем постояннного тока с энкодером. Применение процессоров с аппаратной поддержкой управления двигателями, конечно приветствуется, но выбор элементной базы включает массу вопросов и соотношение стоимости/объёму выпуска имеет важное значение. Соответственно выбор за вами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Ну и груповой совтовый ШИМ ещё процентов 10-15. Могут быть грабли. Частота высокая потребоваться , например. Да и ещё. Управление шаговым двигателем с дроблением шага, на мой взгляд сложнее управления двигателем постояннного тока с энкодером. Не обязательно. Смотря как делать тот же синус, например. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 22 июня, 2008 Опубликовано 22 июня, 2008 · Жалоба Помоему гораздо круче было бы посадить всё на несколько тинек2313(если подойдут переферией) их по RS485 опрашивать такой же тинькой и через мост FIFO<=>USB контактировать с компьютером. Помоему, по цене и надёжности уделает LPC. Привет, ZLOI))) Давненько не общались) По теме. Лежат у меня 4 шт ATmega8-8PU. После прочтения всего отвеченного начал склоняться на сторону создания контроллера ДПТ на одной меге. Причем контроллер может быть получится универсальным. Т.е. его можно будет "засобачить" и в другую разработку. По началу (месяца 3 так назад) так и планировалось. LPC подкупил тем, что не придется отлаживать межконтроллерный обмен по шине, придумывать протокол, вся система будет на одном кристалле, что упростит ее.. К слову для свзязи трех отдельных контроллеров ДПТ намеревался использовать I2C. Хотя дешевить на разовых вещах, тем более в робототехнике не резон, помоему. Дешивить конечно незачем, но и дорожить тоже))) Тем более, как разработчик я должен заботиться и об экономической части. Т.е. не расходовать лишние деньги, при условии, что надежность, функциональность и запас на будущее будут обеспечены более дешевыми средствами. Он пользуется ОС, наверное, она и тормозит всё. ОС нет) В контроллер ДПТ на AVR ОС (имхо) в моем случае это лишнее... Для центрального МК, который будет управлять всей системой - может быть и понадобиться, но заранее сказать не могу. Очень советую посмотреть в сторону TI 320F28xxx это специализированные контроллеры преднозначенные для управления электроприводами. Такой контроллер поднимет вашу задачу без особых проблемм. К сожалению, освоение нового - это время, которого почти нет + деньги, которые тоже имеют свойство быть в малом количестве :( Пока есть задача справиться с использованием той элементной базы, которая есть на месте... Но за совет - спасибо! Я обязательно посмотрю в сторону этих контроллеров. Хотя бы на будущее. Подождем автора, пусть скажет, какой у него временнОй шаг по стабилизации. Я не имею большого опыта в ПИ регуляторах, но экспериментальными методами удалось установить, что ПИ по скорости замечательно работает, если его запускать каждые 15 - 5 мс. Тем не менее по 4000 тактов. Какой смысл обрабатывать таким образом. Необходимо чётко разделять ввод от вывода. То есть я бы делал груповвой ввод всех энкодеров (полингом как отмечали) с табличным пересчётом и формированием таблицы направлений. Ориентировочно это бы заняло ~ 15% загрузки процессора. Ну пусть 30%. Ну и груповой совтовый ШИМ ещё процентов 10-15. Причём при таком подходе очень мало загрузка будет зависить от количества каналов. О чём я и имел вам сказать. Здесь я с Вами согласен, потому что понимаю о чем идет речь. Но видимо буду делать систему на отдельных МК, как написал в этом же посте, чуть выше. Да и ещё. Управление шаговым двигателем с дроблением шага, на мой взгляд сложнее управления двигателем постояннного тока с энкодером. Можно чуть более подробнее? :) Действительно интересно! Применение процессоров с аппаратной поддержкой управления двигателями, конечно приветствуется, но выбор элементной базы включает массу вопросов и соотношение стоимости/объёму выпуска имеет важное значение. Соответственно выбор за вами. Вот именно! И как я выше написал - это время на освоение + деньги. Потом я все таки четко знаю, что на AVR эта задача решаема - следует из моего первого поста. И при этом энкодеры заведены на прерывания, программа написана на Си++. И все работает. Если действительно сделать законченный вариант контроллера ДПТ с возможностью подключения по шине к основному вычислителю + возможность подключения по RS-232, например к компу напрямую, для отладки, настройки, экспериметнов + какие либо навороты, то я думаю, получиться неплохой девайс! Огромнейшее спасибо ВСЕМ ответившим! Для меня ценны все Ваши рекомендации, советы, замечания! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 23 июня, 2008 Опубликовано 23 июня, 2008 · Жалоба В ветке AVR сейчас развернулась тема по опросу энкодера. Там обсуждаются многие варианты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться