Elektroda.pl
Elektroda.pl
X
Sklep HeluKabel
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zegar + alarm + imieniny + 5x DS18b20

Mariusz_N 29 Mar 2014 23:32 27567 64
  • Zegar + alarm + imieniny + 5x DS18b20
    Witam wszystkich
    Przedstawiam urządzenie z serii "może się to komuś przyda"
    W sumie nie ma się nad czym rozpisywać jest to zegar z alarmem, który pokazuje:
    - godzinę
    - datę
    - dzień tygodnia
    - imieniny danego dnia miesiąca
    oraz posiada pięciopunktowy termometr.
    Sercem układu jest ATmega32 ustawiona na oscylator wewnętrzny 1MH współpracująca z PCF8563 i czujnikami DS18b20. Do generowania dźwięku alarmu zatrudniony jest ATtin13

    Opis działania:
    Wyświetlacz składa się z 3 ekranów przełączanych cyklicznie.
    1 ekran pokazuje godzinę, datę, dzień tygodnia oraz temperaturę jednego czujnika.
    2 ekran pokazuje imieniny danego dnia miesiąca.
    3 ekran wskazuje temperaturę z pozostałych czterech czujników, jeśli takowe są dołączone.

    Ekrany 2 i 3 można włączać i wyłączać w menu tak, aby były pokazywane:
    tylko ekran 1
    ekran 1 i 2
    ekran 1 i 3
    lub wszystkie po kolei 1, 2, 3

    Urządzenie obsługuje się pięcioma przyciskami [GÓRA], [DÓŁ], [MENU], [ESC] oraz [AL_STOP] (kasowanie alarmu)

    Opis przycisków:
    [MENU] - dwie funkcje:
    1 - Wejście w menu
    2 - Zatwierdzanie [OK]

    [GÓRA], [DÓŁ] – to oczywiste ustawianie wartości.

    [ESC] - dwie funkcje:
    1 - Podczas programowania bezwarunkowe wyjście z menu i podprogramów.
    2 - Podczas normalnej pracy służy do włączenie i wyłączenie alarmu sygnalizowane kropką na wyświetlaczu po sekundach.

    Klawisz [AL_STOP] jest to kasowania alarmu w przerwaniu wyzwalanym przyciskiem (SW5) Alarm ponownie pojawi się następnego dnia. Jest to po to żeby nie wyłączać alarmu każdego wieczoru.

    Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20





    Opis menu:
    ZEGAR - programowanie godzin, minut, dnia miesiąca, miesiąca, roku, dnia tygodnia oraz sygnalizacji pełnych godzin.
    ALARM - programowania godzin, minut alarmu.
    KWARC - po wejściu w ten podprogram na wyprowadzeniu CLKOUT w PCF8563 pojawia się przebieg o częstotliwości 32,768KHz ułatwiający kalibrację generatora (pomiar nie obciąża oscylatora).
    18B20 - służy do wyszukiwania podłączonych czujników DS18b20 i zapisywaniem ich do eeprom procesora. Przed wejściem w ten podprogram należy podłączyć dowolną liczbę czujników (nie więcej niż 5) i zatwierdzić OK. W pierwszej kolejności zostanie przeszukana magistrala 1-wire i wykryta ilość czujników zostanie podana na wyświetlaczu. Potwierdzając [OK] ID czujników zostaną zapisane do eeprom.
    UWAGA! Po wymianie jednego czujnika pozostałe zmienią swoją kolejność na wyświetlaczu.
    EKRAN - służy do ustawianie, które ekrany będą powtarzane cyklicznie.

    Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20

    Opis alarmu:
    W momencie wystąpienia alarmu na wyprowadzeniu INT w PCF8563 pojawi się stan niski. Wyprowadzenie to podłączone jest do ATtiny13, którego zadaniem jest generowanie alarmu przez głośnik 8ohm (klasyczne pikanie). Można tam podłączyć dowolne inne urządzenie, które będzie generowało dźwięk dopasowany do indywidualnego gustu :)
    Przy braku reakcji użytkownika alarm trwa minutę, po czym samoczynnie wyłączy się.

    Program zajmuje 83% pamięci procesora i pewnie można go jeszcze ścieśnić, ale nie ma takiej potrzeby. Konstrukcja na płytce uniwersalnej na tak zwanego pająka żeby było szybciej :)

    Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20

    Filmiki


    Schemat narysowany w Eagle 6.3.0. – Sorki, za jakość, ale to pierwszy schemat narysowany w tym programie a całość napisana w Bascom.

    Zamieszczam wsad do ATmegi32 i ATTiny13 Oraz schemat
    Zegar_VFD_20x2.hex
    Alarm_Tiny13.hex
    Zegae 20x2.sch
    Zegae 20x2.pdf

    No to chyba tyle :) Pozdrawiam wszystkich Mariusz N.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Sklep HeluKabel
  • #2 30 Mar 2014 08:25
    Tadek67
    Poziom 11  

    Bardzo ciekawa konstrukcja.
    Jaki jest symbol wyświetlacza którego użyłeś?

  • Sklep HeluKabel
  • #4 30 Mar 2014 11:38
    waleryfw
    Poziom 13  

    Fajny zegarek i jego dodatkowe funkcje . Dobry na biurko i monitorowania i przypominania . A jak są zaznaczane kolejne odczyty z DSów na wyświetlaczu bo widzę tylko jeden a pozostałe trzeba przełączać ręcznie ? . Czy jest szansa na źródła w Bascomie . Pozdrawiam

  • #5 30 Mar 2014 12:00
    noel200
    Poziom 24  

    Dobrze rozumiem, że jak masz na co dzień ustawiony budzik na powiedzmy 6:00 to bez grzebania w menu, w niedzielę i sobotę jak chcesz sobie pospać bo ten wyje o 6 rano?

  • #6 30 Mar 2014 12:40
    Mariusz_N
    Poziom 18  

    Cytat:
    A jak są zaznaczane kolejne odczyty z DSów na wyświetlaczu bo widzę tylko jeden a pozostałe trzeba przełączać ręcznie ?


    Moje założenie było takie, że czujnik umieszczony na zewnątrz będzie wyświetlany na pierwszym ekranie razem z zegarem i datą, a pozostałe cztery to trzy pokoje i kuchnia. Po wczytaniu wszystkich pięciu czujników trzeba sprawdzić, który jest, który i rozmieścić je w odpowiednich miejscach. Cztery czujniki wyświetlane na jednym ekranie mają oznaczenia A,B,C,D więc trzeba tylko zapamiętać, że czujnik A jest np. w dużym pokoju itp. Niestety jest jedna wada, że jeśli ulegnie uszkodzeniu jeden czujnik i wymienimy go, to kolejność wszystkich się zmieni i trzeba je pozamieniać. Nie trzeba ręcznie przełączać na pozostałe czujniki wystarczy zaznaczyć odpowiednią opcję w menu (jest to napisane wyżej)
    Cytat:
    Czy jest szansa na źródła w Bascomie

    Przykro mi, ale źródełek nie udostępniam

    Dodano po 8 [minuty]:

    Cytat:
    Dobrze rozumiem, że jak masz na co dzień ustawiony budzik na powiedzmy 6:00 to bez grzebania w menu, w niedzielę i sobotę jak chcesz sobie pospać bo ten wyje o 6 rano?

    Jeśli w trakcie alarmu naciśniesz przycisk [AL_STOP] to alarm wyłączy się, ale będzie powtórzony następnego dnia, o czym informuje świecąca kropka zaraz po sekundach. Natomiast, jeśli alarm wyłączysz przyciskiem [ESC] wówczas zostanie on całkowicie wyłączony a informacja (kropka) zostanie wygaszona. W sumie masz rację, bo można dopisać do programu obsługę alarmu tygodniowego, ale jakoś nie pomyślałem o tym.

    Dodano po 12 [minuty]:

    Przyciskiem [ESC] w każdym chwili można włączyć lub wyłączyć alarm, bo tego zapomniałem dodać.

  • #7 30 Mar 2014 12:42
    miszczo997
    Poziom 27  

    W opisie wkradł się błąd, czy rzeczywiście jest jakiś sposób taktowania attiny13@1MHz wewnętrznym oscylatorem? Tam chyba powinno być 1,2MHz. Fajną modyfikacją byłoby dodanie zewnętrznego eepromu do attiny13 i granie melodyjek alarmu(coś na wzór tego http://www.mcselec.com/index.php?option=com_content&task=view&id=221&Itemid=57 )

  • #8 30 Mar 2014 14:03
    gbd.reg
    Poziom 21  

    Co do wymiany czujników, bardzo prosty w realizacji jest system zapisywania ID czujników w EEPROMie, dzięki czemu gdy jeden wymienisz, reszta pozostaje przypisana do tych samych literek co wcześniej.

    Ogólnie polecam zrealizować tego typu system: program po uruchomieniu, gdy nie ma żadnych czujników zapisanych w EEPROMie, prosi o odłączenie wszystkich prócz jednego (na początek niech będzie zewnętrzny), po zaakceptowaniu zapisuje jego ID i prosi o dołączenie czujnika A i tak po kolei dla B, C i D. Gdy wykryje brak czujnika prosi o podłączenie go ponownie lub podłączenie zamiast niego zastępczego czujnika i zaakceptowanie nowego czujnika klawiszem. Gdy zostanie podłączony nowy, program wykryje którego mu brakuje i podmieni sobie zapisane ID. System bardzo prosty i wygodny, dzięki niemu nie trzeba latać i sprawdzać który czujnik jest który, gdy przewody ma się po całym mieszkaniu pociągnięte.

  • #9 30 Mar 2014 17:25
    Mariusz_N
    Poziom 18  

    Cytat:
    W opisie wkradł się błąd, czy rzeczywiście jest jakiś sposób taktowania attiny13@1MHz wewnętrznym oscylatorem? Tam chyba powinno być 1,2MHz

    Tak tak wkradł się błąd :( w wersji testowej na płytce stykowej do dźwięków alarmów była wykorzystana ATmega8 i mi coś w głowie zostało. ATtin13 nic niezmienione (fabryka). Dzięki za wyłapanie istotnej pomyłki.

    Dodano po 4 [minuty]:

    Cytat:
    Co do wymiany czujników, bardzo prosty w realizacji jest system zapisywania ID czujników w EEPROMie, dzięki czemu gdy jeden wymienisz, reszta pozostaje przypisana do tych samych literek co wcześniej.

    Ciekawy pomysł z ominięciem tego problemu. Postaram się wykorzystać go w następnym projekcie. Tego programu pod tym kątem raczej już nie będę modyfikował w sumie od kilku lat u mnie i u znajomych pracuje po kilka czujników i jeszcze póki, co żaden nie padł no, ale licho nie śpi.

  • #10 30 Mar 2014 17:37
    377475
    Użytkownik usunął konto  
  • #11 30 Mar 2014 17:47
    gbd.reg
    Poziom 21  

    Jeszcze taki pomysł odnośnie wykrywania tych czujników jeszcze jeden pomysł: jeśli przy uruchomieniu urządzenia są podłączone czujniki to zamiast prosić o wypięcie wszystkich, program może prosić o wypięcie i wpięcie ponownie po kolei każdego.

  • #12 30 Mar 2014 18:48
    dr.hannibal
    Poziom 22  

    Niby fajnie, ale takie urządzenie spokojnie powinno być obsłużone przez jeden układ typu Atmega8. Użycie Atmegi32 i jeszcze ATtiny13 to przerost formy nad treścią. Usprawiedliwia to jedynie wykorzystany Bascom, który jest totalnie nieoptymalny (na przyszłość tylko C :) )
    Kolejna sprawa to zastosowanie wew. RC 1MHz, może to sprawiać problemy, gdyż wew.RC jest raczej mało dokładny i lubi się rozjeżdżać, przez co 'delay' które używasz przy obsłudze 1-wire mogą przekłamywać i obsługa DS18B20 będzie siadać.

  • #13 30 Mar 2014 19:47
    Mariusz_N
    Poziom 18  

    Cytat:
    takie urządzenie spokojnie powinno być obsłużone przez jeden układ typu Atmega8. Użycie Atmegi32 i jeszcze ATtiny13 to przerost formy nad treścią.

    W Atmedze8 to raczej nie zmieścisz, bo same imiona zajmują sporo miejsca no a gdzie reszta. Można się pokusić o wciśnięcie tego w ATmege16 tylko, po co? Niestety nie nam języka C i być może da się w nim napisać identyczny program, który zmieści się w Atmedze8. Ja mam do dyspozycji tylko Bascom’a a obecne ceny procesorów zachęcają do wyboru układu z dużym zapasem. To samo tyczy się Attiny13 koszt ok. 3,2zł i praktycznie nie wymaga żadnych elementów zewnętrznych i daje poczucie dużej swobody w pomysłach więc czemu nie. No, ale jak to mówią, co kto lubi.

    Dodano po 9 [minuty]:

    Cytat:
    Kolejna sprawa to zastosowanie wew. RC 1MHz, może to sprawiać problemy, gdyż wew.RC jest raczej mało dokładny i lubi się rozjeżdżać, przez co 'delay' które używasz przy obsłudze 1-wire mogą przekłamywać i obsługa DS18B20 będzie siadać.

    Ale chodzi o to, że tylko wewnętrzny RC 1MHz się rozjeżdża? Czy chodzi Ci, że ogólnie wewnętrzne RC nie jest stabilne?

  • #14 30 Mar 2014 20:48
    noel200
    Poziom 24  

    Mariusz_N napisał:
    Przyciskiem [ESC] w każdym chwili można włączyć lub wyłączyć alarm, bo tego zapomniałem dodać.

    No to spoko, to dość istotna funkcja. Tygodniowy to też pożyteczna możliwość.
    Masz już obudowę jakąś do niego?

  • #15 30 Mar 2014 21:03
    dr.hannibal
    Poziom 22  

    Mariusz_N napisał:
    wewnętrzne RC nie jest stabilne?

    Dokładnie
    Mariusz_N napisał:
    bo same imiona zajmują sporo miejsca no a gdzie reszta

    No tak, trochę tego jest.
    Mariusz_N napisał:
    Attiny13 koszt ok. 3,2zł

    Bardzo drogo, ceny atmega8a smd to już 3,90 a możliwości są DUŻO WIĘKSZE.

  • #16 30 Mar 2014 21:12
    tmf
    Moderator Mikrokontrolery Projektowanie

    dr.hannibal napisał:

    Kolejna sprawa to zastosowanie wew. RC 1MHz, może to sprawiać problemy, gdyż wew.RC jest raczej mało dokładny i lubi się rozjeżdżać, przez co 'delay' które używasz przy obsłudze 1-wire mogą przekłamywać i obsługa DS18B20 będzie siadać.


    Stabilność wewnętrznego RC jest wystarczająca do uzyskania stabilnej transmisji 1-wire. Wystarczy porównać tolerancję RC i czasów dla 1-wire.

  • #17 30 Mar 2014 21:19
    dr.hannibal
    Poziom 22  

    tmf napisał:
    Stabilność wewnętrznego RC jest wystarczająca do uzyskania stabilnej transmisji 1-wire. Wystarczy porównać tolerancję RC i czasów dla 1-wire.

    Teoretycznie OK, natomiast w praktyce miałem właśnie taki przypadek, że transmisja 1-wire siadała z tego powodu. Niby wszystko dało by się ustawić odpowiednimi czasami (delay), ale osobiście uważam, że lepiej w takich przypadkach mieć stabilne źródło taktowania.

  • #18 30 Mar 2014 21:34
    tmf
    Moderator Mikrokontrolery Projektowanie

    Znaczy to tylko tyle, że źle napisałeś funkcje obsługi OW. Podaj jakąś przyczynę dla ktorej teoria miałaby się rozmijać z praktyką.

  • #19 30 Mar 2014 23:59
    r-maniac
    Poziom 14  

    Może to banalne pytanie wynikające z mojej niewiedzy, ale jak wygenerowałeś te wszystkie dźwięki, Bascom ma do tego jakąś specjalną bibliotekę?

  • #20 31 Mar 2014 08:21
    Mariusz_N
    Poziom 18  

    Cytat:
    Może to banalne pytanie wynikające z mojej niewiedzy, ale jak wygenerowałeś te wszystkie dźwięki, Bascom ma do tego jakąś specjalną bibliotekę?

    Poleceniem SOUND strona 325 BascomBasicAVR :)

  • #21 31 Mar 2014 10:02
    michał_bak
    Poziom 16  

    Wszystko dobrze tylko na zdjęciach widzę wyświetlacz VFD a na schemacie w PDF jest zwykły LCD. Jak jest z wsadami, do LCD czy VFD. Poza tym szkoda, że jak zwykle nie ma kodu, tylko wsad.

  • #22 31 Mar 2014 10:41
    Mariusz_N
    Poziom 18  

    Cytat:
    Wszystko dobrze tylko na zdjęciach widzę wyświetlacz VFD a na schemacie w PDF jest zwykły LCD. Jak jest z wsadami, do LCD czy VFD.

    Tak na schemacie jest potencjometr do regulacji kontrastu gdyby ktoś chciał zastosować sobie zwykły LCD 20x2. Jeśli dasz wyświetlacz VFD, to po prostu nie dajesz tej regulacji a co do wsadu, to jest skompilowany z instrukcja $LCDVFO, która powoduje, że wyświetlacz VFD działa poprawnie. Mam sporo różnych wyświetlaczy LCD i nie zauważyłem, żeby któremuś przeszkadzał krótki impuls na linii E. Nie można tego samego powiedzieć w odwrotnej kolejności.
    Cytat:
    Poza tym szkoda, że jak zwykle nie ma kodu, tylko wsad.

    Przemilczę :)

  • #23 31 Mar 2014 15:24
    zbysiusp
    Poziom 13  

    Witam!
    Pracuję w Eagle 6.5.0. Na schemacie jest drobny błąd. Brakuje połączenia "rzeczywistego" rezystora R10 i przełącznika SW5 (winna zapewnie "siatka projektu"). Skutkuje to brakiem linii "wire" na projekcie płytki, który tworzę. Niestety nie potrafię tego poprawić bo nie wiem jak miałeś ustawioną siatkę i za nic nie mogę uzyskać połączenia. Jeśli możesz popraw proszę ten drobiazg na schemacie. Dziękuję za projekt i pozdrawiam.
    Zbyszek.
    W załączeniu rysunki ilustrujące problem.
    Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20

    P.S. Jeszcze jedno pytanko. Jak połączony jest wyświetlacz z "motherboard"? Nie mogę sobie tego wyobrazić. Wygląda jakby część elementów była również na płytce wyświetlacza. Proszę opisz strukturę tej kanapki.

  • #24 31 Mar 2014 18:13
    Mariusz_N
    Poziom 18  

    Cytat:
    Jeszcze jedno pytanko. Jak połączony jest wyświetlacz z "motherboard"? Nie mogę sobie tego wyobrazić. Wygląda jakby część elementów była również na płytce wyświetlacza. Proszę opisz strukturę tej kanapki.

    Nigdy nie rysowałem w tym programie schematów a tym bardziej nie projektowałem w nim płytek. Ten schemat, który zamieściłem trzeba raczej traktować, jako poglądowy. Nie nosiłem się z zamiarem projektowani płytki, więc z bibliotek wybierałem pierwsze lepsze elementy nie zważając na obudowy. Myślę, że nie ma zbyt dużych różnic w wersjach programu i będziesz mógł spokojnie poprawić schemat według swoich potrzeb.

  • #25 31 Mar 2014 21:48
    zbysiusp
    Poziom 13  

    Schemat pięknie narysowany - uczyłeś się z "dobrych książek". Drobny błąd poprawiony. Proszę jeszcze raz o opis połączenia obu płytek (wyświetlacz, sterownik) w postaci kanapki. Gdzie są przyciski, a gdzie podłącza się czujniki temperatury? Do czego służą złącza zaznaczone przeze mnie na fotografii?

    Zegar + alarm + imieniny + 5x DS18b20

  • #26 31 Mar 2014 22:41
    Mariusz_N
    Poziom 18  

    W sumie nie bardzo wiem, o co Ci chodzi, bo przecież moja konstrukcja jest na płytce uniwersalnej, więc wszystko jedno gdzie, co jest. U mnie płytka z wyświetlaczem łączy się taśmą

    Zegar + alarm + imieniny + 5x DS18b20 Zegar + alarm + imieniny + 5x DS18b20

    a klawiatura ma wyprowadzone złącze tak jak zaznaczyłem

    Zegar + alarm + imieniny + 5x DS18b20

    Reszta według schematu
    (niebieski złączki na mojej płytce nie są ujęte na schemacie)

  • #27 31 Mar 2014 22:48
    zbysiusp
    Poziom 13  

    Teraz wszystko jasne. Bardzo dziękuję i pozdrawiam.
    Zbyszek

  • #28 01 Kwi 2014 20:22
    kuba2509
    Poziom 12  

    Witam
    Gdzie są przechowywane dane o imieninach ????

  • #29 01 Kwi 2014 20:31
    Mariusz_N
    Poziom 18  

    Cytat:
    Gdzie są przechowywane dane o imieninach

    w pamięci Flash procesora

  • #30 01 Kwi 2014 20:39
    kuba2509
    Poziom 12  

    Witam
    Nawiązując do Twojej odpowiedzi dla innego usera można tu zastosować bez żadnych przeróbek alfanumeryczny wyświetlacz 20X2. Chyba że ja czegoś nie rozumię.