Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Cyfrowa regulacja głośności

07 Cze 2006 15:33 4014 30
  • Poziom 23  
    Robię wzmacniacz z przedwzmacniaczem cyfrowym tda7318 sterowanym z atmegi16. Do tej pory regulację głośności miałem zrobić na dwóch przyciskach ale tak sobie myślę że może to być dosyć niewygodne i lepsze by było jednak zwykłe pokrętło. Niestety nie wiem jak takie coś zrealizować. Zapewne jakiś potencjometr cyfrowy czy coś takiego. Nigdy nie miałem z tym doczynienia. Myślałem nad zastosowaniem zwykłego potencjometru podłączonego do adc jako dzielnik napięcia ale to chyba nie najlepsze rozwiązanie. Proszę o wszelkie sugestie. Najlepiej gdyby rozwiązanie było proste i tanie :).
  • Poziom 30  
    Impulsator (enkoder) obrotowy...
    Można taki dostać np w TME za ~18zł + wysyłka...
    Albo samemu kombinować z małym silnikiem krokowym albo jakimś innym z elektroniczną komutacją...
    Na forum było o takich przeróbkach...
    Wystarczy poszukać...
  • Poziom 14  
    Albo wykorzystaj kółko od myszy. Robiłem takie sterowanie w zasilaczu na AT90S2313. Działa super. :)))
  • Poziom 23  
    Z tą myszą to ciekawy pomysł. Czy da się ten układ wymontować w całości? On podaje poprostu impulsy? No i jak to będzie mechanicznie działać bo takie kółko to luźno chodzi więc pewnie trzebaby to połączyć ze zwykłym potencjometrem żeby był charakterystyczny opór.
  • Poziom 21  
    Użyj encoder-a np firmy BOURNS.
    Kupisz w TME i AVT.

    upanie
  • Poziom 28  
    Impulsator (enkoder) to najpewniejsze rozwiazanie. Najtanszym bedzie wlasnie potencjometr do ADC, wcale nie takie trudne do zrealizowania i masz charakterystyczny opor ;) Problem z potencjometrami to to ze sie zuzywaja, ale dzieki programowi masz szanse nad tym w pewien sposob zapanowac i niedopuscic np. do podglosnienia na maksa bo potencjometr przerywa- co zdaza sie w analogowym sterowaniu.
    Pozdro
    Dexter
  • Poziom 12  
    Bez sensu stosować encodery.
    Zastosauj zwykły potencjometr puść przez niego 5V i mierz spadek napięcia lub cokolwiek pomiarem napięcia w przetworniku ADC,
    dodaj sobie do programu funkcję wygładzania zamian np. gdyby PRek ci się zurzył i napięcie gwałtownie skakło.
    pozdr
  • Poziom 23  
    Ten impulsator trzebaby zapewne podłączyć pod wejście int. Dobrze, że się przesiałem na atmega16 z atmega8 to mam 3 takie wejścia. Do jednego podłączyłem czujnik ir, pod drugie przyciski i pod trzecie dam ten impulsator. W ten sposób samo wywołanie przerwania będzie interpretowane jako regulacja głośności tylko jak jest odróżniane kręcenie lewo/prawo?

    filip_gd
    Tylko skąd mam wiedzieć czy ktoś akurat kręci potencjometrem? Nie chciałbym aby mierzenie napięcia na przetworniku było w pętli głównej. Wszystkie funkcje mam obsługiwane za pomocą przerwań i to także chciałbym tak zrobić.
  • Poziom 12  
    O widze kolega wyżej już to napisał:)
    pozdr
  • Poziom 21  
    Konsul napisał:

    filip_gd
    Tylko skąd mam wiedzieć czy ktoś akurat kręci potencjometrem? Nie chciałbym aby mierzenie napięcia na przetworniku było w pętli głównej. Wszystkie funkcje mam obsługiwane za pomocą przerwań i to także chciałbym tak zrobić.


    No a co za problem ? Przecierz ADC w ATmegach ma własne przerwanie.

    Pozdrawiam
    Boogie
  • Poziom 23  
    No ma własne przerwanie ale po dokonaniu pomiaru. Z tego co wiem sam pomiar trzeba wywołać samemu...
  • Poziom 21  
    Konsul napisał:
    No ma własne przerwanie ale po dokonaniu pomiaru. Z tego co wiem sam pomiar trzeba wywołać samemu...


    No na początku, trzeba ADC zainicjalizować, i wystartować (tak jak wiele innych peryferiów), poźniej juz tylko zglasza przerwania z nowym pomiarem. Do tego mozna w pewnym stopniu dobrac czestotliwosc pojawiania sie tego przerwania, poniewaz czestotliwosc taktowania ADC w atmegach mozna ustawic programowo. Jest tez tryb pojedynczego pomiaru, ale Ciebie intersuje tryb ciągły z tego co widze. Oczywiście wszytsko jest napisane w nocie.

    Powodzenia
    Boogie
  • Poziom 23  
    Notę Atmegi przejrzałem całą ale oczywiście nie sposób wszystkiego wyłapać. Ten tryb automatyczny jest interesujący. Przetwornika ADC używam także do pomiaru temperatury z termistora co pozwala mi regulować prędkość wiatraków. Narazie zrobiłęm tak, że w każdym przerwaniu ADC wywoływałem kolejny pomiar. Teraz mogę zastosować tryb automatyczny tylko pierwsza sprawa to gdzie mam dokonywać przełączenia (temperatura/potencjometr), druga to czy zawsze będe miał pewność z którego wejścia ADC mam pomiar. Ostatni problem to szybkość pomiaru. Jeśli chodzi o termistor to powinno to być dosyć wolno, natomiast głośność stosunkowo szybko. Czy da się to rozwiązać w trybie automatycznym?
  • Poziom 21  
    Tam w nocie jest zasugerowane jak w trybie automatycznym dokonywac przelaczen. Rejstr w ktorym wybiera sie kanal dla ADC jest buforowany i zrodlo synalu jest zmieniane na koncu pomiaru. Wiec jak w przerwaniu od ADC zmienisz na potencjometr, to dopiero w kolejnym przerwaniu dostaniesz wartosc napiecia na potencjometrze. Najwygodniej chyba sobie wziasc zmienna licznik, ktora bedziesz w kazdym wejsciu do przerwania zwiekszal o 1. Jesli jest =0 to czytasz termistor. W kazdym innym przypadku czytasz potencjometr. Po wartosci tego licznika dojdziesz tez, czego dotyczy pomiar, który wlasnie sie zakonczyl i wywolal przerwanie.

    Powodzenia
    Boogie
  • Poziom 23  
    Pomysł ze zmienną mi odpowiada. Dodatkowo przy niektórych jej wartościach będe mógł aktualizować wyświetlaną głośność na wyświetlaczu w ten sposób będe miał regulację odświeżania. Tylko nie wiem czy dobrym pomysłem jest ew. przekazywanie poleceń dla wyświetlacza w funkcji obsługi przerwania. Z tego co wiem w przerwaniu należy pozostać jak najkrócej. Czy wynika to ze sprzętowych własności czy może tak nakazuje dobre wychowanie ;)?
  • Poziom 21  
    Dobre wychowanie, dobra rzecz :), ale raczej nie o to tutaj chodzi. Zadluga procedura obslugi przerwania (zadluga czasowo) wywolywana czesto poprostu zawiesi procesor (moze nie zawsiesi, ale na pewno nie wszystko bedzie chodzic jak potrzeba). Trzeba tutaj dzialac z glowa (i nie tylko tutaj :) ). Wybrac pewne optimum. Jesli sterowanie wyswietlaczem zajmuje duzo czasu, to lepiej w przerwaniu ustawic flage, a zmian dokonac w petli glownej w reakcji na flage. Wydaje mi sie, że wyswietlacz i tak bedziesz zmienial gdzie indziej bo pewnie nie tylko glosnosc ma byc wyswietlona. Wiec najlepiej przygotowac dane dla wyswietlacza, w roznych miejscach programu i na podstawie tych danych zmienic zawartosc wyswietlacza raz.

    Pozdrawiam
    Boogie
  • Poziom 23  
    Ok moge aktualizować wyświetlacz w głównej pętli. Tylko czy np. częsta zmiana tekstu na wyświetlaczu na taki sam będzie powodowała miganie lub inne efekty uboczne? W sumie to jeśli mam już te flagi to tekst mogę zmieniać tylko wtedy kiedy będzie taka konieczność. Tych flag będzie bardzo dużo bo chcę zrobić menu ale może jakoś to ogarnę...
  • Poziom 21  
    Konsul napisał:
    Ok moge aktualizować wyświetlacz w głównej pętli. Tylko czy np. częsta zmiana tekstu na wyświetlaczu na taki sam będzie powodowała miganie lub inne efekty uboczne?


    To juz zalezy od wyswietlacza. Podaj jaki to wyswietlacz, to moze ktos napisze jak sie zachowuje w takim przypadku.


    Boogie
  • Użytkownik usunął konto  
  • Poziom 23  
    Przecież napisałem, że mam podłączony do atmegi również czujnik ir, więc pilot będzie. Jednak nie wyobrażam sobie wzmacniacza bez choćby klasycznej gałki volume. Skończą mi się baterie albo pilot padnie i co zrobię?
  • Użytkownik usunął konto  
  • Poziom 21  
    Najlepiej polaczyc potencjometr z silnikiem, najprosciej bedzie krokowym (ale taki z krokiem 0,9 stopnia). Mechanicznie nie najłatwiejsze, ale mam coś takiego w wieży philipsa i naprawde przyjemny bajer. Lepszy niż wysuwane pokrętła na enkoderze (moim zdaniem). Ale wtedy, wychodzi na to, że jak juz używmy krokowego, to potencjometr nie jest potrzebny, ponieważ można dochodzić co i jak na podstawie impulsow z cewek. Jednak ja bym sie zastanowił nad dołaczeniem potencjometru, bo to znacznie ułatwia sprawe. Do tego im mniejszy silnik tym lepiej, bo mniej bedzie czuć kroki przy kręceniu ręka i tak jak pisałem powinien to być silnik o kroky 0,9 stopnia aby tych kroków było dużo. Co prawda zależy też jak duzo kroków rozpoznaje ten wzmacniacz bo zazwyczaj to jest tylko 5 , 6 bitów, czyli 32-64 kroki. Jak ma mniej niż 32 to można sie zastanawiać nad silinkiem 7,5 stopnia

    Powodzenia
    Boogie

    p.s. Popieram frakcje lubiącą pokrętła :)
  • Poziom 23  
    Niestety rozwiązanie z potencjometrem raczwej odpada. Przecież jeśli mam pilota i zwykły potencjometr to jest problem ze sztywnym położeniem potencjometru. Musiałby on mieć silniczek a to już się robi skomplikowane. Coś czuje że powróce do rozwiązania z przyciskami...
  • Poziom 35  
    A ja jak inni proponuje enkoder. Tutaj nie masz przypisanej konkretnej pozycji gałki go głośności jak to jest w zwykłym potencjometrze. No i program łatwiejszy ustawiasz jedną funkcje volume_up druga volume_down. Następnie w zależności, jaki otrzymasz rozkaz z pilota IR odpalasz funkcje, podobnie ma się rzecz, jeśli ruszysz gałą, sprawdzasz kierunek i odpalasz te same funkcje. W przypadku potencjometru i silnika sprawa się trochę komplikuje, bo na podstawie komend z pilota musisz reagować w odpowiedni sposób na silnik ten z kolei na potencjometr a ten poprzez wartości z przetwornika AC reguluje potencjometrem na i2c. Trochę zakręcone jak na mój gust, za dużo funkcji i jedno działanie pociąga za sobą cała lawinę podprogramów. Jeśli zamiast enkodera zastosujesz przyciski program praktyczni nie wiele się zmieni w porównaniu z pierwszym przypadkiem.
  • Poziom 23  
    A jakie sygnały daje taki enkoder i czy taki z myszki by się nadawał? Chodzi głównie o rozróżnianie kierunku lewo prawo. Jak to się robi?
  • Poziom 35  
    Na wyjściu masz trzy wyprowadzenia A i B oraz mase.
    Jeśli kręcisz w lewo to masz impuls na A do masy a B wisi w powietrzu. Natomiast jak w prawo to masz impuls na A do masy oraz B zwarte do masy.
    To wszystko zależy od konkretnego enkodera, są też takie co impulsy występują na A i na B przesunięte pomiędzy sobą.
  • Poziom 23  
    Widze, że kolejny raz przydałby sie oscyloskop. Najlepszy byłby chyba taki enkoder z impulsami na a lub na b. Trzeba by to podłączyć pod przerwanie, w zasadzie obsługa podobna do przycisków, więc nie będzie komplikacji. W zasadzie to niema żadnej różnicy między przyciskami. Tylko jest kwestia długości trwania impulsu i odpowiedniego przeskalowania ich liczby bo z pewnością byłyby one zbyt gęsto.
  • Poziom 35  
    Tyle ze korzystając z przycisków mozna zaimplementować auto_repeat. Wciskasz przycisk i masz Volume+ lub volume+, a trzymając go dłużej wartości same przeskakują.
  • Poziom 23  
    To fakt dla przycisków trzeba dostosować ilość powtórzeń funkcji w zależności od długości trzymania. Dla enkodera będzie ilość powtórzeń w zależności od liczby impulsów które będą szybkie. Teraz musze znaleźć jakąś myszkę starą i wymyślić jak to wszystko do kupy złożyć. Zapewne enkoder podłącze pod potencjometr. To rozwiążę mi problem pokrętła. Będe musiał tylko pozbyć się ograniczenia w postaci blokady przy minimalnym i maksymalnym wychyleniu.
  • Poziom 35  
    Jakoś nie bardzo się orientuje dlaczego chcesz połączyć enkoder ze zwykłym potencjometrem. Jeśli odczyt będziesz mieć cyfrowy to sterowanie też zrób cyfrowo. Poczukaj potencjometru na i2c. Tam nie ma żadnej filozofi, wejście wyjjście, zasilanie i magistrala i2c.
    Wiem ze są scalone układy które mają tez wewnątrz balans oraz korektor. Tak więc jeden układ, magistrala i masz wszystko.