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


Brak komentarzy:

Prześlij komentarz