Телескопы покупают здесь


A A A A Автор Тема: ASCOM-драйвер для "Контроллера электрофокусера"  (Прочитано 17659 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
Итак появилась необходимость в написании ASCOM-драйвера для "Контроллера электрофокусера"
описанного в ветке :
                                  https://astronomy.ru/forum/index.php/topic,13180.0.html

Итак некоторые идеи и пути реализации:

1. Список свойств и методов, которые должен реализовать драйвер

Свойства

* Absolute  (read-only, Boolean)   True, если фокусер можно установить в конкретное заданное положение, иначе
                                                используется смещение от текущего положения (Dком =Dцел - Dтек)

* IsMoving  (read-only, Boolean)   True, если фокусер в движении. False, если фокусер простаивает.

* Link        (read-write, Boolean)   Проверка/установка состояния подключения компьютера к фокусеру.

* MaxIncrement  (read-only, Long)   Макс. допустимое изменение положения в шагах за одну команду перемещения.

* MaxStep  (read-only, Long)    Максимально допутимое положение фокусера в шагах (минимальное - 0).

* Position  (read-only, Long)    Текущее положение фокусера (в шагах). Справедливо ТОЛЬКО при Absolute == true.

* StepSize  (read-only, Double)    Длина хода фокусера (в микронах) на один шаг двигателя.

* TempComp  (read-write, Boolean)    Проверка/установка режима термокомпенсации (если она поддерживается),
                                                      иначе всегда False.

* TempCompAvailable  (read-only, Boolean)    True, если фокусер имеет режим термокомпенсации.

* Temperature  (read-only, Double)   Текущая температура, измеренная электроникой фокусера.

Методы

* void Halt()  Немедленная остановка движения фокусера, вызванного предыдущей командой Move(...).

* void Move(Long Position) Если свойство Absolute == True (фокусер может перейти в заданное абсолютное
                                      положение), то Position - целевое положение от 0 до MaxStep. Если Absolute == False,
                                      то задается относительное положение (смещение от текущего) от - MaxIncrement до
                                      +MaxIncrement.

* void SetupDialog()  Отображает окно диалога для настройки пользовательских параметров. Например параметры
                              порта (номер порта, скорость обмена, максимально возможное положение фокусера, шаг
                              фокусера в микронах на шаг, шаг температурной коррекции и т.д.).
« Последнее редактирование: 13 Ноя 2007 [09:20:00] от Ivan Mhitarov »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
Итак, рассмотрим кратко его свойства:

* Absolute - так как мы имеем желание иметь некое (пусть приближенное) положение фокусера,
                  это должно быть True (см. свойство Position). Таким образом драйвер должен поддер-
                  живать прием абсолютного положения фокусера в шагах.

* IsMoving - здесь все достаточно просто. Даем команду на перемещение в заданную точку и пери-
                 одически считываем текущее положение. При совпадении координат сбрасываем IsMoving.
                 Либо в прошивку контроллера вводим команду выдачи байта состояния (убрав ненужные
                 команды для опознавания его, как LX200GPS).

* Link       - тут все тривиально, из диалога настройки включаем/выключаем фокусер. Можно перед
                 выключением помещать фокусер в около-нулевое положение, а при включении, например,
                 в среднее или некое заданное положение - будет круто смотреться !!! В теле драйвера
                 периодически контролировать время отклика на команды и, при превышении некоего тайм-
                 аута, устанавливать флаг "отключен" и выдавать ошибку.

* MaxIncrement
* MaxStep
* StepSize 
* TempCompAvailable       - тут совсем все просто. Настройка в диалоге пользователя. Возможно введение
                                       калькулятора длины шага ...

* Position  - используем команду #S#

* TempComp  - по чтению понятно - команда #M#, по входу в режим требуется разъяснение разработчика.
                      "Как дистанционно войти в режим автономной работы ?" Возможно нужно ввести одну команду.

* Temperature -  аналогично, имеем команду #T#. Только как считать значения дополнительных датчиков ?
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
Переходим к функциям ...

* void Halt()  - просто выполняем команду #:FQ#

* void Move(Long Position)  - Так как наш драйвер допускает абсолютную координату, то здесь
                                          мы ее и зададим. Реализация возможна двумя путями ...

    1) Имеем текущее положение. Определяем направление вращения двигателя.
        Командами #:F+# или #:F-# запускаем двигатель. В цикле запрашиваем положение фокусера.
       При приближении к целевому положению останавливаем мотор и дошагиваем командами
       #I#  или #O#. Сложно, возможен пролет мимо, но реализовать можно ...
 
    2) По согласованию с разработчиком меняем, как я уже предлагал, #I#  и #O# на #Inn# и #Omm#,
        где nn, mm - количество шагов вовнутрь/наружу. Просто и ясно ...

