Dwukanałowy logarytmiczny wskaźnik wysterowania na ATtiny13A i 4x74HC595

Dwukanałowy logarytmiczny wskaźnik wysterowania na ATtiny13A i 4x74HC595

Witam wszystkich MAJSTERKOWICZÓW!

Dziś chciałbym się pochwalić swoją pierwszą od początku do końca zaprojektowaną i wykonaną przeze mnie konstrukcją “przelaną” na płytkę PCB. Zatem jest to moja pierwsza płytka więc proszę o wyrozumiałośćWink Konstrukcją tą jest mianowicie wskaźnik wysterowania oparty o przetwornik ADC w ATtiny13. Projekt obmyśliłem w głowie sobie sam. W internecie można znaleźć pełno gotowych rozwiązań takich wskaźników, nawet takie oparte specjalizowane do tego celu układy scalone a nawet zwykłe tranzystory, ja jednak postanowiłem że zaprzęgnę do wykonania takiego układu jakiś procek i i kilka innych scalaków. 

Zamysł projektu był taki aby układ badał chwilową wartość sygnału audio np. z komputera lub przenośnego odtwarzacza i w sposób wizualny pokazywał jego wartość poprzez zapalenie odpowiedniej ilości diod. Nikomu chyba nie trzeba nic więcej mówić bo każdy się z pewnością z takim układzikiem w swym życiu spotkał, choćby w jakimś lepszym magnetofonie czy gdziekolwiek indziej. 

Wymagania jakie sobie postawiłem to: 

– dwa kanały 
– jak najtańszy i najmniejszy procesor 
– co najmniej 12 diod na kanał 
– spowodować aby wskaźnik odwzorowywał rzeczywisty rytm muzyki 
– zrobienie funkcji chwilowego utrzymywania wartości szczytowej 
– i najważniejsze, żeby układ działałSmile 

Wybór padł na ATtiny13, aby zwiększyć ilość wyjść procesora użyłem rejestrów przesuwnych 74HC595, dobrze wszystkim znany i lubiany scalak. Ten projekt był dla mnie potrzebny również po to aby ogarnąć magistrale SPI, i bardzo się cieszę bo w mikroprocesorze zaimplementowałem programowe SPI na podstawie kodu z “Mikrokontrolery AVR Język C – podstawy programowania” autorstwa Pana Mirosława Kardasia Smile.  Z CAŁĄ STANOWCZOŚCIĄ, JEŻELI KTOŚ CHCIAŁBY ZACZĄĆ PROGRAMOWAĆ W “C “A SIĘ BOI ZACZĄĆ TO POLECAM TĄ KSIĄŻKĘ. W DODATKU AUTOR NAGRYWA TEŻ ŚWIETNE PORADNIKI DO SWOICH KSIĄŻEK I UDZIELA PEŁNEGO WSPARCIA NA DRODZE MAILOWEJ CZY TEŻ NA FORUM. ŻEBY NIE BYŁO, NIE REKLAMUJE TYLKO POLECAM :)

DZIAŁANIE UKŁADU – HARDWARE 
Układzik działa następująco, sygnał audio pobrany z jakiegoś urządzenia go emitującego, trafia na potencjometr. Ze środkowej nóżki potencjometru, sygnał wędruje na wejście wzmacniacza operacyjnego LM386 (typowy wzmacniacz audio malutkiej mocy), tam jest wzmacniany ze wzmocnieniem równym 20 ( schemat połączeń do osiągnięcia takiego wzmocnienia, wzięty jest wprost z noty katalogowej układu ), później poprzez kondensator sprzęgający trafia na bazę tranzystora bipolarnego NPN BC547. Napięcie z rezystora emiterowego (wtórnik emiterowy) trafia na wejście ADC mikroprocesora. Jednak na wejście to trafia tylko dodatnia połówka sygnału ponieważ ujemna odcinana jest przez tranzystor. aby go zabezpieczyć zastosowałem szybką diodę miedzy masą a bazą spolaryzowaną zaporowo dla dodatnich połówek sygnału aby zabezpieczyć układ. Sygnał jest zatem prostowany jednopołówkowo. 

Oto schemacik układu narysowany w programie EAGLE:

Głowna płytka:

schemat_płytka1

Płytka z diodami:

Schemat_płytka2


DZIAŁANIE UKŁADU – SOFTWARE 

W programie który wgrałem do procesora napięcie zmierzone na nóżkach ADC jest uśrednianie i zależnie od wartości jaką przyjmuje w danym obiegu pętli głównej następuje wysłanie poprzez programowe SPI odpowiedniej wartości w celu zaświecenia odpowiedniej ilości diod. Ot cała filozofia. Oczywiście usredniony sygnał porównywany jest z tablicą w której znajdują się logarytmy obliczone dla wartości 0db = około 0.77V. W programie jest też zapamiętywanie wartości szczytowej. Poniżej zamieszczam kod: 

 Kod oczywiście nie jest napisany liniowo. Nie ma w nim żadnych głupich i bezsensownych delay’ów. Są za to przerwania, timer’y programowe i inne fajne rozwiązania. Kod jest dość dobrze zoptymalizowany :)

