Трёхосный компас

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Егор, 17 мар 2014.

  1. Егор

    Егор Нерд

    Заказал недавно у вас трехосный компас. Все бы ничего но он реагирует на моторы, на ардуино, на аккумуляторы, короче на весь другой обвес моего робота. Единственный выход который я нашел это прикрепить его на длинной палке высоко над роботом. Но такой расклад меня не устраивает. Я почти уверен что работу компаса можно скорректировать программно, но как это сделать не очень понимаю. Подскажите кто нибудь)
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    На то он и компас, чтобы на магнитные поля реагировать.
    Может, попробовать заэкранировать моторы?
     
  3. Егор

    Егор Нерд

    Не поможет. Он на любые железки реагирует. Например, я вынес его на пластиковой линейке подальше от всего остального. Так он даже на винтики которыми я его прикрутил реагирует. Когда убрал винтики и приклеил на двухсторонний скотч, все заработало, но меня опять же не очень устраивает вариант с выносом его на палке.
     
  4. ИгорьК

    ИгорьК Гуру

    Егор! Посмотрите внимательно не картинку:
    [​IMG]
    На стержне ПРИКЛЕЕН белый диск. Это компас. Его цена приблизительно такая. Кроме того, его работа поддерживается серьезным программным обеспечением. И все равно он монтируется на штанге. Это обычная практика.
    Думаю, у Вас все нормально с компасом.
     
  5. Егор

    Егор Нерд

    С этим разобрался.

    Теперь помогите со следующим) Компас выдает значения от 0 до 360. Платформа miniQ. Помогите с кодом для езды в заданном направлении. То бишь если я задаю угол 23,5 градуса, робот именно туда и едет. Энкодеров у меня нет. то бишь робот должен регулировать скорость врашения колес в зависимости от того, справа или слева целевое направление. В теории все просто, на практике голову сломал
     
  6. Megakoteyka

    Megakoteyka Оракул Модератор

    Если реальное значение показаний компаса "левее" заданного, притормозить правое колесо.
    Если реальное значение показаний компаса "правее" заданного, притормозить левое колесо.
    При определении, насколько значение "левее" или "правее", нужно учитывать переход через 0 градусов.
    Как-то так. Ну и небольшой гистерезис наверное не повредит.
     
  7. Егор

    Егор Нерд

    Дело в том что я не знаю как реализовать. Если например ему нужно ехать в направлении 10 градусов, смещение происходит в отрицательную сторону, то бишь 9, 8, 7 и тд. В определенный момент компас словит 360 градусов и робот начнет через другую сторону вертеться. Я хочу сделать чтобы он весь диапазон делил на 2 части, одна в которой он вертится влево, одна в которой вправо. То бишь в примере с 10 градусами, в диапазоне от 10 до 190 крутится влево, а от 0 до 10 и от 190 до 360 вправо. И вот я и ломаю голову, как программно реализовать эти две "половины" диапазона, и так чтобы алгоритм для любого угла направления подходил. Есть варианты?)
     
  8. Егор

    Егор Нерд

    Конечно энкодеры это идеальный выход, но с ними меня отшили, сказали по наличию только один, а мне два нужно. Вот и изобретаю велосипед теперь
     
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    Сходу такая мысль появилась:
    Допустим, нужно ехать на 10 градусов.
    Сделаем смещение на 180 - 10 = 170 градусов и запомним его.
    Тогда "виртуальное" направление станет 180 градусов.
    Будем прибавлять смещение к измерениям и всегда попадем на середину диапазона.
    Переход через 0 градусов вычислить просто: если угол + смещение > 360, отнимем 360. если меньше нуля - прибавим 360. Годится?
     
    Егор нравится это.
  10. Егор

    Егор Нерд

    Щас попробую, скажу)
     
  11. Егор

    Егор Нерд

    Ну что то похожее, в развалочку катится, прямую держит. Правда ко всему металическому притягивается. Короче энкодеры надо ждать