Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 22 kwi 2025, o 08:07


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 52 ]  Przejdź na stronę 1, 2  Następna strona
    Autor Wiadomość
    PostNapisane: 9 maja 2014, o 22:45 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Witam wszystkich forumowiczów:)

    Dziś chciałbym się pochwalić swoją pierwszą konstrukcją "przelaną" na płytkę PCB. Zatem jest to moja pierwsza płytka więc proszę o wyrozumiałość;) 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, 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ł
    - i najważniejsze, żeby układ działał:)

    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 BB Pana Mirosława Kardasia :).

    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.


    DZIAŁANIE UKŁADU - SOFTWARE

    W programie który wgrałem do procesora napięcie zmierzone na nóżkach ADC jest uśrednianie ( FILTR DOLNOPRZEPUSTOWY - link do poradnika )


    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. Poniżej zamieszczam kod:

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Schemat układu w programie EAGLE 6.4:

    ObrazekObrazek

    Link do projektu w programie EAGLE 6.4:

    http://www76.zippyshare.com/v/42802106/file.html

    Zdjęcia układu ( jakość kiepska ale niestety lepszego aparatu nie mam ;) ):

    ObrazekObrazekObrazek
    ObrazekObrazekObrazek


    FILM POKAZUJĄCY PRACĘ UKŁADU


    Zapraszam do komentowania:)

    POZDRAWIAM WSZYSTKICH SERDECZNIE!!!:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 9 maja 2014, o 23:02 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27375
    Lokalizacja: Szczecin
    Pomógł: 1043

    No i fajny projekcik ;) ale ...

    Nefarious19 napisał(a):
    Jednak na wejście to trafia tylko dodatnia połówka sygnału


    czy zasilasz wzmacniacz napięciem dodatnim i ujemnym ??? czy tylko GND i VCC ???

    pytam bo jeśli GND i VCC to na pewno nie masz ujemnych połówek - tylko dodaną składową stałą i nic nie trzeba odcinać tranzystorem ....


    Autor postu otrzymał pochwałę

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 00:37 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Zasilam Vcc i GND ale napięcie na tranzystor podaje przez kondensator sprzęgający a on mi odcina składową stałą, wiem bo podpatrzyłem na oscyloskopie. Sygnał na wyjściu LM386 jest nałożony na składową stałą równą połowie napięcia zasilania, zatem najmniejsza możliwa wartość napięcia bez kondensatora odcinającego tą składową równa jest GND, ale jak tą składową stałą się odetnie to napięcie ujemne o piku =-2,5V może się pojawić, dlatego dałem tą diodą w razie jakby przez jakiś nieznany czynnik ten pik ujemny mógłby mi uszkodzić tranzystor. Mógłbym to zrobić prościej i dać prosto ze wzmacniacza to napięcie ze składową stałą i w programie po prostu od np 512 dopiero świecić te diody ale ja przy okazji chciałem sobie kilka rzeczy jeśli chodzi o analogówke podpatrzeć a ten projekt bardziej jako naukę traktowałem aniżeli coś super przydatnego:) Bardzo dziękuje za pozytywny komentarz Panie Mirku:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 14:04 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    Całkiem fajnie Ci to wyszło, ale parę uwag odnośnie programu bym miał. Pierwsza sprawa to litania if'ów spokojnie mogło być tylko dwa (po jednym na kanał) w tablicy i wszystko badane w małej pętli, a druga spawa to sam algorytm wyświetlania. Zwróć uwagę, że w momencie zaniku sygnału od razu wszystko gaśnie. Porównaj teraz ten efekt z jakimkolwiek "sklepowym" rozwiązaniem to dostrzeżesz subtelną różnicę linijka stopniowo zanika (dość szybko ale nie powoduje to nieprzyjemnego efektu migania całego wskaźnika) dlatego powinieneś zastosować po jednej dodatkowej zmiennej na kanał tzw. doganiającej i umieścić jej inkrementację/dekrementację z małym opóźnieniem. Dzięki czemu ZAWSZE diody będą płynnie jeździć po linijce, a nie gwałtowny skok. Oczywiście opóźnienie trzeba dobrać doświadczalnie i będzie to dosłownie kilkadziesiąt ms, a efekt nieporównanie lepszy. :)


    Autor postu otrzymał pochwałę

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 14:22 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    SylwekK napisał(a):
    Pierwsza sprawa to litania if'ów spokojnie mogło być tylko dwa (po jednym na kanał) w tablicy i wszystko badane w małej pętli


    Dzięki za super podpowiedź, te if'y mi strasznie dużo flashu zajmują. Masz na myśli to żeby dać pętle for w której wartości z ADC porównywane będą z wartością z tablicy które będą te progowe wartości dla każdej diody? Kurcze, że na to nie wpadłem;p Ale gafa;p Ale zaraz wyjmę procek z podstawki i przeprogramuje:) a co do tego:

    SylwekK napisał(a):
    Porównaj teraz ten efekt z jakimkolwiek "sklepowym" rozwiązaniem to dostrzeżesz subtelną różnicę linijka stopniowo zanika (dość szybko ale nie powoduje to nieprzyjemnego efektu migania całego wskaźnika) dlatego powinieneś zastosować po jednej dodatkowej zmiennej na kanał tzw. doganiającej i umieścić jej inkrementację/dekrementację z małym opóźnieniem. Dzięki czemu ZAWSZE diody będą płynnie jeździć po linijce, a nie gwałtowny skok. Oczywiście opóźnienie trzeba dobrać doświadczalnie i będzie to dosłownie kilkadziesiąt ms, a efekt nieporównanie lepszy.


    To ja właśnie tak zrobiłem z tym że mi się to nie podobało za bardzo;) ale przecież to tylko kwestia gustu, a o gustach się nie dyskutuje:) wszakże bardzo Ci dziękuje za konstruktywną krytykę:) dobrze że nie dałem tego projektu na ele...da.pl bo tam by mnie wyśmiali;)

    Pozdrawiam:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 14:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    Nefarious19 napisał(a):
    Masz na myśli to żeby dać pętle for w której wartości z ADC porównywane będą z wartością z tablicy które będą te progowe wartości dla każdej diody?


    Tak. Tylko pamiętaj, żeby w tablicy uwzględnić które diody mają się palić dla danej wartości.

    Nefarious19 napisał(a):
    dobrze że nie dałem tego projektu na ele...da.pl bo tam by mnie wyśmiali;)


    Eeee, może tak źle by nie było. Jak to mówią jeszcze się nie urodził co by wszystkim dogodził :)

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 15:01 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Wgrałem teraz program i wszystko śmiga a zużycie flashu spadło mi z 980 bajtów to 433 więc o połowe;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 18:03 
    Offline
    Użytkownik

    Dołączył(a): 25 lip 2013
    Posty: 2595
    Pomógł: 128

    Fajny projekcik, a po optymalizacji masz miejsce na dodatkowe futuresy :) moze wyjscie na terminal? ;)

    Sent from my mobile.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 19:30 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Mam na płytce podciągnięty do pinu RESET switch, więc mógłbym przestawić we fuse'ach żeby to był normalny pin I/0 i wtedy np klikając tego switcha mógłbym zmieniać efekt, muszę się troszku tym pobawić jeszcze ale na razie projektami na studia zawalony jestem:) jak coś mądrego jeszcze wymyślę to zarzucę kod i filmik:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 19:59 
    Offline
    Użytkownik

    Dołączył(a): 15 cze 2013
    Posty: 599
    Lokalizacja: Lubin
    Zbananowany użytkownik

    Pomógł: 35

    Wskaźniki wysterowania od zawsze skalowane były w decybelach od -20 dB do +3 dB co odpowiada od 1% do 200 % sygnału dla 0 dB jest 100% sygnał, czerwony obszar na analogowym lub czerwone ledy to zakres od 0 do + 3 dB czyli sygnał przesterowany. Skala jest logarytmiczna. Tak wyglądają analogowy i na diodach W analogowym czarna skala to procentowa dla 0db jest 100%. logarytm z 1 równy jest 0, w logarytmie jest stosunek napięć czyli wskaźnik jest np. wyskalowany na 0,775 V i przy tym napięciu wskaże 0 db inne wartości to obliczenie 20*log(Uwe/0,75)
    ObrazekObrazek

    W projekcie mierzysz na ADC napięcie i zapalasz diody odpowiednio do zmierzonego napięcia. Zrobiłeś wskaźnik liniowy.
    Żeby wskazywał logarytmicznie to albo obliczać ten logarytm lub zastosować tablicę podobna do korekcji gamma w diodach RGB w mkAVRkalkulator i uzupełnić ją obliczając logarytm dla każdej diody jakie napięcie powinno ją zapalić.

    Odnośnie samych ledów to nie wiem czy to efekt filmu czy faktycznie widać efekt przy zapalaniu większej ilości diód że pierwsze przygasają jakby spadało napięcie zasilające diody. Może za cienkie i za długie przewody? A może to tylko takie złudzenie.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 20:15 
    Offline
    Użytkownik

    Dołączył(a): 29 lis 2012
    Posty: 1074
    Lokalizacja: Sochaczew
    Pomógł: 21

    Wyszło fajnie. Dopracuj płytkę i będzie gitara.


    Wysłane z mojego LG-P760 przy użyciu Tapatalka


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 20:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    OdeOn napisał(a):
    Odnośnie samych ledów to nie wiem czy to efekt filmu czy faktycznie widać efekt przy zapalaniu większej ilości diód że pierwsze przygasają jakby spadało napięcie zasilające diody. Może za cienkie i za długie przewody? A może to tylko takie złudzenie.


    To właśnie ten efekt, o którym pisałem w pierwszym moim poście - autorowi to nie przeszkadza więc jest ok ;)


    Autor postu otrzymał pochwałę

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 21:01 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Dziękuje wszystkim za odzew, fajnie że daliście mi tyle rad. Co do tego że wskaźniki są wyskalowane w skali logarytmicznej to wiem. Wiem jak się nią posługiwać bo miałem to na podstawach teorii sygnałów. Zmiana tego wskaźnika na logarytmiczny nie będzie problemem, kwestia przeprogramowania.

    Kolego SylwekK, mam do Ciebie pytanie, mówiłeś o tym dociąganiu aby wyeliminować ten efekt o którym pisałeś w pierwszym poście, ja odpisałem że to robiłem ale nie zrozumiałem dokładnie tego co miałeś na myśli i ja robiłem coś innego, mianowicie po prostu dodałem delaya w pętli żeby migotanie wyliminować, czy mógłbyś mi przybliżyć mniej więcej o jaki algorytm Ci chodziło? bo próbowałem coś tam naskrobać ale efekty nie są takie jak w "sklepowych" wskaźnikach. Poproszę o radę:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 23:23 
    Offline
    Użytkownik

    Dołączył(a): 15 cze 2013
    Posty: 599
    Lokalizacja: Lubin
    Zbananowany użytkownik

    Pomógł: 35

    Cytuj:
    OdeOn napisał(a):Odnośnie samych ledów to nie wiem czy to efekt filmu czy faktycznie widać efekt przy zapalaniu większej ilości diód że pierwsze przygasają jakby spadało napięcie zasilające diody. Może za cienkie i za długie przewody? A może to tylko takie złudzenie.To właśnie ten efekt, o którym pisałem w pierwszym moim poście - autorowi to nie przeszkadza więc jest ok

    Chyba mi o coś innego chodziło. Mianowicie np. 2 pierwsze diody obserwując to jak się tylko one palą to są jaśniejsze niż te same 2 diody gdy pali się np. 10 diód. co by sugerowało spadki napięc na przewodach lub nie wydajny zasilacz z spadającym napięciem pod obciążeniem.
    A wprowadzenie opóźnienia narastania/opadania to standard opisujący wskaźniki VU mówi o 300ms.
    Ale budując dla siebie różne może się mieć wymagania.
    W tym linku jest chyba większość informacji o działaniu VU meter http://www.mediacollege.com/audio/monitoring/vu.html


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 maja 2014, o 23:32 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    OdeOn napisał(a):
    Chyba mi o coś innego chodziło. Mianowicie np. 2 pierwsze diody obserwując to jak się tylko one palą to są jaśniejsze niż te same 2 diody gdy pali się np. 10 diód. co by sugerowało spadki napięc na przewodach lub nie wydajny zasilacz z spadającym napięciem pod obciążeniem.


    To wina kiepskiego sprzętu, nagrywałem to tanią cyfrówką, w rzeczywistości wszystko jest ok. Zasilam to zasilaczem impulsowym 7,5V 2,5A, ścieżki zasilania mają 70 milsów, kondensatory filtrujące po 1000uF więc raczej nic się tam nie dzieje;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 11:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    Nefarious19 napisał(a):
    Kolego SylwekK, mam do Ciebie pytanie, mówiłeś o tym dociąganiu aby wyeliminować ten efekt o którym pisałeś w pierwszym poście, ja odpisałem że to robiłem ale nie zrozumiałem dokładnie tego co miałeś na myśli i ja robiłem coś innego


    Przedstawię Ci tu ideę do zaadoptowania. Zaletą rozwiązania jest to, że ZAWSZE nawet jak jest bardzo duży skok wartości zadanej (dlatego samo wyciąganie średniej tu nie wystarczy) to wartość końcowa (ta zmienna doganiająca) będzie się płynnie zmieniać z TĄ SAMĄ prędkością, a czas tej zmiany można swobodnie modyfikować. Oczywiście należy jeszcze ustawić timer w przerwaniach do odliczania opóźnień. Tyle tytułem teorii :)

    Teraz jak to wygląda... :

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Pozdrawiam ;)


    Autor postu otrzymał pochwałę

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 21:36 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Witam Pnaowie:) pokombinowałm tak jak mówiliście, wprowadziłem skalę logarytmiczną od -20 do 3dB gdzie poziom 0 dB reulowany jest w programie. Zrobiłem dociąganie i wszytsko gra, mam jednak pytanie, przy szybszych piosenkach ( umca umca znane powrzechnie ) wskaźnik się gubi, przy wolnych pokazuje nawet bardzo dokładnie. Rzadko kiedy wchodzi na czerwoną skalę (musi być wyjątkowo głosny moment), czy tak powinno być? pozdrawiam:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 21:43 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 paź 2013
    Posty: 1968
    Lokalizacja: Lipsko
    Pomógł: 125

    A duże dałeś opóźnienie dociągania? Trzeba pokombinować, bo może się okazać, że wystarczy kilkanaście ms, albo zrobić szybsze dla narastania i nieco wolniejsze dla opadania.

    _________________
    http://www.sylwekkuna.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 21:55 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Opóźnienie od 25 do 35 milisekund wydaje sią najbardziej optymalne. Czytałem na tej stronie którą podał kolega OdeOn że to normalne zachowanie wskaźników. Spróbuję jeszcze bardziej zoptymalizować kod i dodam video aby dla potomnych zostało. Dzięki temu dociąganiu to nieprzyjemne miganie dolnych diod zniknęło a po zastosowaniu skali logarytmicznej całość jest jakby stabilniejsza, miło się na to teraz patrzy:) dziękuje wam za cenne rady Panowie:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 22:16 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27375
    Lokalizacja: Szczecin
    Pomógł: 1043

    Nefarious19 napisał(a):
    , wprowadziłem skalę logarytmiczną od -20 do 3dB gdzie poziom 0 dB reulowany jest w programie.


    To ja się tak z ciekawości zapytam jaką metodą zrobiłeś to w programie ? jakieś tablicowanie wartości ?

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 22:45 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Chciałem zrobić tablicowanie ale niestety zabrakłoby mi pamięci więc rozwiązałem sobie równanie które podał OdeOn i wymyśliłem sobie taki wzór:

    U_we - napięcie pobrane z ADC (od 0 do 1024)

    dB - zmienna w której znajdują się wartości w decybelach które chce przeliczyć na pewną wartość od 0 do 1024

    skala_zwykla - zmienna w której przetrzymuje przeliczone ze skali decybelowej wartości napięcia od 0 do 1024

    zero_dB - poziom 0 decybeli względem którego przeliczam wartości

    a więc:

    skala_zwykla = (10^(dB/20))*zero_dB

    dla przykładu, jeżeli założymy że poziom 0dB wynosi około 1V czyli 1*1024/1,1= 931 to poziom -20dB dla tego sygnału wyniesie:

    skala_zwykla = (10^(-20/20))*931 = 93

    wartość 3dB wyniesie:

    skala_zwkla = (10^(3/20))*931 = 1315

    1315 co prawda już nie zmierzymy ale to tylko teoretyczne wyliczenia, w programie zaczynam w pętli inkrementować od wartości -20 do 3 decybeli a za poziom zero przyjąłem 720 decybeli, w ifach sprawdzam czy wartość z U_we > skala_zwykla dla danego obiegu pętli i jeśli tak to ilość diod jakie mają się zapalić ustawiam na taką jaka jest dana wartość sygnału w skali decybelowej, ot cała filozofia:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 23:04 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27375
    Lokalizacja: Szczecin
    Pomógł: 1043

    No i tym sposobem z takiego niewinnego wydawać by się mogło wskaźnika wysterowania zrobił się BARDZO ciekawy temat ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 maja 2014, o 23:07 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Tak mnie to pochłonęło że teraz siedzę po nocy i sprawozdanie pisze na studia;p czego się dla pasji nie robi;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 maja 2014, o 23:00 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Witam wszystkich ponownie:) chciałbym wam przedstawić zaktualizowany kod, jednakże nie jestem do konca zadowolony z efektu. Mógłby ktoś z was coś poradzić? Wrzucam kod, jeżeli ktoś by miał chęci pomóc to bardzo was proszę;) chciałbym uzyskać efekt jak na tym filmie:



    Niestety przy szybszych momentach wskaźnik już wariuje. Ma ktoś z was na o lekarstwo:)?

    oto moja wypocina kilkudniowa;) :

    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    i co myślicie Panowie ( i być może Panie też;) )?

    Dodam że nie korzystam z obliczania logarytmów bo nie chciało to działać za dobrze jednak.

    ------------------------ [ Dodano po: 28 minutach ]

    Zwiększyłem dt do 100 i jest o wiele lepiej;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 maja 2014, o 23:36 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27375
    Lokalizacja: Szczecin
    Pomógł: 1043

    takie na razie uwagi bardzo ogólne:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    1. to nie Deklaracje tylko DEFINICJE zmiennych globalnych
    2. zmiennych globalnych nie inicjalizujemy zerem bo i tak są inicjalizowane zerami automatycznie

    ------------------------ [ Dodano po: 1 minucie ]

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    dawaj ZAWSZE tuż przed pętlą główną programu a nie na jego początku aby w przyszłości uniknąć czasem dziwnych zachowań procka przy samym starcie ok? .... Najpierw trzeba pokonfigurować wszelkie przerwania, timery itp ... a na końcu ... czyli po tej inicjalizacji a przed pętlą główną dopiero odpalić globalne zezwolenie na przerwania

    ------------------------ [ Dodano po: 4 minutach ]

    nazwę stałych definiowanych preprocesorem ZAWSZE rób dużymi literami, czyli nie tak:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    tylko tak

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    a najlepiej nie używaj do tego oznaczeń 2-3 literowych a dłuższych ... ileż ja się naszukałem w tym kodzie gdzie jest definicja zmiennej dt ;) masakra ...

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 maja 2014, o 23:46 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Oj, dziękuje bardzo, że się Panu chciało o tej godzinie.. podziwiam:) Obiecuje że poprawie te błędy:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 maja 2014, o 23:46 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27375
    Lokalizacja: Szczecin
    Pomógł: 1043

    Nefarious19 napisał(a):
    Niestety przy szybszych momentach wskaźnik już wariuje.


    i teraz tak - super byłoby wiedzieć - co ty masz na myśli pisząc to ;) ... co to znaczy że wariuje ? ciężko po takim opisie nad czymś tu pomyśleć i w ogóle trafić co może być nie tak - nie mając takiego układu na stole przed sobą :(

    ------------------------ [ Dodano po: 2 minutach ]

    ale nasuwa mi się taki pewien pomysł - nie wiem czy dobry ale ....

    czy nie warto byłoby zmienić totalnie szybkości dla doganiania w dół i w górę tzn zastosować dwa timery programowe (u ciebie countery) o różnym czasie i np gdy doganianie ma się zwiększać to robiłbym to szybciej (krótszy czas w ms) a gdy ma się zmniejszać to wolniej (większy czas w ms)

    inaczej mówiąc jak słupek ma się zwiększać to dużo szybciej niż opadać ....

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 maja 2014, o 23:55 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Zwiększyłem stałą dt (teraz już TIME_BASE ;) ) do 60, i czas "dojeżdzania" (zmienna counter) do 35 i jest bardzo fajnie, po prostu za mało uśredniony pomiar był pewnie diody nie nadążały dojechać i wszystko było bardzo chaotyczne, teraz wszystko miga praktycznie w rytm muzyki. Jutro nagram video i wrzucę tutaj, dziś już nie chce bo mnie Moja Luba tłuczkiem ubije ;)

    ------------------------ [ Dodano po: kilkunastu sekundach ]

    Zaraz sprawdzę czy to coś da:)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 maja 2014, o 23:57 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27375
    Lokalizacja: Szczecin
    Pomógł: 1043

    no i jeszcze te operacje jakoś mi się nie podobają:

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    a może zamiast tej całej pętli - po prostu tak?

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 maja 2014, o 00:16 
    Offline
    Użytkownik

    Dołączył(a): 22 sty 2014
    Posty: 1806
    Zbananowany użytkownik

    Pomógł: 168

    Cytuj:
    a może zamiast tej całej pętli - po prostu tak?

    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    z1 = (1<<doganianieL)-1;
    GeSHi


    haha;) dzięki za pokazanie tego sposobu;) wie Pan, ja zabawę z językiem C, mikrokontrolerami i ogólnie elektroniką zacząłem niespełna kilka miesięcy temu i uczę się tych wszystich operacji na bitach i innych myków:) wystarczyło że Pan napisał tą linijkę i mnie już oświeciło:)

    Poprawiło się, teraz już bardzo fajnie wszystko wygląda:) muszę jeszcze tylko pokombinować z czasami żeby idealie to dopracować:)

    ------------------------ [ Dodano po: 11 minutach ]

    Zauważyłem ze w ATtiny13 po przekroczeniu 80% pamięci danych zaczyna już wszystko wariować, wtedy się już pewnie stos odzywa. Mam racje?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 52 ]  Przejdź na stronę 1, 2  Następna strona

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO