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.

[ATMega 8A] - Wyświetlacz 7 segmentowy LED-słabe podświetlenie na 2 wyświetlaczu

hunt3r666 11 Wrz 2014 13:30 4515 17
  • #1 11 Wrz 2014 13:30
    hunt3r666
    Poziom 9  

    Dzień dobry,
    po podłączeniu i zaprogramowaniu podwójnego 7 segmentowego wyświetlacza LED ze wspólną anodą, cyfry na drugim wyświetlaczu nie wyświetlają się poprawnie , tzn. przy wyświetlaniu cyfr od 0-5 nie świecą poprawnie wszystkie diody, od cyfr 6-9 wszystko wyświetla się poprawnie.

    Odliczanie przebiega prawidłowo od 0-99, problem tkwi w słabym podświetleniu niektórych diod drugiego wyświetlacza lub braku ich podświetlenia.

    Porty które używam to cały PORT D i cały PORT B. Podobno MISO,MOSI i SCK można używać jako wyjście więc postanowiłem spróbować i w kodzie programu PORT B i D jest ustawiony jako wyjście.

    Działające wszystkie diody (kropek nie podłączałem, gdyż nie potrzebuję aktualnie):

    [ATMega 8A] - Wyświetlacz 7 segmentowy LED-słabe podświetlenie na 2 wyświetlaczu

    Wadliwe wyświetlenie na dwóch wyświetlaczach cyfry 2:

    [ATMega 8A] - Wyświetlacz 7 segmentowy LED-słabe podświetlenie na 2 wyświetlaczu

    --------------------------------------

    Informacje na temat używanych komponentów:

    -Programator USBasp, zasilanie układu z programatora 5V.
    Programator USB podpięty jest pod laptop.

    - Atmel Studio 6 (Dodałem swój programator do urządzeń, aby przesyłać kod)

    - ATMEGA 8A

    - Wyświetlacz 7 segmentowy podwójny (Prąd pracy: 5-10mA, max.20mA). Podłączony wg. schematu:

    [ATMega 8A] - Wyświetlacz 7 segmentowy LED-słabe podświetlenie na 2 wyświetlaczu

    Do każdej diody podłączony jest rezystor 470R.



    ----------------------------------
    Przesyłam również kod Programu:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    // ATMega ustawiona jest we właściwościach projektu na F_CPU=1000000L

    #include <avr/io.h>
    #include <util/delay.h>

    #define t 500

    int main(void)
    {

    DDRD = 0xFF; // Wyświetlacz nr 1. 0xFF = 1111 1111 kierunek -> wyjście

    DDRB = 0xFF; // Wyświetlacz nr 2. 0xFF = 1111 1111 kierunek -> wyjście

    int i;
    int j;
    char liczby[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x02,0xF8,0x00,0x10};

    while(1)
    {
    for (j=0; j<=9; j++)
    {
    PORTD = liczby[j];

    for (i=0; i<=9; i++)
    {
    PORTB = liczby[i];
    _delay_ms(t);
    }
    }
    }
    }[/syntax]

    0 17
  • #2 11 Wrz 2014 13:34
    mag32
    Poziom 19  

    Czyli kształt cyfry jest prawidłowy lecz jego jasność nie?
    A podeślij schemat układu, bo z tego wynika, że gdzieś jest problem z wydajnością prądową układu.
    Podpiąłeś to prosto pod uCPU?

    0
  • #3 11 Wrz 2014 13:48
    hunt3r666
    Poziom 9  

    Dokładnie, kształt cyfry jest dobry tylko czasami podświetlenie jest bardzo słabe lub nie podświetla 2/3 diod które powinny się zapalić.

    Przewody potrzebne do programowania (RESET,MISO,MOSI,SCK,VCC,GND) są cały czas podpięte do nóżek ATmegi ze złącza Kanda, a programator podłączony do USB. (Jeśli dobrze zrozumiałem pytanie).

    Zaraz wyślę schemat.

    Dodano po 9 [minuty]:

    Za godzinę/dwie wrzucę schemat dopiero.

    0
  • #4 11 Wrz 2014 13:51
    mag32
    Poziom 19  

    Pytanie jest o pełny schemat, bo to by było najlepsze, a chodzi konkretnie o sposób podłączenia zasilania i wyświetlacza do uProcesora.

    0
  • #5 11 Wrz 2014 14:15
    BlueDraco
    Specjalista - Mikrokontrolery

    Sprawdź podłączenia masy, VCC i AVCC - muszą być podłączone wszystkie te linie uC.

    Symbole '0'..'9' to CYFRY, a nie liczby!

    0
  • #6 11 Wrz 2014 14:31
    mag32
    Poziom 19  

    Biorąc pod uwagę, że to ATMega8, to za dużego wyboru nie ma, są dwa GND, VCC i AVCC, zakładając, że oba są podłączone, to przyczyną może być wydaje mi się jedynie przeciążenie portu - ile pobiera pojedynczy segment?
    Brak kondensatorów filtrujących na zasilaniu ewentualnie też.
    Poza tym dochodzi jeszcze złudzenie optyczne spowodowane migotaniem segmentów, ale kolega nie wykorzystuje PWM, więc to odpada.

    0
  • #7 11 Wrz 2014 15:10
    hunt3r666
    Poziom 9  

    Jest to mój pierwszy schemat w programie Eagle, więc proszę o wyrozumiałość.


    [ATMega 8A] - Wyświetlacz 7 segmentowy LED-słabe podświetlenie na 2 wyświetlaczu

    Dodano po 3 [minuty]:

    Mam podpięte 1xVCC i 2xGND. AVCC nie podłączone,ale po podłączeniu, nic nie zmienia. (niechcący na schemacie podpiąłem AVCC,a nie VCC).

    Po dołożeniu kondensatorów na zasilaniu sytuacja jest nadal taka sama.

    Dodano po 12 [minuty]:

    Przesyłam krótki filmik w ciemnym pomieszczeniu w którym bardzo dokładnie widać opisany problem.

    0
  • #8 11 Wrz 2014 15:39
    mag32
    Poziom 19  

    Rozumiem, że pomimo tego co jest na schemacie, to piny AVCC i VCC są podpięte do +5V.
    Więc wydaje mi się, że jedynym problemem może tu być przeciążenie prądowe portu. Policz sobie ile tam amper płynie i ogranicz ten prąd do absolutnego minimum.

    0
  • #9 11 Wrz 2014 16:53
    BlueDraco
    Specjalista - Mikrokontrolery

    Nie łącząc VCC mogłeś zabić uC. Spróbuj na innym egzemplarzu, upewniając się, że wszystkie zasilania są podłączone.

    0
  • #10 11 Wrz 2014 17:22
    hunt3r666
    Poziom 9  

    VCC jest podpięte na 100%, tylko tak jak pisałem wcześniej, niechcący na schemacie podpiąłem AVCC zamiast VCC.
    AVCC nie jest podłączone, lecz nawet gdy jest to i tak nic się nie zmienia.

    0
  • #11 11 Wrz 2014 17:36
    szelus
    Specjalista - Mikrokontrolery

    Na schemacie masz zwarcie pomiędzy segmentami f2 i g2. To tylko na schemacie? Bo zachowanie tych segmentów jest takie, jakby to zwarcie było w rzeczywistości...
    Po drugie, odłącz programator i wtedy sprawdź. Przy podpiętym programatorze stan SCK i MOSI jest wymuszany z programatora. Jeżeli je ustawiasz z procesora - robisz zwarcie.

    0
  • #12 11 Wrz 2014 18:03
    hunt3r666
    Poziom 9  

    f2 i g2 ma zwarcie tylko na schemacie (dopiero uczę się obsługi tego programu, stąd drobne błędy).

    Czyli po wgraniu programu na ATmegę odpiąć przewody z programatora które są podpięte do płytki stykowej: SCK,MOSI, MISO i RESET i zostawić tylko przewody VCC i GND?

    0
  • #13 11 Wrz 2014 18:03
    mag32
    Poziom 19  

    i sprawdź prądy płynące do segmentów bo wydaje mi się, że je przekroczyłeś i stąd problemy

    0
  • #14 11 Wrz 2014 20:09
    hunt3r666
    Poziom 9  

    Prąd płynący do segmentów wyświetlacza waha się między 30-45mA.

    Po odłączeniu SCK,MOSI, MISO i RESET od Atmegi i zostawieniu tylko przewodów zasilających, nic się nie zmieniło niestety...

    0
  • #15 11 Wrz 2014 21:57
    BlueDraco
    Specjalista - Mikrokontrolery

    Jaką naprawdę masz wartość rezystorów? Przy 470 Ohm miałbyś natężenie ok. 6 mA.

    0
  • #16 11 Wrz 2014 22:23
    hunt3r666
    Poziom 9  

    Rezystory mają: 470R

    1
  • #18 11 Wrz 2014 22:56
    hunt3r666
    Poziom 9  

    Nie wiem w czym tkwił problem, ale pożyczyłem od kolegi nową Atmegę 8 i ją podłączyłem, zaprogramowałem i wszystko działa poprawnie (bez zmieniania przewodów).
    Wartość natężenia jest też teraz taka jak napisał BlueDraco.
    Wygląda na to, że to była wina mikrokontrolera, tylko nie jestem w stanie powiedzieć co odpowiadało za tą usterkę.

    Dziękuję za pomoc i chęci. Na pewno zapamiętam na przyszłość rady, których się od was dowiedziałem.

    Pozdrawiam!

    0