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


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

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

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

  • *****
  • Сообщений: 3 682
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
  Написал, hexы и текст в прицепе, там же маке файл. Программа называется AVR71, так сложилось исторически, а править каждый раз имя лень. Исправленный перечень команд. Определение термометра ввел
Дополнительные команды

#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 шагов в направлении от объектива.
По окончанию операции выдается код символа *. Команда блокируется в режиме автомат.
Контроллер в этом случае ничего в компьютер не передает.
_________________________________________________ _______________________

#C# - новая команда, служит для проверки наличия термодатчика.
_________________________________________________ _______________________
Приналичии термодатчика в компьютер передается код символа !, при его отсутсвии
код символа Х (88) - латинского.
_________________________________________________ _______________________

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


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

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Отлично ! А #E# не доработал до #Enn# ?
Можем сбросить не в ноль а в определенное положение. Больше простора для
настроек и функций ...

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

Правда есть еще один вариантик - ввести датчик нулевого положения фокусера (на
оптроне или датчике Холла и т.д.)
« Последнее редактирование: 06 Ноя 2007 [16:10:22] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

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

После установки сетапа и навески всего оборудования включаем фокусер.
Он отходит на N-цать шагов наружу, а затем шагает вовнутрь до срабатывания
концевика. Здесь контроллер сбрасывается в ноль или другое-какое значение.
Это и будет началом отсчета для автоматики фокусера ...

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

Хотя при помощи дремеля можно сделать и довольно точный энкодер, но окупится
ли овчинка своей выделки ...

P.S. Коль скоро места в памяти колеса фильтров полно, можно эту функцию возложить
на него. Он ведь все равно сидит на фокусере ...
Пусть считает, передает в фокусер, а тот, в свою очередь,управляется или сквозняком
сливает данные в компьютер.
« Последнее редактирование: 06 Ноя 2007 [16:25:51] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 3 682
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Команду реализую, но в принципе ты предлагаешь сделать то же самое, что и я - тот же энкодер, но не на микропрограмном уровне, а на программном. Микропрограмная реализация режима лучше тем, что ее можно будет использовать и автономно, а не только с компьютером.  Про концевики я думал, на самом деле их не так просто сделать, как может показаться на первый взгляд, в оссобенности точные. Память освободить можно. Здесь есть два пути - 1-ый перенос констант, оссобено строковых в eeprom, там почти 500 байт свободных, второй способ - это использовать winavr последней версии. Освобождается почти 1 кбайт. На самом деле все работает, но видимо товарищ Соколов - автор компилятора так постарался, что увеличил быстродействие более чем вдвое, а поскольку вся работа построена на временных задержках, в том числе и работа с ЖКИ, то просто ничего не выводится на экран. Надо причесывать. К сожалению это не так просто, поскольку все задержки надо подбирать, а там еще и бардак. Что-то отдать на откуп контроллеру колеса фильтров не представляется возможным.
 

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

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Цитата
Про концевики я думал, на самом деле их не так просто сделать, как может показаться на первый взгляд, в оссобенности точные.
С достаточной точностью я реализовывал такие датчики на основе оптопары от датчика
нулевой дорожки привода флоппи. Пара отюстирована и закреплена на общем корпусе ...
Я как-то для фирмы делал автоматизированный сверлильный станок на шаговых приводах.
Так точность упиралась в геометрию ходовых винтов. Датчик давал точность порядка 2-3
мил. Это, если мне память не изменяет, около 0.05-0.07 мм ...

В остальном согласен полностью ...

P.S. для моего Крейфорда (ход 45 мм, вал 4 мм, редуктор 2.5 шаговик на 200 шагов) имеем.

      L шага = 45 / (3.14*4) / 2.5 / 200 = 0.007 мм (6430 шагов)

Т.е. имеем точность в +/- 8-10 шагов, что вполне неплохо, учитывая тот факт, что
обработка плоскости сопряжения фокусера с валом несколько, мягко говоря, неточна ...
« Последнее редактирование: 06 Ноя 2007 [17:16:28] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 3 682
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Дописал, теперь команда #E# выглядит как #EXY#. Счетчик шагов=X+Y*256.
Думаю, что концевики делать все же не надо. Можно и так открутить к объективу, по крайней мере мой выдерживает. Я же не вижу как он на балконе крутится, бывает и в упор закручивается. Мне думается не надо усложнять конструкцию, а тем более менять схему, хотя бы даже на один резистор.
  Большая просьба, кто может, проверить все режимы, мог и накосить. Особенно работу с LX200 ASCOM.


 
« Последнее редактирование: 06 Ноя 2007 [17:12:27] от Александр Л. »

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

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Зер гут ...
Завтра к обеду выдам вариант ASCOM под данную прошивку.
По-прежнему прошу проверить правильность отображения температуры в любой
программе использующей ASCOM фокусеры (Максимке, например) ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

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

Хто бы настаивал, а я таки и нет. К первой и второй версии ASCOM-драйвера приложена
инструкция по установке и использованию драйвера.

С учетом нововведений логика такова:

- установили фокусер в желаемое положение;
- дистанционно прописали желаемое значение счетчика шагов (или энкодера, если угодно)
  (0 для закрытого фокусера, или какое-либо смещение, как предлагал Семеныч);
- пляшем от данного положения;
- при отключении от фокусера сохраняем его последнее положение и, при следующем
  подключении рекомендуем его восстановить (или нет).

По-моему получается все гибко и прозрачно ...    Да и все пожелания учтены !!!

P.S. Александр, а значение из #EXY# беззнаковое (unsigned int) или как ?

P.P.S. Все, вижу - знаковое. То есть и отрицательные пихать можно ...
« Последнее редактирование: 06 Ноя 2007 [18:49:46] от Mefody »
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 8 097
  • Благодарностей: 97
    • Сообщения от Дядя Вова
Не, ну вас нельзя оставить на пять минут! Вы версии прошивок и драйверов выдаете быстрее, чем я читаю конфу.  :) Уже просто не врубаюсь!
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

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

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
Это мы посвещаем твоему Дню Рождения !!!  ;D

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

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 12 041
  • Благодарностей: 765
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Сообщения от Ivan7enych
    • Астропроекты и астрософт
Просьба тех, кто имеет подключенный датчик проверить работу драйвера и отображение
температуры ...

Спаял шнурок, поставил твою прошивку.
Нашел програмку показывающую данные, бегающие по ком порту.

С температурой странно, на экране 22.31, на запрос #T# выдается 2 байта 08 B7 (в десятичном = 2231), а в максиме показывает "19.8 C"

C твоей прошивкой после команды #I или #O не выдается ничего после окончания движения и максим подвисает.

Прошил последнюю прошивку Алескандра - после #I или #O теперь выдается * и аском драйвер ожил. :) С температурой та же фигня.


С отрицательными числами совсем не дело.
Уехал кнопками в -24, в максиме вижу позицию 65512. Затем нажал MoveIn(512), аском драйвер передал #I78E8# (30952 в десятичной) и поеееееееееееееееехали на минут 5 крутиться до упора.
Приехали в +6000 (на экране и в максиме).

Как вычитанием 30952 из 65512 получить +6000 я не понимаю.  ???
« Последнее редактирование: 07 Ноя 2007 [02:14:14] от Ivan7enych »
Видео отчеты мастерской
телескопы - 230мм/4 самодельный ньютон для поездок, Televue NP101is на удаленке, 500мм ньютон в постройке.
Просьбы о ремонте пишите мне в телеграм, не в личку.

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

  • *****
  • Сообщений: 8 097
  • Благодарностей: 97
    • Сообщения от Дядя Вова
C твоей прошивкой после команды #I или #O не выдается ничего после окончания движения и максим подвисает.
...
Прошил последнюю прошивку Алескандра - после #I или #O теперь выдается * и аском драйвер ожил.
Может  в первом случае контроллер находился в режиме Авто? Говорят, так и должно быть.
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

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

  • *****
  • Сообщений: 3 682
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Системы команд, под которую пока написан драйвер и новая слишком разные. Имеет смысл проверять только температуру и работу LX200 под его аском.

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

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

Исправим, однако ...

Ждите, к обеду надеюсь закончить, если не засну (после вахты) ... :D
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

  • *****
  • Сообщений: 3 682
  • Благодарностей: 49
  • Мне нравится этот форум!
    • Сообщения от Александр Л.
   Нашел косячок в микропрограмме - контроллер вис после выполнения команды - определения наличия термодатчика - исправил - микропрограммы в прицепе.

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

  • *****
  • Сообщений: 1 444
  • Благодарностей: 3
  • Служу ЗВЕЗДАМ !!!
    • Сообщения от Mefody
   Нашел косячок в микропрограмме - контроллер вис после выполнения команды - определения наличия термодатчика - исправил - микропрограммы в прицепе.


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

- правильные отрицательные числа;
- вроде разрулил грабли с температурой (потребуется проверка);
- ввел возможность записи в фокусер стартового значения;
- ввел возможность добавления смещения (по просьбе Ивана Семеныча);

Делаю :
- сохранение последнего положения фокусера;
- разруливаю запрос термодатчика и связаную с этим канитель.

Уже скоро ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.

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

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

Онлайн Ivan7enych

  • Модератор
  • *****
  • Сообщений: 12 041
  • Благодарностей: 765
  • Ионов Иван
  • Награды Победитель ежегодного конкурса астрофото
    • Сообщения от Ivan7enych
    • Астропроекты и астрософт
Делаю :
- сохранение последнего положения фокусера;
- разруливаю запрос термодатчика и связаную с этим канитель.

Уже скоро ...

У меня все железки при себе. Как сделаешь, я могу быстро проверить.
Видео отчеты мастерской
телескопы - 230мм/4 самодельный ньютон для поездок, Televue NP101is на удаленке, 500мм ньютон в постройке.
Просьбы о ремонте пишите мне в телеграм, не в личку.

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

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

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

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

Как всегда, в архиве прошивка, с которой велась работа, описание команд, собственно сама
библиотека драйвера и инсталлятор.

Замечание, необходимо запустить uninstall.bat для очистки реестра от старых ключей, а затем
install.bat - ибо пришлось слегка поковыряться ...

Проверьте температуру и переходы в авто и обратно. Блин, без датчика, как без рук ...
MAK200, Equinox80, QHY6, EOS 350D -> EQ6 PRO SynScan etc.