От одного из читателей блога прозвучал такой вопрос:ставлю два двигателя (схема танковая), с синхронизацией, все-ровно прямо |
На такое поведение может влиять много факторов: заряд батареек, версия прошивки, внутренние особенности двигателей.
Есть несколько возможностей уменьшить этот эффект (убрать совсем - вряд ли):
- При большом выборе моторов, можно подобрать два таких мотора, погрешность которых при движении прямо минимальна. Методика подбора описана здесь.
- На "текстовых" языках программирования есть возможность передать коэфициенты во внутренний PID регулятор двигателей. При "правильно" подобрнанных коэфициентах, разницу в движении моторов можно нивелировать.
- Можно попробовать написать свой собственный PID регулятор для движения. Здесь замерямой величиной будет разница во вращении двигателей за единицу времени, а контроллируемой - мощность, подаваемая на каждый мотор.
У меня такой вопрос: В стандартной среде программирования возможно передать на сервомотор количество оборотов в градусах которые он должен совершить?
ОтветитьУдалитьЗадача стоит в том чтобы с определённой точки при помощи датчика оборотов двигпателя, измерить сколько оборотов он сделал, чтобы после включив мотор в обратную сторону передать туда эти данные и он проехал тоже расстояние назад.
В стандартной среде программирования NXT-G Это можно сделать с помощью Rotation Sensor.
ОтветитьУдалитьА вот в BricxCC пока не нашел как реализовать.
Если кто богат опытом, напишите код как снять показания сенсора оборотов с двигателя NXT.
Наверно уже давно это не надо. Но снимать показания можно при помощи MotorTachoCount(OUT_A) например. Еще сразу скажу, что счетчик сбрасывается после каждой команды OnFwd.
УдалитьВообще есть команда RotateMotor, где в качестве аргумента выступает и угол поворота. Подайте значение, например, 360 для движения вперёд и -360 для движения назад.
ОтветитьУдалить