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.

Tablica informacyjna led z wskazaniem ciśnienia, temperatury i wilgotności

Gitarzysta93 08 Wrz 2017 14:37 693 12
  • #1 08 Wrz 2017 14:37
    Gitarzysta93
    Poziom 6  

    Witam,
    Jak w temacie, potrzebuje skonstruować Informacyjną tablice led, która będzie wyświetlała w sposób dynamiczny wskazania poszczególnych czujników.
    W projekcie chciałbym zastosować 6 modułów diod LED (8x8) co da nam w rezultacie moduł wyświetlacza (8x48) dla jednego wskazania, kolejny (8x48) dla drugiego i jeszcze jeden(8x48) dla trzeciego.I teraz takie pytanie:
    - użyć jednego modułu w którym zawarte są trzy czujniki np."BME 280", czy skorzystać z trzech niezależnych czujników do odpowiednich pomiarów wartości ?
    -Jak to wszystko połączyć i zaprogramować bądź jakich użyć elementów, procesorów, przetworników (A/C,C/A - bo rozumiem, że odczyt z czujników analogowy muszę zamienić na wartość cyfrową) ?

    Ewentualnie jak panowie bądź panie po fachu widzicie schemat blokowy aby taki układzik zmontować ?.

    Dziękuje za odpowiedź.

  • #2 08 Wrz 2017 15:34
    drobok
    Poziom 24  

    1. ten czujnik mierzy tylko 2 wielkości, i jest po i2c - więc nie wymaga adc
    2. większość uC ma wbudowane adc więc nie ma sensu brać zewnętrznego, chyba że pomiar ma być bardzo dokładny
    3. wszystko jedno, byle czujniki były z dala od tranzystorów (bo się bd grzały)
    4. ja bym użył stm32f1 - trochę stary układ, ale ma najlepszy stosunek cena/możliwości
    5. przetwornica, procesor z multiplekserami (ew rejestrami przesuwającymi) do sterowania, na każdy wiersz + na ileś kolumn po 2tranzystory + rezystory do ustalenia punktu pracy, kolumny zapalało by się segmentami
    6. jeśli czujniki są cyfrowe kilka kondensatorów 100n, jeśli analogowe trzeba zadbać o porządne zasilanie / odsprzęganie dla avcc - ogólnie wg mnie nie warto się w to bawić

    Można też się bawić w bufory, podział na 3 wyświetlacze, jakaś osobną logikę. Ale w/w metoda jest najtańsza.

  • #3 10 Wrz 2017 12:02
    _jta_
    Specjalista elektronik

    Rozumiem, że chcesz pokazywać po kolei ciśnienie, temperaturę i wilgotność? Sterowanie LED-ów z multipleksowaniem, czy bez?

    Co do czujników, to może zacznij od zrobienia zestawienia, jakie bierzesz pod uwagę. Czujnik może mieć wyjście analogowe, I2C, 1Wire, RS-232... Jeśli analogowe, to pamiętaj, że ADC w uC może być kiepskawy - chyba poniżej 20zł można kupić całkiem dobry, z 4-ma wejściami (multipleksowane) i interfejsem I2C.

  • #4 10 Wrz 2017 14:39
    Gitarzysta93
    Poziom 6  

    Sprawa tak wygląda, że chce trzy rzeczy wyświetlać jednocześnie na trzech panelach.
    Czy sterowanie z multipleksowaniem czy bez, a jakie byś osobiście polecał aby ten układ troszkę uprościć i aby działał poprawnie ?
    Do pomiarów użyłbym wstępnie czujników (lecz to podejrzwam, że będzie podlegać zmianie)
    -Pomiar temperatury Pt100
    -Wilgotność powietrza SYHITECH RH-SYH2S
    -Czujnik ciśnienia atmosferycznego 8121

    Tak się zastanawiam czy nie lepiej byłoby zastosować czujników cyfrowych, bądź analogowych z wbudowanym przetwornikiem A/C? Ewentualnie jakie były by różnice między zastosowaniem tych dwóch typów czujników ?

  • #5 10 Wrz 2017 19:55
    _jta_
    Specjalista elektronik

    Może lepiej Pt1000, a nie Pt100? Do Pt100 musi być precyzyjny wzmacniacz (zwykły wzmacniacz operacyjny się nie nadaje), albo jakaś zaawansowana konstrukcja, bo to jest opornik 100Ω o współczynniku temperaturowym około 0.3Ω/°C, nie można przez niego puścić dużego prądu, żeby się nie nagrzewał, więc trzeba mierzyć bardzo małe zmiany napięcia - dla Pt1000 zmiany napięcia są ponad 3X większe. Co do tych pozostałych - nie wiem, jaki dają sygnał. Jeśli masz namiary na opisy, to od razu zamieszczaj linki.

  • #6 10 Wrz 2017 20:25
    Marek_Skalski
    Poziom 33  

    @Gitarzysta93
    Jakiej dokładności i jakiej rozdzielczości oczekujesz od czujników?
    8x48 to maksymalnie 8 znaków w linii.

    drobok napisał:
    1. ten czujnik mierzy tylko 2 wielkości, i jest po i2c

    BMP280 mierzy tylko temperaturę i ciśnienie.
    BME280 mierzy 3 wielkości: temperaturę, ciśnienie i wilgotność. I robi to całkiem dobrze. Rozdzielczość pomiarów to 16 i 20 bitów. Dokładność już znacznie gorsza. Ale użycie Pt100 do pomiaru temperatury też wymaga kalibracji i korekt.
    RH-SYH2S to zabawka, a nie czujnik. Pozwala stwierdzić czy jest wilgotno czy jest sucho i tyle. Oczywiście, można dodać trochę elementów i uzyskać zmienne wartości, ale nie ma tu mowy o jakichkolwiek pomiarach. Poza tym, zasada działania i brak zabezpieczenia elektrod daje gwarancję kalibracji "czujnika" co kilka tygodni lub wymiany co kilka miesięcy. Wspomniany BME280 jest dużo lepszy, jeżeli nie będzie narażony na bezpośrednie działanie wody.
    Czujnik ciśnienia 8121, o ile znalazłem ten właściwy to jakaś porażka. Wielkości cegły, a parametry poniżej tanich chińskich zabawek. Sygnał wyjściowy w zakresie 5..30V też nie bardzo się nadaje. Na początek weź BME280. Naprawdę łatwo się z nimi pracuje i dają sensowne wyniki. Tylko nie wystawiaj ich na działanie światła (słonecznego), ponieważ rozjeżdżają im się wskazania.

  • #7 10 Wrz 2017 21:31
    _jta_
    Specjalista elektronik

    8 znaków pozwala wyświetlić np. +27.12°C, 100213Pa, 45.1234% - temperaturę w pełnej rozdzielczości BME280 (ale błąd pomiaru może być do 1°C), na wilgotność to nawet za dużo (ten czujnik ma błąd do 3%, histerezę 1%, dryf 0.5% rocznie; można wyświetlać 45.123Rh), tylko na pełną rozdzielczość ciśnienia z nazwą jednostki nie wystarczy znaków (jakkolwiek przy zmianie temperatury o 1°C pomiar ciśnienia może popłynąć o 1.5Pa, a podawana przez producenta dokładność pomiaru ciśnienia to 1Pa). BME280 ma interfejs I2C - jeden z najłatwiejszych, oraz SPI. Koszt może być nawet poniżej 12zł przy zamówieniu z Chin.

  • #8 11 Wrz 2017 13:18
    Gitarzysta93
    Poziom 6  

    Powiem szczerze, że nie zależy mi na jakiejś wielkiej dokładności pomiaru.Z tego co widzę, to polecacie jednak BME280 i myślę, że mógłbym go zastosować w swoim projekcie.
    Znalazłem w internecie notkę katalogową właśnie czujnika BME280 firmy adafruit - "https://cdn-learn.adafruit.com/downloads/pdf/adafruit-bme280-humidity-barometric-pressure-temperature-sensor-breakout.pdf" i raczej go zastosuje.

    Teraz takie pytanie.Jak całość skleić:
    - Posiadam czujnik BME 280
    -do tego jakiś mikroprocesor, kolega polecał "stm32f1"
    - 3 moduły 8x48 wyświedlacza LED

    jakieś rejestry przesuwne również bedą potrzebne ?

    Ewentualnie jak widzielibyście schemat blokowy takiego układu ?

  • #9 11 Wrz 2017 14:07
    _jta_
    Specjalista elektronik

    Pewnie będą potrzebne - ile pinów ma uC? Te wyświetlacze mają multipleksowanie? Jakie? Potrzebujesz 2 pinów do I2C, i pewnie 152 do 3 wyświetlaczy 8x48 dla multipleksowania 8X (jeszcze można inaczej multipleksować, i użyć np. tylko 72 pinów z multipleksowaniem 24X, ale będą słabiej świecić). Może 19 rejestrów przesuwnych 8-bitowych z zatrzaskiem na wyjściu (jak CD4094, czy 74HC595), jeden CD4022, jeden ULN2004, i wtedy wystarczy użyć 5 pinów do sterowania wyświetlacza. Jest jeszcze kwestia, jakim prądem należy zasilać te wyświetlacze.

    Namiar na notę katalogową czujnika BME280 (układu scalonego - chyba robi go Bosch) podałem wczoraj o 21:31; to samo jest w linku "Datasheet for the BME280 sensor used in this breakout", zamieszczonym w nocie katalogowej zmontowanego układu na stronie 20.

    A uC wybierz taki, jaki umiesz programować - dobrze byłoby, żeby miał obsługę I2C (sprzętową, albo procedurę biblioteczną); nie musi być superszybki, ale wypadałoby ze 100 razy na sekundę załadować dane dla wszystkich LED-ów wyświetlaczy - a jest ich 3x8x48=1152 - czyli po 8us na bit informacji; pewnie nawet jakiś ATtiny dałby radę, ale potrzebujesz 7 pinów I/O, więc taki najmniejszy będzie za mały.

  • #10 14 Wrz 2017 13:21
    Gitarzysta93
    Poziom 6  

    Multipleksowanie dopiero wykonam.Powiedz mi o co chodzi z wejściem "I2C " - jak ono może poprawić prace układu/badz wpłynąć na układ ?
    Dokładnie 152 będzie pinów od wyświetlaczy .Myślę aby zastosować rejestr przesuwny "74HC595" tylko nie wiem jak później połączyć CD4022 oraz ULN2004 - nie orientujesz się jak mógłby wyglądać schemat blokowy takiego układu ? bo powiem szczerze, że taki rysunek pomógłby mi ten układ bardziej z wizualizować.
    Co do uC to myślę na ATmegą 8.

  • Pomocny post
    #11 14 Wrz 2017 15:11
    _jta_
    Specjalista elektronik

    I2C to jest protokół komunikacji między uC, a sprzętem (np. tym czujnikiem). Może być zrobiony programowo "ręcznie" (wystarczy na 2 pinach ustawiać '0' i '1', oraz odczytywać jeden z nich w odpowiedniej sekwencji), ale to dodatkowa robota - lepiej mieć to w postaci gotowej biblioteki, a jeszcze lepiej załatwione przez sam uC sprzętowo.

    Multipleksowanie może wyglądać np. tak, że masz 18 74HC595 (połączone szeregowo), z nich 144 wyjścia, które podłączasz do 144 pinów od wyświetlaczy; jest jeszcze 8, przy czym prąd od wybranych z tych 144 (może czasem wszystkich) musi płynąć do 1 z tych 8 - więc te 8 musi przyjmować spory prąd; wyjście ULN2004 może przyjąć do 0.5A, co pozwoli na prąd prawie 3.5mA na LED-a, wystarczy? Jeśli nie, to trzeba użyć tranzystorów, może MOSFET-ów LogicLevels, które będą w stanie przewodzić większy prąd, i wtedy to bramki tych MOSFET-ów trzeba będzie podłączyć do CD4022.

    CD4022 to układ, który ma 8 wyjść, i dokładnie na 1 jest '1', a na pozostałych 7 '0'. Podanie mu impulsu przesuwa tę '1'. Wygodnie będzie go użyć do włączania dokładnie jednego tranzystora (może to będzie MOSFET, może tranzystor w ULN2004). Do jego sterowania będą potrzebne 2 piny uC - jeden do podawania impulsów przełączających tranzystory, drugi do resetowania - żeby uC mógł wyświetlić prawidłowo, a nie np. z przesunięciem o 3 linie LED-ów.

    Sterowanie tego wyglądałoby tak: (1) wysyłasz do tych 18 74HC595 144 bity informacji - '1' tam, gdzie LED ma zaświecić, '0' tam, gdzie ma być ciemny, i podajesz sygnał przepisujący tę informację do wyjść 74HC595, oraz sygnał resetujący CD4022 - w rezultacie pierwszy rządek LED-ów wyświetla to, co trzeba, pozostałe są ciemne; (2) następnie wysyłasz kolejne 144 bity, każesz je przepisać do wyjść, a do CD4022 posyłasz impuls, który przesuwa jego '1' na następną pozycję - w rezultacie LED-ów drugi rządek wyświetla to, pozostałe (pierwszy też) są ciemne; następnie powtarzasz (2) dla jeszcze 6 rządków, i potem znowu (1).

    Ważne jest, żeby przepisywanie danych do wyjść 74HC595 i zmiana stanu CD4022 były prawie jednoczesne - przez czas pomiędzy jednym, a drugim będą świecić niewłaściwe LED-y i musi to być tak krótko, żeby to świecenie nie było zauważalne (idealnie byłoby robić to tą samą instrukcją uC). A cały cykl trzeba powtarzać ze 100 razy na sekundę, żeby nie było widać migotania LED-ów.

    Pytanie, czy prąd wyjściowy 74HC595 wystarczy do uzyskania potrzebnej jasności LED-ów - można użyć np. tranzystorów, żeby go wzmocnić, ale to będą 144 tranzystory i będzie spora robota z ich montażem.

  • #12 22 Wrz 2017 22:00
    Gitarzysta93
    Poziom 6  

    Dzięki wielkie za bardzo dobre wytłumaczenie jak działa port I2C, oraz jaka jest idea działania takiego układu. Prawdę mówiąc temat można uznać za zamknięty bo skończyłem ten projekt w prawdzie był to projekt teoretyczny aby zaliczyć jeden z niezbędnych przedmiotów na kierunku Elektrotechnika.
    Poniżej w załączniku zamieszczam schemat ideowy układu, wraz z zasilaniem.
    W prawdzie wyświetlacze są o wymiarach 8x8 diod LED, ale aby je rozbudować wystarczy tylko odpowiednio dodać następujące elementy takie jak:Rejestr przesuwny oraz bufor ULN2803.

  • #13 23 Wrz 2017 00:40
    _jta_
    Specjalista elektronik

    Jak działa I2C, to bardzo niewiele opowiedziałem - tylko to, ile sygnałów do tego potrzeba i że jeden jest jednokierunkowy, drugi dwukierunkowy. A to jest protokół, który pozwala na dwukierunkową komunikację z ponad setką (nowsza wersja z tysiącem) urządzeń połączonych tymi dwoma sygnałami... Więcej znajdziesz np. w Wikipedii pod hasłem I2C.

    Hm... czy U4 ma wybierać dowolny zestaw spośród 8 LED-ów, a U6, U7, U8... wybierają, która to jest 8-ka? To przy dużej ilości LED-ów da małą jasność świecenia (bo świecą przez małą część czasu - najwyżej 8 / ilość LED-ów). Większą jasność uzyska się, jeśli LED-y są podzielone na 8 linii, i wybiera się, z której linii mogą świecić, i które z linii (do tego można użyć np. 74HC595, tylu ile jest matryc LED 8x8 - to daje każdemu LED-owi możliwość świecenia przez 1/8 czasu).

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