logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Połączenie pcf8583 z mikrokontrolerem AVR

naelektryzowany 17 Paź 2009 15:50 5930 30
  • #1 7139860
    naelektryzowany
    Poziom 17  
    Witam
    Zamierzam wykonać zegarek z minutnikiem. Do synchronizacji zegarka zamierzam użyć pcf8583 z powodu tylko trzech wolnych wyprowadzeń atmegi8. Układ RTC miałby być podtrzymywany baterią CR2032. Przeglądając forum natknąłem się na kilkadziesiąt różnych połączeń tych dwóch układów, różniących się od siebie wartości elementów, czy zastosowanie trymera zamiast kondensatora przy kwarcu.
    Proszę o podanie najlepszego połączenia, chodzi mi o to żeby przesunięcie czasu nie było większe niż 8min na rok.

    Dziękuje
  • Pomocny post
    #2 7140269
    asembler
    Poziom 32  
    Ja stosuje 13pF a dokladna regulacje robie programowo i mozna osiagnac nawet lepszy wynik niz 8min/rok
    Dobrze jest aby zasilanie PCF podczas pracy było na poziomie zasialnia z baterii minimalizuje to odchylke w przypadku czestych wyłączen pradu na dłuzszy czas(tak było u mnie)
  • Pomocny post
    #3 7140299
    Konto nie istnieje
    Poziom 1  
  • #4 7140451
    naelektryzowany
    Poziom 17  
    A mógłbym prosić o jakiś schemat?
    A pro po baterii to miałem na myśli połączyć tylko masę baterii z masą układu a vcc do atmegi osobne a do pcf8583 z baterii. Dobrze myślę?
  • Pomocny post
    #5 7140456
    tmf
    VIP Zasłużony dla elektroda
    W sumie i tak wszystko zalezy od jakosci kwarcu, ktory uda sie kupic, te powszechnie dostepne zegarkowe 32768Hz sa dosyc nedzne. Jesli pobor pradu nie jest krytyczny to moze lepiej zrobic RTC programowo z porzadnym kwarcem kilka MHz, nie mowiac juz o wersji termostatowanej.
  • Pomocny post
    #6 7140606
    Konto nie istnieje
    Poziom 1  
  • #7 7140626
    naelektryzowany
    Poziom 17  
    Mi chodzi o to żeby układ pamiętał godzinę przez np miesiąc bez podłączania do prądu pcf8583 na baterii wytrzyma kilka lat i dla tego wpadł mi w oko.
  • #8 7140726
    asembler
    Poziom 32  
    Programowy RTC jak napisal poprzednik daje rewelacyjne wyniki. Jako zasilanie awaryjne stosuje akumlatorki 3.6V Trzyma godzine okolo roku.
    Kalibracja chodu zegara programowa rac na dobe. dokladnosc okolo 30sek na miesiac
    Dodatkowo raz na godzine uruchamiany jest pomiar temperatury i rejestrowany w pameci eeprom.
  • #9 7140816
    naelektryzowany
    Poziom 17  
    A czy da się to zrobić w bascom, Bo na razie tylko w nim programuje. Jeżeli tak to proszę o jakieś fragmenty kodu.

    PS:Wolałbym jednak wykorzystać pcf8583 bo mam kilka a czasu mniej do pisania programu.
  • #10 7140868
    tmf
    VIP Zasłużony dla elektroda
    atom1477 napisał:
    Programowe RTC wymaga zasilania procesora z wyższego napięcia (PCF chodzi od 1V a AVR nie).
    Do tego pobór prądu będzie większy.


    Jesli chodzi o pobor pradu to z dedykowanym RTC trudno konkurowac, chociaz AVRy picoPower biora w okolicach 1uA. Co do zasilania to sa dostepne AVRy dzialajace od 0,7V, wiec nie jest zle.

    Dodano po 1 [minuty]:

    naelektryzowany: da sie i w BASCOMie, tyle, ze to bedzie bardzo pradozerne - stosowna procedura napisana w C wykona sie w czasie kilku us, w BASCOMie pewnie kilka-kilkanascie razy dluzej.W kazdym razie program jest tak banalny, ze nie powinienes miec problemow.
  • #11 7140973
    naelektryzowany
    Poziom 17  
    AVRkami zajmuje się od ok. 4mieś i nawet bascoma nie znam do końca odbiór i zapis przez I2C rozumie ale tego programowego RTC nie za bardzo a układ pcf... chciałem zastosować ponieważ mam kilka sztuk i już z nim pracowałem tylko że wtedy to była prowizorka i dałem to co miałem przez co nie był w ogóle dokładny. I dlatego pytam się jak podłączyć go najkorzystniej. Programowy RTC przyciągnął moją uwagę ale to to za jakiś czas, a poza tym nigdy nie próbowałem ograniczyć prądu pobieranego przez układ bo zawsze wżywałem zasilaczy I nie musiałem się bać o wyczerpanie się bateryjek (tak jak w tym przypadku) tylko, że ten układ byłby odłączany i dlatego moja pierwsza myśl to hardwarowy RTC.
  • #12 7141216
    Konto nie istnieje
    Poziom 1  
  • #13 7141315
    naelektryzowany
    Poziom 17  
    Nie wiem co lepsze ale jeżeli obydwa korzystają z i2c i obydwa nadają się do tego to chyba lepszy pcf5863. A właśnie czy procedura komunikacji zmieni się jakoś i czy wszystko będzie działało bez uruchomionej atmegi? Jeżeli tak to jaka jest rola ramu w pcf8583?
  • Pomocny post
    #14 7141561
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #15 7141754
    p_zag
    Poziom 14  
    witam
    Ja też kiedyś zbudowałem taki zegar i chodzi mi on z dokładnością około 1 - 2 sekund na tydzień (przez wielokrotne dobieranie kondensatora między nóżką 1 i nóżką 8 układu PCF8583, a wynosi on teraz 8,2pF). Co prawda pisałem na Atmege8 w języku C, ale skoro dopiero zaczynasz to może naucz się też języka C. Wszystko co potrzeba znajdziesz w moich artykułach:

    1. https://www.elektroda.pl/rtvforum/topic1427945.html#7015567
    2. https://www.elektroda.pl/rtvforum/topic1338039.html

    W pierwszym nauczysz się jak zacząć posługiwać się magistralą TWI(i2c)
    W drugim przykład jak praktycznie zastosować magistralę TWI, oraz znajdziesz literaturę do poczytania: język C, opis pcf8583, opis jak sterować magistralą TWI, opis Atmegi (co prawda atmegi16 ale ten opis tyczy się też atmegi8), a wszystko to jest po polsku.
    Co prawda nie ma tam schematu mojego zegara, bo projektowałem go w nie typowym programie, ale w oparciu o kod jaki tam znajdziesz możesz sam swój własny schemat stworzyć. Dodam jeszcze, że jest to zegar, w którym można regulować jasność świecenia wyświetlaczy LED po przez sterowanie zamykania się tranzystora IRF9520 i zapamiętywanie tej nastawy w pamięci pcf8583.
  • #16 7142515
    naelektryzowany
    Poziom 17  
    Myślałem nad jakim oprogramowaniem się skupić C / assembler / bascom ale jak poczytałem sobie o złożoności C i tym że w bascomie można wstawić fragment kodu s abssemblera ( $asm ) to wybrałem bascoma wiedząc że jest uproszczeony i niema w nim tyle możliwości jak C, Ale ja nie zamierzam robić bardzo skomplikowanych użądzeń gdzie trzba oszczędzać na pamięci, poboże prądu lub jakiejś formółki której w bascomie nie da się wykonać. Jestem pewien, że jak nauczę się bacoma i będę chciał więcej to przejdę na c.

    P-zag mógłbyś dać schemat twojego połączenia z pcfkiem 1-2 sek to bardzo dobry wynik wychodzi 1- 1,7min na rok. Jakiego kwarcu użyłeś?
  • #17 7143097
    tmf
    VIP Zasłużony dla elektroda
    W C tez mozesz robic wstawki w assemblerze, podobna dyrektywa zreszta, mozesz tez wstawiac cale fragmenty napisane w assemblerze umieszczone w innych plikach.
    Sa tez dostepne rozne biblioteki, ktore ulatwiaja pisanie, takze przewaga BASCOMa IMHO jest niewielka. Szybko sie tez okaze, ze kod napisany w BASCOMie jest dluzszy i wolniejszy co bedzie cie zmuszac do kupowania wiekszych prockow. No i BASCOM chyba nie jest za darmo? Jesli myslisz o pisaniu programow na mikrokontrolery to IMHO BASCOM to stracony czas, i tak predzej czy pozniej przesiadziesz sie na C.
  • #18 7143887
    naelektryzowany
    Poziom 17  
    Myślę, że masz rację z tym, że język C ma więcej zalet i zacznę się go uczyć jak zrobię ten minutnik z zegarkiem bo na to mam kila tyg a nauczyć się do tego stopnia C nie zdąrze. Nie zacząłem się uczyć C bo wydaje się strasznie skomplikowany. To mógłbyś mi pokazać na schemacie połączenie pcfka z atmegą?
  • Pomocny post
    #20 7144278
    wello
    Poziom 20  
    Ja to zrobiłem tak:

    Połączenie pcf8583 z mikrokontrolerem AVR

    Linie VCC i GND to te, których oznaczenie (czerwony napis) przecina się z konkretną ścieżką. Oprócz tego widać podłączenie baterii, dwóch diod, kondensatorów, kwarcu, trymera i rezystorów podciągających linie TWI do 5V. Te linie SCL i SDA idą bezpośrednio do Atmegi (w Atmedze 32 są to nóżki odpowiednio 19 (PC0) i 20 (PC1)) oraz /INT na 21 (PC2).

    @atom1477 - prędzej bateria się zużyje sama z siebie niż pobór prądu tej 8563 by ją wyczerpał :P

    Ja korzystam z 8583 ponieważ chwalę sobie w nim dodatkowe 256B RAMu. Dzięki podtrzymaniu bateryjnym mogę w PCFie przechowywać wiele potrzebnych dla mnie informacji. Mam rozbudowany zegar na graficznym LCDku 192x64 i trochę bajerów więc po odłączeniu zasilania straciłbym je gdybym nie przechowywał ich w RAMie PCFa. Oczywiście przy prostym zegarku RAM nie jest potrzebny ale jeżeli chcesz coś fajnego dodać to jest to bardzo przydatne rozwiązanie.
  • #21 7144576
    naelektryzowany
    Poziom 17  
    A w jaki sposób podłączyć baterię myślę, że tylko masę baterii z masą układu a vcc do atmegi osobne a do pcf8583 z baterii. Tak może być?
  • Pomocny post
    #22 7145167
    wello
    Poziom 20  
    To, co napisałeś jest tym samym co jest na moim schemacie :) Masa do masy, 5V do Atmegi i przez diodę do PCFa a 3,3V z baterii tylko do PCFa przez diodę. Te dwie diody powodują to, że jak masz zasilanie sieciowe to PCF zasilany jest z sieci a jak je odłączysz to z baterii.
  • #23 7145357
    naelektryzowany
    Poziom 17  
    No tak ale bez diód też chyba może być, po prostu pcf byłby zasilany cały czas z baterii? Jak nie to mam pytanie co to są za diody?
  • Pomocny post
    #24 7145393
    wello
    Poziom 20  
    Oj niestety ale diody muszą być. Bo w przeciwnym wypadku te 5V z sieci ładowałoby baterię a takiego czegoś nie może być. Te dwie diody powodują to, że PCF zasilany jest albo z sieci albo z baterii, nigdy z obu naraz gdyż jedna blokuje 5V idące na baterię a druga blokuje 3,3V idące na resztę układu który raz dwa by ją wyczerpał. A diody wystarczą schottky, moje mają bodajże 250mV spadku napięcia w kierunku przewodzenia.
  • #25 7145449
    naelektryzowany
    Poziom 17  
    mi chodziło o to żeby zasilacz zasilał tylko atmegę a bateria była tylko połączona masą z zasilaczem a vcc baterii tylko do pcf...

    To co to są za diody?
  • Pomocny post
    #26 7145525
    wello
    Poziom 20  
    No jeżeli chcesz to połączyć tak, że bateria tylko do PCFa a sieć tylko do Atmegi to jak najbardziej tylko w momencie gdy będziesz chciał wymienić baterię, a zegarek będzie podłączony do zasilania sieciowego to pojawią Ci się bzdury na wyświetlaczu ponieważ będzie on próbował czytać poprzez TWI z PCFa, a PCF będzie wyłączony. Co prawda taka sytuacja zdarzyć się może bardzo rzadko, najrzadziej po kilku latach gdy się wyczerpie bateria ale jak to zwykle w życiu bywa będą pewnie inne powody dla których będziesz musiał to zrobić i wówczas jak już napisałem dostaniesz śmieci na lcd no i będziesz musiał ponownie ustawiać godzinę, datę i co tam jeszcze ;) A te diody tak jak napisałem to są diody schottky, niskonapięciowe żeby jak najmniejszy spadek na nich był.
  • #27 7145583
    naelektryzowany
    Poziom 17  
    Z tego co wiem to baterię taką wymienia się raz na 9-12 lat a godzinę zmienia się 2 razy w roku więc ten trzeci raz co 9lat to nie problem.

    Dziękuje wam wszystkim za pomoc.
    Z tymi diodami to zobaczę.

    I jeszcze jedna rzecz jeżeli układ byłby zasilany z baterii 3v, a jak jest podpięty to z 5v czy to nie wpływa na tempo odliczania czasu?

    PS: nie będę używał LCD tylko wyświetlacz led 7segmentowy :D
  • Pomocny post
    #28 7145695
    wello
    Poziom 20  
    Niestety ale częściej się ją wymienia. Sama jej żywotność to 6-7 lat wg. noty katalogowej. A biorąc pod uwagę zużycie energii elektrycznej to wymienia się ją między 2-gim a 5-tym rokiem użytkowania. Jeżeli dobrze ustawisz kwarc sprzętowo (trymer) lub programowo (korekta czasu co 24h) to nie będziesz musiał często zmieniać godziny ale jeżeli trafisz na słaby kwarc itp. to być może godzinę będziesz musiał ustawiać co miesiąc. Różnie to bywa.
    Jeżeli chodzi o tempo odliczania czasu to nie wpływa ale oczywiście musisz umieścić jakiś kondensator, najlepiej 100nF jak najbliżej nóżek zasilania PCFa żeby zniwelować zakłócenia idące z układu i zewsząd.
    Na segmentowym też będziesz miał śmieci :) Bo jak PCF nie ma zasilania a Atmega czyta po TWI to w zmiennych pojawia się wartość bodajże 165 :)
  • Pomocny post
    #29 7145759
    tmf
    VIP Zasłużony dla elektroda
    Zuzyje sie znacznie szybciej, jesli PCF bedzie ciagle zasilany z baterii. Trzeba brac pod uwage nie tylko prad zzerany przez PCF, ale takze prad potrzebny do wysterowania magistrali I2C, a przeciez bedziesz go czytal dosyc czesto (1/s). Wysterowanie SCK i SDA to jakies 2x2mA co najmniej, a jesli na tej szynie bedzie cos wiecej/dasz mniejsze pull upy to wiecej. Jesli te diody zajmuja za duzo miejsca to kup jakas diode dualna w obudowie SOT23 i po klopocie. Znaczy pojawia sie inny klopot - mozliwosc wciagniecia nosem tak malego elementu :)
  • #30 7147743
    naelektryzowany
    Poziom 17  
    Macie rację zaprojektuje płytkę jeszcze raz z diodami.

    Powiecie mi wreszcie co to są za diody?
REKLAMA