Skocz do zawartości

rafalt73

Użytkownik
  • Liczba zawartości

    765
  • Rejestracja

  • Ostatnia wizyta

  • Wygrane w rankingu

    4

Zawartość dodana przez rafalt73

  1. To przy okazji podzielę się ciekawym znaleziskiem co będzie poręczne szczególnie początkującym. Zapisywanie danych w pamięci EEPROM, szczególnie innych niż Int jest dość uciążliwe - wymaga operacji na bitach, dzielenia długich cyfr i lokowania ich pod kolejnymi adresami. Potem te adresy trzeba ustalić i sklejać kawałki żeby finalnie odczytać daną wartość. Dal początkujących polecam dołożyć do biblioteki <EEPROM.h> dodatek "EEPROMAnything.h" - można zapisywać wszystkie typy zmiennych od tak, po prostu. Odczyt jest też banalnie prosty. Składnia zapisu dowolnej wartości (może być z przecinkami): EEPROM_writeAnything(ADRES, WARTOŚĆ); przykład EEPROM_writeAnything(1, 25.34); Składnia odczytu wartości EEPROM_readAnything(ADRES, ZMIENNA); Zmienna musi być zdefiniowana wcześniej o określonym typie, np float ZMIENNA; Do niej zostanie przypisana odczytana WARTOŚĆ
  2. Dzięki Łukasz, przy okazji już widzę że w samym sterowniku ASCOM trzeba będzie oprogramować funkcję IsMoving (zastanawiałem się wcześniej po co to w ogóle jest). Teraz widzę że jak Maxim wysyła komendę Move (np 3000 kroków) to przycisk ABORT zapala się i gaśnie. Tak jak by po paru krokach silnika, program "uznał" że ruch jest już wykonany i przycisk dezaktywuje się, podczas gdy w rzeczywistości silnik ciągle się jeszcze kręci i nie osiągnął zadanej pozycji. Myślę, że z tym sobie już poradzę.
  3. Łukasz WIELKIE DZIĘKI. Genialne, dwie proste linijki kodu załatwiły sprawę #include <AccelStepper.h> #include <MultiStepper.h> #include <Timer.h> AccelStepper stepper = AccelStepper(AccelStepper::HALF4WIRE, 4, 5, 6, 7); Timer timer; String MyString; String Command; long Value; void setup() { Serial.begin(57600); stepper.setMaxSpeed(400); stepper.setAcceleration(600); stepper.setCurrentPosition(100); } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); if (inChar == '#') { SerialCommand(MyString); MyString = ""; } else { MyString += inChar; } } } void loop() { stepper.run(); timer.update(); } void SerialCommand(String ASCOM_Command) { Command = String(ASCOM_Command.charAt(0)); String Txt_Value = ASCOM_Command.substring(1); Value = Txt_Value.toInt(); /*Commands, an example: M500# - start motor to move until get 500 position P - check actual focuser position M - Move to specific position called by client application H - Halt / Abort */ switch (ASCOM_Command.charAt(0)) { case 'P': Serial.println(stepper.currentPosition()); break; case 'M': stepper.moveTo(Value); break; case 'H': stepper.stop(); Serial.println("H#"); break; } }
  4. Muszę to przetestować i zrozumieć. Tak na szybko jak patrzę proces jest następujący Serial port daje komendę, np. R:200/n i wywoływana jest Twoja funkcja moveStepper(200) Funkcja moveStepper za pomocą bibliotecznej funkcji stepper.moveTo(200) ustawia nową pozycję focusera ale jeszcze nie powoduje ruchu (przynajmniej u mnie moveTo nie kręci silnikiem) Nowa pozycja jest zadana a program skończył wykonywanie funkcji więc wraca do pętli głównej Loop w której jest rozkaz stepper.run() stepper.run() robi tylko jeden krok a że działa w pętli będzie to powtarzał tyle razy aż osiągnie zadaną pozycję 200 Ponieważ do pętla więc system jest w stanie słuchać innych rozkazów...OK? Wiem, muszę posiedzieć na spokojnie, ale o to chodzi?
  5. Hmm...za przeróbkę biblioteki to się nie biorę bo wciąż jestem na etapie raczej podstaw no może już trochę poszerzonych w zakresie C# (arduino) czy VB.Net (Driver ASCOM) - ale ten pomysł z TIMER'em brzmi fajnie. Muszę się nad tym zastanowić choć na pierwszą myśl przychodzi mi do głowy rezygnacja z funkcji RunToPosition (ruch ciągły aż do osiągnięcia zadanej wartości) i zastąpieniem jej funkcją Run() wykonuje tylko jeden krok ale jakoś w pętli do osiągnięcia finalnej pozycji. Czyli tak aby pomiędzy każdym ruchem system mógł sprawdzić "inne" rzeczy. W takim kierunku kombinować dalej?
  6. Prace nad nauką kodowania i projektowaniem własnego sterownika ASCOM trwają. Udało mi się skomunikować MaximDL z moim arduiono obsługującym silnik. Maxim czyta bieżącą pozycję i potrafi wysłać komendę zmiany pozycji - ta część działa super (ponad 2 tygodnie pracy wieczorami Ale...natknąłem się na problem, którego póki co nie umiem rozwiązać. JAK PRZERWAĆ PRACĘ SILNIKA - ABORT. Myślałem że problem jest gdzieś w kodzie sterownika ale po paru testach ewidentnie dotyczy on kodu samego Arduino. Poniżej załączam prosty testowy program, który podejmuje działania w zależności od komendy jaką się wpisze w porcie szeregowym. Czyli, np: wpisuję komendę M5000# i silnik rusza do pozycji 5000. W czasie pracy żadna komenda już nie działa - silnik musi skończyć ruch dopiero przyjmowane są kolejne komendy z portu szeregowego. Co tu zrobić żeby kod nie czekał na zakończenie wykonywanej komendy tylko żeby nasłuchiwał i odbierał inne, np: STOP? Jak tu zaimplementować wielowątkowość? #include <AccelStepper.h> #include <MultiStepper.h> AccelStepper stepper = AccelStepper(AccelStepper::HALF4WIRE, 4, 5, 6, 7); String MyString; String Command; int Value; void setup() { Serial.begin(57600); stepper.setMaxSpeed(400); stepper.setAcceleration(600); stepper.setCurrentPosition(100); } void serialEvent() { while (Serial.available()) { char inChar = (char)Serial.read(); if (inChar == '#') { SerialCommand(MyString); MyString = ""; } else { MyString += inChar; } } } void loop() { } void SerialCommand(String ASCOM_Command) { Command = String(ASCOM_Command.charAt(0)); String Txt_Value = ASCOM_Command.substring(1); Value = Txt_Value.toInt(); /*Komendy, np: M500# - uruchamia silnik do pozycji 500 P - get position to establish current focuser position M - Move to specific position called by client application H - Halt / Abort */ switch (ASCOM_Command.charAt(0)) { case 'P': Serial.println(stepper.currentPosition()); break; case 'M': stepper.moveTo(Value); stepper.runToPosition(); break; case 'H': stepper.stop(); Serial.println("H#"); break; } }
  7. Łukasz, nie ma chyba na forum osoby która by Cię nie znała i której byś nie pomógł w potrzebie. Życzę Ci więc oprócz oczywiście zdrowia i fantastycznych warunków atmosferycznych dużo cierpliwości, pogody ducha i satysfakcji z bycia jednym z liderów Forum Astronomicznego. Z mojej strony podziękowanie za super kontakt, wsparcie i otwartość. Wszystkiego najlepszego Łukasz
  8. 1. Jacek 2 - 1 szt. L kolor 392. Leszek Pyra - 1 szt. L , plus 1 szt. M jednak Białe3. SZKLARZ - 1 szt.XXL kolor 014. JacekE - 1 szt. XL, kolor 025. sferoida - 1 szt. XL kolor czarny=01 36 zł.6. Ossek - 1szt L, kolor biały 007. Mirek - 1 szt. XXL kolor 02 granatowy8. Pery-1 szt.M kolor 449. jolo - 1 szt. XL kolor 0210. Cyberboss - 1 szt. M kolor 94 36 zł.11.ignisdei - 1 szt. XXL kolor 07 36 zł.12. Gayos - 1 szt. L kolor 0213. Zielu - 1szt L kolor 06 36 zł.14. zarek - 1szt L kolor 01 36 zł.15. WIESIEK31 2szt XL kolor 01 i 0716. Krisq - 1szt XXL kolor 0117. Pawcio - 1szt XL kolor 01 18. kenny - 1 szt XL kolor 94 19. DarX86 - 1szt XXL kolor 02 20. Rafalt73 - 1 szt XL kolor 05
  9. Prośba o podanie / przypomnienie (nie mogę znaleźć) w tym wątku sposobu zapłaty - np nr. konta bankowego (jeśli to ma być przelew)
  10. Łukasz, przegryzam się powoli powoli przez Twój kod Arduino i mam pytanie. Czy sterownik ASCOM, który napisałeś wysyła informację złożoną z komendy i parametru jednocześnie? Na przykład jeśli focuser ma "iść" do nowej pozycji 1000 to rozkaz będzie wyglądał następująco: R1000\n? Nie widzę jaką strukturę ma sterownik ASCOM, ale ta linia kodu String param = command.substring(2); sugeruje, że parametr odczytywany jest począwszy od drugiej pozycji w rozkazie. Czyli R to komenda move to new position, 1000 to nowa pozycja focusera a \n to znak końca rozkazu. Czy tak faktycznie jest?
  11. Cześć Paweł, widzę że byłeś dość aktywny w temacie "astro-pudełka szytego na miarę" pomyślałem więc że przegryzłeś temat i spytam Cię o jeną rzecze. Proszę wytłumacz mi jak skomunikować silnik focusera z np. MaximDL poprzez swoje pudełko. Jak widzisz na poniższym zdjęciu opracowałem swoje pudełko w oparciu o Arduino Nano ze zintegrowanym aktywnym HUB'em USB. Chciałbym teraz (następna wersja) dołożyć możliwość sterowaniem focusera. JAK ??? Wiem że muszę wstawić mostek L293D, ale jak to ma się komunikować ze sterownikami MaximDL? Teraz Arduino Nano działa samodzielnie (bez podłączenia do komputera) - jest oprogramowane. Czy z silnikiem musi być połączone przez HUBa z komputerem sterującym??? Z góry dziękuję :)

     

    Astro_Box.jpg.5ca0e7c6d32668a6920e2be6fa883cc5.jpg

    1. Pawcio

      Pawcio

      Cześć , właśnie wróciłem z astrobazy - było u nas zebranie PTMA Toruń nawet były ze dwie osoby z Włocławka :) Ok,  żeby można było sterować focuserem za pomocą np. Maxima trzeba "zaszyć" w oprogramowaniu arduino odpowiedzi i reakcje  focusera na listę rozkazów przesyłanych przez port rs, zgodnych z listą rozkazów zgodnych z ASCOM, do tego trzeba napisać sterownik pod system operacyjny w taki sposób aby ascom "widział" Twój focuser - tutaj więcej podpowie Ci Jolo ja bawiłem się w programowanie baardzo dawno...

  12. rafalt73

    Zasilanie setupu

    Nie wiem do końca czy konieczne ale w czasie testów mini PC rozgrzewał się dość mocno. Być może takie temperatury (ja oceniam na 50-60*C) nie są groźne, jednak skorzystałem z zainstalowanego wentylatora, który miał chłodzić laptopa (w poprzedniej konfiguracji) w zamkniętej skrzynce. Teraz wentylator pracuje na 4 prędkościach, sterowany wyjściem PWM - temperatura utrzymuje się w granicach 30*C. Na razie śmiga, nic się nie zawiesza i co najważniejsze, przy zasilaniu z przetwornicy nie mam problemów z rozpoznawaniem sprzętu (miałem takie przy zasilaniu innym niż sieciowe). Ale...zgadzam się z Tobą że to bardziej gadżet niż konieczność
  13. rafalt73

    Zasilanie setupu

    Przy okazji, że temat zasilania setup'u odżył, podzielę się zmianami jakie wprowadziłem w tym zakresie. Zasilanie akumulatorem 80Ah (wyrzuciłem z układu przetwornicę 12VDC -> 220VDC i zasilacz XBOX. Dzięki temu ograniczyłem straty ok 2A) Zamieniłem laptopa na mini PC - Konieczne zasilanie przez przetwornicę Step-Down 12VDC -> 5VDC. Dołożyłem chłodzenie mini PC sterowane przez arduino Zasilanie kamery ATIK383 przez przetwornicę Step-Up 12VDC -> 13.5VDC Sterowanie PWM grzałkami Monitoring warunków atmosferycznych Zabudowany Mini PC i pudełko mikro-kontrolera Przetwornica Step-down do zasilania mini PC ... i pudełko montowane na teleskopie zawierające aktywny HUB USB, zasilanie kamery 13.5VDC, sterowanie grzałkami i monitoring warunków atmosferycznych
  14. Łukasz, zdjęcie fantastyczne. Bardzo mi się podoba. Czy stosujesz jakieś techniki wyostrzania? Czy po prostu dobrze łapiesz ostrość?
  15. 1. Jacek E. nr 3 Pyrlandia 2. MarWo pyrlandia pok. 6 3. Virus - pyrlandia pok6 4. darius - Pyrlandia pok. 7 5. kapral - Pyrlandia 7 6. szdom1 - Pyrlandia 7. bez żarcia, koszulka XL 7.Anva -Pyra 3 8. SZKLARZ + zawodniczka 35,Stary Gościniec. 9. matti_94 - pokój Trójmiasto 10. Artir - Pyrlandia pok. 6 11. Charon _X - pyrlandia (pokój obojętny) 12. Mirek Pyrlandia pokój 6 z jedzeniem koszulka xxl 13. Lukasz83 - Pyrlandia pokój nr 5 14. Gayos - Pyrlandia pok. 6 15. stefanchm - pyrlandia pok. 6 16. sp3occ - Pyrlandia pok. 6 - koszulka XL 17. Zielu - Pyrlandia pok. 3 18. - Pyrlandia pok. 2 19. jolo - Pyrlandia pok. 3 20. towerfox- Pyrlandia pok. 7 21. Klucha- Pyrlandia pok. 7 22. Ossek - Pyrlandia pok. 2 23. Marko7 - Gościniec Nowy, pokój nr 6, bez wyżywienia 24. Jacek 2 - Pyrlandia pok. 2 25. kenny - Pyrlandia pok. 2 26. Piotrczwarty + 3 osoby Gościniec Nowy, pokój nr 6, bez wyżywienia 27. sferoida - Pyrlandia pok.3 28. seyfert - Pyrlandia pok. 5 29. przemo77 - Pyrlandia 4 30. thomson - Pyrlandia 5 (odpadam, niestety nie będzie mnie wtedy w PL) 30. prestoneq - Pyrlandia pok. 4 31. ignisdei - Pyrlandia 7 32. Acidtea - Pyrlandia 1 33. Maciej - Pyrlandia 1 34. Jajak - Pyrlandia 1 35. Polaris - Pyrlandia 1 36. Thomas - Pyrlandia 1 37. Pery - Pyrlandia pok.4 38. Krzysztof G. Pyrlandia 4 39. Bandros Pyrlandia pok.6 40. Panasmaras - Pyrlandia 5 41. Marek Gdańsk - Pyrlandia 5 42. Ola - Pyrlandia 5 43 - 44. Janusz G. + Jurek Gościniec Nowy, pokój dwuosobowy 45. OPrzemo + 2 osoby Gościniec Nowy 46. Balubk - Gościniec nowy, pokój 5 (bez wyżywienia) 47. ewa - Pyrlandia pok. 2 48. cyberboss - Szkoła pod kasztanami, parter pokój obojętny (Pyrlandia - lista rezerwowa, pokój obojętny), koszulka M 49. Marcin (Paździoch) przyjedzie razem ze mną i z Kluchą- obojętnie gdzie będzie 50. puchciu - Pyrlandia 4 51. Piotr_A - Stara szkoła, pok. 2 os. 52. i 53. Pawcio + Mona 2 x (3 doby bez wyżywienia + opłata zlotowa) Stary Gościniec (tam gdzie Willow i Cesar) 54. rafalt73 - pełen pobyt i wyżywienie (jeśli jest jeszcze miejsce). Bardzo chciałbym Was poznać
  16. Teraz z innej beczki. Na poniższym filmiku chciałem pokazać wydajność procesora i obciążenie pamięci w czasie pracy FreePC w czasie pracy TeamViewera i moment otwarcia aplikacji (MaximDL + Focus MAX). Generalnie przy pracujących programach procesor wykorzystywany jest w ok. 50% https://youtu.be/QHkIPP2_Bbo
  17. Jest dokładnie tak jak napisał Mateusz! To co proponuje Jacek do tej pory sprawdzało się idealnie (działał laptop, router, Xbox...) i to na bazie tego pomysłu robiłem swoją dotychczasową skrzynkę. ALE MiniPC w tym układzie nie działa! Jestem tego pewny i sprawdziłem organoleptycznie Jak skrzynkę podłączę do sieci - MiniPC DZIAŁA i mogę do niego podłączać co chcę. Jak skrzynkę podłączę do akumulatora przez przetwornicę - MiniPC DZIAŁA ale nie mogę do niego podłączyć HUB'a USB
  18. To jest dokładnie ten sam HUB który podlinkowałeś. Ma swoje zasilanie i można go obciążać do 3A. Ma 5 złącz USB i 2 wyjścia typu USB na 5V - stąd teraz pociągnąłem zasilanie MiniPC
  19. No i właśnie Jacku w takiej konfiguracji to mi nie działa. Czyli Akumulator -> przetwornica -> oryginalny zasilacz MiniPC = komputerek działa ale nie przyjmuje HUB'a USB. Nie łapie dlaczego
  20. Mógłbyś coś polecić? Nawet nie wiem jak tego szukać, co wpisać Nie mam regulowanego wyjścia bo to nie oryginalny AstroHub tylko "chińska" podróbka (czytaj włocławska)
  21. Mateusz, może faktycznie wygląda to karkołomnie ale przy poprzednim kompie Dell nie wiedziałem jak go zasilić i zrobiłem przetwornicę. Poza tym wydawało mi się że zasilacz XBOX stabilizuje napięcie a przy okazji jest świetnym zabezpieczeniem przepięciowym. Co do strat to musze się z Tobą zgodzić, na takich figurach tracę ok 2A. Sugerujesz żeby wywalić przetwornicę i wstawić coś małego lokalnego żeby zasilić router 8V i ewentualnie MiniPC 5V (przetwornice Step - Down)?
  22. Jestem po pierwszych testach w polu z użyciem MiniPC. Wszystkie testy na sucho w domu przeszły idealnie, ale ile słów K...A padło tego wieczoru sam nie potrafię zliczyć (to była moja pierwsza piękna noc od miesięcy - sobota, bez Księżyca i chmur ) . Komputerek odpalił się pięknie, połączenie przez TV12 wskoczyło nienagannie, ale tuż po podłączeniu HUB'a USB w menadżerze urządzeń rozpoczęły się cuda. System co chwila odświeżał listę urządzeń i raz widział HUB'a raz nie (z częstotliwością 1s). Nie było mowy o podłączeniu żadnego innego urządzenia. Poziom adrenaliny był tak wysoki, że nie ryzykowałem dalej i złożyłem zabawki. PRZYCZYNA: W domu prowadziłem testy na zasilaniu sieciowym, MiniPC podpięty był przez oryginalny zasilacz - wszystko działało. W polu też wykorzystywałem oryginalny zasilacz ale nie korzystałem z sieci tylko z akumulatora i przetwornicy 12VDC / 220VAC. Do tej pory z przetworzonego 220V zasilałem stary komputer, router, zasilacz XBOX i wszystkko działało, ale to małe cholerstwo na takim układzie nie działa!!! Nie znam się ale może prąd nie ma pełnej charakterystyki sinusoidalnej i jakoś to się przekłada na MiniPC. Czyli komputerek się uruchamia, pracuje ale nie da sobie podpiąć HUB'a. Rozwiązaniem okazało się (dopiero dziś) zasilanie go właśnie z HUB'a przez wyjście 5V - bez zasilacza sieciowego. DZIAŁA!!! Zwróćcie uwagę na ten biały przewód USB na zdjęciu - to zasilanie MiniPC
  23. rafalt73

    Jacek E

    Z wielką przyjemnością dołączam się do życzeń. Wszystkiego naj, naj, najlepszego. 100 lat!!!
  24. Po wstępnych testach opisanych przez kolegę Jolo, zainstalowałem u siebie to maleństwo. Zamieniłem dużego, starego laptopa Dell na FreePC Modecom. Ten komputer/pendrive mieści się w dłoni i z powodzeniem obsługuje wszystkie aplikacje z których korzystam (Maxim, Focus Max, platforma ASCOM, TeamViewer). Póki co testowałem na sucho (zaczyna mi to wchodzić w krew ), nic się nie wiesza wykorzystanie procesora na poziomie 12%. Połączenie WiFi stabilne, TeemViewer działa OK. Po instalacjach sterowników i oprogramowania na dysku pozostało mi 10GB. W czasie pracy ma dość wysoką temperaturę na oko 50*C - mam nadmuch powietrza więc temperatura znacznie spada, wydaje się być OK. Też jestem ciekaw jak się sprawdzi w praktyce. Dla potrzeb zdjęcia zostawiłem w skrzynce dotychczasowy komputer dla porównania gabarytów.
  25. Koledzy, pytanie z innej beczki. Na schemacie poniżej moduł pomiaru prądu (ACS715) włączony jest w układ na linii "+". Niechcący włączyłem swój układ na linię "-" i wszystko skręciłem a to oznacza że jak bym chciał zmienić to muszę się sporo napracować śrubokrętem i nie tylko. Pytanie czy ma to znacznie? Wyniki pomiaru otrzymuje z minusem ale to nie jest problem bo mogę to pomnożyć przez -1 i wynik będzie dodatni. Natomiast same wartości pomiarowe nie są stałe - wahają się od -0.7 do -1.9 A. Czy to kwestia dokładności pomiaru (moduł ma zakres pomiarowy 0-30A)? Czy może spowodowane to jest wpięciem pomiaru na GND? Sam nie wiem może coś we współczynnikach w kodzie? Nie daje mi to spokoju bo mam drugi lokalny pomiar natężenia prądu Moduł Amperomierz / Voltomierz 10A- jest stabilny i wskazuje 2.0 - 2.2 void CURRENT() { int ACS_mVperAmp = 68; int ACS_RawValue= 0; int ACS_offset = 2500; double ACS_Voltage = 0; ACS_RawValue = analogRead(PIN_Current_measurement); //Read analog value from ACS711 signal ACS_Voltage = (ACS_RawValue / 1024.0) * 5000; // Gets mV ACS_Amps = ((ACS_Voltage - ACS_offset) / ACS_mVperAmp); //Current calc. }
×
×
  • 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ę.

© Robert Twarogal 2010-2024