• Witamy w największym polskim serwisie internetowym poświęconym w całości zagadnieniom samodzielnej budowy nagłośnienia.
    Dzięki DIYaudio.pl poznasz zagadnienia samodzielnej budowy nagłośnienia od podszewki oraz będziesz mógł dyskutować o DIY audio do woli.

    Artykuły z dawnego portalu zostały przeniesione do sekcji forum na samym dole.

Atmega 8 + 3x PGA2311

Rejestracja
Lip 7, 2007
Postów
21
Reakcji
0
Lokalizacja
Kozminek /k Kalisza
Witam.
Otóż składam sobie pseudo amplituner i chciał bym do regulacji głośności użyć 3xPGA2311 sterowanych przez atmega 8 regulacja mila by się odbywać tylko przez impulsator. W zasadzie to wszystko bo nie potrzebuje wyboru źródła ani wyświetlaczy.
Schemat w zasadzie nie różniący się niczym od katalogowego poza dodaniem mute

Płytka wygląda tak - mile widziane sugestie/poprawki

No i sedno sprawy czyli program obsługujący to wszytko, i tu z mojej strony prośba do osób znających się na programowaniu o sprawdzenie, pokazanie błędów i ewentualnie podpowiedzenia jak to powinno wyglądać.

$crystal = 11000000
Config Spi = Soft , Dout = Pinc.0 , Cs = Pinc.2 , Clk = Pinc.1
Config Pinb.0 = Input
Config Pinb.1 = Input
A Alias Pinb.1
B Alias Pinb.2
Dim Value As Byte
Dim Af As Bit
Dim L As Byte
Dim R As Byte

L = 130
R = 130

Do

Set Pinb.1 : Set Pinb.2

If A = 1 And B = 1 Then 'impulsator w pozycji - zwarte
Af = 1
End If

If A = 0 And B = 0 Then 'impulsator w pozycji - rozwarte
Af = 0
End If


If A = 0 And B = 1 Then 'rozpoczety ruch impulsatora
If Af = 1 Then 'jezeli byl zwarty to
Do
If B = 0 Then Exit Do 'poczekaj az B = 0
Loop
Decr Value 'rozpoznany ruch w lewo

Else 'jezeli byl rozwarty to
Do
If A = 1 Then Exit Do 'poczekaj az A = 1
Loop
Incr Value 'rozpoznany ruch w prawo
End If
End If


If A = 1 And B = 0 Then 'rozpoczety ruch impulsatora
If Af = 1 Then 'jezeli byl zwarty to
Do
If A = 0 Then Exit Do 'poczekaj az A = 0
Loop
Incr Value 'rozpoznany ruch w prawo

Else 'jezeli byl rozwarty to
Do
If B = 1 Then Exit Do 'poczekaj az B = 1
Loop
Decr Value 'rozpoznany ruch w lewo
End If
End If

If Incr Value Then 'glosniej na ruch prawo
If L = 255 Then
L = 254
End If
If R = 255 Then
R = 254
End If

If Decr Value Then 'ciszej na ruch lewo
If L = 0 Then
L = 1
End If
If R = 0 Then
R = 1
End If

Loop

Spio:
Spiinit
Spiout L , 1
Spiout R , 1
Return

Na zakończenie dodam ze o programowaniu uP wiem nie wiele a powyższy powstał z tego co znalazłem o obsłudze impulsatora i PGA :wink:

Za jakie kol wiek sugestie, wskazówki z góry wielkie dzięki
Pozdrawiam rzerzuch
 
ja mam taka sugestie... dodaj odbiornik RC5 i obsluge pilota... jak raz sie zasmakuje takiej wygody nie chce sie innych rozwiazan;)
 
Jak na moje oko:
1. Strasznie wielka płytka - spokojnie można ją sporo zmniejszyć
2. Pobieżnie zerkając mam wrażenie, że nie rodzieliłeś mas (sygnałowa i zasilania). Poza tym masa prowadzona strasznie niedbale
3. Jeśli już robisz dwustronną płytkę to jedną warstę "zalej" masą wokół ścieżek i gdzieś ją na obwodzie przerwij, żeby oddzielić masę sygnałową od masy zasilania
4. Pokombinuj trochę z ustawieniem elementów, bo moim zdaniem przy pewnej dozie wysiłku dałoby się zrobić do tego układu PCB jednostronne (może nawet bez zworek), a przy okazji ułatwisz sobie prowadzenie masy.
5. Pamiętaj, że cały układ operuje na malutkich sygnałach, więc nie musisz robić ścieżek szerokości drogi ekspresowej - na moje oko to ścieżki w Twoim projekcie mają ze 40 milsów ;)

P.S. Dla własnej wygody (i dla wygody osób sprawdzających) oznaczaj na schemacie i na PCB rolę złącz - wierz mi, że to dobry nawyk ;)
 
1. Popracuje nad tym choć miejsca raczej jest sporo
2. Hmm w nocie są masy połączone
3. Myślałem nad wylewaniem masy na wierzchniej warstwie lecz nie bardzo wiem jak to uczynić w eagle tak aby ładnie oblewały ścieżki w odpowiedniej odległości
4. Z ta jedno warstwowa nie tak szybko choc poprubuje jeszcze z cieńszymi ścieżkami :grin:
5. Dokładnie 32milisy :mrgreen: a robię grube ścieżki dlatego ze jak widzę cieniutka ścieżkę na takiej płytce to zalatuje mi jakoś tandeta a poza tym i tak ta miedz idzie na stracenie i tak wiec niech większa cześć pozostanie na płytce :twisted:
Dzięki za porady.
 
Widzę, że połaczyłeś PGA w daisy chaining, a zostały wolne nogi, więc chyba lepiej byłoby sterować każdym z osobna, żeby ustawić np. względną głośność i druga sprawa jeśli płytkę zamierzasz robić sam to powiększ pady od złącza IDC10, bo może być problem przy wierceniu, najlepiej wogóle zrobić je kwadratowe, wtedy trudniej je uszkodzić. BTW ja bym pomyślał jednak o wyświetlaczu albo chociaż jakimś ledzie, bo przyda się podczas programowania, a wogóle najlepiej dodać LCD przecież to koszt rzędu 10zł, a wiele ułatwi. I na Twoim miejscu zintegrowałbym na tym PCB zasilacz i to chyba tyle ode mnie.
 
Myślałem nad zastosowaniem jednego PGA4311 który by obsługiwał kanały przednie i tylne i PGA2311 do obsługi centralnego i suba. Wtedy można by oddzielnie regulować głośnością suba i centralnego za pomocą balansu ale komplikuje program i sterowanie tym wszystkim za pomocą impulsatora a guzików nie mam zamiaru umieszczać na przednim panelu (można by za pomocą pilota ale znowuż ten nieszczęsny wyświetlacz :neutral: ) bo mam już "wizje" jak będzie wyglądał (centralnie umieszczona duża gałka i nic poza tym) z tego samego powodu zrezygnowałem z wyświetlacza początkowo LCD później LED.
Zasilacz już jest zrobiony :wink:
Nóżki zostały bo akurat mam takiego proca i chciałem go wykorzystać
Pomyślimy jeszcze może coś wykombinuje tym czasem stworzyłem nowa płytę do oceny

Pozdrawiam rzerzuch
 
Mimo wszystko to trochę utrudnianie sobie życia, piszesz, że za bardzo nie znasz się na programowaniu, a układ nie ma żadnej możliwości komunikacji z użytkownikiem, nawet diody... jeśli wgrasz soft i nie będzie działać zgodnie z oczekiwaniami nie będzie żadnej możliwości żeby wyświetlić wartość zmiennej czy w ogóle stwierdzić czy soft działa a nie np. utkwił w jakiejś nieskończonej pętli itp. Po sprawdzeniu softu LCD można odłączyć, ale skoro są wolne nogi pomyślałbym o czymś takim, bo długiego listingu nikt nie będzie sprawdzał, a nawet jeśli to niewielka szansa, że znajdzie błąd.
 
Myśle że niepotrzebne są te transoptory. Ja steruje PGA bez zadnych transoptorów i działa idealnie, nie ma żadnych przesłuchów z linni cyfrowej. Jeżeli sie nie myle PGA na czas transmisji sygnału cyfrowego wycisza chyba nawet analog tak ze zakłucenia nie są w stanie sie przedostać ale tego nie jestem pewien, byc moze inny układ tak robił, nie chce mi sie teraz odkopywać datasheeta. PGA każdy ma linie CS nią wybierzesz którym chcesz sterować. Reszta linii komunikacyjnych równolegle.

Impulsator powiniem mieć chyba układ formujacy impulsy bo tak to ci to raczej nie zadziała, raz juz próbowałem podłączać bezpośrednia w proca i sie przejechałem. Cały dzien kombinowania z softem i dupa.
Podobno nowe wersje bascoma maja wprowadzone procedury obsługi impulsatora, coś ostatnio o tym czytałem. Wartoby sie zapoznać , w helpie powinno to być opisane dokładnie.

No i masy ,masa PGA cyfrowa do masy kontrolera , zasilanie 5V tez z kontrolera. Analog , wiadomo osobny tor zasilania.

Programu mi sie za bardzo nie chce analizować ale juz na wstępie widze niedociagniecia. Porty procesora musisz konfigurować wszystkie i wszystkim ustawić jakiś stan. Jak sobie tylko ot tak weźmiesz kilka a reszte zostawisz to procek bedzie wariować, przyłożysz reke i od samego pola elektrycznego bedzie ci walic resety lub cuda wianki.

Generalnie jak powiedział mkul , bez chociażby wyświetlacza cieżko ci bedzie debugować program. Nie bedziesz w stanie określić czy impulsator działa poprawnie czy zwieksza i dobrze zwieksza/zmniejsza zmienna.

"If Incr Value " to chyba się nie skompiluje, nie znam takiego warunku w bascomie, ale moze to coś nowego o czym nie słyszałem ;) . Tylko dziwnie to wyglada zeby program wiedział ze przed chwila inkrementował zmienną.

Ogólnie ten program to w sumie jest zalążek. W zasadzie nic tu nie ma i nie zabardzo na moje oko ma prawo zadziałać.
Moim zdaniem powinieneś rozpocząc zabawe z zastąpieniem ompulstatora dwoma przyciskami. To jest debilnie proste i zawsze dziala. Napiszesz sobie wówczas obsłue tych PGA, i bedziesz mógł sie później zajac gadżetem.

Pamietaj też zeby wykorzystać pamieć Eprom dla nastaw każdego z kanałów wiec jak masz 3 pga to 6 zmiennych deklarujesz do zapisu nastaw głośności. Chyba nie masz zamiaru co start każdy z osobna ściszać z tych domyślnych 130 :D .

Obsuga zapisu wywoływana z opóźnieniem czasowym, np timerem. Bedzie ona realizowana np minute po dokonaniu nastawy. Szybko czy od razu nie ma co zapisywać z kilku powodów, raz zapis eeproma jest bardzo wolny i by zamulał działanie programu, czesto zdaża sie (przynajmniej mi) ze zmieniam głsonośc chwile po tym jak ją juz nastawiłem, taka mała korekta. Zbyt częstymi zmianami mozna wyrybać eeproma, te 100 000 zapisów pewnie szybko by szlag trafił ;) .

Dorzuć sobie obslugę pilota. Odbiornik podczerwieni mozna zawsze dołozyć na kabelku i dopisać kawałek programu. Niewiele roboty a o ile wygodniejsza obsługa ;).
 
Witam
Czy moze ukonczyles ten sterownik?
Mozesz zrobic upload plikow w eagle i kod do procka w pliku bas?
Moze ktos z forumowiczow wykonal taki sterownik?
Moze sie podzielic schematem i wsadem do procka
Czekam na info i pozdrawiam wszystkich
 
Powrót
Góra