logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

wskaznik wysterowania na LED-ach RGB

07 Paź 2008 21:33 3010 9
  • #1 5609789
    Konto nie istnieje
    Konto nie istnieje  
  • #2 5610013
    Rzuuf
    Poziom 43  
    Witam!
    Zastosowanie AVRów dla tego celu to jak siłownik hydrauliczny dla otwierania pudełka z zapałkami.
    Popatrz na aplikacje LM3914 (skala liniowa) lub LM3915 (skala logarytmiczna, czyli decybele). Są "gotowce", a ten temat był już poruszany wielokrotnie na Elektrodzie.
  • #3 5612495
    Konto nie istnieje
    Poziom 1  
  • #4 5636715
    filipania
    Poziom 12  
    Witam. Dołączam się do pytania lecz w nieco innej formie. Chodzi mi o wskaźnik wysterowania wykorzystujący dużo LED-ów np. 50 na kanał. Na LM trzeba by wykorzystać dużo tych układów a AVR byłby tylko jeden. Na pewno trzeba by wykorzystać sterowanie multipleksowe i wewnętrzne przetworniki AC. Nie wiem jak ugryźć ten problem więc proszę o jakieś porady.
  • #5 5642524
    szeryf.rm
    Poziom 22  
    filipania dokładnie tak jak to napisałeś. A tak naprawdę jak chcesz zrobić coś co łatwo da się sterować to przy takiej ilości diod to ja bym jeszcze wrzucił np. układy 74 573 dla ułatwienia sterowania i zmniejszenia ilości multiplekserowanych diod. Dodatkowo plusem byłyby znacznie większe możliwości sterowania wypełnieniem niż przy pełnym multiplekserowaniu bez dodatków.
  • #6 5644669
    filipania
    Poziom 12  
    Może rozwiązanie sprzętowe nie stanowi tak istotnego problemu. Chodzi bardziej o program. Dajmy na to, że chcę sterować LED-ami podpiętymi bezpośrednio do ATmegi8, jedna linijka, używam jednego ADC tak więc pozostają mi 22 porty. Za pomocą polecenia getadc sprawdzam napięcie na przetworniku (liczba od 0 do 1023) a następnie to napięcie uzależnia ilość zapalonych diód. Teraz pytanie. Jak uzależnić ilość zapalonych diod (Reset pin x,y) od tego napięcia (od liczby).
    Przeglądałem posty dotyczące analizatorów widma , ale nic z nich nie wywnioskowałem.
  • #7 5645025
    szeryf.rm
    Poziom 22  
    A po co ci analizator widma tutaj? Wskaźnik wystarowania to nie analizator widma. Możesz policzyć np. napięcie skuteczne w jakimś czasie lub maksymalne w jakimś czasie. A ilość diod uzależniasz liniowo (im wyższe wskazanie tym więcej świeci) lub logarytmicznie. Poszukaj jak liczy się nap. skuteczne, pomyśl na tym, pomyśl ew. nad wyznaczeniem napięcia maksymalnego w czasie np. 1/20s, potem poczytaj o skali liniowej i logarytmiczne i w ten sposób masz wszystko.
  • #8 5666602
    filipania
    Poziom 12  
    W programie analizatora widma musi być procedura która steruje wyświetlaczem lub LED-ami. To chyba jedyne podobieństwo. Co do wyświetlania liniowego czy logarytmicznego to juz nie problem. Chodzi o sam przykład procedury która przetwarza zmierzone napięcie na wysokość słupka LED-ów.
  • #9 5668986
    szeryf.rm
    Poziom 22  
    Napięcie zostaje zamienione na wartość 8 lub 10 bitową. Naj-naj-naj-prostrzy sposób będzie się opierał na naj-naj-naj-prostrzym algorytmie, który ma sens.

    Zakładamy, że częstotliwość zmian słupka to 20Hz. Dlaczego 20Hz? W tej metodzie ma to znaczenie, bo potrzebujemy trochę próbek i warto by częstotliwość zmian była mniejsza lub równa najniższej częstotliwości jaka ma znaczenie w sygnale. Dźwięk dla nas zaczyna się od ok 20Hz. Wynika z tego, że okres zmian wynosi 1/20s=0.05s. Przeliczamy ile próbek dźwięku dostaniemy w tym czasie. Załóżmy, że będzie to 20k. Jeden okres próbki jest równy wówczas 1/20k = 0.00005. Teraz dzielimy obie wartości i dostajemy 0.05 / 0.00005 = 1000.

    Teraz już wiemy ile próbek będziemy analizować przy założeniach że próbkowanie to 20kHz a odświeżanie słupka to 20Hz. Obliczenia przedstawione przez mnie są bardziej zrozumiałe (łopatologiczne), choć jak łatwo zauważyć 20kHz / 20Hz = 1k = 1000.

    Piszesz, więc teraz pętle, która będzie odczytywała 1000 kolejnych próbek i wybierała tę o największej wartości. Można to oczywiście zrobić w jednej pętli. Po pętli już wiesz jaka była najwyższa wartość. Teraz możesz tę wartość zamienić na ilość diod, które powinny się zapalić np.
    załóżmy, że pętla może zwrócić wartość z przedziału. 0-1023 (10 bitów). Pominę tutaj kwestię dolnej i górnej połówki sygnału (to zrobisz sobie sam podczas prób). Zakładamy po drugie, że diod jest 50. Teraz mamy zależość wartości od ilości diod:
    y = wartość * 50 / 1023, gdzie
    wartość - wartość maksymalna z pętli
    y - ilość diod do zapalenia
  • #10 5670325
    filipania
    Poziom 12  
    Dzięki za odpowiedz. Teraz jestem już na właściwych torach:D w tym tygodniu popróbuje. Trochę mam mało czasu ale... O wynikach dam znać.
REKLAMA