Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 24 mar 2026, o 22:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 16 mar 2014, o 20:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 mar 2014
Posty: 150
Lokalizacja: Staszów
Pomógł: 12

Witam twórców i użytkowników forum,

Dla uściślenia, zegar astronomiczny, o jaki tutaj chodzi, to nic innego jak urządzenie włączające światło (lub inne urządzenie) po zachodzie słońca i wyłączające je o świcie. Nie trzeba dodawać, że te czasy są codziennie inne i zwykły zegar czasowy odpada.

Jako bardzo początkujący użytkownik mikroprocesorów mam wiele wręcz fundamentalnych pytań w tym temacie.
Do tego projektu z pewnością potrzeba:
a) przekaźnik sterowany niskim napięciem np. 5V, zamykający obwód 230 V, jak np. taki:

Obrazek

b) moduł RTC, np taki:

Obrazek

c) mikrokontroler.

Zadaniem mikrokontrolera jest zainicjowanie działania przekaźnika (co oczywiste).
Moduł RTC służy jako wzorzec czasu dla mikrokontrolera.
Aby mikrokontroler mógł wykonać swoje zadanie potrzeba albo:

a) wykonać raz dziennie obliczenia momentu wschodu i zachodu słońca, np. według tego algorytmu:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Z tego, co zdążyłem się już zorientować z BB, to zadanie nieciekawe dla mikrokontrolera, bo wykonywane na liczbach zmiennoprzecinkowych, do tego dochodzą sinusy, cosinusy, tangensy i inne papry. I pierwsze pytanie - czy to w ogóle wykonalne na popularnych (tanich) mikrokontrolerach Atmel?

b) obliczyć zewnętrznie (np. na komputerze) moment wschodu na komputerze na dany dzień
np. dla dnia dzisiejszego to 05:57. Następnie obliczyć te same wielkości dla kolejnych dni (np na 180 dni naprzód i różnicę zapisać w jakiejś pamięci (nieulotnej mikrokontrolera?, zewnętrznej - choćby tej przy RTC?) w postaci tabeli. Np jutro słońce wstanie o 6:00, pojutrze o 6:03.
Więc elementy tej tabeli to liczby całkowite, jednocyfrowe. Czyli ta tabela byłaby 180 elementowa, zawierająca liczby całkowite.

Proszę w tym momencie o trzeźwe spojrzenie doświadczonych użytkowników i praktyków i przekazanie mi krytycznych uwag, wniosków, rad, przestróg itd., odnośnie tego pomysłu, za które już teraz dziękuję.

_________________
Ad augusta per angusta



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2014, o 20:22 
Offline
Nowy

Dołączył(a): 09 maja 2012
Posty: 9
Pomógł: 1

Spoko, wyrobi się. Masz przecież cały dzień na obliczenia, od wschodu do zachodu ;-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 mar 2014, o 22:04 
Offline
Nowy

Dołączył(a): 30 wrz 2012
Posty: 15
Pomógł: 0

Wykona to w mniej niż sekundę. Przykładowo - Gdy ktoś chce programowo generować sinusoidę to musi policzyć 40000 sinusów na sekundę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2014, o 12:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 sty 2014
Posty: 116
Pomógł: 9

Jeśli urządzenie będzie pracowało w stałym miejscu to po prostu tablica wschodów i zachodów na cały rok i po kłopocie :) Ale jestem przekonany, że wg. algorytmu też sobie poradzi.

_________________
"Actum ne agas!"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2014, o 21:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 mar 2014
Posty: 150
Lokalizacja: Staszów
Pomógł: 12

Dziękuję tym, którzy przekazali merytoryczne uwagi.
Moje obawy pojawiły się po przeczytaniu BB i napotkaniu tam informacji o niespecjalnym radzeniu sobie mikrokontrolerów z liczbami zmiennoprzecinkowymi, przepełnieniem stosu, wynikłymi stąd nieprzewidywalnymi działaniami. Na pewno nie chodziło o czas wykonywania tych operacji.

