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


A A A A Автор Тема: GOTO на Arduino практическая реализация "Импортозамещение"  (Прочитано 48076 раз)

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

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
Здравствуйте.
Появились вопросы:

1. система учитывает, что монтировка с моторами имеет ограничение на вращения (мотор упирается в другое звено)?

2. постоянно работает только фрагмент червячного колеса, например, сектор 90 градусов притирается от постоянного использования, а остальная часть не используется. Может, при инициализации сделать холостое вращения моторов, чтобы червячные колесу прокрутились на новый сектор? Т.е. отпускаем фрикционы, держим телескоп и включаем систему, моторы вращаются и смещают червяк на свежий сектор, который притирается. Со временем весь червяк пройдет цикл использования.

Оффлайн -Dmitry-

  • *****
  • Сообщений: 1 133
  • Благодарностей: 164
  • Хорошо в Сибири летом — целый месяц снега нету!
    • Сообщения от -Dmitry-
1 Не разбирался как в экваториальном режиме, а в альт-азимутальном можно задать мин-макс углы по высоте и макс. угол поворота по азимуту.
2 При включении монти считает, что труба направлена на полярку. Оставьте трубу в другом положении при отключении, а после него ослабьте фрикционы и наведите на полярку- вот вам и смена сектора на шестерне.
Ньютон 250F4, Бино 150F54"МАК, Бино 96F6ED, Canon 10x42L IS, DVS-8-DK3/f/bw+Hα

Оффлайн Piter_Korn

  • *****
  • Сообщений: 2 193
  • Благодарностей: 35
  • Мне нравится этот форум!
    • Сообщения от Piter_Korn
Цитата
Не разбирался как в экваториальном режиме
В экваториальном - то же самое, только лимит отсчитывается от горизонта, и ограничение вблизи полюса. (к стати, допускается "перескок" через полюс на 1 градус и по прямому восхождениюи по склонению)

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
Довел-таки свое изделие до мобильного рабочего образца.
Спасибо за исходный код, сижу ломаю голову.

Планирую добавить
1. statemachine (кнопки и вывод на экран обрабатывать раз в *** микросекунд, а события моторов обрабатывать каждый loop)
2. библиотеку accelStepper для ускорения\замедления моторов - стоит ли(?)
3. ускоренное движение по кнопке (переводить драйвер в полношаговый из 1\32 микрошагового и обратно; количество накопленных тиков умножать на коффициент, для микрошага *1, полношаговый *32).

Вообще, вывод на экран и парсинг Serial занимает какое-то время, возможно, следующий тик мотора сдвинется по времени. От экрана отказаться(?)


До сих пор не понимаю, откуда некоторые числа в конфиге. И как вычислилась поправка вращения Земли по координатам.

С протоколом NextStar разобрался http://www.celestron.com/media/795779/1154108406_nexstarcommprot.pdf 

Можно с вами участвовать в разработке?   https://github.com/musgravehill/bobGoTo 
 

Оффлайн sleeping07

  • ***
  • Сообщений: 149
  • Благодарностей: 16
    • Сообщения от sleeping07
Вообще, вывод на экран и парсинг Serial занимает какое-то время, возможно, следующий тик мотора сдвинется по времени. От экрана отказаться(?)
Использую в похожей задаче (астротрекер с автогидированием) экранчик OLED I2C 128x64 - он отрабатывает медленно, и в процессе съемки таймер приходится выводить самым мелким шрифтом, раз в секунду, и максимально оптимизировать алгоритм вывода, чтобы укладываться в промежуток между тиками двигателя. В то же время подобные ухищрения на экранчике от Nokia 5110 не нужны - там интерфейс быстрый, и автор библиотеки дает примерно 50 fps при полной перерисовке всего экрана - похоже на правду (этот вариант использую с аналогичным трекеру скетчем, но уже на моторизованном ТАЛ-1).

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
укладываться в промежуток между тиками двигателя
Может, использовать TCNT1 - тики процессора?  Время тика процессора 16МГц с прескалером=1 получается  (1.0 / 16000000.0).
Я не знаю, можно ли сделать прерывание по накоплению нужного количества тиков?

Тогда экран выводится 1 раз в 1 секунду, кнопки опрашиваются 1 раз в 300мс, а моторы тикают по прерываниям от накопления тиков.

Оффлайн sleeping07

  • ***
  • Сообщений: 149
  • Благодарностей: 16
    • Сообщения от sleeping07
