Астротрекер за два вечера

После прочтения статьи про любительскую астрономию я загорелся идеей поснимать звезды с помощью обычной камеры без телескопа. Статья подсказала идею про астротрекеры — устройства для компенсации вращения звездного неба на длительных выдержках.





Погуглив, я обнаружил что их легко можно купить. Но вот цена кусалась. Например, самый дешевый Vixin Ploarie Star Tracker стоит от $400 + доствка. Да и грузоподъемность его вызывала сомнения. В перспективе я планировал от широкоугольного объектива перейти и к 70-200/2.8 который вместе с камерой весят под полтора кг.

В процессе поиска оказалось что люди делают себе так называемые Barn Door трекеры: раз, два и другие. Попросту говоря — дверь от сарая. Принцип действия прост — две доски соединенных дверным навесом. Один из них поворачивается с такой же скоростью как и земля вокруг своей оси. Ось навеса направляетя на Полярную звезду. Нижняя доска ставится на штатив, а на подвижную половинку ставится штативная голова с камерой.

Под катом много картинок.

Я загорелся идеей сделать такой трекер самому. Ибо без него снимать можно только звездные треки типа такого.



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

Материалом для досточек был выбран 10мм МДФ т.к. был опыт его лазерного раскроя в мастерской. Материал дешевый, удобный. В плане надежности пока что говорить рано. Посмотрим на опытную эксплуатацию.

Сперва в CAD-программе я начертил модель того что нужно было сделать. Для этого пришлось рассчитать радиус и скорость вращения шпильки. По моим прикидкам радиус получился 182.85мм для шпильки М5 с шагом резьбы 0.8мм и скоростью вращения гайки 1 об/мин. Шпилька была выбрана М5 как компромисс между прочностью и шагом резьбы.





Т.к. впоследствии хотелось поснимать на 70-200/2.8 то пришлось рассчитывать какое количество шагов двигателя нужно делать в минуту что бы не было смаза в пределах одного пиксела. После всех прикидок я сделал десятикратный запас для того что бы погрешности изготовления конструкции не ухудшили кардинально ситуацию.


Что бы вращать гайку на шпильке в оригинальной конструкции применили шестеренки. Но найти шестерни за адекватные деньги так и не получилось. Были тольно на e-bay да и то по $10+ с доставкой в месяц. Поэтому шестерни решил тоже резать лазером из МДФ или акрила.





В качестве двигателя использовал шаговый китайский 28BYJ-48. Их давно у меня лежало несколько штук, все хотел поиграться. Стоят они с платой-контроллером меньше $2 на ebay с доставкой. Питается он от 5-12 вольт. Делает один оборот вала за 64 шага. Также в нем есть редуктор с коефициентом близким к 63.68395:1. Таким образом, внешняя ось вращается за 2037 шагов в 4-шаговом режиме или 4075-шагов в 8-шаговом режиме. Крутящий момент у него не большой, но для этой задачи его более чем достаточно. В интернете пишут что получалось добиться от него порядка 15 об/мин но с повышением питания до 12В. Я решил что мне хватит 4 об/мин и сделал шестеренки с соотношением 4:1 что бы за четыре оборота двигателя гайка на шпильке делала один оборот.





В магазине я купил дверной навес с минимальным люфтом. Его габарит и стал шириной досточек. Там же купил шпильку. В другом магазине набрал крепежного материала. На крепеж, МДФ с порезкой, петлю ушло порядка 100 грн. ($8.3). На ebay заказал небольшую шаровую головку но пока что поставил обычную от старого штатива.

В нижней половинке я сделал отверстия для крепления к съемной площадке фотоголовки Manfrotto 804RC2 коротая у меня была. Также сделал отверстия для двигателя. Я предусмотрел корректировку расстояния между шестернями посредством вращения двигателя вокруг одного из монтажных отверстий.

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



Шестерни вырезали и из акрила и из МДФ. С акрилом получилось плохо, концы зубьев поплавились. Пришлось обработать их напильником. Субъективно у МДФ ход получился мягче. Но посмотрим в боевых условиях.



Крепление шестеренки к гайке очень простое — отверстие в форме шестигранника с минимальным допуском. Акрил — 8мм. Как раз поместилось 2 гайки М5.



Для того что бы точность ведения была выше, шпильку нужно согнуть дугой. Это делается так: печатаем на принтере две концентрические окружности нужного диаметра так что бы их края были габаритом шпильки. И потихоньку гнем ее и постоянно прикладываем к шаблону, проверяем. Гнуть лучше сразу всю шпильку (ее длина 1 метр) — так легче. Короткую — не согнуть аккуратно руками. За 10 минут все было готово.





Лишнее обрезаем дремелем. Я оставил сегмент порядка 25 сантиметров. Этого хватит на более чем 5 часов ведения.

Собираем все вместе:



Проверяем вращение на предварительно написанном скетче для ардуино.
<code class="cpp">#include <AccelStepper.h> #include <LiquidCrystal.h>  #define HALFSTEP 8 LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7); int adc_key_val[5] ={50, 200, 400, 600, 800 };  // Motor pin definitions #define motorPin1  3     // IN1 on the ULN2003 driver 1 #define motorPin2  4     // IN2 on the ULN2003 driver 1 #define motorPin3  5     // IN3 on the ULN2003 driver 1 #define motorPin4  6     // IN4 on the ULN2003 driver 1  int NUM_KEYS = 5; int adc_key_in; int key=-1; int isRun; double speeds = 271.6; int maxspeed = 1245;  AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);  void setup() {   lcd.clear();    lcd.begin(16, 2);   lcd.setCursor(0,0);    lcd.print("    Stopped     ");    lcd.setCursor(0,1);    lcd.print("Speed ");    lcd.print(speeds);   lcd.print("   ");   isRun = 0;    stepper1.setMaxSpeed(maxspeed);   stepper1.setSpeed(speeds); }  void loop() {   adc_key_in = analogRead(0);    // read the value from the sensor    key = get_key(adc_key_in);  // convert into key press     if (key >= 0)   // if keypress is detected    {       if (key == 1) {          speeds += 0.1;          delay(50);       }       if (key == 2 && speeds > 0) {          speeds -= 0.1;          delay(50);       }       if (key == 0) {          speeds += 10;       }       if (key == 3) {          speeds -= 10;       }       if (speeds>maxspeed) {          speeds = maxspeed;       }       if (speeds<-maxspeed) {          speeds = -maxspeed;       }       if (key == 4) {         isRun = 1 - isRun;         lcd.setCursor(0,0);          if (isRun == 1) {           lcd.print("+++ Running +++ ");         } else {           lcd.print("    Stopped     ");          }         delay(250);       }       lcd.setCursor(0, 1);       lcd.print("Speed ");        lcd.print(speeds);       lcd.print("       ");       stepper1.setSpeed(speeds);       delay(50);   }   if (isRun == 1) {     stepper1.runSpeed();   } }  int get_key(unsigned int input) {     int k;     for (k = 0; k < NUM_KEYS; k++)     {       if (input < adc_key_val[k])             return k;     }         if (k >= NUM_KEYS)       k = -1;  // No valid key pressed     return k; } </code>

Я использовал LCD Keypad шилд что бы было удобно подбирать скорость вращения.



Есть кпопка Старт/Стоп. Есть инкремент/декремент по 25 шагов и по 0.1 шагу. Скорость измеряется в шагах в секунду. Расчетная скорость должна быть 271.6 шага в секунду. Но проверить пока что не могу т.к. постоянно идут дожди.

Общий вид на получившуюся конструкцию


Тут две ардуины. Не обращайте внимания. Одна используется как источник питания для двигателя.

Видео процесса работы


Сейчас погода стоит отвратительная. Дожди. Как только звезды будет видно приступлю к тестированию монтировки в полевых условиях.

Источник: habrahabr.ru/post/227499/