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

Prośba o sprawdzenie schematu ATMEGA48 + MBI5031

02 Sie 2010 20:12 4879 15
  • Poziom 9  
    Witam,

    Stworzyłem taki schemat do modułu wyświetlacza składającego się z 16 diód LED RGB z wspólną anodą.

    Moduł sterowany Atmega48 z mbi5031, czujnik halla, 16 diód rgb led Common anode, karta SD na SPI.

    Chodzi mi o połączenia elektryczne - czy wszystko w porządku.

    Bardzo proszę o wytknięcie wszystkich błędów jakie popełniłem.

    Prośba o sprawdzenie schematu ATMEGA48 + MBI5031

    Dziękuję.
    Pozdrawiam,
    Alex

    Dodano po 17 [minuty]:

    Głównie chodzi mi o to, czy LP2951 dając 100mA prądu jest w stanie pociągnąć wszystkie te peryferia (atmega, karta sd, 3xmbi5031). Z moich wyliczeń wychodzi że wszystkie te elementy pobiorą jakiś 60mA. Dobrze liczę?

    Druga sprawa, na jak długą wystarczą 3 baterie 2000mAh przy 16 diodach led (3 kolory)?

    Diody RGB to w sumie 3 diody w jednej obudowie więc wychodzi, że tych diodek jest 16 x 3 = 48 sztuk x 20 mA. To wychodzi prawie 1A prądu! Czy faktycznie będzie taki pobór prądu? Czy raczej układy MBI5031 pozwolą zmniejszyć zużycie?

    Bo w takim wypadku cały układ z 3 bateriami 2000mAh będzie pracował maks 2 godziny. Czy dobrze kombinuję?

    Pozdr.
  • Specjalista - Mikrokontrolery
    Ciekawe jak na pinie ICP wygenerujesz zegar dla GCLK driverów? Możesz połączyć wszystkie wejścia LE razem - i tak masz układy w "łańcuchu" więc po co Ci osobne linie LE? Te diody RGB to masz do jakiego napięcia podłączone od strony anody? Bo jak do tego malutkiego stabilizatorka, to na pewno się nie wyrobi, 48diod pociągnie spokojnie więcej niż to 100mA.

    4\/3!!
  • Poziom 9  
    ICP to też CLKO czyli generator z kwarca.

    Diody 48sztuk podpięte byłyby bezpośrednio do baterii(bez stabilizatora) - dokładnie tak jak to jest na schemacie.

    Dodano po 1 [minuty]:

    No faktycznie obciąło dół schematu - wszystkie diody podpięte do napięcia 4,5V

    Dodano po 9 [minuty]:

    Wydaje mi się, że nie mogę połączyć wszystkich LE, gdyż skąd układy "będą wiedziały" który akurat ma przyjąć dane?
  • Specjalista - Mikrokontrolery
    rvsh napisał:
    Wydaje mi się, że nie mogę połączyć wszystkich LE, gdyż skąd układy "będą wiedziały" który akurat ma przyjąć dane?

    Po prostu będą je przyjmować zawsze, a jak nie będziesz chciał akurat ich zmieniać, to wysyłasz im jeszcze raz to samo - i tak pewnie musisz zapisywać co jak jest ustawione. Do 3 układów wysyłasz 3 (układy) * 16 (wyjść) * 16 (pwm) bitów i w odpowiednim momencie ustawiasz wszystkim sygnał LE. Osobne piny LE niewiele ułatwiają.

    EDIT: chciałem jeszcze dodać, że tych układów nie da się sterować po SPI, bo sygnał LE musi być zmieniany w bardzo konkretnych chwilach, więc nie ma potrzeby podłączać ich do MOSI i SCK.

    4\/3!!
  • Poziom 9  
    Faktycznie wysyłam przecież "ciąg" i zatrzaskuje "data latchem" i za każdym razem każdy układ wysyła to co wcześniej otrzymał zgadza się?

    czyli jak 1 układ otrzymał 32 bajty każdy o wartości 0xFF a następnie 32 bajty o wartości 0x00, a następnie 32 bajty o wartości 0x7F to podczas wysyłania pierwszych 32 bajtów(0xFF) na SDO jest "nic", a podczas wysyłania kolejnych 32 bajtów (0x00) na SDO jest wysyłane 32 bajty 0xFF itd. I dopiero po zatrzaśnięciu "global latchem" mam na wszystkich układach to co chcę czyli po 32 razy 0x7F,0x00,0xFF:) W uproszczeniu.

    Freddie jesteś Wielki!

    A co do SPI to również tego nie dostrzegłem... faktycznie LE działa tu zupełnie inaczej niż CS. Czy to oznacza, że muszę całkowicie programowo rozwiązać wysyłanie danych?

    Przy 8 Mhz wewnętrznego zegara to chyba może być kiepsko. Może nie wyrobić, aby osiągnąć dobre odświeżanie diod led.
  • Specjalista - Mikrokontrolery
    rvsh napisał:
    Faktycznie wysyłam przecież "ciąg" i zatrzaskuje "data latchem" i za każdym razem każdy układ wysyła to co wcześniej otrzymał zgadza się?

    Prawie się zgadza - układ ma rejestr przesuwny o długości 16bitów, po impulsie Data Latch na linii LE aktualne 16bitów trafia do czegoś na styl rejestru SIPO o długości 16 * 16bitów, po impulsie Global Latch dane z tego SIPO (wszystkie 16 * 16bitów) przenoszone są do kontrolera PWM układu. Na wyjściu SDO jest to co było na SDI 16 taktów zegara wcześniej. Jeśli chcesz przesłać dane dla trzech połączonych szeregowo układów, to musisz wysłać je w ten sposób: układ_3_kanał_16, układ_2_kanał_16, układ_1_kanał_16, [DATA LATCH], układ_3_kanał_15, układ_2_kanał_15, układ_1_kanał_15, [DATA LATCH], ..., układ_3_kanał_1, układ_2_kanał_1, układ_1_kanał_1, [GLOBAL LATCH]

    Innymi słowy - wysyłasz sekwencję 3 * 16bitów dla 3 układów i zatrzaskujesz. Każdy układ zatrzaskuje sobie w tym momencie ustawienie dla jednego kanału. Musisz to powtórzyć 16 razy i w ostatnim cyklu zamiast Data Latch stosujesz Global Latch - wtedy następuje faktyczne ustawienie wszystkich kanałów PWM.

    Cytat:
    A co do SPI to również tego nie dostrzegłem... faktycznie LE działa tu zupełnie inaczej niż CS. Czy to oznacza, że muszę całkowicie programowo rozwiązać wysyłanie danych?

    Niestety - raczej nie da się tego zrobić na SPI. W ostateczności możliwe chyba jest wysyłanie samych danych (w sensie "Data Latch" może być zastąpione odpowiednią zmianą na linii LE dopiero PO wysłaniu wszystkich 16-bitów), ale chyba i tak niewiele to zmieni.

    4\/3!!
  • Poziom 1  
    Witam, chcę korzystać z systemu, jeśli nie masz nic przeciwko:)
    Nie rozumiem, jak kontrolki LEDs.... mogą pokazać kod źródłowy proszę?
  • Poziom 9  
    Witam. Robię oświetlenie schodów na układzie MBI5031 chciałem uzyskać efekt kolejno rozjaśniających się diod na schodach czyli ktoś wchodzi na schody zapala się pierwsza dioda z użyciem pwm, następnie zapala się kolejna też z pwm a pierwsza nadal świeci. Czy jest coś takiego możliwe do uzyskania na tym scalaku bo widzę że w środku zawiera to rejestr przesuwny więc domyślam się że tylko jedna dioda może świeci w danej chwili. A więc musiał bym to rozwiązać programowo i dosyć z dużą częstotliwością przesyłać nowe dane?
    Z góry dzięki za odpowiedź
  • Poziom 15  
    Tak, jest to rejestr przesuwny , tzn dane do niego wprowadzasz na linii data szeregowo, taktujące zegarem. Wprowadzasz 16 wartości dla każdego portu po czym sygnałem na wejściu LE wprowadzone dane ustawiasz na wyjściach. Nie musisz też od razu wysyłać wszystkich 16 wartości. Jeżeli chcesz ustawić np tylko 5 pierwszych wejść dane zatrzaskujesz już po przesłaniu 5 stanów. Możesz więc ustawić dowolny stan na wyjściach (16 wyjściach x 12 bitów PWM). Aby ustawić nowe dane, procedurę powtarzasz.To tak na szybko z tego co pamiętam.
  • Moderator Mikrokontrolery Projektowanie
    marspox napisał:
    Robię oświetlenie schodów ...

    Jeżeli wykorzystujesz schemat przedstawiony, na początku tego tematu, to jest on niepoprawny w zakresie braku podłączenie niektórych niezbędnych pinów mikrokontrolera i braku filtracji jego zasilania. Wszelkie informacje znajdziesz na tej stronie i zawartych tam linkach: Minimalne podłączanie pinów
  • Poziom 9  
    Dzięki pablo_belchatow za wyjaśnienie jak do ustrojstwo dokładnie działa teraz jestem już pewny że w pełni to się nadaje do mojego projektu.
    dondu napisał:

    Jeżeli wykorzystujesz schemat przedstawiony, na początku tego tematu, to jest on niepoprawny w zakresie braku podłączenie niektórych niezbędnych pinów mikrokontrolera i braku filtracji jego zasilania. Wszelkie informacje znajdziesz na tej stronie i zawartych tam linkach: Minimalne podłączanie pinów

    dzięki za ostrzeżenie aczkolwiek ja chciałem tylko troszkę zgapić schemacik podłączania tych MBI5031.
    Nawiązując do tego schematu po co jest tam Ca na dole schematu?
    Diody są ze wspólną anodą a więc wystawiając zera na wyjściach MBI5031 i do wspólnej anody napięcie np 5V sterujemy diodą za pomocą katod i tyle. Do układu można podpiąć zewnętrzny rezystor który będzie wspólny dla wszystkich wyjść układu(diod)
    Mam racje?
  • Poziom 15  
    Poczytaj sobie dokładnie dokumentację, bo coś mi tak po głowie chodzi, że te wyjścia to są źródła prądowe regulowane. Czyli nie dajesz żadnego rezystora a prąd/jasność ustalasz wartością rejestru.
  • Poziom 16  
    można też uzyć zewnętrznego R-EXT do kontroli wartości prądu wyjściowego dla wszystkich kanałów...
  • Poziom 11  
    Znalazłem podobny temat o MBI5031 i autor użył rezystory ograniczające prąd diod (włączone miedzy wyjścia MBI a katody diod). Zastanawia mnie czy jest sens dawać te rezystory skoro R-EXT ograniczy prąd dla wszystkich kanałów? Chodzi o rozbieżność jasności poszczególnych diod?

    Dodano po 2 [minuty]:

    Prośba o sprawdzenie schematu ATMEGA48 + MBI5031
  • Poziom 16  
    Wydaje mi się, że ma sens używania dodatkowych rezystorów wtedy gdy są to właśnie diody różnokolorowe... jak wiadomo R będzie świecić bardzo intensywnie już przy stosunkowo niskim prądzie a pozostałe aby świeciły z porównywalną jasnością wymagają wyższego prądu. Właściwie to chodzi o napięcie złączowe diody ale nie sądzę by MBI był na tyle inteligentny by na każdym kanale sterować zarówno prądowo jak i utrzymywać stałe napięcie odpowiednie dla każdej z diod. Rezystory mogą też stanowić element zabezpieczenia nadprądowego przy maksymalnym prądzie ustawionym na R-EXT.

    Pozdrawiam,
  • Poziom 11  
    Jest sens. Już sam do tego doszedłem. Jeśli zasilanie damy z 5V to wiadomo,że czerwona dioda mogła by ulec przepaleniu tak samo pozostałe. Dioda red powinna mieć ok 2V, blue 3V, zielona 2V-w zależności od użytej matrycy ledowej czy pojedynczych diod te napięcia mogą się nieco różnić. Jeśli wiec napięcie doprowadzone do anod będzie 5V a na wyjściach MBI poziom PWM da nam masę (0X000000-diody będą świeciły na maxa)to diody prędzej czy później przy takim napięciu pójdą w śmietnik .

    Dodano po 5 [minuty]:

    Czyli wychodzi na to,że na powyższym schemacie autora tego postu jest błąd -brakuje tych rezystorów.