ВНИМАНИЕ! На форуме начался конкурс - астрофотография месяца ОКТЯБРЬ!
0 Пользователей и 2 Гостей просматривают эту тему.
А зачем таймер прикручивать?Если для ожидания выполнения команды, то проще модифицировать #Inn# ответом завершения перемещения. Сейчас я сделал символ <CR>.
Я тут вчерне набросал ASCOM-драйвер и, на мой взгляд, необходимо модифицировать набор команд в следующем ключе:1. ВВЕСТИ команду включения/выключения термокомпенсации. Без нее рулить проблематично ибо управление режимом пока ТОЛЬКО с клавиатуры фокусера. Например #Cn#, для n=1 - вкючаем термокомпенсацию, 0-отключаем. Либо модифицировать #T# в #Tn# , где 0 - выйти из режима ТК, 1 - войти в режим ТК, 2 - -выдать температуру.
Я тут вчерне набросал ASCOM-драйвер и, на мой взгляд, необходимо модифицировать набор команд в следующем ключе: 2.Как я уже говорил, заменить #I# и #O# на #Inn# #Omm#, где nn, mm - число шагов. Я тут начал приворачивать таймер к библиотеке - гемор еще тот.
3. Для последующего использования цифрошкалы потребуется, видимо: а) ввести команду сброса счетчика положения, либо модифицировать #S# до #Sn#, где n - 0 выдать текущее положение, 1 - сбросить счетчики шагов и отсчетов ЦШ (цифровой шкалы); б) выдавать в ответ на #Sn# не 2-байта счетчика шагов, а 4 - еще 2 на отсчет ЦШ.Пока других вариантов не вижу ...
И еще вопросы по формату флеш-памяти ...1. Значения скоростей - это количество шагов в секуну ?2. Коэффициент термостабилизации - это (дельта Т) * 100 на шаг (то есть для вызова одного шага Т должна измениться например от 3660 до 2400 => во флеш - 1260) ?
Цитата: Дядя Вова от 30 Окт 2007 [21:48:57]А зачем таймер прикручивать?Если для ожидания выполнения команды, то проще модифицировать #Inn# ответом завершения перемещения. Сейчас я сделал символ <CR>.Таймер приходится прикручивать, так как пока маемо що маемо, - запускается только непрерывное перемещение фокусера в одну из сторон с последующим стопом. Имеются также команды шагов IN-OUT, но они малопригоды,так как иначе фокусер будет дрыгаться, как параличный (тут еще и люфт выбирается).Так что пришлось:- вычислять разницу текущего и целевого положений и определять направление;- вычислять, исходя из скорости шагания, примерное время окончания перехода; минус некоторое время, чтобы не перелететь;- запускать вращение и передавать расчетное время таймеру;- отдельным потоком прикрутить таймер, так как маемо библиотеку, где циклические процессы, мягко говоря, не приветствуются;- по окончании периода таймер вызывает запрос положения фокусера;- на основании разниц целевого и приближенного положения дошагиваем командами шага.Проблема в том, что тактирование шаговика производится не в прерывании а методом задержек, что приводит ксильному геморрою. Ибо 100 шагов сегодня не равняются 100 завтра ...Так что Inn и Omm, особенно если с признаком останова, сильно обрадуют !
Эта команда уже есть.#M# запрос режима в котором находиться фокусер – в ручном или автономном.#WXY# - запись байта Y адрес X во флаш памятьТ.Е. можно проверить в каком режиме фокусер стоит. Термокомпенсация работает только в режиме автомат. Далее для переключения режимов можно записать в 8 адрес флаш (начиная с нулевого) 1 или FE. Так можно переключать режимы. Кстати, в режиме автомат все команды перемещения фокусера от компа и кнопки перемещения на контроллере блокируются. Если есть нужда порулить термокомпенсацией от компа, то это надо делать в ручном режиме. Однако, на мой взгляд такая функция драйвера нужна только если фокусер имеет нормальный энкодер.
А зачем для этого таймер, если конечно имеется ввиду внутренний таймер однокристалки?
Вот здесь поподробнее, поскольку не понял.
Термостабилизация вводится в шагах на градус цельсия ...
Все это не нужно, поскольку команды перемещения на нужное кол-во шагов нужно вводить. Временные задержки в контроллере не плавают и выставляются с очень высокой повторяемостью, поскольку не надо путать контроллер с персоналкой. Если нет прерываний от RS232, то точность составляет примерно 250 нс. Если есть прерывания, то 1 mc, в любом случае речь идет о долях процента в самом худшем случае.
Понял, постараюсь сделать, но сроки пока не называю.
Кроме того, #I# и #O# имеют такую неприятную особенность, что ведут себя довольно непредсказуемо. То они работают как надо,то вдруг команда срабатывает наоборот. Надо внуть а поворот идет наружу ... Видно придется ковыряться в прошивке, чего совсем не хочется делать ибо знаком я с PICами. Хотя будет повод ATMELы изучить ...
Цитата: Mefody от 01 Ноя 2007 [17:24:42]Кроме того, #I# и #O# имеют такую неприятную особенность, что ведут себя довольно непредсказуемо. То они работают как надо,то вдруг команда срабатывает наоборот. Надо внуть а поворот идет наружу ... Видно придется ковыряться в прошивке, чего совсем не хочется делать ибо знаком я с PICами. Хотя будет повод ATMELы изучить ... Внвчале этих команд отрабатывается люфт. Надо бы его обнулить для ясности.
Цитата: Дядя Вова от 01 Ноя 2007 [18:35:12]Цитата: Mefody от 01 Ноя 2007 [17:24:42]Кроме того, #I# и #O# имеют такую неприятную особенность, что ведут себя довольно непредсказуемо. То они работают как надо,то вдруг команда срабатывает наоборот. Надо внуть а поворот идет наружу ... Видно придется ковыряться в прошивке, чего совсем не хочется делать ибо знаком я с PICами. Хотя будет повод ATMELы изучить ... Внвчале этих команд отрабатывается люфт. Надо бы его обнулить для ясности.Дядя Вова, это не связано на мой ИМХО с люфтом ибо вращение идет в одну сторону ...Например даем команду #I# Д-цать раз. Далее вот такая хукня ...- 5-8 раз идет отработка нормально (причем не по одному шагу, как сказано в описании команды а по 70);- затем, почему-то, очередная команда приводит неожиданно к вращению в обратную сторону;- потом опять все работает на ЯТЬ до очередного сбоя.Причем индикация и внутренний счетчик показывают все так, как и должно быть ...
Думаю, что команды IN и OUT на один шаг так выполняются потому, что Вы не дожидаетесь конца операции, Т.Е. надо дать двигателю дошагать. Скорость известна - во флаш записана.
Да ошибка есть. Согласно тексту отрабатывается команда не на один шаг, а на кол-во шагов, передаваемое в следующем за байтом команде. Т.Е. 0-255 шагов. Т.Е. я не правильно дал описание команды.
Так замечено:1) из МаксимДЛ мотор не крутится. Вибрацию чуствую - вращения нет. Кнопочкой крутится нормально. Может какие настройки надо изменить?2) появились неописанные ранее команды #G... #M - хотелось бы описания3) зачем идет непрерывный опрос фокусера (думаю команда #S# 1/сек)--------4) DSLR Focus с этим драйвером говорит, что фокусера нет