Я не знаю, можно ли сделать прерывание по накоплению нужного количества тиков?
Так в процедуре прерывания просто нужно считать количество таких прерываний (в глобальной переменной) и по накоплению нужного отрабатывать шаг двигателя.
Я делаю то же самое, только вообще без прерываний, в loop, за счетчик - время micros(), а частоты работы двигателя, парсинга последовательного порта, опроса ик-порта, вывода на экран определяют отдельные константы. Это если сами процедуры оптимизированы и помещаются внутрь цикла двигателя. С прерыванием, несомненно, решение более красивое.

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
за счетчик - время micros()
У вас timeMachine получается. https://github.com/musgravehill/bobGoTo/blob/master/stateMachine.ino 
В loop постоянно вызываем STATEMACHINE_loop(); - она по micros рассчитывает, когда подошло время нужного действия.

Кстати, что насчет ускорения\замедления моторов при быстром движении телескопа с пульта? Если телескоп 10кг, то не стоит сразу давать х1000 от звездной скорости.

В AccelStepper есть настройка ускорения\замедления.  http://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html#adfb19e3cd2a028a1fe78131787604fd1
1. движение с постоянной скоростью
2. gotoPosition(дельта шагов от текущих или абсолютное значение шагов) с ускорением\замедлением
3. счетчик шагов signed long, минус против часовой, плюс - по часовой.

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
Если сделать микрошаг 1\32 и в программе считать эти микрошаги, то возникает проблема при быстром наведении:
мотор делает микрошаги между двумя устойчивыми положениями, мы переводим драйвер в полный шаг и даем команду двигаться.
Тогда мотор проскочит N микрошагов. В счетчике микрошагов будет накопление ошибки:
countMicro32Steps +=  32*countFullSteps ± N micro32steps потерянных.

Не было печали..

Получается, надо
1. доходить микрошаги до устойчивого положения и стартовать полные шаги. И так же обратно.
2. ставить энкодеры
3. использовать микрошаг всегда, только давать до 1000 имп\с на шаговик для быстрого наведения. Остается надеяться, что звездная скорость потребует сильно меньше, чем 1000 имп\с - зависит от редукции.

Оффлайн sleeping07

  • ***
  • Сообщений: 149
  • Благодарностей: 16
    • Сообщения от sleeping07
использовать микрошаг всегда
У меня микрошаг 32 всегда, GOTO правда нет никакого, но ускоренное перемещение по Ra на 500х скорости вполне устраивает. Промредуктор 1:4, 100 зубьев червячная шестерня. Хотя, может такты и теряются - не проверял.

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
Алгоритм ведения и GOTO

RA тиков в секунду = тики звездной скорости ± тики GOTO
DEC тиков в секунду = ± тики GOTO
Если отрицательное значение, то DIR в обратную сторону.

Когда монтировка исполнила GOTO-задание, то
RA тиков в секунду = тики звездной скорости
DEC тиков в секунду = 0

так?

Расскажите, пожалуйста, как влияет положение частей монтировки (слева\справа от полярной оси) на ведение, какие еще есть тонкости..
Можно ли инициализировать монтировку, наведя телескоп на Полярную звезду или лучше брать другую точку..

Оффлайн TomCat

  • *****
  • Сообщений: 1 383
  • Благодарностей: 524
  • Денис
    • Instagram: dparyshev
  • Награды Призер конкурса астрофото
    • Сообщения от TomCat
Осталось дождаться заказанные месяц назад ролики на 60 зубов (маленькие уже стоят на 18), и буду двигаться дальше.

Не пришлось ждать месяц. Решил залезть на выходных и еще раз всё промерять. Выяснилось, что шкивы на 60 зубов не поместятся в CG-4. Поставил на 36 зубов, и маленькие пока на 18 (в пути шкивы на 16 зубов). Да и в такой конфигурации всё впритык - нижний шкив практически задевает ручку блокировки по Ra, а между шаговиками остался зазор в 3-4 миллиметра.
По Ra полностью собрал блок, по Dec не хватило длины ремня на 64 зуба, заказал на 70 зубов. Так что тесты откладываются еще недели на 3.
Для себя поменял цель  мероприятия. Изначально хотел приспособить доработанную монтировку под астрофотографию, но теперь думаю что обойдусь только GOTO для визуала на 150750  :(
мои фотографии https://www.astrobin.com/users/ParyshevDenis
allsky с моей удалёнки https://astrobackyard.kz/allsky/

Оффлайн -Dmitry-

  • *****
  • Сообщений: 1 133
  • Благодарностей: 164
  • Хорошо в Сибири летом — целый месяц снега нету!
    • Сообщения от -Dmitry-
Я тоже сначала 17-е моторы хапнул от жадности.  :facepalm: Оказалось, мои 8 кило на вилке и 11-е моторы отлично крутят.
Ньютон 250F4, Бино 150F54"МАК, Бино 96F6ED, Canon 10x42L IS, DVS-8-DK3/f/bw+Hα

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
Поставил Nema17 400 шагов\оборот.
Ременная передача 1\2.5

Микрошаг 1\32, конечно, хорош для звездной скорости.

Получается, на 1 оборот RA нужно тикать: 144 зуба_червя * 2.5 ремня * 400 шагов * 32 микрошагов = 4 608 000 тиков за сутки.
Другими словами, звездная скорость = 53 тика в секунду.

Ардуино позволяет тикать до 4000 раз в секунду.
Получается, скорость наведения будет больше звездной в 4000\53 = 75 крат.
Т.е. ось RA сделает оборот за 19 минут.  :'(
Какое долгое наведение, можно успеть вскипятить чай.

А если отказаться от микрошага при наведении, то потеряем часть микрошагов при инициализации наведения. Возможно, это не страшно - с пульта докрутим до точки.

На полном шаге RA крутится быстро, только успевай.


Оффлайн sleeping07

  • ***
  • Сообщений: 149
  • Благодарностей: 16
    • Сообщения от sleeping07
Получается, скорость наведения будет больше звездной в 4000\53 = 75 крат.
У меня тик при ускоренном движении 50 мкс, получается вчетверо больше. Правда, в основном цикле при ускоренном движении тики такие выдаю пакетами по 10 шт.

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
У меня тик при ускоренном движении 50 мкс
20 000 тиков в секунду?
Пишут, что AVR 16МГц дает не более 4 000 тиков в секунду, т.е. период тика 250мкс и более.

"А какой у вас тип самолета процессора?"*

* баян, когда истребителю дали позывной от пассажирского Аэробуса. Диспетчер просит увеличить высоту на 4 000 метров. Пилот через минуту рапортует, что всё готово. Диспетчер задумался и спросил то, что выше написано.  :D

Оффлайн sleeping07

  • ***
  • Сообщений: 149
  • Благодарностей: 16
    • Сообщения от sleeping07
"А какой у вас тип самолета процессора?"*
Так обычный ардуино нано. Я постепенно уменьшал длительность импульса, в итоге остановился на вполне приемлемой скорости вращения - лишь бы двигатель справлялся.
Процедура движения по оси Ra

void rewindsRa(int dir,int steps, int del){  //направление, число шагов, длительность импульса
  digitalWrite(PinDir, dir);
  while (steps>0) {
   digitalWrite(PinDr, HIGH);
   delayMicroseconds(del*50); 
   digitalWrite(PinDr, LOW);   
   steps--;
  } 
}

Вызов в случае ускоренного движения  -   rewindsRa(HIGH,10,1);  // 10 шагов подряд по 50 мкс

Онлайн Boris Green

  • *****
  • Сообщений: 1 424
  • Благодарностей: 69
    • Сообщения от Boris Green
Процедура движения по оси Ra

У меня

#define starSpeed_us_for_microtick  18699    // 1 тик за 18699 мкс
#define gotoSpeed_us_for_microtick  271       // 1 тик за     271 мкс

Разница звездной скорости и наведения в 69 раз. Получается, можно сделать наведение в 271 раз быстрее, и тикать каждые 69 мкс. ХМ!
Я хочу целочисленную кратность, чтобы координату RA крутить кратно int, а не float.

Оффлайн Iovch

  • *****
  • Сообщений: 1 306
  • Благодарностей: 124
    • Сообщения от Iovch
   Спасибо за исходный код, сижу ломаю голову.
Тот проект GOTO10 закончен. На его основе новый проект здесь: https://astronomy.ru/forum/index.php/topic,143891.msg3715787.html#msg3715787 Программы существенно переработаны. В теме все последовательно изложено. От простейшего трекера до управления альт-азимутальной монтировкой. Этот проект открыт для обсуждения/дополнения/развития, только сейчас тайм-аут взял: доконал меня азимутальный скетч, немного подташнивает от программирования  :) !
« Последнее редактирование: 04 Окт 2016 [16:01:45] от Iovch »
Ньютон SW150/750, Рефрактор триплет 100/365_H/M, CG4_GoTo_H/M, Datyson T7C, Levenhuk T510NG, Canon 450Da, БП2 10х50 Berkut

Оффлайн Serj

  • *****
  • Сообщений: 4 581
  • Благодарностей: 95
    • Сообщения от Serj
    • Тверской астроклуб
Цитата: Boris Green link=topic=137688.msg3803700#msg3803700
"А какой у вас тип самолета процессора?"*

Тут видимо дело принципа - сделать сверхзвуковой кукурузник.
We have met the enemy and he is us.