poniedziałek, 11 października 2010

To jest prędkość

Udało się zaimplementować super szybki algorytm FFT. Co prawda nie jest to w pełni mój wytwór, bo wykorzystałem w tym celu gotową bibliotekę napisaną w assemblerze z internetu, lecz i tak sporo się narobiłem żeby to wszystko razem ze sobą zgrać. Prędkość algorytmu w stosunku do DFT jest po prostu niesamowita. Wcześniej ciężko było cokolwiek zdziałać dla jedynie 32 próbek sygnału bo tempo rysowania jednego przebiegu trwało ponad 1-2 sekundy. Teraz dla 128 próbek jest aż nadto szybko, spokojnie jest jeszcze moc na inne wyliczenia.
Przepraszam za kiepską jakość filmików ale mój aparat bardzo źle łapie dźwięk i tnie klatki w filmikach.  W rzeczywistości wyświetlany obraz jest bardzo płynny. 
Cały czas jeszcze jest trochę pracy z regulacją całego programu. Przykładowo odcięcie na dolnym paśmie jest trochę za wysokie jak dla mnie bo w granicach jakiś 400-500Hz, za to górna granica pięknie się zamyka na 20K chociaż myślę czy by trochę nie zjechać z góry bo po co mi zakres którego nikt nie słyszy :)

Podsumowując i tak myślę, że osiągnąłem już wielki sukces, bo udało mi się uruchomić cały układ i przeprowadzić na nim płynną analizę sygnału wejściowego co było właśnie założeniem tego projektu.
Na koniec jeszcze jeden filmik z pracą w trybie punktowym.
Oczywiście prace nadal trwają. Mam nadzieję że już wkrótce uda mi się ostatecznie wyregulować cały kod i oddam się błogiej rozkoszy projektowania obudowy :)
Pozdrawiam.

sobota, 9 października 2010

Pierwszy program

A więc jest już pierwszy program zmieniający sygnał z domeny czasy na domenę częstotliwości. To takie fachowe nazwanie algorytmu wyświetlającego analizę widma. Zastosowałem tu algorytm DFT (Dyskretnej Transformaty Fouriera), czyli taki pierwowzór FFT. Jest to metoda dający identyczny rezultat co FFT lecz jest duuuuuużo wolniejsza, ale w zamian za to dużo prostsza. Wolałem zacząć od  podstaw, tak żeby zrozumieć dokładnie zasadę wyliczania takiej transformacji. Jest ona jak widać na  załączonym krótkim filmiku zdecydowanie za wolna, żeby można było ją wykorzystać do analizy widma w locie. Procek działa na swoim maksymalnym taktowaniu 16Mhz i jak widać wyliczanie każdego słupka sygnału zajmuje mu bardzo dużo czasu, a jest to jedynie 16 prążków z próbki o długości N=32.
Za dużo na tym filmiku nie widać, ale właśnie o to chodzi, żeby pokazać że działa ale się nie nadaje :)
Większość  czasu algorytm spędza na liczeniu funkcji trygonometrycznych sinus i cosinus. Gdyby można było zastosować wcześniej wyliczone tablice sinusów i cosinusów to by było szybciej, ale niestety Atmega 16 ma tylko 1KB pamięci SRAM co nie  starcza na zapisanie w pamięci takich tablic. Zresztą i tak ten algorytm był by za wolny do wykorzystania przy większej ilości próbek sygnału wejściowego, a to docelowo chcę zrobić bo zwiększa to dokładność obliczeń.
Spróbuje teraz swoich sił w zmianie tego algorytmu na algorytm FFT czyli szybkiej transformaty fouriera, który jest znacznie szybszy lecz też bardzo skomplikowany.
Mam nadzieję, że wkrótce  uraczę  was lepszymi rezultatami.

czwartek, 7 października 2010

A jednak się udało

W końcu po wielu przeróbkach i testach udało mi się uruchomić myślę ostatni już klocek tej konstrukcji - układ formowania sygnału wejściowego.

Generalnie niby nic specjalnego, ot zwykły wzmacniacz operacyjny pracujący w konfiguracji wzmacniacza odwracającego fazę. Potencjometrem można ustawiać wzmocnienie układu. Układzik ten pełni bardzo ważną funkcję bo po pierwsze na wejściu sygnał widzi dużą impedancję więc nie obciąża źródła sygnału a poza tym ustawia sygnał w zakresie od 0 do 5V tak żeby przetwornik miał łatwo taki sygnał obrobić.
Całość tego bajzlu wygląda tak:
Na razie wyświetlacz pokazuje trochę głupoty ale to już kwestia programu, który będzie dopiero rozwijany.
Tak w ogóle to spędziłem nad tym układem dzisiaj całe mnóstwo czasu starając się dojść czemu po podaniu na wejście równiutkiej sinusoidy na wyjściu dostawałem to:
Kompletnie rozwalona sinusoida. Bardzo duże zniekształcenia. Początkowo myślałem, że może wejście przetwornika tak silnie obciąża wyjście wzm. op. że powoduje takie zniekształcenia, lecz eksperymenty z różnymi rezystorami równolegle do wyjścia nic nie dały. W końcu gdy już nie miałem innego pomysłu rozwiązanie przyszło praktycznie same.Chodziło tu o stan w jakim znajduje się wejście przetwornika gdy układ kontrolera jest bez zasilania. Do tych testów zasilałem jedynie układ formowania sygnału, lecz gdy tylko włączyłem kontroler, który miał ten sygnał odbierać to przebieg widoczny wyżej zmienił się w piękną sinusoidę.
Tak więc część elektroniczna wydaje się być po raz kolejny skończona :). Biorę się za pisanie działającego algorytmu DFT, zobaczymy co z tego wyjdzie.

środa, 6 października 2010

Postęp czy porażka?

No w końcu się zebrałem żeby ruszyć z miejsca. Ostatnio miałem trochę innych spraw na głowie, stąd tak długi czas bez aktualizacji, a do zrobienia był układ wejściowy. Układ ten ma za zadanie formować sygnał wejściowy w ładny przebieg dla przetwornika mikro-kontrolera. No więc wziąłem się do roboty.
Po żmudnym projektowaniu wpierw schematu następnie płytki już miałem się wziąć za płytkę uniwersalną ale coś mnie tknęło i postanowiłem zrobić pierwszą płytkę metodą termotransferu. W necie można znaleźć sporą ilość poradnikó na  ten temat jak wykonać płytkę metodą "chałupniczą". Z racji iż nie posiadam najodpowiedniejszego papieru do tego celu użyłem ten co mam (90g z lekkim połyskiem do laserowych kopiarek). Nie wchodząc w szczegóły wyszło tak średnio. Papier nie do końca chciał przekazywać toner na płytkę, ale efekt finalny i tak był zadowalający.
Ścieżki wyszły troszkę ponadżerane, ale po ocynowaniu powinno być ok.
Lutowanie części to już sama przyjemność, nie miałem tutaj żadnych problemów. Efekt finalny wyszedł tak:
Zasada działania jest taka.
Najpierw na wejściu puszczamy sygnał przez kondensator żeby odciąć składową stałą. Następnie podajemy na wejście odwracające wzmacniacza operacyjnego pracującego w trybie wzmacniacza odwracającego fazę z regulowanym wzmocnieniem (potencjometr na zdjęciu). Aby układ poprawnie działał przy pojedynczym zasilaniu (bo wzmacniacze operacyjne normalnie potrzebują symetrycznego) na wejście nieodwracające podałem napięcie z dzielnika rezystorowego dostrajanego potencjometrem montażowym. Na koniec już przetworzony sygnał znowu daje przez dzielnik rezystorowy obniżam do poziomu od 0 do +5V i tyle.
Niestety po zmontowaniu i podłączeniu pod oscyloskop w celu sprawdzenia działania okazało się że układ nie działa tak jak powinien. Na wyjściu pojawia się jedynie składowa stała. Po wieczorze spędzonym przy szukaniu gdzie popełniłem błąd mam już potencjalnego winnego. Prawdopodobnie mój układ sztucznej masy jest źle zaprojektowany.
Dzisiaj już nie będę tego poprawiał, bo zrobiło się późno.
Jutro postaram się coś z tym zrobić.

niedziela, 3 października 2010

Warsztat - weszaki zamiast szufladek

Chyba każdy elektronik marzy sobie o wielkim zapleczu części elektronicznych pięknie posegregowanych w odpowiednich szufladkach. Niestety szufladki takie są bardzo drogie, a różnorodność części jaką się trzyma w swoim warsztatowym zapleczu bardzo duża. Alternatywą dla szufladek są podpisane torebeczki. Takie spinane u góry szczelnie (jak na narkotyki :) ). Niestety i to rozwiązanie ma pewną swoją wadę. Po prostu tych torebeczek robi się całkiem sporo i znowu szukanie potrzebnej części niepotrzebnie zajmuje dużo czasu.
Ostatnio lubię  kupować na tzw. wolumenie, na giełdzie elektronicznej, gotowe zestawy części, przeważnie rezystorów, kondensatorów i diod w jednej torebce po 2-3 zł. W jednej takiej torebce jest, nie przesadzając, kilkaset części. Co prawda większość to rezystory, ale i tak wychodzi to znacznie taniej niż kupując rezystorki po 30gr za sztukę w normalnym sklepie lub stoisku na giełdzie.  A poza tym ten drobny dreszczyk emocji - co się trafi w takiej paczce :).
Segregując sobie w domu świeżo zakupione paczki zamyśliłem patrząc się w otwór w górnej części tej torebeczki o której wspominałem wcześniej, taki otwór do powieszenia np na jakimś haczyku i wpadłem na pewien pomysł jak usprawnić sobie segregację części w swoim mini warsztaciku nie kupując drogich szufladek i nie przedzierając się przez dziesiątki torebeczek. Oczywiście jak zwykle im taniej tym ciekawiej :). Pojechałem więc do marketu budowlanego i zakupiłem listwę drewnianą prostokątną o długości ponad 2m za całe 2zł i 2 paczki małych wkręcanych haczyków, niestety całkiem drogich bo paczkowanych (nie było na wagę), paczka haczyków 40szt po niecałe 10zł. W domu wszystko dokładnie rozplanowałem i pomierzyłem. Listwę przeciąłem na pół, w ścianie wywierciłem 2 otwory na plastikowe kołki 8-ki. W listwie otwory na wkręty na brzegach i 20 otworów w odstępach co 5 cm na każdej z listew, łącznie 40 otworków. Następnie listwy przykręciłem do ściany, a w miejsce małych otworów pokręcałem haczyki i gotowe.
A do czego to, a  no do tego żeby sobie powiesić właśnie te torebeczki.
Oczywiście listew będzie więcej niż dwie. Na razie dodałem 2 po pierwsze żeby zobaczyć jak to się  będzie prezentowało, a po drugie dlatego że w markecie nie mieli akurat więcej tych tanich listew. Tak więc koszt takiego "segregatora" z 40-ma miejscami na torebeczki to około 15 zł. Trzeba przyznać, że całkiem tanio, a poza tym jaka wygoda przy szukaniu odpowiednich wartości teraz. Trzeba jeszcze wspomnieć jedną zaletę takiego rozwiązania: praktycznie nie zajmuje ona miejsca. Ścianę i tak zwykle mamy pustą, więc czemu by sobie jej nie zapełnić czymś pożytecznym.
Mi się podoba. Naprawdę polecam.

piątek, 1 października 2010

Troszkę się sprawa przedłuża, bo uświadomiłem sobie, że potrzebuje lepszego układu wejściowego dla sygnału audio. Podanie sygnału bezpośrednio na przetwornik jest mało efektywne, bo sygnał taki może mieć różne składowe stałe i różną amplitudę przez co za każdym razem przy zmianie źródła sygnału trzeba by dostrajać układ przetwornika, a to jest mało wykwintna metoda. Na szczęście układ, który by mnie zadowalał jest raczej prosty do zrobienia, tylko czasu troszkę brak, więc na jakieś wyniki będzie trzeba troszkę poczekać.
Na razie póki co zrobiłem sobie na tym wyświetlaczu efekt oscyloskopu do sygnału muzyki, ale to tak tylko do zabawy, jak testowałem przetwornik.
Jutro postaram się zrobić ten układ wejściowy i pokazać jakieś wyniki.

środa, 29 września 2010

Piękna sunisoida

Dzisiaj odpaliłem przetwornik analogowo cyfrowy. Po kilku drobnych regulacjach udało mi się na bieżąco sczytywać stan z przetwornika i wyświetlać go potem na ekranie mojej matrycy. Wpierw był problem z ucinaniem sygnału wejściowego od połowy w dół, ale rozwiązałem to prostym dzielnikiem rezystancyjnym.
Grunt, że wszystko działa i tak naprawdę to teraz wszystko zależy już tylko od dobrego programu. A więc zaczynam prace nad algorytmem DFT. Może po drodze zrobię jakiś prosty VU-metr na tym ale docelowo 16 kanałowe DFT.

wtorek, 28 września 2010

Pierwszy sukces

W końcu udało mi się  znaleźć źródło tych wszystkich problemów ze zbyt słabym świeceniem diod w matrycy.
Chodziło tutaj o źródło zasilania. Cały układ zasilany był z jednej 9V baterii co oczywiście nie zapewniało dostatecznie wysokiego prądu dla porządnego świecenia. Dopiero gdy pomierzyłem wszystkie prądy,  napięcia i poobserwowałem co się tam tak naprawdę dzieje na oscyloskopie dotarło do mnie że trzeba tutaj czegoś mocniejszego. Po podłączeniu układu pod zasilacz uzyskałem to:

Matryca zaczęła "działać". Pomimo iż na zasilaczu widać pobór prądu 0,2A, to za oscyloskopie widać, że chwilowe prądy w układzie pobierane ze źródła dochodzą do 2A, a tego ta biedna bateryjka nie mogła zapewnić.
Chciał  bym jeszcze trochę podjaśnić zielone diody bo świecą one znacznie słabiej od żółtych i czerwonych lecz są one kiepskiej jakości (słabe pod względem parametru jasności) więc raczej cudu tutaj nie uzyskam.
Tak czy inaczej projekt został oficjalnie reaktywowany :)

poniedziałek, 27 września 2010

A może jednak!

Jakoś tak nie daje mi ten projekt spokoju. Cały czas próbuje jednak coś z niego jednak wykrztusić.
Po tych kilku dniach od czasu gdy pisałem że projekt zostaje zarzucony, cały czas robiłem różne badania i pomiary w układzie matrycy. Z pomocą przyszli także użytkownicy forum elektroda.pl, którzy dali kilka ciekawych propozycji. Z tego wszystkiego wyszło, że problem chyba jednak nie do końca tkwi w ilości kolumn jakie musi obsłużyć jeden układ. Po pomiarach okazało się że chwilowy prąd na kolumnę nawet bez ograniczenia prądowego wynosi tylko około 45mA co jest stosunkowo mało jak na pracę impulsową. Cały czas staram się określić źródło takiego ograniczenia i mam już głównego podejrzanego. Jest nim układ ULN2803. Po pierwsze na forum dowiedziałem się, że w tych układach nóżka nr 10 na którą u mnie podaje napięcie dodatnie nie do końca jest tu poprawnie wykorzystywana. Dodatnie napięcie owszem podaje się tam lecz przy obciążeniach o charakterze indukcyjnym, a w przypadku obciążeń rezystancyjnych zostawia się te nóżki nie podłączone. Po odłączeniu tych nóżek diody od razu zaczęły świecić mocniej. Potem zwiększyłem napięcie na tranzystorach z 5V do 9V i znowu jasność w górę. Tak dla porównania zamieszczam fotkę sklejoną z wielu zdjęć różnych stanów pracy.


Jest to wiele zdjęć jednego słupka z całej matrycy. U góry jest najpierw ile kolumn jest zapalonych, niżej ile diod w kolumnie a pod tym napięcie zasilające tranzystory. Pomarańczowa linia oddziela dwa ostatnie pomiary, które były zrobione po odłączeniu nóżek nr 10 z układów ULN2803. Od razu można stwierdzić że diody są jaśniejsze.
Tak w ogóle to chyba zrezygnuje z tych układów bo cały czas mam przeczucie, że tutaj jest problem z moim ograniczeniem prądowym. Zamiast nich użył bym tranzystorów jak w przypadku kolumn.

Projekt  jak widać jednak nie upadł do końca, może jeszcze jednak coś z tego będzie :)

niedziela, 26 września 2010

Problem, problemy, problemy.

Jak to często bywa najwięcej problemów z amatorskimi konstrukcjami wychodzi na samym końcu. Układ potrzebował kilku pseudo kosmetycznych przeróbek, oraz kilku poważniejszych.
Okazało się, że pomyliło mi wszystko przy produkcji okablowania i modułu sterującego na tranzystorach. Został on włączony jako sterownik rzędów co było błędem, bo wtedy bazy tranzystorów sterowane były wejściami OC układów ULN2803. Oczywiście nie miało prawa to działać, tranzystory te powinny sterować kolumnami zaraz za układem demultipleksera. Oprócz tego po włączeniu całej matrycy wyszło kilka wad typowo konstrukcyjnych takich jak odwrotnie wlutowana dioda, czy też brak przejścia przy jakiejś ścieżce. Tutaj wyszła też pewna ciekawostka. Otóż nie działała ani jedna dioda czerwona z ostatniego wiersza na matrycy. Po długim sprawdzaniu w czym tkwi problem, od źródła sygnału po samą diodę okazało się, że czerwone diody mają odwrotną polaryzację niż wszystkie inne. Każda taka dioda LED jak się spojrzy na nią z boku ma w swojej szklanej bańce dwie elektrody. Jedną dużą (masę) i drugą znacznie mniejszą (dodatnią), a w przypadku diod czerwonych, przynajmniej tych które zakupiłem sytuacja jest odwrotna ta mała elektroda jest ujemną, a duża dodatnią. Kompletnie mnie to zaskoczyło i stąd też cały wiersz 16 odwrotnie wlutowanych diod.
Lecz to wszystko to pikuś w porównaniu do problemu który miałem dopiero co napotkać.
Podczas testowania zapalania się poszczególnych diod, na różne kombinacje diody zachowywały się bardzo ładnie. Z poziomu programu udało mi się wyświetlać  proste kształty. Problem zaczął się w przypadku zapalania większej ilości diod na raz, dokładnie jak zacząłem pracować na całej szerokości wyświetlacza. Diody świecą tak słabym światłem, że jest to prawie że niezauważalne. Dopiero wieczorem przy zgaszonym świetle widać różnicę czy się świecą czy nie. I ten właśnie problem praktycznie zabił mój projekt. Długo analizowałem przyczynę i potencjalne rozwiązanie takiego słabego świecenia i udało mi się jedynie dociec do przyczyn, lecz bez rezultatu. Przyczyną jest fakt iż diody z pojedynczej kolumna zapalają się  na 1 ms, a potem czekają zgaszone przez kolejne 15 ms na powtórną możliwość zaświecenia się. Jest swego rodzaju PWM czyli regulacja mocy poprzez sterowanie długością dodatniej części impulsu z generatora. Odpowiedzią na zwiększenie mocy jest tutaj zmniejszenie wartości rezystorów ograniczających prąd, lecz nawet w przypadku podłączenia diod z kompletnym ich pominięciem, diody nadal nie osiągają zadowalającej jasności (ledwo się ćmią). Efekt jest trochę lepszy w przypadku diod żółtych, które przy tym prądzie palą się lekko pomarańczowym odcieniem, one świecą ładnie, pewnie z racji ich lepszej jakości. Lecz nie mam nawet tylu tych diod żeby przelutować teraz resztę 208 diod na żółte, zresztą był by to mało ciekawy efekt. Rozwiązaniem, które widziałem w innych tego typu konstrukcjach jest sterowanie kawałkami wyświetlacza przez oddzielne kontrolery lecz podniosło by to znacznie koszty tej konstrukcji, lub tez użycie znacznie jaśniejszych okrągłych diod zamiast prostokątnych lecz nie taki efekt chciałem uzyskać zaczynając ten projekt.
Tak więc podsumowując tymczasowo konstrukcja "padła" z przyczyn niedostatecznego światła otrzymywanego z tej metody generowania obrazu na tego typu matrycy. Na razie rozwiązanie idzie na półkę, a szkoda.