Kilka zdjęć z prac nad płytką PCB:

1585933600_1400016001 3776329300_1400016006 4764633800_1400016027 4862002600_1400016205 5367392800_1400016210 5908971900_1400016021 6214450900_1400016200 6333518500_1400016195 6357869700_1400016215 6590870500_1400016015 6897086200_1400015991 7073887600_1400015996 8923978400_1400016011

A tutaj jest spakowany cały projekt w eagle, czyli schemat + płytka PCB gdyby ktoś chciał sobie ten układzik wykonać :)

VU_METER

Tutaj widok płytki PCB:

board

WIDEO – PRZEPRASZAM ZA JAKOŚĆ ALE NIE DYSPONUJE LEPSZYM SPRZĘTEM :)

Film pokazujący działanie układu – układ bez obudowy:

 

Film pokazujący działanie układu – układ z obudową:

Obudowa troszkę mi nie wyszła bo nie miałem wiertarki i nie za bardzo miałem jak dziurki na diody powiercić ale jakoś wyszło :)

 

 

To chyba by było wszystko. Kod, schemat, i krótkie wyjaśnienie jak układ działa zamieściłem. Kod jest dość dobrze okomentowany więc nie powinniście mieć problemu z jego zrozumieniem:)

POZDRAWIAM I ZAPRASZAM DO KOMENTOWANIA! :)

Ocena: 4.73/5 (głosów: 44)

Podobne posty

32 komentarzy do “Dwukanałowy logarytmiczny wskaźnik wysterowania na ATtiny13A i 4x74HC595

  • Jak dla mnie projekt rewelacja 5/5. Jedyna uwaga dotyczy efektu końcowego: trochę krzywo te LEDy wyszły ;-) Może ciekawiej wizualnie byłoby zastosować diody prostokątne? Z tego co pamiętam za czasów Unitry był dedykowany układ scalony który robił za sterownik paska LED.

    Odpowiedz
    • Otóż to – szkoda, że te diody tak nierówno są ;) Na przyszłość proponowałbym zrobić tak:

      1. Narysuj delikatną linię ołówkiem
      2. Gwoździkiem zrób małe dziurki w miejscach, w których mają być diody (najlepiej z linijką)
      3. Wywierć otwory we wcześniej napunktowanych miejscach.

      Dzięki punktowaniu wiertło nie będzie uciekało i wszystkie otwory będą równiutkie. Warto też wstawiać diody w takich oprawkach, jak na załączonym obrazku. Są one bardzo tanie, a znacząco podnoszą walory estetyczne :)

      Diody prostokątne rzeczywiście mogłyby fajniej wyglądać, ale na pewno ciężej by było wyciąć na nie otwory w obudowie ;)

      Odpowiedz
      • Wiem że te diody są krzywo ale niestety nie dorobiłem się jeszcze wiertarki:) jak tylko takową zakupie to poprawie obudowe i efekt będzie lepszy;)

        Odpowiedz
  • Wiem że te diody są krzywo ale niestety nie dorobiłem się jeszcze wiertarki:) jak tylko takową zakupie to poprawie obudowe i efekt będzie lepszy;)

    Odpowiedz
  • Super. Najbardziej podoba mi się, że nie arduino na płytce stykowej z jakimiś dziwnymi rysunkami, tylko goły procesorek, prawdziwy schemat i prawdziwe “C”. Podziwiam takich co im się chce :) Poza tym nie spodziwałem się, że tak krótki programik załatwi to wszystko.

    Poprosiłbym do kompletu informację jak trzeba ustawić “fuse bits” (zostawiłeś “produkcyjne”?). Chyba najlepiej jakbyś to umieścił po prostu w kodzie programu gdzieś na początku.

    Odpowiedz
    • Fusy są fabryczne. Przestawiłem tylko oscylator wewnętrzny na 9,6 MHz programem mkAVRcalcultor gdyż posiadam pełną wersję:) ale wystarczy zmienić fuse od zegara tak żeby był na 9,6 MHz pędzony;)

      Program krótki ale musiałem się namęczyć żeby go tak zoptymalizować:)

      Odpowiedz
    • Otóż to, świetny projekt na samym uP. Dla formalności dodałbym tylko
      link/wzmiankę jak to wgrać na “uP” i już oczami wyobraźni widzę ten
      projekt na diodach smd. Jeszcze raz gratulacje za kod.

      Odpowiedz
      • Z pewnością na SMD wyglądałoby to lepiej ale nie umiem jeszcze dobrze THT lutować a co dopiero SMD;) elektroniką interesuję się dopiero od kilku miesięcy więc wiesz:)
        A co do programu i procka…
        Cóż, jak widać do sterowania 32 diodami nie trzeba ATmegi256 lub jakiegoś ARM’a;p Myślę że jak ktoś będzie się za to brał to sobie doczyta jak wgrać wsad na procek. Poradników jest milion w internecie:) tym bardziej że na wstępie napisałem o człowieku który Tworzy najlepsze:)

        Odpowiedz
  • Do robienia obudowy bez wiertarki najlepiej użyć suwmiarki (może być dobry cyrkiel z dwoma ostrymi końcami i linijka) lutownicy z ostrym grotem (musi być bliski okrągłemu, to jest drut transformatorówki się nie nada – ewentualnie gwóźdź oraz palnik kuchenki), śrubokręta krzyżakowego o rozmiarze mniejszym lub równym żądanym otworom oraz jeżeli używamy mniejszego śrubokręta okrągły pilnik. Suwmiarką wyrzynamy (po stronie wewnętrznej…) najpierw krótkie linie a potem długie (oczywiście przecinać mają się w miejscach na otwory), potrzebujemy całkiem głębokich rowków jeżeli nie mamy doświadczenia w manipulacji plastikiem. W nacięcie wcelowujemy grot i możliwie pod kątem prostym wciskamy go w plastik (warto użyć najmniejszej możliwej temperatury, im większa tym łatwiej o błąd a i więcej toksycznych gazów się wytworzy). Jak już mamy otwory bez oczyszczania krawędzi przykładamy śrubokręt od frontu i naciskając tak mocno jak tylko mamy pewność że plastik wytrzyma obracamy lekko w obie strony, pod koniec grubości naciskamy słabiej i jeżeli wszystko jest jak należy to śrubokręt wypycha zadziory z wewnętrznej strony a te z zewnętrznej usuniemy nożykiem (sporo wprawy do tego potrzeba ale efekt może wyjść idealny, po wewnętrznej stronie za to może urwać się odrobina powierzchni plastiku a i nie musi być miejsca na nóż :). Teraz ewentualnie pilnikiem (okrągłym…) powiększamy otwór i voila!

    Odpowiedz
    • Zawsze możesz zrobić lepiej ;) poza tym jest to wskażnik dwukanałowy stereo. Włącz sobie np Starwais to Heaven Zeppelinów. W takim utworze jeden kanał może być np wysterowany na maksa a drugi wcale nie. Zależy od jakości utworu, zróżnicowania i wielu innych czynników ;) więc nie komentuj jeśli nie posiadasz elementarnej wiedzy w tym zakresie ;) zapewniam Cie że po zapodaniu na wskaźnik szumu różowego obie linijki świecą na takim samym poziomie ;)

      Odpowiedz
  • Brak danych:

    Jaki stabilizator napięcia użyłeś? Drogą dedukcji zapewne LM7805?

    Układ zasilany 5V?

    Jaka oporność potencjometru? Tutaj już nie zgadnę a na schemacie nie podałeś :D

    Można by jeszcze podać szczegółową liste części bo artykuł w tej formie jest raczej nie dla laika tylko dla ludzi znających się na rzeczy.

    Płytkę można by nieco ścieśnić bo widzę tu wiele wolnej przestrzeni :D

    Rezystory do diód mogły by być w pozycji stojącej to od razu mniej miejsca zajmują :)

    Odpowiedz
    • Witaj;)
      stabilizator to klasyczny 7805 ale mozesz dać jakąś przetworniczke tylko etedy pamietaj że +5V na procek dajesz przez dławik. Płyteczkę masz zrobioną ok, nawet ładniejsza niż moja. Ja swoją robiłem na szybko i nie miałem czasu pomysleć. Super byłoby wykonać ją w SMD.
      Zasilanie 5V (7805)
      potencjometr z przedziału 50-500k żeby nie obciążać za bardzo źródła sygnału. Op-ampy nie potrzebują dużego pradu na wejsciach.
      Z powodzeniem możesz użyć ATmega8, trzeba bedzie zmienić jedynie pinologie i konfiguracje timerów.
      Życzę powodzenia w realizacji. Kod jest oczywiście open-source i mozna go do woli kopiować, zmieniać i rozpowszechniać.

      Odpowiedz
      • Kurcze dopiero teraz zauważyłem że nie podałeś jeszcze wartości kondensatorów :P Chyba naprawdę na szybko to wszystko robiłeś :D
        Podaj mi: C11, C12, C13, C14
        Przy zasilaniu masz podane ale w części analogowej chyba już zapomniałeś :)

        Odpowiedz
        • Kondensatory sprzęgajace, odcinajace składowa stała mają wartość 100nF, sa to kondensatory C11 i C12. C13 i C14 nie sa konieczne ale lepiej je dać. Mają wartość 47nF. ;-)

          Odpowiedz
          • Dzięki za odpowiedź. Słuchaj a czemu w eagle’u masz w miejscu C11 i C12 elektrolity a na płytce widzę ceramiczne? Także nie wiem… jakich mam użyć? Coś widzę że naprawdę na szybko to wszystko robiłeś :D

            Odpowiedz

Odpowiedz

anuluj

Masz uwagi?