* void SetupDialog() - тут появляется диалог с настройками драйвера и контроллера. Можем вручную
                               "рулить" командами #:F+# и #:F-# , регулировать скорость командами #:FF#  и #:FS# ,
                               настраивать скорости и люфт, шаг термокомпенсации (команды #R# и #WXY#),
                               настраивать порт и прочие функции, которые может выдумать больная фантазия ЛА ...

Вот такие размышления по-поводу и без ...

К вечеру вторника выложу некоторые наработки, а пока жду Ваших отзывов и предложений ...
« Последнее редактирование: 27 Окт 2007 [01:08:59] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 11 657
  • Рейтинг: +469/-4
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Show only replies by Ivan7enych
    • Астропроекты и астрософт
На чем писать будешь?

Если на С++, могу дать готовый IDL файл с интерфейсом ascom-фокусера.

На счет термокомпенсации не понял, либо из диалога настроек позволять настраивать контроллер, чтобы он сам компенсировал.
Либо делать это снаружи - периодически читать температуру и поправлять фокус.
Видео отчеты мастерской
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 11 657
  • Рейтинг: +469/-4
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Show only replies by Ivan7enych
    • Астропроекты и астрософт
                Можно перед
                выключением помещать фокусер в около-нулевое положение, а при включении, например,
                в среднее или некое заданное положение - будет круто смотреться !!!

Угу, при выключении фокусер выезжает, проскакивает упор и камера падает на бетон... ;)

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

А зачем такие сложности? Чтоб (если вдруг кабель отвалился) у MaximDL был лишний повод отматериться и прервать получасовую выдержку?
Если потребовалось движение, а отклика нету - то ругаться можно, а постоянно контролировать зачем?
Видео отчеты мастерской
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
Сбрось на мою почту, если не в тягость ...  :D

На счет термокомпенсации не понял, либо из диалога настроек позволять настраивать контроллер, чтобы он сам компенсировал.
Либо делать это снаружи - периодически читать температуру и поправлять фокус.

Вопрос в том, что я пока не могу разобраться, как фокусер входит в режим авто-термокомпенсации (чужой код - потемки).
На данный момент я так понимаю, что при простое контроллера он периодически меряет температуру и при некоторой
дельте переходит в режим автокомпенсации. Выход - по кнопке TempUpdate (NotUsed на схеме). Команды входа/выхода из
этого режима я не увидел ...

Так что тут либо пропускать запуск/останов режима термокопенсации мимо ушей, либо ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
Цитировать
Угу, при выключении фокусер выезжает, проскакивает упор и камера падает на бетон... Wink
;D  :o  :'(

Цитировать
А зачем такие сложности? Чтоб (если вдруг кабель отвалился) у MaximDL был лишний повод отматериться и прервать получасовую выдержку?
Если потребовалось движение, а отклика нету - то ругаться можно, а постоянно контролировать зачем?
Согласен. Даем команду на движение и пердически опрашиваем положение. Не достигли за час - значит ошибка  ;D ;D
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 11 657
  • Рейтинг: +469/-4
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Show only replies by Ivan7enych
    • Астропроекты и астрософт
Сбрось на мою почту, если не в тягость ...  :D

Хорошо, я завтра почищу код и вышлю максимум что могу. Чтобы не писать с нуля.
Видео отчеты мастерской
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
Цитировать
Хорошо, я завтра почищу код и вышлю максимум что могу. Чтобы не писать с нуля.

Пасибки ! Ждем ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн Дядя Вова

  • *****
  • Сообщений: 7 534
  • Рейтинг: +66/-1
  • "я видел воочью пространство и время"
    • Show only replies by Дядя Вова
Вопрос в том, что я пока не могу разобраться, как фокусер входит в режим авто-термокомпенсации (чужой код - потемки).
На данный момент я так понимаю, что при простое контроллера он периодически меряет температуру и при некоторой
дельте переходит в режим автокомпенсации. Выход - по кнопке TempUpdate (NotUsed на схеме).

По включению питания ЭФ переходит в режим Авто. В этом режиме он занимается только термокомпенсацией и реагирует только на одну кнопку. Даже есть легенда, что эта кнопка Not Used :)  Возможно, что будет обрабатывать прерывания от UART, но это еще вопрос.
Цитировать
Команды входа/выхода из этого режима я не увидел ...
automode=~automode  ;D
Признак режима лежит по адресу 0х2008 (1-ручной , EF- авто) и соответствует переменной automode.
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
Цитировать
По включению питания ЭФ переходит в режим Авто. В этом режиме он занимается только термокомпенсацией и реагирует только на одну кнопку. Даже есть легенда, что эта кнопка Not Used  :)  Возможно, что будет обрабатывать прерывания от UART, но это еще вопрос.

 ;D - Супер !!! Хорошо, что еще не Reset ...

