Chciałem zaprezentować zegar mojego wykonania na uC Atmega8, soft został napisany w bascomie.
Zegarek posiada funkcje, budzika, pomiaru temperatury na zewnątrz i wewnątrz mieszkania (DS18B20), daty, podtrzymania pamięci po zaniku zasilania, wygaszania wyświetlaczy oraz lampki nocnej tą rolę spełnia diodka 3mm super jasna koloru białego.
Do wyświetlania temperatury na zew i wew służą dwa przyciski lub też temperatura może być wyświetlana co 5,10,15,20,30 oraz 60 sekund.
Sterowanie wszystkimi funkcjami odbywa się za pomocą pilota nadającego w znanym standardzie Rc5, jako odbiornika użyłem TSOP1136.
Do podtrzymania zegarka po zaniku zasilania użyłem kondensatora o pojemności 1F, nie testowałem jeszcze jak długo wytrzyma podtrzymanie na tym kondensatorze ale mam nadzieje że co najmniej 12 godzin.
Jeśli nie chcemy, żeby zegar świecił nam w nocy możemy wygasić wyświetlacze jest to też jedna z funkcji wspomnianych wcześniej.
Zastosowane wyświetlacze:
4xAS-15011BMR o wysokości 44mm (cyfra 38.10 1.5")
2xAS-10016BMY o wysokości 34mm (cyfra 25.40 1")
Zapewniają bardzo dobrą widoczność nawet z daleka.
Zegar jest jeszcze bez obudowy, lecz ta jest w trakcie produkcji:)
Zamierzam użyć do tego obudowę Z-17 oczywiście troszkę zmniejszoną w tym celu musiałem wyciąć jej środek i ją skleić. Zastosowałem klej poxipol.
W chwili obecnej jest w trakcie schnięcia co widać na zdjęciu:
Jak na razie zegarek spisuje się bardzo dobrze, i wreszcie nie muszę wstawać z łóżka rano aby wyłączyć budzik:)
Choć czasem to nie popłaca.
Witam ! Możesz dać dokumentację sch. brd. bas. ? Jasność LED jest sterowana przez PWM? Czy tylko ON i OFF? Co do wyświetlania temperatury proponowałbym, aby kropka była zaświecana w drugim wyświetlaczu LED. A wartość po przecinku przesunąć na 3 wyświetlacz LED ; ładniej by to wyglądało. Jak wyświetla ujemne temperatury? Czy układ uczy się RC5? Ja osobiście chętnie bym zrobił ten układ i wytestował. Szukałem takiego czegoś. Niestety brak czasu ogranicza mnie w zrobieniu takiego zegarka od podstaw. Chętnie pomogę w modyfikacji programu :) Pozdrawiam !
Oczywiście wrzucę dokumentacje jak wszystko uporządkuje. Co do wyświetlaczy to jest tylko on i off. Nie mogłem użyć PWM gdyż timer1 wykorzystałem do multipleksowania wyświetlaczy, timer2 odpowiedzialny jest za odliczanie czasu asynchronicznie a timer0 służy do odbioru komend w RC5.
Co do wyświetlania temperatury to troszkę nie rozumiem gdy bym dał przecinek na drugim wyświetlaczu to jak bym miał wyświetlić temp np 20 stopni tak jak na zdjęciu?
Chodzi mi zamiast tego "wielkiego przecinka" użyć kropkę dziesiętną wyświetlacza drugiego :) Jeśli odbiornik jest podłączony z któryś wejść INT to możemy RC5 zrobić na przerwaniu. I dostaniemy Timer0, który posłuży do PWM.
Teraz rozumiem lecz w tym egzemplarzu kropki nie da rady zrobić gdyż wcale nie jest podłączona. Z góry założyłem, że nie będę jej potrzebował.
Oczywiście wystarczy wprowadzić parę zmian w PCB i programie i nie stanowi to żadnego problemu.
Z tym Rc5 w przerwaniu to jest bardzo dobry pomysł.
Pilot niestety nie uczy się według mnie nie jest to potrzebne natomiast zastosowałem komendy na sztywno.
Podłączenie kropki dziesiętnej to nie jest problem. Wystarczy podłączyć do wybranego portu ATMEGA8 i skonfigurować port. I dopisać w programie, że jak będzie wyświetlana temperatura to kropka ma się zaświecić. Program oczywiście też nie stanowi problemu. Co do dodaniu PWM i RC5 da się zrobić :) Ale to może już nie tutaj, bo odchodzimy od docelowego tematu. A mam pytanie jak są wyświetlane ujemne temperatury? Możesz dodać filmik z działania zegarka?
Temperatura ujemna wyświetlana jest tak, że pierwszy wyświetlacz jest wygaszony na drugim zapala się minus trzeci i czwarty wiadomo, piąty znak przecinka a szósty temperatura po przecinku.
Najprędzej jutro wieczorem będę mógł wstawić filmik
Ten elektrolit 1F to trochę za mało, lepiej byłoby dać 2,2F lub 4,7F. A czy nie jest tak że w nocy wyświetlacz LED razi w oczy? Poza tym zegar jest super i jego wykonanie też. Brawa dla autora tematu za wykonanie.
Dzięki z dobrą opinie.
Troszkę czerwono jest od wyświetlaczy w pokoju w nocy lecz jak je czymś przyciemnię to powinno być ok. Między innymi po to zastosowałem wygaszanie wyświetlaczy.
Co do kondensatora będę musiał to przetestować w sumie im więcej pojemności tym dłuższy czas podtrzymania, lecz praktycznie rzadko się zdarza teraz długie wyłączanie prądu:)
łuki_mar44 Zawsze można dodać układ czuwający nad napięciem zasilania. Jeśli procesor wykryje brak napięcia to przejdzie w stan uśpienia. Programowo to przez wywołanie funkcji powerdown.
Radiator na stabilizatorze jakiś taki byczy. Zasilasz to jakimś dużo wyższym napięciem, że aż takie straty na ciepło masz?
Jaką częstotliwość ma podpięty kwarc? Jak taktowany jest procesor?
Piezobuzer jest z generatorem czy sam generujesz częstotliwość? Domyślam się, że z generatorem, skoro nie używasz PWM.
Obudowa brzydko posklejana. Będziesz szlifował ten klej papierem i malował czy tak zostanie? Można było spokojnie posklejać kropelką i ew. od środka dać jakieś wzmocnienie.
Mariuszek15 Ależ u mnie jest wykorzystany tryb oszczędności tylko, że POWERSAVE bo tylko w tym trybie z tego co pamiętam możliwa jest asynchroniczna praca timera2 a co za tym idzie odliczanie czasu.
Jeżeli procesor wykryje zanik zasilania na Pinie d7 w moim wypadku, wtedy przechodzi w tryb powersave gdzie pobierane jest zaledwie kilka uA.
xanio Radiator nie jest wcale taki duży może na zdjęciu tak się wydaje.
Zegar zasilam napięciem 9V Ac więc po wyprostowaniu jest jakieś 12V z hakiem.
Kwarc 32768Hz (zegarkowy), a wewnętrzny oscylator ustawiony na 8Mhz
Buzer jest bez generatora, wysyłam na niego ciąg impulsów jeśli zostanie spełniony warunek budzenia.
Co do obudowy tak jak napisałem w pierwszym poście jest w trakcie schnięcia więc na razie nie mogę nic zrobić jak wyschnie będę ją szlifował może trochę będzie trzeba przyszpachlować i jakiś spray.
9V AC... no tak, trochę dużo na zegarek do którego starczyłaby ładowarka od telefonu za 5zł. Z drugiej strony, zima idzie... przynajmniej pokój zagrzejesz :)
(...) timer1 wykorzystałem do multipleksowania wyświetlaczy, timer2 odpowiedzialny jest za odliczanie czasu asynchronicznie a timer0 służy do odbioru komend w RC5.
Gdyby użyć jakiś zewnętrzny zegar RTC to by zwolnił ci sie jeden timer2.
Zaś jako czujnik oświetlenia można by było użyć którejś z diod LED, wykorzystująć ją jako FOTODIODĘ.
Pozdrawiam
Można i tak lecz chciałem zamknąć wszystko w jednym uC i wykorzystać wewnętrzny RTC Atmegi. Żeby zwolnić któryś timer wystarczyło by, odbiór Rc5 zrealizować w przerwaniu INT0 albo INT1 jak wcześniej wspomniał kolega Mariuszek15
Re: Zegar Rc5 na uC Atmega8 z budzikiem i pom. tem BASCOM
Dwukropek między godzinami a minutami powinien być lekko pochylony jak wszystkie cyfry. Ty dałeś go w pionie, co trochę odbiega od całości.
Swoja droga, to powinni produkować też takie dwukropki jak wyświetlacze. Sam mam zawsze problem z dobraniem diod do wyświetlaczy, bo niestety inaczej świecą.
Re: Zegar Rc5 na uC Atmega8 z budzikiem i pom. tem BASCOM
W załączniku wzory płytek w pdf:
Na tych płytkach dodałem jeszcze rezystor 3k8 między VCC a pinb4 gdzie podłączony jest drugi czujnik temperatury. Niestety w oryginale zapomniałem o nim i musiałem go dolutować u siebie do ścieżek.
Re: Zegar Rc5 na uC Atmega8 z budzikiem i pom. tem BASCOM
Jak kolega wyżej wspomniał układ nie uczy się komend. Należy je samemu przypisać w programie. We wcześniejszych postach zamieściłem kod źródłowy więc nie powinno być z tym problemu.