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

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

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
На форуме уже имеется несколько тем, посвященных системам управления монтировками, собранных на базе компонентов ардуино, в частности:

https://astronomy.ru/forum/index.php/topic,140872.msg3607083.html#msg3607083
https://astronomy.ru/forum/index.php/topic,143481.0.html
https://astronomy.ru/forum/index.php/topic,137688.0.html

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

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

Астротрекер или привод оси прямого восхождения, описание электронной части:
https://astronomy.ru/forum/index.php/topic,143891.msg3715790.html#msg3715790
Астротрекер или привод оси прямого восхождения, скетч GOTO1 + драйвер ch341ser.zip:
https://astronomy.ru/forum/index.php/topic,143891.msg3715794.html#msg3715794
Привод оси склонений и элемент управления (джойстик), ускорение перемещений, описание:
https://astronomy.ru/forum/index.php/topic,143891.msg3717467.html#msg3717467
Привод оси склонений и элемент управления (джойстик), ускорение перемещений, скетч GOTO2:
https://astronomy.ru/forum/index.php/topic,143891.msg3717468.html#msg3717468
Система управления экваториальной монтировкой с функциями GOTO, описание и скетч GOTO3:
https://astronomy.ru/forum/index.php/topic,143891.msg3726201.html#msg3726201
Прикручиваем управление фокусером к джойстику
https://astronomy.ru/forum/index.php/topic,143891.msg3737305.html#msg3737305
Подключаем LCD, описание электронной части:
https://astronomy.ru/forum/index.php/topic,143891.msg3727826.html#msg3727826
Подключаем LCD, скетч GOTO4 + драйвер LCD 1602:
https://astronomy.ru/forum/index.php/topic,143891.msg3727829.html#msg3727829
Скетч GOTO4 с автоопределением и автоюстировкой джойстика:
https://astronomy.ru/forum/index.php/topic,143891.msg3776103.html#msg3776103
Пульт ИК часть 1 (Slave), описание электронной части:
https://astronomy.ru/forum/index.php/topic,143891.msg3729842.html#msg3729842
Пульт ИК часть 1 (Slave), скетч GOTO5SLAVE, программа настройки и драйвер пульта ИК:
https://astronomy.ru/forum/index.php/topic,143891.msg3729843.html#msg3729843
Пульт ИК часть 2 (Master), описание электронной части и скетч GOTO5MASTER:
https://astronomy.ru/forum/index.php/topic,143891.msg3730628.html#msg3730628
Шаговый электрофокусер, описание электронной части:
https://astronomy.ru/forum/index.php/topic,143891.msg3733952.html#msg3733952
Шаговый электрофокусер, скетч GOTO6MASTER.zip:
https://astronomy.ru/forum/index.php/topic,143891.msg3733953.html#msg3733953
Версии GOTO6MASTER и GOTO6SLAVE для штатного ИК пульта ардуино:
https://astronomy.ru/forum/index.php/topic,143891.msg3734834.html#msg3734834
Энергонезависимые часы реального времени:
https://astronomy.ru/forum/index.php/topic,143891.msg3743281.html#msg3743281
Скетч для управления альт-азимутальной монтировкой GOTO7MASTER:
https://astronomy.ru/forum/index.php/topic,143891.msg3790555.html#msg3790555

« Последнее редактирование: 19 Сен 2016 [22:04:25] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
Астротрекер или привод оси прямого восхождения

Листая страницы очередного интернет-магазина с компонентами Ардуино, наткнулся на совершенно замечательную плату: CNC Shield v 4 (Keyes_CNC), которую смело можно назвать «Astro Shield» (на первом фото). Практически без пайки на ней можно собрать систему GOTO. Плата позволяет задействовать Ардуино нано и три драйвера типа А4988 или аналоги. Кстати, плата (Shield) продается в комплекте с Ардуино нано и тремя драйверами. Остается добавить блок питания (12В/1-3А с разъемом 5,5/2,1мм и плюсовым контактом внутри), изготовить проводок с четырехконтактной колодкой (с шагом 2,54 мм) для подключения к шилду и разъемом (использован разъем USB), для подключения шагового двигателя привода полярной оси. Все необходимые элементы на втором фото. Что/куда вставляется и подключается, хорошо видно на третьем фото, на нем уже готовая электроника трекера. Используется биполярный (четыре провода, две обмотки) шаговый двигатель. Одна обмотка шагового двигателя запитывается черным и белым проводниками, вторая – красным и желтым. Желательно подключать ШД с током потребления не более 2А. Но я ни на один из своих двигателей не нашел даташита, подключал и смотрел как работают. Подбирал положение переменного резистора на драйвере таким образом, чтобы при постоянной долговременной работе ни драйвер, ни двигатель не нагревались более 50-60С. Все регулировки и подключения делаются на обесточенной схеме! В механическую часть устройства не будем вдаваться. Важно, чтобы усилия двигателя хватало на вращение оси без пропуска шагов, а размер шага соответствовал потребностям. Для настройки программы ведения потребуется рассчитать передаточное число редуктора и количество полных шагов двигателя на один оборот его оси. Корпус для устройства придумать кажется тоже не проблема. При этом, вместо перемычки Mot_VOT_Sel на шилде следует предусмотреть выключатель на корпусе, готового устройства, который будет отключать питающее напряжение двигателя.
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
Оживляем трекер

В ардуину «заливаем» скетч, т.е. программируем микроконтроллер. Для этого надо установить соответствующую среду Ардуино, установить драйвер Ардуино нано, соединить Ардуино USB кабелем с ПК и открыть прилагаемый скетч. Это все не сложно и хорошо описано здесь: http://arduino.ru/Arduino_environment Единственное затруднение, которое испытывал - это установка драйвера Ардуино нано CH340.Прилагаю архив ch341ser.zip в котором содержится исполяемый файл ch341ser.exe, который надо запустить и со всем согласиться, но возможно для новой среды программирования Ардуино это и не потребуется. Сам скетч полностью моей разработки, не используются даже библиотеки сторонних производителей, состоит из трех файлов GOTO1.ino, GOTO1.h и CONFIG1.h которые должны размещаться в одной директории. Можно сразу загрузить скетч GOTO1.ino в ардуино и полюбоваться, как мигает LCD, но для правильной работы следует задать свои правильные значения следующих величин:

#define ENABLE_XYZ_PIN 8  //Enable X,Y,Z pin
#define DX_STEP_PIN       5  //Контакт ардуино идущий на STEP драйвера ПВ
#define DX_DIR_PIN         2  //Контакт ардуино идущий на DIR  драйвера ПВ
#define DX_FORCE_PIN    9  //Разгонный пин драйвера ПВ - это можно не трогать пока

int iStepsDX  =48;         //Полных шагов на 1 оборот используемого ШД
int iStepsXPS = 200;     //Полных шагов в секунду на используемом ШД
int iXStepX    =  16;       //Кратность шага драйвера ШД
double dRDX =1780.69; //Передаточное число редуктора

Величины iStepsDX и iStepsXPS – параметры используемого ШД, если неизвестны, можно достаточно легко определить. Кратность шага драйвера ШД – определяется наличием перемычек под драйверами А4988. На вышеприведенной фотографии шилда для драйвера X (сняты все перемычки) установлена кратность шага 16, для драйвера Y перемычки в состоянии кратности шага 4, для драйвера Z – кратность 8. Передаточное число редуктора следует вычислить, у меня получилось таким: 103/22*113/41*138=1780,69. При учете используемого микрошага х16 получается поворот оси около 0,95 угловых сек за 1 шаг (весьма посредственного) двигателя, что и было целью этой разработки. После загрузки правильного скетча, всю схему можно отключить от ПК и использовать автономно, подавая питание от блока питания 12В.

Продолжение следует, далее подключим вторую ось, элемент управления (джойстик), слегка разгоним Ардуино и обойдемся без импортного софта.
« Последнее редактирование: 04 Дек 2016 [14:02:55] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн Александр (AnDom)

  • *****
  • Сообщений: 8 082
  • Рейтинг: +232/-2
    • Show only replies by Александр (AnDom)
Очень интересная тема, подписался, хоть и нихрена не понимаю :)
Я видел М51 в Серегин 20"РК!!! :)

Оффлайн Oleg1601

  • *****
  • Сообщений: 887
  • Рейтинг: +28/-0
    • Show only replies by Oleg1601
Приветствую, Игорь!
Рад видеть, что ты решил выложить свою разработку.
Всем - будет интересно!
Телескоп: DS DTF 130/1000 (MOD) на DS-EQ3/AT-5 (MOD)

Оффлайн nolv

  • *****
  • Сообщений: 2 406
  • Рейтинг: +160/-6
    • Show only replies by nolv
Цитировать
На форуме уже имеется несколько тем, посвященных системам управления монтировками, собранных на базе компонентов ардуино, в частности:

А можно как-то вкратце пояснить, чем не устраивают существующие системы и в чем преимущество именно Вашей?

Цитировать
Передаточное число редуктора следует вычислить, у меня получилось таким: 103/22*113/41*138=1780,69.

Вычисления требуют пояснений. Что за числа делятся и перемножаются? Где мне их взять для моей монтировки? Какие числа испоьзовать для азимутала?
« Последнее редактирование: 01 Июл 2016 [08:00:21] от nolv »

Оффлайн Oleg1601

  • *****
  • Сообщений: 887
  • Рейтинг: +28/-0
    • Show only replies by Oleg1601
Я хоть и не автор этой разработки, но пояснить её преимущества, перед тремя приведёнными в качестве примеров разработками, автором одной из которых я являюсь, могу.
1. Использование GOTO с программой Stellarium
2. Не нужны ASCOM платформа и EQMOD
3. Готовые модульные компоненты Ардуино
4. Низкая цена
Думаю, этого достаточно  ;)
Телескоп: DS DTF 130/1000 (MOD) на DS-EQ3/AT-5 (MOD)

Оффлайн huch

  • *****
  • Сообщений: 603
  • Рейтинг: +12/-0
    • Show only replies by huch
Какие числа испоьзовать для азимутала?
Для азимутала эти числа сильно зависят от географической широты места наблюдения и времени суток. Их можно считать для каждого момента времени средствами той же ардуины.

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
А можно как-то вкратце пояснить, чем не устраивают существующие системы и в чем преимущество именно Вашей?
Мне очень нравятся указанные в первом сообщении системы других разработчиков, скорее всего имеются и другие, если дадите ссылки, с удовольствием почитаю, возможно, прикреплю к первому сообщению. Моя тема не про конкретное изделие, а про исследование возможностей Ардуино, в частности, очень удобного CNC Shield v4 для ардуино нано. Особенность данной темы еще в том, что используемые скетчи полностью моей разработки, минимальное использование подключаемых библиотек сторонних разработчиков. Думал даже открыть эту тему в разделе "Астрономия и компьютеры", но ей место здесь. Кроме этого, ни у кого я еще не видел скетча для ведения альт-азимутальной монтировки - это действительно сложно, на пределе возможностей Ардуино нано. Наберитесь терпения, здесь он будет, рабочий вариант у меня уже есть. Да, и спасибо Олегу, он правильно подметил особенности моей разработки! Всегда буду рад дополнениям и замечаниям, особенно от людей, которые что-то подобное делали!
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
Теперь вот по делу: какие числа брать для азимутала? Вообще говоря и для азимутала и для экваториала понадобятся два числа: передаточное число редуктора оси прямого восхождения (азимутальной оси для азимутала) и передаточное число редуктора оси склонений (горизонтальной оси для азимутала). Значения этих чисел - соотношение оборотов оси соответствующего двигателя и самой оси. В моем примере передаточное число оси прямого восхождения составляет 1780.69, т.е. чтобы прокрутить телескоп вокруг оси прямого восхождения на полный оборот, шаговый двигатель должен сделать 1780,69 оборотов. Передаточные чиста для каждой конкретной монтировки следует рассчитать. Мне было это достаточно просто сделать, т.к. редуктор снаружи. Вот эти таинственные числа, не что иное как количество зубцов на ведомых и ведущих шестеренках, а 138 - количество зубцов колеса однозаходной червячной передачи 103/22*113/41*138=1780,69.
« Последнее редактирование: 01 Июл 2016 [21:00:31] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
Теперь по сути ведения, трекинга. Экваториальная монтировка тем и хороша, что для компенсации вращения Земли, достаточно поворачивать одну лишь ось прямого восхождения со "звездной скоростью" в направлении, противоположном направлению вращения Земли. С азимутальной монтировкой все гораздо сложнее: для компенсации вращения Земли необходимо постоянно вращать обе оси, причем шаги смещения осей будут различны как между собой, так и во времени. Система управления должна будет просчитывать каждый шаг.
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн huch

  • *****
  • Сообщений: 603
  • Рейтинг: +12/-0
    • Show only replies by huch
Я как-то писал скетч для альт-азимутала. В принципе производительности хватает, но хочется обработку кнопок, работу с экраном и математику вынести на второй контроллер, управление двигателями требует слишком мелких пауз между командами. Разбивать вычисления на несколько этапов, которые успевали бы выполняться в эти паузы неудобно.

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
... хочется обработку кнопок, работу с экраном и математику вынести на второй контроллер, управление двигателями требует слишком мелких пауз между командами. Разбивать вычисления на несколько этапов, которые успевали бы выполняться в эти паузы неудобно.
Это верно! Максимальная комплектация моего устройства предусматривает две Ардуино нано, связанные по шине I2C. Без второго контроллера невозможно подключение пульта на ИК.
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
Привод оси склонений и элемент управления (джойстик), ускоряем перемещения

Астротрекер конечно дело хорошее, но полноценное управление монтировкой – лучше. Очень просто реализовать. К астротрекеру добавляем следующие детали, первое фото: еще один драйвер А4988 двигателя оси склонений, еще один переходной проводок с шилда на шаговый двигатель оси склонений, точно такой же, как на астрострекере, стандартный джойстик ардуино и переходной проводок с джойстика на шилд. Соединение драйвера склонений с соответствующим двигателем точно такое же, как на астротрекере. Подключается все как на втором фото. Отдельно поясню: GND и 5V джойстика подключаются на одноименные контакты шилда, WS джойстика – на CoolEN шилда (А3 ардуино), VRX джойстика на А7 шилда (А7 ардуино), VRY джойстика на А6 шилда (А6 ардуино). Теперь немного пайки. Контакты MS1-MS3 драйверов Х (оси прямого восхождения) и У (оси склонений), которые не заземлены перемычками дробления шага на землю, подпаиваются к контактам соответственно ±Х и ±У шилда. С моими предустановленными микрошагами 16х и 4х на осях ПВ и склонений, проводки подпаиваются как на третьем фото. Это позволит при наведении джойстиком переходить с микрошагов на полный шаг, чем ускоряются перемещения.

« Последнее редактирование: 30 Авг 2016 [21:50:21] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
Еще одно фото для ясности, подключение джойстика.
Остается загрузить прилагаемый скетч GOTO2, задать свои правильные значения величин:

int iStepsDX  =   48;    //Полных шагов на 1 оборот двигателя X
int iStepsXPS =  200;    //Полных шагов в секунду на двигателе X
int iXStepX   =   16;    //Кратность шага драйвера X
double dRDX   = 1780.69; //Передаточное число редуктора X
int iStepsDY  =   96;    //Полных шагов на 1 оборот двигателя Y
int iStepsYPS =  250;    //Полных шагов в секунду на двигателе Y
int iYStepX   =    4;    //Кратность шага драйвера Y
double dRDY   = 3168.00; //Передаточное число редуктора Y

Подключить двигатели, блок питания и наслаждаться управлением монтировкой джойстиком. Кроме этого, скетч включает в себя модуль астротрекера и кнопкой джойстика включатся и отключается ведение (трекинг). Если используется экваториальная монтировка, то минимальными усилиями получилось полнофункциональное устройство, полностью аналогичное тому, что описано в проекте https://astronomy.ru/forum/index.php/topic,140872.msg3607083.html#msg3607083 А для азимутальных монтировок получилось удобное управление джойстиком, кнопка бесполезной остается пока.

Олегу огромный привет! Даже не сомневаюсь, что ты сегодня же попробуешь загрузить в свое устройство прилагаемый скетч GOTO2! Да, кстати, он именно сегодня написан, только сегодня джойстик в действии испытал, мне нравится как работает, но не исключаю, что в скетче надо будет что-нибудь подправить. PS: к этому ответу прикреплен улучшенный/исправленный в соответствиями с замечаниями GOTO2_4.zip
« Последнее редактирование: 17 Июл 2016 [14:48:38] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

alex AMK

  • Гость
Спасибо за подробное описание принципов работы   монтировки на ардуино! :)  +10.  пробую  приспособить под Ардуино Уно 3. хотя проще купить тот же ардуино-нано и не заморачиваться с переделкой программного кода под УНО 3.   После тщетных попыток восстановить бортовой компютер МЕАД LX200GPS .окончательно переключился на ардуино-проекты.

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
Ардуино уно подойдет в качестве обработчика команд беспроводного пульта на ИК. Да и собственно, это то же самое, что Ардуино нано, чип то один и тот же! Да и мой код под нее переделать элементарно, номера пинов только в заголовке поменять.
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн Deimos

  • Модератор
  • *****
  • Сообщений: 16 227
  • Рейтинг: +259/-11
    • Skype - deimos.belastro.net
  • Награды Открытие комет, астероидов, сверхновых звезд, научно значимые исследования.
    • Show only replies by Deimos
    • Белорусская любительская астрономическая сеть
А какие характерные времена для отработки пауз? Я в рамках одного проекта делал поддержку шустрой кооперативной многозадачности на ардуине. Получилось шустро и очень скромно по ресурсам. Могу оторвать в отдельный проект :)
У природы нет плохой погоды, у неё просто на нас аллергия.

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

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

  • *****
  • Сообщений: 1 156
  • Рейтинг: +102/-0
    • Show only replies by Iovch
А какие характерные времена для отработки пауз?
Никаких пауз в цикле исполнения не предусмотрено. Применен совершенно другой подход, не знаю, делал ли кто-нибудь так: unsigned long iMilisec - по сути виртуальное время монтировки. В непрерывном цикле исполнения iMilisec постоянно сравнивается с реальным временем milisec() и принимается решение о целесообразности шага. Если все расчетные коэффициенты правильные - обеспечена абсолютная (?) точность ведения. Примерный расчет показывает, что при моих коэффициентах, между шагами получается  около 63 мс.
Ньютон SW150/750, Рефрактор триплет 100/365, Astro-3 GOTO, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн Oleg1601

  • *****
  • Сообщений: 887
  • Рейтинг: +28/-0
    • Show only replies by Oleg1601
Пытаюсь запустить скетч GOTO2, на своём Arduino UNO - возникли вопросы по правке скетча и, соответственно, цоколёвке.
#define ENABLE_XYZ_PIN 8 //Enable X,Y,Z pin - куда идёт провод/провода с 8-го контакта ардуины?
С контактов #define DX_FORCE_PIN и #define DY_FORCE_PIN провода идут на соответствующие контакты MS драйверов, верно?
« Последнее редактирование: 03 Июл 2016 [14:38:39] от Oleg1601 »
Телескоп: DS DTF 130/1000 (MOD) на DS-EQ3/AT-5 (MOD)