dexter1234 Napisano Luty 18, 2020 Udostępnij Napisano Luty 18, 2020 Witam wszystkich i oczywiście pozdrawiam ,jestem tu nowy więc za jakie kolwiek błędy przepraszam . Mam taki temat czy da się na arduino zbudować licznik motogodzin przebiegu całkowitego który nie będzie gubił pamięci po odłączeniu zasilania i przebiegu dziennego z możliwością kasowania? Jeśli tak to poproszę o jakieś wskazówki . Wszystkim pomocnym z góry dziękuje. Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Luty 19, 2020 Udostępnij Luty 19, 2020 @dexter1234 Witam na forum 🙂 Żeby nie stracić informacji o przebiegu możesz zapisać reprezentujące je dane liczbowe do pamięci nieulotnej. Albo karta SD wpięta po SPI, albo do pamięci wewnętrznej EEPROM (albo zewnętrznej również z SPI). Problem jest w ograniczonej liczbie cyklów zapisu - okolo 100tyś dla EEPROM. Czyli zapisywanie co minutę może nie być najlepszym pomysłem (zapisując coś co minutę, 2 godziny dziennie wyczerpiesz limit po 2 latach). Lepszym pomysłem może być zapisywanie tylko wtedy kiedy będzie to konieczne. Może np. zrób układ podtrzymujący zasilanie dla Arduino - ogniwo litowe z ładowarką, w momencie wykrycia spadku napięcia na zasilaniu, pomiary zapisywane są do EEPROMU, a następnie dodatkowe zasilanie się odłącza. Cytuj Link do komentarza Share on other sites More sharing options...
dexter1234 Luty 19, 2020 Autor tematu Udostępnij Luty 19, 2020 tak wiem , mam podłaczony pod spi moduł zegarka z pamiecią 24c32 tylko nie ogarniam pisania programu aby czas był naliczany w momencie pojawienia sie stanu wysokiego na którymś wejsciu i w razie potrzeby skasowany po wcisnieciu jakegoś switcha a zarazem nie gubił po wyłączeniu zasilania . Dlatego tu moja prośba o pomoc Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 19, 2020 Udostępnij Luty 19, 2020 Dnia 18.02.2020 o 10:18, dexter1234 napisał: Mam taki temat czy da się na arduino zbudować licznik motogodzin przebiegu całkowitego Napisz coś więcej o budowanym urządzeniu, pokaż jego schemat. 46 minut temu, dexter1234 napisał: tylko nie ogarniam pisania programu Co to znaczy? Czy nie wiesz jak ma działać program, czy nie potrafisz swojego "pomysłu na program" czyli algorytmu przełożyć na kod źródłowy C/C++? Pokaż co do tej pory zrobiłeś. Wiele osób od razu siada przed klawiaturą i próbuje pisać swoje programy. Warto jednak (sam się o tym przekonałem) czasami rozpocząć od stworzenia algorytmu programu czyli swoistego przepisu według, którego program ma działać. Taki algorytm można, a nawet trzeba sobie rozpisać, a najlepiej rozrysować. Widząc swój algorytm będziesz w stanie go przeanalizować i zoptymalizować. Kolejny krok to zapisanie swojego algorytmu w języku programowania. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
dexter1234 Luty 19, 2020 Autor tematu Udostępnij Luty 19, 2020 niestety jestem zielony i dopiero się uczę wiec odpowiem że nie mam pomysłu jak się do tego zabrać to ma być urządzenie do maszyny przemysłowej taki mały komputerek który będzie pokazywał obroty silnika , napięcie ładowania alternatora , ciśnienie oleju silnika , temperaturę wody no i z tym nie mam problemu ale ma też być licznikiem motogodzin przebiegu całkowitego maszyny i przebiegu dziennego którego da się skasować jakimś switchem Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 19, 2020 Udostępnij Luty 19, 2020 (edytowany) 1 godzinę temu, dexter1234 napisał: mam podłaczony pod spi moduł zegarka z pamiecią 24c32 Czyli projekt układu już chyba posiadasz. Pokaż ten projekt bo na razie tylko wiemy, że masz bliżej nieznany moduł RTC z pamięcią 24c32. Tylko nie wiemy (bo tego nie pokazujesz i o tym nie piszesz) dlaczego właśnie taki moduł, jakie ma pełnić funkcje w twoim urządzeniu itd. Nikomu nie będzie się chciało zgadywać jak zbudowane jest to urządzenie. Pokaż je i opisz. Wtedy będzie łatwiej coś doradzić. Moim zdaniem trudno mówić o programowaniu urządzenia gdy nie wiemy jak jest ono zbudowane. Pytanie zasadnicze moim zdaniem to - czego czas pracy ma być rejestrowany przez Arduino i skąd "Arduino ma wiedzieć", że urządzenie pracuje? Edytowano Luty 19, 2020 przez Belferek Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 19, 2020 Udostępnij Luty 19, 2020 1 godzinę temu, dexter1234 napisał: aby czas był naliczany w momencie pojawienia sie stanu wysokiego na którymś wejsciu Czyli algorytm zapisywania czasu włączenia i wyłączenia mógłby wyglądać np. tak: 1. Pobierz stan wejścia (digitalRead()) 2. Jeśli to stan LOW (wyłączone) to 7 3. Urządzenie pracuje. 4. Jeśli urządzenie włączono wcześniej to 1 5. Zapamiętaj, że urządzenie zostało włączone. 6. Zapisz czas włączenia i 1 7. Urządzenie wyłączone. 8. Jeśli wyłączono wcześniej to 1 9 Zapamiętaj, że zostało wyłączone. 10. Zapisz czas wyłączenia i 1 Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Luty 19, 2020 Udostępnij Luty 19, 2020 (edytowany) 1 godzinę temu, dexter1234 napisał: mam podłaczony pod spi moduł zegarka z pamiecią 24c32 Wygląda na to że masz coś takiego, co nie? RTC DS1307 1 godzinę temu, dexter1234 napisał: aby czas był naliczany w momencie pojawienia sie stanu wysokiego na którymś wejsciu i w razie potrzeby skasowany po wcisnieciu jakegoś Poczytaj o przerwaniach - zdarzeniach wywołanych np. wciśnięciem przycisku. W funkcji obsługi przerwania ustaw jakąś flagę (zmienną int, bool) która informuje że zliczamy czas i pobierz z zegara RTC aktualny czas, np. w sekundach ile tam sobie już uzbierał (interesuje nas różnica czasów). Możesz to zapisać do EEPROM, w sytuacji gdy padnie zasilanie to po wznowieniu, w bloku setup() odczytasz ostatnie dane z EEPROMu. Jak wciśniesz kolejny raz przycisk, sprawdzisz jaki jest stan tej flagi, odczytasz nowy czas, wyliczysz różnicę i gotowe. Edit: @Belferek pisaliśmy w tym samym czasie 🙂 Edytowano Luty 19, 2020 przez Gieneq Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 19, 2020 Udostępnij Luty 19, 2020 (edytowany) #define URZADZENIE 2 //na tym pinie stan HIGH oznacza wlaczone urzadzenie boolean stan_urzadzenia; //true jesli wlaczone false jesli wylaczone void zapiszCzas_ON() { //funkcja zapisuje czas wlaczenia np. w EEPROM } void zapiszCzas_OFF() { //funkcja zapisuje czas wylaczenia np. w EEPROM } //-------------------------------------------------------------------------- void setup() { pinMode(URZADZENIE,INPUT_PULLUP); stan_urzadzenia=false; } //-------------------------------------------------------------------------- void loop() { if(digitalRead(URZADZENIE)==HIGH) //sprawdzamy stan URZADZENIA (1) { //urzadzenie jest wlaczone (3) if(stan_urzadzenia==false) //urzadzenie bylo wylaczone { stan_urzadzenia=true; //zapamietaj, ze wlaczono (5) zapiszCzas_ON(); //zapisz czas wlaczenia (6) } } else //(2) { //urzadzenie wylaczone (7) if(stan_urzadzenia==true) //urzadzenie bylo wlaczone { stan_urzadzenia=false; //zapamietaj, ze wylaczono (9) zapiszCzas_OFF(); //zapisz czas wylaczenia (10) } } } Tak mógłby wyglądać jeden z szablonów Twojego programu - nie uwzględnia przycisku i innych drobiazgów 🙂 Edytowano Luty 19, 2020 przez Belferek 1 Cytuj Link do komentarza Share on other sites More sharing options...
dexter1234 Luty 20, 2020 Autor tematu Udostępnij Luty 20, 2020 zestaw arduino uno orginał , lcd 4x16 blue , RTC DS3231 . Dzisiaj po pracy przysiądę i wrzucę ten screan , zobaczymy co z tego wyjdzie . Jeszcze raz bardzo dziekuje wszystkim za zainteresowanie i pomoc, pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
dexter1234 Luty 21, 2020 Autor tematu Udostępnij Luty 21, 2020 Witam ponownie po wgraniu screena eprom nalicza i zapisuje ale po ponownym uruchomieniu (czyli stanu HIGH na wej.) nie zaczyna liczyć od zapamietanego czasu tylko liczy od czasu rzeczywistego zegara no i brak funkcji resetowania licznika Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 21, 2020 Udostępnij Luty 21, 2020 (edytowany) 46 minut temu, dexter1234 napisał: ale po ponownym uruchomieniu (czyli stanu HIGH na wej.) nie zaczyna liczyć od zapamietanego czasu Bo pokazany szablon tego nie uwzględnia. Tutaj sam popracuj nad programem i pokaż co wymyśliłeś. Może warto zapamiętać w eeprom ostatni stan_urzadzenia? Warto zastanowić się nad tym jaka maksymalna może być "przerwa" w zasilaniu by potraktować ją jako "ciągłość pracy"? Tu będziesz musiał porównać czas bieżący z RTC z ostatnio zapisanym. Nie wiem jakiej używasz biblioteki do obsługi swojego RTC. Ja bym polecał RTC by Makuna (https://github.com/Makuna/Rtc) Autor udostępnia obszerne WIKI na temat swojego produktu - https://github.com/Makuna/Rtc/wiki Edytowano Luty 21, 2020 przez Belferek Cytuj Link do komentarza Share on other sites More sharing options...
dexter1234 Luty 21, 2020 Autor tematu Udostępnij Luty 21, 2020 czarna magia dla mnie no cóż muszę się doszkolić ale dziękuje jak na coś wpadnę dam znać Cytuj Link do komentarza Share on other sites More sharing options...
Belferek Luty 21, 2020 Udostępnij Luty 21, 2020 Tu nie ma czarnej magii - wróć do algorytmu. Nie musisz umieć programować by ustalić "przepis" (algorytm) na to jak program ma działać. Pokaż swój przepis - pomysł wtedy spróbujemy zamienić go na działający program. Cytuj Link do komentarza Share on other sites More sharing options...
dexter1234 Luty 21, 2020 Autor tematu Udostępnij Luty 21, 2020 ok algorytm chyba rozumiem ale co z rozpoczęciem naliczania czasu od wartości na której się zatrzymał ? Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Dołącz do dyskusji, napisz odpowiedź!
Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!