Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zegar LED + DS18B20 + kalibracja chodu

cudny90 06 Jan 2014 16:32 14319 20
  • Zegar LED + DS18B20 + kalibracja chodu

    Witam wszystkich.

    Chciałem podzielić się swoją modyfikacją programu, schematu oraz płytki pcb zegara, który cieszył się sporą popularnością na elektrodzie, dokładnie tutaj:
    https://www.elektroda.pl/rtvforum/topic448539-0.html

    Oto co zmieniłem:
    - dodałem obsługę jednego czujnika DS18B20
    - wyeliminowałem problem słabego świecenia wyświetlaczy
    - wyeliminowałem z kodu przestarzałe już instrukcje
    - usunąłem podtrzymanie bateryjne
    - zmniejszyłem częstotliwość migania kropki (zmiana stanu co sekundę)

    Aby wyświetlacze świeciły jaśniej, emitery zostały zasilone z przetwornicy napięcia opartej o układ LM2596 (układy te można tanio kupić w Chinach z darmową przesyłką) ustawionej na 7,5V. Dodatkowo zostały zmienione tranzystory na BC327-40 (mogą być BC327-25) dodane diody na bazy, oraz rezystory między bazami, a emiterami.
    Przy zastosowaniu filtra (użyłem dymionej plexi) wszystko na wyświetlaczach widać bardzo dobrze zarówno w nocy, jak i w słoneczny dzień.
    Cały układ zasilam z zasilacza 12V i taki zasilacz zalecam.
    Uwaga. Gdy ktoś programuje procesor w układzie, na czas programowania należy odpiąć/wylutować czujnik temperatury, gdyż "przeszkadza" on w programowaniu.

    Działanie: układ na zmianę pokazuje czas i temperaturę. Temperatura pokazywana jest przez 2 sekundy co 8 sekund. Czas ten można bardzo prosto zmienić sobie wg upodobań w kodzie głównym programu.

    Do zegarka dorobiłem bardzo prostą korekcję chodu.

    W pliku main.c wewnątrz funkcji if (od przepełnienia dziesiątek minut) wystarczy dodać linijkę:
    Code:
    czesci_sekundy=510;

    Oczywiście zamiast 510 należy wpisać swoją wartość.

    Jeśli komuś zegarek spieszy o 2 sekundy na 5 dni, trzeba wpisać 503, ponieważ: (512-503)*1/512*24*5=~2s

    Jeśli komuś zegarek się spóźnia o 2 sekundy na 5 dni, różnicę 512-503=22 należy dodać do 512, czyli wpisać należy wtedy 534

    Atmega taktowana z wewnętrznego rezonatora 8MHz, timer działa tak jak w oryginalne, w trybie asynchronicznym z zewnętrznego kwarcu 32768Hz.

    Zdjęcia:
    Zegar LED + DS18B20 + kalibracja chodu Zegar LED + DS18B20 + kalibracja chodu Zegar LED + DS18B20 + kalibracja chodu Zegar LED + DS18B20 + kalibracja chodu Zegar LED + DS18B20 + kalibracja chodu

    W załączniku zamieszczam program (w języku C wraz z biblioteką do DS'a oraz skompilowany *.hex), płytkę pcb w *.pdf'ie, oraz schemat w *.jpg.

    Życzę powodzenia wszystkim początkującym elektronikom, w razie czego służę pomocą.

    Pozdrawiam

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    cudny90
    Level 14  
    Offline 
    cudny90 wrote 182 posts with rating 8, helped 0 times. Been with us since 2006 year.
  • #2
    Freddy
    Level 43  
    Jaki jest sens takich kombinacji ?
    Kupuje za 4 zł układ typu DS1307, daję kawałek styropianu jako termos i zapominam o problemie.
  • #3
    dondu
    Moderator on vacation ...
    Jaki prąd płynie przez jedną diodę wyświetlacza?
  • #4
    Wojtek001
    Level 15  
    Gdzie kupiłeś taką przyciemnianą plekse ?:D
  • #5
    HSWG
    Level 21  
    Freddy wrote:
    Jaki jest sens takich kombinacji ?
    Kupuje za 4 zł układ typu DS1307, daję kawałek styropianu jako termos i zapominam o problemie.


    Jak dla mnie to sensem właśnie są te 4 zł. Jeśli można pokombinować w kodzie, to po co dokładać kolejny scalak?
  • #6
    cudny90
    Level 14  
    @dondu, w tej chwili prąd na jeden segment to ponad 30mA. Maksymalny prąd to 30mA na segment (dla moich wyświetlaczy), więc gdyby z jakiś przyczyn (zmiany w programie) program Ci się zawiesił i zatrzymałoby się multipleksowanie - może być nieciekawie. Dzięki regulowanej przetwornicy, na czas pisania programu, wszelkich zmian i prób, zjeżdżałem z napięciem do 6V (z 7,5V) i miałem pewność, że nawet, gdy program mi się zatrzyma - nic z dymem nie pójdzie.

    @Wojtek001, pleksi kupiłem w jednej z Krakowskich firm zajmujących się wszelkimi świecącymi reklamami (na PW mogę podać namiary). Ten kawałeczek kosztował mnie dokładnie 2,5zł.

    @HSWG, dzięki za wyręczenie :)

    PS: Wiele osób na PW pytało mnie gdzie i za ile można nabyć taką przetworniczkę.
    Można ją kupić już za 1,73$ na ebayu (z darmową przesyłką).
  • #7
    dondu
    Moderator on vacation ...
    cudny90 wrote:
    dondu, w tej chwili prąd na jeden segment to ponad 30mA. Maksymalny prąd to 30mA na segment (dla moich wyświetlaczy), ...

    Na pewno prąd Twoich wyświetlaczy może być większy dla pracy impulsowej z określonym wypełnieniem, czyli w tym wypadku multipleksowaniem. Jeżeli faktycznie stosujesz SA10-21, to prąd może sięgać aż 140mA przy wypełnieniu 1/10.

    Aktualnie pracujesz na granicy możliwości mikrokontrolera pod kątem ograniczeń prądowych. Z pobieżnych wyliczeń i funkcji w postaci wyświetlania czasu (możliwe kombinacje cyfr) wynika, że układ powinien wytrzymać, ale czy to był świadomy wybór, czy przypadek?

    Poprawne rozwiązanie to zastosowanie np. ULN2803 na liniach segmentów i zwiększenie prądów segmentów znacząco powyżej 30mA.

    Więcej na temat ograniczeń prądowych mikrokontrolera: http://mikrokontrolery.blogspot.com/2011/03/datasheet-mikrokontroler-prady-pinow.html

    Jakie konkretnie wyświetlacze stosujesz (jeśli inne niż SA10-21)?
  • #8
    george2002

    Level 20  
    parafka wrote:
    cudny90 wrote:

    ...z przetwornicy napięcia opartej o układ LM2596 (układy te można tanio kupić w Chinach z darmową przesyłką) ...
    Może lekko nie na temat, ale czy nie mogłeś od razu zegarka kupić w Chinach? :smoke:
    Rozumiem, że chcesz się uczyć elektroniki, ale czy ktoś później kupi twój wyrób lub usługę jak można taniej w Chinach?
    Wstyd Kolego, wstyd...


    Ano lekko nie na temat, takim podejściem to ... a nie pomyślał kolega że to nie na sprzedaż tylko dla własnej satysfakcji/nauki ? ... coraz gorzej na elektrodzie ... nie wspominając że jak by takich zegarko-termometrów milion zrobić to i w częściach itd było by taniej zapewne niż w Chinach i tak właśnie Chiny działają, w milionach urządzeń mają dobre ceny ...

    Ładnie koledze płytka wyszła no i tak jak już wspomniano ładnie wyszedł filtr do wyświetlacza :)


    PS
    Żeby nie było to Sam jakąś elektronikę typu miernik czy oscyloskop czy nawet wspomniany zasilacz z 12V na np 5V lub najlepiej regulowany na M2596-ADJ zamawiam z Chin bo taniej (za cenę z wysyłką z all*** to z Chin z wysyłką mam o połowę taniej dwie sztuki, jedyny minus to czas, trzeba spokojnie od 10-25dni czekać na paczkę) ale nie mam podejścia że lepiej kupić coś niż zrobić, są oczywiście takie urządzenia których nie warto bo i gotowe i taniej ale bez sadyzmu, wszystko z umiarem i elegancją ;)


    Pozdrawiam
    George2002
  • #9
    yogi009
    Level 43  
    A ja zapytam o to "usunięcie podtrzymania bateryjnego". Mam rozumieć, że po wyjęciu wtyczki z gniazdka sieciowego wszystko się "zeruje"? Byłby to krok wstecz w tej konstrukcji.
  • #10
    george2002

    Level 20  
    yogi009 wrote:
    A ja zapytam o to "usunięcie podtrzymania bateryjnego". Mam rozumieć, że po wyjęciu wtyczki z gniazdka sieciowego wszystko się "zeruje"? Byłby to krok wstecz w tej konstrukcji.


    Wypuszczę się i odpowiem za autora ale dokładnie tak, i może to być problematyczne ale może u autora nie często prąd wyłączają albo ma np w pokoju UPS'a i podpięty zegarek, a jak nie to przecież to nie problem ustawić w ciągu 30 sekund ;)

    Pozdrawiam
    Grzegorz
  • #11
    yogi009
    Level 43  
  • #12
    Freddy
    Level 43  
    HSWG wrote:
    Jak dla mnie to sensem właśnie są te 4 zł. Jeśli można pokombinować w kodzie, to po co dokładać kolejny scalak?

    W lecie będziesz robił poprawki w kodzie, bo będzie gorąco, na zimę kolejne ?

    george2002 wrote:
    ... Wypuszczę się i odpowiem za autora ale dokładnie tak, i może to być problematyczne ale może u autora nie często prąd wyłączają albo ma np w pokoju UPS'a i podpięty zegarek, a jak nie to przecież to nie problem ustawić w ciągu 30 sekund ;) ...

    No tak, zwłaszcza, jak np. w środku nocy będzie wahniecie napięcia, zegar się wyzeruje, a ty o o 10:00 popatrzysz, EeeEe dopiero 3:10 mogę jeszcze spać.
  • #13
    cudny90
    Level 14  
    @dondu, tak, istnieje "zapas", mógłbym puścić większy prąd, natomiast nie jest to absolutnie potrzebne. Zegarek świeci odpowiednio jasno, a poza tym, jak wiesz, chyba wszystkie zmysły ludzkie mają charakterystykę logarytmiczną, więc dalsze podnoszenie prądu nie wpływa znacząco na jasność.
    Co do granicy wytrzymałości prądowej mikrokontrolera to również jest jeszcze zapas, wszystko było przemyślane i obliczone.

    Tak, można w tego typu układach zastosować układy scalone UDN ULN.
    Moje wyświetlacze to dokładnie AS-10016BG-B

    @yogi009, tak się składa, że miałem zegarek z podtrzymaniem i ja stwierdziłem, że to zbędna rzecz. Po odłączeniu zasilania zegarek się oczywiście zeruje.

    Freddy wrote:
    W lecie będziesz robił poprawki w kodzie, bo będzie gorąco, na zimę kolejne ?


    Rozumiem, że układ DS1307, który taktowany również jest z zewnętrznego kwarcu jest odporny na zmiany temperatury? Bo w styropianowy termos to i mój zegarek mogę włożyć, ale nie widzę potrzeby. Poza tym temperatura w pokoju (a zegarek używany jest wewnątrz) znacząco mi się nie zmienia w ciągu roku.

    Freddy wrote:
    No tak, zwłaszcza, jak np. w środku nocy będzie wahniecie napięcia, zegar się wyzeruje, a ty o o 10:00 popatrzysz, EeeEe dopiero 3:10 mogę jeszcze spać.


    Trzeba by mieć niezłego pecha :) Poza tym gdy mam wstać o określonej porze - ustawiam budzik.

    Pozdrawiam
  • #14
    yogi009
    Level 43  
    Ok, to Twój prototyp, zdecydowałeś że będzie pozbawiony podtrzymania i jest w porządku. Możesz jednak także przyjąć, że dla wielu podtrzymanie jest ważne, niekoniecznie chodzi tu o pecha, wystarczy że jakieś urządzenie (choćby włączany odkurzacz), albo żonka sprzątając dom, spowodują chwilowy zanik zasilania. I tu podtrzymanie nie jest koniecznością, ale jest bardzo wygodne. Tym bardziej, że układ urośnie o kilka drobnych elementów.
  • #15
    User removed account
    User removed account  
  • #16
    Wojtek001
    Level 15  
    Są też takie moduły RTC wysokiej precyzji np DS3231 - bardzo dokładne ,mają możliwość dodatkowej kalibracji i automatyczną korekcje dzięki wbudowanemu czujnikowi temperatury.
    Kosztują ok 13 zł ale to i tak dużo taniej niż 50.
  • #17
    cudny90
    Level 14  
    @R-MIK, no to zrobiłeś fajny wypasiony układzik. Można też zastosować układ MAX7219 i nie bawić się w żadne programowe multipleksowanie.

    Nie rozumiem, dlaczego moja korekcja jest bezsensowna. Przecież to tylko jedna linijka kodu ;) Nawet, gdybym go miał synchronizować co miesiąc z zegarem atomowym to będę to robił (w końcu to tylko chodzi o wyzerowanie sekund), a w ciągu miesiąca mam dokładność co najmniej 1 sekunda, więc jest ok.

    2 razy w roku i tak i tak przestawiamy godzinę, więc nie popadajmy w paranoje z jakimiś modułami GPS, czy podgrzewanymi kwarcami.

    Podchodzicie do problemu jakbyście zegarek mieli ustawiać raz na całe życie.
    Gdyby tak było to pewnie zrobiłbym sobie DCFa - bez zabawy w korekcję chodu i podgrzewany kwarc.
  • #18
    Freddy
    Level 43  
    R-MIK wrote:
    ... stabilny generator np DS32KHZ, ale jest dość drogi (około 50zł).

    Trochę przesadziłeś, na allegro są po około 12zł

    cudny90 wrote:
    ... a w ciągu miesiąca mam dokładność co najmniej 1 sekunda, więc jest ok

    ... a ja daję DS1307 i kwarc 8.192MHz i mam dokładność 10 razy lepszą :) dodając paręnaście linijek kodu.
  • #19
    cudny90
    Level 14  
    Freddy wrote:
    ... a ja daję DS1307 i kwarc 8.192MHz i mam dokładność 10 razy lepszą dodając paręnaście linijek kodu.


    Jeśli takiej potrzebujesz - oczywiście można dać taki układ. Nawet taki posiadam, może go zastosuję w następnej konstrukcji, choć nie lubię stosować układów, które mają o wiele wyższe możliwości, niż ja potrzebuję. (chodzi mi głównie o dodatkowe funkcje ds1307, jak np. data)
    Poza tym, chciałem powtórzyć, że to, co przedstawiłem nie jest moją konstrukcją w 100%. Zaprezentowałem tylko modyfikację kodu wg moich upodobań, i jeśli komuś się to przyda, to się bardzo cieszę.

    Bardzo wiele osób początkujących pisze do mnie wiadomości prywatne, mają wiele mądrych pytań i propozycji rozwiązań, w przeciwieństwie do poziomu uwag doświadczonych wyjadaczy tego forum, który to poziom jest znany w całym internecie ;)

    Pozdrawiam
  • #20
    Wojtek001
    Level 15  
    cudny90 wrote:

    2 razy w roku i tak i tak przestawiamy godzinę, więc nie popadajmy w paranoje z jakimiś modułami GPS, czy podgrzewanymi kwarcami.
    No u mnie akurat godzina przestawia się automatycznie :) ,więc w tego typu sytuacjach mogło by to być przydatne.
  • #21
    emil
    Level 15  
    Quote:
    Cudny90 npisał:

    Jeśli komuś zegarek się spóźnia o 2 sekundy na 5 dni, różnicę 512-503=22 należy dodać do 512, czyli wpisać należy wtedy 534.


    Ja nie wiem jak to jest liczone, że 512-503=22 bo mnie cały czas wychodzi 9.