Этой ночью погода была, конечно, не ахти, но кое-что получилось сделать (правда, полностью программу не выполнил: нужны изображения <1'', чего практически не бывает у нас, а еще мешали облака). Зато для такого большого поля, которое обеспечивают подвижки TeA, кому видно даже с изображениями в 3'':
Центр кадра сдвинут по оси Y на 43.5мм от центра поля
( Read more... ) В общем, и прибор обкатал, и проверил работу новых приводов БТА. Следующее, что хочу сделать — добавить к прибору еще одну подвижку, на которой установить объектив с ножом Фуко. Натыкались с Тимуром на статьи (кажется, из ЛИТМО), где показывалось, как метод Фуко можно сделать количественным, а не качественным. Если все заработает, то нам не нужны будут убогие датчики Шака-Гартманна и мы сможем измерять форму поверхности зеркала с намного лучшим разрешением (таки примерно 3000×3000 куда как лучше, чем 40×40).
Закончил сегодня простую утилиту для управления платформой. Сервер работает с портом, открывая UNIX-сокет для входящих соединений. Клиент может быть в режиме терминала (что введешь, то и отправится после простейшей проверки - не выйдет ли за допустимые пределы) или вызываться с параметрами в миллиметрах. Вот такие ключи:
Usage: teacmd [args]
Where args are:
-0, --gotozero init zero-position of all axis
-c, --client run as client
-d, --devpath=arg serial device path
-f, --sockpath=arg socket path (start from \0 for no files, default: \0TeA)
-h, --help show this help
-l, --logfile=arg file to save logs (default: none)
-o, --fitsheader=arg FITS header output file
-p, --pidfile=arg pidfile (default: /tmp/usbsock.pid)
-s, --speed=arg serial device speed (default: 9600)
-t, --terminal run as terminal client
-v, --verbose increase log verbose level (default: LOG_WARN) and messages (default: none)
-w, --wait wait end of operations
-x, --setx=arg move X-stage to this coordinate (mm)
-y, --sety=arg move Y-stage to this coordinate (mm)
-z, --setz=arg move Z-stage to this coordinate (mm)
--xmax=arg max position (steps) by X
--xmin=arg min position (steps) by X
--ymax=arg max position (steps) by Y
--ymin=arg min position (steps) by Y
--zmax=arg max position (steps) by Z
--zmin=arg min position (steps) by Z
Когда происходит движение, сервер опрашивает раз в секунду вплоть до останова по всем осям, складывая данные в фитс-шапку, ее можно будет прилепить к FITS-файлу средствами ccd_capture.
В поисках совершенства (надоело уже туда-сюда тягать всякие фичи среди 100500 утилит для по сути одного и того же — получения FITS-файлов с CCD/CMOS), решил сделать эдакий универсал. Поддержка каждой камеры реализуется в виде модуля: динамической библиотеки, открываемой через dlopen. В каждой библиотеке экспортируется лишь 3 объекта: структуры Camera, Focuser и Wheel. А в них уже содержатся свойства и методы конкретной железки, реализованные в этой библиотеке. Еще давно сделал для FLI (по сути это и содрано с fli_control), сейчас вожусь с поддержкой ZWO-ASI, понемногу приходится изменять содержимое структур, т.к. в CMOS кое-какие совсем иные вещи есть, и хочется их тоже поддерживать. Главное — после всех этих извращений с ZWO, проверить, все ли для FLI работает.
Вот, работая с ZWO, заметил, что я, дурья моя башка, забыл на TeA выделить место под блок питания камеры! С какого-то перепугу я решил, что она от USB будет питаться. Ага. Пельтьюха от USB! Как бы не так!!! В общем, придется опять колхоз разводить. Да, у этой камеры (а скорей — ее библиотеки) есть очень паршивая особенность: каждый раз при инициализации камеры все значения сбрасываются в дефолт, т.е. температура тоже. А если хочешь установить температуру, нужно до экспозиции какое-то время выждать, пока не включится вентилятор (иначе после окончания экспозиции охладитель не заработает).
Постепенно развиваю "чайный" контроллер. Думаю, по протоколу уже вряд ли что-то нужно будет добавить. Намедни отладил CAN (т.к. я им с самого начала не занимался, там было много косяков). ( tl;dr )
Еще на первой сборке в среду появились какие-то непонятные проблемы: то здесь, то там не было контакта, в итоге только один шаговик нормально работал. ОК, я — любитель на свою задницу приключений найти, так что вчера и сегодня пытался найти косяк.
Как говорится, глаза боятся, а руки делают. С понедельника занимаюсь завершением сборки и прокладкой кабелей. Пришлось еще немного "по месту" посверлить и нарезать резьбу. Пока все не отладил, на двигателях кабель закрепил уродской желтой изолентой: