Сквозь тернии к звездам: делаем устройство для наведения лазерной указки на любой небесный объект

Привет, Хабр!

Решил показать свою небольшую самоделку, которая работает примерно так:



Если КДПВ сделала свое дело — тогда добро пожаловать под кат :)

Небольшой спойлер
Я старался писать так, чтобы было максимально понятно всем

Аппаратная часть


Итак, для создания минимально работающего прототипа нам понадобятся:

  1. Кусок доски или чего угодно, на чем можно закрепить все компоненты
  2. Почти любой микроконтроллер. Я взял ардуино уно как самый простой вариант
  3. GPS модуль (с него мы берем дату, время и координаты). Теоретически можно вместо него взять модуль часов реального времени, но тогда ваши координаты вам придется вводить вручную и «из коробки» устройство не заработает, но зато время холодного старта сильно сократится
  4. Два сервопривода, или еще лучше два шаговых двигателя
  5. Лазерная указка
  6. Разная мелочь: паяльник, термоклей, макетная плата, провода, кнопка, конденсатор, ну и прямые руки.

По сборке особых хитростей нет: просто закрепить все компоненты на основании термоклеем.
Только надо постараться чтобы оси сервоприводов и лазера были максимально перпендикулярны друг другу, это уменьшит погрешность наведения.

Подключение