Цитировать
automode=~automode   ;D
Признак режима лежит по адресу 0х2008 (1-ручной , EF- авто) и соответствует переменной automode.

Устные пересказы донесли также до нас предание, что выход из режима эквивалентен замыканию 5 и 17 ножек МК ...
Что в свете последних судьбоносных решений Пленума ЦК КПСС соответствует 6 и 17 ножкам !
« Последнее редактирование: 27 Окт 2007 [02:20:31] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

Оффлайн Дядя Вова

  • *****
  • Сообщений: 7 534
  • Рейтинг: +66/-1
  • "я видел воочью пространство и время"
    • Show only replies by Дядя Вова
[...Пленума ЦК КПСС соответствует 6 и 17 ножкам !
(c)"В ЦК не дураки... " Это откуда инфа? Из разводки в PDF файле ? (Сам посмотреть сейчас не могу :( )
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн Дядя Вова

  • *****
  • Сообщений: 7 534
  • Рейтинг: +66/-1
  • "я видел воочью пространство и время"
    • Show only replies by Дядя Вова
[...Пленума ЦК КПСС соответствует 6 и 17 ножкам !
Батенька, да Вы - ревизионист!  ;) Вывод 6 незадействован! Именно 5-17, а не 4-17 как в первоисточнике
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн crazybug

  • ***
  • Сообщений: 152
  • Рейтинг: +2/-0
    • Show only replies by crazybug
Ну общая идея мне понятна, тем более если реализация идет согласно решениям пленума, то значит все будет работать  ;) Но помочь могу только в качестве тестера - вас блин не догонишь уже - я и слов то таких не знаю  :)
Кстати - при включении выход в авторежим - это исскуственно, можно же сделать и в мануал-мод. А вот с термокомпенсацией...что-то мне подсказывает, что такая фича без привязки к какому-либо конкретному фокусеру из конкретного материала - не будет работать, или будет не корректно - разное расширение материалов у всех, и сами материалы от стали до силумина, бронзы и т.д., включая пластмассу...Или должна быть тогда нашей узкой партячейкой выработана методика юстировки термокоррекции на конкретной железке- как то так мне видится...В живую я не видел промышленного фокусера - но судя по картинкам - это единое законченное решение - электроника+механика.
HEQ5 Synscan, трубы SW 114\900, SW 80ED Pro, НПЗ 150\750, гид DS 70\300+ QHY6, Canon 350Da.

Оффлайн Ivan Mhitarov

  • Модератор
  • *****
  • Сообщений: 5 649
  • Рейтинг: +95/-10
  • Наша служба и опасна и трудна...
    • Skype - facebook:vanmhit
  • Награды Неоднократный победитель конкурса астрофото
    • Show only replies by Ivan Mhitarov
А вот с термокомпенсацией...что-то мне подсказывает, что такая фича без привязки к какому-либо конкретному фокусеру из конкретного материала - не будет работать, или будет не корректно - разное расширение материалов у всех, и сами материалы от стали до силумина, бронзы и т.д., включая пластмассу...Или должна быть тогда нашей узкой партячейкой выработана методика юстировки термокоррекции на конкретной железке- как то так мне видится...В живую я не видел промышленного фокусера - но судя по картинкам - это единое законченное решение - электроника+механика.
Толик, все термокомпенсирующие фокусеры имеют режим обучения при котором они замеряют на сколько шагов и в какую сторону надо сдвинуть фокусер при изменении температуры на 1 градус.
Эта величина для каждой трубы и комплекта оптики постоянна (практически).
Иван Мхитаров
Кубанский Астрономический Клуб "45".

Оффлайн Дядя Вова

  • *****
  • Сообщений: 7 534
  • Рейтинг: +66/-1
  • "я видел воочью пространство и время"
    • Show only replies by Дядя Вова
Есть крамольная мысль - прошить в контроллер нормальную систему команд под готовый драйвер.
Вроде помнится, что FLI фокусер мог быть полезен. Не ошибаюсь?
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 11 657
  • Рейтинг: +469/-4
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Show only replies by Ivan7enych
    • Астропроекты и астрософт
Накропал "рыбу" аском фокусера.

Рыба компилируется в VC++ 6.0, после запуска install.bat видится как CustomFocuser в списке Аском фокусеров, подключается в MaximDL.
 
Всю тупую работу по оформлению, генерации гуидов я вроде сделал.
Осталась работа по наполнению функций содержанием. ;)
« Последнее редактирование: 29 Окт 2007 [13:03:40] от Ivan7enych »
Видео отчеты мастерской
телескопы - 320 астросиб на удаленке, 230мм - Каминский, Televue NP101is

Оффлайн Александр Л.

  • *****
  • Сообщений: 3 712
  • Рейтинг: +52/-4
  • Мне нравится этот форум!
    • Show only replies by Александр Л.
   К сожалению нет возможности подробно поучавствовать в обсуждении. Но уже кажется , что есть перебор в запросе функций контроллера. Набор необходимых дополнительных команд должен быть минимален. На мой взгляд достаточно убрать команды передвижения на один шаг и сделать команды перемещения на определенное кол-во шагов. В качестве некоторого набора доп. команд необходимо добавить команды учитывающие то обстоятельство , что возможно будет следующая версия контроллера (частично изготовленная ) поддерживающая цифровую измерительную шкалу работающую по протоколу штангенциркуля. Естестсвенно под это расширение уже заняты некоторые пустые на данный момент ноги контроллера.


Оффлайн Александр Л.

  • *****
  • Сообщений: 3 712
  • Рейтинг: +52/-4
  • Мне нравится этот форум!
    • Show only replies by Александр Л.
А вот с термокомпенсацией...что-то мне подсказывает, что такая фича без привязки к какому-либо конкретному фокусеру из конкретного материала - не будет работать, или будет не корректно - разное расширение материалов у всех, и сами материалы от стали до силумина, бронзы и т.д., включая пластмассу...Или должна быть тогда нашей узкой партячейкой выработана методика юстировки термокоррекции на конкретной железке- как то так мне видится...В живую я не видел промышленного фокусера - но судя по картинкам - это единое законченное решение - электроника+механика.
Толик, все термокомпенсирующие фокусеры имеют режим обучения при котором они замеряют на сколько шагов и в какую сторону надо сдвинуть фокусер при изменении температуры на 1 градус.
Эта величина для каждой трубы и комплекта оптики постоянна (практически).

    Именно так и сделано, только фокусер движется в одну сторону. Т.Е. направление или если хотите знак термокомпенсации не меняется. За основу взят TCF фокусер. В принципе на остывшем телескопе у меня термокомпенсация работала.

Для определения наличия фокусера можно использовать команду из набора LX200 ASC, которая реализована.

Оффлайн MefodyАвтор темы

  • *****
  • Сообщений: 1 453
  • Рейтинг: +2/-0
  • Служу ЗВЕЗДАМ !!!
    • Show only replies by Mefody
   К сожалению нет возможности подробно поучавствовать в обсуждении. Но уже кажется , что есть перебор в запросе функций контроллера. Набор необходимых дополнительных команд должен быть минимален. На мой взгляд достаточно убрать команды передвижения на один шаг и сделать команды перемещения на определенное кол-во шагов. В качестве некоторого набора доп. команд необходимо добавить команды учитывающие то обстоятельство , что возможно будет следующая версия контроллера (частично изготовленная ) поддерживающая цифровую измерительную шкалу работающую по протоколу штангенциркуля. Естестсвенно под это расширение уже заняты некоторые пустые на данный момент ноги контроллера.



Я тут вчерне набросал ASCOM-драйвер и, на мой взгляд, необходимо модифицировать набор команд в следующем ключе:

1. ВВЕСТИ команду включения/выключения термокомпенсации. Без нее рулить проблематично ибо управление режимом пока
   ТОЛЬКО с клавиатуры фокусера. Например #Cn#, для n=1 - вкючаем термокомпенсацию, 0-отключаем. Либо модифицировать
   #T# в #Tn# , где 0 - выйти из режима ТК, 1 - войти в режим ТК, 2 - -выдать температуру.
   
2.Как я уже говорил, заменить #I# и #O# на #Inn# #Omm#, где nn, mm - число шагов. Я тут начал приворачивать таймер к
  библиотеке - гемор еще тот.

3. Для последующего использования цифрошкалы потребуется, видимо:
    а) ввести команду сброса счетчика положения, либо    модифицировать #S# до #Sn#, где n - 0 выдать текущее положение,
       1 - сбросить счетчики шагов и отсчетов ЦШ (цифровой шкалы);
    б) выдавать в ответ на #Sn# не 2-байта счетчика шагов, а 4 - еще 2 на отсчет ЦШ.

Пока других вариантов не вижу ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.