МАРСОХОД

Open Source Hardware Project

Проекты Altera Quartus II для платы Марсоход

Астротрекер

tracker3

На прошлой неделе вдруг вспомнил, что август - это время звездопада. Прочитал, что ночью с 11-го на 12-е августа будет максимум "Персеид". Планета Земля в своем движении вокруг Солнца пересекает шлейф пылевых частиц хвоста кометы Свифта-Таттла. Пылевые частицы попадая в атмосферу Земли сгорают, как будто падают звезды. Мне пришло в голову попытаться сфотографировать это чудо. Опыта фотографирования звезд у меня не много. Да и времени для подготовки к ночным наблюдениям особо не было, оставалось всего-то два или три дня.

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

Идея астротрекера проста - нужно устройство, которое поворачивает фотоаппарат со скоростью вращения неба. Тогда на фотоаппарате можно ставить большие выдержки - несколько минут и тогда звезды все равно останутся на кадре светящимися точками, а не дугами.

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

Что мне нужно было сделать:
1) механика астротрекера - шаговый двигатель, шестеренки, передача, крепление фотоаппарата, тренога - и все такое..
2) проект для FPGA платы Марсоход - нужно доработать проект имеющегося пульта фотоаппарата, в этот же проект добавить модуль управления шаговым двигателем.

Первое. По механике. Вот так это выглядит днем:

tracker1

 

Я сделал традиционный трекер из двух досточек (ДСП) и оконных петель. Нижняя досточка должна быть зафиксирована на треноге от телескопа или фотоаппарата. Оси петель во время наблюдения должны быть направлены на Полярную звезду. В полевых условиях я просто клал на петли зеленую лазерную указку, светил ею и разворачивал установку так, чтобы ось была правильно ориентирована. К нижней досточке так же прикрепил шаговый двигатель с шестеренками от какого-то принтера. Шестерни должны значительно понижать передачу, но самое главное, в самой большой шестерне вклеена гайка М5 и в нее ввинчена дугообразная шпилька М5. Двигатель работает, вращает шестерни и гайку, медленно вращающаяся гайка выталкивает шпильку и та раздвигает створки астротрекера. Фотоаппарат крепится к верхней досточке и таким образом разворачивается со скоростью разворота створок трекера.

astrotracker

Вот здесь устройство редуктора покрупнее:

reductor

Но тут все индивидуально, врядли вы сможете найти именно такой принтер и именно такие шестеренки. Тут каждый делает из того, что смог раздобыть. Некоторые как пишут вообще на 3D принтере теперь себе детали печатают.

Пришлось повозиться настраивая скорость вращения двигателя. Я установил трекер на расстоянии 5 метров от стены, клал на трекер лазерную указку и отмечал на стене точку, куда светит указка. Включал двигатель на 5-6 минут и точка уезжала в сторону. Потом рассчитывал получившуюся угловую скорость.
Говорят, что Земля делает оборот за время T = 23 часа 56 минут 4,09971 секунды (мне такая уж точность честно говоря не нужна).
Угловая скорость вращения ω = 2π/T = 7,292115078·10–5 радиан/секунду.
Если получилась скорость вращения больше чем нужно, то я увеличивал максимальное значение счетчиков для двигателя в проекте FPGA. Так после нескольких итераций добился вполне точного движения.

marsohod

На этом фото видно куда подключается шаговый двигатель - к выводам F0, F1, F2 и F3 платы Марсоход и кде установлен ИК светодиод - это выводы VCC и F5. Это соответствует схеме топ модуля проекта в ПЛИС.

Проект для платы Марсоход, где используется ПЛИС EPM240T100C5, сделан в среде Intel Quartus Prime Lite 17.0. Топ модуль проекта выглядит вот так:

top

Видно, что внутри два модуля: canon_rc6 и motor. На каждый из модулей заведена тактовая частота от генератора 100МГц платы Марсоход и заведено по 2 кнопки управления. Модуль ИК передатчика команд фотоаппарата Canon может посылать две разных команды в фотоаппарат - это "мгновенный снимок" и "снимок с задержкой". Какая команда будет исполнена зависит от того какая кнопка платы Марсоход была нажата key[2] или key[3].


На модуль motor так же заведено две кнопки key[0] и key[1]. При нажатой кнопке вал двигателя вращается быстрее. Это нужно например для перемотки, схлопывания створок астротрекера в исходное положение. Ну и нажатие первой или второй кнопки определяет в какую сторону вращается вал двигателя и соответственно будет ли трекер раскрываться или закрываться. Вообще-то я сделал проект так, что при подаче питания двигатель сразу вращается в нужную сторону и с нужной скоростью. Это сделано для того, чтобы упростить ночные действия. Ночью-то не особенно видно что делаешь, как делаешь.

Сам модуль управления двигателем написан на Verilog HDL. Там ничего такого особо сложного нет, просто счетчики. Вот этот код:


module motor(
  input wire clk,
  input wire button0,
  input wire button1,
  output reg f0,
  output reg f1,
  output reg f2,
  output reg f3
);

reg [2:0]b0;
always @(posedge cnt[8])
  b0 <= { b0[1:0],button0 };

reg [2:0]b1;
always @(posedge cnt[8])
  b1 <= { b1[1:0],button1 };

reg dir = 0;
always @(posedge clk)
begin
  if( b0[2:1]==2'b10 )
    dir <= 1'b1;
  else
  if( b1[2:1]==2'b10 )
    dir <= 1'b0;
  end

reg [31:0]cnt = 0;
wire clk_low_; assign clk_low_ = ( b0[2]==1'b0 || b1[2]==1'b0 ) ? (cnt>=299999) : (cnt>=3406238) ;

reg clk_low;
always @(posedge clk)
begin
  if(clk_low)
    cnt <= 0;
  else
    cnt <= cnt+1;
  clk_low <= clk_low_;
  end

reg [2:0]cnt6 = 0;
always @(posedge clk_low)
  if( cnt6==5)
    cnt6<=0;
  else
    cnt6 <= cnt6+1;

reg [1:0]cnt4 = 0;
always @(posedge clk_low)
  cnt4 <= cnt4+1;

always @(posedge clk)
begin
  if(dir)
  begin
    f0 <= ~(cnt4==0 || cnt4==1 ) & cnt[7];
    f1 <= (cnt4==0 || cnt4==1 ) & cnt[7];
    f2 <= ~(cnt4==1 || cnt4==2 ) & cnt[7];
    f3 <= (cnt4==1 || cnt4==2 ) & cnt[7];
  end
  else
  begin
    f2 <= ~(cnt4==0 || cnt4==1 ) & cnt[7];
    f3 <= (cnt4==0 || cnt4==1 ) & cnt[7];
    f0 <= ~(cnt4==1 || cnt4==2 ) & cnt[7];
    f1 <= (cnt4==1 || cnt4==2 ) & cnt[7];
  end
end

endmodule


Сигналы на двигатели подаются вот такого вида:

2 phase motor control

Напомню, что на плате Марсоход есть группы выходных пинов F0/F1/F2 и F3/F4/F5 специально объединенные по 10 пинов в один сигнал, чтобы выдавать достаточный ток в обмотки двителя. Это работает и никаких дополнительных микросхем драйверов обмоток не требуется. Соотношение фаз определяет направление вращения.

Скачать проект можно в разделе загрузок нашего сайта. Или вот прямо здесь:

Теперь расскажу немного о самом процессе съемок. Первое, что нужно сделать - выехать из города, туда, где меньше засветка неба от городского освещения. Иногда, как у меня, например, это не очень просто. Сразу за городом начинаются деревни одна за одной. Так что даже двадцать километров за городом не решают полностью всей проблемы. Мне немного повезло и я нашел неглубокий овражек, куда тем не менее есть автомобильный съезд для сельхоз техники. Овражек почти со всех сторон засажен посадкой акаций, но все равно свет от города есть.

Второе, что нужно сделать - это выбрать параметры съемки. И это для меня совсем не просто. Я ставил фотоаппарат в режим bulb, максимально раскрывал диафрагму, убирал весь зум, резкость на бесконечность. Какая должна быть установлена чувствительность? Изначально я думал, что буду ставить трекер на 10-15 минут и при интенсивности потока метеоров 100 в час, как было обещано я думал заснять на одном кадре за 10 минут 3-5 метеора. Но тут есть проблема. Я не могу поставить самую высокую чувствительность ISO1600 и оставить фотоаппарат на 10 минут - будет слишком засвечено. Из-за этого я снижал чувствительность до 400 и даже до 200 и тогда звезды выходили отлично, но метеоров на кадре просто не было видно. Печаль беда.

Мне повезло, что пролетел очень яркий даже не метеор, а наверное болид. Он был настолько ярок, что остался на кадре с чувствительностью 200. Вот это мой кадр:

meteor

18мм, F1/3.5, ISO200, 220 секунд. В редакторе только изменил яркость и контрастность. Справа внизу облачко. Метеор или болид был очень и очень ярок и прочертил пол неба. А на фото тоненькая ниточка слева внизу.

Как я понял видимо самый правильный метод фотографировать метеоры - это максимальная чувствительность и небольшая выдержка, скажем 30 секунд, до минуты. Но таких кадров нужно делать много, десятки, может даже сотни, а уже потом объединять в редакторе те снимки, куда попались метеоры. К сожалению, пока я до этого додумался, метеорный поток как-то иссяк и сильно хотелось спать. В общем прекратил наблюдения. В целом за час я видел где-то 20-30 метеоров, но не все вылетали из созведия Персея, как-то скорее хаотически то там то сям. Некоторые точно должны были попасть в зону наблюдения, но на фото я их не увидел, видимо не хватило установленной в тот момент чувствительности, я же все время пробовал что-то менять в настройках.

Тем не менее, выложу несколько других снимков.

Россыпи звезд:

stars

Столько глазом в наших краях не увидеть.

18мм, F1/5, ISO1600, 413 секунд. Постобработка - это изменение яркости и контрастности в редакторе. Итого здесь почти 7 минут выдержки, но отлично видно, что каждая звездочка в виде точки. Отлично отработал трекер, вел фотоаппарат вместе с  небом.

Справа повыше видна туманность андромеды. Вот я сделал кроп этого места из этого фото:

andromeda

То же самое фото с пояснением:

andromeda2

Теперь у меня есть мысль поехать в поля именно поохотиться за туманностью андромеды. Я надеюсь выкрутить зум на максимум и попробовать снять ее покрупнее.

В целом я остался доволен трекером. Хоть на вид и неказист, но работает надежно и довольно точно.

 

Добавить комментарий



facebook  GitHub  YouTube  Twitter