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



Teraz jest 30 gru 2024, o 00:45


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 ]
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: 27322
Lokalizacja: Szczecin
Pomógł: 1041

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: 1967
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: 1967
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: 2590
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: 1967
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: 1967
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: 1967
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: 27322
Lokalizacja: Szczecin
Pomógł: 1041

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: 27322
Lokalizacja: Szczecin
Pomógł: 1041

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 ]
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: 27322
Lokalizacja: Szczecin
Pomógł: 1041

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: 27322
Lokalizacja: Szczecin
Pomógł: 1041

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: 27322
Lokalizacja: Szczecin
Pomógł: 1041

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 1 gość


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