Pytanie:
Wielokanałowe sterowniki LED do wykresów słupkowych
W5VO
2011-01-13 00:57:15 UTC
view on stackexchange narkive permalink

Chcę zbudować obwód pokazujący składowe częstotliwości sygnału audio w czasie rzeczywistym na szeregu wykresów słupkowych. Obecnie planuję zbudować 12 pasmowoprzepustowych filtrów do wzmacniacza operacyjnego, a następnie użyć prostownika i obwodu RC do stworzenia obwiedni DC dla każdego wyjścia, a następnie użyć tego sygnału do sterowania wykresem słupkowym LED lub czymś podobnym.

Obwód będzie korzystał z pojedynczego źródła zasilania + 3,3 V, a użycie 12 filtrów pasmowoprzepustowych nie podlega negocjacjom. Jeśli chcę mieć 12-kanałowy wykres słupkowy, czy utknąłem na parach 12 diod LED wykresu słupkowego i sterownika diod LED wykresu słupkowego? To daje 45 dolarów! Czy istnieje lepsza / tańsza / prostsza metoda uzyskania podobnego wyniku? W idealnym przypadku nie potrzebowałbym mikrokontrolera.

Siedem odpowiedzi:
davr
2011-01-13 03:27:15 UTC
view on stackexchange narkive permalink

Czasami taniej jest użyć układu scalonego ogólnego przeznaczenia i zaprogramować go do robienia tego, co chcesz, a następnie spróbować znaleźć kilka układów scalonych specjalnego przeznaczenia, które nie są programowalne i robią dokładnie to, co chcesz.

Ten facet wykonał 64-pasmowy analizator widma na słabym mikrokontrolerze, więc zrobienie 12 kanałów powinno być torturą. (załączył również sterownik LCD ... w twoim przypadku miałbyś zamiast tego oprogramowanie sterujące matrycą diod LED). Obwód jest również dość prosty.

Mikrokontroler jest tani. Do sterowania diodami LED będziesz mieć ich 120 (10 x 12). Po prostu podłączasz je do matrycy i możesz sterować nią 4 rejestrami przesuwnymi , które również są tanie. (Wymagałoby to 6 pinów I / O plus lub minus, w zależności od sposobu podłączenia).

http://elm-chan.org/works/akilcd/report_e.html

LCD output PCB layout

Fajnie, TQFP na płycie perf o grubości 0,100 ". Większość ludzi po prostu zadawałaby sobie pytania na ten temat.
@Nick Tak, ten facet jest trochę szalony: http://elm-chan.org/docs/wire/wiring_e.html. Oto inny facet: http://www.flickr.com/photos/oohshiny/3309808873/
Kevin Vermeer
2011-01-13 07:11:11 UTC
view on stackexchange narkive permalink

Kilka miesięcy temu zrobiłem siedmiokanałową wersję tego projektu. Zaprojektowałem 7 oddzielnych filtrów pasmowoprzepustowych opamp (używając topologii filtra Bessela, aby zminimalizować zniekształcenia). Poszedłem z LM3914 i gotowym wykresem słupkowym LED, ponieważ koszt nie był problemem; czas rozwoju był, ale możesz obrać odwrotną drogę.

Przepuściłem przefiltrowane sygnały przez następujący detektor pików:

alt text

To jest dużo tańsze niż obwody opamp, które znajdziesz gdzie indziej. Vce tranzystora i Vf diody powinny się skasować. Kondensator 1uF i rezystor 470k dały dobrą szybkość zaniku do oglądania sygnałów audio, które śledziłem.

Jeśli chodzi o koszt, LM3914, na który patrzyłeś, to po prostu kaskada komparatorów z jednym wejściem podłączony przez sieć rezystorów do stałego napięcia, a drugi do wejścia detektora wartości szczytowej. Jeśli nie potrzebujesz kontroli prądu LED, którą zapewnia ten chip, prawdopodobnie możesz to zrobić taniej za pomocą klasycznego czterokołowego komparatora, takiego jak LM339 lub LM2901 (nie potrzebujesz nic wymyślnego), który da ci około 0,30 $ w ilościach 25 (potrzebujesz 24 dla dwunastu 8-kanałowych wykresów). Zakładając, że rezystory są w zasadzie wolne, potrzebujesz diody, tranzystora, czapek odsprzęgających (również zasadniczo wolnych), kondensatora szczytowego 1uF i wykresu LED. Po prostu użyj kilku dużych 1206 diod LED do wykresu i ułóż je na swojej płytce drukowanej zamiast płacić za gotowy wykres słupkowy. Jeśli masz 8 elementów na swoim wykresie i potrzebujesz 12 * 8 ~ = 100 diod LED, możesz to zrobić za 0,042 centa za sztukę za pomocą tych zielonych wskaźników LED, lub około 0,34 USD za kanał. Powiedziałbym, że część wykresu słupkowego za mniej niż 1 USD na kanał może ujść na sucho, jeśli rozejrzysz się.

@bemace - Dzięki za naprawienie tego! Kiedyś mieliśmy \ $ LaTeX \ $ ograniczniki `$ ... $`, więc musieliśmy użyć tego dziwacznego formatowania. [Zostało to naprawione] (http://meta.electronics.stackexchange.com/questions/440/tex-delimiters-should-be-changed/613#613), (są teraz `\ $ ... \ $ `), ale nadal musimy [posprzątać] (http://meta.electronics.stackexchange.com/q/615/857) ... chcesz pomóc?
Najczęściej znajduję pytania / odpowiedzi, które nadal wymagają poprawienia w starszych Q / A, które nie mają już wielu wyświetleń, ale naprawiam je, gdy je zauważam. Dziękujemy wszystkim, którzy wzięli udział w TeX Edit Party. Świetna współpraca!
AilidvvtqkCMT - Well, I'd have said that party was something of a drag...
Yeah, and come to think of it, the music was lousy too. And the drinks expensive... :-)
Jestem (dość) spóźniony na poncz, ale chciałem powiedzieć, że to jest _fantastyczny_ detektor pików! Ma porównywalną szybkość i dokładność do wzmacniacza operacyjnego, bez dodatkowej powierzchni i kosztów.
tyblu
2011-01-13 12:03:49 UTC
view on stackexchange narkive permalink

Alternatywą dla dedykowanych sterowników i tablic LED jest tworzenie własnych, zapożyczając ideę stojącą za drabinkami R2R i kontrolerami flash ADC . Sygnał wyjściowy ze wspomnianego detektora krawędziowego jest podawany przez coś podobnego do drabinki R2R (niekoniecznie z rezystorami o równej wartości), która dostarcza wielu węzłom napięcia z wejścia do masy. FET można tak dobrać, aby jego napięcie kolanowe lub napięcie włączenia było możliwe do zarządzania, na przykład 0,5 V do 1 V, jego źródło uziemione i bramka podłączona do różnych węzłów R2R . Kiedy węzeł przekracza napięcie kolana , FET włącza się i steruje diodą LED.

Amplituda dźwięku jest tradycyjnie (i biologicznie!) Logarytmiczna, więc napięcie, przy którym każdy powinien się obracać on jest liniowy w skali logarytmicznej. Dla wejścia maks. 3,3 V, aby oświetlić logarytmicznie 10 diod LED na kanał przy założeniu napięcia kolanowego 0,5 V, bezwzględne napięcia węzłów będą wynosić: (MATLAB)

  EDU>> logspace (log10 (0,5), log10 (3,3), 10) ans = 0,5 0,6166 0,7605 0,9379 1,1567 1,4265 1,7593 2,1697 2,6758 3,3  

Jeśli dąży się do maksymalnego prądu ~ 1mA całkowita rezystancja R2R powinna wynosić blisko 3,3 kΩ. To ujawnia wartości rezystora: (użyj iteracyjnie dzielnika napięcia)

  R1 = 624,2 (620) R2 = 506,1 (510) R3 = 410,4 (430) R4 = 332,8 (300) R5 = 269,8 ( 270) R6 = 218,8 (240) R7 = 177,4 (160) R8 = 143,9 (150) R9 = 116,6 (120) R10 = 500 (500)  

Uwaga: standard 5 % wartości rezystorów w nawiasach nie jest po prostu najbliższym dopasowaniem, ale są obliczane iteracyjnie. Aby powtórzyć obliczenia z innymi standardowymi wartościami lub specyfikacjami, wzór wygląda następująco: R i = R TOTAL x (1 - V i / 3,3V) - {suma od 1 do i z R i }, wyprowadzona ze wzoru na dzielnik napięcia.

Finałowy obwód będzie wyglądał mniej więcej tak:
alt text

Inną metodą osiągnięcia tego efektu jest zastosowanie kropli diodowych . 3,3 V może obsługiwać około 8 kropli Schottky'ego (~ 0,4 V), jeśli napięcie progowe tranzystora jest mniejsze lub równe 0,4 V (w przeciwnym razie 7 spadków). W łańcuchu 8 diod Schottky'ego obniż napięcie w każdym węźle pośrednim za pomocą rezystora, który będzie również działał jako ogranicznik prądu (pozwól, aby coś bliskiego prądowi testowemu z arkusza danych przepłynęło, gdy dioda jest spolaryzowana do przodu). Każdy węzeł jest następnie podłączony do tranzystorów w taki sam sposób, jak powyżej. Prąd płynący przez diody zmieni się ponad 8X, w zależności od tego, ile diod jest spolaryzowanych w przód, więc upewnij się, że każdy będzie działał we wszystkich przypadkach. Ta metoda jest liniowa w.r.t. napięcie lub amplituda, co nie jest do końca autentyczne. Ponadto Schottky'ego są droższe niż rezystory 5% ...

Ostatnia wskazówka - której nie badałem - to użycie spadku BE w tranzystorach BJT zamiast diod Schottky'ego, oszczędzając kilka części na diodę LED, ale także mając do czynienia z większym spadkiem diody i bipolarnymi.

tyblu
2011-01-13 02:33:35 UTC
view on stackexchange narkive permalink

Analogowe analizatory widma miksują sygnał wejściowy w zakresie częstotliwości i wyświetlają wartość skuteczną lub poziom mocy wąskiego pasma przenoszenia o niskiej częstotliwości - możesz zrobić to samo. Zamiast używać filtrów wzmacniacza operacyjnego na swoim wejściu, możesz użyć wejściowego filtra antyaliasingowego (10kHz-20kHz LPF), a następnie miksera z wejściem LO z VCO sterowanego rampą ( przesunięta część przemiatany analizator widma ), a potem świetny filtr pasmowy. Następuje wspomniany detektor pików. To podejście jest nieco bardziej skomplikowane niż zestaw filtrów, po których następują wzmacniacze, ale o wiele bardziej zabawne. Spowoduje to wiele wyrywania włosów i szarpania mózgów.

Prawdopodobnie wiesz więcej o mikserach niż ja, więc zostawię to w spokoju. Zwróć uwagę, że „mikser audio” to nie to samo.

Wikipedia ma przykład audio VCO i prowadzi do kilku popularnych projektów. Dedykowane VCO i dostępne są układy scalone konwertera napięcia na częstotliwość, ale są one głównie przeznaczone dla zakresu 100 MHz; ten może się przydać, ale generuje fale prostokątne. (Inną kwestią może być określenie idealnego VCO dla tej aplikacji).

Prosty detektor szczytów diod można ulepszyć za pomocą dwóch wzmacniaczy operacyjnych, jak opisano w AoE na str. 217. Szczególnie przydatne w przypadku sygnałów wejściowych o małej amplitudzie (błąd ~ 0.6 / Vp). alt text

Niestety mój projekt musi zawierać 12 filtrów.
@W5VO - Ach, przeczytałbym „niezbywalne”, aby oznaczać, że nie chcesz wdrażać filtrów z powodu ograniczeń projektowych / kosztowych / przestrzennych. Czy możesz wprowadzić dane wejściowe do części wykresu słupkowego przed filtrowaniem?
Thomas O
2011-01-14 00:07:50 UTC
view on stackexchange narkive permalink

Jedną z opcji jest użycie małego mikrokontrolera do wykonania FFT. PIC 18F jest w stanie to zrobić, jak pokazuje ten przykład (kod jest open source) - 10 fps nie jest trudne, a pozorną szybkość aktualizacji można poprawić, uśredniając kolejne FFT lub dodając w przypadkowym szumie. Następnie możesz użyć charlieplexing lub innej formy multipleksowania do sterowania wyświetlaczem.

Jeśli FFT wydaje się zbyt trudne lub wymaga od Ciebie zbyt dużej mocy obliczeniowej, możesz spróbować to zrobić, łącząc koncepcje analogowe i cyfrowe.

Możesz stworzyć konfigurowalny filtr pasmowoprzepustowy używając kondensatorów podłączonych do IO mikrokontrolera. Podłącz 1k lub więcej szeregowo do wejścia ADC. Ustaw wysoką impedancję we / wy, aby skutecznie odłączyć kondensator, i obniż napięcie wyjściowe, aby je podłączyć. Używając prawie binarnych wartości kondensatora, takich jak 10n, 22n, 39n i 82n, można utworzyć filtr 16-drożny. To dotyczy części górnoprzepustowej; aby wykonać część dolnoprzepustową, umieść czapkę 100n (lub coś podobnego) szeregowo w środkowym węźle górnoprzepustowego RC i użyj rezystorów na we / wy (ponownie, używając wartości binarnych 1k, 2,2k, 3,9k i 8,2 k), robiąc to samo z czapkami: obniż je, aby ich użyć, i poprowadź je do wysokiego Z, aby je rozłączyć.

Następnie możesz albo użyć obwodu detektora pików do pomiaru pików, albo po prostu wykonać serię pomiarów z ADC i uśrednić je. Jeśli potrzebujesz tylko 8-drożnego filtra, to 6 IO plus wejście ADC, więc łącznie 7 IO, a wyświetlacz 8x8 zajmie tylko 9 IO do sterowania za pomocą charlieplexing.

Jeśli ktoś chce mieć dwanaście pasm częstotliwości i nie są one równomiernie rozmieszczone, czy lepiej byłoby wykonać FFT, czy po prostu obliczyć dwanaście par całek odniesienia-fali-czasu-pierwotnego? Seria PIC 18 nie jest do tego specjalnie przygotowana, ale procesor DSP lub ARM powinien sobie z tym radzić.
supercat
2011-05-09 01:01:21 UTC
view on stackexchange narkive permalink

ARM może być w stanie dobrze oszacować energię w każdej składowej częstotliwości, przynajmniej jeśli używa się małego języka asemblera i używa ładnego wariantu ARM (np. Cortex-M3 lub ARM7-TDMI, zamiast a Cortex-M0).

Zakładając, że oryginalne dane i fala odniesienia mają 16 bitów, a jedna ma oddzielne kopie przebiegu odniesienia dla każdej interesującej nas częstotliwości (prawdopodobnie niezbyt trudne, jeśli jest ich tylko dwanaście ) pętla wewnętrzna może wyglądać następująco:

; R0 - wskaźnik źródła danych; R1 - wskaźnik fali odniesienia; R2 - koniec źródła danych plus jeden; R3 - koniec fali odniesienia; R4 - długość fali odniesienia; R5 - delta cosinusoidalnego fali odniesienia; R8 - Sine total L; R9 - Sine całkowity H; R10 - Cosinus ogółem L; R11 - Cosinus całkowity Hlp: ldrsh r6, [r0], # 2; Zapomniałem składni ldrsh r7, [r2, r5] po inkrementacji; Pobierz odniesienie cosinusowe smlal r10, r11, r6, r7 ldrsh r7, [r2], # 2 smlal r8, r9, r6, r7; W razie potrzeby powtórz powyższe kilka razy, jeśli długość fali zawsze będzie; wielokrotność liczby powtórzeń. Zauważ, że fala odniesienia; może wymagać nieco przedłużenia, aby to uwzględnić (musi zostać przedłużone; być ćwierć długości fali, aby pomieścić człon cosinusowy). cmp r1, r3; Carry set, jeśli r1 otrzymało tyle samo co r3 subcs r1, r4; Jeśli minął koniec fali, zawiń cmp r0, r2; Sprawdź, czy na końcu fali bcc lp 

Myślę, że pętla wewnętrzna zajęłaby około 20 cykli, aby przetworzyć składniki sinus i cosinus dla tego samego o jednej częstotliwości. Zatem dla dwunastu częstotliwości musiałbyś spędzić 240 cykli przetwarzania na pierwszej linii. Nawet ARM 16 MHz nie powinien mieć z tym problemu.

akohlsmith
2011-01-13 07:08:43 UTC
view on stackexchange narkive permalink

Nie jestem pewien, czy rozumiem, na czym polega problem; całkiem dobrze zablokowałeś swoje wymagania. Nie można uniknąć 12 filtrów pasmowoprzepustowych i chcesz użyć 12 diod LED na filtr pasmowy; można wyeliminować LM3914 i użyć pojedynczego mikrokontrolera z 12 wejściami ADC lub dołączyć zewnętrzny MUX. Możesz wyeliminować filtr RC i obwód obwiedni i zrobić to w oprogramowaniu, jeśli próbkujesz wystarczająco szybko, a jeśli chcesz złagodzić wymóg filtra 12 pasmowoprzepustowego, możesz nawet obliczyć FFT w oprogramowaniu.

Zasadniczo, co Mówię, że biorąc pod uwagę twoje wymagania, nie jestem do końca pewien, dlaczego 45 USD w częściach na sterownik wykresu słupkowego i diody wyjściowe jest takim problemem. Nie zostawiłeś sobie zbyt wiele elastyczności.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 2.0, w ramach której jest rozpowszechniana.
Loading...