A A A A Автор Тема: Универсальная система управления телескопом на Arduino  (Прочитано 194814 раз)

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

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
На форуме уже имеется несколько тем, посвященных системам управления монтировками, собранных на базе компонентов ардуино, в частности:

Простая система управления монтировкой на Arduino
Управление монтировкой на ШД Arduino + grbl
GOTO на Arduino практическая реализация "Импортозамещение"

   В результате изучения этих, и многих других источников, у меня сложилось четкое представление, как простейшим образом, на базе компонентов Ардуино можно решить некоторые вопросы, связанные с управлением телескопом.
   В настоящий момент собран действующий образец управляющего блока на базе Ардуино нано и драйверов А4988 для монтировки на шаговых двигателях с выходом для подключения электрофокусера, с индикацией координат наведения и прочей информации на двухстрочном LCD, с возможностью выполнения команд GOTO задаваемых с ПК, с возможностью подключения проводного устройства управления. Реализовано прямое подключение к плагину «управление телескопом» программы Stellarium. Разработано программное обеспечение для управления экваториальной и альт-азимутальной монтировками, масса тестовых программ. Собранная система управляет монтировкой из комплекта Деагостини «Собери свой телескоп» (аналог Astro-3, на фото), но система подойдет для управления любой монтировкой на шаговых двигателях. Пришло время собрать окончательный вариант изделия уже с беспроводным управлением. В процессе переборки системы, попытаюсь систематизировать и показать в этой теме, от простого к сложному, как простейшим образом, на Ардуино можно реализовать тот или иной функционал. Думаю, материал будет полезным.

Для удобства ориентирования в теме привожу здесь ссылки на основные моменты и программы:

Астротрекер или привод оси прямого восхождения, описание электронной части:
Универсальная система управления телескопом на Arduino
Астротрекер или привод оси прямого восхождения, скетч GOTO1 + драйвер ch341ser.zip:
Универсальная система управления телескопом на Arduino
Привод оси склонений и элемент управления (джойстик), ускорение перемещений, описание:
Универсальная система управления телескопом на Arduino
Привод оси склонений и элемент управления (джойстик), ускорение перемещений, скетч GOTO2:
Универсальная система управления телескопом на Arduino
Система управления экваториальной монтировкой с функциями GOTO, описание и скетч GOTO3:
Универсальная система управления телескопом на Arduino
Прикручиваем управление фокусером к джойстику
Универсальная система управления телескопом на Arduino
Подключаем LCD, описание электронной части:
Универсальная система управления телескопом на Arduino
Подключаем LCD, скетч GOTO4 + драйвер LCD 1602:
Универсальная система управления телескопом на Arduino
Скетч GOTO4 с автоопределением и автоюстировкой джойстика:
Универсальная система управления телескопом на Arduino
Пульт ИК часть 1 (Slave), описание электронной части:
Универсальная система управления телескопом на Arduino
Пульт ИК часть 1 (Slave), скетч GOTO5SLAVE, программа настройки и драйвер пульта ИК:
Универсальная система управления телескопом на Arduino
Пульт ИК часть 2 (Master), описание электронной части и скетч GOTO5MASTER:
Универсальная система управления телескопом на Arduino
Шаговый электрофокусер, описание электронной части:
Универсальная система управления телескопом на Arduino
Шаговый электрофокусер, скетч GOTO6MASTER.zip:
Универсальная система управления телескопом на Arduino
Версии GOTO6MASTER и GOTO6SLAVE для штатного ИК пульта ардуино:
Универсальная система управления телескопом на Arduino
Энергонезависимые часы реального времени:
Универсальная система управления телескопом на Arduino
Скетч для управления альт-азимутальной монтировкой GOTO7MASTER:
Универсальная система управления телескопом на Arduino


Ссылка на яндекс-диск со всеми материалами и стабильными версиями: https://yadi.sk/d/f1jTO1AohCtbz
« Последнее редактирование: 15 Авг 2019 [15:40:58] от Deimos »

Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн II

  • *****
  • Сообщений: 1 966
  • Благодарностей: 80
    • Сообщения от II
Хочу смастерить трекер ( с ардуино и прочим разобрался), но понять не могу где взять шестерни? На али полно всяких, но подходит ли она- не хватает у меня мозгов посчитать. Подскажите пожалуйста  :)

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Не зная конструкции трекера ничего не посоветуешь. Нужен хотя-бы эскиз. А вообще, наверняка на форуме имеется достойная конструкция которую можно повторить. Если понадобится что-то пересчитать - поможем.

Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн II

  • *****
  • Сообщений: 1 966
  • Благодарностей: 80
    • Сообщения от II
Если понадобится что-то пересчитать - поможем.

Спасибо! Как изготовлю площадки- сразу напишу =)

Оффлайн Oleg1601

  • *****
  • Сообщений: 997
  • Благодарностей: 34
    • Сообщения от Oleg1601
Посмотрел на работе какие концевые датчики в принтерах ставят (первое фото). Под цифрой 1 - простой выключатель, 2 и 3 ИК датчики. 3 - оптимальнейшим образом вписывается под рейку фокусера самодельной трубы (второе фото), ширина рейки 4 мм, зазор датчика 5 мм и площадка, куда примонтироваться есть. Сама рейка как раз в корпус фокусера уходит в крайнем ближнем положении. Конструкция кажется типовая для реечного фокусера. Можно будет попробовать, только проводов многовато получается: 3 на датчик + 4 шаговый движок.
Игорь, не пробовал скетч написать?
Чтобы после подачи питания выполнялась инициализация фокусёра, т.е. чтобы он перемещался в крайнее положение (задвигался до упора) до срабатывания концевого выключателя. После чего мотор фокусёра останавливался и запускалось бы его управление от джойстика, с остановкой мотора  в крайних, выдвинутом и задвинутом, положении трубки фокусёра, чтобы исключить возможность порчи шестерёнок редуктора.
Телескоп: Рефрактор ахромат 102/1000 (SAM), рефлектор ньютона DS DTF 130/1000 (MOD), монтировка DS-EQ3/AT-5 (MOD)

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Игорь, не пробовал скетч написать? Чтобы после подачи питания выполнялась инициализация фокусёра, т.е. чтобы он перемещался в крайнее положение (задвигался до упора) до срабатывания концевого выключателя. После чего мотор фокусёра останавливался и запускалось бы его управление от джойстика, с остановкой мотора  в крайних, выдвинутом и задвинутом, положении трубки фокусёра, чтобы исключить возможность порчи шестерёнок редуктора.

Написал такой скетч GOTO4_6 на базе доработанного тобой GOTO4_5. Отдельно выделил файл Config.h с твоей распиновкой. Сенсор конечного датчика (выключателя) подключается к пину А6 (можно любой другой свободный задать в конфиге). В представленом скетче, в исходном положении фокусера (ближнее крайнее к объективу) система ожидает на этом пине analogRead(FO_SENCE_PIN)<25 т.е. фактически замыкания на массу, ставь замыкающий геркон с магнитом на фокусере - и вперед! Конфиг также допускает срабатывания концевика по высокому (HIGH) сигналу на FO_SENCE_PIN, если это потребуется. Выход за пределы фокусировки контролирует предопределенная константа FO_END_STEP 1000 - максимально допустимое количество полных (!) шагов двигателя фокусера, конечно, эта величина своя для каждого фокусера, ее считаем или подбираем. Скетч не проверял на практике, не готов еще привод к фокусеру у меня, так что, по аккуратней с ним. Возможно, для надежного срабатывания конечного датчика потребуются подтягивающие резисторы, возможно и другие элементы.
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
Посмотрел скетч и ужаснулся :)
Там же для оптимизаций быстродействия просто поле непаханное. Могу помочь :)
И не совсем понял, почему реализации функций общего назначения оказались в заголовочном файле ::)
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Посмотрел скетч и ужаснулся :)
Там же для оптимизаций быстродействия просто поле непаханное. Могу помочь :)
Этот скетч нет смысла оптимизировать, все работает, цель достигнута. А вот по оптимизации азимутального скетча реальное поле деятельности, от помощи не откажусь. Выложу как допишу описание работы.
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн xd

  • *****
  • Сообщений: 17 982
  • Благодарностей: 378
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Сообщения от xd
    • Белорусская любительская астрономическая сеть
У природы нет плохой погоды, у неё просто на нас аллергия.

Учение без размышления бесполезно, но и размышление без учения опасно /Конфуций/
Слово есть поступок. /Л. Толстой/

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Скетч для управления альт-азимутальной монтировкой

Электронная часть та же самая, что в описании часов реального времени https://astronomy.ru/forum/index.php/topic,143891.msg3743281.html#msg3743281 Перед запуском в работу скетча GOTO7MASTER (основной исполняемый модуль) имеет смысл загрузить скетч часов реального времени и выполнить предварительную установку времени и даты на модуле RTC3231. Если отсутствует SLAVE модуль ардуино и пульт ИК, то следует любым другим способом установить правильную дату и время на модуле RTC3231 и таким образом, можно будет управлять альт-азимутальной монтировкой, используя Стеллариум, джойстик и только один модуль Ардуино нано (Master) на Keyes_CNC шилде. Таким образом, для запуска управления альт-азимутальной монтировкой необходимы: Ардуино нано (Master) на Keyes_CNC шилде, два драйвера осей X (азимут) Y (высота) типа А4988, джойстик, подключенный как на фото здесь: https://astronomy.ru/forum/index.php/topic,143891.msg3717468.html#msg3717468 модуль часов реального времени RTC3231 (желательно с предварительно правильно выставленной датой и временем), подключенный по шине I2C. Это совершенно необходимо. Далее условно необязательные компоненты. Модуль LCD 1602 подключенный по шине I2C через соответствующий преобразователь (наверное и без LCD вслепую можно попробовать, но это на любителя), дополнительный драйвер А4988 (Z) для управления фокусером, дополнительный модуль Ардуино нано на нано шилде + ИК модуль с пультом подключенный как здесь: https://astronomy.ru/forum/index.php/topic,143891.msg3729842.html#msg3729842 Лучше подключить все вышеперечисленное (на фото). Далее в Slave модуль Ардуино на нано шилде заливаем скетч GOTO6SLAVE (не изменялся с даты предыдущего опубликования). В Ардуино нано (Master) на Keyes_CNC шилде заливаем скетч GOTO7MASTER. Не забываем проставить свои передаточные коэффициенты в файле GOTO7Config.h Сам файл GOTO7Config.h отличается от GOTO6Config.h пятью последними строчками:

int iStDX  = -1;      //Исходное направление шага двигателя Х
int iStDZ  =  1;      //Исходное направление шага двигателя Z
int iStDY0 = -1;     //Исходное направление шага двигателя Y

double iAzAli1= 0.0, iHAli1=0.0;          //Первая пользовательская точка выравнивания монтировки
double iAzAli2=74.98333, iHAli2=3.0; //Вторая пользовательская точка выравнивания монтировки
double iAzAli3=90.0, iHAli3=0.0;         //Третья пользовательская точка выравнивания монтировки

Переменная iStDY переименована в iStDY0, кроме этого, появилось шесть дополнительных переменных iAzAli1- iAzAli3, iHAli1- iHAli3. Каждая из трех пар (Азимут/Высота) iAzAli1/iHAli1 – iAzAli3/iHAli3 задает точку для предварительного выравнивания (настройки исходного положения) монтировки. В моем случае iAzAli1/iHAli1 – точка севера на математическом горизонте, iAzAli3/iHAli3 – восток, iAzAli2/iHAli2 (Азимут 74 град 49 минут, высота 3 град) – очень приметная точка в моем месте испытаний устройства. Здесь задаем координаты своих удобных ориентиров. Точки Север, Восток, Юг, Запад можно не задавать, про них и так программа знает, это у меня не хватило фантазии другие ориентиры указать.

« Последнее редактирование: 19 Сен 2016 [22:00:42] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Работа программы, или каким представляется сеанс работы с ней.

Непосредственно после запуска программы, на экране видим сообщение: “Azduino GOTO7 Fixed to Azimuth”. На пульте ИК нажимаем «8» проверяем правильность установки даты/времени. Если требуется корректировка нажимаем еще раз «8» пользуясь цифровыми и кнопками со стрелками задаем правильную дату и местное время. Подтверждение – кнопка «Ок», выход из режима часов «#». Если не используется пульт ИК с дополнительным модулем ардуино, надо каким-то образом позаботиться, чтобы дата/время были правильно установлены (это возможно каким-нибудь дополнительным скетчем).
Вне зависимости от правильности установки часов, монтировка должна управляться джойстиком и пультом ИК (автономный режим). С джойстиком наверное все понятно, с пульта используются кнопки со стрелками, но в исходном состоянии они настроены на медленные, корректирующие, без изменения текущих расчетных азимутальных координат наведения движения. Такой режим работы пульта устанавливается нажатием кнопки «5». Форсированный режим управления монтировкой, с пересчетом текущего азимута/высоты, включается кнопкой «2». Если при нажатии стрелки «вверх», телескоп поехал вниз, нажатием кнопки «*» или «#» следует задать правильное направление.
Теперь выравнивание включение трекинга в автономном режиме. Азимутальная ось изначально должна быть выставлена вертикально как можно точнее, автокорректировки не предусмотрены. Ориентируем телескоп точно на одну из сторон света (в горизонтальном положении Н=0) или на один из предварительно заданных в конфиге ориентиров. Нажимаем на пульте «0», на LCD появляется подсказка: «Alighment: Use 1-3 or <^v>», это означает, что следует указать цифровой кнопкой на какой из заданных в Config.h ориентиров направлен телескоп или стрелкой указать, в какую сторону горизонта он направлен: стрелка вверх (^) – север, вправо (>) восток, вниз (v) юг, влево (<) запад. Если все правильно сделано, то на LCD отобразятся текущие азимутальные координаты наведения телескопа. После этого джойстиком или пультом выводим телескоп на требуемые координаты, не забывая при этом, что следует использовать форсированный режим управления монтировкой (после нажатия кнопки «2» пульта) или максимальные наклоны джойстика, чтобы система учитывала изменение координат наведения. Сброс выравнивания – та же кнопка «0». Когда монтировка выставлена по координатам (на LCD показаны координаты) нажатием кнопки джойстика или «Ок» пульта можно включить трекинг. Оба двигателя начнут периодически шагать. Правильность ведения будет зависеть от многих факторов: от правильности выравнивания монтировки, правильности даты/времени, правильности указания в Config.h долготы и широты местности. В любом случае, корректирующими движениями джойстика (небольшие отклонения от оси) или стрелками пульта (после нажатия кнопки «5») будет возможность корректировать движение монтировки.
Работа со Стеллариумом. Конечно, прежде всего следует установить сам Stellrium. Включить плагин «управление телескопом», закрыть Stellarium и вновь запустить его. Затем в самом плагине создать новый телескоп, указать прямое подключение к COM порту, указать номер порта, на котором Ардуино сидит и указать протокол связи NextStar Capatible. Включить телескоп. Про дальнейшее управление телескопом достаточно подробно описано в файле помощи Стеллариума. Добавлю только два момента еще: первая команда позиционирования, пришедшая из стеллариума не управляет монтировкой, а только засылает координаты наведения в Ардуино. Это позволяет легко синхронизировать Stellarium и монтировку. На горизонтально выровненной альт-азимутальной монтировке следует навести управляемый телескоп на любой реально видимый на небе объект и в Стеллариуме задать (первую) команду позиционирования на тот же объект. Система синхронизирована. Второй момент: при запуске Стеллариума, желательно, чтобы среда загрузки Ардуино была закрыта. И еще, каждое включение телескопа в Стеллариуме сбрасывает (ресетит) программу Ардуино, т.е. сбрасывает и синхронизацию телескопа со Стеллариумом. Сброс синхронизации можно также сделать при помощи нажатия кнопки «0» на пульте ИК. По умолчанию трекинг отключен. Нажатием кнопки джойстика или «Ок» пульта можно включить ведение со звездной скоростью (трекинг). Трекинг будет точным только в случае правильно указанных в файле CONFIG.h долготы и широты места наблюдения и правильно установленным дате и времени на часах реального времени. Можно использовать корректирующий режим управления с пульта ИК (стрелками, после нажатия кнопки «5») или небольшие отклонения джойстика, при этом не происходит пересчет азимутальных координат наведения. На LCD при этом режиме отображается Correction и один или одновременно два различных символа из этого набора: < ^ v >. Можно использовать форсированный режим управления с пульта ИК (стрелками, после нажатия кнопки «2») или большие отклонения джойстика, при этом происходит пересчет азимутальных координат наведения. На LCD при этом режиме отображается Correction и один или одновременно два различных символа из этого набора: << ^^ vv >>.
Ручной режим управления с ПК. Включаем монитор порта среды ардуино или любую другую программу, которая может засылать данные в виртуальный СОМ порт ардуино (Master). Засылаем в порт азимут и высоту куда направлена монтировка в формате bAAA.ZZ,HHH.DD где «b» - обязательный элемент команды AAA.ZZ – целая и дробная часть азимута (в диапазоне 0.000  - 359,99999 градусов) HHH.DD – высота (в диапазоне -90.00 +90.00 градусов). Первая команда просто запоминает отправленные координаты и в дальнейшем считает их исходными. Все последующие команды в указанном формате переведут монтировку на заданные координаты. В случае правильного восприятия команды Ардуино засылает в порт ответ «#» и координаты позиционирования в шестнадцатеричном формате.
« Последнее редактирование: 19 Сен 2016 [21:53:39] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Замечания. Может, не совсем понятно изложены все моменты, но это уже моя вторая рабочая версия программы. Дальнейшее ее развитие сильно затруднено в настоящее время по причине исчерпания ресурсов, скетч использует 30686 байт (99,89%) памяти устройства, всего доступно 30720 байт ардуино нано (master). Фактически ничего не прибавить без существенной переработки, оптимизации или более оптимальной разбивки на 2 части master/slave. Если внимательно посмотреть код, то обнаружится очень странная математическая модель и система координат, но все формулы пересчета взяты из сферической тригонометрии и проверены мной во всем диапазоне 0-360 град. Точность ведения (математики) можно отследить по Стеллариуму. Несколько не совпадают значения азимута и высоты на LCD и в стеллариуме. Но решение этих вопросов видимо будет уже в следующей заново переработанной версии азимутального скетча, понятно, не скоро.
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Несколько вопросов просят меня по–подробнее описать. Как Стеллариум отправляет/принимает через виртуальный СОМ-порт данные и по функции action() символы e,z,b,r (в case) за какие режимы отвечают? Сюда пропишу, т.к. не все очевидно там.

Из всего множества команд NextStar Communication Protocol (прилагается), стеллариум оперирует только двумя необходимыми и достаточными для целей позиционирования монтировки сомандами: «e» - запрос точных (precise) экваториальных координат наведения и «r» - команда перехода на указанные точные экваториальные координаты. Обе команды оперируют парой положительных восьмизначных шестнадцатеричных чисел, разделенных запятой. Первое число в такой паре – прямое восхождение, определяемое как (0xFFFFFFFF/24)*(прямое восхождение в часах), второе число – склонение, рассчитываемое как (0xFFFFFFFF/360)*(Склонение в градусах). Прием/передача данных завершается символом «#».
Таким образом, отправив в порт запрос «e», стеллариум ожидает ответ в виде 18 байт данных например: «34AB0500,12CE0500#». Количество полученных байтов подсчитывается, неправильные наборы данных, содержащие больше или меньше 18 байт, считаются ошибкой и отбрасываются. Команда позиционирования отправляемая стеллариумом в порт имеет вид «r34AB0500,12CE0500», в ответ ожидает «#».
При подключении ардуино к стеллариуму выяснилось еще, что запрос «e» от стеллариума до ардуино не доходит, приходится по таймеру, каждую секунду текущие координаты в порт засылать.
Первая из задач, которую должен решать подключаемый напрямую к стеллариуму модуль, это общение по порту, распознавание команд и формирование ответов. В моих скетчах за это отвечает функция void action(String STRA), которая анализирует поступающие из порта данные (String STRA) и формирует и отправляет в порт адекватный ответ. Команды «e» «r» описал выше, команды «z» и «b» запрограммированы для общения по порту с компьютера в «ручном режиме», их поведение не соответствует требованиям NextStar Communication Protocol. Команды «z» и «b» оперируют обычными десятичными числами. «z» - запрос текущих азимутальных координат наведения, «b» - команда позиционирования на указанные азимутальные координаты (азимут, отсчитываемый от севера и высота), причем в указании высоты допускается указывать отрицательные числа. Например: «b350.25,-15.150» переведет монтировку на азимут 350,25 град и 15,15 град ниже горизонта.
« Последнее редактирование: 20 Сен 2016 [22:39:48] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн Vladimir3621

  • *****
  • Сообщений: 25 871
  • Благодарностей: 1086
    • Сообщения от Vladimir3621
...
Таким образом, отправив в порт запрос «e», стеллариум ожидает ответ в виде 10 байт данных например: «34AB0500,12CE0500#». Количество полученных байтов подсчитывается, неправильные наборы данных, содержащие больше или меньше 18 байт, считаются ошибкой и отбрасываются. Команда позиционирования отправляемая стеллариумом в порт имеет вид «r34AB0500,12CE0500», в ответ ожидает «#».
...
Ничего не понимаю. Так 10 или 18?
Это вы одиноки во вселенной. А нас - рать.

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
18 конечно же, 8 + 8 данные, плюс еще запятая и # имеется ввиду. Спасибо, что обратили внимание! Подправил.
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 8 098
  • Благодарностей: 97
    • Сообщения от Дядя Вова
Цитата
При подключении ардуино к стеллариуму выяснилось еще, что запрос «e» от стеллариума до ардуино не доходит,
Это как это?
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Тоже пока не понимаю что там, разработчикам вопрос задавал, ответ здесь:
https://astronomy.ru/forum/index.php/topic,21983.msg3527343.html#msg3527343
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 8 098
  • Благодарностей: 97
    • Сообщения от Дядя Вова
Тоже пока не понимаю что там, разработчикам вопрос задавал, ответ здесь:
https://astronomy.ru/forum/index.php/topic,21983.msg3527343.html#msg3527343
А с ASCOM драйвером (в других планетариях) как дело обстоит?
(Vixen ED80+Canon300Da, 9x50+QHY5)+EQ6upg
Meade ETX-90PE

Оффлайн FlexLM

  • ****
  • Сообщений: 308
  • Благодарностей: 46
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
При проверке скетча GOTO7MASTER.ino компилятор "ругается" на не объявленные функции. Пришлось в разделе переменных объявить прототипы следующих функций:
   unsigned long DeFromZeAz(unsigned long, unsigned long);
   unsigned long TFromDeZeAz(unsigned long, unsigned long, unsigned long);
   void ToAZaH (boolean);
   unsigned long ZeFromDeT(unsigned long, unsigned long);
   unsigned long AzFromDeZeT(unsigned long, unsigned long, unsigned long);

Игорь Юрьевич, вы проделали титанический труд. Спасибо за скетч, продолжаю разбираться в коде программы (алгоритме работы).
SW Dob8 + xMount

Оффлайн Oleg1601

  • *****
  • Сообщений: 997
  • Благодарностей: 34
    • Сообщения от Oleg1601
Написал такой скетч GOTO4_6 на базе доработанного тобой GOTO4_5. Отдельно выделил файл Config.h с твоей распиновкой. Сенсор конечного датчика (выключателя) подключается к пину А6 (можно любой другой свободный задать в конфиге). В представленом скетче, в исходном положении фокусера (ближнее крайнее к объективу) система ожидает на этом пине analogRead(FO_SENCE_PIN)<25 т.е. фактически замыкания на массу, ставь замыкающий геркон с магнитом на фокусере - и вперед! Конфиг также допускает срабатывания концевика по высокому (HIGH) сигналу на FO_SENCE_PIN, если это потребуется. Выход за пределы фокусировки контролирует предопределенная константа FO_END_STEP 1000 - максимально допустимое количество полных (!) шагов двигателя фокусера, конечно, эта величина своя для каждого фокусера, ее считаем или подбираем. Скетч не проверял на практике, не готов еще привод к фокусеру у меня, так что, по аккуратней с ним. Возможно, для надежного срабатывания конечного датчика потребуются подтягивающие резисторы, возможно и другие элементы.
Приветствую, Игорь!
Проверил этот скетч на практике. Результаты таковы:
Перед запуском системы кнопка включения мотора фокусёра должна быть обязательно нажата!
При запуске получаем вращение мотора фокусёра по часовой стрелке (на индикаторе ничего), которое останавливается при задвижении внутрь корпуса трубки фокусёра и замыкании контактов датчика (после этого на индикаторе загорается инфа). При этом, как заметил, не всегда происходит корректная реакция на это замыкание, т.е. мотор останавливается всегда, а вот всё остальное, т.е. вывод информации на экран  индикатора, с последующей реакцией на команды джойстика и кнопок никакой. Помогает только перезагрузка.
Да, заметил, что работает только кратковременное замыкание контактов, если же контакты замыкаются на продолжительное время – всё зависает. Использовал кнопку в качестве датчика/концевика -  в крайнем (задвинутом) положении трубки фокусёра, и получал то, что система висла.

Можно ли, кроме устранения вышеперечисленных неприятных моментов, менять направление вращения мотора фокусёра именно при старте системы?

« Последнее редактирование: 28 Сен 2016 [17:44:17] от Oleg1601 »
Телескоп: Рефрактор ахромат 102/1000 (SAM), рефлектор ньютона DS DTF 130/1000 (MOD), монтировка DS-EQ3/AT-5 (MOD)

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

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
Олег! Так много написал, но вопросов больше, чем ответов осталось.
Во-первых, при включении выполняется инициализация фокусера, пока он не выйдет на ближайшую к объективу позицию и не сработает датчик этого конечного положения, никаких дальнейших действий не последует, ардуина будет думать, что фокусер не проинициализирован и не выйдет из init(), значит зависание получается. При этом никакие дополнительные кнопки он не проверяет, т.е. положение кнопки включения фокусера в этот момент не важно. Хотя проверю завтра специально еще. Здесь все почти правильно получается у тебя, мотор останавливается, значит датчик срабатывает. Про продолжительность замыкания контактов проверю, должно быть безразлично. Во-вторых не совсем понял, какой датчик используется и как он установлен. Должен быть установлен на срабатывание в ближайшем к объективу положении (крайнее задвинутое положение, как-то неоднозначно). Не понятно, при срабатывании он замыкается или размыкается при этом что именно он замыкает/размыкает у тебя землю или +5В на FO_SENCE_PIN, что он с ним делает? LOW или HIGH подает? И то и другое предусмотрено в скетче. В третьих, направление вращения двигателя фокусера задается переменной int iStDZ =  1;  поменяй на -1, если надо, но насколько я понял, он правильно выходит у тебя на исходную позицию, зачем тогда менять направление вращения?
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut