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.

środa, 22 września 2010

Układ gotowy

No w końcu.
Cały układ elektroniczny mojego analizatora jest już gotowy. Musiałem się na koniec nieźle namęczyć przy kablach, bo nie chciałem żeby przy podłączaniu wszystkiego razem mi się jakieś zwarchole  robiły, więc każdy przewód jest przy lutowaniu otoczony koszulką.
Muszę powiedzieć, że wyszło całkiem nieźle.Spodziewałem się czegoś brzydszego :)
A więc te oto gotowe kabelki musiałem jeszcze przylutować do matrycy. Ale tu zaczęły się "alpejskie" kombinacje. Pisałem jakiś czas temu, że układ dekodera CD4514 ma straszny nieporządek jeśli chodzi o kolejność wyprowadzeń, więc aby to teraz ładnie posortować musiałem pozmieniać kolejność kabli w stosunku do kolejności kolumn.Widać to dobrze na następnym zdjęciu.
Na koniec łączymy wszystko razem i "voila".
I jeszcze z drugiej strony.

No dobra, więc układ skończony. Teraz potrzebny jest program, który będzie się wykonywał w kontrolerze i tym samym sterował wyświetlaczem. Lecz zanim zabiorę się za pisanie programu, potrzebny mi jest nowy programator, więc muszę na to jeden dzień z harmonogramu urwać. Co prawda mam kabel, którym teoretycznie mógł bym układ spiąć z kompem, lecz jest to jedynie kawałek kabla podłączony do odpowiednich nóżek portu drukarkowego (dosłownie, nie ma ani jednego elementu). Na potrzeby prostych testów niby działał, ale często coś zakłócało wgrywanie programu i powstawały błędy podczas transmisji.
Chciałem przy tym projekcie wykorzystać potrzebę  zbudowania czegoś ciut lepszego, a mianowicie programator oparty na koncepcji programatora STK200. Zaledwie kilka dodatkowych elementów, a daje już bardzo dobre rezultaty.
Dobra, to tyle co do dalszych planów. Biorę się za robotę, ale najpierw morze się zdrzemnę chwilkę :)

wtorek, 21 września 2010

Po troszeczku

Dzisiaj udało mi się zlutować moduł sterujący czyli tranzystory sterujące spływem prądu w rzędach matrycy.
A ponieważ jedno zdjęcie jest warte 1000 słów, to po co się będę produkował :)
Zlutowany moduł sterujący
I ta brzydsza strona
W matrycy przelutowałem rezystory ograniczające prąd z wersji leżącej na stojące tak aby można było dosłownie spiąć te dwa moduły razem.
Po zlutowaniu obu części razem:
I ogólny efekt:

Zostało już  tylko porobić taśmy z końcówkami do wczepienia w moduł kontrolera. Niestety wtyki takie sprzedają z tego co udało mi się znaleźć tylko w wersji coś około 40 połączeń w jednym sztyfcie, a cięcie tego nie należy do najprostszych bo nikt inteligentny tego nie przewidział przy produkcji, więc się trzeba narobić. W przeciwieństwie za to piny widoczne w module kontrolera kilka postów wcześniej, które są sprzedawane jako komplet z tymi wtykami, tnie się idealnie bo są już przygotowane do dowolnego rozdzielania. Producent ma fantastyczne poczucie humoru :).

Pierwsze moduły - matryca i sterownik

W końcu udało mi się zlutować 2 główne części (moduły) projektu.
Pierwszą jest matryca 16x16 prostokątnych led.
Zdjęcie wyszło trochę bańkowato bo zbyt blisko trzymałem aparat. W rzeczywistości jest całkiem równo. Ogólnie musze powiedzieć, że jestem zadowolony z rezultatu. Lutowanie wszystkich tych świecidełek to istna mordęga jeśli oczywiście się chce żeby wszystko było w jednej linii. Z tyłu już nie wygląda to tak pięknie, ale to wina tego iż trzeba łączyć ścieżki w pionie i poziomie zarazem ale żeby się nie stykały. Kolumny są połączone trochę w powietrzu, nad warstwą ścieżek.

Drugim wykonanym modułem jest sterownik całego tego ustrojstwa. Także na płytce uniwersalnej.
Wyszło całkiem schludnie, nie było tutaj jakiś większych problemów. Jedynym mankamentem którego nie przewidziałem wcześniej jest zbyt mała przestrzeń dla 4 pinów programowania widocznych na zdjęciu po prawej stronie kontrolera Atmega. Kontroler jest osadzony na podstawce i w chwili rozmieszczania i lutowania, gdy na płytce była tylko podstawka bez kontrolera, miejsca było tam całkiem sporo, lecz po włożeniu układu okazało się, że jest on szerszy niż podstawka i ledwo się wcisnął przez te piny. Ale wyjściem na to jest zastosowanie tutaj pinów kątowych skierowanych w prawo od układu, więc wielkiego problemu nie ma.
Dość myślę wymyślnym rozwiązaniem popisałem się po drugiej stronie tej płytki. Chodzi mi dokładnie o ścieżki "drukowane". Normalnie są one wytrawiane na płytce, a dokładnie przerwy między nimi. W płytce uniwersalnej takiej jak ta nie ma żadnych ścieżek, więc trzeba je jakoś stworzyć. Zrobiłem je z poobcinanych końcówek elementów elektronicznych, głównie diod z matrycy, bo było tego multum.
I znowu uważam, że zważywszy na metodę nie było najgorzej. Nigdy wcześniej nie korzystałem z płytek uniwersalnych, zwykle wytrawiałem płytki po uprzednim odpowiednim ich pomalowaniu, lecz tym razem chciałem po prostu spróbować tej metody, bo z tego co zauważyłem to jest ona chyba coraz bardziej popularna, bo coraz częściej widuje takie konstrukcje przeglądając bezkresne zasoby internetu.

Tyle co już jest. A czego nie ma? Brakuje jeszcze modułu wykonawczego czyli tej malutkiej płytki z 16 tranzystorami załączającymi poszczególne kolumny matrycy i przewody połączeniowe, a dokładniej taśmy z odpowiednimi końcówkami, przy których tez będzie sporo pracy z racji po pierwsze ich ilości a po drugie także i nieznacznego skomplikowania. Przypominam z poprzednich postów że dekoder nie ma poukładanych po kolei wyjść, bo będzie to zrobione poprzez odpowiednie przemieszanie połączeń w taśmie.
Pozdrawiam

niedziela, 19 września 2010

Projekt płytek

Czas przejść od ogólnego planowania do projektowania.
Do wykonania są 2 części.
Pierwsza to duża płytka z wlutowanymi diodami tworzące matrycę 16 diod wysokości i 16 kolumn szerokości.
Do tego celu postanowiłem wykorzystać płytkę uniwersalną UM-61 firmy cyfronika.
Zaleta wykorzystania takiej uniwersalnej płytki jest taka, iż ma ona już wszystkie potrzebne nam nawiercone otwory równiutko w rządkach i kolumnach. Filozofii więc wielkiej nie ma, trzeba się tylko narobić. Bo jest do wlutowania 16x16=256 diod i to możliwie jak najstaranniej (najrówniej), bo tutaj będzie cały efekt naszej pracy widoczny. Diody muszą łączyć się ze sobą w kolumny jak i w rzędy ale połączenia nie mogą się krzyżować, musiałem więc kolumny połączyć trochę tak w powietrzu zostawiając troszkę dłuższą końcówkę nóżki a potem łącząc wszystkie nóżki w danej kolumnie prostym odcinkiem druta. Tak na marginesie to diody udało mi się kupić w hurcie po 7 groszy sztuka więc nie wyszło z kosztami tak źle.
Z drugą płytką już trochę gorzej. Trzeba tam upchać sporo elementów, a niestety do wykorzystania została mi jedynie płytka UM-61 także cyfroniki. Jest ona analogiczna budową do poprzedniej lecz ma zaledwie 30% jej powierzchni. Nie chciałem tak od razu rzucać się do sklepu i kupować dużej drogiej płytki więc postawiłem sobie wyzwanie zmieścić się na tej płytce. Ma ona dokładnie 22x31 otworów montażowych. Przypominam że sam kontroler ma wielkość po 20 nóżek z każdej strony. Mordęgą okazała się próba jakiegoś sensownego umieszczenia układu CD4514 bo ma on totalny chaos jeśli chodzi o rozmieszczenie wyprowadzeń. Część wejść po jednej część po drugiej stronie, a wyjścia pomieszane i nie po kolei. Z tego względu musiałem zarzucić pomysł aby kompletnie wszystko umieścić na tej płytce i postanowiłem przenieść 16 tranzystorów sterowanych dekoderem CD4514 na oddzielną małą płytkę. Tutaj ciekawa historia, bo nie mogłem się sam wybrać po jakąś płytkę uniwersalną do sklepu więc poprosiłem aby żona mi kupiła bo była w okolicy wolumenu akurat tego dnia. Miała być nieduża płytka bez połączeń jedynie cała nadziurkowana i kupiła mi płytkę PDU-23 firmy Wojart. Tutaj jej wzór:
Było by ok, gdyby nie te 2 pola, które niemiłosiernie przeszkadzają w umiejscowieniu elementów. Zapewne mają one jakiś większy cel, ale mnie tylko przeszkadzają. No nic, pomierzyłem i wyszło mi że mój moduł stetrujący zmieści się na niewielkim jej wycinku.
A więc stworzyłem wzory potrzebnych płytek z połączeniami korzystając z darmowego ExpressPCB. Płytka kontrolera wygląda tak:
Cud techniki to to może nie jest ale zważając że jest to na płytce uniwersalnej to myślę, że wyszło całkiem przyzwoicie. Każda biała kropeczka na schemacie odpowiada otworowi na płytce. Jak można zauważyć zrezygnowałem z wyprowadzenia poukładanych po kolei wyjść z dekodera u góry schematu a tylko podłączyłem jego wyjścia do 2 listw po 8 pinów które będą połączone taśmą przewodów z modułem sterującym na drugiej płytce. Wyjścia wole poukładać poprzez odpowiednie podłączanie  kabelków do złącz.
Co do samego modułu sterującego to jest on banalnie prosty. Po prostu 16 tranzystorów i trochę rezystorków.
W następnym odcinku, początek prac produkcyjnych.
Zapraszam

sobota, 18 września 2010

Druga postać cyfrówki

Poszperałem, pomyślałem i nawet coś wymyśliłem.
W poprzednim rozwiązaniu nie podobał mi się nadmiar tranzystorów jaki się klarował w tym projekcie, więc poszukałem czegoś bardziej scalonego. Znalazłem układ ULN2803, który zawiera w sobie 8 par typu Darlington z wyjściami typu otwarty kolektor. Co to oznacza? A no to, że każdy taki pojedynczy układ scalony zastąpi mi 8 tranzystorów. Na wejście wystarczy podać jakiś maluteńki prąd żeby na wyjściu umożliwić przepływ dużego, odciążając wyjścia układu Atmega co w poprzednim rozwiązaniu powodowało przygasanie diod przy zbyt dużym obciążeniu.
Drugim problemem do rozwiązania było zwiększenie ilości kolumn z diodami, bo w poprzednim rozwiązaniu mogło ich być jedynie 8. Teraz postanowiłem użyć 4 bitowego demultipleksera zwanego też dekoderem 4 do 16. Zamienia on 4 bitowy sygnał wejściowy w kodzie BCD na dziesiętny kod wybierając jedno wyjście spośród 16. Do tego celu wybrałem układ 74HC154. Oto schematyczny rysunek poprawionego rozwiązania.


A więc po zakupieniu wszystkich potrzebnych układów jak zwykle wpierw przystąpiłem do symulacji mojego rozwiązania na uniwersalnej płytce. I znowu zonk i kilka kolejnych błędów i problemów.
Po pierwsze. Przy wyborze układu dekodera nie dopatrzyłem się, iż wybrany przeze mnie układ 74HC154 ma zanegowane wyjścia. Co to oznacza, a no to, że zamiast wybierać 1 spośród 16 wyjść poprzez ustawienie na nim stanu wysokiego (czyli +5V, a reszta 0V), on ma wszystkie wyjścia w stanie wysokim a jedynie to jedno wybrane w stanie niskim. Totalna porażka. Co prawa mógł bym na wyjściu dekodera zastosować negatory np. z układu 7404, z tym że w każdym takim układzie jest tylko 6 negatorów co oznacza, że musiał bym dołączać kolejne 3 układy tylko dlatego że wybrałem zły scalak na początku.
A więc poszukałem innego układu i kupiłem tym razem układ CD4514, który realizuje tą samą operację co poprzedni tylko już bez negacji wyjść.
Drugi problem jaki się trafił w tym schemacie to fakt, że układy ULN2803 mają wyjścia typu otwarty kolektor więc nie nadają się po obu stronach matrycy, tylko po jednej. Spróbuje to wyjaśnić na przykładowym rysunku.
Na rysunku a) pokazana jest bardzo ogólna zasada działania tranzystora NPN z dołączoną diodą. Jak na wejściu B (baza) nie ma żadnego napięcia i nie płynie prąd to tranzystor jest zatkany czyli nie ma przewodzenia z kolektora C do emitera E. Jeśli na bazie pojawi się choćby malutki prąd, tranzystor zaczyna przewodzić w stronę od kolektora do emitera co spowoduje zapalenie się diody dołączonej do kolektora. Musimy pamiętać iż prąd zawsze płynie z miejsca o wyższym potencjale do punktu i potencjale niższym (potocznie z plusa do minusa). Teraz na rysunku b) przedstawiłem wycinek układu ULN2803 żeby pokazać co oznacza że ma wyjścia typu otwarty kolektor i w czym jest problem. Jest to rysunek poglądowy więc proszę się nie czepiac o szczegóły :). Końcówka kolektora tranzystora jest wystawiona jako wyjście układu. Stąd jeśli na wejście damy stan wysoki to na wyjściu NIE pojawi się wzmocniony stan wysoki, tylko tak naprawdę wyjście to umożliwi spływ prądu do układu tyle że ze zwiększonym potencjałem niż prąd na wejściu. Problemu nie ma dopóki nie zastosujemy w naszym układzie takich scalaków po obu stronach diody którą chcemy zapalić, bo prąd nie ma skąd spłynąć a tylko dokąd. I to jest właśnie ten problem o którym mówiłem.
Układy ULN2803 upraszczają budowę całego układu z tym że nie można ich zastosować po obu stronach matrycy jak to sobie wymyśliłem na początku. Zastosuje tutaj więc jednak zwykłe tranzystory na wyjściu z dekodera.

Teraz pokrótce jak działa sam dekoder. A więc bierze on kod BCD czyli kod zero jedynkowy na wejściach i zamienia go na kod dziesiętny. Czyli przykładowo ustawienie na wejściach stanu 0001 ustawi wyjście nr 1, kod 0010 wyjście 2, kod 0011 wyjście 3, kod 0100 wyjście 4. Te 4 wejścia umożliwiają 16 różnych kombinacji stanów wyjść bo kod 0000 ustawia wyjście nr 0 (wyjścia numerowane są od 0 do 15, w sumie razem 16).
Ogólna idea wyświetlania obrazu na takiej matrycy jest taka, iż:
  • ustawiamy poprzez port D na dekoderze wybranie pierwszej linii
  • portami B i C ustawiamy które diody w danej kolumnie mają się zaświecić.
  • czekamy jakiś krótki czas np 1 ms aby diody zdążył sobie chwilkę poświecić
  • gasimy wszystkie diody na porcie B i C i zmieniamy kolumnę na następną
  • operacje te powtarzamy aż dojdziemy do końca wyświetlacza
  • na koniec zaczynamy wszystko od nowa
Robiąc to bardzo szybko oko ludzkie nie dostrzega migotania tylko ładny stały obraz.

W końcu po wszystkich pomyślnych testach mogę przejść do projektowania samego obwodu i płytki drukowanej.
Ale to już w następnym poście.

piątek, 17 września 2010

Pierwsza cyfrowa idea

Myślałem, myślałem, aż wymyśliłem. A co wymyśliłem, a to:
 A co to? A to jest ideowy schemacik, tego co chcę uzyskać. A więc, kontroler Atmega 16 ma 4 porty wejścia/wyjścia nazwane A, B, C i D więc wymyśliłem, że mógł bym sterować matrycą diod 16 wysokości i 8 szerokości w ten sposób że ustawiając odpowiednie stany na wyprowadzeniach portu B wybierał bym który z tranzystorów by przechodził w stan nasycenia (czyli przewodzenia) co by zwierało odpowiednie kolumny diod do masy, teraz wystarczy tylko na wybrane rzędy diod podać napięcie dodatnie i to by zamykało obieg i zapalało wybrane diody. Idea tworzenia na takiej matrycy jest taka że przełączamy po kolei kolumny od 1 do 8, każda kolumna jest aktywna tylko przez kilka milisekund podświetlając wybrane diody w kolumnie poprzez ustawianie wyjść portów C i D, potem zmiana na kolejną kolumnę. Robiąc to wystarczająco szybko oko ludzkie nie dostrzega migotania tylko stały obraz.
A dlaczego sterujemy portami B, C i D a nie od A? A dlatego że port A jest portem, który umożliwia konwersje sygnału analogowego, jaki płynie w kablu od wzmacniacza do głośnika na sygnał cyfrowy, zrozumiały dla mikro-kontrolera i tam też właśnie jest podpięte wejście sygnału na moim pobieżnym schemaciku.
A więc do dzieła, tak? Otóż nie. Zawsze najpierw staram się wypróbować możliwie dużo z danego rozwiązania bez żmudnego lutowania i niszczenia części, więc potestowałem na płytce stykowej i okazało się że gdy zapalam jedną diodę w rządku na raz to świeci ładnie jasno, lecz przy kilku na raz wszystkie palą się tak ledwo ledwo. A to dlatego, że cały prąd potrzebny na zasilanie tych diod pochodzi z wyjść portów B i C Atmegi, a każde takie wyjście ma wydajność tylko około 40mA czyli zasilania dwóch diod.
Trzeba by ten sygnał dać także przez tranzystor, tak jak wejścia na porcie D. Tylko że każdy tranzystor podwyższa koszty całego układu, a ja staram się zbudować to możliwie małym kosztem. Dochodzi do tego także walor estetyczny. Takie pole tranzystorów sterujących matrycą zaledwie 16x8 diod nie wygląda zbyt profesjonalnie. No i ostatni problem, a zarazem najbardziej znaczący to to, że przy takim rozwiązaniu możemy zasilić jedynie 8 kolumn, bo tyle mamy wyjść na porcie D. Docelowo chciałbym, aby była możliwość w miarę prostego rozszerzania całego układu o kolejne kolumny do pokazywania dokładniejszego wyniku analizy widma.
Tak więc jak widać z powyższego opisu, projekt musi zostać jednak przebudowany i to też będzie w następnym poście.

czwartek, 16 września 2010

Cyfrowa rewolucja

Jakiś czas po zaprzestaniu prac nad moim spektrometrem, czy analizatorem widma jak kto woli, rozpocząłem swoją przygodę z mikro-kontrolerami. Dla mniej wtajemniczonych to niewielkie układy scalone, które można dowolnie według swoich potrzeb zaprogramować tak aby wykonywały z góry przez nas zaplanowane zadania. Oczywiście robią to poprzez odczytywanie stanu wejść i określone manipulowanie stanem swoich cyfrowych wyjść. Jako że nigdy wcześniej cyfrówka mnie jakoś po prostu nie kręciła to długi czas wzbraniałem się przed tą wiedzą, lecz teraz dostrzegam jak proste i wygodne jest ich stosowanie, a możliwości zastosowań praktycznie nieograniczone. Cena przeciętnego prostego kontrolerka to od 20 do 30 zł co w niektórych rozwiązaniach jest drobnym ułamkiem ceny jaką trzeba by wydać. na układy realizujące potrzebne operacje. Ale dość tych zachwytów.
Przy okazji zabawy z popularnym kontrolerem Atmega16 powróciłem do rozważań nad moim niedokończonym projektem analizatora widma. Poszperałem po necie i natrafiłem na algorytm transformaty Fouriera FFT. Jest to algorytm potrafiący w stosunkowo szybkim czasie na podstawie zadanej próbki przebiegu wejściowego wydzielić z jakich sygnałów dana próbka się składa z podziałem na odpowiadające im częstotliwości. Z wyszukanych informacji wynika że dla procesora o szybkości 16Mhz w ciągu kilkunastu milisekund możemy wydzielić aż 512 takich składowych. Jest to szybkość która umożliwia wyświetlenie wyników w postaci przyjemnej dla oka animacji.
Czas więc odgrzebać stary projekt i określić nowe założenia.
Na internecie widziałem wiele rozwiązań takich gadżetów rozwiązanych właśnie na kontrolerach Atmega16, lecz wszystkie je łączyła jedna wspólna cecha. Wyniki w formie już gotowego wykresu były przedstawiane na małych wyświetlaczach LCD dostępnych w sklepach elektronicznych za kilkanaście złotych. Oczywiście całkowicie rozumiem takie postępowanie, jest to tanie i wygodne przedstawienie obrazu bo takie wyświetlacze się bardzo prosto steruje wyżej wymienionymi mikro-kontrolerami. Lecz mi chodzi o coś innego. Mi chodzi o taki klasyczny styl retro wyświetlany na prostokątnych diodach LED w formie słupków. Rozwiązania takie były stosowane w sprzętach Hi-fi z dawniejszych czasów kiedy to nie było jeszcze wyświetlaczy LCD a mrugające w takt muzyki diody LED dawały ten hipnotyzujący efekt. Najczęściej można było spotkać zwykłe dwa słupki pokazujące siłę sygnału w obu kanałach stereo, lecz zdarzały się także bardzo proste kilkunastu diodowe spektrometry. Czuje się więc troszkę pionierem w takim rozwiązaniu. Co prawda można na youtube znaleźć filmiki prezentujące takie matryce lecz zawsze są one rozwiązane na bardziej nowoczesnych okrągłych i super jasnych diodach.
Czas opracować plan działania :)

środa, 15 września 2010

Pierwsze plany i prace

Witam.
Jestem trochę odjechany na punkcie majsterkowania, a w szczególności elektroniki. Ciągle coś tam sobie dłubię, konstruuję i testuję. Rzadko uda mi się stworzyć coś faktycznie użytkowego i ostatecznego bo zwykle skaczę z tematu na temat, ale i tak zapewnia mi to sporą dawkę zabawy. No ale do rzeczy.
Pewnego dnia siedziałem sobie w pracy przeglądając filmiki na youtube i natknąłem się na prezentację analizatora sygnały audio zrobionego przez jakiegoś hobbystę (tak zwane spektro) i pomyślałem że fajnie było by coś takiego sobie wykonać, tym bardziej że jestem także trochę takim melomanem i od razu w takim spektrografie zobaczyłem dużo istotnych informacji o odsłuchiwanym sygnale. Pogłówkowałem troszkę i wpadłem na dość ogólny zarys jak by to miało wyglądać.


No więc najpierw na wejściu jakiś prościutki regulowany wzmacniacz sygnału na jednym tranzystorze lub wzmacniaczu operacyjnym, potem rozdzielamy sygnał na tyle kanałów ile miało by być słupków prezentujących sygnał. Każdy z tych sygnałów przepuszczamy przez aktywny filtr o wąskim paśmie przepustowości i podajemy na sterownik linijki diodowej np. na popularnym scalaku LM3915.
Koncepcja na pierwszy rzut oka może i dobra ale w chwili rozpoczęcia prac okazała się strasznie nie udana, a dlaczego?
  1. Po pierwsze jeśli mieli byśmy np złożyć wskaźnik na tylko 16 słupkach to wymagało by aż 16 oddzielnych kanałów ze sterownikiem i filtrem pasmowym.
  2. Każdy klocuszek takiego filtra trzeba wykonać i zestroić z wykorzystaniem chociażby oscyloskopu żeby zobaczyć jak on się zachowuje przy przesyłanym sygnale, jakie ma parametry przepustowości i tłumienia.
  3. Koszty takiego rozwiązania są dość drogie ze względu na dużą ilość powielanych stałych klocków z których każdy musi zawierać układ filtrowania najlepiej na wzmacniaczach operacyjnych oraz sterowania.
No więc zabrałem się do pracy :)
Kilka dni później zrezygnowałem ponieważ nie dałem rady opanować filtrów. W tamtym czasie nie posiadałem jeszcze oscyloskopu co praktycznie uniemożliwiało mi stwierdzenie czy złożony przeze mnie filtr działa tak jak zamierzałem żeby działał.
Jako ciekawostkę tutaj podam iż w dawniejszych czasach takie układy analizatorów były realizowane dokładnie w taki sposób, miały one dość spore rozmiary i były bardzo nie dokładne, ponieważ bardzo trudno było uzyskać dokładne powtarzalne filtry odseparowujące poszczególne pasma sygnału.
Kilka miesięcy później tak się złożyło że miałem okazję kupić dość dobry oscyloskop po okazyjnej cenie, a skoro marzyłem sobie o tym instrumencie pomiarowym przez wiele wiele lat postanowiłem się w końcu skusić. Z nowym przyrządem powróciłem do zarzuconego wcześniej projektu.
I znowu kilka dni później prace zaczęły się "sypać". Marzyło mi się stworzenie najmniej 32 kanałów i jak zacząłem prace to doszło do mnie jak duży nakład pracy mnie czeka i ile to będzie kosztować, bo każdy taki pojedynczy wskaźnik zawiera sporo elementów i jest ciężki do dokładnego zestrojenia.
Tak więc ponownie zarzuciłem prace z myślą że kiedyś odkopię ten projekt jak znajdę lepszy i wydajniejszy sposób na jego realizację.