Тут тоже ничего сложного:

  • GPS подключается по uart (понадобится только Rx, так как нам ничего не нужно отправлять на модуль
  • сервоприводы – в пины 10 (ось азимута) и 11 (ось высоты)
  • кнопка – во 2 пин
  • питание на все модули
  • опционально – конденсатор по питанию

Фотографии моей реализации(19Мб)






Программная часть


Переходим к самому интересному.

Весь код можно условно разделить на три части:

  1. Работа с GPS, кнопкой и сервами
  2. Работа с астрономией
  3. Главный цикл программы

Заметки по коду:

Для жпс использована библиотека tinygps++
Для кнопки — GyverButton
Когда жпс понимает где он, на ардуине загорается светодиод на 13м пине
Для примера в коде есть массив с координатами разных ярких звёзд

Исходный код
#include <math.h>
#include <ServoSmooth.h>
#include <GyverButton.h>
#include "TinyGPS++.h"
TinyGPSPlus gps;
ServoSmooth yaw;
ServoSmooth pitch;
GButton but(2);
int yr = 0, mo = 0, d = 0, h = 0, m = 0, s = 0;
float phi = 0, lambda = 0;
float az = 0, height = 0;
int counter = 0;
float alpha = 0.0, delta = 0.0;
float sunalpha = 0, sundelta = 0;
float Coordinates[10][2] =
{
  {0, 0},
  {sunalpha * 360 / 2 / PI, sundelta * 360 / 2 / PI}, //sun
  {297.9458, 8.9233}, //altair
  {279.4083, 38.8038}, //vega
  {310.5333, 45.3538}, //deneb
  {79.55, 46.0163},//capella
  {89.0708, 7.4092}, //betelgeuse
  {152.3625, 11.8672}, //regul
  {51.4458, 49.9319} //mirfak
};
int Days(int d, int m, int y)//тут считаем, сколько дней прошло с момента весеннего равноденствия (21.03)
{
  int days = 0;
  int yearNotLeap[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int yearIsLeap[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

  if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
  {
    for (int i = 0; i < m - 1; i++)
    {
      days += yearIsLeap[i];
    }
  }
  else
  {
    for (int i = 0; i < m - 1; i++)
    {
      days += yearNotLeap[i];
    }
  }
  if (m == 1) {

    return d - 81;
  }
  else
    return days + d - 81;
}
void GpsGetData()
{
  while (Serial.available() > 0)
    gps.encode(Serial.read());
  if (gps.location.isUpdated())
  {
    phi = gps.location.lat(); //Широта в градусах (double)
    lambda = gps.location.lng(); // Долгота в градусах (double)
    yr = gps.date.year(); // Год (2000+) (u16)
    mo = gps.date.month(); // Месяц (1-12) (u8)
    d = gps.date.day(); // День (1-31) (u8)
    h = gps.time.hour(); // Час (0-23) (u8)
    m = gps.time.minute(); // Минуты (0-59) (u8)
    s = gps.time.second(); // Секунды (0-59) (u8)
  }
}
void CalculateParams()
{
  float _time = (h + (float)m / 60 + (float)s / 3600) * 360.0 / 24.0;//вычисляем время в часах
  float sunlambda = (float)Days(d, mo, yr) * 360 / 365; // вычисляем эклиптическую долготы солнца в градусах
  sundelta = asin(0.398749 * sin(sunlambda * 2 * PI / 360));//вычисляем склонение солнца в радианах
  sunalpha = asin(tan(sundelta) / 0.434812); // вычисляем прямое восхождение солнца в радианах
  float tS = _time + lambda - 180 + sunalpha * 360 / (2 * PI) - alpha; //вычисляем часовой угол звезды в градусах
  height = 360 / 2 / PI * asin(sin(phi * 2 * PI / 360) * sin(delta * 2 * PI / 360) + cos(phi * 2 * PI / 360) * cos(delta * 2 * PI / 360) * cos(tS * 2 * PI / 360));//вычисляем высоту
  az = 360 / 2 / PI * asin(sin(tS * 2 * PI / 360) * cos(delta * 2 * PI / 360) / cos(height * 2 * PI / 360)); //вычисляем астрономический азимут (с юга по часовой)
  if (tS > 90 || tS < -90)
  {
    az = 180 - az;
  }
 // if (az > 180 && az < 270)
  //  az = az - 360;
}

void setup() {
  Serial.begin(9600);
  yaw.attach(10, 90);
  pitch.attach(11, 180);
  yaw.setSpeed(20);
  yaw.setAccel(0.1);
  pitch.setSpeed(20);
  pitch.setAccel(0.1);
  yaw.setAutoDetach(false);
  pitch.setAutoDetach(false);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  but.tick();
  yaw.tick();
  pitch.tick();
  if (but.isSingle())
  {
    counter += 1;
    if (counter == 9)
      counter = 0;
  }
  alpha = Coordinates[counter][0];
  delta = Coordinates[counter][1];
  GpsGetData();
  CalculateParams();
  digitalWrite(LED_BUILTIN, gps.location.isValid());
  if (az > 90 && az < 180)
  {
    yaw.setTargetDeg(270 - az);
    pitch.setTargetDeg(height);
  }
  if (az < -90 && az > -180)
  {
    yaw.setTargetDeg(-90 - az);
    pitch.setTargetDeg(height);
  }
  if (az < 90 && az > -90)
  {
    yaw.setTargetDeg(90.0 - az);
    pitch.setTargetDeg(180 - height);
  }
}


Я не буду подробно разбирать каждую строчку, лишь остановлюсь на интересных моментах.

Урок астрономии


Про астротермины и еще кое-что
Если вы не знаете значение какого-либо термина, его можно узнать в википедии или спросить в комментариях – буду рад ответить.

Также, я не нашел в интернете алгоритма перевода координат из одной системы в другую.

… а момент здесь один – функция CalculateParams()
Что должна делать такая функция: принять на вход координаты звезды в экваториальной системе (прямое восхождение и склонение), время и координаты наблюдателя и выдать высоту и азимут объекта, т.е. по сути перевести координаты звезды из экваториальной системы (в которой звезды неподвижны) в горизонтальную (в которой звезды перемещаются в течение суток).

Реализовано это, используя формулы сферической тригонометрии, а также сферической астрономии в вакууме.

Алгоритм таков:

  1. вычислить эклиптическую долготу солнца
  2. вычислить склонение солнца
  3. вычислить прямое восхождение солнца
  4. вычислить часовой угол звезды
  5. вычислить высоту и азимут

Вот как это реализовано:

void CalculateParams()
{
  float _time = (h + (float)m / 60 + (float)s / 3600) * 360.0 / 24.0;//вычисляем время в часах
  float sunlambda = (float)Days(d, mo, yr) * 360 / 365; // вычисляем эклиптическую долготы солнца в градусах
  sundelta = asin(0.398749 * sin(sunlambda * 2 * PI / 360));//вычисляем склонение солнца в радианах
  sunalpha = asin(tan(sundelta) / 0.434812); // вычисляем прямое восхождение солнца в радианах
  float tS = _time + lambda - 180 + sunalpha * 360 / (2 * PI) - alpha; //вычисляем часовой угол звезды в градусах
  height = 360 / 2 / PI * asin(sin(phi * 2 * PI / 360) * sin(delta * 2 * PI / 360) + cos(phi * 2 * PI / 360) * cos(delta * 2 * PI / 360) * cos(tS * 2 * PI / 360));//вычисляем высоту
  az = 360 / 2 / PI * asin(sin(tS * 2 * PI / 360) * cos(delta * 2 * PI / 360) / cos(height * 2 * PI / 360)); //вычисляем астрономический азимут (с юга по часовой)
  if (tS > 90 || tS < -90)
  {
    az = 180 - az;
  }
}

Оценка погрешности


Оценим вклад каждого фактора в погрешность (отсортировано по вкладу в неточность)

  1. Кривизна рук — у меня это самый главный фактор
  2. Неточное положение горизонта
  3. неточное положение нулевого азимута (напомню, что астрономы считают азимут с юга по часовой стрелке)
  4. Тот факт, что сервы не могут поворачиваться на дробный угол
  5. неточности в алгоритме перевода (положение солнца определяется не очень точно: например, эклиптическая долгота солнца считается гораздо сложнее (в коде упрощённый вариант); день весеннего равноденствия не всегда происходит в одно и тоже время;
    также, я не учитываю уравнение времени) но погрешность из-за этого натекает небольшая.

Что еще можно сделать (todo)


  1. Сменить сервы на шаговые двигатели с их микрошагами;
  2. Немного усовершенствовать алгоритм
  3. Есть метод полного устранения погрешности из-за кривого горизонта и азимута:
    существуют сервисы по «решению астрофото»: им загружаешь фотографию со звездами, а они вычисляют координаты центра кадра.

    Что мы делаем:

    1. прикрепляем к большому телескопу маленький телескопчик с камерой
    2. поворачиваем шаговики на 3 случайных точки на небе, делаем фотографии
    3. отправляем их на один из сервисов, используя его API и получаем координаты точек
    4. сложными программными методами избавляемся от погрешности установки основного телескопа
    5. PROFIT!!!

    На этом все, спасибо за внимание!

    С радостью отвечу на ваши вопросы в комментариях.

Similar posts

AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 76

    +7
    Видосик бы или фоточек хотя бы как эта штука наводится хотя бы на луну
      +3
      Добавьте камеру, распознавание образов, и уничтожитель комаров готов!
        +2
        По-моему на Хабре это уже было около 2010 года.
        +4
        Я вот так и не вкурил зачем на звезду наводить лазерную указку…

        Ну если бы наводился сам телескоп или подвес для фото с сильной оптикой — тут понятно. А вот указку то — зачем типа она подсветит звезду отразившись от ее поверхности? (это сарказм если кто не понял)…
          +3
          Ну, есть несколько юзкейсов
          1. Просто собрать и увидеть на небе, где расположены яркие и интересные звезды, узнать их названия
          2. По лучу лазера удобно наводить большой телескоп. Т.е. сказать системе: наведись на условно М1 (потому что у нее достаточно низкая поверхностная яркость). Система наводится, а потом в телескоп ищешь луч лазера и видишь М1.
          3. Как я сказал в статье, систему можно развить до телескопа с самонаведением
            +3
            Если я правильно понял, лазер наводится автоматически, при помощи программы. А почему бы тогда сразу не навести телескоп?
              +4
              Наверное из-за того что вес лазерной указки и вес телескопа различаются.
              Для телескопа нужно городить свою механику.
                +1
                Да, именно так
                  +1
                  Зачем городить механику если абсолютно все экваториальные монтировки телескопов имеют либо уже готовые места под крепления шаговых двигателей на осях склонения и восхождения, либо съемные ручки-крутилки на место которых при помощи нехитрых самодельных креплений можно закрепить шаговик… А там уже и систему наведения-слежения за космическим объектом можно собирать на чем угодно. Самый простой вариант это пульт с четырьмя кнопками для управления двумя двигателями. Вот пример: image
                    0
                    Могу похвастаться своим студентом: весной в качестве курсовой он сделал автоматический привод на дешёвый телескоп. На всю оснастку потратил около 10000 рублей, что довольно-таки немного по сравнению с готовыми решениями. Ну и отдельный плюс — своя прошивка МК, что позволяет любые фичи реализовать. Никакого анального огораживания!!!
                      +1
                      Рады за вас!!!
                      +1
                      и как на таких телескопах наводится на конкретные координаты? кроме двигателей нужны будут ещё и абсолютные энкодеры положения. В маленькой серве это все так или иначе есть, на телескоп надо это всё устанавливать. даже если есть посадочные места. И что-то мне подсказывает что стоить такие шаговики будут сильно дороже маленьких серв. И этот краеугольный вопрос питания этого хозяйства, особенно при работе шаговиков в микрошаговом режиме. Дизельный генератор на выезд брать?
                  0
                  Не могли бы вы мне пояснить пункт 2: как по лучу фотонов, которые улетают в далекий космос настроить телескоп, который пытается уловить фотоны летящие в обратном направлении? Возможно я что-то упрощаю или не учитываю, но мне казалось что луч лаазера наведенного в туже область что телескоп в телескопе виден не будет. Возможно я не прав. Но хотелось бы понять в чем.
                    +2
                    Атмосфера рассеивает. Луч ночью хорошо виден, если смотреть вдоль луча.
                      +2

                      Возможно, потому что некоторые фотоны отражаются и рассеиваюися на частицах пыли в атмосфере, делая сам луч видимым (как на КПДВ), в том числе в телескоп

                        0
                        Особенно, если лазер зеленого цвета и мощный. Видно очень хорошо.
                        0
                        рассеивание в атмосфере. луч очень хорошо видно!
                      0
                      Я вот так и не вкурил зачем на звезду наводить лазерную указку…
                      адаптивная оптика же!)
                        +2
                        Я вот так и не вкурил зачем на звезду наводить лазерную указку…

                        Как зачем? Это пока ещё прототип для демонстрации идеи:

                        image
                        0
                        А как всю эту конструкцию располагать-то нужно? Строго горизонтально? Куда должен быть направлен лазер в исходном положении серв? Имеет ли значение высота места наблюдения?
                          +2
                          1. Да, горизонтально
                          2. На истинный юг
                          3. Нет, высота не имеет значения
                            0
                            Ой, извините, не так понял второй вопрос
                            Вообще, начальное направление лазера зависит от того, как у вас будут ориентированы сервы при сборке.
                            В моём случае при нуле серв лазер смотрит на запад.
                              0

                              На юг то истинный почему (как астрОном астрОному)))?

                                0

                                Если считать по формулам в статье, то ноль азимута получается на юге и отсчитывается по часовой

                            0
                            Мощность у вашего лазера какая? Не боитесь стать частью небольшой для РФ статистики ослепления пилотов самолетов лазерами?
                              +1
                              Конкретно я сейчас хочу купить лазер помощнее, потому что луч того который стоит сейчас видно очень слабо.
                              Что касается ослепления пилотов, то вероятность этого настолько маленькая, что, ну, об этом думать не приходится
                                –1
                                Маленькая, да. Но вы из нулевой делаете отличную от нулевой, пусть даже очень небольшую. По мне это проблема.
                                Например, можно почитать про ограничения мощности и предостережения по использованию лазерных элементов астронавигации в www.universetoday.com/101171/a-look-at-the-hazards-of-green-laser-pointers
                                  0
                                  Я бы наверное не рискнул сделать это, вот тут на видео показывают как в Израиле ловят подростков которые решили посветить на вертолет лазером:
                                  www.youtube.com/watch?v=0CKLlOfQmj4&feature=youtu.be&t=98
                                    +4
                                    Смотрите
                                    1. Я живу далеко от аэропорта (и не только я, например если астрономы выезжают на наблюдения, то делают это подальше от всех огней), самолёты надо мной летают на высоте 10 км
                                    2. Даже если я попаду в глаз пилота, то экспозиция будет настолько маленькой, что он может даже ничего не заметить
                                    3. Даже если пилот потеряет концентрацию на пару секунд, что с того? Самолёт ведь на автопилоте
                                      +4
                                      Да, пилот пересечет луч лазера за 30 микросекунд (если допустить что он не расходится). Не уверен что этого хватит чтобы даже заметить что была какая-то вспышка. Я экспериментировал с работой микроконтроллера в экономичном режиме, по моим наблюдениям светодиод нужно включать на 5000 микросекунд, чтобы заметить вспышку.
                                      Плюс типичные полупроводниковые лазеры имеют расхождения 1 метр на километр пути, на высоте 10 км диаметр луча будет 10 метров, это меньше всего похоже на лазер, а больше на свет от фонарика. Если принять мощность лазера в 0,1 Вт, мощность луча будет 10 МВт на метр квадратный, при том что Солнце светит мощностью в примерно 500 Вт на метр квадратный на такой высоте, в 50 000 раз сильнее.
                                      Цифры сильно преувеличены, так как пилот точно вниз не смотрит, а если засветка придет под углом 30 градусов, расстояние до источника будет уже около 20 км, что в 4 раза снизит плотность энергии, до 2,5 мВт на метр квадратный. Даже при идеально прозрачной атмосфере.
                                        +1
                                        мощность луча будет 10 МВт на метр квадратный

                                        Точно не 10 мВт?

                                          –1

                                          На квадратный метр? Вполне мегаватт. Там ватты на квадратные миллиметры у сильных лазеров.

                                            0
                                            Это если лазер свести в точку. У меня лазер полупроводниковый для лазерного гравера сводится в 0.15 мм точку в 30 мм от линзы (меньше не получится из-за конструкции лазера, там несколько излучателей объединенных в одном корпусе). Мощность 5Вт оптическая, 20 Вт электрическая. Для изготовления трафаретов хватает для кулинаров, резки фанеры тонкой. Для изготовления печатных плат не хватает точности фокусирования, хотел попробовать, но не получилось.
                                            Если считать мощность на единицу площади получается действительно 222 МВт на метр квадратный. Меньшая мощность не режете древесину, пластик и не испаряет краску на печатной плате. Тепло просто успевает рассеяться в соседние с точкой прожига районы. Чем меньше точка, тем больше периметр на единицу площади, через которое уходит тепло. Особенно при изготовлении печатной платы заметно, выжигаю краску с фольги медной, если поставить мощность лазера менее 5Вт, краска не испаряется, фольга отводит тепло, не помогает даже снижение скорости прожига.
                                              0

                                              если этот весь квадратный метр лазера будет излучать, то да, можно и мегаватты наскрести

                                              0
                                              Да, 10 мВт, опечатка, не исправить уже. Лазер 0.1 Вт рассеивается примерно площади в десятки квадратных метров. Для оценки порядка величин.
                                            0
                                            Благодарю, именно такого указания на учтенные риски мне изначально не хватило в статье.
                                        +4
                                        Не боитесь стать частью небольшой для РФ статистики ослепления пилотов самолетов лазерами?
                                        Фиг его ослепишь на крейсерской высоте и угле атаки. Это только при посадке работает.
                                          0
                                          Как ни странно, но когда я в 15 году летел над Каиром в Хургаду, из Каира таки активно светили. Был очень удивлен. Впервые лично видел лазер с большого расстояния. Зеленый, разумеется.
                                          +1
                                          Почитал в статье по ссылке про меры борьбы, выглядит как «террористы пользуются речью, чтобы согласовывать свои действия — запретим говорить!»
                                            0
                                            Если рядом нет аэропорта, то ослепить пилотов будет затруднительно т.к. они вниз не смотрят, по причине отсутствия необходимости и ограничения угла обзора с пилотского кресла. Для этого нужно сочетание множество факторов: небольшой угол направления луча (относительно горизонта), при этом излучение уже будет размываться и ослабляться атмосферой. Ну и ко всему прочему, период воздействия на сетчатку глаз пилота будет кратковременным. (в отличии когда вредители специально направляют лазер в глаза пилотам, целясь в кабину).

                                              0
                                              У лазерных дальномеров мощности больше, чем у любых указок, но случаи ослепления пилотов науке не известны.
                                              0
                                              ещё этот клей уплывает, но тут это наверное не так важно :)
                                                +1
                                                Не думали над обратной задачей, чтобы можно было в ручную навести указку на звезду, а Ваша система бы определила ее координаты и подтянула данные из базы? Эдакий определитель звезд?
                                                  +2
                                                  О, спасибо, отличная идея, запишу в todo
                                                  По реализации…
                                                  Можно поставить или энкодеры, или потенциометры, т.е. вполне реализуемо
                                                    0
                                                    не надо энкодеров, просто джойстик
                                                      0
                                                      Я имел ввиду отслеживание направления лазера, а не управления им
                                                        +3
                                                        если вручную наводить лазер тягая не за саму указку, а за джойстик,
                                                        то шаговики не потеряют координаты без всяких энкодеров и выглядит проще

                                                        … или взять джойстик побольше и закрепить указку на него
                                                          0
                                                          Можно вообще без механической связи. 2 камеры перпендикулярно лазерной указке, одна определяет угол наклона луча в своей плоскости, другая в перпендикулярной и находят направление луча в пространстве. Но луч должен быть виден.
                                                          Или одна камера что смотрит вдоль луча, охватывая в поле обзора всё обзорное пространство, от горизонта до горизонта.
                                                          0
                                                          А зачем наводить лазер, если можно прикрутить датчики к телескопу? (что-то типа гироскопического датчика, а данные GPS или вручную вводить или тоже с отдельного модуля) А потом например на компе выводить эту область из какой-нибудь базы с пометками.
                                                      0
                                                      Эдакий определитель звезд?

                                                      Такая штука уже была лет 10 назад, но так и не «взлетело»:
                                                      www.universetoday.com/13832/celestron-skyscout-review

                                                      А сейчас все это делается средствами смартфона, полно программ, показывающих небо при наведении телефона, используется компас + акселерометр.
                                                        0
                                                        У смартфона погрешность компаса градусов 30, т.ч. небо на экране и в реальности не сразу поймешь соответствие.
                                                          0
                                                          Да ну каких 30
                                                          градусов 5 максимум
                                                      +1
                                                      А можно просто установить на телефон Google Sky Map и узнать «где расположены яркие и интересные звезды, узнать их названия».
                                                        0
                                                        Да, но на реальном небе ведь всё намного интереснее чем в планетарии
                                                          +2
                                                          Программа позволяет «навести» в реальном небе на неизвестную звезду и узнать её название.
                                                            0
                                                            Нуу тогда да, так тоже можно
                                                          0

                                                          Ещё есть stellarium

                                                          +3
                                                          Немного доработать, и получится вполне востребованный прибор.
                                                            +1
                                                            Насколько я понял, координаты звезд просто «забиты» в код.
                                                            Более интересно было бы добавить в конструкцию bluetooth-модуль («Всё становится лучше, когда есть Bluetooth»), и состыковать микроконтроллер со смартфоном, на котором запускается программа-планетарий, поддерживающая работу с готовыми телескопами (например, SkySafari).
                                                            Таким образом можно запускать движение лазера, указывая звезду в программе.
                                                            Можно и наоборот, как предложено выше, вручную (кнопками или джойстиком) направить луч на интересующую звезду, и по указателю положения телескопа в программе на смартфоне можно будет определить название звезды.
                                                            Я подобную штуку делал на базе лазерного дальномера для гольфа (можно считать его простейшим «телескопом»). Вся электроника дальномера была заменена моей. Положение дальномера в пространстве определялось по данным IMU.
                                                            0
                                                            Исходный код выглядит как ужас плюсиста…
                                                              0
                                                              Что в нём можно улучшить?
                                                              0

                                                              Купите зелёный 510-520 нм модуль или указку, будет куда ярче при тех же 5mW


                                                              только не 532 нм dpss, там куча проблем с нестабильностью

                                                                +1

                                                                Я не понял, зачем вычислять координаты звезды через координаты Солнца. Можно же проще, если использовать звездное время.

                                                                  0

                                                                  А я и использую звездное время чтобы найти часовой угол звезды:
                                                                  S=tSun+AlphaSun=tStar+AlphaStar
                                                                  А других способов найти tStar в общем-то и нет
                                                                  Может вы подскажете?

                                                                    0
                                                                    Посмотрите в книге Оливер Монтенбрук Томас Пфлегер «Астрономия на персональном компьютере». Там все очень подробно и с исходным кодом.
                                                                  0
                                                                  Точность позиционирования можно повысить задавая не градусы (180 отсчетов), а микросекунды (>1000 отсчетов, зависит от конкретной сервы).
                                                                    0
                                                                    Интересно, но не описана методика работы с девайсом. Как откалибровать? Как наводить на интересующую звезду? Неужели переписывать код?
                                                                      0
                                                                      Классная статья, как раз в тему, я делаю монтировку для фотоаппарата:
                                                                      image

                                                                      Жаль, что неподробно описаны уравнения.
                                                                      Что делать, если хочется навестись на луну?

                                                                      Не думали ли вы попробовать пакет от NASA spice от?
                                                                        0

                                                                        Чтобы навестись на луну есть два варианта:
                                                                        1.просто ввести в код текущие координаты луны, которые взять из stellarium. Работать будет примерно полдня, пока луна не уплывёт
                                                                        2.рассчитывать координаты через эфемериды, но это сложно реализовать.
                                                                        Нет, про пакет не слышал

                                                                        +2
                                                                        Спсибо, интересная статья, жаль, конструктив не проработан. Указку нужно зеленую, с подогревом, иначе на морозе она потухнет. В софт нужно наведение по трем точкам с автовыравниваем. С микрошагом в 1/16 точность обычного шагового мотора будет примерно в 1/10 градуса, что очень неплохо, однако момент на валу будет всего в 10% от паспортного. Как вариант брать дешевый шаговик с ременным редуктором.
                                                                          0
                                                                          Молодец, автор. Интересно…
                                                                            0
                                                                            А можно добавить компас и гироскоп, чтоб все работало под любым наклоном? просто поставил, включил… всё.
                                                                              0
                                                                              С этим есть проблема, потому что компас и гироскоп тоже калибровать надо, да и точность у компаса не ахти
                                                                              +3

                                                                              Могу порекомендовать еще вот такие инструменты:


                                                                              http://www.iausofa.org/ библиотека с огромным количеством различной астрономической математики от международного астрономического союза. Может считать координаты некоторых астрономических объектов и пересчитывать разные системы координат с учётом всего. Вплоть до релятивистских эффектов и различных влияний атмосферы. Ориентирована на встраиваемую технику.


                                                                              А если захотите добавить на устройство акселерометр и магнитометр, чтобы оно само смогло находить нули для угла места и азимута, то вам понадобится вот это: https://www.ngdc.noaa.gov/geomag/WMM/. Это модель магнитного поля Земли при помощи которой можно находить направление на географический северный полюс по направлению на магнитный

                                                                                0
                                                                                Спасибо, учту

                                                                              Only users with full accounts can post comments. Log in, please.