(Prawie) Uniwersalny Sterownik napędów DIY

Postxooon | 27 Lut 2024, 22:40

Postanowiłem po raz kolejny zmierzyć się z tematem sterowania amatorskim montażem, trochę z chęci ponownego sprawdzenia się w temacie ale głównie z powodu lepszego poznania modułu procesora ESP32.

Nie będę tu rozpisywał się szerzej na temat tego procesora i raczej skupię się na jego działaniu w sterowniku ale dla porządku podam kilka podstawowych danych:
- procesor ma dużą pamięć operacyjną (kilkaset kB) oraz pamięć trwałą (do kilku Mb)
- system pracuje z zegarem 160MHz i ma koprocesor numeryczny(!)
- moduł ma więcej niż podstawowe peryferia ułatwiające dołączenie urządzeń zewnętrznych
- procesor jest łatwo programowalny za pomocą elementarnych narzędzi (np. edytor tekstu) z pomocą python-a
- moduł jest tani, tanie są również peryferia
Chętnie opowiem o szczegółach technicznych procesora zainteresowanym na zasadzie kontaktu bezpośredniego, podkreślę tu jedynie, że wszystkie pliki programu i danych to pliki tekstowe.

W temacie "siedzę" od dłuższego czasu i choć nie mam żadnej presji terminowej to doszedłem do wniosku, że rezultaty jakie osiągnąłem pozwalają na zaprezentowanie wyników chyba ponad dwustu godzin prac projektowych, programowania i testów.

Będę też próbował opisać rozwiązania jakie zastosowałem w oprogramowaniu w ścisłym powiązaniu z głównym "winnym" czyli mechaniką nieba i jego śledzeniem. Nie będą to prawdopodobnie omówienia modułów programu lecz bardziej sugestie co i w jaki sposób należy uwzględnić w programie o ile ktoś zainspiruje się sam tym tematem i podejmie swoją próbę rozwiązania.

Na razie system jest w stanie kontrolować napęd paralaktyczny (lub platformę paralaktyczną), umie odnaleźć Słońce i wszystkie planety, ma bazę danych gwiazd (ok. 3900 obiektów) o jasności do 6 wielkości i deklinacji do -40 stopni, ma bazę danych dso (ok. 5500 obiektów) o jasności do 10 i również o deklinacji do -40 stopni. Wyszukiwanie obiektów oparte jest na potocznych nazwach gwiazd (tych jaśniejszych) lub ds-ów lub z użyciem nazwy katalogowej HIP dla gwiazd i NGC dla dso.
Sterowanie pozwala na niezależne ustawienie parametrów sterownia dla kanałów Ra i De w zakresie od 1.2 arcsec/krok do ok. 0.05 arcsec/krok. Działa guide w obu kanałach w systemie ST4 oraz mikrokroki do ręcznej korekty położenia. Prędkość sterowania w trybie goto pozwala nawet na ponad tysiąckrotną wartość prędkości sideralnej (kilka stopni/sek)
Do zrobienia zostało sterowanie napędami azymutalnymi (dobson), poprawienie sterowania ręcznego, edytor bazy danych własnych obiektów.

Rozważam prośbę o pomoc w testowaniu sterownika na zasadach jakie podam nieco później. Liczę tu na kolegów mogących wprost zastosować sterownik do własnoręcznie wykonanych lub modyfikowanych montaży.

Na początek krótka prezentacja działającego już prototypu:

Image

Komplet urządzeń składa się z pilota i modułu połączeniowego. Pilot zawiera procesor, wyświetlacz 2x16, zegar, klawisze i sterowniki silników krokowych obu osi. Moduł połączeniowy, łączony kablem (15 przewodów) z pilotem zawiera głównie gniazda oraz dodatkowo może posiadać optoizolację guide. System pracuje z guide w standardzie ST4 za pomocą gniazda RJ45, które może być połączone wprost np. do kamery guide z portem ST4. Podobne złącza zostały użyte dla połączeń z silnikami krokowymi obu osi. W dalszej części opisu oszacuję koszt wykonania obu elementów systemu sterowania.

Image

Działający pilot wyświetla podczas śledzenia nazwę obiektu oraz jego bieżące lokalne położenie (azymut i wysokość) ale możliwy jest wybór innego obiektu z bazy planet, gwiazd lub DSO oraz wykonanie skoku goto.

Image

Image

Image

Tu pokazałem główne składowe pilota i wygląd elementów po zmontowaniu. Montaż drukowany powoduje, że całość jest stabilna dzięki temu można było skupić się głównie na problemach z oprogramowaniem.
Zleciłem wykonanie obudów zarówno dla pilota jak i dla modułu połączeniowego i jak nadejdą to się pochwalę ale na razie muszą wystarczyć zdjęcia "gołych" urządzeń.
cdn....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 29 Lut 2024, 12:19

Kilka dodatkowych danych na temat urządzenia:

Image

To wymiary płytek, urządzenia w obudowie będą kilka mm większe.

Schemat pilota
Schemat modułu połączeniowego

http://lx-net.pl/starch/proba7.jpg
http://lx-net.pl/starch/proba6.jpg
http://lx-net.pl/starch/proba5.jpg
http://lx-net.pl/starch/proba4.jpg
http://lx-net.pl/starch/proba3.jpg
http://lx-net.pl/starch/proba2.jpg
http://lx-net.pl/starch/proba1.jpg

Tu kilka linków do moich prób projektowych. Polecam wszystkim tą metodę aby przed zleceniem wykonania na zewnątrz detalu sprawdzić jak będzie prawdopodobnie wyglądał w naturze używając tanich materiałów i substytutów. Tu akurat robiłem próby z użyciem kartonu.

Koszt wykonania pilota bez obudowy:
- płytka ok. 15PLN
- procesor ESP32 ok. 27PLN
- wyświetlacz ok. 20PLN
- zegar RTC ok 5PLN
- sterowniki silników krokowych ok. 2x15PLN
- przyciski ok. 6x5PLN
- gniazda, diody, inne ok. 10PLN
===================================
łącznie ok. 150PLN

Koszt wykonania modułu połączeniowego:
- gniazda ok. 4x5PLN
- konwerter DC/DC ok. 20PLN
- płytka ok. 11PLN
- inne ok. 10PLN
===================================
Łącznie ok. 61PLN

Koszt kabla połączeniowego to ok. 35-40PLN.
cdn.....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 01 Mar 2024, 15:35

Dostałem elementy na obudowy urządzeń.

Image
Obudowy zrobione są z laminatu co pozwala je złożyć jak "puzzle" przez lutowanie

Pora na szybkie przedstawienie podstawowych funkcji sterownika.

Image
Po włączeniu ekran pokazuje bieżącą datę i czas, rozbieżności można skorygować w procedurze setup.

Image
Główny ekran zawiera cztery pozycje ale w zasadzie tylko dwie z nich są aktywne: Run (śledzenie, goto) i Obj (dostęp do bazy danych obiektów). Odpowiedni wybór wykonuje się za pomocą klawiszy poziomych a zatwierdza klawiszem środkowym. Wskaźnikiem aktywnej pozycji menu jest kursor.

Image
Podstawowy tryb to śledzenie (+ goto) wybranego obiektu -> tu obiektem jest Słońce, dolna linia pokazuje aktualny azymut i wysokość obiektu w stopniach.

Image
Przewiduję możliwość skorzystania z czterech baz danych:
PLA -> planety + Słońce
DSO -> obiekty dso identyfikowane przez nazwę własną lub numer NGC,
STA -> katalog kilku tysięcy gwiazd identyfikowanych nazwą własną lub przez numer w katalogu HIP oraz
OWN -> to baza własnych obiektów (ta funkcjonalność nie jest jeszcze działająca)

Setup wejście
Setup pozwala na ustawienie wszystkich niezbędnych i pomocniczych danych niezbędnych do sterowania i zawiera kolejno:

Image
Ustawienie miesiąca
Ustawienie dnia
Ustawienie godziny
Ustawienie minuty
Datę i czas można skorygować w górę i dół za pomocą klawiszy pionowych a wybór zatwierdza się klawiszem środkowym co dodatkowo przenosi program do kolejnej pozycji setup.
Kolejne pozycje setup to:

Ustawienie różnicy czasu względem GMT
Ustawienie typu montażu

Ustawienie wartości przekładni w osi Ra
Ustawienie wartości przekładni w osi De
Przekładnia dla każdej osi może być różna i ona decyduje o precyzji prowadzenia. Dla przykładu przekładnia o wartości 2000000 to krok sterownia ok. 360*60*60/2000000=0.648arcsec/krok

Ustawienie prędkości skoku goto w osi Ra
Ustawienie prędkości skoku goto w osi De
Prędkość skoku (slew) decyduje o szybkości z jaką montaż będzie wykonywał przesunięcie od obiektu do obiektu. Ten parametr to wielokrotność prędkości nieba (ok. 15.041 arcsec/sek) i dla przykładu dla wartości 400 dla osi Ra skok goto będzie wykonywany z prędkością ok. 400*15.041arcsec/sek czyli ok. 1.67stopnia/sek

Ustawienie długości geograficznej miejsca obserwacji
Ustawienie szerokości geograficznej miejsca obserwacji
Położenie ustalone jest z dokładnością 1/1000 stopnia czyli ok. 111m.

Ustawienie czułości guide Ra
Ustawienie czułości guide De
Podczas guide w osi Ra należy przyspieszyć lub spowolnić napęd. Ten parametr ustawiany w zakresie 1-1.5 pokazuje w jakiej proporcji prędkość nominalna będzie zwiększona lub zmniejszona.

Informacja o zakończeniu procedury setup
Po zakończeniu ustawień należy zrobić "hard reset" systemu za pomocą zasilnia. Po wznowieniu pracy system będzie działał z nowymi ustawieniami.

Zmiana przekładni Ra z ok. 4000000 na 8000000
Zmiana długości geograficznej
Z tego rozwiązania jestem szczególnie zadowolony bo za pomocą dość prostych środków udało mi się zapewnić w miarę szybką zmianę wartości w dużym zakresie. Przyciśnięcie klawisza strzałki w pionie powoduje zmniejszenie lub zwiększenie wartości a kolejna dziesiąta zmiana zostaje przeniesiona w prawo co oznacza zwiększenie skoku zmian 10-cio krotnie itd aż do zwolnienia klawisza.

Wyszukanie w bazie DSO M57 za pomocą nazwy własnej
Do wyszukiwania obiektów w bazach można używać nazw katalogowych (NGC dla dso i HIP dla gwiazd) ale można również szukać po nazwach własnych i wystarczy do tego dowolna część nazwy. Dla niekompletnej nazwy system pokaże kolejno znalezione nazwy pasujące do wzorca a jeśli wpisana nazwa jest pełna to wyszukiwanie jest jednoznaczne. Nazwy przed zatwierdzeniem można korygować kasując ostatni znak.


A na koniec tego posta kilka filmów:
Skok goto z M31 do Jowisza
Skok goto ze Słońca do gwiazdy Polarnej
Skok goto z Jowisza do Słońca
W tle obrazu słychać silnik osi De. Na razie mam jeden prowizoryczny napęd do testowania, który przełączam pomiędzy osiami w zależności od potrzeby. Podczas skoku goto widoczna jest w prawym górnym rogu klepsydra, która jest aktywna dopóki trwa skok goto. Stąd czasem jej aktywność pomimo ustania ruchu w osi De, pewnie w dalszym ciągu trwa ruch w osi Ra. Po zakończeniu skoku pojawiają się nowe współrzędne azymutalne obiektu i można dostrzec zmiany zarówno dla azymutu jak wysokości - to efekt przejścia w tryb śledzenia z prędkością nominalną nieba i gotowością do kolejnego skoku goto.
cdn ....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 05 Mar 2024, 12:59

Kończąc prezentację dotyczącą podstawowych funkcji urządzenia chciałbym pokazać jaka jest szybkość wyszukiwania obiektów w bazie danych.
Największą bazą jest baza dso zawierająca ponad 5500 obiektów głębokiego nieba.

Image
Na zdjęciu wyróżniłem podkreśleniem linie pokazujące ilość obiektów w bazie, pierwszy obiekt oraz ostatni obiekt w tej bazie. Baza jest ułożona w przybliżeniu z obiektami uszeregowanymi z narastającą wartością Ra od 0 do 23 (dla każdej grupy nazw np. Ic, Ngc itd.) Ostatni z obiektów w bazie ma nazwę Ter8 oraz współrzędne Ra=19.696 i De=-34.0 (wartość 12.4 to jasność obiektu ale nie ma znaczenia przy pracy programu). Film pokazuje wybór obiektu z bazy oraz czas niezbędny do przejrzenia wszystkich linii aby znaleźć ten obiekt. Algorytm wyszukiwania po prostu przeszukuje dane linia po linii.
najdłuższe wyszukiwanie
Czas wyszukiwania nie jest większy niż 15sek co daje prędkość ok. 370 linii (obiektów) na sekundę.

Image
Tu widać zawartość bazy danych gwiazd. Jak wspominałem baza oparta została na katalogu HIP ale zawiera również nazwy własne dla jaśniejszych gwiazd i dla przykładu wyliczyłem wszystkie gwiazdy (w tej bazie oczywiście) posiadające nazwy własne zaczynające się na literę "M". Wyszukiwanie obiektów możliwe jest zarówno po nazwie własnej jak i po nazwie katalogowej HIP.

Image
Oddzielną bazę danych stanowią planety. To obiekty, które dość szybko przesuwają się po niebie i wymagają wyliczenia Ra i De przed każdą obserwacją. Opiszę to dokładniej podczas analizy programu.

*************************************************************************************************

Oprogramowanie napisane zostało w języku python, który jest otwartą platformą pozwalającą na tworzenie bardzo złożonych aplikacji za pomocą względnie prostych i dostępnych narzędzi a sam język jest bardzo intuicyjny. Ja używam do programowania aplikacji uPyCraft i/lub Thonny - obie aplikacje są dostępne zarówno na platformie Windows jak i Linux i są oczywiście bezpłatne. Programy napisane w jezyku python to pliki tekstowe, dane używane przez program to również pliki tekstowe.

część mojego programu astro.py napisanego w python-ie

Image
Ten obraz pokazuje wszystkie (obecnie) pliki oprogramowania oraz danych jakie wgrałem do procesora ESP32. Pliki .py to programy, pliki .txt to pliki z danymi.
Programy i2c_lcd.py, lcd_api.py oraz ds1302.py to zewnętrzne, darmowe biblioteki do obsługi wyświetlacza i modułu zegara RTC.
Wspomniane wcześniej pliki tekstowe sta2.txt, pla2.txt,dso2.txt to bazy danych obiektów nieba przygotowane przeze mnie (na podstawie znacznie bardziej obszernych w dane) dostępnych baz w internecie..
Mój największy wkład to pliki setup.py (ustalenie konfiguracji), intro.py (wyliczenie pozycji słońca i planet) oraz astro.py (sterowanie montażem). Planuje dorobić dodatkowo mały program do budowy własnej bazy danych oraz program do testowania napędu gdzie będzie można na przykład wykonać określoną ilość obrotów silnika lub wykonać ruch o określoną wartość w osi Ra lub De co będzie pomocne przy sprawdzeniu i identyfikacji parametrów montażu DIY.

Image
Plik astro.txt to plik konfiguracyjny zawierający dane na temat montażu (typ, przekładnie, parametry guide, prędkość) i dane o miejscu obserwacji łącznie z określeniem strefy czasowej. Te dane ustalane są za pomocą programu setup.py
cdn...

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 06 Mar 2024, 14:12

Zanim zacznę omawiać algorytmy użyte w moim systemie sterowania podam główne źródło na jakim opierałem się w swoich pracach oraz wyjaśnię niezbędne pojęcia z jakimi spotykamy się przy konstrukcji sterownika:
Podstawy teoretyczne
Przykłady obliczeń do testowania programu

Ruch obiektów na niebie jest bardzo złożony ale podane wzory są na tyle dokładne, że są wystarczają w zupełności do celów zastosowań amatorskich. Autor (Paul Schlyter, Stockholm, Sweden) zastosował uproszczenia dokładnych procedur aby uzyskać dokładność położenia planet ok. 2' łuku.

Image
Pierwszym ważnym pojęciem jest tzw sideral time (czas gwiazdowy). Rysunek pokazuje różnicę między czasem gwiazdowym a czasem słonecznym - czyli tym jakim posługujemy się na co dzień za pomocą zegarka.
Załóżmy, że obserwujemy położenie Słońca (lub widocznej dokładnie za nim gwiazdy) będąc na Ziemi w punkcie O, dokładnie w południe kiedy Ziemia znajduje się w położeniu P1 na orbicie. Jeśli Ziemia wykona pełny obrót o 360 stopni to gwiazda (znajdująca się nieskończenie daleko w stosunku do Słońca) w dalszym ciągu będzie widziana w tym samym miejscu na niebie ale Słońce będzie znajdować się nieco na prawo (patrząc na południe). Słońce znajdzie się dokładnie na południe około 4 minuty później kiedy punkt O obróci się do położenia linii purpurowej. . Odpowiada to różnicy ok. 1 stopnia na niebie. Tak więc, jeśli każdego dnia będziemy obserwować Słońce w południe to ta sama gwiazda leżąca w oddali będzie każdego dnia zmieniać względem Słońca położenie o ok. 1 stopień. W ten sposób niebo i jego obiekty powoli zmieniają swoje położenie wędrując pozornie z zachodu na wschód (na półkuli południowej jest oczywiście odwrotnie).
Dokładniej mówiąc, doba słoneczna to 24 godziny a doba gwiazdowa to "tylko" 23h56:4.0905. Gwiazdy widzieć będziemy więc okresowo w tym samym miejscu co 23h56:4.0905 i taki okres czasu musi uwzględniać program określający położenie obiektu na niebie.

Najprostszy algorytm sterowania dla montażu paralaktycznego zapewniający śledzenie obiektu powinien więc wyglądać następująco:
1. Ustaw w przestrzeni montaż paralaktyczny (np. metodą na Gwiazdę Polarną (GP) i/lub dryft)
2. Wyszukaj na niebie obiekt do obserwacji
3. Obracaj montażem w osi Ra tak aby pełen obrót montażu wynosił 23h56:4.0905 (86164,0905 sek) czyli z prędkością kątową 360stopni/86164.0905sek = 15,041068646 arcsec/sek.

Punkt 3. można zrealizować na wiele sposobów ale bardzo popularna metoda to użycie silnika krokowego z przekładnią zębatą oraz dodatkową przekładnią w samym montażu. Popularne montaże EQ3 mają:
- silnik krokowy z krokiem 7.5 stopnia czyli na pełny obrót trzeba zrobić 360/7.5 = 48 kroków
- sterowanie półkrokowe co efektywnie zmniejsza krok o połowę a więc na pełny obrót silnika należy wykonać 96 kroków
- przekładnię zębatą silnika 1:120
- przekładnię montażu w osi Ra = 1:144
Łączna przekładnia takiego napędu wynosi 96*120*144 = 1658880 co powoduje, że krok sterowania to 360*60*60/1658880 = 0,78125 arcsek/krok
Aby więc taki montaż nadążał za niebem potrzeba aby wykonał 15,041068646 arcsec/sek / 0,78125 arcsek/krok = 19,252567867 kroków/sek
Taki napęd nie wymaga oczywiście skomplikowanego rozwiązania sterującego, wystarczy generator z częstotliwością ok. 19.25Hz. Taki generator będzie jednak niezbędnym wyposażeniem pełnego systemu goto w trybie śledzenia.
cdn...

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 07 Mar 2024, 15:00

Kolejne ustalenie w budowie sterownika napędu dotyczy czasu.
Czas nie ma początku i końca dlatego przyjęto pewien moment w historii, pewien punkt odniesienia, jako południe 4713 roku pne dla południka zerowego (Greenwich). To umownie rok zerowy. Dziś (07.03.2024 o 12:00) mamy tzw. dzień juliański (JD) 2460377.0, w roku 2000, pierwszego stycznia o północy był dzień juliański (JD) 2451544.5. Ta ostatnia data jest o tyle istotna, że względem niej definiuje się położenie obiektów w bazach danych. Położenie wielu obiektów na niebie ustala się na podstawie znajomości bieżącego dnia względem punktu odniesienia i w podanym wyżej opracowaniu niezbędna jest znajomość zmiennej d - czyli różnicy pomiędzy dniem obecnym a 01.01.2000 0:00:00 czyli d = JD - 2451543.5 lub znając bieżący dzień (D), miesiąc (M) oraz rok (Y) liczonej jako:
d = 367 * Y - (7 * (Y + ((M+9)/12))) / 4 + (275 * M) / 9 + D - 730530
Do wyliczenia zmiennej d pomocny jest zegar czasu rzeczywistego a więc korzystne jest aby sterownik zawierał taki zegar działający także kiedy sterownik jest wyłączony.

Kolejnym istotnym pojęciem jest sideral time. Sideral time to odległość w czasie od południka zerowego (Greenwich) do południka miejsca obserwacji a więc z uwzględnieniem długości geograficznej miejsca obserwacji liczony dla punktu przesilenia wiosennego. W chwili przesilenia wiosennego sideral time dla południka zerowego ma wartość zero i w tej samej chwili sideral time w miejscu obserwacji to po prostu różnica w szerokości geograficznej między południkiem zerowym a miejscem obserwacji - czyli po prostu długością geograficzną wyrażoną w jednostkach czasu (15 stopni szerokości to 1 godzina bo 360/24=15). W każdej innej chwili lokalny sideral time to:
sidt = sidt0 + time + szerokość_geograficzna_miejsca_obserwacji -> sidt0 to sideral time na południku 0, time, to lokalny czas HH:MM:SS a szerokość geograficzną należy wyrazić w jednostkach czasu (szerokość/15). Znajomość [b]sideral time
jest niezbędna do określenia najbardziej bieżącego położenia obiektu i należy liczyć go możliwie często, na przykład co 1 sek aby dane o obiekcie były aktualne. Tu również widać niezbędność działania zegara czasu rzeczywistego podającego lokalny czas na żądanie algorytmu sterowania.

Do kompletu danych niezbędnych do sterowania potrzebna jest znajomość położenia obiektów na niebie.

Image
Takie dane zawierają bazy danych obiektów nieba (poza Słońcem i planetami) bo można założyć, że ich położenie zmienia się nieznacznie w czasie. Zwykle bazy tworzone są dla określonego momentu w czasie a ostatnio obowiązujące mają odniesienie do punktu równonocy wiosennej w roku 2000 i oznaczane jako J2000. Punkt równonocy wiosennej to miejsce przecięcia ekliptyki (pozornej orbity Słońca względem Ziemi) oraz równika gwiazdowego (prostopadłego do osi N-S przechodzącej przez gwiazdę polarną).
Bazy danych dla obiektów nieba zawierają wiele danych ale z punktu widzenia sterowania najważniejsze to rektascencja (Ra) i Deklinacja (De). Rektascencja to odległość do obiektu liczona wzdłuż równika niebieskiego wyrażona w jednostkach czasu (1 godzina = 15 stopni) od punktu równonocy). Rektascencja przyjmuje wartości od 00:00:00 do 23:59:59. Deklinacja to odległość obiektu od równika w kierunku bieguna niebieskiego wyrażona w stopniach. Na równiku deklinacja jest równa zeru, w kierunku Gwiazdy Polarnej wzrasta do 90 stopni a w kierunku niebieskiego bieguna południowego maleje do -90 stopni.
Dane w bazach J2000 mówią, że gdybyśmy w momencie równonocy wiosennej w roku 2000 obserwowali niebo na południku zerowym (Greenwich) to każdy z obiektów leżałby dokładnie w miejscu określonym przez tą bazę. W chwili obecnej, znając ilość dni jakie upłynęły od momentu utworzenia bazy, aktualny czas oraz odległość od południka zero (szerokość geograficzną) jesteśmy w stanie znaleźć każdy obiekt na podstawie jego położenia w roku 2000.

Znając bazę danych obiektów nieba szybko można się zorientować, że przesunięcie z jednego obiektu na inny wymaga zawsze takiego samego ruchu. Dla przykładu pokazałem na rysunku dwie gwiazdy o współrzędnych S1: Ra1 = 6h33'30" i De1 = -15 34'20" oraz S2: Ra2 = 9h20'30" i De2 = 45 34'23". Aby przejść z obiektu S1 do S2 należy wykonać ruch wzdłuż równika niebieskiego o deltaRa = R2 - R1 = 2h47'0" oraz wzdłuż południka niebieskiego o deltaDe = De2 - De1 = 61 04'43".
Ponieważ montaż paralaktyczny zorientowany jest zgodnie z równikiem niebieskim (oś Ra) to w naturalny sposób przejście od S1 do S2 wymaga obrotu montażu dla współrzędnej Ra o deltaRa i pochylenia teleskopu dla współrzędnej De o deltaDe.

Można się więc pokusić o zarysowanie algorytmu goto dla montażu paralaktycznego "znającego" położenie obiektów na niebie:
1. Ustaw w przestrzeni montaż paralaktyczny (np. metodą na Gwiazdę Polarną (GP) i/lub dryft)
2. Wyszukaj na niebie obiekt do obserwacji -> S1
3. Zapamiętaj dane Ra1 i De1 obiektu S1
4. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S1
5. Wyszukaj w bazie dane Ra2 i De2 dla obiektu S2
6. Oblicz różnice deltaRa = Ra2 - Ra2 oraz deltaDe = De2 - De1
7. Obróć montaż wokół osi Ra o wartość deltaRa i pochyl teleskop o wartość deltaDe
8. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S2

Niestety, czas potrzebny na zmianę położenia od S1 do S2 może wynosić od kilku sekund do kilku minut ( co zależy od prędkości działania napędów dla każdej z osi) i w tym czasie obiekt S1 będzie podążał na niebie z prędkością ok. 15arcsec/sek więc kiedy nasz teleskop wykona w końcu przesunięcie deltaRa to obiektu nie będzie już w tym miejscu. Zakładając, że czas potrzebny na przestawienie montażu o deltaRa to dt w sekundach to obiekt znajdzie się w odległości dt * 15.041 arcsec od miejsca skoku. Algorytm powienien więc to uwzględniać modyfikując deltaRa o ok. 15.041 arcsec na każdą sekundę ruchu lub dodając na końcu ruchu przesunięcie dt * 15.041arcsec. Ten drugi sposób jest nieco łatwiejszy do wykonania ale z kolei też wymaga czasu na wykonanie ruchu więc należałoby po raz kolejny badać czas jego trwania i dodać kolejne przesunięcie w osi Ra itd.

Skorygowany algorytm powinien więc być podobny do tego opisu:
1. Ustaw w przestrzeni montaż paralaktyczny (np. metodą na Gwiazdę Polarną (GP) i/lub dryft)
2. Wyszukaj na niebie obiekt do obserwacji -> S1
3. Zapamiętaj dane Ra1 i De1 obiektu S1
4. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S1
5. Wyszukaj w bazie dane Ra2 i De2 dla obiektu S2
6. Oblicz różnice deltaRa = Ra2 - Ra2 oraz deltaDe = De2 - De1
7. Obróć montaż wokół osi Ra o wartość deltaRa i pochyl teleskop o wartość deltaDe, dodaj do deltaRa 15.041 arcsec na każdą sekundę ruchu w osi Ra
8. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S2

Opisany mechanizm nie wymaga dużych nakładów obliczeniowych, odległości między obiektami są ustalone w bazie i ruchy są dość proste do określenia. Ustawiając montaż paralaktyczny na znany obiekt S1 i mając zapewniony w osi Ra ruch z prędkością nieba (ok. 15.041 arcsec/sek) z łatwością można przesunąć się do obiektu S2 na podstawie jego znanych współrzędnych w bazie danych J2000. Nie jest na razie potrzebna znajomość ani daty juliańskiej, ani sideral time. Ustawienie montażu na znany obiekt, niejako z automatu zapewnia właściwy dobór tych parametrów, które i tak nie są potrzebne do zmiany położenia montażu na inny obiekt z bazy danych.

***********************************************************************************************************
Niestety, ten już i tak zawiły obraz muszę dodatkowo skomplikować następującymi uwagami:
- trzeba uważać wykonując obliczenia na współrzędnych De wyrażanych w stopniach, jeśli należy odjąć np. 12 26'52" to należy ze znakiem minus traktować każdą z frakcji a więc -12 -26' -26". Najłatwiej uniknąć problemów zamieniając zapis 12 26'52" na postać dziesiętną: 12+26/60+62/3600 = 12,450555556. Jeśli korzystamy z danych Ra w formie h:m:s to należy również przejść na postać dziesiętną dla ułatwienia obliczeń.
- korekta ruch w osi Ra o ok. 15.041arcsec na każdą sekundę łuku musi uwzględniać kierunek zmiany. Jeśli obiekt S2 ma Ra większe niż obiekt S1 to "gonimy" go i korekta musi być dodatnia ale jeśli ruch jest w kierunku mniejszych wartości Ra to obiekt S2 "biegnie" ku nam z dodatkową prędkością 15.041arcsec/sek i korekta deltaRa musi być ujemna w każdej sekundzie ruchu. Korekta w osi Ra musi zatem uwzględniać kierunek skoku.
- należy ostrożnie wyliczać dystans do pokonania dla obiektów Ra o dużej różnicy (>12h). Załóżmy, że S1 ma Ra=2h0'0" czyli dziesiętnie 2.0 a S2 ma Ra=23h0'0" czyli dziesiętnie 23.0 to skok z S1 do S2 wymaga deltaRa=23.0 - 2.0 = 21.0 (godzin) ale przecież odległość między tymi obiektami na okręgu to zaledwie 3 godziny.
Image
Na rysunku dla uproszczenia pokazałem tylko koło Ra (godzinowe) gdzie widać wyraźnie , że droga wzdłuż czerwonego łuku jest dużo dłuższa niż wzdłuż zielonego. Dlatego jeśli wyliczony dystans do pokonania jest większy niż 12 godzin (połowa okręgu) to należy skorygować wynik przez odjęcie wartości 24 oraz zmianę kierunku ruchu niż ten wynikający z początkowych wyliczeń.
Na tym samym przykładzie daje się wykryć kolejne utrudnienie dla algorytmu sterowania. Jeśli wyliczyć skok z S2 do S1 wtedy deltaRa = 2.0 -23.0 = -21.0 godzin. W tym wypadku należy przyjąć znak wyniku (-) jako kierunek przeciwny do kierunku obrotu nieba ale ostateczną wartość ruchu jako uzupełnienie do 24 godzin czyli: -21.0 + 24.0 = 3.0 (godziny).
cdn...

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 09 Mar 2024, 17:11

Jak dotąd nie było wyraźnej potrzeby aby wykorzystywać czas w obliczeniach ale dotyczy to tylko odległych obiektów, które w zasadzie nie zmianiają swojego położenia na niebie.
Inaczej jest dla Słońca, Księżyca i planet bo zmieniają one swoje położenie istotnie i niemal z dnia na dzień a w trakcie badania tego ruchu powstało wiele mniej lub bardziej udanych teorii ich mechaniki. Dla przykładu Słońce wykonuje roczną wędrówkę po niebie "odwiedzając" kolejne znaki zodiaku, bardziej oddalone planety wędrują po niebie wolniej ale nie można dla tych obiektów ustalić stałego położenia jak dla gwiazd i obiektów dso.
Podane wcześniej linki do opracowania Paul-a Schlyter-a to niezbędne uproszczenia dokładnych algorytmów stosowanych w zastosowaniach profesjonalnych ale zapewniające dokładności rzędu 2" co jest i tak mniejsze niż inne błędy np. w ustawieniu montażu.

Na szczęście, dla każdego z obiektów planetarnych i Słońca obliczenia są powtarzalne więc algorytm obliczeń można istotnie zautomatyzować i uprościć.

Image
Image
Image
Rysunki pokazują niezbędne wartości parametryzujące obliczenia oraz konkretne wartości dla Słońca i Jowisza. Jak widać, parametry te zależą bezpośrednio od wartości d czyli ilości dni jakie upłynęły od momenty J2000 dla którego budowane są bazy danych obiektów.

Mój algorytm, na podstawie znajomości aktualnej wartości d wylicza współrzędne Ra i De dla Słońca i planet, z wyjątkiem Księżyca i Plutona w procedurze intro.py. Analiza wykazuje, że jakkolwiek parametry te zmieniają się nieustannie, to dla potrzeb działania sterownika wystarczające jest aby policzyć je raz, właśnie podczas uruchomienia sterownika zachowując niezbędną dokładność sterowania.
Obliczenia dla Księżyca są na tyle skomplikowane a sam obiekt na tyle widoczny, że zdecydowałem się na razie nie robić dla niego obliczeń i nie ma go w bazie. Podobnie dla Plutona, który nie daje się objąć wspólnym algorytmem, jest on dla niego na tyle złożony , że na razie nie włączyłem go do modułu intro.py ale jak będę miał nieco więcej czasu to zapewne do tych obliczeń wrócę.

Reasumując, aby baza danych obiektów zawierająca niezmienne dane dla gwiazd i dso była pełna, niezbędne jest, jak u mnie, wyliczenie współrzędnych Ra i De Słońca i planet podczas startu sterownika lub, co trudniejsze i chyba niepotrzebne, obliczać te współrzędne z określoną częstotliwością (np. co minutę lub godzinę obserwacji). Tak więc, mój sterownik korzysta podczas pracy z trzech plików - baz danych zawierających współrzędne dla gwiazd i dso (niezmiennych) oraz z modyfikowanego podczas startu pliku danych dla planet i Słońca. Struktura tych danych jest identyczna dla każdego z tych plików co ułatwia późniejsze ich wykorzystanie.
Dodam, że początkowo należy wyznaczyć dane dla Słońca, które w późniejszym czasie są używane również dla obliczeń planet.
cdn....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 11 Mar 2024, 11:21

Tak więc, mając pełna informację na temat współrzędnych obiektów (tych stałych jak i tych zmieniających położenie) można pokusić się o poprawę algorytmu sterownia:

1. Uruchom system i wylicz na moment startu co najmniej współrzędne Ra i De dla Słońca i planet
2. Ustaw w przestrzeni montaż paralaktyczny (np. metodą na Gwiazdę Polarną (GP) i/lub dryft)
3. Wyszukaj na niebie znany (jasny) obiekt do obserwacji -> S1
4. Zapamiętaj dane Ra1 i De1 obiektu S1
5. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S1
6. Wyszukaj w bazie dane Ra2 i De2 dla obiektu S2
7. Oblicz różnice deltaRa = Ra2 - Ra2 oraz deltaDe = De2 - De1
8. Obróć montaż wokół osi Ra o wartość deltaRa i pochyl teleskop o wartość deltaDe, dodaj/odejmij do deltaRa 15.041 arcsec na każdą sekundę ruchu w osi Ra
9. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S2
10. Skocz do p.6 jeśli chcesz wykonać kolejny skok goto

Realizację p.1 algorytmu opisują zależności opisane przez Paul-a Schlyter-a i których nie przytaczam ze względu na większą przejrzystość opisu ale nadmienię tu jedynie, że najpierw należy wyliczyć parametry dla Słońca bo jeden z nich, tzw. lonsun (Sun longitude) używany jest następnie do wyliczenia współrzędnych Ra i De dla planet.

Ostatecznie więc dostajemy pełną bazę danych (w trzech plikach), w przybliżeniu nieruchomych obiektów nieba (gwiazd, dso, planet i Słońca). Po ustawieniu i synchronizacji montażu na znany obiekt S1 możliwe jest śledzenie i wykonywanie skoków goto.
Możemy nawet w przybliżeniu określić w jakiej stronie świata i na jakiej wysokości znajduje się obserwowany obiekt ale dokładną znajomość zarówno azymutu (Az) jak i wysokości (Alt) zapewni znajomość właśnie wspomnianego wcześniej sideral time, położenia geograficznego (długości i szerokości geograficznej) oraz nieco matematyki. Szczegóły tej operacji zawiera wspomniany wcześniej dokładny opis matematyczny i w razie potrzeby mogę zainteresowanym pomóc w jego interpretacji ale ważne jest zrozumienie, że układ obiektów na niebie (w przybliżeniu stałych w sensie Ra i De) podlega względnie szybkiej rotacji ze względu na obrót Ziemi. Dlatego współrzędne Az/Alt dla każdego z obiektów zmieniają się istotnie a dodatkowo szybkość tych zmian zależy od położenia obiektu na niebie. Ogólnie biorąc przejście z układu danych Ra/De na Alt/Az to w sensie matematycznym nieustanna rotacja współrzędnych powodująca, że obiekty na niebie leżące dokładnie na kierunku południowym (azymut 180 stopni) górują co oznacza również, że ich wysokość nad horyzontem (Alt) jest chwilowo największa z możliwych (i zmienia się dość wolno). Z drugiej strony, obiekty przecinające w swoim ruchu zenit poruszają się bardzo szybko (w teorii prędkość w zenicie jest nieskończona) co powoduje, że śledzenie obiektów za pomocą montaży Az/Alt jest utrudnione a sam algorytm sterownia nie jest banalny.
W każdym razie, sterownik powinien pokazywać aktualne położenie śledzonych obiektów w układzie azymut/wysokość a ze względu na szybką zmianę tych danych powinny one być odświeżane dość często (np. raz na sekundę). Dlatego punkt 9 algorytmu powinien być rozwinięty do postaci:

9. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S2
9a. Wylicz sideral time i dla jego nowej wartości wylicz azymut(Az) i wysokość(Alt) śledzonego obiektu
9b. Pokaz wyliczone wartości Az/Alt na wyświetlaczu
9c. Odczekaj np. 1 sek. i wróć do punktu 9a.

Czynność z p. 9 oraz 9c można wykonywać np. za pomocą opóźnienia w programie ale nie jest to praktyczny sposób kiedy chcemy aby system reagował jednocześnie na sterowanie i korektę ręczna położenia albo reagował na sterowanie guide. Nieco później pokażę jak wykorzystać do tego celu elementy funkcjonalne procesora (tzw. timer-y) w każdym razie wszystkie podstawowe funkcje systemu sterowania zostały osiągnięte: jest stała baza danych o obiektach (Ra/De), potrafimy wyliczyć sideral time a z jego pomocą pokazać bieżące współrzędne obiektu nad horyzontem.
cdn....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 13 Mar 2024, 11:14

Pozostało rozwikłać lakonicznie opisaną część procedury sterowania określonej jako "przesuń o deltaRa i/lub delta De". Pod tym skrótowym zapisem mieści się kilka obliczeń na etapie uruchomienia sterownika oraz bieżące obliczenia potrzebne do skoku goto.


Image
Wspomniany wcześniej plik konfiguracyjny astro.txt zawiera dane na temat możliwości dynamicznych napędu i na podstawie tych wartości wylicza podczas startu sterownika, kilka parametrów używanych później do bieżącego działania. Podane oznaczenia są oczywiście dowolne ale wyliczenie ich wartości jest niezbędne do dalszego prawidłowego działania programu.

Najważniejszy z nich to ra_g (ra_gear) oraz de_g (de_gear) czyli sumaryczne przekładnie dla osi Ra i De. Taka przekładnia jest iloczynem przekładni umownie zwanej elektryczną, w skład której wchodzi silnik krokowy oraz sposób jego sterowania oraz przekładni mechanicznej.
Podam to na przykładzie praktycznym mojego napędu: używam silnika z krokiem podstawowym 1.8 stopnia co daje 200 kroków na obrót (360/1.8=200), sterowanie jest mikrokrokowe z podziałem każdego kroku na 32 mikrokroki a przekładnia mechaniczna to ślimak o przełożeniu 625.
Łączna przekładnia wynosi więc ra_g = 200*32*625 = 4000000. Podobnie jest dla przekładni w osi De. Podane dane ra_g i de_g na zdjęciu są wprawdzie nieco inne bo robiłem w tym czasie drobne eksperymenty z prędkościami.

Znajomość przekładni pozwala na wyliczenie kroku sterowania ra_step i de_step jako:
ra_step = 360*60*60/ra_g = 360*60*60/4000000 = 0.324 arcsec/krok.
Podobnie wylicza się krok de_step - w tym wypadku przełożenie jest podobne i krok sterowania w osi De ma również wartość 0.324arcsec/krok
Nieco więcej na temat przekładni można znaleźć w opisie AstroPilota (http://lx-net.pl/astrop/astrop.php):
przekładnia mechaniczna
przekładnia elektryczna - silnik
przekładnia elektryczna - sterownik
Obliczona wartość kroku sterowania dla każdej osi używana jest później do wyliczenia niezbędnej ilości kroków jakie trzeba wykonać podczas skoku goto.

W podanym wcześniej przykładzie należy wykonać skoki goto o wartości deltaRa = 2h47'0" oraz deltaDe = 61 04'43". Ponieważ krok jednostkowy wyrażony jest w arcsec to na początek należy zamienić wszystkie dane na arcsec pamiętając, że 1h w osi Ra to 15 stopni a jeden stopień to 60*60 = 3600 arcsec.
Tak więc 2h42'0" to 2+42/60+0/3600 = 2.7h czyli 2.7 * 15 * 3600 = 145800 arcsec.
Podobnie 61 04'43" to 61+4/60+43/3600 = 61,078611111 stopni * 3600 arcsec czyli 219883 arcsec
A zatem w osi Ra należy wykonać 145800arcsec/0.324 arcsec/krok = 450000 kroków oraz 219883 arcsec/0.324arcsec/krok = 678651 kroków w osi De.

Drugą istotną rolę jaką odgrywa znajomość kroku sterowania w osi Ra jest sterowanie tej osi w trybie śledzenia. Ponieważ niebo obraca się z prędkością 15,041068646 arcsec/sek a krok sterowania w osi Ra to przykładowo 0.324arcsec/krok to częstotliwość sterowania w trybie śledzenia wynosi 15.041068646 arcsec/sek / 0.324arcsec/krok = 46.423051377 kroków/sek. Można to uzyskać z generatora o zbliżone częstotliwości. Oczywiście warto zapewnić możliwie dokładną częstotliwość sterowania ale na przykład zaokrąglenie tej wartości do 46.42Hz spowoduje w czasie godziny różnicę w prowadzeniu ok. 2.5' (minuty łuku). Jak widać nie absolutna dokładność ale raczej stabilność sterowania ma większe znaczenie.

Programując funkcję śledzenia należy więc zapewnić stałą częstotliwość sterowania w osi Ra ale raczej nie należy tego robić w głównej petli programu choćby przez odpowiednie opóźnienie bo trudno jest kontrolować stałość częstotliwości w czasie za pomocą prostej pętli a poza tym procesor w głównej pętli wykonywał by jedną czynność blokując inne funkcje. Dlatego do sterowania w funkcji śledzenia należy wykorzystywać tzw. timer-y czyli niezależne, funkcjonalne bloki sprzętowe procesora, które raz zaprogramowane zadaną częstotliwością odciążą procesor od tego zadania. Różne platformy programistyczne dla PC zapewniają z reguły do dyspozycji funkcję timer-a, robiąc program na mikroprocesor trzeba pamiętać o jego architekturze. ESP32 oferuje kilka timerów.

Znając częstotliwość sterowania dla osi Ra -> f_ra należy wyliczyć także częstotliwości sterowania w trybie guide. Dla osi Ra sterowanie na plus (+) oznacza przyspieszenie prędkości sterowania (f_ra_g_plus) a sterowania guide na minus (-) oznacza spowolnienie prędkości pracy (f_ra_g_minus). A zatem dla guide w osi Ra ruch odbywa się stale w tym samym kierunku choć z różną prędkością. W moim systemie można dobrać współczynnik ra_g oraz de_g w zakresie od 1 do 1.5 co oznacza, że częstotliwość dla osi Ra f_ra_g_plus = f_ra * ra_g oraz f_ra_g_minus = f_ra / ra_g. Dla osi De jest nieco inaczej bo zarówno sterowanie na plus i na minus powinno mieć wartość f_de_g = f_de * de_g a odpowiednią korektę uzyskuje się przez zmianę kierunku ruchu.

Kolejne parametry jakie zawiera plik konfiguracyjny astro.txt to maksymalne prędkości dla obu osi: mxra i mxde co oznacza, że w trybie skoku należy silniki obu osi sterować szybciej niż w trybie śledzenia do maksymalnej wartości ok. mxra * 15.041 arcsec/sek oraz mxde * 15.041 arcsec/sek. Ograniczenie prędkości wynika z fizycznych ograniczeń zarówno silników jak i samego montażu.

Plik konfiguracyjny astro.txt zawiera także położenie geograficzne miejsca obserwacji co ma bezpośredni wpływ na to co i gdzie na niebie będzie widoczne w chwili obserwacji a jest niezbędne do wyliczenia bieżących danych azymut/wysokość obserwowanego obiektu.

Reasumując, podczas startu systemu, poza wspomnianymi wcześniej obliczeniami dla współrzędnych Ra i De dla Słońca i planet należy wyliczyć również kroki sterowania dla każdej z osi a co za tym idzie także częstotliwość f_ra w osi Ra dla trybu śledzenia. Jeśli będzie działać guide to warto równie obliczyć częstotliwości sterowania dla guide a także maksymalne częstotliwości sterowania dla skoków goto.

Algorytm działania sterownika powinien więc być podobny do takiego:

1. Uruchom system i wylicz na moment startu współrzędne Ra i De dla Słońca i planet
1b. Wylicz kroki sterowania, oraz częstotliwości sterowania dla osi Ra i De, częstotliwości sterowania dla guide i maksymalne prędkości ruchu w trybie goto
2. Ustaw w przestrzeni montaż paralaktyczny (np. metodą na Gwiazdę Polarną (GP) i/lub dryft)
3. Wyszukaj na niebie znany (jasny) obiekt do obserwacji -> S1 i ustaw na niego montaż
4. Zapamiętaj dane Ra1 i De1 obiektu S1
5. Obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S1
6. Wyszukaj w bazie dane Ra2 i De2 dla obiektu S2
7. Oblicz różnicę deltaRa = Ra2 - Ra1 oraz deltaDe = De2 - De1, wylicz ilość kroków do wykonania dzieląc deltaRa i deltaDe przez wyliczone wcześniej wielkości kroków dla obu osi
8. Obróć montaż wokół osi Ra o wyliczoną ilość kroków w osi Ra i pochyl teleskop o wyliczoną wartość kroków w osi De, dodaj/odejmij do deltaRa 15.041 arcsec na każdą sekundę ruchu w osi Ra co oznacza, że trzeba dodać lub odjąć 15.04068646 / krok_ra (lub po prostu f_ra)
9. Po zakończeniu skoku goto ponownie obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S2
9a. Wylicz sideral time i dla jego nowej wartości wylicz azymut(Az) i wysokość(Alt) śledzonego obiektu
9b. Pokaz wyliczone wartości Az/Alt na wyświetlaczu
9c. Odczekaj np. 1 sek. i wróć do punktu 9a.
10. Skocz do p.6 jeśli chcesz wykonać kolejny skok goto

Image
A tak można pokazać schematycznie opisane elementy sterowania i ich oddziaływanie wzajemne.
cdn...

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 16 Mar 2024, 20:53

Biorąc pod uwagę automatyzm obliczania aktualnego położenia obiektu we współrzędnych Az/Alt oraz uzupełniając algorytm sterowania o guide należałoby doprecyzować w którym miejscu należy umieścić reakcje na sygnały korekcyjne:

9. Po zakończeniu skoku goto ponownie obracaj montażem w osi Ra tak aby prędkość obrotu wynosiła 15,041068646 arcsec/sek co zapewni śledzenie obiektu S2
9a. Wylicz sideral time (używając timer-a) i dla jego nowej wartości wylicz azymut(Az) i wysokość(Alt) śledzonego obiektu
9b. Pokaz wyliczone wartości Az/Alt na wyświetlaczu jeśli ostatnio wyliczone wartości są inne niż poprzednio
9c. Sprawdź czy pojawiło się żądanie korekty guide a jeśli tak to wykonaj korektę dla danej osi
9d. Wróć do punktu 9a.

====================================***=========================================

Napędy DIY mają często nietypowe lub niekonwencjonalne przekładnie napędowe co może stanowić trudność w określeniu rzeczywistej wartości takiej przekładni - może to dotyczyć choćby przekładni ciernych. Dlatego teraz zaproponuję kilka sposobów pozwalających na weryfikację działania sterownika. Oczywiście, trywialną metodą jest sprawdzenia jak działa montaż i sterowania na niebie. Wymaga to jednak ustawienia montażu, obserwacji nocnej i czasu. Jeśli napęd nie jest do końca gotowy to należy zastosować inne metody.

Podstawową metodą weryfikacji ruchu w osi Ra jest pomiar częstotliwości sterowania silnika krokowego w tej osi. Jak wyliczyć taką częstotliwość podałem wcześniej. Niestety, ta metoda wymaga posiadania częstościomierza lub oscyloskopu.
Najprostszą metodą badanie ruchu w osi Ra jest obserwacja tej osi w dłuższym okresie czasu. Należy uruchomić sterownik w trybie śledzenia obiektu, zaznaczyć położenie początkowe osi Ra odczekać pewien czas i odczytać ponownie położenie tej osi. Pamiętając, że niebo obraca się w przybliżeniu 15 stopni w ciągu godziny można po jedno lub dwugodzinnej obserwacji niezwłocznie stwierdzić, że ruch w tej osi jest zbliżony do założonego lub istotnie odbiega od założeń. Oczywiście oś Ra powinna posiadać skalę powiązaną z osią, wyskalowaną w stopniach (0-360) lub w godzinach (0-24). W pierwszym przypadku, po godzinie obserwacji obrót powinien wynosić ok. 15 stopni a w drugim przypadku jedną godzinę.
Dokładniejszą metodą pomiaru można zbudować z użyciem lasera zamocowanego na osi Ra i obserwując ślad lasera na odległej ścianie.

Image
Jeśli odległość r jest odpowiednio duża (co najmniej kilka lub nawet lepiej kilkanaście metrów) a l proporcjonalnie niewielkie to kąt o jaki przesunie się w czasie ślad lasera jest równy dl/r * 360/2/pi * 3600 (pi to ok. 3.141.., 360/2/pi to przeliczenie z miary łukowej na stopniową a 3600 to przeliczenie ze stopni na arcsek). Mierząc czas dt [sek] w jakim ślad lasera zmieni położenie o dl można powiedzieć, że dl/r * 360/2/pi * 3600 powinno być równe 15.04107 * dt [arcsek].

Testowanie obu osi można wykonywać także z użyciem generatora pozwalającego na generowanie odpowiedniej ilości impulsów. Pozwoli to na wykonanie ruchu o zadany kąt. W tym celu należy wyliczyć podstawowy krok sterowania dla każdej z osi zakładając znajomość silnika (ilość kroków), sterownika silnika (użyty mikrokrok) oraz przekładni mechanicznej. Chcąc wykonać zadaną zmianę należy wyliczyć ilość kroków dzieląc zadany kąt ruchu przez krok jednostkowy w tej osi. Najłatwiej jest ocenić ruch dla dobrze określonych kątów np 30,45,60,90 stopni. Przykładowo, obrót o 45 stopni wymaga wyliczenia ilości kroków jako 45*60*60/krok_sterowania przy czym krok sterowania trzeba wyrazić w arcsec/krok.
Dla podanego we wcześniejszych postach przykładu, gdzie wyliczony krok ma wartość 0.324arcsec/krok, wyliczenie da 45*60*60/0.324 = 500000 kroków.
Nie zawsze jest do dyspozycji generator pozwalający na generowanie zadanej liczby impulsów, dlatego napiszę moduł testujący, do którego będzie można wejść po starcie urządzenia, po czym możliwe będzie, na podstawie danych z pliku konfiguracyjnego, wykonanie odpowiedniego ruchu o zadaną ilość kroków lub zadany kąt.
Jeśli wykonany obrót jest inny niż założony to można łatwo przeliczyć korektę ustawienia przekładni i dokładność takiej korekty jest tym większa im większy był założony ruch. Załóżmy, że bieżąca przekładnia ma wartość 4000000 a po wykonaniu ruchu o 180 stopni rzeczywisty obrót wyniósł 184.5 stopni. Wtedy założona przekładnia jest za duża w proporcji 184.5/180 = 1.025 a skorygowana wartość przekładni powinna wynosić 4000000/1.025 = 3902439. Podobnie, jeśli napęd nie osiągnął 180 stopni a powiedzmy 179 stopni to współczynnik korekty wynosi 179/180 = 0.99(4) a przełożenie po korekcie 4000000/0.99(4) = 4022346. Po korekcie praca napędu powinna pokazywać mniejsze odchylenia od założonych ale można po raz kolejny skorygować przełożenia - tym razem o mniejsze wartości i zwykle 2 lub 3 takie korekty powinny być wystarczające.

====================================***=========================================
Image
Do testowania można użyć gotowego sterownika. Na zdjęciu pokazałem moją przekładnię testową z kołem o średnicy ok. 250mm (ok. 600 zębów) napędzanym śrubą M8 i silnikiem krokowym 200kroków/obrót. Na koło nakleiłem skalę w stopniach (0-360) i godzinach (0-24). Poniżej jest link do filmu, który pokazuje obrót koła w osi De z gwiazdy Rigel o współrzędnych Ra = 5.242h oraz De = -8.202 stopnia do gwiazdy Polaris o Ra = 2.53h oraz De = 89.264 stopni. Testowanie na danych Ra i De jest o tyle wygodne i zasadne bo po pierwsze zgodne z algorytmem sterowania a dodatkowo współrzędne te nie zmieniają się w czasie w przeciwieństwie do współrzędnych azymutalnych (Az, Alt).
Ponieważ koło ma zakres 0-360 stopni to współrzędna De = -8.202 stopnia dla Rigel ustawiłem na skali jako 351.8 (360 -8.2) a po wykonaniu skoku goto widać, że koło zatrzymało się w pobliżu wartości 89.2 stopnia

test skoku goto w osi De Rigel - Polaris
Przy okazji widać prędkość działania tego napędu, który ma ustawioną prędkość maksymalną na x800 a wnikliwe ucho zauważy również, że napęd startuje i rozpędza się a w końcowej fazie zwalnia stopniowo prędkość działania. Ten element również powinien być składnikiem algorytmu sterownika montażu ale dla większej jasności wywodu nie wspominałem o tym dotychczas.
Nie wspominałem również, że może okazać się korzystne odłączenie sterownika silnika w osi De po wykonaniu skoku goto i podczas śledzenia bo o ile sam sterownik z wyświetlaczem potrzebuje ok. 80mA do zasilania to każdy z silników pobiera, nawet w bezruchu, kilkaset mA. Silnik osi De zostaje odłączony od zasilania po upływie ok. 15 sekund w stanie jałowym oszczędzając prąd zasilania niemalże o połowę.

====================================***=========================================
Zamierzam zastosować pokazany napęd jak i sterownik z tego opisu w opisywanym już na tym forum napędzie podkowiastym.

Image
http://lx-net.pl/starch/mont02.jpg
http://lx-net.pl/starch/mont03.jpg
Tym razem zrobiłem dokładniejszy model montażu z kartonu (skala 1:5) i polecam tą metodę każdemu zajmującemu się projektowaniem złożonych struktur. Na modelu odkryłem istotną kolizję części ruchomych z nieruchomymi co pozwoliło na usunięcie kolizji na rysunkach wykonawczych. Z doświadczenia wiem, że nie da się do końca uniknąć mniejszych błędów w pierwszym podejściu choć mam nadzieję, że ich tez nie będzie ;-)

Na razie czekam na wykonanie niezbędnych elementów drewnianych i metalowych. Pokazany montaż działa w systemie paralaktycznym i dopasowany będzie do teleskopów o średnicy lustra ok. 200mm i długości od 800 do 1000mm więc pewnie kolejne informacje nie pojawią się szybko. Na razie zakończyłem opis sterownika montażu ale chętnie odpowiem na pytania dotyczące algorytmu, zastosowanych obliczeń lub inne związane z tematem.
Muszę również zacząć poszukiwanie tuby OTA ok. 200mm, najchętniej o ogniskowej 800mm (ewentualnie 1000mm) do pokazanego montażu i jeśli ktoś ma taką tubę do wypożyczenia/sprzedania to proszę o kontakt.
Chętnie nawiążę też kontakt z kolegami, którzy chcieliby i mieli techniczne możliwości do przetestowania sterownika na swoim montażu (paralaktyczny z silnikami krokowymi i przekładnią mechaniczną co najmniej 200).
cdn....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 18 Mar 2024, 15:45

Rozbudowę systemu o moduł testowy udało się zrobić szybciej niż planowałem :-)
Na szczęście udało się zastosować gotowe już porcje programu głównego, który zawiera już te elementy. Po odrzuceniu niepotrzebnych składników moduł testowania udało się przygotować jako oddzielny program wywoływany podczas uruchamiania sterownika.

Image
Na zdjęciu widać interface modułu, który jest najprostszy z możliwych. Górna linia dotyczy osi Ra, dolna osi De, dla każdej z osi można zmieniać jednostki sterowania silnikiem z godzin (Hr) na kroki (St) dla osi Ra oraz ze stopni (Dg) na kroki (St) dla osi De. Znaki "<" i ">" to kierunki ruchu - umownie ">" to ruch zgodnie z ruchem nieba dla Ra i w kierunku GP dla De a "<" to ruch w przeciwną stronę dla każdej z osi. Zmiana wartości przesunięcia działa tak jak pokazana wcześniej dla ustawień w procedurze Setup.

Wejście do modułu testowego i ustawienie parametrów testu
Test ruchu w osi Ra o 1h (15 stopni) oraz 20 stopni dla osi De

Na filmach pokazałem działanie modułu testowego. Pierwszy film pokazuje, że wejście do grupy poleceń opcjonalnych odbywa się za pomocą środkowego klawisza podczas startu urządzenia. Do dyspozycji jest właśnie moduł testowania Tst (nowy), moduł konfiguracji Set (istniejący), moduł edytora Edt (do napisania) oraz moduł wgrania wartości domyślnych Dft (istniejący).
Na drugim filmie pokazałem działanie silników dla obu osi z tym, że ruch wyskalowanego koła dotyczy osi Ra gdzie zadałem 1h przesunięcie (czyli 15 stopni). Dla silnika osi De zadałem 20 stopni i wprawdzie trudno ocenić czy ten ruch jest poprawny ale widać, że silnik ten zatrzymuje się nieco później niż silnik w osi Ra.
cdn...

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 23 Mar 2024, 20:55

Czekając na elementy montażu, które, mam nadzieję, wkrótce będą, zająłem się testowaniem algorytmu obliczania pozycji obiektów przez sterownik i korzystając z gotowych modułów programu napisałem prosty symulator położenia obiektów z ich wizualizacją. Program jest przeznaczony przede wszystkim dla obiektów szybko zmiennych (Słońce, planety) ale początkowo chodziło mi o zasymulowanie analemy Słońca w moim miejscu obserwacji.

Image

Więcej na ten temat można znaleźć w wątku uzyskane wyniki symulacji , w którym rozszerzyłem symulację o położenie planet wewnętrznych w relacji do Słońca.

Ale przede wszystkim zająłem się programowaniem brakujących modułów: szybkiego sterowania manualnego oraz edytora obiektów nie znajdujących się w istniejących już bazach.
Na filmie pokazuję jak działa tryb manualny . Do uruchomienia tego trybu użyłem nieczynnego do tej pory szóstego klawisza (Esc). W tym trybie następuje zatrzymanie automatycznego ruchu w osi Ra, pojawia się napis M1 i można klawiszami kierunku uruchamiać ruch dla danej osi i kierunku. Klawisz środkowy służy do zmiany prędkości tego ruchu sygnalizując zmianę napisem M2, M3. Zmiana jest cykliczna a odpowiadające komunikatom M1, M2 i M3 prędkości to odpowiednio 10x, 50x i 200x prędkości nominalnej (15.041arcsec/sek). Na razie dobrane mnożniki są arbitralne i będą wymagać sprawdzenia i ewentualnej korekty w przyszłości. Realizowany montaż podkowiasty ma napędy dość daleko oddalone od siebie co utrudnia odsprzęglenie napędów w celu szybkiego przestawienia montażu dlatego szybkie tryby manualne mogą ułatwić przestawienie bez konieczności odsprzęglania.
Powrót do śledzenia następuje po ponownym użyciu klawisza Esc.

Zbudowałem również moduł edytora własnej bazy danych obiektów nieba, która ma u mnie nazwę OWN. Ponieważ to program dodatkowy to wejście do niego, podobnie jak do procedury Setup i programu testującego odbywa się na początku działania sterownika i wymaga restartu urządzenia po zakończeniu edycji. Pierwszy film pokazuje wejście do edytora oraz podstawowe działania. Możliwe jest usunięcie istniejących już w bazie obiektów oraz dodanie nowych. Na razie mam w tej bazie kilka przypadkowych rekordów dla sprawdzenia pracy modułu. Film pokazuje dodanie obiektu o nazwie "Jen" (nic mądrzejszego nie przyszło mi do głowy przy nagraniu). Każdy nowy obiekt ma przypisane wartości domyślne Ra (12h) i De (60 stopni), które należy oczywiście zmienić na właściwe.
Na drugim filmie pokazałem, że nowy obiekt o nazwie "Jen" pojawił się w bazie OWN i jest możliwy do wyboru i śledzenia lub skoku goto.

W ten sposób, w zasadzie zrealizowałem założenia merytoryczne dotyczące sterownika. Pozostało teraz testować zachowanie sterownika, poprawić drobniejsze niedogodności i sprawdzić jak sterownik zachowa się z realnym montażem.
cdn....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 29 Mar 2024, 12:38

Mam pierwsze elementy z warsztatu i zacząłem montaż napędu.

Image
Początkowo zeszlifowałem i pomalowałem wszystkie elementy drewniane. Okazało się, że nie zamówiłem kilku istotnych detali a jeden jest juz do korekty :( .

Image Image
Image
Zacząłem montaż od stóp ustawionych na wahliwych wspornikach wkręcanych do wsporników w podstawie teleskopu.

Image Image
Montaż jest obliczony dla szerokości geograficznej 51 stopni ale dzięki regulacji wysokości stóp możliwe jest ustawienie go z łatwością co najmniej w zakresie 47 - 55 stopni (ok. 8mm różnicy w wysokości części północnej i południowej montażu) a z dodatkowymi podkładkami również w szerszym zakresie.

Czekam ciągle na elementy z metalu (osie, jarzmo teleskopu) ale w końcu cdn.... :)

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 05 Kwi 2024, 12:30

Mam już prawie wszystkie elementy i powoli zaczynam montaż co wiąże się z koniecznością dopasowania elementów, wprowadzenia poprawek w dokumentacji ale powoli sprawy posuwają się do przodu.

Image
http://lx-net.pl/starch/os_ra002.jpg
http://lx-net.pl/starch/os_ra003.jpg
Oś Ra składa się w zasadzie z trzech osi: centralnej i dwóch osi bocznych podpierających główne koło (podkowę).

Image
http://lx-net.pl/starch/os_ra02.jpg
http://lx-net.pl/starch/os_ra03.jpg
http://lx-net.pl/starch/os_ra04.jpg[url][/url]
Oś główna Ra wykonana jest ze stali i łożyskowana jest za pomocą łożysk osadzonych w wyfrezowaniach wspornika. Wspornik jest w dalszej kolejności skręcany a następnie osadzony w podstawie. W podobny sposób wykonane jest łożyskowanie wszystkich osi, których położenie ustalone jest przez wyfrezowania a sklejce a usztywnienie przez skręcenie lustrzanych połówek wspornika lub za pomocą dwustronnych nasadek.

Image
http://lx-net.pl/starch/osie_de02.jpg
http://lx-net.pl/starch/osie_de01.jpg
Osie De mocowane są w głównym kole (podkowie) napędu na podobnej zasadzie. Osie po uzupełnienia w łożyska wciskane są w wycięcia w kole a dodatkowo usztywnione w nim za pomocą dwóch nasadek z obu stron koła. Na razie nie montowałem jeszcze osi ale sprawdziłem, że nie ma tu chyba błędów w projekcie.

Image
http://lx-net.pl/starch/wsp_kola02.jpg
http://lx-net.pl/starch/wsp_kola03.jpg
Równolegle składam wspornik głównego koła (podkowy). Elementy wspornika wsuwane są jeden w drugi a następnie zostaną przykręcone do koła. W środkowej części widać miejsce gdzie wstawiana będzie główna oś Ra.

Image
Ostatecznie, wszystkie osie Ra we wspornikach zostają osadzone w podstawie. cdn.....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 10 Kwi 2024, 13:14

Złożyłem wstępnie napęd osi Ra i nie mogłem się powstrzymać aby sprawdzić jak działa.

Image
Na razie moduł napędowy jest jeszcze na "sznurkach" - przynajmniej jeśli chodzi o naciąg sprężyny dociskającej napęd :D
W linkach można obejrzeć napęd w działaniu. To ruch w osi Ra ze Słońca do Aldebarana lub odwrotnie - w azymucie to ok. 66 stopni ale realny ruch Ra to ok. 3.3h (około 50 stopni).

Aldebaran - Słońce 01
Aldebaran - Słońce 02 zbliżenie na napęd
Aldebaran - Słońce 03 - widok z boku

cdn....

xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Postxooon | 15 Kwi 2024, 12:31

Czekając na ostatnie elementy (jarzmo teleskopu i koło napędowe De) postanowiłem zastosować koło drewniane bez gwintu oraz jarzmo z grubego kartonu.

Image Image
Pozwala to na sprawdzenie czy zamówione elementy będą pasować do montażu oraz czy nastąpi jakaś oczywista kolizja podczas ruchu montażu

Dodatkowo przygotowałem kilka krótkich filmów pokazujących głównie ruch osi De - w tym wypadku ze Słońca na GP (Gwiazdę Polarną) i z powrotem. Drewniane koło nie na nacięcia gwintu więc działa jedynie wskutek tarcia gwintu śruby napędowej z powierzchnią boczną koła. Koło ma takie same wymiary jak koło rzeczywiste zrobione z poliwęglanu ale na jednym z filmów słychać jak śruba napędu trze o koło wywołując dodatkowe efekty dźwiękowe :)
Na razie wydaje się, że teoretyczne założenia są bardzo bliskie potrzebnym wymiarom i położeniom. Jarzmo będzie zrobione z blachy stalowej #2mm a na nim zamontuję obejmy teleskopu o średnicy ok. 200mm i wtedy dopiero okaże się czy wszystko pasuje do siebie.

ruch Słońce - GP 01
ruch Słońce - GP 02
ruch GP - Słońce 01

cdn....
xooon
 
Posty: 57
Rejestracja: 18 Maj 2017, 15:04

 

Użytkownicy przeglądający to forum: Brak zarejestrowanych użytkowników oraz 2 gości

AstroChat

Wejdź na chat