Skocz do zawartości

Tuning starego iOptron'a iEQ45 - enkoder na osi RA


zbuffer

Rekomendowane odpowiedzi

8 godzin temu, Behlur_Olderys napisał:

Elegancka robota.

Ciekawe jaką uzyskasz dokładność. 

Trzymam kciuki! 

Dzięki za miłe słowa!

 

Jeśli chodzi o dokładność to są dwa problemy. Po pierwsze poziom szumu samej analogowej części elektroniki i zastosowanie ADC wbudowanego w mikrokontroler. Jest to jedynie rozwiązanie tymczasowe ale chcę zobaczyć co z tego wycisnę. Po drugie, i tu mam większe obawy, brak bezpośredniej kontroli napędów i konieczność symulowania guidingu. Wiadomo, że nie przeskoczę tego jak zaimplementował to producent, a nie mam dobrych przeczuć… Dlatego nowa elektronika będzie pewnie nieunikniona, ale to da mi możliwość generalnego unowocześnienia i poprawienia wszystkiego co nie działa, więc będzie to fajny projekt.

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

No to pora na pierwsze pomiary. 

Najpierw na zatrzymanym montażu sprawdziłem z jakim poziomem szumu pomiaru kąta mam do czynienia. 

Przypominam, że przetwornik analogowo-cyfrowy ma tylko 12 bit, a tak naprawdę to efektywnie ok. 10.5 bit wg producenta mikrokontrolera.

Stosując 256x oversampling teoretycznie uzyskać można 20 bit jednak wynik konwersji może mieć max 16 bit, więc trzeba go przesunąć w prawo o 4 bity.

Otrzymujemy więc lepszą rozdzielczość i przy okazji uśredniamy pomiar. Uwaga: żeby wykorzystać pełny zakres przetwornika sygnał musiałby się idealnie mieścić w zakresie napięć wejściowych, co oczywiście nie jest możliwe. Przy prezentowanych wynikach sygnał wykorzystywał tylko około 56% zakresu przetwornika. Muszę to poprawić zwiększając trochę wzmocnienie.noise.thumb.png.ddd86d8cbc340779d2d3f9fb63409d1b.png

 

Tak czy inaczej, na płytce uniwersalnej i z wbudowanym ADC szum odczytu mieści się dla obu kanałów w przedziale mniej więcej +-11 jednostek. Samo to w sobie wiele nie mówi, ale po przeprowadzeniu analizy najgorszego przypadku wyszło mi, że największy błąd estymacji kąta wyniesie ok. 0.02 arcsec. Wygląda więc na to, że szum nie będzie mnie limitował. Biorąc natomiast pod uwagę częstotliwość próbkowania 1kHz, pracujący montaż pokona pomiędzy próbkami około 0.015 arcsec. Są to generalnie wartości o rząd wielkości mniejsze niż dokładność prowadzenia jaką chciałbym uzyskać.

 

W moim przypadku, ze względu na znaczny oversampling sygnału enkodera (tysiące próbek na jeden okres sinusa), zastosowałem software'owe generowanie sygnału kwadraturowego poprzez detekcję przejścia przez zero z histerezą. Poniżej fragment sygnału z enkodera podczas pracy montażu.

sincos.thumb.png.7382ba250bf4cfcfe24a10c37177426e.png 

Brnąc dalej w temat wykonałem dłuższy pomiar pracy montażu, obejmujący 3 okresy ślimaka, żeby oszacować PE.

Na wykresie poniżej prezentuję błąd prowadzenia zakładający, że montaż powinien poruszać się zgodnie z prędkością ruchu gwiazd (sideral tracking), wynoszącą trochę ponad 15 arcsec/s. Widać, że bez usunięcia trendu, montaż prowadzi zbyt wolno, przynajmniej na tym fragmencie ślimacznicy (obliczam błąd jako model minus pomiar).ra_error.thumb.png.18d4e1ce155c5df2ac266d472827b3fd.png

Następnie przechodzimy do transformaty Fouriera, żeby wyizolować z sygnału częstotliwości o znaczącej amplitudzie.

fft.thumb.png.421c9532c77263aef0ec1dae03cf0f95.png 

Na koniec syntetyzujemy PE używając transformaty odwrotnej.

pe.thumb.png.86cbb9293fce5a73bcc638e3120b19cf.png

Jak na montaż, w którym dokonano wszystkich opisanych wcześniej zmian, to raczej szału nie ma. Muszę zobaczyć czy ma tu jakiś wpływ wyważenie sprzętu i chyba przeczyszczę i przesmaruję wszystko jeszcze raz.

 

Oczywiście teraz przede mną najtrudniejsze zadanie - wykorzystanie enkodera do poprawienia prowadzenia.

 

  • Lubię 5
  • Dziękuję 2
Odnośnik do komentarza
Udostępnij na innych stronach

3 godziny temu, Behlur_Olderys napisał:

Bardzo elegancko! :)
+/- 10" to moim zdaniem wcale nie tak źle.

W jaki sposób uzyskałeś wykres z 3 okresami? Tam już pokazujesz chyba docelową dokładność? Czy robiłeś atan?

 

Dzięki!

 

Nie rozumiem pytania więc opiszę. 
Pomiar kąta składa się z kilku elementów. Najpierw generuję sygnał kwadraturowy z sin/cos, żeby wiedzieć w której ćwiartce okresu jestem, i akumuluję kąt dodając kolejne 90 stopni przy każdym przejściu. Do tego zgrubnego akumulowanego kąta dodaję dokładny pomiar brakującej reszty przez użycie funkcji arctan na sygnałach analogowych. Ostateczny pomiar ma zatem pełną rozdzielczość jaką mogę uzyskać. Musisz go sporo zoomować żeby zobaczyć gdzie się kończy rozdzielczość :D BTW dzięki dostępności sygnału analogowego nie jest do niczego potrzebne 1kHz żeby znać dokładny kąt - wystarczy że próbkowanie jest na tyle szybkie żeby dało się wygenerować kwadraturę i nie zgubić żadnej ćwiartki. W montażu astro to sprawa banalna ale już niekoniecznie jak taki enkoder pracuje na maszynie robiącej tysiące obrotów na minutę.


Nagrałem trochę ponad 1200s i przepuściłem przez skrypt w Pythonie, który wypluwa mi te wykresy. Zamiast dzielić pomiar na trzy 400s odcinki i to uśredniać, po prostu zrobiłem FFT całości a potem iFFT po wybraniu tych zaznaczonych częstotliwości. W sumie to dało coś w rodzaju uśrednienia, ale widać że ostateczny wykres nie powtarza się idealnie.

  • Dziękuję 1
Odnośnik do komentarza
Udostępnij na innych stronach

14 godzin temu, zbuffer napisał:

pomiar brakującej reszty przez użycie funkcji arctan na sygnałach analogowych.

 

A, ok, tego nie wychwyciłem :) Porządny enkoder w takim razie! Próbowałem to samo na enkoderze od drukarki - jednak efekty były niespecjalne, widać drukarka służy do czegoś innego :) I zraziłem się wtedy do bawienia w arctan, a tu jednak jakość robi swoje :)

Gratuluję zatem z całego serca!

  • Dziękuję 1
Odnośnik do komentarza
Udostępnij na innych stronach

28 minut temu, Behlur_Olderys napisał:

 

A, ok, tego nie wychwyciłem :) Porządny enkoder w takim razie! Próbowałem to samo na enkoderze od drukarki - jednak efekty były niespecjalne, widać drukarka służy do czegoś innego :) I zraziłem się wtedy do bawienia w arctan, a tu jednak jakość robi swoje :)

Gratuluję zatem z całego serca!

Pogratulujesz mi jak zmuszę ten montaż do prowadzenia na tyle dokładnie, żebym mógł wyeliminować guiding przy skali ok. 0.7''/px :D (marzy mi się przejście na dłuższą ogniskową). W przeciwnym przypadku to będzie sztuka dla sztuki. Nie odpuszczę jednak tak łatwo i przejdę do wymiany elektroniki jak się będzie bardzo opierał... 

Odnośnik do komentarza
Udostępnij na innych stronach

4 minuty temu, sidiouss napisał:

Wspaniale się to czyta, uwielbiam takie projekty! Trzymam mocno kciuki i czekam na kolejne posty! 

Wielkie dzięki! Postaram się nie zawieść. Następny etap to chyba próba przepisania drivera pod INDI, tak żeby mógł połączyć się z dwoma urządzeniami - montażem i enkoderem...? Nawet nie wiem czy to jest możliwe bez trików. Ewentualnie jakieś gadanie pomiędzy driverami... Na pewno nie jestem pierwszy z tym problemem :uhm:

Odnośnik do komentarza
Udostępnij na innych stronach

12 godzin temu, zbuffer napisał:

Wielkie dzięki! Postaram się nie zawieść. Następny etap to chyba próba przepisania drivera pod INDI, tak żeby mógł połączyć się z dwoma urządzeniami - montażem i enkoderem...? Nawet nie wiem czy to jest możliwe bez trików. Ewentualnie jakieś gadanie pomiędzy driverami... Na pewno nie jestem pierwszy z tym problemem :uhm:

 

 

Hehe no wiesz, ja napisałem soft gadający między silnikami a enkoderem na mikrokontrolerze, a z zewnątrz tej korekcji nie widać. Dzięki temu sprzężenie zwrotne idzie najkrótszą możliwą drogą. Przechodzenie na zewnątrz, przez system operacyjny - moim zdaniem - spowoduje nieakceptowalne spowolnienie. A tak masz jeden układ który się tym zajmuje. To nie jest dużo logiki, PID w najgorszym przypadku. Na arduino uno spokojnie pójdzie. Do tego można łatwo napisać sterownik do ASCOM, ale tego webowego, alpaca. Tam wystarczy zaimplementować restowe API np. w pythonie. Nie wiem, jakie ma wymagania INDI.

 

BTW: nie martwiłbym się o te 0.7". Montaż ma swoją bezwładność, i raczej w skali dziesiątek milisekund można spokojnie zakładać, że zachowuje się liniowo. W związku z tym optymistyczne założenie jest takie, że jeśli poprowadzisz go gładko na poziomie 5" to będzie git.

 

Wiesz, chodzi mi o to: 

W ciągu 0.3s ślimak przejedzie 5". Żeby mieć precyzję +/- 0.5" to wystarczy, żeby błąd prędkości nie przekroczył na tym odcinku 10%. Biorąc pod uwagę, jak bardzo gładki masz wykres PE wydaje się, że się zmieścisz w tych 10%. No, ale oczywiście praktyka pokaże, a ja trzymam kciuki.

 

Mój eq32 nie jest chyba sterowalny na tak niskim poziomie, ale masz dwie klasy lepszy montaż, jestem dobrej myśli ;)

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Trochę czasu minęło od ostatniego postu bo miałem niestety bardzo mało czasu na pracę nad nowym sterownikiem do montażu. W końcu jednak się udało. Używam platformy INDI do sterowanie sprzętem. Moim pomysłem było rozszerzenie sterownika montażu tak by wspierał drugie urządzenie - płytę od enkodera.

 

Sterownik dla iOptron iEQ45 jest jakby podklasą generalnego sterownika opartego o protokół LX200. Niestety widać, że pisany był przez kilka osób i z chęcią wsparcia różnych modeli - jest bałagan, masa niewykorzystanych funkcji itp. Nie lubię pracować z takim kodem więc przepisałem cały sterownik od zera, opierając się o dokumentację protokołu iOptron'a. Znalazłem co najmniej kilka błędów w starym sterowniku. Swoją drogą protokół jest tekstowy, zero jakiejkolwiek kontroli błędów, wygląda jak napisany przez kogoś kto dopiero co nauczył się programować i może raz widział mikrokontroler. Niestety nie jest to jedyny sprzęt, w którym spotykam się z tak amatorskimi rozwiązaniami, które może były dobre do testowania a nie do stworzenia produktu. Na to niestety nie mam wpływu dopóki nie stworzę własnego montażu, więc trudno się mówi.

 

Po przepisaniu sterownika zaimplementowałem wsparcie dla mojego enkodera. Oczywiście transmisja odbywa się binarnie, pakietowo, z sumami kontrolnymi itp. Na koniec zostało rozszerzenie GUI sterownika, który wyświetla się w EKOSie. GUI zawiera podstawowe funkcje i parę diagnostycznych - połączenie z enkoderem, możliwość uruchomienia odczytu, PEC, zmienne wzmocnienia korekty, częstotliwość, możliwość zapisu odczytów w pliku itd. Dzięki zintegrowaniu sterownika enkodera ze sterownikiem montażu mam bezpośredni dostęp do PulseGuiding'u, który wykorzystuję do korekt. Rozwiązanie nie różni się specjalnie jeśli chodzi o generalny zamysł od TDM (Telescope Drive Master), ale tam urządzenie jest zupełnie zewnętrzne w stosunku do montażu, a guiding jest aplikowany przez złącze ST4. Oczywiście ingerując bezpośrednio w sterowniki montażu ma się dużo większe pole manewru co do np. zmiany trybu działania enkodera w zależności od tego co robi montaż czy możliwości korzystania z PulseGuiding'u po stronie kamery.

 

Dla mnie największą zagadką było to jak montaż zareaguje na szybkie korekty z enkodera poprzez PulseGuiding - coś na co bezpośrednio nie mam wpływu. Okazało się jednak, że jest lepiej niż się spodziewałem... 

image.png.2ccbc09c24b43ccf39f564b62fb2e37b.png

RMS bez PEC: 9.62 arcsec

RMS z PEC: 0.10 arcsec  :matrix:

 

Zoom na wykres z PEC:

image.png.0764a0f01fc0befaeb320b8b3762c529.png

 

Korekty robione były z częstotliwością 20Hz, co po kilku próbach wyglądało na najlepsze ustawienie. Na tym etapie korekta jest banalna - proporcjonalna do błędu z możliwością regulacji wzmocnienia, żadnej predykcji, żadnych fajerwerków. Na takie zabawy przyjdzie pora jak będę sterował napędami bezpośrednio. 

 

Uwaga: brakuje mi kilku elementów toru optycznego, które właśnie jadą do mnie od Tomka, więc nie miałem sposobu na wykonanie pomiarów na gwiazdach i pod obciążeniem teleskopem, żeby zobaczyć jak to działa w praktyce.

 

 

 

  

 

  • Lubię 3
  • Kocham 1
Odnośnik do komentarza
Udostępnij na innych stronach

1 godzinę temu, zbuffer napisał:

Korekty robione były z częstotliwością 20Hz

 

Gratuluję! Myślałem, że Pulse Guide nie da rady. 

 

Swoją drogą - rozumiem, że wykres to tylko odczyt z enkodera, a nie realny dryf na gwiazdach?

 

1 godzinę temu, zbuffer napisał:

Na to niestety nie mam wpływu dopóki nie stworzę własnego montażu, więc trudno się mówi.

Nie musisz tworzyć własnego montażu, wystarczy własny napęd: silniki + sterownik. Resztę mechaniki możesz zostawić :)

 

Trzymam kciuki!

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki!

Ja myślałem, że oprogramowanie montażu w ogóle nie jest na to przygotowane, szczególnie jak widziałem te ciągłe szybkie oscylacje na zapisie PE. Zresztą nie tylko na wykresie je widzę bo można je usłyszeć. Ciekawy jestem czy to problem mechaniczny czy takie świetne jest sterowanie prędkością serwa w tym montażu… 

 

BTW tak jak pisałem na końcu - nie miałem jeszcze możliwości sprawdzenia tego podczas zbierania materiału. Zresztą wątpię żebym był w stanie zmierzyć z taką dokładnością prowadzenie na gwiazdach - może na jakiejś pustyni :D 

Edytowane przez zbuffer
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.