Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Zegarek na atmega8 z pomiarem temperatury i napięcia

Sebastian.R 01 Lut 2016 20:12 2163 7
  • #1 01 Lut 2016 20:12
    Sebastian.R
    Poziom 20  

    Witam!
    Wykonałem taki diy , znaczy na atmega 8 , do niego podpinam dwa klawisze , dwa termometry DS18B20. W skrócie - mierzy czas , dwie temperatury oraz napięcie do 20Vdc . W fusebit-ach ustawiony tylko kwarc wewnętrzny 8MHz , jednak do wejść xtal dolutowałem kwarc zegarkowy. Wszystko chodzi idealnie, a jednak... Nie ma podtrzymania zegarek i za każdym razem trzeba ustawić godzinę. Tu moje pytanie : jak podłączyć baterię 3.6V ico ustawić we fusebitach by po zaniku 5V nadal sobie czas odmierzał , mimo , że nie będzie zasilania na wyświetlaczu HD44780? Da wogóle radę taki patent zastosować ?
    Nie chciałbym inwestować w zewnętrzny zegarek 1307. Zakupiłem omyłkowo wersję 1302 i za cholerę nie idzie mi obsługa tego układu (1302). No albo prosiłbym o jakieś przykłady w Bascom-ie na tą wersję 1302. Bo na 1307 to są wszędzie, a to wiadomo , że nieco inaczej się programuje. Pozdrawiam.

  • Pomocny post
    #2 01 Lut 2016 21:20
    niveasoft
    Poziom 34  

    Rozważ takie rozwiązanie, ale dobrze byłoby podłączyć jeszcze jeden pin do mikrokontrolera żeby rozpoznawał czy mamy zasilanie i od tego uzależnił co ma robić program. Po co ma odpytywać czujniki na baterii. Na dodatek po wznowieniu zasilania musiałbyś użyć komendy Initlcd
    Zegarek na atmega8 z pomiarem temperatury i napięcia
    W FuseBitach nie musisz nic mieszać, ale program pewnie wymaga konkretniejszych zmian...

  • #3 01 Lut 2016 21:33
    Sebastian.R
    Poziom 20  

    No takie też rozwiązanie zastosowałem. Tyle że bez tej diody na masie stabilizatora. Po wznowieniu zasilania otrzymałem ciemny wiersz górny , jasny dolny - jakby straciła się komunikacja z wyświetlaczem. To jeśli jest dalej wszystko ok , że czas liczy , to może i masz rację że po powrocie napięcia trzeba ponownie zrobić initlcd. Ale to teoria. Ktoś próbował tego w rzeczywistości i mu to zadziałało ?

  • Pomocny post
    #4 01 Lut 2016 21:54
    niveasoft
    Poziom 34  

    To nie teoria a często stosowane rozwiązanie. Dlatego przydałby się sygnał który by informował o stanie zasilania. Jest to ważne z jeszcze jednego powodu. Kiedy LCD nie ma zasilania to potrafi je wyciągać przez piny mikrokontrolera.
    Dlatego kiedy pin informuje że nie ma zasilania sieciowego ustawiasz porty na których jest sterowany wyświetlacz w stan niski.

    Najlepiej użyć takiego inicjowania od początku czyli włączasz mikrokontroler i sprawdzasz pin zasilania po czym piszesz Initlcd.
    Związane to z tym że kiedy kompilator widzi Initlcd to już nie zainicjuje LCD automatycznie przy starcie tylko będzie z tym czekał aż do momentu gdzie to zawarłeś w kodzie.

  • #5 01 Lut 2016 22:18
    Sebastian.R
    Poziom 20  

    No to faktycznie muszę takie coś dopisać. No a jakby dopisać tylko IF-a który uzależni spadek napięcia poniżej 4V i wyzeruje piny przez które porozumiewa się z LCD , ELSE zrobi init , czyli jeszcze raz przypisze kontrolę (co na którym pinie przy Config LCD).

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Od ConfigLCD do Pinb.2. Da to się powtórzyć , czy trzeba jeszcze pisać procedurę inicjowania ?

  • Pomocny post
    #6 01 Lut 2016 23:56
    niveasoft
    Poziom 34  

    Nie wiem czy myślisz kompleksowo. Jeśli chcesz mierzyć napięcie to nie możesz ustawić AREF na AVCC bo one opadnie do 3,6V.
    Musisz więc ustawić wewnętrzne 2,56V. Przy takim znów na wejściu pinu ADC musiałbyś dać dzielnik rezystorowy, na przykład, na dwóch rezystorach 10K.

    Potem inicjalizacje warto robić tylko raz po wznowieniu zasilania. Można to rozwiązać prostym "zatrzaskiem" w kodzie. Po każdej zmianie trybu zasilania tylko raz wykonuje dane czynności. Można się pokusić nawet o Powerdown, ale nie wszystko na raz ;)

    Musisz trochę pomyśleć sam.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

  • #7 02 Lut 2016 00:04
    Sebastian.R
    Poziom 20  

    Genialnie ! Dziękuję. Jutro jak czas dopisze dam cały kod .



    ===================================================
    Oto kod nieco zmodyfikowany dla potrzeb zasilania awaryjnego z baterii.
    Opierałem się jak widać o dostępne w internecie kody.

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    Co myślisz ?

  • #8 17 Mar 2017 21:07
    grzegorz.d3
    Poziom 14  

    Podaj schemacik jeszcze .

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME