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

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

Оффлайн 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

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
Поэтому лучше пользоваться документированными функциями

Ну так я и предлагаю ими пользоваться :)
Только в даташите же не запрещена вроде остановка на половине действия.
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн аспирант

  • *****
  • Сообщений: 1 829
  • Благодарностей: 60
    • Сообщения от аспирант
Только в даташите же не запрещена вроде остановка на половине действия.
:) это понятно - что не запрещено, то разрешено. В принципе получится "значительное" упрощение конструкции, не нужно переводить вход MS1 в 1  ;D. А так если движок не греется, не дёргает, то вполне.....

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
это понятно - что не запрещено, то разрешено. В принципе получится "значительное" упрощение конструкции, не нужно переводить вход MS1 в 1  ;D.
Ну это то не проблема, если надо будет )

А так если движок не греется, не дёргает, то вполне.....
Ну да, буду пробовать, когда уже соберу всё..
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн аспирант

  • *****
  • Сообщений: 1 829
  • Благодарностей: 60
    • Сообщения от аспирант
Ну да, буду пробовать, когда уже соберу всё..
Обратите внимание на 9 рисунок в даташите - там задействован сигнал Сброс в полношаговом режиме. В переходном моменте ток в фазах - 70 процентов. В полноценном полушаговом режиме токи меняются чуть-чуть по другому в фазах - рисунок 10. По моему в недокументированном режиме двигатель будет работать шумнее. А так по возможности рассказывайте о своих экспериментах.

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
Обратите внимание на 9 рисунок в даташите - там задействован сигнал Сброс в полношаговом режиме. В переходном моменте ток в фазах - 70 процентов. В полноценном полушаговом режиме токи меняются чуть-чуть по другому в фазах - рисунок 10. По моему в недокументированном режиме двигатель будет работать шумнее. А так по возможности рассказывайте о своих экспериментах.

О, спасибо!
Еще и RESET'ом рулить, ну его нафиг :)
Перейду сразу на полушаговый режим, что бы не морочиться. Напомню, я электрофокусер себе курочу, а не привод монтировки. До этого считал, что полушаг мне обеспечит необходимую точность фокусировки, полный шаг - нет. Так что сразу перейду в полушаг без экспериментов наверное.
Если что интересное будет - напишу конечно :)
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Не нужно возлагать слишком много надежд на потенциометр ограничения тока.
12 В - слишком много для мотора с сопротивлением обмотки 3,5 Ом. Даже 5 В много будет при непрерывной работе или удержании.
У меня на 12 В подключены моторы с сопротивлением 15 Ом и 26 Ом.
Первый закипал через 10 минут, да и второй неприятно попахивал.
Гасить ток резисторами, как это делал Oleg1601, не эстетично и момент сильно падает.
Завел на каждый драйвер управление ENABLE с шим-выходов АРдуины, на первом выставил 150 единиц, на втором 50 - шагают нормально, без сбоев, чуть тепленькие.
ПРавда, поначалу зуд раздражал, но через час привык и даже стал лучше ориентироваться в текущем режиме работы агрегата.
А потенциометр использую скорее для подбора максимально равномерного хода.

Кстати, Игорю еще раз спасибо за подробное и последовательное описание системы. ПРавда, я у себя переделал скетчи под команду tone по одной оси и пока на своем азимутале дальше джойстика к GOTO не пошел - но без его ЦУ вряд ли бы и это осилил.
"потенциометр ограничения тока" - нужен для организации ШИМ питания обмоток двигателя. И отдельный ШИМ с ардуины городить не нужно. У тебя двигатели довольно высокоомные, т.е. ток через них не такой уже и большой идёт, и если правильно не настроить ШИМ драйвера (3755, 4988 или что там у тебя), то естественно моторчики будут греться.
Лучше всего погуглить что такое ШИМ, и конкретно как его настроить на плате драйвера мотора.
Основная идея в том что чем выше напряжение питания - тем выше скорость нарастания тока, и соответственно, вращающего момента в обмотках мотора. По этому двигатели и питают повышенным напряжением, в 5-7 раз выше номинального. НО при повышенном напряжении ток получается слишком большим и это нужно регулировать, для этого и нужен ШИМ. ШИМ ограничивает время приложения питания к обмотке таким образом, что бы ток через обмотку не мог превысить максимально допустимый.
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Что считается полным шагом мотора, единичное изменение сигнала на пине STEP драйвера, или двойное изменение уровня сигнала?
Импульсом считается переход в 1, а затем возврат в 0. Т.е. нужно выполнить 400 строчек, либо по другому 200 групп 1-0... вроде по логике так.

Один шаг мотора - одно изменение состояния обмоток.
На пример, если обмотки находятся в состоянии "+ - - -", то следующий шаг будет или "- + - -" или "- - - +". Это для полношагового режима. Обычно состояния обмоток кодируют 0 и 1.
Т.о. полношаговый режим выглядит так:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Полушаговый:
1 0 0 0
1 1 0 0
0 1 0 0
0 1 1 0
0 0 1 0
0 0 1 1
0 0 0 1
1 0 0 1
Каждая строка и будет одним шагом двигателя.
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357

Покажите код, как Вы это делали. Смею предположить, что не таймеры использовали, а банальную задержку на delay или с помощью tone.
А как в Ардуино можно "использовать таймеры" иначе чем через команды millis и tone ?
Насколько я понимаю, в архитектуре Ардуино 16-разрядный таймер процессора отведен под внутренние часы с доступом через millis, а один из двух 8-разрядных таймеров можно задействовать командой tone (как использовать другой - я не знаю).
Других возможностей я не нашел.
А они есть ?

Будет полезно http://arduino.ru/Tutorial/Arduino_Interrupts_part2 , https://geektimes.ru/post/255744/ .
« Последнее редактирование: 12 Окт 2017 [10:26:12] от aix357 »
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
Один шаг мотора - одно изменение состояния обмоток.
На пример, если обмотки находятся в состоянии "+ - - -", то следующий шаг будет или "- + - -" или "- - - +". Это для полношагового режима. Обычно состояния обмоток кодируют 0 и 1.

Ясно, спасибо! А не подскажете, как на драйвере A4988 можно организовать уменьшение тока удержания, когда мотор не крутится?
Т.е допустим во время движения я выставил максимальный ток 1А, при удержании это слишком жирно для него конечно, и хотелось бы уменьшить, скажем, до 0.3А.
ШИМ на ENABLE? или это фигню я придумал? :)
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Один шаг мотора - одно изменение состояния обмоток.
На пример, если обмотки находятся в состоянии "+ - - -", то следующий шаг будет или "- + - -" или "- - - +". Это для полношагового режима. Обычно состояния обмоток кодируют 0 и 1.

Ясно, спасибо! А не подскажете, как на драйвере A4988 можно организовать уменьшение тока удержания, когда мотор не крутится?
Т.е допустим во время движения я выставил максимальный ток 1А, при удержании это слишком жирно для него конечно, и хотелось бы уменьшить, скажем, до 0.3А.
ШИМ на ENABLE? или это фигню я придумал? :)

По хорошему, нужно настроить драйвер на номинальный ток твоего мотора, напряжение при этом может быть практически любым, от номинального для мотора до десятикратного. При этом мотор не будет греться выше нормальной для него рабочей температуры. Это самый правильный вариант использования конкретного мотора и драйвера. Т.к. повышение тока обмоток выше номинального ощутимого прироста момента мотору не даст, а греть обмотки будет. Эффективней повышать напряжение или искать более мощный мотор.
Но если сильно хочется ШИМ-ить ENABLE, то конечно можно. Но при этом будет жёсткая привязка прошивки к конкретному мотору. При этом нужно будет перед каждым шагом "отключать" этот ШИМ, и потом снова включать. А это увеличение программы, загрузки процессора и количества задействованных ног Ардуины. А работать скорее всего будет.
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
По хорошему, нужно настроить драйвер на номинальный ток твоего мотора, напряжение при этом может быть практически любым, от номинального для мотора до десятикратного. При этом мотор не будет греться выше нормальной для него рабочей температуры. Это самый правильный вариант использования конкретного мотора и драйвера. Т.к. повышение тока обмоток выше номинального ощутимого прироста момента мотору не даст, а греть обмотки будет. Эффективней повышать напряжение или искать более мощный мотор.
Но если сильно хочется ШИМ-ить ENABLE, то конечно можно. Но при этом будет жёсткая привязка прошивки к конкретному мотору. При этом нужно будет перед каждым шагом "отключать" этот ШИМ, и потом снова включать. А это увеличение программы, загрузки процессора и количества задействованных ног Ардуины. А работать скорее всего будет.

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

Ясно, буду пробовать тогда с шим, спасибо! Ну шим наверное можно и внешний замутить..
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Ясно, буду пробовать тогда с шим, спасибо! Ну шим наверное можно и внешний замутить..

Внешнему ШИМ-у нужно будет как-то сообщить когда делается шаг и нужен максимальный ток, а когда простой и нужно ток понизить ;)
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff

Внешнему ШИМ-у нужно будет как-то сообщить когда делается шаг и нужен максимальный ток, а когда простой и нужно ток понизить ;)

Ну это да, так и предполагал. Одной ногой на ардуине управлять внешним ШИМом, когда кручу мотор отключать шим, когда остановлен - соответственно включать. А какая интересно частота ШИМа нужна на ENABLE, килогерцы наверное? Или можно больше на порядок-два?
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Я хочу просто уменьшить потребление от батареи во время простоя фокусера, думаю сильный ток удержания ему не нужен будет.
Скорее всего не нужен, особенно если фокусёр реечный скажем.
Я только не пойму зачем 1А тока мотору во время работы - мне кажется это многовато. Какие параметры у мотора - напряжение, сопротивление, может быть индуктивность? Обычно небольшие моторы имеют номинальное напряжение 5В и сопротивление обмотки несколько десятков Ом, следовательно номинальный ток будет максимум 0,5А.
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Ну это да, так и предполагал. Одной ногой на ардуине управлять внешним ШИМом, когда кручу мотор отключать шим, когда остановлен - соответственно включать. А какая интересно частота ШИМа нужна на ENABLE, килогерцы наверное? Или можно больше на порядок-два?
В документации на А4988 не нашёл допустимой частоты сигнала ENABLE, придётся экспериментальным путём подбирать наверное :)
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
Скорее всего не нужен, особенно если фокусёр реечный скажем.
Я только не пойму зачем 1А тока мотору во время работы - мне кажется это многовато. Какие параметры у мотора - напряжение, сопротивление, может быть индуктивность? Обычно небольшие моторы имеют номинальное напряжение 5В и сопротивление обмотки несколько десятков Ом, следовательно номинальный ток будет максимум 0,5А.

Не, крейфорд. По этому будет затягиваться наверное хорошо, что бы камера не сползала в 'близких к вертикальным' режимах.
Мотор 42HS4813A4, 3.5Ом, 1.3А, 5.5мГн. По напряжению не знаю, видимо любое, в пределах разумного :)

Кстати! ШИМ то есть уже встроенный в ардуину, 500Гц, просто пишем analogWrite(10, 64), и на десятой ноге будет шим-сигнал 500Гц со скважностью 25%, и не надо вроде внешний, если 500Гц будет нормально. Но наверное на этой частоте тогда и моторчик будет гудеть..
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
В документации на А4988 не нашёл допустимой частоты сигнала ENABLE, придётся экспериментальным путём подбирать наверное :)

Понял, ну вон в ардуине есть вроде 500-герцовый, его для начала и задействую :)
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Не, крейфорд. По этому будет затягиваться наверное хорошо, что бы камера не сползала в 'близких к вертикальным' режимах.
Мотор 42HS4813A4, 3.5Ом, 1.3А, 5.5мГн. По напряжению не знаю, видимо любое, в пределах разумного :)

Кстати! ШИМ то есть уже встроенный в ардуину, 500Гц, просто пишем analogWrite(10, 64), и на десятой ноге будет шим-сигнал 500Гц со скважностью 25%, и не надо вроде внешний, если 500Гц будет нормально. Но наверное на этой частоте тогда и моторчик будет гудеть..

Тут http://cnc.userforum.ru/viewtopic.php?id=6072 в первом посте разбирается как рассчитывать напряжение и ток по параметрам мотора.
У тебя получается номинальное напряжение 3.5Ом*1.3А=4.55В если питать прямым напряжением (без ШИМ).
Максимально по формуле из поста будет 32*корень.квадратный(5.5мГн)=~75В.
Так же автор там пишет что если питать напряжением меньшим четырёх кратного номинального то "двигатель не будет вращаться, а будет только нагреваться, что приведет к его поломке" (с).
"Хочешь сделать что-то хорошо - сделай это сам!"

Оффлайн ASheff

  • *****
  • Сообщений: 10 512
  • Благодарностей: 248
  • Артем
    • Сообщения от ASheff
Тут http://cnc.userforum.ru/viewtopic.php?id=6072 в первом посте разбирается как рассчитывать напряжение и ток по параметрам мотора.
У тебя получается номинальное напряжение 3.5Ом*1.3А=4.55В если питать прямым напряжением (без ШИМ).
Максимально по формуле из поста будет 32*корень.квадратный(5.5мГн)=~75В.
Так же автор там пишет что если питать напряжением меньшим четырёх кратного номинального то "двигатель не будет вращаться, а будет только нагреваться, что приведет к его поломке" (с).

Спасибо, прочитал.  Но какое то странное заявление там заявление, что получается мой двигатель не будет вращаться при напряжении меньше 18V  ???
Использую для теста лабораторный БП, 12V ставлю для питания драйвера, все крутится на ура, усилие - рукой не удержать за муфту (диаметр полтора см примерно), да и от 8V тоже вполне крутится. И это я ток ставлю не 1.3А, а 0.5А пока для тестов! Т.к. еще не приклеил радиатор к драйверу. В общем не верю в 18V :)
- Meade Maxvision 80/480 APO
- SW HEQ5Pro belt-mod
- Canon EOS 550Da, ASI 178MC, Datyson T7M
- MC Helios 44M-6, MC Юпитер-37А,Canon 70-200/4

Оффлайн aix357

  • *****
  • Сообщений: 706
  • Благодарностей: 1
    • Сообщения от aix357
Спасибо, прочитал.  Но какое то странное заявление там заявление, что получается мой двигатель не будет вращаться при напряжении меньше 18V  ???
Использую для теста лабораторный БП, 12V ставлю для питания драйвера, все крутится на ура, усилие - рукой не удержать за муфту (диаметр полтора см примерно), да и от 8V тоже вполне крутится. И это я ток ставлю не 1.3А, а 0.5А пока для тестов! Т.к. еще не приклеил радиатор к драйверу. В общем не верю в 18V :)
Скорее всего там автор имеет ввиду если используется драйвер в режиме микрошага и включённым ШИМ, а если шагать полным шагом и не использовать ШИМ, то наверное номинальных значений будет вполне достаточно.
"Хочешь сделать что-то хорошо - сделай это сам!"