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


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

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

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Цитата
_________________________________________________ _
4) Щас поковыряю DSLR Focus

Вот, поковырял - ВСЕ ОК !!!
Ты после выбора ASCOM-фокусера не нажимай Link. Он сам автоматом коннектицца ...
« Последнее редактирование: 05 Ноя 2007 [22:37:09] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 8 083
  • Благодарностей: 95
    • Сообщения от Дядя Вова
Да, все крутит. Наверное, дело опять было в моем неаккуратном обращении с EEPROM.
Далее, поправил свою версию прошивки - ответ на #0nn# #Inn# - символ "*". И все сразу стало на свои места, т.е. для себя понял, что <CR> ведет себя как-то по служебному. Грустно, опять несколько дней потерял :(
Краткое, испытания показали, что focuser_dv.hex AstroFocuser.hex ведут себя одинаково.
Но... у меня тоже нет термометров, так что проверить эту часть не могу.

Как понимаю,  можно переходить к тестам автофокуса!

----------
ps Прицепил, свою версию прошивки и её исходник
« Последнее редактирование: 05 Ноя 2007 [12:52:02] от Дядя Вова »
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Закончена работа по созданию драйвера. Теперь настройки скоростей, люфта и
термокомпенсации можно записывать из диалога ASCOM-драйвера.

!!! High Speed нельзя задавать выше 300 (а реально выше 250). Схема не потянет.

Введена возможность перехода в/из режим термокомпенсации.
Полное описание команд драйвера приведено в архиве, там же описание драйвера
и инструкции по его установке.

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

Удачи!  Жду откликов ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Что осталось сделать ...

1. Убедиться в правильной обработке температуры (ждем откликов пока у меня не появится датчик).
2. Объеденить команды LX200 и текущий набор (благодаря Дяде Вове в этом деле наметился прогресс).
3. Написать калькулятор длины хода фокусера на один шаг двигателя.

Давайте еще что-нибудь изобретем, а то руки чешутся. Есть одна идейка, но пока о ней рано. Скажу
только, что это связано с серийной съемкой Canon-ом в режиме без компа ...

До связи ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 8 083
  • Благодарностей: 95
    • Сообщения от Дядя Вова
2. Объеденить команды LX200 и текущий набор (благодаря Дяде Вове в этом деле наметился прогресс).
А это зачем теперь-то?

Да, и что-то у меня последняя прошивка не заработала - нет ответа "*".
Прошил старую- крутит. Наверное что-то опять напутал. Буду пробовать еще.
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

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

  • *****
  • Сообщений: 8 083
  • Благодарностей: 95
    • Сообщения от Дядя Вова
Давайте еще что-нибудь изобретем...
... переключение скорости фокусера быстро-медленно. ( :FF# :FS#)
Сейчас он крутится только медленно?
... СТОП - Бывший :FQ#
« Последнее редактирование: 05 Ноя 2007 [23:50:59] от Дядя Вова »
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

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

  • *****
  • Сообщений: 3 681
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Представляю новую версию микропрограмм. В ней учтены все или часть пожеланий программистов. Прежде всего необходимо
было освободить память в ПЗУ, поскольку она кончилась. Для этого был исключен режим вывода температуры на экран с 4-х
термодатчиков. Теперь микропрограмма поддерживает только один термодатчик - с нулевым адресом. Это позволило освободить
примерно 200 байт памяти. Были исправлены недочеты, связанные с выводом температуры на экран. Теперь надпись otTerm
выглядит как NotTerm, а температура выводится со знаком, который раньше выводился за пределами строки. Переход из режима
автомат в ручной и наоборот осуществляется простым нажатием 4-ой кнопки, дополнительное меню между режимами отсутствует.
Некоторые дополнительные команды были изменены, некоторые добавлены,некоторые остались без изменений.


Дополнительные команды

#T# - Осталась без изменений.
_________________________________________________ ____________________
В ответ контроллер выдает два байта соответсвующих температуре помноженной на 100
Например
Температура на шкале фокусера 29.12 градуса цельсия
В ответ на команду контроллер передаст два байта 11 и 96.
11*256+96=2912. Такой формат температуры контроллер использует для того, чтобы не работать с вещественной арифметикой
для экономии памяти программ.
_________________________________________________ ____________________


#S# - Осталась без изменений.
_________________________________________________ ____________________
В ответ контроллер выдает два байта соответствующих значению шкалы фокусера.
Например.
Текущее значение шкалы 504
В ответ на команду контроллер передаст два байта 1 и 248.
1*256+248=504. Максимальное значение шкалы +-32768.
_________________________________________________ ____________________

#M# - Осталась без изменений.
_________________________________________________ ____________________
В ответ контроллер выдает  байт соответсвующий установленному режиму.
Например.
Режим ручной
В ответ на команду контроллер передаст  байт 1.
Режим автомат
В ответ на команду контроллер передаст  байт 254.
_________________________________________________ ____________________

#A# - Осталась без изменений. Была не правильно описана.
_________________________________________________ ____________________
Подача команды приводит к переключению режимов.
Например
Если контроллер находился в ручном режиме, то он перейдет в режим автомат,
если контроллер находился в режиме автомат, то он перейдет в ручной режим.
Повторная подача команды опять приводит к переключению режимов. Содержимое дисплея контролера
будет изменено так же как и при управлении от кнопок.
_________________________________________________ ____________________

#E# - Новая команда
_________________________________________________ ____________________
Подача команды приводит к обнулению шкалы контроллера. Блокируется в режиме автомат.
_________________________________________________ ____________________

#WXY# - Команда дописана, после модификации flash памяти происходит переприсваивание
переменных отвечающих за скорости, люфт и температурный дрейф фокусера.
_________________________________________________ ____________________
Подача команды приводит к записи байта Y в адрес Х flash памяти.
ФОрмат первых 8 ячеек flash.

Меньшая скорость фокусера - 0 и 1 байты.
Большая скорость фокусера - 2 и 3 байты.
В контроллере переменные скоростей фокусера целые 16-битные переменные со знаком.
Максимальные значения скоростей 0-250.

Люфт привода 4 и 5 байты
Для люфта в контроллере отведена целая 16 битная переменная со знаком.
Значение люфта не может быть установлено более 99 и менее 0.

Температурный дрейф привода 6 и 7 байты
Для люфта в контроллере отведена целая 16 битная переменная со знаком.
Значение дрейфа не может быть установлено более 99 и менее 0.
_________________________________________________ ______________________

#R# - осталась без изменений.
_________________________________________________ ______________________
Подача команды приводит к чтению и передачи в компьютер первых 8-ми ячеек
flash памяти.
Например.
Установленные значения скоростей 10 и 200, температурного дрейфа 15, люфта 10.
В ответ на подачу команды в компьютер передаются следующие байты.
10,0,200,0,10,0,15,0.
_________________________________________________ _______________________

#IXY# - команда переписана
_________________________________________________ _______________________

Подача команды приводит к перемещению фокусера на X+Y*256 шагов в направлении к объективу.
Каждый шаг сопровождается передачей в компьютер кода символа !. Команда блокируется в режиме автомат.
Контроллер в этом случае ничего в компьютер не передает.
_________________________________________________ _______________________

#OXY# - команда переписана
_________________________________________________ _______________________

Подача команды приводит к перемещению фокусера на X+Y*256 шагов в направлении от объектива.
Каждый шаг сопровождается передачей в компьютер кода символа !. Команда блокируется в режиме автомат.
Контроллер в этом случае ничего в компьютер не передает.
_________________________________________________ _______________________

   О перспективах. В некоторых фокусерах используется абсолютная шкала.
В этом случае нулевому показанию шкалы соответсвует положение фокусера максимально близкое к объективу, максимальное -
максимально дальнее от объектива. Значение шкалы сохраняется при выключении питания. Данный режим позволяет
позиционироваться в точки соответствующие разному навесному оборудованию.
Подобный режим может быть реализован двумя способами. С помощью аппаратного энкодера - например штангенциркуля, или же
методом запоминания во флаш памяти значения шкалы при выключении питания или же после выполнения перемещения.
Не знаю насколько оправдан такой режим на практике, поскольку при наличии в системе температурного дрейфа позиционирование
в точку фокуса будет затруднено, все равно потребуется дофокусировка.
При помощи аппаратного энкодера такой режим осуществить очень легко. В случае же использования связки счетчик
шагов + флаш возникают трудности. Во первых неизбежен дрейф положения из-за дрейфа люфта, а также отката редуктора
при выключении питания. Кроме того флаш память имеет ограниченный ресурс по записи - 100 тыс. раз по тех. характеристикам.
Реально правда на полтора порядка больше. Тем не менее рано или поздно флаш память выйдет из строя и потребуется
замена однокристалки. Такой режим кстати использует контроллер в режиме термокомпенсации. Тем не менее есть промышленные
фокусеры работающие именно таким образом и было бы логично реализовать такой режим.
  Выделенной памяти оказалось для этого недостаточно. Поэтому для реализации режима требуется достаточно трудоемкая работа
по минимизации кода. Тем не менее постараюсь этот режим организовать. В этом случае появятся дополнительные команды.
1.- команда включения режима энкодер и его  выключения. Реально при включении режима перед тем как выполнить шаг двигателя
В обоих режимах автомат и ручной будет осуществляться проверка шкалы на ноль и максимальное значение.
Динстанционное включение режима невозможно - для этого надо как-то поставить фокусер в точку с известной координатой.
2.- Чтение из флаш переменной показывающей значение максимального возможного перемещения.
3.- Чтение из флаш переменной показывающей наличие аппаратного энкодера. Для будующих расширений.

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

Данная версия считается пробной и требует проверки. Просьба проверить оссобенно режим работы с аском LX200.
Работа команд проверена при помощи гипертерминала RS232.

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Цитата
#IXY# , #OXY#
______________

Подача команды приводит к перемещению фокусера на X+Y*256 шагов в направлении к объективу. Каждый шаг сопровождается передачей в компьютер кода символа !. Команда
блокируется в режиме автомат.
Контроллер в этом случае ничего в компьютер не передает.

1. Не надо после каждого шага. Это сильно затруднит обработку внутри ASCOM-драйвера.
Достаточно выдать символ ОДИН раз ПОСЛЕ окончания отработки перемещения.

Хотя если ты настаиваешь ...

2. #A# в старой версии прошивки переводила фокусер ТОЛЬКО из ручного в автоматический.
Надо ли понимать, что теперь ее обработка расширена и до обратного перехода ?

3. Команда #E# - вещь, но для будущих расширений. Ибо текущая версия платформы ASCOM
   не имеет метода для установки фокусера в ноль. Однако я, пожалуй, введу обнуление
   счетчика в диалоге настройки для упрощения инициализации фокусера.

В целом работа проделана весьма и весьма продуктивная ...
Саша, ты проверил работу ASCOM-драйвера с подключенным датчиком ? А то меня гложут
смутные сомнения ...

P.S. Нельзя ли передать мне почтой исходники прошивки ? Просто легче понять логику работы
контроллера видя код, а не раскапывая дебри лога сниффера порта ...
 mef_poter(гав-гав)"русская почта"
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 3 681
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
Цитата
#IXY# , #OXY#
______________

Подача команды приводит к перемещению фокусера на X+Y*256 шагов в направлении к объективу. Каждый шаг сопровождается передачей в компьютер кода символа !. Команда
блокируется в режиме автомат.
Контроллер в этом случае ничего в компьютер не передает.

1. Не надо после каждого шага. Это сильно затруднит обработку внутри ASCOM-драйвера.
Достаточно выдать символ ОДИН раз ПОСЛЕ окончания отработки перемещения.

Хотя если ты настаиваешь ...

 

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

 
Цитата
#IXY# , #OXY#
______________


2. #A# в старой версии прошивки переводила фокусер ТОЛЬКО из ручного в автоматический.
Надо ли понимать, что теперь ее обработка расширена и до обратного перехода ?

 

Да, расширена, но по моему и раньше работала. Сейчас все команды проверены гипертерминалом.

В целом работа проделана весьма и весьма продуктивная ...
Саша, ты проверил работу ASCOM-драйвера с подключенным датчиком ? А то меня гложут
смутные сомнения ...

P.S. Нельзя ли передать мне почтой исходники прошивки ? Просто легче понять логику работы
контроллера видя код, а не раскапывая дебри лога сниффера порта ...
 mef_poter(гав-гав)"русская почта"

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

Исходник сейчас перешлю.



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

  • *****
  • Сообщений: 3 681
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Буду пытаться вечерами дописывать режим энкодера. Написал бы уже, но память сложно освобождается.


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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Цитата
Мне в принципе все равно. Просто так сделано в робофокусе и это дает возможность оценивать перемещение при длительных перемещениях фокусера, а то смотришь на экран и не знаешь, когда все кончится, в принципе мой фокусер до 20 сек может перемещаться, а другие наверное и больше. Но как скажете, но модификация будет уже только завтра.

Мы всегда можем запросить текущее положение. Максимка так и делает 1 раз в секунду.

За исходники спасибо - к вечеру переделаю его под новый набор команд.
Во всяком случае я так надеюсь (если босс не решит орехами полакомиться) ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Цитата
... никогда не подключал ASCOM драйвер, не умею ...

В архиве лежит инструкция по установке. Запускаем install.bat  и ... ВСЕ !
Но он работает только с моей прошивкой (модифицированной). Под новую
прошивку будет к вечеру ...

Никак что-то мне датчик не привезут - дефицит однако. Однопроводных 18-тых
хоть косой коси а 16-е проблема. Сделать эмулятор 1631 что-ли ?

P.S. Блин, забыл дома кабель-программатор поэтому вечером выложить не смогу
      (если только непроверенную). А завтра сменюсь с вахты и к обеду
      все протестирую.
« Последнее редактирование: 06 Ноя 2007 [11:10:59] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Да, вижу теперь #A# должна переводить фокусер туда и обратно (&& заменен на ||).

#WXY# - запись байта Y адрес X во флаш память с обновлением переменных. Команда
обновления #G# теперь не нужна ...

Одно замечание, так как длительность записи в память есть величина переменная,
может стоит в ответ передать символ '!', означающий окончание записи ? У меня команда
#WXY# так и доработана. Дали команду на запись, получили подтверждение, записали
следующий и т.д.

Какое мнение по этому вопросу ?
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 3 681
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   В принципе конец операции для некоторых операций сделать легко, а для некоторых сложно. Давайте так сделаем. Для всех операций, кроме перемещения на n шагов 100 мс, на переход из авто и обратно секунда ( сделать конец операции сюда сложно), ну а на перемещение есть сигнал готовности. На запись сделать готовность просто. Поэтому давайте так, пишите, что мне сделать еще - готовности по каким командам? (только не по авто и ручной - много памяти сожрет). И надо ли подтверждение на каждый шаг или только конец операции - и я напишу, возможно даже сегодня.
  Ну а энкодер через несколько дней, или в выходные. А кстати он нужен?
« Последнее редактирование: 06 Ноя 2007 [12:02:52] от Александр Л. »

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

  • *****
  • Сообщений: 3 681
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
  Да, с какой программой использовать ASCOM драйвер, или он в сам по себе тоже работает?

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
   В принципе конец операции для некоторых операций сделать легко, а для некоторых сложно. Давайте так сделаем. Для всех операций, кроме перемещения на n шагов 100 мс, на переход из авто и обратно секунда ( сделать конец операции сюда сложно), ну а на перемещение есть сигнал готовности. На запись сделать готовность просто. Поэтому давайте так, пишите, что не сделать еще - готовности по каким командам? (только не по авто и ручной - много памяти сожрет). И надо ли подтверждение на каждый шаг или только конец операции - и я напишу, возможно даже сегодня.
  Ну а энкодер через несколько дней, или в выходные. А кстати он нужен?


Энкодер пока в перспективе, ибо у нас в Севастополе цифровой штангель днем с огнем
и за ДЕНЬГИ. Хотя на перспективу не помешает ...

Разберем по командам ...
#T# - чтение температуры - значение температуры и есть ответ
++++++++++++++++++++++++++++++++++
#S# - чтение текущего значения шкалы фокусера - аналогично
++++++++++++++++++++++++++++++++++
#A# - переключение режима ручной/автокомпенсация - подтверждение не нужно, ибо
         следующей командой мы проверяем статус контроллера
++++++++++++++++++++++++++++++++++
#M# - запрос/установка режима в котором находиться фокусер – режим и есть ответ
++++++++++++++++++++++++++++++++++
#R# - чтение флаш памяти - без комментариев
++++++++++++++++++++++++++++++++++
#WXY# - запись байта Y адрес X во флаш память - пусть будет ответ ''!'. Так как с
              изменением температуры изменяется и время записи
++++++++++++++++++++++++++++++++++
#E# - сбросить счетчик шагов в 0. Подтверждение не нужно. Положение можно запросить.
++++++++++++++++++++++++++++++++++
#Inn# и #Omm#- перемещение фокусера - пусть по окончании всего перемещения
передается '*', чтобы отличать от "!".   
++++++++++++++++++++++++++++++++++


Таким образом имеем три команды с ответом.

#WXY# - ответ на окончание записи "!"
#Inn# и #Omm# - ответ на окончание перемещения "*"
« Последнее редактирование: 06 Ноя 2007 [12:50:02] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
  Да, с какой программой использовать ASCOM драйвер, или он в сам по себе тоже работает?


MaximDL например. Или DSLRFocus. Только должна быть установлена ASCOM-платформа 4.1
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 3 681
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
  Не понял только, подтверждение на каждый шаг оставлять?

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

  • *****
  • Сообщений: 3 681
  • Благодарностей: 48
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
  Maxim стоит демка с оконченным сроком, надо винт сносить - нереально, dslr никогда не пользовался. Постараюсь. Может кто-нибудь проверит?

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

  • *****
  • Сообщений: 1 445
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Цитата
Таким образом имеем три команды с ответом.

#WXY# - ответ на окончание записи "!"
#Inn# и #Omm# - ответ на окончание всего перемещения "*"

Кстати, с такими ответами текущая версия ASCOM-драйвера будет работать ...
« Последнее редактирование: 06 Ноя 2007 [12:50:51] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.