Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

BTC/ZL2AVR - 4 wyświetlacze 7 segmentowe

GOTHAM 08 Lip 2013 10:23 5889 48
  • #1 08 Lip 2013 10:23
    GOTHAM
    Poziom 14  

    Witam,

    na płytce ZL2AVR mam zamontowane 4 wyświetlacze 7 segmentowe i atmege8 która nie ma tylu wyjść by obsłużyć ledy. Moje pytanie jest następujące. Jaki mam dobrać multiplekser do sterowania tych wyświetlaczy.

  • #2 08 Lip 2013 11:56
    pawel-jwe
    Poziom 30  

    Kolejne wyświetlacze kluczowane są tranzystorami, więc do obsługi 4 wystarczy 8+4=12 pinów. Jakikolwiek multiplekser nic tu nie da bo i tak musisz mieć 8 linii 'danych' (kolejne segmenty) + linie wyboru danego wyświetlacza, które można by zredukować do 2 (wybór na bramkach poprzez wartości binarne '00' '01' '10' '11') - ale to nadal łącznie 10 pinów więc dużo nie zyskasz.

  • #3 08 Lip 2013 13:43
    _jta_
    Specjalista elektronik

    A iloma wyjściami dysponujesz? Są różne sposoby, da się i z jednego, ale jak masz więcej wyjść, to łatwiej, przy 3 już w miarę komfortowo: 1 - 1-Wire, 2 - I2C, 3 - SIPO z zatrzaskiem; na forum było rozwiązanie z SIPO z 1 wyjścia, ale może nie trzeba aż tak rzeźbić?

  • #4 08 Lip 2013 15:42
    GOTHAM
    Poziom 14  

    8 wyjść na poszczególny wyświetlacz, do tego 4 wyjścia do wybierania poszczególnego wyświetlacza, jak kolega napisał 12 wyjsc zajetych.

  • #5 08 Lip 2013 15:50
    piotrva
    Moderator Mikrokontrolery

    Na tej płytce masz 8 wejść (abcdefg.) sterujących segmentami i 4 wejścia sterujące wspólnymi zakończeniami każdego z wyświetlaczy osobno. W sumie 12 pinów i Atmega8 spokojnie to przełknie (ba, nawet Attiny2313 to łyka).
    Widzę, że brakuje Ci nieco teorii o multipleksowaniu takich wyświetlaczy:
    http://maxembedded.com/2013/01/30/seven-segment-multiplexing/

    No chyba, że chcesz mniej niż 12 linii to przy sensownym rozwiązaniu można zejść do 4 linii (MOSI, MISO, SCK, CS) używając do multipleksowania i sterowania 2 buforków typu 74HC595) lub nawet 2 używając jakichś ekspanderów I2C, ale 74HC595 są moim zdaniem szybsze i lepsze do tego zastosowania. Oczywiście multipleksowanie i tak musi być programowe.

  • #6 08 Lip 2013 15:55
    GOTHAM
    Poziom 14  

    Ale jaki multiplekser ( układ scalony ) zastosować?

  • #7 08 Lip 2013 16:08
    piotrva
    Moderator Mikrokontrolery

    Np. taki: http://www.maximintegrated.com/datasheet/index.mvp/id/1339
    Tylko pytanie, czy na prawdę tego potrzebujesz? Co to za projekt?
    Ja osobiście zawsze robiłem to w projektach komercyjnych bezpośrednio na pinach procesora lub z wykorzystaniem tanich jak barszcz 74HC595 lub jakichś odpowiedników z regulacją prądową do diodek led.
    Jeszcze nie zdarzył mi się taki projekt na procesorze klasy M8, żeby układ nie dał sobie (przy odpowiednio napisanym programie) rady z multipleksowaniem nawet matrycy LED 48*8 przy jednoczesnym obliczaniu animacji i jeszcze obsługa klawiatury PS2, zegara czasu rzeczywistego lub w drugim wariancie zamiast PS2 były termometry na 1-wire.

  • #8 08 Lip 2013 16:10
    GOTHAM
    Poziom 14  

    Chciałbym zbudować termometr z wykorzystaniem czujnik firmy dallas na złącze 1-wire .

  • #9 08 Lip 2013 16:15
    piotrva
    Moderator Mikrokontrolery

    No to multiplekser jest Ci tu w zupełności zbędny - a jeśli uważasz inaczej to znaczy, że masz złe podejście do pisania programu.
    Po pierwsze procesor ma 20 pinów I/O (zakładając podłączony kwarc), czyli 12 na sterowanie 4-rema wyświetlaczami + 1 na ile tam chcesz termometrów 1-wire - zostaje jeszcze 7 pinów wolnych.
    A multipleksowanie i komunikację 1-wire da się pogodzić w 100% i to nie z takimi maleństwami jak 4*7 segment ;)

  • #10 08 Lip 2013 16:17
    GOTHAM
    Poziom 14  

    Tak rzeczywiście nie zauważyłem. Tzn , że wyświetlacze będą bardzo szybko odświeżane , stwarzając złudzenie dla ludzkiego oka że świecą cały czas bez przerwy?

  • #11 08 Lip 2013 17:34
    piotrva
    Moderator Mikrokontrolery

    Tak, częstotliwość przy której przyjemnie się patrzy na takie coś to ok 150-200Hz na cały cykl zapalenia 4 wyświetlaczy.
    Oczywiście na krótki czas wysyłania komend 1-wire odświeżanie należy zablokować, bo inaczej skutecznie popsuje komunikację 1-wire.

  • #13 08 Lip 2013 18:44
    _jta_
    Specjalista elektronik

    Jakby użyć 8-pinowego uC, 2 piny do zasilania, 2 do kwarcu, 1 do termometru, to jeszcze 3 zostają - czyli komfort. Ewentualnie, użyć I2C i mieć jeden pin do sterowania (np. przełączania termometrów).

  • #14 08 Lip 2013 21:40
    PiotrPitucha
    Poziom 32  

    Witam
    W wersji skondensowanej wystarczy 6 końcówek, dwie na 74HC164 i cztery na segmenty, w wersji bardzo skondensowanej jedna na 74HC164, i trzy na segmenty.
    Można zjechać z dwoma na segment kosztem ograniczenia jasności, ale cztery chyba wygospodarujesz, to metody klasyczne, jak założysz expander po I2C albo SPI to masz zupełny luz :)
    Z 74HC164 podpowiedział mi kiedyś kolega, zamiast zawłaszczać końcówkę do resetu transmitował 8 zer do rejestru a dopiero po nich to co chciał.
    Co do segmentów to dajesz licznik pierścieniowy do ośmiu i wpinasz się co drugie wyjście, żeby nie mrugało w czasie ładowania rejestru licznik musi być ustawiony tak by nie zasilał LEDów, tu reset jest pożądany by nie mylić segmentów.
    Piotr

    EDIT
    Zapomniałem o jednej końcówce przy 74HC164 :D , reszta pasuje.

  • #15 09 Lip 2013 10:10
    _jta_
    Specjalista elektronik

    Sterowanie matrycowe (74HC164 - rejest SIPO + 4022 - licznik pierścieniowy) wymaga 4-ch wyjść, 2 scalaków i 4-ch tranzystorów (bo 4022 daje za mały prąd wyjściowy), daje świecenie cyfr na zmianę - przesyłamy dane do cyfry 1, to są 24 operacje (dane, zegar H, zegar L, i tak 8 razy), potem włączamy cyfrę 1 (zegar H, zegar L), chwilę czekamy, wyłączamy cyfrę 1, potem dane do cyfry 2... i tak w kółko 4 cyfry; potrzebne jeszcze jedno wyjście do resetowania 4022.

    Jest rejestr SIPO z zatrzaskiem na wyjściach, wymaga 3 sygnałów (dane, zegar, przepisane danych do wyjść), można łączyć kilka w szereg, żeby uzyskać dłuższy rejestr SIPO - do 4 cyfr potrzebne 4 takie rejestry.

    I2C - jest rejestr 8-bitowy, wpisywanie 2-ma sygnałami (dane, zegar), można z tych samych sterować do 8 rejestrów (czyli mieć 64 wyjścia) - oprócz danych przesyła się numer rejestru.

    1-Wire przesyła wszystko po 1 linii, ale wymaga zachowania odpowiednich czasów trwania impulsów (wszystkie wcześniejsze sposoby są asynchroniczne, można przesyłać w dowolnym tempie).

    Ten pierwszy sposób, podany przez PiotrPitucha, daje kolejne świecenie cyfr, więc trzeba je zmieniać tak szybko, żeby oko miało wrażenie ciągłego świecenia, za to wymaga mniej układów scalonych (2 na całość); chyba wszystkie trzy pozostałe wymagają jednego układu na każdą cyfrę (nie pamiętam, jak z 1-Wire, może wymaga więcej); do I2C muszą być wyświetlacze ze wspólną anodą, do SIPO chyba niekoniecznie, nie wiem, jak dla 1-Wire, ale to może być trudne do kupienia w Polsce i najdroższe. Najprostszy do sterowania będzie układ z SIPO, najtrudniejszy 1-Wire, pozostałe dwa porównywalne.

    Oczywiście, można zastosować 4 sztuki 74HC164 i tak, żeby świeciły wszystkie cyfry naraz - ale wtedy albo będą migać podczas ładowania, albo dodatkowy sygnał (i tranzystor średniej mocy, bo prądy będą spore - wszystkie cyfry razem, to może być i pół ampera) do wyłączania cyfr podczas ładowania danych; raczej nie warto stosować 74HC164+zatrzasków, bo to już by było 8 układów; ewentualnie jeden 74HC164 + 4 zatrzaski 8-bitowe sterowane z rejestru pierścieniowego, ale to w sumie 6 układów - a to samo można uzyskać stosując 4 sztuki SIPO z zatrzaskiem w jednym układzie, mając tylko 4 układy. I w każdym z tych układów będą 3 piny, oprócz tego z rejestrem pierścieniowym (tam 4).

  • #16 09 Lip 2013 12:06
    tmf
    Moderator Mikrokontrolery Projektowanie

    Kombinujecie jak konie pod górkę. Podczas, gdy sprawa jest prosta. Albo wykorzystać procesor z odpowiednią liczbą pinów, co nie stanowi problemu (pod warunkiem, że nie przekroczymy obciążalności). Albo zastosować SPI i rejestry z zatrzaskiem, typu 74xx595, nie 164, które ze względu na brak zatrzasku absolutnie się nie nadają do sterowania multipleksowego. Do sterowania potrzebne są wyłącznie sygnały MOSI, SCK i LE. Długość rejestru może być teoretycznie dowolna, limitowana wyłącznie szybkością magistrali SPI i częstotliwością odświerzania. Ponieważ ATMega ma sprzętowe SPI więc wysyłanie danych niewiele kosztuje (szczególnie jeśli mamy mały LED, np. 4-cyfrowy).
    W przypadku sensowniejszych AVR (XMEGA, chociażby małe XMEGA serii E5, które mają 32 piny jak ATMega8 i są od niej tańsze), całe sterowanie multipleksowe można zrobić całkowicie sprzętowo, bez ingerencji MCU.

  • #18 09 Lip 2013 12:41
    PiotrPitucha
    Poziom 32  

    Witam
    Stosowałem HC164 w układach multipleksowanych ze względu na dostępność i cenę, wygaszanie na czas transmisji całkiem ładnie się sprawuje, oczywiście najlepiej byłoby mieć więcej wolnych pinów w procesorze, ale odnoszę wrażenie że autor ma gotowca do którego chce się podpiąć.
    Można zrobić wyświetlanie statyczne na 2 drutach, ostatnio ćwiczę MCP23017, 16 wyjść programowanych sterowanych z I2C, nie wiem jak z wydajnością prądową ukladu bo stosuję to z buforami do przekaźników, ale jak się ma mało pinów to idealne rozwiązanie.
    Piotr

  • #19 09 Lip 2013 12:54
    tmf
    Moderator Mikrokontrolery Projektowanie

    Obecnie z układami 595 nie ma najmniejszych problemów, chyba są nawet łatwiej dostępne niż stare 164. Cena groszowa. Natomiast wygaszanie na czas wsuwania do 164 bitów ma istotną wadę, zmniejsza efektywny czas świecenia LED, w efekcie znacznie tracimy na jasności. Przy większej matrycy będzie to koszmarna utrata, a nawet przy małych jest spora.
    Oczywiście pozostają specjalizowane układy, na I2C podałeś, na SPI takimi fajnymi układami są scalaki z rodziny SCT. Mają one długie rejestry (16 bitów), dużą wydajność prądową, brak konieczności stosowania rezystorów - prąd ustala się jednym rezystorem, lub PWM i te bardziej wypaśne możliwość indywidualnego sterowania jasnością przez 10-16 bitowe PWM - przydatne w przypadku sterowania matrycami.

  • #20 09 Lip 2013 13:36
    _jta_
    Specjalista elektronik

    Co do I2C, myślałem o PCF8574. Trochę małe prądy: dozwolony łączny prąd na cały układ 100mA, gwarantowany prąd wyjściowy 10mA. Może bez przesady z tym czasem wsuwania, z AVR-ki można łatwo wysyłać ponad milion bitów na sekundę, a tu trzeba przesłać 32 - raczej trudno zauważyć, że przez parędziesiąt us LED-y będą migać. ;)

  • #21 09 Lip 2013 14:00
    bobeer
    Poziom 28  

    Cytat:
    Obecnie z układami 595 nie ma najmniejszych problemów, chyba są nawet łatwiej dostępne niż stare 164. Cena groszowa. Natomiast wygaszanie na czas wsuwania do 164 bitów ma istotną wadę, zmniejsza efektywny czas świecenia LED, w efekcie znacznie tracimy na jasności. Przy większej matrycy będzie to koszmarna utrata, a nawet przy małych jest spora.

    O cmosie 4094 nie słyszeli koledzy ?
    Na czas wsuwania dane są pamiętane w zatrzasku i problem z głowy ;)

  • #22 09 Lip 2013 14:16
    tmf
    Moderator Mikrokontrolery Projektowanie

    _jta_ napisał:
    Co do I2C, myślałem o PCF8574. Trochę małe prądy: dozwolony łączny prąd na cały układ 100mA, gwarantowany prąd wyjściowy 10mA. Może bez przesady z tym czasem wsuwania, z AVR-ki można łatwo wysyłać ponad milion bitów na sekundę, a tu trzeba przesłać 32 - raczej trudno zauważyć, że przez parędziesiąt us LED-y będą migać. ;)


    Nie chodzi o to, że LEDy będą migać, tylko, że skróci się czas ich świecenia, w efekcie spadnie ich średnia jasność. Z kolei przy szybości działania I2C to raczej pozostaje sterowanie statyczne.

    Dodano po 3 [minuty]:

    bobeer napisał:
    Cytat:
    Obecnie z układami 595 nie ma najmniejszych problemów, chyba są nawet łatwiej dostępne niż stare 164. Cena groszowa. Natomiast wygaszanie na czas wsuwania do 164 bitów ma istotną wadę, zmniejsza efektywny czas świecenia LED, w efekcie znacznie tracimy na jasności. Przy większej matrycy będzie to koszmarna utrata, a nawet przy małych jest spora.

    O cmosie 4094 nie słyszeli koledzy ?
    Na czas wsuwania dane są pamiętane w zatrzasku i problem z głowy ;)


    Kolega jest kustoszem?:)
    Kilka rzeczy na niekorzyść 4094:
    - niewygodny układ wyjść Q0-Q7,
    - niewielki prąd wyjściowy (2,4mA/segment to raczej mało),
    - koszmarne czasy propagacji - do 1 mikrosekundy,
    - praca w praktyce przy Vcc>=5V. Niby pracuje od 3V, ale Fmax dla 5V to zaledwie 1,5 MHz, ekstrapolując z noty dla 3,3V (popularny standard), możeby to było 700 kHz?

  • #23 09 Lip 2013 14:49
    _jta_
    Specjalista elektronik

    A to jak często trzeba zmieniać cyfry, żeby czas stracony na ich wpisywanie zauważalnie obniżył jasność?
    I2C rzeczywiście jest wolniejszy, zegar do 100kHz i 18 cykli zegara na przesłanie 1 bajtu, 0.72 ms na całość.

  • #24 09 Lip 2013 16:15
    PiotrPitucha
    Poziom 32  

    Witam
    Bez przesady z tym obniżaniem jasności, skoro stosuje się wyświetlanie sekwencyjne dla 8 wyświetlaczy to dla czterech nawet jak wygasimy na czas świecenia segmentu to i tak będzie wystarczająco jasno.
    Jeśli mamy przemiatanie koło 400Hz to czas wygaszania niezależnie od sposobu transmisji zmieści się w pojedyńczych procentach czasu świecenia lub mniej.
    W swoich układach pracujących w warunkach przemysłowych stosowałem HC164 dla 5 cyfr plus znak i musiałem zwiększać rezystory w stosunku do planu bo za bardzo dawało po oczach.
    Co do I2C to też nie ma kłopotu, zarówno PCF jak i układ który proponuję mają latch więc nie istnieje problem migania, w MCP23017 można uzyskać statyczne sterowanie bez mrugania na dwu układach, w każdym mamy dwa pełne 8 bitowe porty, wydajność jak sprawdziłem pozwala na obciążenie średnio 8mA na pin, co dla statycznego świecenia da bardzo jasne cyfry.
    Można też pójść w kierunku specjalizowanych driverów których masę zawsze oferuje Maritex, ale do niedawna było to mniej atrakcyjne cenowo, ponadto zawsze należy mieć kilku dostawców chyba że robimy coś dla "sportu".

  • #25 09 Lip 2013 16:18
    GOTHAM
    Poziom 14  

    Zdecyduje się w tym przypadku na najprostsze rozwiązanie.

  • #26 09 Lip 2013 17:22
    PiotrPitucha
    Poziom 32  

    Witam
    Gdzieś w zasobach mam płytkę z wyprowadzonymi wszystkimi anodami z wyświetlaczy i wlutowaną HC164, wyświetlacze są kluczowane mosfetami, całość na SMD, jak się nie boisz lutować to mogę się wyzbyć :)
    Płytka jest malutka pod 5 wyświetlaczy, z brzegu 3 dipswitche, problem był z włożeniem goldpinów bo otwory były ciasne ale na kabelki idealnie mozna było podpiąć.
    Piotr

  • #27 10 Lip 2013 11:04
    BlueDraco
    Specjalista - Mikrokontrolery

    I tak oto zaproponowaliście 10 różnych rozwiązań wymagających użycia pająka z zewnętrznych układów w sytuacji, gdy potrzeba jedynie wzmacniaczy wspólnych elektrod w postaci 4 tranzystorów, 8 rezystorów segmentów i 12 wyprowadzeń procesora.

  • #28 10 Lip 2013 12:14
    PiotrPitucha
    Poziom 32  

    Witam
    Pytający ma deficyt pinów na procesorze stąd jak mówisz 10 różnych pomysłów.
    Idąc Twoim tokiem rozumowania ma zrobić pająka z 12 oporników, 4 tranzystorów i 4 wyświetlaczy o kablach połączeniowych nie wspominając :)
    Zawsze można zrobić/kupić płytkę i nie bawić się w pająki.
    Piotr

  • #29 10 Lip 2013 12:40
    BlueDraco
    Specjalista - Mikrokontrolery

    Najprostsze rozwiązanie problemu - to wybór właściwego mikrokontrolera.

  • #30 10 Lip 2013 16:14
    dominos96
    Poziom 12  

    Ja wziąłbym jakiś malutki powiedzmy 16-nóżkowy uC, zamontował go bezpośrednio do wyświetlacza a procka komunikowałbym po UART, wtedy mamy wykorzystany 1 pin + mase.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME