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

Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P

hiszpan5 03 Kwi 2013 18:41 19887 26
  • Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P

    Witam wszystkich, jest to mój pierwszy projekt opisywany na tym forum.

    Przedstawiam projekt mojego autorstwa, zegar z termometrem wyświetlający aktualną datę, godzinę oraz temperaturę z 3 czujników.

    Założeniem projektu było zbudowanie zegara wyświetlającego godzinę oraz temperaturę wewnątrz mieszkania, na zewnątrz, oraz wody w instalacji CO.

    Projekt oparty jest o mikrokontroler Atmega16 firmy Atmel, który komunikuje się z układem zegara czasu rzeczywistego PCF8583P poprzez interfejs I2C oraz czujnikami temperatury DS18B20 poprzez 1Wire a następnie wyświetla zgromadzone informacje (data, godzina, dzień tygodnia, oraz temperaturę z 3 czujników) na wyświetlaczu LCD 20x4.

    Użytkownik poprzez menu ma możliwość ustawienia:
    - kontrastu wyświetlacza,
    - sposobu wyświetlania informacji,
    - daty (dzień, miesiąc, rok), godziny (godzina, minuty, sekundy) oraz dnia tygodnia.

    Zgromadzone informacje mogą być wyświetlane na wyświetlaczu w 3 trybach:
    - tryb godzina (wyświetlana jest tylko godzina za pomocą dużych cyfr),
    - tryb szczegółowe dane (wyświetlane są wszystkie informacje za pomocą małych cyfr),
    - tryb mieszany (przez około 8 sekund wyświetlana jest godzina za pomocą dużych cyfr, przez kolejne 8 szczegółowe dane),

    Ponadto poprzez menu użytkownik może zobaczyć jaka była maksymalna oraz minimalna temperatura na każdym z czujników w okresie pracy urządzenia (po wyłączeniu zasilania temperatury maksymalne oraz minimalne zostają wyzerowane)

    Na płytce znajdują się wyprowadzenia interfejsów:

    - 1Wire - możliwość podłączenia wielu czujników temperatury (DS18B20) oraz innych czujników, urządzeń,
    - RS232T - port szeregowy - umożliwia komunikację z urządzeniami wyposażonymi w ten interfejs,
    - SPI (ang. Serial Peripheral Interface) - interfejs służący do programowania mikrokontrolera oraz do komunikacji z innymi urządzeniami,
    - port I/O INT1 - możliwość podłączenia innych urządzeń współpracujących z mikrokontrolerem np. odbiornik podczerwieni.

    Użytkownik ma do dyspozycji 4 przyciski: S1, S2, S3 oraz RESET. Pierwsze 3 służą do komunikowania się użytkownika z mikrokontrolerem (poruszania się po menu, ustawiania daty, godziny, kontrastu, itp.). Przycisk RESET powoduje ponowne uruchomienie mikrokontrolera.
    Na płytce znajduje się buzer, który sygnałem dźwiękowym informowanie użytkownika o błędach lub innych zdarzeniach.





    Układ odmierzania czasu został wyposażony w system bateryjnego podtrzymania zasilania. Realizowany jest poprzez baterię CR 2032.

    Oprogramowanie mikrokontrolera zostało napisane w języku BascomAVR. Kod programu jest bardzo długi, dla niektórych może być bardzo skomplikowany. Wszystko starałem się pisać sam opierając się o noty katalogowe oraz o pliki pomocy kompilatora BascomAVR. Pisaniu oprogramowania poświęciłem bardzo dużo czasu, było ono wielokrotnie udoskonalane, dlatego zdecydowałem się nie publikować go.

    Podczas nagrywania filmu nie było podłączonych czujników temperatury co spowodowało konieczność wciśnięcia przycisku podczas inicjalizacji oraz wyświetlenie się napisu ERROR w miejscu gdzie powinna znajdować się aktualna temperatura oraz minimalne i maksymalne.

    Płytka zaprojektowana została w programie CadSoft EAGLE. Podczas projektowania starałem się dobrać rozstaw otworów tak, aby odpowiadał rozstawowi otworów w wyświetlaczu LCD. Niestety nie udało się tego zrobić z taką dokładnością jaką zakładałem. Przesunięcie względem otworów wynosi około 2mm względem dłuższego boku. Elementy znajdujące się na płytce dobrane są w taki sposób, aby zminimalizować dystans pomiędzy obydwoma płytkami PCB.

    Poniżej znajdują się schematy: ideowy oraz montażowy.

    Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P

    W projektowaniu układu elektronicznego i nie tylko bardzo pomocne okazały się kursy oraz wpisy na blogu Pana Mirosława Kardasia (mirekk36).

    Płytka została wytrawiona przeze mnie metodą "żelazkową". Po przeniesieniu tonera na laminat płytka została wstępnie przycięta do pożądanych wymiarów. Jako środek trawiący został użyty roztwór nadsiarczanu sodu (B327). Po wytrawieniu płytka została ostatecznie przycięta, następnie zostały wywiercone otwory a w kolejnym etapie wszystko polutowane.

    Termometr może być zasilany w dwojaki sposób: z programatora lub innego urządzenia poprzez złącze ISP służące do programowania, oraz poprzez złącze zaciskowe z dowolnego zasilacza o stałym napięciu 5V, 150mA. Złącze zaciskowe zabezpieczone jest poprzez diodę prostowniczą zapobiegającą skutkom odwrotnej polaryzacji złącza.

    Koszty:
    - wyświetlacz LCD 20x4 (miałem) ----------------- około 30zł
    - ATmega 16 -------------------------------------------------- 15zł
    - PCF8583P ----------------------------------------------------- 5zł
    - Przyciski microswitch - kątowe -------------------------- 5zł
    - Podstawki precyzyjne -------------------------------------- 2zł
    - Złącze KANDA - kątowe ----------------------------------- 2zł
    - Podstawka na baterię -------------------------------------- 1zł
    - Bateria CR2032 ---------------------------------------------- 3zł
    - Laminat FR4 --------------------------------------------------- 2zł
    - Dystanse 11mm --------------------------------------------- 4zł
    - Nakrętki, śruby M3 ------------------------------------------ 2zł
    - Buzer ---------------------------------------------------------- 2zł
    - Reszta elementów (kondensatory, diody, itp.) ------- miałem
    ---------------------------------------------------------RAZEM: 81zł

    Poza głównym przeznaczeniem przedstawianego urządzenia może ono być wykorzystane jako świetny zestaw uruchomieniowy umożliwiający początkującym jak i bardziej zaawansowanym programistom naukę programowania mikrokontrolerów.

    I jeszcze kilka zdjęć:

    Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P Zegar z termometrem: LCD 20x4, ATmega16, DS18B20, PCF8583P


    Poniżej znajduje się krótki film przedstawiający zdjęcia oraz pracę urządzenia.

    Link


    Fajne!
  • Semicon
  • #2 03 Kwi 2013 21:42
    tehaceole

    Poziom 28  

    Projekt fajny, choć ubolewam, że napisany w Bascom a nie w C. Oczywiście jest to moje prywatne zdanie i nie chcę wywołać tu żadnej burzy. Fajnie podszedłeś do generowania tych dużych cyfr. Czy wyznaczanie dnia tygodnia opiera się o algorytm wiecznego kalendarza Zellera czy stosujesz jakąś inną metodę? Co do tych temperatur min i max. Jeżeli chciałbyś wprowadzić ich zapamiętywanie to sugerowałbym Ci użycie RAM w PCF8583 zamiast eeproma Atmegi. Oczywiście o ile będziesz chciał funkcjonalność pamięci wprowadzić.

    Ogólnie plus za estetykę. Trochę można by płytkę poprawić bo przy tych wymiarach dałoby radę jeszcze nie jedno na niej upchać. Ale to już tylko kwestia tego czy projekt będzie rozwijany. Stanowczo sugeruję Ci jednak abyś zabezpieczył ścieżki chociażby roztworem kalafoni w denaturacie - inaczej będą ulegać degradacji. Zamiast kalafoni możesz też kupić przemysłowy lakier izolacyny np. Plastik 70.

  • #3 03 Kwi 2013 21:42
    tomek122
    Poziom 21  

    Witam.

    Jednak nalegam (proszę), aby kolega wstawił kod źródłowy na forum, po mimo tego, że jest długi i skomplikowany.

  • #4 03 Kwi 2013 21:59
    Villen
    Poziom 21  

    Widzę pewne podobieństwo...

    Zestaw funkcji podobny (ja nie dawałem pomiaru tylu temperatur, za to budzik, czcionka jakby żywcem z mojego zegarka ściągnięta ;) Duży plus za estetykę. Również POCHWALAM zastosowanie Bascoma ;) Jak widać, można w tym języku pisać, o dziwo!, działające programy :P (taka mała ironia w stronę tzw "hejterów" tego języka).

  • #5 03 Kwi 2013 22:27
    hiszpan5
    Poziom 10  

    tehaceole napisał:
    Projekt fajny, choć ubolewam, że napisany w Bascom a nie w C.
    Ja też ubolewam nad tym bo C w porównaniu do Bascoma jest o wiele szybszy i ma ponadto inne zalety. Bascom jest intuicyjny od niego zaczynałem zabawę z mikrokontrolerami. Teraz uczę się programować w C.

    tehaceole napisał:
    Czy wyznaczanie dnia tygodnia opiera się o algorytm wiecznego kalendarza Zellera czy stosujesz jakąś inną metodę?
    Wyznaczaniem dnia tygodnia zajmuje się układ PCF8583P, ja tylko odczytuje zmienną. Nie doczytałem w jaki sposób wyznaczany jest dzień tygodnia w tym układzie.

    tehaceole napisał:
    Co do tych temperatur min i max. Jeżeli chciałbyś wprowadzić ich zapamiętywanie to sugerowałbym Ci użycie RAM w PCF8583 zamiast eeproma Atmegi. Oczywiście o ile będziesz chciał funkcjonalność pamięci wprowadzić.
    Dzięki za sugestię, dobry pomysł. Myślałem nad tym żeby temperatury zapisywać w EEPROM'ie ale jakos nie jest mi to potrzebne.
    Co do degradacji miedzi, nie wiem od czego ale pierwszy raz spotkałem się z takim zjawiskiem a wielokrotnie już wytrawiałem obwody drukowane. Również dzięki za cenną radę :D

    tomek122 napisał:
    Jednak nalegam (proszę), aby kolega wstawił kod źródłowy na forum, po mimo tego, że jest długi i skomplikowany.
    Całego kodu nie opublikuję, natomiast mogę jednak się podzielić wybranymi funkcjami.

    Villen napisał:
    Widzę pewne podobieństwo...
    Było już kilka takich projektów na tym forum i to one mnie zainspirowały do tego aby również skonstruować takie cudo. Z tego co doczytałem to kolega zaimplementował ponadto automatyczne ściemnianie wyświetlacza, pilot zamiast przycisków i obsługę alarmów czego ja nie mam niestety.

    Villen napisał:
    Również POCHWALAM zastosowanie Bascoma
    Moim zdaniem jeżeli ktoś potrafi dobrze wykorzystać możliwości Bascoma to można w nim pisać wiele programów.

  • #6 03 Kwi 2013 22:30
    Pablo2015
    Poziom 18  

    Witam,
    Co do czepialstwa to:

    -po co zastosowałeś tak potężny procesor? ATmega8 spokojnie dałby radę i nie nudziłby się tak jak ATmega16 :-)

    - buzer powinien być sterowany przez klucz tranzystorowy i bocznikowany diodą- pobór mocy buzera to ok 40mA, przy dopuszczalnym prądzie Portu I/O 20mA,

    -PCB można zoptymalizować tak, że zajęłaby dużo mniej miejsca ale wiadomo- LCD jest spory...

    Co do całej reszty to wygląda w porządku :-) Tylko pogratulować.

    PS nie wiem czemu jest taka nagonka na Bascoma?


    Pozdrawiam Paweł

    Czym robiłeś filmik? Tzn. jakim programem?

  • #7 03 Kwi 2013 22:42
    M. S.
    Poziom 34  

    Cytat:
    Jak widać, można w tym języku pisać, o dziwo!


    Można, można. Mam w Bascomie oprogramowany rozbudowany sterownik do kotła CO. Ponad 16kB (żadnych bajerów pożerających pamięć). Sterownik chodzi już non stop 3 lata bez żadnej zwiechy.

    Co do projektu to poprawiłbym wyświetlanie dużych cyfr poprzez eliminację podwójnej poziomej kreski w połowie wysokości cyfry. Ale to już kwestia gustu.

  • #8 03 Kwi 2013 22:44
    adversus
    Poziom 23  

    A ja się przyłączę do sugestii kol. tomek122 co do wstawienia kodu źródłowego... Skoro to dział DIY i publikujesz swój projekt w celach jak myśle edukacyjnych (taką formę ma to forum wg mnie i pewnie nie tylko) a nie jest on komercyjny, warto udostępnić kod, na pewno zyskasz na tym w oczach forumowiczów, poza tym może ktoś podpowie jak coś poprawić w kodzie, co można by zooptymalizować...

    Projekt staranny, fajnie wykonany, ciekawy pomysł na wykorzystanie wyświetlacza LCD do niekonwencjonalnego wyświetlania :)

  • #9 03 Kwi 2013 23:12
    hiszpan5
    Poziom 10  

    Pablo2015 napisał:
    -po co zastosowałeś tak potężny procesor? ATmega8 spokojnie dałby radę i nie nudziłby się tak jak ATmega16
    Z tego względu, że kod programu w bascomie nie zmieścił by się na ATmedze8, a po drugie dlatego, że planuje dodać jeszcze kilka funkcji do kodu programu a nie chciał bym aby w pewnym momencie zabrakło mi miejsca na kod. Oczywiście masz racje, jeżeli nie chciał bym dodawać kolejnych funkcji Atmega8 spokojnie by sobie poradziła.

    Pablo2015 napisał:
    - buzer powinien być sterowany przez klucz tranzystorowy i bocznikowany diodą- pobór mocy buzera to ok 40mA, przy dopuszczalnym prądzie Portu I/O 20mA
    Nie pomyślałem o tym, w błąd wprowadził mie help z bascoma gdzie jest napisane:
    Cytat:
    Gdy do podanej linii portu dołączony będzie głośniczek lub buzer
    Zrozumiałem że można podłączyć bezpośrednio do portu I/O.

    Pablo2015 napisał:
    -PCB można zoptymalizować tak, że zajęłaby dużo mniej miejsca ale wiadomo- LCD jest spory...
    Płytkę projektowałem pod wyświetlacz, ale masz rację można by jeszcze upchnąć w niej parę rzeczy.

    Pablo2015 napisał:
    Czym robiłeś filmik? Tzn. jakim programem?
    Film utworzyłem za pomocą programu Windows Movie Maker przeznaczonego dla systemów Windows 7/8.

    adversus napisał:
    A ja się przyłączę do sugestii kol. tomek122 co do wstawienia kodu źródłowego...
    Przekonaliście mnie, opublikuję kod źródłowy lecz nie jest on profesjonalnie napisany, mam wiele złych nawyków co do programowania w Bascomie... Jednak żeby się większość połapała i żeby nie było pytań typu: a od czego jest ta zmienna? wstawię jeszcze parę komentarzy.

  • Semicon
  • #10 04 Kwi 2013 00:19
    excray
    Poziom 39  

    1. Podświetlenie podpiąłbym pod wyjście z PWM. Zawsze ciekawszy efekt załączania/wyłączania, tudzież ustawienie jasności.
    2. Kontrast - albo w rozsądnych granicach, albo jakaś kombinacja klawiszy resetująca kontrast do wartości domyślnej. W innym przypadku można kontrastem niezłego psikusa zrobić.
    3. Reset na schemacie i na płytce ma zwarcie?
    4. Zamiast PCF8583 w analogicznej cenie jest DS1307. Nowszy, mniejszy pobór prądu, wygodniejszy w obsłudze.

  • #12 04 Kwi 2013 09:55
    hiszpan5
    Poziom 10  

    excray napisał:
    3. Reset na schemacie i na płytce ma zwarcie?
    Chodzi o to że kiedy przycisk RESET jest wciśnięty to jest zwarcie? Nie, prąd płynie przez rezystor 1KΩ o natężeniu 5mA. Można sobie obliczyć z prostego wzoru lub zbadać multimetrem jeżeli ktoś by nie wierzył, a na pin RESET podawane jest napięcie 0V powodując restart mikrokontrolera. Natomiast kiedy przycisk RESET nie jest wciśnięty do pinu RESET podawane jest napięcie 5V.

    Milek79 napisał:
    Ile to coś żre prądu?
    Układ w stanie pracy pobiera 131mA. Odnośnie poprzedniego pytania, w czasie gdy przycisk RESET jest wciśnięty natężenie spada do 26mA.

  • #13 04 Kwi 2013 11:24
    tmf
    Moderator Mikrokontrolery Projektowanie

    Projekt fajny, drobne uwagi:
    1. Skoro za czas odpowiada zewnętrzny RTC, to po co MCU ma swój kwarc?
    2. Skoro MCU ma kwarc, a RTC i tak jest zasilany i masz tam diody (swoją drogą wygodniej jest stosować diodę podwójną zamiast dwóch), to czemu nie zrobić podtrzymania dla MCU, konwersję czasu zrobić programowo i wywalić RTC, który nie jest potrzebny? M16 ma RTC wbudowany, tyle, że musisz robić konwersję z licznika do daty/czasu, ale to żaden problem.
    3. Do 1-wire przydałoby się jakieś zabezpieczenie. Jednak podłączanie długich kabli bezpośrednio do pinu IO MCU nie wydaje mi się być dobrym pomysłem.
    I małe rozwinięcie - pewnie wygodniej byłoby dodać przynajmniej jako opcję na PCB konwerter USART-BT. BT ma obecnie większość urządzeń i możnaby spokojnie transmitować dane bezprzewodowo. Oczywiście wyjdzie drożej niż konwerter do RS232, ale jako opcja myślę, że byłoby to fajne.

  • #15 04 Kwi 2013 13:36
    vinetu_
    Poziom 12  

    Milek79 napisał:
    hiszpan5 napisał:
    Układ w stanie pracy pobiera 131mA

    :O
    Co tam tyle pobiera prądu? Układ RTC? Mój zegarek na ATmedze8 bez układu RTC, też z DS18B20 i wyświetlaczem LCD bierze ok. 4 mA


    Prawdopodobnie podświetlenie LCD, z podświetleniem na max mi pobiera 162mA(całość).
    Mam zbudowany podobny układ, z tym ze zastosowałem DS1307, jest wygodniejszy, ma osobne wejście VBAT dla baterii i nie trzeba dawać diody, z tym że nie ma wbudowanych alarmów.

    Troche to brutalne, ale pomyśl o wylutowaniu nóżki R2 (opornik do bazy tranzystora podświetlenia LCD) i podepnij ją do pinu 4 MCU, odpalisz Timer0 w PWM i możesz sterować płynnie podświetlaniem LCD.

    Co do "anten" na 1wire, mam 30metrów kabla do kotłowni, a na jego końcu 4 DS'y, wiem że tak nie powinno się robić, ale to tylko prototyp, nie mniej jednak działa tak już od dawna i nawet podczas burzy nie zawieszał sie (odpalony watchdog, ale zaimplementowany licznik uptime), kabel oczywiście ekranowany.

  • #16 04 Kwi 2013 14:45
    hiszpan5
    Poziom 10  

    tmf napisał:
    1. Skoro za czas odpowiada zewnętrzny RTC, to po co MCU ma swój kwarc?
    Z jednej prostej przyczyny, jak już wspominałem uczę się programować w C i ten układ będzie mi służył nie tylko do wyświetlania godziny itp. mogę na nim pisać wiele innych programów które będą wymagały zastosowania zewnętrznego oscylatora.

    tmf napisał:
    ... i masz tam diody (swoją drogą wygodniej jest stosować diodę podwójną zamiast dwóch) ...
    Oczywiście, że wygodniej ale nie miałem akurat pod ręką diody podwójnej.

    tmf napisał:
    ... czemu nie zrobić podtrzymania dla MCU, konwersję czasu zrobić programowo i wywalić RTC, który nie jest potrzebny? M16 ma RTC wbudowany, tyle, że musisz robić konwersję z licznika do daty/czasu, ale to żaden problem.
    Jak dla mnie wygodniej jest zastosować zewnętrzny RTC, ale gdyby układ miał służyć tylko jednemu konkretnemu celowi - wyświetlać datę, czas i temperatury jak najbardziej jest to dobre rozwiązanie jeżeli chodzi o minimalizacje układu.

    Milek79 napisał:
    hiszpan5 napisał:
    Układ w stanie pracy pobiera 131mA

    Co tam tyle pobiera prądu? Układ RTC? Mój zegarek na ATmedze8 bez układu RTC, też z DS18B20 i wyświetlaczem LCD bierze ok. 4 mA
    Kolega vinetu_ ma racje, samo podświetlenie LCD pobiera 102mA.

    Milek79 napisał:
    Troche to brutalne, ale pomyśl o wylutowaniu nóżki R2 (opornik do bazy tranzystora podświetlenia LCD) i podepnij ją do pinu 4 MCU, odpalisz Timer0 w PWM i możesz sterować płynnie podświetlaniem LCD.
    Miałem zastosowane takie rozwiązanie w połączeniu z detektorem oświetlenia w wersji prototypowej ale po pewnym czasie uznałem że jest to zbędne.

  • #17 04 Kwi 2013 19:06
    22053
    Użytkownik usunął konto  
  • #18 04 Kwi 2013 20:04
    Flaman11
    Poziom 17  

    Zawsze jest jeszcze chociażby Atmega168, która ma tyle samo pamięci flash co Mega16. Bardzo fajny projekt i wykonanie. Zamiast podpisu S1, S2, S3 lepiej byłoby jakoś opisać typu, np. "<",">","ok". Z tą regulacją kontrastu to racja. Zazwyczaj się ją ustawia raz, a jasność można w zależności chociażby od pory dnia, by w dzień świeciło mocniej, a w nocy słabej.

  • #20 04 Kwi 2013 21:14
    Flaman11
    Poziom 17  

    Przy konwersji na bcd i na odwrót łatwo o błąd, przy którym dwa razy się konwertuje na ten sam kod. Dlatego znacznie lepiej jest użycie buforowych zmiennych, które maja być wyświetlane w kodzie bcd i wrzucanie do nich danych, które chcemy wyświetlić. Dzięki czemu wszystkie operacje są wykonywane w systemie dziesiętnym i nie trzeba po każdym wyświetleniu konwertować z powrotem do kodu dziesiętnego.

  • #21 05 Kwi 2013 02:28
    dondu
    Moderator Mikrokontrolery Projektowanie

    hiszpan5 napisał:
    Chodzi o to że kiedy przycisk RESET jest wciśnięty to jest zwarcie? Nie, prąd płynie przez rezystor 1KΩ o natężeniu 5mA. .

    Dobrze że policzyłeś prąd, tylko zastanów się, po co tak duży, skoro mógłby być z 50x mniejszy?

    W dodatku zgodnie z wymaganiami Atmela, rezystor ten powinien mieć co najmniej 4,7k. Jeżeli ma prawie 5x mniej (jak u Ciebie) to jest możliwość wystąpienia problemów z programowaniem: http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html

    Co to za buzzer?
    Znasz jego parametry?
    Masz do niego datasheet?

    Poza tym projekt bardzo fajnie wykonany :)

  • #22 05 Kwi 2013 12:38
    tehaceole

    Poziom 28  

    hiszpan5 napisał:

    tehaceole napisał:
    Czy wyznaczanie dnia tygodnia opiera się o algorytm wiecznego kalendarza Zellera czy stosujesz jakąś inną metodę?
    Wyznaczaniem dnia tygodnia zajmuje się układ PCF8583P, ja tylko odczytuje zmienną. Nie doczytałem w jaki sposób wyznaczany jest dzień tygodnia w tym układzie.
    Dlaczego pytałem? Otóż w mojej przygodzie z PCF miałem taki smutny epizod w którym okazało się, że muszę podać do PCFka dzien, miesiac, rok, i dzien tygodnia bo ta cholera nie umiała sobie wyznaczyć dnia tygodnia na podstawie wprowadzonej daty. Stąd po iluśtam próbach wkurzyłem się i zostawiłem w spokoju dzień tygodnia zaszyty w PCF na rzecz wyznaczania go przy pomocy wiecznego kalendarza. W C wygląda to tak:
    Kod: C
    Zaloguj się, aby zobaczyć kod

    Na PLC implementowałem to też w ST.

  • #23 05 Kwi 2013 15:26
    hiszpan5
    Poziom 10  

    dondu napisał:
    Co to za buzzer?
    Znasz jego parametry?
    Masz do niego datasheet?
    Jest to buzzer wylutowany z jakiejś płyty głównej komputera. Nie wiem co to za model itp. nie ma na nim żadnych oznaczeń.

  • #24 05 Kwi 2013 15:46
    Kear
    Poziom 9  

    Jak to :) a ja widzę, że ten buzzer to KC-1206

  • #25 05 Kwi 2013 18:15
    hiszpan5
    Poziom 10  

    Kear napisał:
    Jak to :D a ja widzę, że ten buzzer to KC-1206
    Sory, no tak, pomyliłem z innym buzzerem. Tak jak Kolega napisał to jest KC-1206. Jak wpiszecie w wyszukiwarkę "KC-1206" to pierwszy link i macie od niego notę katalogową.

    KC-1206:
    Zakres napięć 4.0V do 8.0V
    Pobór prądu: max 50mA
    Rezystancja cewki: 40.0Ω ± 6.0Ω
    Poziom głośności: 85dBA

  • #26 08 Kwi 2013 05:09
    boorys2424
    Poziom 9  

    Witam. Projekt świetny.
    Jak Kolega hiszpan5 może to proszę o wrzucenie jeszcze wzoru płykti i będzie komplet. Pozdrawiam

  • #27 22 Sie 2015 18:54
    Jaremka
    Poziom 14  

    W kodzie jest bląd , zrobiłem na płytce stykowej według schematu , wyswietla kilka razy
    - tryb szczegółowe dane (wyświetlane są wszystkie informacje za pomocą małych cyfr),
    - tryb godzina (wyświetlana jest tylko godzina za pomocą dużych cyfr),

    potem wygasa wyswietlacz i widać migajace znaczki ledwo widoczne , nie reaguje na przyciski