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

Zegar ,budzik ,data ,termometr na Atmega32 + LCD 2*16

inspector_electro 10 Lut 2013 20:32 9213 12
  • Witam wszystkich.

    Długo się zastanawiałem nad wrzuceniem tego projektu na Elektrodę.Moje obawy wiążą się z tym ,że na Elektrodzie jest wiele podobnych projektów i mój projekt jest nie do końca ok.Z uwagi na to że jestem początkującym , ale po prostu nie chcę być gorszy ,postanowiłem pokazać wam ten zegar.To wszystko co opiszę może się przydać innym początkującym.A więc:

    Jest to zegar z datą,alarmem i termometrem.Układ zrobiony jest na razie na "płytce testowej". Sercem układu jest atmega32-pu taktowany 16Mhz.Za czasomierz odpowiada znany chyba wszystkim RTC PCF8583 Philipsa.Komunikacja pcf-a odbywa się oczywiście po I2c.
    Co do termometru ,nie było go w pierwszej wersji softu -dopisany.Termometr z zakresem temperatur od -55 / +110 st.C. Na Ds18B20.
    Wyświetlacz standardowy 2*16 znaków na HD44780.Oryginalnie ten LCD był normalny czrno-biały ,ale z uwagi na to że miał podświetlenie na diodach od spodu, zrobiłem negatyw- jak? .Z LCD zdjąłem pierwszą folię polaryzacyjną.Po tym nałożyłem taką samą folię ,którą ściągnąłem z matrycy od laptopa , i po odpowiednim odwróceniu(wtedy zmienia się kontrast) nakleiłem na LCD.To nie wszystko bo żeby podświetlenie było dobre pod spód LCD podłożyłem 2 warstwy folii rozpraszającej, która także znajduje się pod LCD matrycy.No i po tym uzyskałem dobre podświetlenie.

    Najwięcej problemów sprawiało zapisywanie daty do pcf-a.W tej kwestii pomagał mi kolega Mundi1970 w tym wątku:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=2476686&highlight=
    Zrezygnowałem jednak z takiej obsługi i data zapisywana jest programowo.
    Alarm tak samo.Z alarmem miałem też problemy ,bo po ustawienu i włączeniu się działał całą minutę.W końcu rozwiązałem ten problem w trochę nietypowy sposób.
    Po naciśnięciu zdefiniowanego przycisku, godzina alarmu zmieniana jest w układzie(programie) na 26 i w ten sposób mogę uciszać budzik.
    Soft nie jest mój ,znalazłem go na forum i trochę przerobiłem.

    Z chwilowego braku pieniędzy wszystko jest na pająku.Procesor będzie też inny , i z uwagi na to że soft ma mniej niż 7 kilo. będzie to Mega8.

    Może moje wypociny nie trafią do kosza, to może ktoś coś podpowie co dodać, co ująć ,może coś zmienić. :)

    Zegar:

    Zegar ,budzik ,data ,termometr na Atmega32 + LCD 2*16

    Moja płytka testowa:

    Zegar ,budzik ,data ,termometr na Atmega32 + LCD 2*16





    Zegar PCF na razie okrutnie potraktowany do testów :)

    Zegar ,budzik ,data ,termometr na Atmega32 + LCD 2*16

    Programator także zrobiony ,schemat znaleziony na forum STK 200/300

    Zegar ,budzik ,data ,termometr na Atmega32 + LCD 2*16

    Krótki filmik pokazujący działanie:



    To chyba wszystko w razie czego pytajcie.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #2 10 Lut 2013 21:36
    mdm150
    Poziom 26  

    Od strony wizualnej płytki nie wyglądają za dobrze, ale mniejsza oto. Schemat i wsad do tego zegarka jest jakiś?

  • #3 10 Lut 2013 21:45
    inspector_electro
    Poziom 22  

    Jeżeli chodzi o płytki ,to jeszcze nie przerabiałem wytrawiania.Wszystko robię na razie na pająku pod płytkami.Schematu też jeszcze nie rysowałem ponieważ uważam to wykonanie jako stan surowy który czeka na resztę elementów.Co do wsadu to proszę bardzo ,gotowy i źródło.

    Co gdzie podłączyć można odczytać w kodzie.

  • #4 26 Lut 2013 20:44
    MarcinK.
    Poziom 10  

    Witam.
    Ja mam pytanie dotyczące wyświetlania czasu na lcd.
    Chodzi mi konkretnie o to czy wyświetlając jednocześnie czas i zmiany temperatury sekundy wyświetlają Ci się płynnie na lcd ?
    Ja w moim projekcie mam z nimi problem.
    Bo gdy wrzucę do procka obsługę tylko zegara to czas leci płynnie, gdy natomiast wrzucę obsługę czasu i temp. wtedy sekundy lecą już nierównomiernie.

  • #5 26 Lut 2013 20:59
    inspector_electro
    Poziom 22  

    Miałem ten sam problem.Pomogło wstawienie niestety WAITMS.W zależności od programu , od 180 do 300.Ja umieściłem to przerwanie zaraz pod termometrem.Wyżej masz plik bas.Możesz sobie podejrzeć.Dobranie odpowiedniej wartości u mnie przebiegało eksperymentalnie, co 1.Mimo tego że masz nierówno "chodzące" sekundy, pcf i tak to koryguje.Czyli jeśli Ci się spóźnia np. 3 sek ,to w drugiej minucie przez chwilę czas masz idealny.Tak więc nie ma opóźnień czy pośpiechu na dobę.Tak jak napisałem wcześniej ,waitms 180 / 300.

  • #6 26 Lut 2013 21:40
    komatssu
    Poziom 29  

    Zamiast kombinować z WAITMS lepiej chłopoki poczytajcie w jaki sposób można wykorzystać wyjście INT w układzie PCF :)

  • #7 26 Lut 2013 21:46
    inspector_electro
    Poziom 22  

    Ja chwilowo wstrzymałem prace.Przeraża mnie kombinowanie z tym int.Właściwe bity ,konwertowanie itd.Ja na razie zostaje przy przerwaniu programowym ,bo brak czasu nie pozwala na zabawę.

  • #9 27 Lut 2013 08:01
    inspector_electro
    Poziom 22  

    Jeżeli chodzi o schemat ,to postaram się w końcu usiąść do eagle.Mówię w końcu ,bo nigdy nie pracowałem na tym programie ,a wiem że trzeba poświęcić trochę czasu.Finanse - no niestety ,ale daję sobie radę ponieważ mam spore zasoby "z odzysku" .Więc wszelkie płytki robię na pająka i elementy też rzadko kupuję.Te płytki stykowe nie są drogie ,ale wiecie... czas aż przyjdzie płytka itd.Poprostu zależało mi na czasie i zrobiłem tak na "szybciora".

  • #10 27 Lut 2013 10:32
    komatssu
    Poziom 29  

    inspector_electro napisał:
    Ja na razie zostaje przy przerwaniu programowym

    Może coś przespałem, ale wydaje mi się, że w AVR nie występują przerwania programowe.

  • #11 28 Lut 2013 20:48
    MarcinK.
    Poziom 10  

    A czy ktoś byłby w stanie zamieścić kod jak rozwiązać na timerze problem płynnego wyświetlania czasu przy jednoczesnej obsłudze zegara i czujnika temp. ??

  • #12 03 Mar 2013 18:17
    lechoo
    Poziom 39  

    MarcinK. napisał:
    A czy ktoś byłby w stanie zamieścić kod jak rozwiązać na timerze problem płynnego wyświetlania czasu przy jednoczesnej obsłudze zegara i czujnika temp. ??

    Proszę bardzo, oto przykładowy kod namazany przeze mnie kilka lat temu, z użyciem przerwania INT1:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Do kompletu jeszcze schemat systemu na którym było to testowane:

    Zegar ,budzik ,data ,termometr na Atmega32 + LCD 2*16

  • #13 04 Mar 2013 18:57
    MarcinK.
    Poziom 10  

    Ooo ...
    Dziękuję bardzo.
    Nie spodziewałem się tak szybkiej odpowiedzi :)
    Jutro przejżę dokładnie kod.

    Pozdrawiam.

  Szukaj w 5mln produktów