понедельник, 15 ноября 2010 г.

Трехзвенный ползающий робот (энкодер vs потенциометр)

Всем привет!
Продолжение эпопеи не заставило себя долго ждать. Вкратце, напомним, что нужно было научить робота двигать лапами. Для этого необходимо осуществить регулирование скоростью и перемещением выходного звена. При этом в качестве датчика можно использовать либо, уже установленный инкрементный энкодер, либо аналоговый потенциометр. Оба этих решения имеют свои недостатки.
Энкодер плох тем, что он не дает сведений о положении звена, а еще энкодер подобран высокоточный - 500 импульсов за оборот, и того при частоте 8000 оборотв в минуту, и того 67000 импульсов в секунду. При этом хотелось бы напомнить что с энкодера идет два канала(ну чтобы определять направление вращения) и того в два раза больше, а вообще энкодера 2, и того получили почти 268КГц, ну то есть требуется очень много ресурсов контроллера чтобы просто получить значение перемещения, а ведь контроллеру нужно еще генерировать ШИМ, общаться с компом, мигать лампочками и т.д.С потенциометром тоже много проблем, во первых даже в дорогих резистивных датчиках погрешность достигает 10%, а те что мы купили стоили 15 рублей штука:) Также потенциометр это контактный датчик, следовательно имеет место износ, всякие неточности дребезг и т.д. А еще аналоговому датчику нужно АЦП. Еще хочу обратить внимание на то что датчик нужно установить на оси вращения и связать с выходным звеном (лапой), а это требует каких-то оригинальных механических решений, и т.д.

А теперь немного любопытных графиков. Мы подключили оба датчика к нашей замечательной платке управления, и покрутили лапой вручную, получилось вот так:
Как видим, данные отличаются, при этом видно, что потенциометр дает значительную ошибку показаний, это связано с его значительной нелинейностью, при этом ошибка достигает 25%. Далее попробуем отработать синус с помощью систему управления, снимая показания с датчиков:
Как видно из графиков, наблюдается смещение друг относительно друга, как по времени, так и по значению. Отставание по времени обусловлено временем обработки сигнала. Смещение графиков по значению, как и в предыдущем графике обусловлено нелинейностью резистивных датчиков. И казалось бы решение очевидно, выкинуть аналоговые датчики и делать все на энкодерах, пытаясь программно решить проблемы связанные с их "не абсолютностью". Но вот еще один график:Если кто нет понял сразу, объясню. При отработке синуса по энкодерам, происходит закономерное накопление ошибки, шаг за шагом "лапы" робота сдвигаются все ближе и ближе. Наиболее вероятное объяснение этого явления - нехватка производительности., о чем и говорилось еще при первичном анализе датчиков. В итоге, энкодеры использовать нельзя, так как системе управления не хватает производительных ресурсов, для обработки высокочастотного сигнала с двух датчиков одновременно, а потенциометры не достаточно точны.
Какие можно сделать выводы? Ну наверно нужно было подумать, когда выбирались такие высокоточные энкодеры на мотор редуктор, когда за проход выходным звеном 180 градусов, на САУ поступает 25 000 импульсов!!! И того точность составляет 0.0072 градуса, для динамической системы, которая должна отрабатывать два положения с разной скоростью, ну а если еще учесть, что мертвый ход, даже самого навороченного редуктора, без спец. приспособлений при таком передаточном отношении будет... ну пол градуса минимум, то в итоге становится грустно.
Но мы нашли решение, о нем в следующих сообщениях.
Продолжение следует...

Комментариев нет:

Отправить комментарий