Obecnie napisałem kod. Dostałem taki wynik kompilacji po wykonaniu pełnego algorytmu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zatem wszystko wydaje mi się być pod kontrolą.
Obecnie pracuję nad poprawnością tego kodu (w rozumieniu, czy podaje prawidłowe liczby).
Zapytam jeszcze, czy jest możliwość pod ECLIPSE w jakiś sposób dowiedzieć się jaka jest wartość obliczonych zmiennych (wyświetlić je czy gdzieś podejrzeć - coś w rodzaju polecenia "printf").
Dziękuję raz jeszcze i pozdrawiam.

_________________
Ad augusta per angusta



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2014, o 21:45 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Odpowiednikiem konsoli dla mikrokontrolerów jest USART (UART). Dodaj sobie odpowiednie biblioteki i dołóż przejściówkę USB<->UART i przykładowo poleceniem uart_putint(jakas_zmienna); wyślij do PC wartość interesującej zmiennej.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 mar 2014, o 21:53 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

chi.cygni napisał(a):
Moje obawy pojawiły się po przeczytaniu BB i napotkaniu tam informacji o niespecjalnym radzeniu sobie mikrokontrolerów z liczbami zmiennoprzecinkowymi


no tylko że "co nieco" przejaskrawiłeś sobie tą sytuację w głowie

bo są biblioteki w C do obsługi liczb zmiennoprzecinkowych i spokojnie można ich używać ale coś za coś - zwykle to pociąga za sobą np duże zużycie pamięci Flash, i jak ktoś sobie weźmie ATtiny2313 i zaczyna się bawić zmiennymi typu float to za chwilę biegnie na forum z pytaniem dlaczego program po kompilacji nie mieści mi się w procku ?

Druga rzecz - MNÓSTWO obliczeń z liczbami zmiennoprzecinkowymi można robić na liczbach całkowitych i pokazuję to w BB chociażby na przykładzie ADC ale także w rozdziale z temperaturą na 1wire itp

nawet jak się używa sinusów, cosinusów to nadal można poradzić sobie TYLKO z użyciem liczb całkowitych a do tego tablicowaniem ....

nie mówię - że wszystko jest sens tablicować - to zależy od kontekstu i projektu ....

więc nie popadaj w skrajności tylko najpierw postaraj się poćwiczyć ten C z BB ;)

a odnośnie tablicowania sinusów poczytaj sobie ciekawy artykulik naszego zacnego kolegi Krauser - link do niego znajdziesz na moim blogu:

http://mirekk36.blogspot.com/2013/06/av ... trick.html

------------------------ [ Dodano po: 1 minucie ]

chi.cygni napisał(a):
Zapytam jeszcze, czy jest możliwość pod ECLIPSE w jakiś sposób dowiedzieć się jaka jest wartość obliczonych zmiennych (wyświetlić je czy gdzieś podejrzeć - coś w rodzaju polecenia "printf").


tu nie chodzi o Eclipse - ale tak jak też pisze wyżej Krauser - użyj RS232 - i popatrz jak można sobie wygodnie nawet podglądać dane z procka ;)

http://mirekk36.blogspot.com/2013/05/te ... z-lcd.html

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2014, o 11:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 mar 2014
Posty: 150
Lokalizacja: Staszów
Pomógł: 12

mirekk36 napisał(a):
no tylko że "co nieco" przejaskrawiłeś sobie tą sytuację w głowie.

Prawda, ale nie mam jeszcze żadnego punktu odniesienia i wszystko biorę prawie dosłownie.

mirekk36 napisał(a):
Druga rzecz - MNÓSTWO obliczeń z liczbami zmiennoprzecinkowymi można robić na liczbach całkowitych i pokazuję to w BB chociażby na przykładzie ADC ale także w rozdziale z temperaturą na 1wire itp.

Też prawda, tyle, że ja próbuję zrobić jedną rzecz w danym czasie - bo się uczę.
Tak, że nawet nie próbuję otwierać nowych tematów, aby nie tworzyć w głowie kolejnych problemów. Nie ogarnę wszystkiego na raz. Mi się jeszcze nazwy i terminy plączą.

mirekk36 napisał(a):
więc nie popadaj w skrajności tylko najpierw postaraj się poćwiczyć ten C z BB ;)

No to tu, to już pojechane po całości. Więcej współczucia i zrozumienia dla początkującego. A w zasadzie tylko zrozumienia. Ja jeszcze jestem na etapie próby ogarnięcia tematu. Pierwszego opornika w życiu i płytkę stykową kupiłem w styczniu (tego 2014 roku). A jestem lekko starszy Mirku od Ciebie. Nie ta głowa co kiedyś. Pocieszam się, że i tak lepsza od niejednej młodszej.

Dziękuję za podane przykłady i rozwiązania - podziękowania także dla kolegi Krauser.
Z czasem spróbuję je wprowadzić w życie. Natomiast w tej chwili bardziej korzystne dla mnie wydaje mi się sprawdzenie poprawności działania kodu w zewnętrznym kompilatorze C. Co, prawdę mówiąc, już się stało. Działa dobrze.

Dziękuję raz jeszcze i pozdrawiam.

_________________
Ad augusta per angusta



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2014, o 11:25 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

chi.cygni napisał(a):
No to tu, to już pojechane po całości. Więcej współczucia i zrozumienia dla początkującego


ależ ja ciebie doskonale rozumiem .... tyle że staram się wskazać miejsca gdzie mówię o pewnych zagadnieniach, które mogą się przydać.

Zresztą tak pisałem tę książkę - i na praktycznych przykładach pokazuję sporo różnych technik programowania.

Więc to absolutnie nie jest tak - że gdy czytelnik wybiera sobie rozdziały na wyrywki z książki - to będzie ona (akurat ta zrozumiała) :( ... Ja prowadzę pewnym hmmm tokiem rozumowania aby przeprowadzić jak najszybciej przez początki do jakiejś praktyki -

ale zdaję sobie sprawę że jest tego sporo dla osoby, która pierwszy raz się styka z tym wszystkim ...

chciałbym tylko jakby to powiedzieć uczulić na to - że warto całą książkę przeczytać chociaż JEDEN RAZ .... a potem już spokojnie da radę na wyrywki ... Nawet jeśli uznasz że np ADC ci niepotrzebne albo że multipleksowanie ci niepotrzebne. Bo ja nie opisuję tego żeby kogoś zachęcić do używania ADC albo wyświetlaczy 7-segmentowych .... ja na takich praktycznych przy okazji przykładach - pokazuję jak posługiwać się językiem C i to jest ciąg dalszy teorii języka C z pierwszej połowy książki. Ci którzy traktują to inaczej - później właśnie mają kłopot ze zrozumieniem tego co chciałem przekazać.

przy okazji polecam ci - zobacz ten wątek - bo coś w tym jest co mówię wyżej:

topic6385.html

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2014, o 14:24 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

chi.cygni napisał(a):
Proszę w tym momencie o trzeźwe spojrzenie doświadczonych użytkowników i praktyków i przekazanie mi krytycznych uwag, wniosków, rad, przestróg itd., odnośnie tego pomysłu, za które już teraz dziękuję.


Jeśli urządzenie ma sterować włącznikiem/wyłącznikiem światła (czy innego urządzenia) w zależności od jasności na zewnątrz to czy założenie nie mija się trochę z rzeczywistością? Różnica poziomu oświetlenia o danej godzinie w dzień bezchmurny i pochmurny bywa dramatycznie różna. Dodajmy do tego opady - deszcz jeszcze zaciemnia, śnieg przeciwnie. No i wahania godziny słonecznej w trakcie roku - różnica sięga kilkudziesięciu minut (być może to uwzględniasz w obliczeniach). Mówiąc krótko: nie możesz do tego zatrudnić fototranzystora? ;-)

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2014, o 16:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 mar 2014
Posty: 150
Lokalizacja: Staszów
Pomógł: 12

xor napisał(a):
Jeśli urządzenie ma sterować włącznikiem/wyłącznikiem światła (czy innego urządzenia) w zależności od jasności na zewnątrz to czy założenie nie mija się trochę z rzeczywistością?

Czytam dokładnie raz jeszcze swoje słowa i nie wiem, gdzie napisano, że sterowanie zależy od jasności na zewnątrz. Wprost przeciwnie. Właśnie dlatego, że:
xor napisał(a):
Różnica poziomu oświetlenia o danej godzinie w dzień bezchmurny i pochmurny bywa dramatycznie różna. Dodajmy do tego opady - deszcz jeszcze zaciemnia, śnieg przeciwnie. No i wahania godziny słonecznej w trakcie roku - różnica sięga kilkudziesięciu minut (być może to uwzględniasz w obliczeniach).

Oczywista racja. Dlatego zegar włącza lampę o zmierzchu a wyłącza o świcie. Zawsze, niezależnie o której godzinie zjawisko to następuje. I sobie musi to policzyć.
xor napisał(a):
Mówiąc krótko: nie możesz do tego zatrudnić fototranzystora? ;-)

Na fototranzystorach się nie znam, ale jeśli jego działanie jest takie samo jak fotorezystora - to nie, z powodów, o których sam piszesz wyżej.

mirekk36 napisał(a):
przy okazji polecam ci - zobacz ten wątek - bo coś w tym jest co mówię wyżej:
topic6385.html

Przyznam się, że umęczona dusza kolegi grower wykazuje identyczne objawy, co moja.
Zaś mój wniosek płynie taki: Ile osób, tyle metod zdobywania i porządkowania wiedzy. Jeden idzie w teorię, by wszystko ułożyć w głowie, drugi od razu rozkręcał piastę w rowerze, aby zobaczyć jak działa (a raczej działała, bo potem złożyć z powrotem był problem). Takie rozpoznanie walką. Ale od czego dzisiaj forum?

Więc proszę Cię, Mirku, nie złość się na tych, którzy nie mając pełnej wiedzy i ogarnięcia całości, już próbują i kombinują, prosząc o pomoc niby w banalnych sprawach. Niekoniecznie jest to droga na skróty, tylko metoda. Wszystko potrzebuje czasu. Mam tu wiele osobistych przemyśleń i wniosków do jakich doszedłem na innych polach życiowego działania, też startując od zera. Ale nie do końca jestem pewien, że to dobre miejsce na takie zwierzenia.

_________________
Ad augusta per angusta



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2014, o 16:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

chi.cygni napisał(a):
Więc proszę Cię, Mirku, nie złość się na tych


Ale podaj chociaż jeden przykład gdzie ja się na to złoszczę ? Dziwię się tylko że jakby wciąż to podkreślasz. Podpowiadam co ja miałem na myśli pisząc ... ale to wszystko. Dlatego też mnie szczerze zaciekawił po prostu ten wątek do którego link podałem. O tyle a nie jakieś złoszczenia czy nagabywania na siłę.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2014, o 19:05 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

chi.cygni napisał(a):
gdzie napisano, że sterowanie zależy od jasności na zewnątrz

Nigdzie nie napisano dlatego pytam. Dla mnie, podkreślam DLA MNIE, włączanie światła o zmierzchu mimo że jeszcze jest jasno i wyłączanie o świcie chociaż jest jeszcze ciemno bo tak sobie policzył program jest bez sensu.
Ale to tylko moja schematyczność myślenia się włącza, bo przecież nikt nie powiedział, że to ma być oświetlenie dla ludzi. Na ten przykład konopie indyjskie wymagają regularnego włączania/wyłączania światła i innych urządzeń.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2014, o 20:21 
Offline
Użytkownik

Dołączył(a): 10 lip 2013
Posty: 93
Lokalizacja: Puławy
Pomógł: 0

Hmmm...
Nie wiem jak tu się odnieść do tego co tu przeczytałem.
Cytuj:
czasy są codziennie inne i zwykły zegar czasowy odpada.


Tak, ale co roku te same prawda?
Tu masz stronę, która wie już kiedy będą wsch. i zach. słońca.
http://calendar.zoznam.sk/sunset-pl.php ... at&hy=2014


Jeśli napiszesz algorytm, który oblicza wsch i zach. słońca to prawdopodobnie zrobisz to raz dla każdego dnia w roku (raz na zawsze) i tylko będziesz te dane wykorzystywał, bo wrzucisz je do tablicy właśnie, której indeksy byłyby od 0 do 365 i uwzględniał lata przestępne.
Czas byłby liczony przez RTC (np. DS3231) który dokładnie tego dnia włączałby światło o tej i o tej godzinie.
Czyli Ty tak naprawdę chcesz wymyślić taki algorytm.

Chyba, że chciałbyś aby każdego dnia był liczony czas wsch. i zach. słońca wtedy wykonywałbyś jeden obrót pętli na jeden dzień.
Bo normalnie się robi od razu, czyli 365 przebiegów pętli na raz i wrzucanie tego do tablicy.



Ostatnio edytowano 23 mar 2014, o 20:32 przez ZgłebiaczTajników, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 mar 2014, o 20:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 02 mar 2014
Posty: 150
Lokalizacja: Staszów
Pomógł: 12

xor napisał(a):
Nigdzie nie napisano dlatego pytam.

A ja z przyjemnością, prawdziwą - odpowiadam - bez cienia ironii, wyrażając wdzięczność za każdą sugestię, czy podpowiedź. Mówię POWAŻNIE.

xor napisał(a):
... bo tak sobie policzył program jest bez sensu.

Co do tego sensu lub bezsensu, to po prostu tak ma być jak się wyraziłem na początku. Jeśli spojrzysz na poniższy kod, zawierający parametry, to zobaczysz tam parametry opóźnienia włączania i przyspieszania wyłączenia. Mam zainstalowany kupiony wyłącznik tego rodzaju i działa tak jak chcę. Ma tylko jedną wadę - jednokanałowy kosztuje ok. 200 zł. A ja potrzebuję jeszcze takich.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co do konopii - to ja się na tym nie znam (jeszcze), ale wezmę sugestię pod rozwagę i się rozejrzę.

dambo napisał(a):
ale niekoniecznie musi to mikrokontroler liczyć - może wygenerowałbyś te godziny jakoś na komputerze i wrzucił we flash w jakiejś przyjaznej postaci, lub wykorzystał do tego karte pamięci i jakiś plik z godzinami, albo apke na kompa która wysyła informację do tego kontrolera przez np BT, wtedy malusieńki Attiny starczy do tego.

Pewnie, że tak. Napisałem to już wcześniej jako opcję. I pewnie zrobię tak też - dla nauki.
Dla całego roku jest to tablica 360 elementowa zawierająca liczby całkowite, jednocyfrowe.
Ale co za problem zrobić to na pół roku i wtedy mamy liczby naturalne i tablicę 180 elementową.

No dobra, co mi tam. Nabrałem odwagi i zdaję się na osąd. Napisałem:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Proszę mądrzejszych o ocenę i wskazówki, za które już teraz dziękuję.
Gdyby ktoś chciał skonfrontować to z algorytmem, to podaję stronę:
http://williams.best.vwh.net/sunrise_sunset_algorithm.htm

ZgłebiaczTajników napisał(a):
Czyli Ty tak naprawdę chcesz wymyślić taki algorytm.

Nie bardzo chcę go wymyślać. Chcę go jedynie zastosować w praktyce.

_________________
Ad augusta per angusta



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO