Pokazywanie postów oznaczonych etykietą Teleskop. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Teleskop. Pokaż wszystkie posty

czwartek, 18 stycznia 2024

Podłączenie wyciągu Crayford GSO RC-6 (Ritchey-Chretien) do OnStepX


    Kupiłem teleskop GSO Ritchey-Chretien RC-6. Teleskop jest w wersji DeltaOptical. Ponieważ będę go wieszał na na montażu CG5 (EQ5) z napędem OnStepX, muszę podłączyć ustawianie ostrości również do sterownika. W GSO RC6 jest focuser Crayford z mikroruchami w wersji bez otworów montażowych, pozwalających łatwo przykręcić silniczek Nema17. Obejrzałem różne rozwiązania w Internecie, ale mnie nie przekonały. Postanowiłem zaprojektować własną podstawkę pod silniczek i przy okazji nauczyć się programu FreeCAD.

    Zbudowałem model z tektury i podkładek, który pozwolił mi poznać potrzebne odległości, pochylenia i przeszkody. Zastosowałem popularny u nas silnik 17HS4023, bo taki miałem pod ręką i pasek 154mm. Jednym z najważniejszych założeń był mały rozmiar. Chciałem by silnik jak najmniej odstawał od wyciągu, tak by nie trzeba było go demontować w czasie transportu. Efekt poniżej.

Modelowanie mocowania Nema17

    Od razu wyszło, ze silnik jest nadal za wysoki. Wtedy odkryłem na Aliexpress silniczek trochę mniejszy od Nema17, choć z rozkładem śrub Nema17: 17HS08-1004S. Mała moc nie przeszkadza, bo napędzam pokrętło mikroruchów, które chodzi bardzo lekko. Zastosowałem też krótszy pasek 150mm.




    Zaprojektowana przeze mnie podstawka jest minimalistyczna. Śruby silnika wkręca się od spodu (trzeba zastosować trochę dłuższe). Całość mocuje się do wyciągu za pomocą opasek zaciskowych (trytytek). Warto znaleźć takie, które dają się wielokrotnie zaciskać. Pasek zębaty najlepiej 150mm przy zębatce 16 zębów. Pasek powinien mieć luz. Dzięki temu łatwo go można zdjąć i używać fokusera klasycznie. 

    

    Nie rozwiązałem jeszcze problemu kabelka. Gniazdo od strony silnika to JST-ZH o odległości między pinami 1,50mm, liczba pinów 11. Kabel dostarczony z silnikiem ma 40cm. Trochę mało jeśli sterownik będzie mocowany do statywu teleskopu. W Polsce nie znalazłem takich wtyczek. Są z mniejszą liczbą pinów i musiał bym je jakoś kleić. Na aliexpress znalazłem 10 lub 12 pinów więc też nie pasuje. Znalazłem jedną ofertę na 11 pinów, tylko trzeba kupić 100szt.

    Podpięcie do mojego OnStepX pracującego na FYSETC E4, jest łatwe. Płytka ma obsadzone zapasowe sterowniki silników. Trzeba jedynie ustawić większą prędkość obrotową, by zmiana ostrości pracowała optymalnie.



    W planie mam zaprojektowanie podstawki ver.2, która powinna mieć większy zakres regulacji odstępu od pokrętła i może będzie trochę wyższa.

     Może jeszcze krótko o programie FreeCAD. Jest genialny, nie jest trudny, a pozwala projektować skomplikowane elementy. Używałem wersji 0.20.2. Może moja porada się komuś przyda. Ja zmarnowałem kilka godzin, zanim odkryłem tą zasadę. Jeśli chcesz zmienić nazwę czegokolwiek np. części, zrób to zaraz po jej stworzeniu. Program pozwala to robić na dowolnym etapie, ale często pojawiają się potem błędy przy zupełnie niewinnych operacjach.  

    Na koniec kilka zdjęć całości:





niedziela, 25 września 2022

Przesiadka na montaż Celestron CG5 i podłączenie OnStep


Udało mi się kupić używany montaż Celestron CG5. Jest to wersja Sky Watcher EQ5 oferowana przez firmę Celestron. Różni się grubością nóg statywu stalowego. Celestron daje statyw z nogami 2". Wiem, że wiele osób uważa, że przesiadka z CG4 na CG5 (czyli z EQ3-2 na EQ5) niewiele zmienia. Jednak ja trafiłem na bardzo korzystną okazję i nie było się nad czym zastanawiać. Dotychczasowy właściciel przesiadł się na HEQ5 i nie chciał się już bawić starym, trochę podniszczonym montażem. A ja z chęcią zająłem się jego renowacją.

Co zyskałem? W skrócie: dużo stabilniejszy statyw - dwucalowe nogi stalowe są bardzo stabilne, dużo stabilniejszy montaż, oś RA łożyskowana, dużo lepsze umiejscowienie przestrzeni na silniczki NEMA 17 do napędu OnStep.

Co straciłem? Montaż jest większy i cięższy oraz brak możliwości regulacji rozstawienia nóg. Przy normalnym rozstawieniu statyw stoi bardzo szeroko. Ale ja nie zawsze mam tyle miejsca. Tymczasowo znalazłem rozwiązanie z zastosowaniem pasa transportowego. Poniżej porównanie CG5 i CG4.



Całość wymagała trochę pracy. Uzupełniłem brakujące zatyczki i rozebrałem i przesmarowałem całość. Bardzo mi pomógł film z kanału Astromiasto. Poniżej zdjęcie po demontażu osi DEC.


Na koniec zostało przełożenie silniczków napędu OnStep. Poniżej zdjęcia. Miałem pod ręką paski zębate o długości 172mm i 154mm. By pasowały musiałem przesunąć punkt trzymania w mocowaniach silników, jak na zdjęciu poniżej.


Ostatecznie jednak dla obu silniczków zastosowałem paski zębate 160mm. Ta długość okazała się najlepsza.

To nie wygląda bardzo elegancko, ale trzyma się dobrze i będzie czas na wypracowanie "ładnej" wersji.


Ostatnie to zmiana parametrów config.h w OnStep. Zastosowałem koła zębate 60/16=3,75. CG5/EQ5 wymagało zmiany:
Axis 1 GR1:    3.75
Axis 1 GR2:    144
Axis 2 GR1:    3.75
Axis 2 GR2:    144
Oczywiście trzeba to wpisać w Excel, a potem w generator konfiguracji.

Oba silniki to 17HS4401. Na LV8729 ustawiłem mikrokroki 64 i Vref=0,74. Będę to jeszcze testował, ale działa dobrze. Opis wcześniejszej konfiguracji GoTo OnStep zbudowanej w oparciu o Wemos D1 R32 i CNC v3, działającej z montażem CG4 jest opisany tu Part I i Part II.

Czekam na bezchmurną noc by potestować.

ToDo:

  • Popracować nad jedną nogą statywu, bo trudniej się wysuwa
  • Poprawić mocowania wtyczek przy silniczkach
  • Może osłony na koła zębate?
  • Może mniejsze koła zębate np. 48 zamiast 60? Odległość od blokady osi do brzegu koła to 1mm. Trochę mało.


wtorek, 19 lipca 2022

Kontroler OnStep oparty o Wemos D1 r32 (ESP32) i CNC v3 Part II




    W poprzedniej części (Part I) opisałem przyspieszoną realizację działającego kontrolera OnStep w oparciu o Wemos D1 R32 (ESP32) i CNC3.

    Teraz miałem trochę czasu na poprawki i rozbudowę czyli Part II. 

    Zmieniłem:

  1. Obudowa mieszcząca Raspberry Pi (Astroberry) i OnStep
    • gniazda RJ45 z wyjściami na silniczki
    • mocowanie do tuby pod śrubę gwint 1/4
    • włącznik i wejście zasilania 12V 5.1/2.1
  2. Gniazdo RJ45 na statywie i kabel RJ45 rozdzielający sygnał na silniki RA i DEC
  3. Kabel RJ45 na 6 pin JST PH2.0mm do focusera
  4. Smart Web Server (SWS) na Wemos D1 Mini ESP32
  5. GamePad BT Magicsee R1 zamiast Smart Hand Controller-a
  6. Astroberry i serwer Indi podłączony do OnStep po USB
  7. Regulacja pozycjonowania GOTO i śledzenia w config.h

 Nowe elementy:

Wemos D1 mini ESP32
Przetwornica step-down na 5V
Moduł RTC DS3231
Obudowa Kradex Z78
Bluetooth GamePad R1

Przydatne linki

Strona Wiki OnStep 

Strona autora projektu http://www.stellarjourney.com/  

Wiki WeMos R32 with CNC V3 Shield

Wiki Smart Web Server

Wiki Bluetooth GamePad R1

Obudowa i porty RJ45

Wiem, że ładniej by było wydrukować jedną z wielu dostępnych obudów na drukarce 3D, ale przypominam, że to projekt budżetowy. Tę obudowę miałem pod ręką i jej trochę większy rozmiar rozwiązał też problem połączenia z Raspberry Pi z zainstalowanym Astroberry. Trochę cięcia i lutowania i efekt widać na zdjęciu.   

Kabelki

Połączenie wszystkiego razem było trudniejsze niż myślałem. Kable musiały być łatwe do podłączania, ale jednocześnie musiały zachowywać się właściwie podczas obrotów montażu C4 (EQ3-2). Trzeba było podjąć decyzję, gdzie umieścić obudowę by podczas ruchu teleskopu zminimalizować zginanie kabli. Wybrałem umieszczenie obudowy do tuby teleskopu. Dzięki temu kabel do focusera i silnika osi DEC będzie nieruchomy. Jedynie kabel osi RA będzie musiał wytrzymać regularne zginanie. Czas pokaże czy kabel i złącze RJ45 dobrze to zniosą.    


Smart Web Server i GamePad R1

   Miałem już nie podłączać SWS. Łączność bluetooth z OnStep działa akceptowalnie, dodatkowo Indi na Astroberry zapewnia wiele funkcjonalności. Ale doświadczenie w czasie używania OnStep pokazało, że niestety często jest potrzebne dokonanie małej korekty ustawienia. Robienie tego na telefonie w aplikacji OnStep jest trochę uciążliwe, szczególnie bez patrzenia na ekran. Dlatego zainteresowałem się GamePad-em. To był strzał w dziesiątkę.

    Jest on bardzo łatwy w obsłudze i poręczny. A przy okazji ponieważ wymaga Smart Web Server-a, to mam też połączenie bezprzewodowe o większym zasięgu niż bluetooth. Dodatkowe zalety SWS to możliwość podłączenia więcej niż jednego urządzenia na raz, strona WWW, automatyczne łączenie się do sieci WiFi w domu, a jeśli jest niedostępna to wystawianie własnego AP. Brak konieczności ciągłego restartu całości. Jedyne co musiałem zrobić to zapewnić stabilne 5V. To brane z CNC było za słabe. Konwerter Step-Down podłączony bezpośrednio do wejściowego 12V rozwiązał problem.

Instalacja oprogramowania SWS dla GamePad-a

Szczegółowa instrukcja instalacji SWS z obsługą GamePadjest tu. W skrócie należy:

  1. Pobrać kod SWS z GITHUB wybierając Code -> Download ZIP
  2. Rozpakować do jakiegoś katalogu i otworzyć w Arduino IDE
  3. Dodać w File->Preferences "Additional Boards Manager URLs" wartość "https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json"
  4. W Narzędzia>Płyta>Boards Manager doinstalować ESP32 w wersji 2.0.0
  5. Ustawić w menu Tools->Board->MH ET LIVE ESP32MiniKit i Partition Scheme->No OTA (Large APP)
  6. Wybrać port, który się pojawi po podpięciu ESP32 do USB (numer można sprawdzić w Menagerze Urządzeń)
  7. W pliku Extended.config.h włączyć BLE_GAMEPAD ON oraz wpisać MAC adres naszego GamePad-a w wierszu BLE_GP_ADDR. 
  8. Nacisnąć "Upload" i poczekać na komunikat, że się udało.

Łączność po nowemu

Łączność z OnStep można zapewnić na 4 sposoby.

1. Kabel USB podłączony do portu Wemos D1 R32. W moim wypadku tak podłączam do Astroberry na Raspberry PI 4B, na którym chodzi serwer Indi. 

2. Łączność WiFi i sterowanie przez port IP oraz strona Smart Web Server. Bardzo stabilne i działa jednocześnie na wielu urządzeniach.

3. Łączność Bluetooth. Działa, ale po restarcie wymaga kasowania parowania i ponownego parowania. Przynajmniej tak jest u mnie.  

4. Bezprzewodowy kontroler GamePad. Jeśli w konfiguracji SWS jest poprawnie wpisany MAC adres urządzenia, to po włączeniu, przez chwile jego dioda będzie mrugać na niebiesko, gdy zgaśnie oznacza to że nastąpiło połączenie. Należy jeszcze włączyć tryb wciskając jednocześnie M i D (dioda mrugnie raz). Od teraz działają:

  • Joystick = N,S,E,W
  • Trigger w górę = Focuser -
  • Trigger w dół = Focuser +
  • A = Idź do ostatniej lokalizacji
  • B = Wyszukiwanie spiralne
  • C =Zmniejszenie prędkości
  • D =Zwiększenie prędkości
  • M = Park/UnPark (M jest również „zatrzymaniem awaryjnym” silników)

Podsumowanie drugiego etapu

Testy jeszcze trwają, ale wszystko działa dość stabilnie i w miarę precyzyjnie. Właściwe testy zrobię podczas wypadu pod ciemne niebo. 



 


wtorek, 5 lipca 2022

Kontroler OnStep oparty o Wemos D1 r32 (ESP32) i CNC v3 Part I

    Postanowiłem zrobić nowy kontroler OnStep w oparciu o Wemos D1 R32 (ESP32) i CNC3. Kontroler oparty o klon Arduino Mega + RAMPS działa, ale ma ograniczenia wydajnościowe, co w praktyce skutkuje u mnie brakiem precyzji przy długich zmianach pozycji. Ostatnio na stronie OnStep piszą już wprost, że jest za wolny. ESP32 wydaje się bardziej przyszłościowy. Dodatkowo jest mały i prawie nie wymaga lutowania. A ja zorientowałem się na 2 tygodnie przed wyjazdem na wakacje, że muszę go zrobić już :)

    Elementy Wemos D1 R32 (ESP32) + CNC v3 są do kupienia od ręki. Są tanie. Mogę też wykorzystać część pracy z projektu Arduino Mega.

 Elementy:

Wemos D1 R32 ESP32
Shield CNC v3
Moduł RTC DS3231

Obudowa 
Sterownik silnika krokowego LV8729 2 szt. i A4988 1 szt.
gniazdo DC 2,1/5,5 i przedłużacz kilkumetrowy na ten wtyk
włącznik kołyskowy bistabilny


Kilka linków

Strona grupy OnStep, 

Strona Wiki 

Strona autora projektu http://www.stellarjourney.com/  

Wiki: The WeMos R32 with CNC V3 Shield

Wątek o regulacji LV8729

Realizacje wg montaży

Przydatny wątek o LV8729


Podłączanie do CNC

CNC v3 został stworzony do obsługi drukarek 3D. Ale OnStep ma bardzo podobne potrzeby: obsługa kilku silników krokowych przez kontrolery stepstick, podłączenie urządzeń po portach szeregowych i I2C.

Oto co podłączyłem w aktualnej wersji kontrolera: 

1. Dwa sterowniki LV8729 do kontroli silników osi RA/DEC teleskopu oraz A4988 do kontroli focusera.

    Pod kontrolerami są wyprowadzone zworki do ustawienia mikrokroków. Prędkość określa się podając napięcie na odpowiedni pin stepstick-a czyli zwierając odpowiednią zworkę. Dla LV8729 ustawiłem 64, dla A4988 16. Kalkulator np. tu. A tu opis LV8729.

2. Moduł RTC DS3231 do obsługi zegara na łączu I2C 

Strona opisująca podłączenia sugeruje by zrezygnować z zegara, ale miałem go już z poprzedniego projektu więc podłączyłem.  Wystarczy poprawnie podłączyć do wyjścia I2C oraz ustawić model modułu w config.h (na etapie generacji konfiguracji). 

Zasilanie

Do pracy kontroler potrzebuje napięcia w różnych zakresach dla mikrokontrolera i CNC. 12V jest w obu tych zakresach. Mam taki zasilacz 5A i baterię 9AH więc takie zasilanie wybrałem. Wszystko podłączyłem do wtyku 5,5/2,1 wyprowadzonego na obudowie. 

Konfiguracja parametrów i Generator

Konfiguracja OnStep jest przechowywana w pliku config.h. Ręczna modyfikacja jest uciążliwa. Na szczęście jest strona z generatorem konfiguracji, z której można wygenerować nasz plik. Procedura jest taka:
  1. W dokumencie excel (do pobrania tu) trzeba ustawić parametry napędów.
  2. Na stronie Generatora Konfiguracji  trzeba wypełnić dane. Część trzeba skopiować z pól wyliczonych w excel-u.
  3. Nacisnąć "Generate"
  4. Pobranym plikiem zastąpić zawartość pliku config.h w katalogu z programem OnStep.
  5. To wszystko to punkt 7. z rozdziału poniżej.
Kilka wartości wymaga wyjaśnienia.
    
    Excel:
  1. Stepper-Steps - ilość kroków na obrót silnika krokowego. U mnie 200. 
  2. AXIS1_DRIVER_MICROSTEPS - mikrokroki ustawione dla śledzenia na RAMPS. U mnie 32. 
  3. GR1 - przełożenie na kołach zębatych lub przekładni planetarnej. Ja mam dla DEC 60 zębów na 20 czyli wartość 3. Dla RA mam 40 zębów na 16 czyli wartość 2,5.
  4. GR2 - liczba pełnych obrotów pokrętła mikroruchów teleskopy dla obrócenia tuby teleskopu o 360 stopni w danej osi. Jeśli nie znajdziecie tych parametrów dla waszego montażu w Necie to pozostaje tylko to zmierzyć empirycznie. Np. ustawić tubę w pionie (przyda się poziomica) i obracać aż dojdziecie do poziomu. Potem trzeba przemnożyć przez 4. Dla mojego CG-4 są to: RA=130, DEC=64
  5. SLEW_RATE_BASE_DESIRED - oczekiwana prędkość przesuwania tuby w trybie szybkim (w °/s). Jeśli podacie za dużą wartość to sprzęt może nie dać rady lub silniki będą głośno pracować. Ja w tej chwili podaje 1. Mi się to wydaje dobrym kompromisem między głośnością a szybkością.

    Generator:

  1. MICROSTEPS_GOTO - mikrokroki dla szybkiego ruchu silniczków. U mnie 2.
  2. Automatically Start Tracking - przydatne gdy testujemy silniczki i nie mamy jeszcze możliwości sterowania ruchami teleskopu. Ale potem lepiej to wyłączyć.
    Dodatkowo zmieniłem w wygenerowanym config.h:
    • MFLIP_SKIP_HOME na ON, dzięki temu przy odległej zmianie pozycji nie wraca do pozycji początkowej
    • PIER_SIDE_PREFERRED_DEFAULT na EAST. Testy wykonuję na balkonie i wolę by teleskop ustawiał się zawsze z jednej strony montażu, w moim przypadku wschodniej.

Instalacja oprogramowania

Szczegółowa instrukcja instalacji OnStep na ESP32+CNC3 jest tu. W skrócie należy:

  1. Zainstalować Arduino IDE
  2. Pobrać kod OnStep z GITHUB wybierając Code -> Download ZIP
  3. Rozpakować do jakiegoś katalogu i otworzyć w IDE OnStep.ino
  4. Dodać w File->Preferences "Additional Boards Manager URLs" wartość "https://dl.espressif.com/dl/package_esp32_index.json" (jeśli coś tam było dodaj po przecinku)
  5. W Tools>Board>Boards Manager doinstalować ESP32
  6. Ustawić w menu Tools->Board->ESP32 Dev Module
  7. Wybrać port, który się pojawi po podpięciu płytki do USB (numer można sprawdzić w Menagerze Urządzeń)
  8. Plik config.h nadpisać wygenerowanym w rozdziale powyżej.
  9. Jeśli domyślnie nie masz biblioteki dla RTC DS3231 to pojawi się błąd. Przejdź do Sketch->Include library->Manage Libraries i wyszukaj 'RTC by Makuna' na liście dostępnych bibliotek i zainstaluj.
  10. Nacisnąć "Upload" i poczekać na komunikat, że się udało.

Łączność

Łączność z OnStep można zapewnić na 4 sposoby.

1. Kabel USB podłączony do portu Wemos D1 R32. W moim wypadku tak podłączam do Astroberry na Raspberry PI 4B, na którym chodzi serwer Indi. 

2. Łączność WiFi. Wymaga podpięcia mikrokontrolera ESP8266 do portu szeregowego na CNC. Chwilowo nie zaimplementowałem.

3. Łączność Bluetooth. Ponieważ bluetooth jest na ESP32 to działa bez dodatkowej pracy. Tak można podłączyć aplikacje na telefonie i komputerze. Działa bardzo stabilnie  

4. Port Ethernet. Nie zgłębiałem tego rozwiązania bo dla mnie było mało praktyczne. Szczegóły są na Wiki OnStep.

Sterowanie

Najlepszy opis jest tu. Kilka uwag ode mnie. Na Windows potrzebny jest ASCOM Driver. Działają wtedy programy typu Stellarium, Cartes du Ciel lub Sky Planetarium. Sterownik pozwala obsłużyć połączenie kablem USB lub przez bluetooth.
Ale z tych aplikacji nie da się lub tylko częściowo się da wykonać parkowanie, odparkowywanie, kalibrowanie na gwiazdy lub korekta strzałkami w czterech kierunkach. Najważniejsze też, że OnStep do poprawnej pracy potrzebuje ustawienia daty i lokalizacji. Ponieważ nie mam modułu GPS, to trzeba najpierw zaczynać od aplikacji OnStep na komórce. Tam najpierw ustawić czas i wykonać pierwsze przesunięcia i kalibracje. Aplikacje sterujące na komputerze są za darmo, na telefon są płatne (z wyjątkiem wspomnianej OnStep).

Scenariusz:
  1. Uruchomienie OnStep (kilka sekund po uruchomieniu słychać stuknięcie silniczka)
  2. Wyszukanie urządzenia bluetooth o nazwie OnStep i połączenie (u mnie dobrze działa jeśli za każdym restartem OnStep kasuję zapamiętane połączenie i wyszukuję od nowa) 
  3. Uruchomienie aplikacji OnStep na androidzie (jeśli urządzenie było restartowane to lepiej zabić aplikację i uruchomić ją ponownie po połączeniu BT)
  4. W aplikacji raz trzeba skonfigurować typ połączenia. Wybierz trzy kropki w górnym prawym rogu i kliknij Connection.
  5. Tam warto też ustawić "Observing Sites" na twoją pozycję geograficzną.
  6. Ustawienie czasu i daty w Menu "Initialize/Park"
  7. Dalej można wskazać pozycję w tej aplikacji lub przełączyć się na np. Stellarium Mobile w wersji PLUS (kosztowało około 40pln, płatność w aplikacji). Zadziała na tym samym połączeniu bluetooth. Raz ustawione będzie pamiętać ustawienia. Tu widzisz pozycję teleskopu, możesz też wskazać na mapie nową pozycję.  
  8. Jeśli teleskop zaczyna się rozjeżdżać z wskazywanym celem, zawsze możesz się przełączyć na aplikację OnStep. Opcją Tracking dokonać korekty i zaktualizować wskazanie.
  9. Podobnie jak Stellarium działa Sky Safari 6 PLUS (niestety też płatne około 36pln). Tu jedna uwaga: nie należy włączać ustawienia czasu, bo źle ustawi przesunięcie czasu. Jeszcze nie rozgryzłem dlaczego.

Obudowa

    Miałem mało czasu więc zastosowałem to co było pod ręką. Obudowa z pudełka do przechowywania produktów spożywczych okazała się idealna na początek. Dodałem jedynie gniazdo zasilania 5.5/2.1, wyłącznik i wyprowadziłem kabelki do silniczków (w przyszłości będzie zmiana na gniazda RJ. Oczywiście warto pomyśleć o sposobie mocowania do nogi statywu teleskopu. Ja zastosowałem dwa paski z rzepem.  



Podsumowanie pierwszego etapu

Kontroler działa. Mój budżetowy (OK, bardzo nisko budżetowy) zestaw astrofoto: Celestron C6n (150/750), kamerka planetarną SVBony SV105 do szukacza i T7C kompatibilną z ASI120 do zdjęć planetarnych daje mi chwilowo dużo radości. Urlop był udany. 

Następne kroki do zrobienia/opisania 

  1. Najpierw myślałem o reanimacji Smart Hand Controler-a, ale właśnie zamówiłem bluetooth GamePad z tego opisu Bluetooth GamePad Option.  
  2. GamePad wymaga Smart Web Server-a w oparciu o dodatkowy ESP32. Najlepiej w wersji D1 mini ESP32 choć inne też się nadają.
  3. Wymiana kabli do silników na RJ45 ze sztywno zamocowanymi portami na montażu. Wybór RJ45, a nie RJ11 lub RJ12 jest świadomy. Dużo większy wybór gniazd i kabli i za dużo mniejszą cenę.
  4. Podłączenie Onstep do Astroberry na Raspberry Pi. Już zadziałało połączenie po USB. Dzięki temu aplikacje mogą się łączyć do serwera Indi na Raspberry Pi.
  5. Zastosowanie PHD2 działającego na Astroberry do guidingu czyli korekty podążania za za ruchem obserwowanego obiektu.
  6. Nowa poręczna obudowa, mieszcząca OnStep i Raspberry Pi. Pod ręką była Kradex z78.    

 Jest już dalszy ciąg: Kontroler OnStep oparty o Wemos D1 r32 (ESP32) i CNC v3 Part II


wtorek, 12 października 2021

Montaż silników do OnStep dla teleskopu C6-N

Montaż silników krokowych NEMA 17 do montażu Celestron CG-4 (odpowiednik EQ3-2). Po jednym do RA i DEC. Całość będzie sterowana z kontrolera OnStep w oparciu o Arduino Mega + RAMPS 1.4.  


Wcześniej zrobiłem zautomatyzowany focuser (wyciąg okularu). Teraz postanowiłem zmechanizować tubę teleskopu. Zaczęło się od pomysłu, by dało się fizycznym pilotem lub aplikacją przesuwać tubę na dowolny fragment nieba oraz włączyć śledzenie.

Potem trafiłem na projekt AstroEQ, który był super. Miał jednak wadę, nie był już  rozwijany. Ale tam znalazłem link do OnStep. Na pierwszy rzut oka projekt jest bardzo chaotyczny. Trzeba przeczytać wiele postów, stron Wiki, wzmianek i zobaczyć kilka filmików. Ale opłacało się. Mam działający kontroler, a tu pokażę jak zamontowałem silniki. Oczywiście to końcowa wersja (w tej chwili ;)). Wcześniej było wiele innych, ale okazały się nieoptymalne.

Zastosowałem silniki które miałem pod ręką. W osi RA 17HS4401S, a w osi DEC 17HS4023. Koła zębate miały być w obu osiach 20 zębów (na silniku) i 60 na teleskopie, ale okazało się, że dla osi RA koło zaczepia o rączkę blokady. Dla RA zastosowałem 16 na 40 z dodatkową przedłużką osi. Ponieważ nigdzie nie znalazłem łącznika na osie 6mm i 6mm, musiałem zastosować łącznik 6mm na 8mm i kilkucentymetrową oś 8mm. Koło duże oczywiście też musiałem zmienić na takie z otworem 8mm (akurat pod ręką miałem 40 zębów).
 
Poniżej kilka zdjęć poglądowych:




Daje to dla osi RA przełożenie 40:16 (2,5), a dla osi DEC 60:20 (3,0). Oba mocowania udało się wykonać za pomocą typowego mocowania typu L do NEMA17. Przy osi RA co prawda trzeba je było je zamocować odwrotnie i lekko rozwiercić jeden z otworów. Paski zębate u mnie sprawdziły się 172mm dla osi DEC i 154mm dla osi RA.

Elementy


silnik krokowy 17HS4401S
silnik krokowy: 17HS4023
Paski zębate 154mm i 172mm 6mm szerokości
Koła zębate 16, 40, 60 zębów 5, 6, 8 mm GT2
Mocowanie stalowe typu L do NEMA 17 2szt.

Łącznik osi 6 na 8 mm

Koszt mocowania trochę ponad 100pln.






niedziela, 11 lipca 2021

Projekt MotoFocuser do teleskopu Sky Watcher 1309

W międzyczasie kupiłem lepszy teleskop Celestron C6-N z montażem CG-4 (EQ3-2). Ma on focuser, który jest łatwiejszy do modyfikacji (odkręcane pokrętła i 4 śruby mocujące) Dlatego ostatecznie projekt opisuje w artykule Projekt MotoFocuser dla teleskopu Celestron C6-N. W tym opisie niedopracowany jest tylko montaż silniczka, reszta zadziałała, ale nie będę go kończył bo teleskop pójdzie na sprzedaż. Zostawiam jednak opis w takiej wersji bo może komuś się przyda. 


Zabierałem się do tego kilka razy. Najpierw próbowałem zastosować silnik 28BYJ-48 z ULN2003, niestety czasem się zacinał, bo był za słaby. To samo z Micro Servo SG90 360. Skończyło się na silniku krokowym NEMA 17. Chciałem by mniej ważył i był stosunkowo tani. Wybrałem 17HS4023, a do sterowania stepstick A4988. Najdłużej mi zajęło przekonanie się, że bateria 9V jest za słaba i wymyślenie sposobu mocowania do teleskopu. Reszta okazała się łatwa. Całość obsługuje ESP32. U mnie konkretnie ESP32-WROOM-32D, ale można zastosować dowolny ESP32 z WiFi, RP2040 lub ESP8266. Ideą było by można było sterować przez przeglądarkę, przez WebAPI np. z programu w pythonie lub z pilota na kablu.

Elementy


mikrokontroler: ESP32-WROOM-32D
silnik krokowy: 17HS4023
sterownik silnika krokowego: A4988
zasilanie mikrokontrolera: Moduł Mini Stabilizatora AMS1117 3,3V
zasilanie silnika: koszyk na 8 baterii AA
klawiatura samoprzylepna 4 przyciski
Lego Technic koło zębate 3650b 24 zęby
Sprzęgło elastyczne do silnika 5x5 mm otwór wewnętrzny

Lego Technic kołek pin z osią 6562
Mocowanie stalowe typu L do NEMA 17
płytka uniwersalna
wtyk JST XH2.54, złącze zaciskowe, listwa goldpin

Pewnie coś tu pominąłem, ale w 100-150pln można się zamknąć.

Oprogramowanie Micropython dla ESP32

Najłatwiej zainstalować edytor Thonny. On pozwoli wgrać automatycznie najnowsze oprogramowanie MicroPython. Można też pobrać je samemu z micropython.org. Rozbudowana dokumentacja do MicroPython jest na stronie projektu micropython.org. Edytor Thonny wydał mi się też najłatwiejszy w użyciu. Jeśli pracujesz na Windows będziesz potrzebował sterownika Serial USB. powinien się sam wyszukać po podłączeniu mikrokontrolera do komputera. Przydać się też może ESPTool i zapomniałbym o najważnieiszym Python for Windows z python.org.

Ustawienie stepstick-a

Sterownik silnika krokowego A4988 posiada potencjometr i należy nim ustawić napięcie wyjściowe, które wylicza się z wzoru. Sposób został opisany np. tu https://printo3d.pl/regulacja-stepstickow/. Dla mojego silnika i mojego sterownika, powinno to być 0,5-0,6 V.

Testowe podłączenie układu

Próbne podłączenie zrobiłem spinając wszystko przewodami do płytek stykowych.


A4988 PinPołączenie
VMOTBateria +
GNDBateria -
VDD3.3V
GNDGND ESP32
STP26 ESP32
DIR27 ESP32
1A, 1B, 2A, 2BSilnik
MS1, MS2, MS314, 15, 18 ESP32

Schemat poniżej:


Kod MicroPythona

Sposób sterowania silnikiem podejrzałem na stronie techtotinker.blogspot.com. Sterowanie przez przeglądarkę z hugokernel/micropython-nanoweb. Sposób obsługi klawiatury zaczerpnąłem z peppe8o.com. Obługa socketów z peterhinch/micropython-async.

Tu kod z obsługą keypad-a

# Kod Micropython dla ESP32 # Projekt MotoFocuser dla teleskopu Sky Watcher 1309 # Autor: Wojtek B. from machine import Pin from time import sleep_ms import uasyncio class stepperMotor: def __init__(self, stepPin, dirPin): self.step = Pin(stepPin, Pin.OUT) self.dir = Pin(dirPin, Pin.OUT) self.quarter = Pin(15, Pin.OUT) self.quarter.value(1) self.turn = 'S' self.speed = 0 self.phase = 0 #self.block = False self.queue = [] def change(self, turn, speed): # self.block = True #self.turn = turn #self.speed = speed self.queue.append([turn, speed]) # self.block = False print('Nowe-> turn:', self.turn, ' speed:', self.speed) async def rotate(self): r = {'L': 0, 'R': 1} print('Rotate') while True: # Get a "work item" out of the queue. if len(self.queue) > 0: # and self.block == False: #self.block = # print('Q len:', self.queue) params = self.queue[len(self.queue)-1] self.queue = [] print('p:', params) # podmieniam krok self.turn = params[0] self.speed = params[1] self.phase = 0 print('Nowe-> turn:', self.turn, ' speed:', self.speed) # wykonuję krok zgodnie z danymi if self.turn == 'S' or self.speed == 0: #stepper.rotate(0, 'R', 10000) # polecenia do A4988 # uasyncio.sleep(20) await uasyncio.sleep_ms(1) else: if self.speed == 2 and self.turn in ['R', 'L']: # s = 56 - 5 * self.phase # szybki s = 10 if self.phase < 11: self.phase += 1 print(s) elif self.phase == 12: s = 1 elif self.speed == 1 and self.turn in ['R', 'L']: # wolny s = 100 else: print('Err') # polecenia do A4988 self.dir.value(r[self.turn]) self.step.value(1) await uasyncio.sleep_ms(s) self.step.value(0) #await uasyncio.sleep_ms(s) class Keypad: def __init__(self): self.Pin0 = Pin(15, Pin.IN, Pin.PULL_DOWN) # GND self.pinR1 = Pin(2, Pin.OUT) # 3 self.pinR2 = Pin(0, Pin.OUT) # 4 self.pinL2 = Pin(4, Pin.OUT) # 1 self.pinL1 = Pin(16, Pin.OUT) # 2 self.keys = [self.pinL2, self.pinL1, self.pinR1, self.pinR2] self.labels = ['Lewo <<', 'Lewo <', '> Prawo', '>> Prawo'] self.turns = ['L', 'L', 'R', 'R'] self.speeds = [2, 1, 1, 2] self.states = [0, 0, 0, 0] async def run(self): print('Run') while True: for i, k in enumerate(self.keys): k.value(1) # sleep_ms(40) check = self.Pin0.value() if check != self.states[i]: print(self.labels[i], '=', check) if check == 1: pass motor.change(self.turns[i], self.speeds[i]) if check == 0: motor.change('S', 0) print('.') self.states[i] = check k.value(0) #print('Run',i) await uasyncio.sleep_ms(50) motor = stepperMotor(stepPin=26, dirPin=27) keypad = Keypad() loop = uasyncio.get_event_loop() loop.create_task(motor.rotate()) loop.create_task(keypad.run()) loop.run_forever()

Wersja na płytce uniwersalnej

Zastosowałem płytkę uniwersalną z otworami połączonymi po 3 szt. w rastrze 2,54mm THT i listwy goldpin. Gniazdo do silnika JST XH2.54. Wszystko w pudełku pełniącym rolę pilota, zawierającym gniazdo baterii.





ToDo

Trzeba sprawdzić: włączyć api www dla programu sterowania kamerą Raspberry Pi zastosowanie takiego silnika do prowadzenia osi RA