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


A A A A Автор Тема: Самодельный привод монтировки. Как сделать?  (Прочитано 8313 раз)

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

Оффлайн FlexLM

  • ****
  • Сообщений: 251
  • Благодарностей: 42
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
Arduino IDE 1.8.9 вполне сможет работать с esp32. Посмотрите настройку в мануале, с. 59. Библиотеку для платы esp32 лучше используйте 1.0.6.
Одновременно не получится использовать Wi-Fi и BT, места не хватит... Для моих задач достаточно и ВТ. Если понадобится Wi-Fi, то можно к вемос подключить esp8266.
SW Dob8 + AMount

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
FlexLM, читаю сейчас ваш мануал - просто потрясен, буквально чувствую вашу энергию на его страницах, без преувеличения. Спасибо за помощь!
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Код: [Выделить]
Борис, правильно ли я прочитал ваш код: GoTo крутит трубу примерно со скоростью 1 градус в сек, а часовик делает микрошаг с разрешением примерно 0.3 угловых секунды по RA?

PS. Еще наблюдение (предположительно). Мне показалось, что чем выше ток питания шаговика, тем равномернее он отрабатывает мелкие микрошаги. Никто не замечал подобного?

И еще вопрос. Все способы написания мозгов для монтировок на основании Ардуино, ESP32 и им подобных, что через функции времени, что через прерывания, опираются в своей точности на встроенный кварц этих контроллеров (если, конечно, мозги не используют внешнего стабилизированного тактирования). Насколько собственно точны эти кварцы?

Переписал сейчас весь код в режиме часового ведения и наведения на скоростях 4х и 16х на прерывания от таймера 1 - исключительно в силу красоты кода и логики этого пути. НРАВИТСЯ!
« Последнее редактирование: 03 Авг 2024 [18:38:03] от diant »
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн ПростоАльф

  • Новичок
  • *
  • Сообщений: 9
  • Благодарностей: 1
  • Мне нравится этот форум!
    • Сообщения от ПростоАльф
PS. Еще наблюдение (предположительно). Мне показалось, что чем выше ток питания шаговика, тем равномернее он отрабатывает мелкие микрошаги. Никто не замечал подобного?
До какого-то предела, да.
И еще вопрос. Все способы написания мозгов для монтировок на основании Ардуино, ESP32 и им подобных, что через функции времени, что через прерывания, опираются в своей точности на встроенный кварц этих контроллеров (если, конечно, мозги не используют внешнего стабилизированного тактирования). Насколько собственно точны эти кварцы?
Микроконтроллер тактируется либо от припаянного на его плату кварца, либо от встроенного в микросхему RC-генератора. В первом случае для монтировочных целей точности будет достаточно. Во втором по мимо плохой точности будет еще и огромный дрейф частоты от температуры и стоит добавить синхронизацию по внешнему источнику с pps выходом (какой-нибудь rtc вроде ds3231 или gps).

Оффлайн FlexLM

  • ****
  • Сообщений: 251
  • Благодарностей: 42
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
У esp32 частота кварца достаточно стабильна. У ардуино сильнее подвержена влиянию температуры. Так описывает их свойства Говард Даттон (автор OnStep).
SW Dob8 + AMount

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
А онстеп собирается на Ардуино или на ESP32?
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн FlexLM

  • ****
  • Сообщений: 251
  • Благодарностей: 42
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
На ардуино мега был вариант, но он давно устарел. Сейчас на базе stm32, esp32, teensy... Можете посмотреть в вики онстеп.
SW Dob8 + AMount

Оффлайн Boris Green

  • *****
  • Сообщений: 1 473
  • Благодарностей: 76
    • Сообщения от Boris Green
Борис, правильно ли я прочитал ваш код: GoTo крутит трубу примерно со скоростью 1 градус в сек, а часовик делает микрошаг с разрешением примерно 0.3 угловых секунды по RA?

PS. Еще наблюдение (предположительно). Мне показалось, что чем выше ток питания шаговика, тем равномернее он отрабатывает мелкие микрошаги. Никто не замечал подобного?

И еще вопрос. Все способы написания мозгов для монтировок на основании Ардуино, ESP32 и им подобных, что через функции времени, что через прерывания, опираются в своей точности на встроенный кварц этих контроллеров (если, конечно, мозги не используют внешнего стабилизированного тактирования). Насколько собственно точны эти кварцы?

1. Около того. Прошло много лет, я забыл начисто( Помню, что тики STEP по прерыванию и Timer. Поэтому стабильно. И отдельно timeMachine для периодических проверок (нажатие кнопки и т.д.)
2. Когда ток выше, ШД надежнее удерживает промежуточное положение между зубцами. Микрошаги неравномерные, слабо повторяемые, со слабым удержанием в их промежуточных позициях между зубцами. Но 64-128-256 микрошагов дают почти синус, плавно, тихо.
3. Ардуино на АТмега и кварцем прекрасно ведет телескопы. OnStep никто не жаловался. Но там есть pps вход, от GPS можно тактирование сделать, вроде еще внешние часы с термостаб.кварцем. Сейчас onStep Fysetc E4, чуть больше пачки сигарет, но все встроено. Моторы бесшумно работают. До этого lv8729 давали еле заметный скрип, будто телега едет.

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
И отдельно timeMachine для периодических проверок (нажатие кнопки и т.д.)
А это что такое? Я кнопку и джойстик опрашиваю в цикле (для скорости работаю с цифр. портами напрямую и понижаю разрядность АЦП при опросе джойстика в режиме GoTo).

2. Когда ток выше, ШД надежнее удерживает промежуточное положение между зубцами. Микрошаги неравномерные, слабо повторяемые, со слабым удержанием в их промежуточных позициях между зубцами. Но 64-128-256 микрошагов дают почти синус, плавно, тихо.
Мой опыт примерно такой же. Однако не хочется сильно поднимать токи только ради выправления микрошагов. Возможно, при моем разрешении это и не так важно - у меня 128й микрошаг и один тик часового ведения делается в 5,2 мс, то есть разрешение примерно 0,08 угл. секунды на микрошаг. Даже если 2-4 микрошага задержатся, а на 5-8-м все наверстается, это не сильно отразится на профилях звезд.


3. Ардуино на АТмега и кварцем прекрасно ведет телескопы. OnStep никто не жаловался.
Этого мне достаточно, спасибо.
И вообще спасибо за просвещение. Чувствую, придется со временем освоить что-то из ряда eps32 или stm32. Ибо в ограничения ардуинки (по скорости точно) уже упирался. Кстати, что бы вы посоветовали новичку, знакомому лишь поверхностно с ардуино, для переход на. Из главных требований:
- простота перехода и софта
- скорость
- удобная среда (наверное они все в Ардуино IDE интегрируются? Или своя удобнее?)
- достаточное количество и гибкость цифровых и аналоговых портов (много не надо)
Вайфай и блютус мне как правило не нужны (только в одном проекте возникала реальная необходимость). Достаточно того, чтобы возможность работы с ними была через отдельные платы типа HC05,06, если потребуется.

ЗЫ. А вот эту вашу плату с 4-мя драйверами TMC2209 на борту, ее можно где-то купить? И потом залить туда свою программу?
Ой, на последний вопрос сам отвечу. На али она есть, около 3тр.
Правильно ли я понимаю, что купив ее, можно самому написать на нее софт (только в чем?), залить туда, и использовать как мозги для управления монтировкой? Это лучшее решение из готовых плат Fysetc? (Кстати, а что это за зверь Fysetc?)

ЗЫЫ. Как говорят, курю тему весь день. дааааааа..... Это целый мир и люди сидят, прошивают, разгоняют, тестируют, тестируют, тестируют... а они пачками выходят и выходят и скорости у них уже типа ардуино-100х+ Из двух мейнстримов (esp32 и stm32) пока больше импонирует первая. Курю дальше....
« Последнее редактирование: 04 Авг 2024 [20:33:56] от diant »
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Не знаю, в какую ветку правильно писать об этом; если есть лучшая, просьба к модераторам перенести туда мой пост.

Итак, сравнивая две линии совр. недорогих и производительных микропроцессоров, ESP32 и STM32, я обращаю внимание и на такие вещи, которые, быть может, в мозгах для монти не важны, тем не менее для меня они крайне интересны.
Так вот, обе линейки более чем доступны по цене, вроде бы без труда программируются в Ардуино IDE, но есть одно существенное различие.
АТМега328 как известно выставляет "1" на цифровой пин за два такта, то есть за 125нс.
Так вот stm32f411 ("черная таблетка") при частоте ее кварца 100МГц, делает это тоже за два такта, то есть за 20нс!
А вот esp32, кажется, даже при своей немалой частоте не умеет так быстро работать со своими цифровыми ногами. Причем разница тут более чем на порядок не в пользу esp32. Если не прав, поправьте меня.

Я на эту черную таблетку в ее 411-й ипостаси посматриваю и шевелится вопрос: кто-нибудь делал на ней мозги для монти?
Не понятно только, с каким шилдом его можно подружить...
« Последнее редактирование: 05 Авг 2024 [16:24:32] от diant »
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн Boris Green

  • *****
  • Сообщений: 1 473
  • Благодарностей: 76
    • Сообщения от Boris Green
А это что такое? Я кнопку и джойстик опрашиваю в цикле
В архиве несколько файлов. Названия говорящие.
Тут уже есть место для оптимизации.
Не каждый раз вычитать и сравнивать. А формировать 173ms_next и сравнивать с currMillis.
void TIMEMACHINE_loop() {
  uint32_t  TIMEMACHINE_currMillis = millis();

  if ((TIMEMACHINE_currMillis - TIMEMACHINE_prevMicros_173ms) > 173L) {
    TIMEMACHINE_173ms();
    TIMEMACHINE_prevMicros_173ms = TIMEMACHINE_currMillis;
  }
  if ((TIMEMACHINE_currMillis - TIMEMACHINE_prevMicros_873ms) > 873L) {
    TIMEMACHINE_873ms();
    TIMEMACHINE_prevMicros_873ms = TIMEMACHINE_currMillis;
  } 
}

void TIMEMACHINE_173ms() {
  BUTTON_check();   
}
void TIMEMACHINE_873ms() {   
  GOTO_check_goto_is_completed();
  GOTO_calc_positions();   
  GOTO_current_positions_send_to_stellarium();  //делай МАХ частоту отправки, Стеллариум отзывчивее и не тупит
}

Кстати, что бы вы посоветовали новичку, знакомому лишь поверхностно с ардуино, для переход на
Я баловался в Ардуино, а специализированные программы не пробовал.


А вот эту вашу плату с 4-мя драйверами TMC2209 на борту, ее можно где-то купить? И потом залить туда свою программу?
На Али около 3 тыс.
https://wiki.fysetc.com/E4/ - штатное описание.
https://onstep.groups.io/g/main/wiki/32747 - тут прокидывается проводок. Прочие джамперы удаляются. Прошивка ОнСтеп учитывает топологию платы. Там конфиг, указывается какая железяка.

Я прошивку открыл в Ардуино и залил в эту плату.
Подключил 2 ШД и питание. Никакие блютузы, грелки и т.д. не подключал.
https://onstep.groups.io/g/main/wiki/32794



Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
FlexLM, пара вопросов.

1. Я правильно понимаю, что онстеп делалася на ардуино МЕГА (а не на простой 328й) именно потому, что там есть несколько 16битных таймеров (в отличие от одного на 328й)?

2. Правильно ли я понимаю, что для одновременного управления НЕЗАВИСИМЫМ плавным разгоном/торможением движков RA и Dec через изменение регистра счетчика прерываний нужны два независимых таймера?

3. Правлиьно ли я понимаю логику работы таймеров на микроконтроллерах:
- выполняется программа микроконтроллера
- срабатывает таймер 1
- выполнение программы микроконтроллера прерывается и начинает работать процедура обработки таймера 1
- в этот момент срабатывает таймер 2
- процедура обработки таймера 1 прерывается и начинает работать процедура обработки таймера 2
- процедура обработки таймера 2 завершает и управление передается на процедуру обработки таймера 1
- процедура обработки таймера 1 завершается и управление передается обратно в программу микроконтроллера...
Все тут верно?
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн FlexLM

  • ****
  • Сообщений: 251
  • Благодарностей: 42
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
Здравствуйте, diant.
По Onstep вам больше подскажут ребята, собирающие на нем проекты. На форуме есть даже целая тема.
1. У мега больше функционал, чем у нано. Говард сделал управление ШД на отдельных таймерах. У него даже на отдельном таймере часы для звёздного времени. Но это не значит, что нано следует списывать. Iovch, например, довольно интересно реализовал разгон-торможение на таймерах для двух осей и фокусера. До определенного времени в своем проекте я тоже поддерживал ардуино, но потом мне она стала тесновата...
2. Безусловно, при использовании регистра совпадения удобно использовать отдельные таймеры для Ra/Dec. Говард Даттон так и поступил, реализуя разгон-торможение.
3. По поводу очередности выполнения прерываний: смотря какой тип прерываний. Есть специальная таблица векторов прерываний... Более продробно можете посмотреть по ссылке
SW Dob8 + AMount

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Добрый, добрый день!
Говард сделал управление ШД на отдельных таймерах.
То есть? Он что внешние таймеры еще добавил?

Iovch, например, довольно интересно реализовал разгон-торможение на таймерах для двух осей и фокусера.
То есть он использовал не только единственный 16-битный таймер 328й ардуинки, но и ее 8-битные таймеры? Я уже вчера перед сном об этом думал.

Про тесноватость ардуинки понимаю, хотя чертовски удобная штука для многих проектов. Я на днях уже получу stm32f411 и пару ESP32 (классику и С3), буду их изучать по возможности.
(кликните для показа/скрытия)

По пункту 2 все понятно.
Пункт 3 почитаю сегодня... Заглянул сейчас - какие вы класные ссылки даете! (это эмоции, ладно...)
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн Laplase

  • *****
  • Сообщений: 1 368
  • Благодарностей: 111
  • engineer
    • Сообщения от Laplase
    • vkontakte
То есть? Он что внешние таймеры еще добавил?
Отдельные имелось в виду выделенные, в процессоре их много. Я мельком смотрел код, у Говарда довольно технически грамотно все сделано.
GSO 150/750 Photo, APO DeepSky 80/480, DIY Harmonic mount, EQ6-Pro, ASI1600MM

Оффлайн FlexLM

  • ****
  • Сообщений: 251
  • Благодарностей: 42
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
Отвечу на оставшийся вопрос  :)
Iovch использует Timer1 для Ra, Timer2 для Dec и фокусера.
SW Dob8 + AMount

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Я запутался. Давайте с начала. У обычной 328й ардуины 1 таймер 16-битный и 2 таймера 8-битных. Говард работал с ними, когда реализовал свою систему на простой ардуине? Если да, то как минимум один из задействованных им таймеров был 8-битным.
Или же все-таки Говард сразу пересел на Ардуино МЕГА и ушел от проблемы единственного 16-битного таймера?

Я вчера крутил в голове варианты использования 8-битного таймера в паре к 16-битному на простой ардуине. Так можно сделать, но реальной плавности на движке, управляемом 8-битном таймере (путем изменения регистра сравнения) вроде не получается.

Смысл такой. Плавный разгон, это постоянное угловое ускорение. В этом случае будут минимальные нагрузки отдачи на голову монтировки.
Угловая скорость - это dN/dt. Соответственно угловое ускорение это N''(t). Постоянное угловое ускорение означает N''(t) = Const. Отсюда N(t) ~ t2.
То сеть плавный разгон - это квадратичная зависимость шагов N от времени t.
Обращаем эту функцию и получаем зависимость t от N как t ~ sqrt(N), отсюда длительность шага dt/dN ~ 1/sqrt(N).
Отсюда сразу следует, что подходя к максимальной скорости при разгоне у нас должны быть предельно малые сокращения времени длительности шага по сравнению с сокращениями в начале разгона. Но на 8-битном таймере, за счет изменения регистра сравнения мы можем получить только одно из двух:
- или большие сокращения длительностей шага в начале разгона (с дополнительным повышением делителя CLK кварца)
- или малые приращения длительностей шага в конце разгона (но тогда 8-битный таймер должен молотить так часто, что он не будет отпускать микроконтроллер на выполнение основной программы)

Может я чего-то недопонимаю, но задумка использовать 16- и 8-битный таймер 328-й ардуины для двух моторов одновременно - затея не важная.

Iovch использует Timer1 для Ra, Timer2 для Dec и фокусера.
Да, я тоже вчера как раз и думал таймер 2 прикрутить на Dec. Сегодня еще покумекаю. У Iovch получилось реально достичь постоянной угловой скорости при разгоне Dec от начала до конца?
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн FlexLM

  • ****
  • Сообщений: 251
  • Благодарностей: 42
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
Насколько я знаю в OnStep использовалась ардуина мега, а не нано.
В ардуино, если изменять регистр совпадения, то вот поэтому и надо использовать отдельно для каждого ШД свой внутренний таймер прерываний. Тогда ШД смогут работать независимо, со своими скоростями.
Либо использовать другой принцип. Например, в таймере прерываний использовать счётчик, который будет определять когда подавать импульсы step. Таким образом и изменять скорость. Но на ардуино нано/уно у меня не получилось добиться желаемой плавности... и таймеров малова-то. Ну вы и сами об этом уже написали.

В esp32/stm32 гораздо удобнее управлять скоростью. Устанавливаете частоту прерываний 16МГц (прям, как у Говарда 🙂). А далее с необходимой плавностью меняете значение в регистре совпадения таймера и таким образом разгоняете-замедляете ШД.
« Последнее редактирование: 16 Авг 2024 [17:10:07] от FlexLM »
SW Dob8 + AMount

Оффлайн diant

  • *****
  • Сообщений: 4 285
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Например, в таймере прерываний использовать счётчик, который будет определять когда подавать импульсы step.
Да, эта мысль уже тоже была, я ее даже пробовал реализовать. Но тут та же проблема - таймер должен молотить слишком часто, чтобы была плавность в конце разгона. В этом случае код обработчика прерываний должен быть очень коротким (быстрым).
Появилась еще мысль. 8-битный счетчик можно превратить в 14-битный софтово (при этом шкала больших чисел, более 256 будет прорежена, как у Nikon NEF формата, возможно это простительно). Делается так: в определенный момент времени меняем делитель CLK с 64 на 8 и тут же перестраиваемся под новую шкалу. То есть начинаем разгон на CLK/64, а потом, по мере сокращения времени следования импульсов, переключаемся на CLK/8, точно подстроив следующее значение регистра сравнения так, чтобы он был примерно в 8 раз больше, чем последний регистр сравнения в тайминге CLK/64.

В esp32/stm32 гораздо удобнее управлять скоростью. Устанавливаете частоту прерываний 16МГц (прям, как у Говарда 🙂). А далее с необходимой плавностью меняете значение в регистре совпадения таймера и таким образом разгоняете-замедляете ШД.
Там небось еще и 32-битные таймеры. Не?
Когда все так легко, это не так интересно ;) Удобно-то, да. Надо бы ее посмотреть, быстро ли удастся оседлать ESP32 в ардуино, пока не щупал, не представляю.
Celestron C8 SC XLT, SW150/750PDS, SW120/600, SV503 ED100, DS80/600 (солнцескоп с клином Гершеля + Baader SC)
Азимутал TS AZGP, экваториалы HEQ5 Pro belt и CG4
Nikon Action 7x35, Minolta Standard 10x50 (on sale)

Оффлайн FlexLM

  • ****
  • Сообщений: 251
  • Благодарностей: 42
  • Олег
    • Сообщения от FlexLM
    • AMount - cистема управления телескопом
Обижаете 😁 timer 0-3 = 64-bit.
Для esp32 ≈3 свои функции настройки таймеров, а в остальном - такие же функции, как для ардуино.
И кварц стабильнее, и с double всё в порядке, и...
« Последнее редактирование: 16 Авг 2024 [18:15:52] от FlexLM »
SW Dob8 + AMount