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.

Atmega8/ Bascom - SAA1064 4 x 7 segment dynamicznie

maximus22_kr 23 Lut 2014 00:18 2388 7
  • #1 23 Lut 2014 00:18
    maximus22_kr
    Poziom 18  

    Witam
    Uruchamiam układ Atmega8 + SAA1064 - cztery wyświetlacze LED w trybie dynamicznym

    Próbuje według kodu poniżej

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    gdy zasilam z programatora LED nic nie wyświetla, gdy podłącze zewnętrzne zasilanie 8V przez 7805 to wtedy wyświetla "1289", ale bardzo słabo - trzeba przysłonić ręką wyświetlacz, żeby coś zobaczyć.
    Jeśli wysyłam kontrolny bajt &HF7 , czyli
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    to wtedy zapalają się jasno tylko wszystkie cztery kropki

    Wyświetlacz jest koloru zielonego - dwie LEDy na segment. Po podłączeniu przez rezystor 330R segmenty ładnie świecą - sprawdzałem, bo myślałem, że może 5V które jest w zasilaniu nie starcza.

    Schemat poniżej
    Atmega8/ Bascom - SAA1064 4 x 7 segment dynamicznie

    0 7
  • #2 23 Lut 2014 03:13
    Marek_Skalski
    Moderator Projektowanie

    Na wyjściach MX1 i MX2 maksymalne napięcie to Vcc-1,5V.
    Tranzystory sterujące anodami pracują w idiotyczny sposób (wiem, tak jest w nocie układu) i wprowadzają dodatkowy spadek napięcia o V_BE (~0,7V).
    Jeżeli zasilasz wyświetlacze z 8V, to realnie dostają <5,8V.
    Jeżeli wyświetlacze mają świecić na zielono, to typ. napięcie przewodzenia 2 szeregowo połączonych ledów wynosi ~6,4V.
    To z tego powodu nie świecą jak należy. A zielone kropki świecą, ponieważ mają po 1 diodzie, prawda?

    Masz 2 wyjścia:
    - podnieść napięcie zasilania do min. 9V.
    - zmienić konfigurację tranzystorów sterujących anodami na (P-MOSFET lub PNP) + rezystory polaryzujące i ograniczające prąd, przy zgodzie na zamianę cyfr 1 z 2 oraz 3 z 4.

    0
  • #3 23 Lut 2014 15:40
    maximus22_kr
    Poziom 18  

    Dziękuję za odpowiedź.
    W sumie u mnie najprościej będzie podnieść napięcie zasilające. Wystarczy napięcie zasilania tranzystorów przepiąć z wyjścia stabilizatora na wejście - zasilanie układu może chyba zostać na na poziomie 5V, co prawda według PDF Vcc układu może być do 15V.

    Zgadza się - kropki mają po jednej diodzie. Ale jak podniosę napięcie zasilania to czy "kropki" przeżyją ?

    Pozdrawiam

    0
  • #4 23 Lut 2014 15:57
    Marek_Skalski
    Moderator Projektowanie

    Obliczenia robiłem przy założeniu, że tranzystory podłączają anody do 8V. Nic dziwnego, że ledwo świeciły jeżeli były przypięte do 5V.

    Kropki nie powinny być zagrożone. SAA1064 ma wbudowane źródła prądowe. Podniesienie napięcia nie skutkuje wzrostem prądu powyżej 21mA (typowo wg specyfikacji).

    0
  • #5 23 Lut 2014 16:26
    maximus22_kr
    Poziom 18  

    jeśli zasilę układ SAA1064 z wyższego napięcia, o czy nie spowoduje to uszkodzenia Atmega ? w sumie są połączone przez SDA i SCL, a te linie są podpięte do VCC Atmega

    wystarczyło podnieść napięcie zasilania SAA1064 i tranzystorów z 5 V, niestety nie zauważam zmian w jasności świecenia, gdy zmieniam konfiguracje w podprogramie Saa1064_init.

    0
  • #6 28 Lut 2014 00:09
    maximus22_kr
    Poziom 18  

    Czy Kolega będzie może wiedział co jest nie tak od strony programistycznej ?

    Tzn. jeśli wyświetlam stałe wartości to jest ok, podobnie jak wyświetlam w pętli For... Next od 1 do 59.

    Dodałem jeszcze obsługę LCD, żeby widzieć, co się dzieje z czasem.

    Ale jak podepnę do tego PCF8563 i odczytuje czas z niego, a dopiero później wysyłam do SAA1064 to jest tak:
    - chwilowa zmiana jasności ( mocniej zaświeci ) podczas aktualizacji LED
    - przestaje wyświetlać ( np 23:59, a następnie nie idzie dalej )
    - potrafi zablokować ( lub zmienić ) czas w PCF, rano LED pokazywał 03:31, a LCD jeszcze inne wartości

    Używam PCF8563 od kilku lat, zawsze z sukcesem, a tutaj coś razem nie gra

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #7 28 Lut 2014 09:33
    Mundi1970
    Poziom 24  

    Atmega 8 posiada sprzętowy interfejs TWI(I2C), więc go może wykorzystaj.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    I2START, I2CREPSTART, I2CRBYTE i I2CWBYTE zwracają błąd, zapisywany jest zmiennej Err (0-ok, 1-błąd). Nigdzie w programie zmiennej Err nie sprawdzasz.
    Jeżeli nie chcesz po każdym wysłanym bajcie sprawdzać zmiennej Err można to zrobić tak, zamiast:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    wykorzystaj I2csend:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #8 04 Mar 2014 00:49
    maximus22_kr
    Poziom 18  

    Ciekawy sposób obsługi I2C.

    Na razie wygląda, że działa. Co prawda w momencie zmiany zawartości wyświetlacza jest krótkie zwiększenie jasności, ale co tam.

    Natomiast nie wyświetla 00 - włączyłem go o 00:30 i pierwsze dwa wyświetlacze nic nie wyświetlają - świecą tylko te dwa ostatnie od minut. Poprzednio też był z tym problem, zatrzymywał wyświetlanie na 23:59.

    No i wyświetlacz LED i LCD jakoś się nie lubią - w momencie zmiany zawartości LED, LCD czasem się odświeża cały ( jest krótkie mignięcie wszystkich wyświetlanych pozycji ), nawet raz zatrzymał się na kilka sekund i wtedy LED świecił mocniej, aż do momentu, gdy ruszy LCD, wtedy LED przygasa.

    0