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


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

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

Оффлайн diant

  • *****
  • Сообщений: 4 284
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Всё, вы меня раздавили - морально и физическими - своими вкусностями)))
Ладно, я не буду предвзятым и приму esp32 с широко распростертыми объятиями. Постараюсь ее освоить, но у меня к ней другой вопрос пока - медленная работа GPIO (медленные внешние цепи?). Люди пытаются обходить на низком уровне, на C-версиях успешно, на классике... не знаю. Посмотрим. Надо пока доделать моторизацию CG4 на ардуино. Может быть возьму да оставлю GoTo просто в режиме "сначала RA, потом Dec". В конце концов это секундные дела и на практике чаще так и бывает.

Кстати. Уже вторую CG4 за последние три месяца перебираю и обнаружил интересную вещь. Если не гнуть пальцы и не брюзжать на ее "шайбы скольжения" (вместо подшипников), то при нормальной чистке, регулировке и смазке (использую суперлюбе с тефлоном) у меня устойчиво получается очень плавное движение по осям. Одним пальчиком все крутится. Но вижу, что люди постоянно хаят ее за ее грубую механику. И то состояние, в котором я получил две свои CG4, объясняет мне, откуда у этого мнения растут ноги - да просто люди доводят свои монтировки до такого состояния сами.
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 284
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
3. Правлиьно ли я понимаю логику работы таймеров на микроконтроллерах:
- выполняется программа микроконтроллера
- срабатывает таймер 1
- выполнение программы микроконтроллера прерывается и начинает работать процедура обработки таймера 1
- в этот момент срабатывает таймер 2
- процедура обработки таймера 1 прерывается и начинает работать процедура обработки таймера 2
- процедура обработки таймера 2 завершает и управление передается на процедуру обработки таймера 1
- процедура обработки таймера 1 завершается и управление передается обратно в программу микроконтроллера...
Все тут верно?
Сам отвечу на свой вопрос (благодаря полезной сслыке, данной FlexLM, за что отдельное спасибо): написанное НЕВЕРНО.
При самом простом программировании прерываний от двух таймеров в Ардуино, при начавшейся работе обработчика прерывания по таймеру 1 ЗАПРЕЩЕНЫ вызовы других прерываний. Соответственно обработчик прерывания по таймеру 2 НЕ БУДЕТ вызван рекуррентно и БУДЕТ ЖДАТЬ завершения обработки прерывания от таймера 1.
Это классическое поведение в простом случае. Его можно изменить, если начать углубляться и лазить в регистр SREG.
Пишу на всякий случай, может кому-то пригодится.

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 284
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Сегодня решил закругляться с насилием над Ардуино и закончить софт на одном таймере и, соответственно, на последовательной работе быстрого наведения GoTo (по очереди RA и Dec; в режиме тонкого наведения на скоростях 4х и 16х можно работать по двум осям одновременно). Плавный разгон сделал через управление регистром совпадения, загоняя туда числа из ряда Const/sqrt(N).
Все дописал, смонтировал шаговики на монтировку и сделал первую обкатку на реальном сетапе с полным обвесом. Видео тут.
Неожиданно столкнулся с одной неприятной особенностью. На одной оси (RA) и только на одной скорости (16x) где-то наступает резонанс и движок поет громче обычного. Конечно, не смертельно, но любопытно. Может надо под него резинки подложить, вообщем завтра покумекаю. На быстром наведении этого не проявляется, как и на часовом ведении и наведении на скорости 4х. Короче говоря, резонансы дело хитрое))).

PS. Проблема с резонансом долго со мной бодалась, но неожиданно легко разрешилась следующим образом: при повышении скорости с 1х до 4х или 16х вместо перехода с микрошага 1/128 на 1/32 или 1/8 я решил оставаться на микрошаге 1/128, просто в обработчике прерывания делаю не один "тик", а 4 или 16 с пропорциональными паузами. Теперь движок всюду поет тихо.
« Последнее редактирование: 18 Авг 2024 [00:48:58] от 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 284
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Навыки многолетнего сидения за компом иногда пригождаются и в сфере астро-самоделок. Думал уже ваять отдельную кнопку для переключения направления вращения по оси Dec, что очень пригодится при перекладывании трубы - ведь навык пальца становится механическим и к нему быстро привыкаешь, а стоит перекинуть трубу, и Dec начинает работать наоборот, что неудобно. Так вот, сидел, сидел, катал в раздумии мышку по столу... и вдруг мысль: "Двойной клик!". Вау! Просто осенило. Раз есть Джойстик и на нем есть кнопка, значит можно софтово отловить и двойной клик. Буквально 5-10 минут программирования - и оно работает! Не нужна больше отдельная кнопка. Джойстик (даже такой дешевый) все же свою службу несет без нареканий. Теперь впереди сборка короба для мозгов.
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 284
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Выложу свою версию софта для CG-4 (EQ3-2) на Ардуино 328 и двух драйверах LV8729, вроде все отлажено и протестировано на полном обвесе (труба около 6 кг + штанга 1кг и противовес 3,5 кг).
Питание 12В, потребление около 0,24А (в любых режимах, оно почти не меняется; его можно еще понизить, я сделал явно с запасом). Драйверы холодные без радиаторов, движки 17HS4023 Usongshine чуть теплые.
На пульте управления предусмотрен только обычный ардуиновский джойстик и один красный светодиод (для индикации режима "Часовое ведение").

Идеология схемы такая. Два режима:
(1) Часовое ведение
(2) Быстрое наведение (GoTo)
Режимы переключаются нажатием на кнопку джойстика.
В режиме (1) когда джойстик на нейтрали, монтировка ведет звезды. Когда джойстик немного отклоняется, включается тонкая наводка со скоростью 8х (сейчас сделал так, хотя изначально думал 4х). Когда джойстик отклоняется сильно, включается тонкая наводка со скоростью 32х (изначально было 16х). Скорости 4х и 16х можно легко вернуть, удалив лишние "тики" в коде. Крутить трубу можно одновременно по обоим осям.
В режиме (2) возможно только раздельное наведение по осям. Труба ускоряется/замедляется постепенно, достигая скорости почти 3°/сек. В этом режиме в нейтральном положении джойстика труба просто стоит.
Двойной клик на джойстик (dt<0,5с) меняет направление вращения по оси Dec (это для перекладки трубы).
Все остальное я уже описывал ранее.

Шкивы у меня имеют передаточные числа:
RA    1:5   (12:60)
Dec  1:3   (12:36)
Но по Dec, строго говоря идеально было бы 1:2.5, то есть ровно половина от RA. Например 16:40 или 12:30 или 15:36. Может потом так и сделаю, шкивы есть, но сейчас оставляю так, учитывая, что в реальности, когда наблюдаешь выше небесного экватора, градусы по RA "девольвируют" (а у полюса вообще швах).

Шилд CNC v4 я не курочил с обратной стороны, дорожек не резал, но просто сверху накинул нужные проводки, что уже описывал раньше.
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истема управления телескопом
Немного оптимизации кода.
У вас много конструкций if if, например, в Joystick() if(iX... ) if(iX... ). Допустим, ардуина выполнит первое условие и затем продолжит проверку остальных. Лучше использовать if() else if()... Чтобы ардуина напрасно не проверяла оставшиеся условия.
Вместо if (!Dec_Reverse) {} if (Dec_Reverse) {}
можно написать if (!Dec_Reverse) {} else {}
SW Dob8 + AMount

Оффлайн diant

  • *****
  • Сообщений: 4 284
  • Благодарностей: 530
  • Две вещи поражают мое воображение...
    • Сообщения от diant
Немного оптимизации кода.
У вас много конструкций if if,
FlexLM, спасибо! Я знаю, это далеко не оптимизированный код. Но поскольку он отлично работает, я пока не буду заниматься его причесыванием и переключусь на корпус, надо его доделать, чтобы система уже нормально сидела на монти и работала. А потом, если будет нужда, вернусь к оптимизации. Но скорее, переключусь на освоение кортексов и 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)