sinus wartość

Widzisz posty znalezione dla hasła: sinus wartość





Temat: Dzięki!!!
Za bardzo się tym przejmujesz Basiu. Czy naprawdę takie ważne jest aby pisać
"dobre" wiersze ? Przecież to co z serca, przecież to co z duszy przelane na
papier to nasze, osobiste, bardziej prywatne niż publiczne. Cholerna
akceptacja może nas przecież jeszcze bardziej zgubić (polecam "Próbuję
iść..." Januszka). Pisanie pod publikę mija się z celem. W końcu przecież
stwierdzimy : "to nie jest moje życie, to nie ja". Pisz dla siebie,
pl.hum.poezja jest dodatkiem. Może upgradem do lepszego samopoczucia. Czasem
kręgiem przyjaciół, czasem czasem spędzonym na pół z destrukcją nożną (Doom,
Quake, Sin) lub jezdną (Carmageddon). Każdy inaczej sobie wyobraża byt
pl.hum.poezja, ale jednakowo powinien widzieć siebie i swoją wartość. Ot,
popijam sobie czarno-zieloną english-tea "1001 nocy", a żaden z domowników
nie jest chętny do spożywania tej płynnej substancji. Z tego powodu, nie mam
zamiaru zaprzestać picia tejże herbaty. Ten powód też nie zmusił mnie do jej
kosztowania. Ot, herbata którą lubię, ot poezja którą czytam, ot i wiersze
które piszę.
Pozdrawiam
Mr.Vegetable






Temat: guma

którego autorem jest Tomasz Janisiów


| -136,58 stopnia Celsjusza (albo -136,575 - nigdy nie pamiętam,
| które jest zero Celsjusza, a które punkt potrójny wody).
| Ale to i tak jeszcze mniej prawdopodobne, niż przepowiednie
| starych górali.

Na moj gust zero Celcjusza to 0, a zero bezwzgledne to - 273,15 a punkt
potrojny to 273,16K
Bez urazy


No przecie pisałem, że nie pamiętam, które to z nich. A te moje
liczby są inne, bo pytanie nie było o zero absolutne, tylko o "dwa
razy zimniej". Use the division, Luke, use your division! ;-)


tax:
Kapral do rekrurow:
-Woda wrze w temp 90 stopni celcjusza
Jeden z rekrutow niesmialo:
-Mnie w szkole uczono, ze w 100
-Hmm..Hmmm.. K***a, macie racli szeregowy. 90 stopni to kat prosty.


Którego sinus w warunkach bojowych przyjmuje wartości 1. :-)







Temat: pomiar 100MHz oscyloskopem 20MHz - czy da się ?
[ciap]


Wiem że bezpośrednio się nie da, ale może istnieje jakaś przystawka
albo mieszacz który przesunie częstotliwość ze 100MHz do (1-10)MHz .
Najbardziej interesuje mnie kształt sygnału i wartość amplitudy.


moja rada: zapomnij i kup/pożycz odpowiedni oscyloskop jeśli już upierasz
się że amplitudę najdokładniej zmieżysz oscyloskopem.

pomijająć wszystko inne:
skoro ważny jest kształt to pewnie sinus to nie jest. W takim razie sygnał
zajmuje wraz ze swoimi istotnymi harmonicznymi określone pasmo. Chcesz je
zmieścić w przedział 1-10 MHz?

Andrzej Kamieniecki

P.S.
Jest taki patent w oscyloskopach TPS Tektronixa że za dzielnikiem wejściowym
mieszaczem przesuwają pasmo w górę żeby potem wszystko przepuścić przez
zapewniający izolację transformator. Za nim jest drugi mieszacz i konwersja
w dół. Jak więc widać da się jesli jest to konieczne ale tam cały czas
szerokość pasma jest rzędu 100 MHz.





Temat: SZTUCZNA INTELIGENCJA
czy mial ktos kiedys do czynienia ze sztuczna inteligecja bo potrzebuje
pomocy a dokladniej pewnego prostego programiku

czy ma ktos moze jakies pliki ze zrobionym programem z predykcja
( przewidywaniem kolejnych wartosci funkcji np sinus()uczenie sie fukcji )
potrzebuje to na zaliczenie laborki
prosze o kontakt na priva
pzdr
Lukasz





Temat: konkurs
Bo potrzebuje, bo wiem jak to zrobic, ale nie mam czasu i nastroju na
dlubanie :-/

Chodzi o wyliczenie w _czystym_ xslt sinusa i/lub cosinusa zadanego kata.

Jezeli kat w stopniach - dokladnosc jak liczby pi bedacej parametrem. Jezeli
kat w radianach - dokladnosc jak wartosc kata.

Ktos chetny?

sz.
-- --- -- --- -- ---
http://szomiz.republika.pl/





Temat: straty natężenia


co to jest wartośc skuteczna?


Dla laika: takie napięcie stałe, które wywoła ten sam efekt cieplny w
oporniku zasilanym napięciem zmiennym

http://www.elektronika.qs.pl/podprawa.html#sinus

http://wiem.onet.pl/wiem/008c7f.html





Temat: BCD ze znakiem

Na wstępie: dzięki wszystkim za odpowiedzi.


| Jak zapisać liczbę dziesiętna ujemną w kodzie BCD?

BCD z definicji jest bez znaku. bo z zakresu 0-F jest wykorzystane 0-9
a odrzuconej reszty jest za malo by na tym sie dalo zapisac minusa.

minus mozesz sobie zapisac w oddzielnym bajcie.


Albo jeszcze inaczej: jeśli wartość bezwzględna liczby dziesiętnej jest
z zakresu 8-bitowego (0-255) to wtedy wychodzi, że w jednym z kęsów BCD
mam wolne dwa bity.


btw. po kiego grzyba meczysz sie z BCD? to sie przydaje jedynie do
odczytu
jakichs archaicznych plikow :) cala reszta to margines.


Pytałem bo na klasówce z EMC mogło mi się trafić takie pytanie (np.):
119-127 - wykonaj działanie w systemie binarnym a wynik przedstaw
w hex, oct, bcd.

SiNuS





Temat: czy istnieje jakis sposob...


w PHP zeby ze zmiennej typu
string postaci "matematycznej"
dajmy na to:

$a="sin(2)+3*pow(4,2.7)";

otrzymac zmienna typu double
o wartosci takiej jaka znajduje sie
w cudzyslowach zmiennej typu string.


Oczywiscie, da sie to zrobic...
Co prawda nie chce mi sie teraz myslec, ani wklepywac kodu, ale poczytaj o
regexpach. Kiedy juz to zrobisz, to wyciagaj po kolei odpowiednie funkcje ze
stringu, zabieraj razem z nimi odpowiednie argumenty, potem to wszystko
zbierz w ladna calosc i gotowe, moze nawet wykres uda Ci sie stworzyc ;)

Maciek





Temat: funkcja generujaca sygnal
potrzebuje funkcji generujacej sinus, ktorej argumentami beda:
L - ilo ć próbek, Fp - częstotliwo ć próbkowania sygnału, Fs - częstotliwo ć
generowanego sygnału

generuj(L, Fs, Fp)

czyli np. generuj(512, 120, 44100)

utrworzy tablice 512 wartosci, ktore beda odpowiadaly
probkowaniu sygnalu sinusoidalnego o częstotliwo ci 120 Hz z częstotliwoscią
44100 Hz

daniel





Temat: SZTUCZNA INTELIGENCJA

(lukasz) says...

czy mial ktos kiedys do czynienia ze sztuczna inteligecja bo potrzebuje
pomocy a dokladniej pewnego prostego programiku

czy ma ktos moze jakies pliki ze zrobionym programem z predykcja
( przewidywaniem kolejnych wartosci funkcji np sinus()uczenie sie fukcji )


typowe dosyc zastosowanie sieci neuronowych. Zobacz sobie ksiazke Timothy
Mastersa o SN (nie pamietam dokladnego tytulu, cos o SN i C++) -- tam sa
kody zrodlowe.





Temat: wysokość dźwięku


cześć

w jaki sposób używając asm mogę odczytać wartości (wysokości)
dźwięku króry w danej chwili jest odtwarzany przez karte muzyczną ?


A jak ten dzwiek generujesz ? Tzn. czy jest to sampel, czy generator MIDI ?
I co to za dzwiek ? Jakis jednostajny, wygenerowany przez Ciebie, np. sinus
?
Tu nie ma problemu. Czy moze chcesz zbudowac przesuwnik widma do
tego co leci np. z mikrofonu ? No, to tu bez FFT to sie chyba nie
obejdzie...


czy trzeba używać DMA ?


Jesli to sampel, to mozna i tak, i to chyba najlepszy pomysl.
Mozesz tez przesamplowac sobie odtwarzane dane od
razu w pamieci. A poza tym to nie przez samo DMA, ale
przez zmiane czestotliwosci zegara _wyzwalajacego_
cykle DMA. Samkod obslugi DMA sie nie zmieni.


(jeżeli tak to jak?)


Jak w ogole, czy jak szybciej ? Jesli to pierwsze, to po prostu
poszukaj sobie w bardzo szeroko rozpowszechnionej dokumentacji.
Pierwsze z brzegu: Ralf Brown's Interrupt List (opis portow),
FAQsys (mnostwo przykladow), Programmer's Heaven, itd.
Jesli "jak szybciej", to musisz sobie popatrzyc do dokumentacji
karty - SB robia to inaczej, GUS-y inaczej, etc.

    Pozdrawiam
    Piotr Wyderski





Temat: Trudno to ujac: odczyt aktualnie _odswiezanego_ piksla na ekranie.


| [...]

Mialem kiedys podobny problem, ale ze jako nie zbudowalem nigdy tego
piora wiec nic mi z tego nie wyszlo. Ale wpadlem na taki pomysl. Jakby
zmierzyc czas odswiezania ekranu, a nastepnie podzielic go przez ilosc
pikseli na tym ekranie, to moznaby okreslic miejsce odswiezania w
momencie dotarcia impulsu z piora swietlnego na przyklad przez port
szeregowy. Niestety mysle ze takie rozwiazanie bylobu bardzo niedokladne


Tez mi sie tak wydaje. Przy czym w momencie dotarcia impulsu
bede chyba sprawdzal wartosc licznika cyklu poziomego i pionoweg.
(pisalem wyzej)


lub wcale nie dzialalo:(Jezeli by ci cos wyszlo to napisz prosze na
priva. Schemat twego piora rowniez mile widziany:)


Ok. Jak tylko bedzie gotowe...

SiNuS





Temat: sin(x)
Czy mozna wpisac np. w textbox wzor jakiejs funkcji, np. sin(x) i potem
wykorzystac ten wzor do obliczen,
czyli obliczyc np. wartosc sin(x) dla zadanego x.

Jest to latwe w VBA (Excell), a jak to zrobic w VB6?
W.





Temat: Wlasna funkcja SIN, COS, etc.
Koledzy!!!!
Jak uczyc kogos, to prawidlowo. Zgodnie z zasadami programowania powinno byc
tak:

x, n - dane do procedury.
....
a := x;
sin := x;
for i := 0 to n do
begin
    a = - a * 0.5* x * x / (i * (2.0 * i + 1.0);
    sin = sin + a;
end
.....

POPRAWNOSC ALGORYTMU I SZYBKOSC OBLICZEN sie tu klaniaja.
Dla calkowitej czystosci zasad nalezaloby uzyc petli while i kontrolowac
dokladnosc wyniku. Ale to moze byc za trudne dla poczatkujacych
programistow.

Pozdrawiam,
Grzegorz


Hi,

| Pytanie jak w temacie. Znalazlem sobie w jednej
| z ksiazek kilka fajnych wzorkow:

| y=sin(x)

|  y=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!...

To zwykły rozkład funkcji sinus na szereg potęgowy Taylora według
wzoru sin x = sum ( ( (-1)^n * x^(2n+1) ) / (2n+1)! ) dla n od
zera do nieskończoności.

| mam takich wzorkow jeszcze kilka, ale nie potrafie

| poprawna, ale wynik byl zly. Nie wiem wiec czy ja
| popelnilem blad, czy moze wzor jest niepoprawny.

function sin_taylor(const x : Extended; const n : LongInt) : Extended;
var r : Extended;
   i : LongInt;
begin
r:=0;
for i:=0 to n do r:=r+((dodatni(i)*potega(x,2*n+1))/(silnia(2*n+1));
Result:=r;
end;

gdzie potega i silnia to funkcje obliczające obie te wartości,
a dodatni to prosta funkcja zwracająca -1 dla nieparzystych i
+1 dla parzystych i.

n reguluje dokładność obliczeń.

Nie testowałem, ale powinno działać. Tego typu funkcje są silnie
zbieżne i już dla n rzędu 20 powinny dawać całkiem niezłe rezultaty.

--
Pozdrowienia,
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół  |  http://friko.onet.pl/ka/lizard/     |
|                 |  WinNT FAQ: http://nt.faq.net.pl/    |
. JassyBlank - wygaszacz monitora DPMS dla Windows NT! ./






Temat: Szybki sinus - naiwne pytania ;)


No to teraz pytania:
1) Czy ktoś zna inny, lepszy sposób rozwiązania problemu?


A co chcesz osiągnąć. Tj. do  czego ci ten sisnus jest potrzebny. Często
dobrym wyjściem jest liczenie przeskalowanego sinusa dla argumentów
dyskretnych i posługiwanie się tylko dyskretnymi wartościami
częstotliwiości. (np. dla potrzeb FFT to całkowicie wystarcza). Nie trzeba
wtedy robić żadnej interpolacji. I tak przecież dźwiek który przetwarzasz
jest reprezentowany przez ciąg dyskretnych próbek o dyskretnym zbiorze
możliwych wartości.
Jeśli np masz częstotliwość próbkowania 32768 próbek/s i wystarczą ci tylko
częstotliwości odpowiadające całkowitej liczbie hertzów, to wystarczy ci
tablica 8193 wartości sin odpowiadających równomiernemu podziałowi odcinka
<0, pi/4(policzenie dla kazdego innegbo zakresu jest trywialne).

Przy robieniu tablicy uważaj na jedno: nigdy nie używaj tablicy większej niż
cache 2-poziomu w twoim procesorze (a w przypadku procesorów Intela a nie
AMD lub VIA to nawet nie wychiodź poza 3/4-7/8 tej wielkości). Jeśli chcesz
by twój kod działał wydajnie na wszystkim włącznie z Celeronem i Duronem to
nie przekrocz wielkości 96KB (pamiętaj, że double ma 8 bajtów a float 4).

Jakbyś chciał robić kod optymalizwoany dla konkretnego procesora, to
dla różnych procesorów te wielkości są pi*dzwi następujace:
Celeron i Duron -- 96KB
Pentium 4 'Willamete' (do 2GHz), Celeron Mobile, Celeron od 1 do 1.2GHz --
192-216KB
Athlon 'T-Bird' i Athlon XP nie-'Barton' -- 256-288KB
Pentium 4 'Northwood' (od 1.8A w górę), Athlon 'classic' -- 384-448KB
Athlon XP 'Braton' i Athlon 64 'Newcastle' -- 512-544KB
Pentium 4 'Prescott' -- 768-896KB
Athlon 64 'Clawhammer' i Athon 64FX i Opteron -- 1024-1056KB

pzdr





Temat: Pytanie w sprawie wpisywania elementow w macierz(tablice)

"Swiezy"  madrze bardzo bardzo poradzil :
/ciach/

bo...wartosci pobierane z tych pol tekstwych sa traktowane jako string a
nie number, wiec nastepuje dodanie lancuchow znakow: "2"+"0"+"7" = 207;


to wlasnie zauwazylem;)

Wielkie dzieki;)

i jeszcze jedno... jeden z elementow tego dodawania o ktorym byla mowa
wczesniej bedzie wyliczany z czegos takiego:

a0=kat w stopniach; <-- wczytywany z input text
a=(a0*180)/Math.PI;   <--dziala ok./przeliczanie na radiany/
sin1=Math.sin(a);

jezeli a0 jest mniejsze lub rowne 180stopni wszystko jest ok..
ale jak a0 przyjmie wartosci powyzej 181 stopni nagle wyliczony sinus
przyjmuje wartosci ponad 1 :/
i nie wiem jak to obejsc..
bo dziwnie to wyglada z petlami :if (kat mniejszy od 180)  i t d :
wyglada to wtedy tak (dla tego liczy dobrze ale tylko dla zakresu 0-360
stopni :/

on (release)
    {
          if (teta_1 < 180)
             {
              t=(teta_1/180)*Math.PI;
              t1=(t*180)/Math.PI;   //sprawdzenie czy dobrze mi przeliczyl
katy na radiany
             sin_1=Math.sin(t);
              }
      else
            {
              teta_1_2=teta_1-180;
              t=(teta_1_2/180)*Math.PI;
              t1=(t*180)/Math.PI;
             sin_1=-Math.sin(t);
             }}

co zrobic zeby on sie tak dziwnie nie zachowywal??

z gory dzieki za pomoc
Pozdrawiam
Maciej.D





Temat: predkosc sin cos


witka!

tak się zastanawiam jak to jest z prędkością obliczeń funkcji
trygonometrycznych w C. dawniej to wiadaomo, nie każdy miał koprocesor,
czasem się robiło emulację, albo wszystko stałoprzecinkowe pomnożone x 1000
albo coś podobnego, ładowało się to do tablicy. ja w moim programie
odruchowo załadowałem zmiennoprzecinkowe wartości do tablicy. ale co jak
musze mieć precyzję do 1 tysięcznej stopnia albo i więcej? czy dostęp do
tabicy o 360000 (albo i więcej) elementach nie będzie spowolniony? a może na
dzisiejszych komputerach (mam pIII 500MHz) funkcje sin cos itp. wykonują się
dość sybko?

---------------------
pozdrawiam
    Książę Vegeta
www.landrynka.v1.pl
strony.landrynka.v1.pl/kajtek


 Nawet bardzo szybko. Dzisiaj obliczenie wartosci tych funkcji dla 10^6 liczb
nie stanowi problemu aby uciekac sie do "recznego" sposobu ich obliczania.
 Tworcy bibliotek zadbali o to aby nie zaprzatac tym sobie glowy. Tym bardziej,

ze w "normalnym," programie kazda operacja wejscie/wyjscie zabiera o wiele
wiecej
czasu niz czas obliczenia wartosci funkcji trygonometrycznej dla danego
argumentu.
 Oczywiscie rodzaj jezyka jest tu obojetny.
 Jezeli chodzi o wyniki z duza precyzja to tez nie stanowi to problemu o ile
hardware
jest do tego przygotowany (dla x86 spokojnie mozesz miec 15 miejsc po
przecinku).
Jezeli chcesz jeszcze wiekszej precyzji to aby nie stracic na szybkosci musisz
miec
maszyne 64 bitowa. Alternatywa jest programowa emulacja i trzeba sie liczyc ze
spadkiem predkosci nawet o 50 %.

 Pozdrawiam,
Marek





Temat: PASCAL - 3 pytania


A moglbys go podac (tzn jak zakodowany?), albo jakis adres gdzie to jest.


Oto przykladowy schemat:

x:=0; y:=0;        
[..]
poczatek petli
[...]
        if bajt<=192 then
          begin
            punkt(x,y,bajt);
            inc(x);
            if x=640 then begin x:=0; inc(y); end;
          end;
        if bajt192 then
          begin
            m:=bajt-192;
            for n:=0 to m-1 do
              begin
                punkt(x,y,bajt_nastepny);
                inc(x);
                if x=640 then begin x:=0; inc(y); end;
              end;
          end;
[...]
koniec petli
[...]

Opis do powyzszego:
Pobrany bajt moze miec wartosc "<=" od 192 badz "" od 192

Przypadek  1: bajt<=192
W takim przypadku nasz piksel nie jest zakodowany i po prostu go
wyswietlamy.

Przypadek  2: bajt192
W tym wypadku piksel jest zakodowany. Piksel kodowany
jest przy pomocy dwoch  bajtow. Pierwszy z nich
(bajt[indeks]192) stanowi informacje ile razy dany piksel
ma byc wyswietlony. Te wiadomosc "ile razy" obliczamy
odejmujac 192 od wartosci wczytanego bajtu. Wychodzi
nam pewna liczba (w przykladzie jako m). Nastepne
co musimy zrobic to wczytac nastepny piksel (bajt)
i wyswietlic go m-razy.

Podsumowanie:
-Zalety pcx:
--przy pomocy dwoch bajtow mozemy zapisac 63 punkty (maksymalnie)
--przy w/w kompresji mozemy wczytac dosc szybko "obrazek"
  (ale czy przy czasie rzedu ms dla rawdata odgrywa to jakas role:)
--w wiekszosci wypadkow pcx zajmuje mniej niz bmp
-Wady pcx:
--piksel majacy wartosc powyzej 192 (czyli numer 192 z palety)
  wystepujacy nawet tylko raz pod rzad
  musi byc zakodowany. (wtedy liczba m dla takiego piksla =1)
  dlatego "rysujac" cos warto brac to pod uwage i dobrac tak palete
  (albo tak poustawiac kolory  w niej) aby kolory  najczesciej uzywane
  nie mialy indeksow w palecie wiekszych od 192.

SiNuS





Temat: Kosmoezja
Użytkownik "Tomaszek" :


Ależ ja przeczytałem! Po prostu - Twoje śledztwo
pozostawia tomaszkobojetnym; jakieś takie
nieprzekonujące... :)


ZADANIE: obliczyc orientacyjnie ile czasu Wenus jest widoczna (w najlepszych
warunkach) od momentu zajscia tarczy słonecznej za horyzont (nastanie
ciemności) do momentu zajscia za horyzont planety Wenus,

korzystam ze starej encyklopedii:
odległość Wenus Słońce = 108 mln.km
odległość Ziemia Słońce = 149,6 mln km
i wszystkie trzy leża w jednej płaszczyźnie
nachylenie płaszczyzny równika Ziemi względem ekliptyki 23st
szerokośc geograficzna Polski 54st

1. pierwsze przybliżenie
alfa = największa odległość kątowa Wenus względem Słońca (widzianych z
Ziemi)
tg(alfa) = 108/149,6
alfa  ~ 35st

tak by było gdybysmy obserwowali z równika i jednocześnie płaszczyzna
równika leżałaby w płaszczyxnie orbit planet

2. drugie przybliżenie, uwzględniamy szerokośc geograficzną 54st
(do przeliczeń mieszam miary kątowe i liniowe co dla małych kątów jest do
zniesienia;-)

beta = maksymalna wysokość kątowa Wenus nad hotyzontem w momencie pełnego
zachodu Słońca

beta ~ 35st sin(90-54st)

3. trzecie przybliżenie, uwzględniam sezonowe zmiany nachylenia płaszczyzny
równika względem płaszczyzny orbit +/- 23st

lato:     beta ~ 35st sin(90-54st -23st) ~ 8st
zima:    beta ~ 35st sin(90-54st+23st) ~ 30st
jest to maksymalny kąt wzniesienia się Wenus ponad horyzont (pod nieobecność
słońca)

obrót Słońca o 15st trwa dokładnie godzinę

ODPOWIEDŹ:
w NAJLEPSZYCH WARUNKACH można obserwować Wenus przez czas od  pół godziny do
2 godzin przed wschodem (lub po zachodzie słońca, lecz nigdy i tu i tu w tym
samym dniu)

wnioski: pamietając że jasność Wenus waha się od zera do pełnej wielkości
(kilka razy w roku ziemskim) i
wysokośc planety nad horyzontem zmienia sie nie przekraczając obliczonych
wartośći oraz mając na uwadze inne ograniczenia obserwacji można uznać
obserwacje Wenus dokonywane nieuzbrojonym okiem, w czasie np. spaceru, za
rzadkość ;-)))

niniejszym wnoszę o uniewinnienie Syriusza
klang klang

r

ps
obliczenia mają charakter poglądowy !





Temat: okręgi, łuki - jednym słowem "pie chart"


wszystko dlatego ze sinus i cosinus jako prametry pobieraja wartosci w
radianach.
Dlatego  tez 0<= i<= 2*PI
dzielac 2*PI na odpowiednie kawalki jestes w stanie wyliczyc kazda
potrzebna
ci wartosc.


 nie wiem czy dobrze zrozumialem ale zamiane na radiany robi sie chyba tak:
radian = Math.PI/180 * degree;

co do reszty kodu to zrobilem tak:

--- to jest na  klatce ---

[as]
// zamiana danych z bazy na postac numeryczna
votes1 = Number (votes1);
votes2 = Number (votes2);
votes3 = Number (votes3);
// Obliczenie całkowitej liczby głosów
total = votes1 + votes2 + votes3;
// Liczenie kata dla pie charta
votesAng1 = votes1 * 360 / total;
votesAng2 = votes2 * 360 / total;
votesAng3 = votes3 * 360 / total;
[/as]

--- to mam na przycisku ---

[as]
on (release) {
 R = 100;
 dt = 0.05;
 di = 0.05;
 createEmptyMovieClip("okrag", 1);
 okrag._x = 0;
 okrag._y = 0;
 okrag.lineStyle(4, 0xFF0000, 100);
 function draw() {
  while (whenToStop) {
   if (i == 0) {
    okrag.moveTo(x, y);
   }
   x = R*Math.sin(i);
   y = R*Math.cos(i);
   okrag.lineTo(x, y);
   i += di;
   if (ipie_start+pie_end) {
    okrag.lineTo(0, 0);
    whenToStop = false;
   }
  }
 }
 pie_start = Math.PI/180*0;
 pie_end = Math.PI/180*votesAng1;
 i = pie_start;
 okrag.beginFill(0xFF0000);
 draw(0xFF0000);
 okrag.endFill();
 pie_start = pie_end;
 whenToStop = true;

 pie_end = pie_end + Math.PI/180*votesAng2;
 i = pie_start;
 okrag.beginFill(0x00FF00);
 draw();
 okrag.endFill();
 pie_start = pie_end;
 whenToStop = true;

 pie_end = pie_end + Math.PI/180*votesAng3;
 i = pie_start;
 okrag.beginFill(0x0000FF);
 draw();
 okrag.endFill();

}


[/as]

wszystko dziala dobrze jak nie ma wrzuconego wypelnienia, z wypelnieniem sie
wszystko sypie. Wlasciwie bez wypelnienia tez nie jest chyba dobrze rysowane
(dziwna podwojna gruba linia w jednym miejscu), ale przynajmniej wyglada na
dobrze

jak probowalem podawac kolor wypelnienia jako parametr funkcji (wstawilem
beginFill() i endFill() do wewnatrz) to wypelnialo, ale byly jakies
makabryczne odchyly

nie wiem czy nie zdecydowac sie na sposob banalnie prosty - rysowac
dynamicznie trojkaty, a na nie nalozyc okragla maske zeby wygladalo jak pie
:P





Temat: Pompa CO


UPSy na wyjściu mają aproksymację schodkową sinusoidy, co w zasadzie jest
_sinusoidą_


A ja zawsze myslalem, ze aproksymuje sie przebiegiem PWM [*], a nie
jakimis tam schodkami :-(


Trapez robi się prosto: ładując i rozładowując kondensator,jednak w


Nie mowimy o trapezie, jako o takim tam sobie sygnale, tylko o dosc
duzej mocy. Podstawowy problem w tej sytuacji to nie jak uzyskac
zadany ksztalt, ale jak przy tym zminimalizowac straty energii.
Dlatego element kluczujacy pracuje zasadniczo w dwoch stanach -
wlaczony i wylaczony, kiedy to wydziela sie w nim najmniej energii.
Przejscie z jednego stanu do drugiego wiaze sie ze stratami mocy i
dlatego powinno sie ono dokonywac maksymalnie szybko i nie za czesto.
W UPS-ie z prostokatem na wyjsciu przelaczanie dokonuje sie
najrzadziej. Aby wygenerowac sinus stosuje sie przebieg PWM wymagajacy
bardzo wielu przelaczen. Pociaga to rozne problemy, nie tylko straty
mocy. Dlatego UPS z sinusem bedzie drozszy.

[*] PWM - modulacja szerokosci impulsow - zmieniajac szerokosc
impulsow i/lub odstepy pomiedzy nimi, zmieniamy wartosc srednia
napiecia. Przykladowo, aby wygenerowac narastajace napiecie, stopniowo
zwiekszamy wspolczynnik wypelnienia (czyli proporcje czasu zalaczenia
do calosci). W ten sposob dysponujac tylko dwoma stanami napiecia
uzyskujemy dowolne napiecie chwilowe, czyli np. dowolny punkt
sinusoidy.

To tak tytulem wyjasnienia i uzupelnienia Twojej wypowiedzi, bo
jestesmy na pl.misc.budowanie i nie wszyscy moga tu znac zasade
dzialania UPS-a. Moze sie komus wydawac, ze wlasciwie co to za roznica
zrobic prostokat, trapez czy sinus?


dzisiejszych czasach nie jest stosowany - łatwiej (taniej) dać prosty układ
cyfrowy który obsłuży cały UPS niż bawić się analogiem.
Tak więc UPS _nadaje_ się do silników oraz innych urządzeń
transformatorowych.
Jedynym problemem może być moment przełączenia UPS-a który nie jest
OnLine-owy.
Powyższe jednak nie zmienia faktu że UPS nie pociągnie pieca i pomp. Więc


Nawet taki 1000 VA choc piec i pompa razem biora np. 150 W? Inna
sprawa, jak dlugo... Podlaczenie zewnetrznego akumulatora zwykle nie
jest trywialne.
Proponuje od razu kupic autonomiczny inwerter (to "cos" w UPS-ie co
zamienia 12 V= na 230 V~) i podlaczyc np. akumulator samochodowy.
Takie invertery robia jakies firemki w Polsce po nieduzych cenach.
Przy okazji mozna popytac producenta o mozliwosc podlaczenia silnika.

gr





Temat: 2 urzadzenia w 1 aux-in

aku przez diode zeby byl ladowany a nie rozladowywal sie w
kierunku
zasilacza. tutaj pomyslalem podobnie - dwie diody na wejsciach
czyli sygnal idzie jedynie tam gdzie trzeba. widac, pomyslalem
zle, chociaz nie jestem pewien czy rozumiem dlaczego.


Przy prądzie stałym dioda separująca to dobry pomysł - prąd płynie od
wyższego potencjału do niższego, tylko w kierunku przewodzenia diody.
Przy sygnale akustycznym masz napięcie zmienne, więc przez diodę popłyną
tylko dodatnie części sygnału (gdyby to był sinus, to tylko połówki sinusa)
a to oznacza bardzo duże zniekształcenia nieliniowe - charkot zamiast
dźwięku.
Jeśli na wyjściu źródła sygnału albo na wejściu AUX jest szeregowy
kondensator, to sygnał zupełnie nie będzie przechodzić - w najgłośniejszych
momentach kondensator naładuje się przez diodę a potem dioda będzie
spolaryzowana zaporowo - odetnie sygnał.


| w szereg  z kazdym zrodlem sygnalu opornik (1k-10k),
| oczywiscie tylko w "sygnal" a  nie w mase. Stworzysz
| najprosszy sumator, sila sygnalu z kazdego zrodla  troche
| spadnie, ale bedzie to bezpieczne i proste.
a nie jest tak, ze jesli jedno zrodlo jest duzo slabsze, to
to silniejsze "wpycha" elektrony rowniez w to slabsze
i je przeciaza?


Każde źródło sygnału ma jakąś swoją oporność wewnętrzną, czasem małą.
Jeśli połączysz źródła bezpośrednio, to będą się wzajamnie zwierać - to o
mniejszej oporności mocniej stłumi sygnał ze źródła o większej oporności.
Mogą się też pojawić zniekształcenia.
Jeśli szeregowo z obydwoma źródłami dasz jednakowe oporniki, sporo większe
od oporności wyjściowej źródeł, to sygnał z każdego źródła zmniejszy się
dwukrotnie (jeśli oporność wejściowa następnego stopnia jest bardzo duża)
Szeregowe oporniki po kilka kiloomów to dobra wartość w większości
przypadków.
Jeśli sygnały z tych twoich źródeł bardzo się różnią, to w szereg z
mocniejszym sygnałem należy dać większy a szeregowo ze słabzym mniejszy
opornik (nie mniej, niż 1 kom)
Można użyć potencjometru liniowego 5-10 kom (jeśli masz sygnały stereo to
podwójny sprzężony) i źródła sygnałów podłączyć do skrajnych końcówek a
wyjście brać z suwaka.
Kręcąc potencjometrem można płynnie przechodzić z jednego sygnału na drugi
albo na stałe dobrać proporcje.
Wmak





Temat: interpolacja
Cześć,

Mam zbiór N punktów na płaszczyźnie, które próbuję zinterpolować krzywą.
Próbowałem już kilku sposobów ale wszystkie mają jakieś wady:

- wielomiany 3-go stopnia - w zasadzie działają ale uzyskany obrys ma
                            nieciągłą pochodną (ma "kanty" w miejsc
                            łączenia wielomianów) co w zasadzie
                            uniemożliwia dalszą matematyczną obróbkę.

   N-1
- sum(A(n)*sin(n)/n) - niby interpoluje (krzywa przechodzi przez
   n=0                 wszystkie punkty) ale między nimi dzieją się
                       cuda (obrys jest gładki ale bardzo pofalowany)

- wielomian (N-1)-go stopnia - być może mogłoby to działać ale
                               napotkałem problemy z implementacją:

Mam wektor N punktów. Przypisuję im kolejne wartości parametru n (0, 1,
2,...N-1). Tworzę macierz:

0^0     0^1     0^2     ... 0^(N-1)
1^0     1^1     1^2     ... 1^(N-1)         = A
......................................
(N-1)^0 (N-1)^1 (N-1)^2 ... (N-1)^(N-1)

i rozwiązuję równanie:
A * (wektor współczynników) = wektor współrzędnych punktów

Problem w tym, że elementy macierzy przyjmują bardzo duże wartości nie
mieszczące się w żadnym sensownym sposobie kodowania liczb (double nie
wystarcza). Próbowałem zmieniać parametr nie od 0 do N-1 ale powiedzmy
od 0.9 do 1.1 - nadal to samo. Już kilkadziesiąt punktów wystarczy aby
wyjechać poza zakres.

Czy macie pomysł jak przebudować to równanie aby było nieco łatwiejsze
do implementacji?
Może użyć innego algorytmu interpolacji (jakiego)?

Pozdrawiam,





Temat: Dzięki!!!
Witaj!
Pisać dla siebie,
owszem to najwspanialsze. Jeśli jednak kiepsko bywa z prawdziwą namiętnością
a powodem jest po prostu życiowa stabilizacja, która aż tak zła przecież nie
jest i która nie jednemu życie ratuje, to łapiemy  choćby namiastkę czegoś,
co nas przymusić może do chociażby  substytutu tworzenia.
Nie wartościuję i nie nazywam, niewiem nawet, czy to jeszcze prawdziwe,ale
przecież co, jak nie pisanie oczyszcza i wciela od nowa w życie - poetę(?)

Dziękuję.
Basia


Za bardzo się tym przejmujesz Basiu. Czy naprawdę takie ważne jest aby
pisać
"dobre" wiersze ? Przecież to co z serca, przecież to co z duszy przelane
na
papier to nasze, osobiste, bardziej prywatne niż publiczne. Cholerna
akceptacja może nas przecież jeszcze bardziej zgubić (polecam "Próbuję
iść..." Januszka). Pisanie pod publikę mija się z celem. W końcu przecież
stwierdzimy : "to nie jest moje życie, to nie ja". Pisz dla siebie,
pl.hum.poezja jest dodatkiem. Może upgradem do lepszego samopoczucia.
Czasem
kręgiem przyjaciół, czasem czasem spędzonym na pół z destrukcją nożną
(Doom,
Quake, Sin) lub jezdną (Carmageddon). Każdy inaczej sobie wyobraża byt
pl.hum.poezja, ale jednakowo powinien widzieć siebie i swoją wartość. Ot,
popijam sobie czarno-zieloną english-tea "1001 nocy", a żaden z domowników
nie jest chętny do spożywania tej płynnej substancji. Z tego powodu, nie
mam
zamiaru zaprzestać picia tejże herbaty. Ten powód też nie zmusił mnie do
jej
kosztowania. Ot, herbata którą lubię, ot poezja którą czytam, ot i wiersze
które piszę.
Pozdrawiam
Mr.Vegetable






Temat: Pytania z Energoelektroniki
polecam ci lekture "Poradnika inzyniera energoelektronika" lub tez Tunia
Winiarski "Energoelektronika", tych samych autorow "Energoelektronika w
pytaniach i odpowiedziach" znajdziesz tam odpowiedzi na wszystkie nurtujace
cie pytania z tej dziedziny


Mam pytania na ktore brakuje mi odpowiedzi ..moze znasz odpowiedz na jedno
to daj mi znac
Wielkie Dzieki za pomoc
10 .Jakie są przyczyny strat mocy w łącznikach w pełni wyłączalnych
 charakterystyka strat mocy podczas komutacji )
18 . Charakterystyka ogólna przekształtników DC/AC
20 . Jaki jest podstawowy cel stosowania techniki łączników rezonansowych
30 . Jaki jest cel stosowania filtru wyższych harmonicznych  na wejściu
prostownika nie sterowanego sześciopulsowego
40 . Jak indukcyjność źródła zasilającego wpływa na wartość kąta komutacji
występującego przy pracy prostownika tyrystorowego sterowanego
sześciopulsowego
50 . Jaki jest mechanizm powstawania przetężeń prądowych przy  włączaniu
łącznika tyrystorowego w obwodzie z obciążeniem RL ( z jakim kątem
załączania zależy włączać obciążenie RL )
58 . Podać i opisać przykłady zastosowań tyrystorowych sterowników prądu
przemiennego
60 . Opisać działanie jednofazowego cyklokonwertera tyrystorowego
sześciopulsowego
70 . Opisać działanie i podstawowe własności przekształtnika DC/DC
mostkowego o napięciu wyjściowym jednobiegunowym przy pracy z dodatnim
napięciem i ujemnym  prądem wyjściowym ( 4 ćwiartka układu współrzędnych )
80 . Opisać działanie i podstawowe własności trójfazowego falownika
napięcia
z modulacją sinus PWM przy pracy falownikowej






Temat: scroll w trybie textowym


no wlasnie... Pewnie trzeba co klatke zmieniac fonty w pamieci, ale jak to
wykonac? a moze jest jakis inny sposob?


W BAjtku byl kiedys cykl artykulow o programowaniu VGA. Miedzy innymi
zawarty byl tam program, ktory zdaje sie "krecil ekranem". Dolaczam kod pod
koniec listu. Zacytuje autora (starego dobrego Borka zreszta):
"W trybie tekstowym tez mozna robic rzeczy, o ktorych sie niejednemu
uzytkownikowi (ba, niejednemu programiscie) nie snilo. Mozna na przyklad
robic plynny scrolling - i to w obu kierunkach. Jak widac nie jest to zbyt

potem wymysli cos nowego."

(Kod w Pascalu, sam go nie lubie, ale chyba sobie zamienisz jakos, poza tym
jak beda bledy to nie bij za mocno)

uses crt;

var
    i: integer;

begin
    for i:=0 to 63 do
        write('To jest w trybie tekstowym!!!');
    i:=0;
    repeat
{    Ten kawalek odpowiada za przesuwanie w pionie.    }
        port[$3D4]:=8;
        port[$3D5]:=8+round(7*sin(pi*i/32));
{    Ten kawalek odpowiada za przesuwanie w poziomie.    }
        if port[$3DA]=0 then;   {przyp. moj - ??? tak jest w oryginale, ale
ja tego nie qmam, moze tu jest blad}
        port[$3C0]:=$33;
        port[$3C0]:=round(4+3*cos(pi*i/32));
{ A tu jak zwykle czekamy. } {przyp. moj - na powrot ramki ;-))))}
        repeat until (port[$03DA] and 8)=0;
        repeat until (port[$03DA] and 8)=8;
        inc(i);
    until keypressed;
{A tu robimy sobie porzadek - mozna tez wpisac
do uzywanych rejestrow ich wartosci poczatkowe.}
    asm
        mov ax,03h
        int 10h
    end;
end.





Temat: Prostokat w eterze - teoria


   Podczas trwania kolejnego nudnego dnia mego zycia
przypomnial mi sie pewien problem nad ktorym sie kiedys
zastanawialem z kumplami w knajpie i nie zostal rozwiazany.


Bo knajpa nie do tego służy :-)

Zalozmy, ze mamy sygnal TTL w ktorym zakodowana jest cyfrowa
informacja (np. sygnal z RS232 po konwersji na TTL) i ze chcemy
go wyslac radyjkiem do kolegi. "1'ce" podpinamy np. 200 Hz, a dla
"0'a" powiedzmy 400. Bierzemy sobie nosna np. 100 MHz i modulujemy
ja w/w sygnalami otrzymujac sygnal zmodulowany FM - i w eter.
Po co ja to pisze, przeciez nie chodzi mi o sposob modulacji ;-o


Sposób modulacji polegający na kluczowaniu (przełączaniu) dwóch
częstotliwości nazywa się FSK (Frequency Shift Keying), a jeśli sygnał
FSK z kluczowanymi częstotliwościami akustycznymi podamy na tor m.cz.
radiostacji, to mamy do czynienia z AFSK (Audio F.S.K.).

Nasz sygnal zajmuje w eterze jakies pasmo, (dla FM nawet nieskonczone,
ale robimy ciach) ktore bedzie tym wieksze im na wieksza predkosc
transmisji sie zdecydujemy.


I im większą dewiację zastosujemy.

W jaki sposob mozna zminimalizowac szerokosc zajmowanego pasma
zakladajac predkosc transmisji = const


Minimalizując dewiację, odstęp częstotliwości i ich wartość.

Zalozmy, ze owa nosna modulujemy w taki dziwny sposob:
jak mamy "1" to ja emitujemy (nosna), a przy "0" zarzadamy cisze
w eterze (oczywiscie na naszej czestotliwosci). Wiec albo nadajemy
sama nosna ("1") albo nic ("0"). Powstaje wiec taka dziwna modulacja AM,


Dlaczego dziwna? AM o głebokości modulacji 100%.

dla ktorej szerokosc pasma mozna policzyc.
Jak wyglada widmo ? Albo mamy prazek na ch-ce widmowej, albo go nie ma.


Widmo jest paskudne. Widmo prostokąta (dość szerokie jak wiadomo)

(przedpisca? :-) nie ma prążków - są pasma.

Ale zgodnie z prawem kogos_tam sygnal nie zajmujacy pasma nie moze niesc
zadnej informacji i nie posiada zadnej energii.


j.w. - nie prążki a pasma.

Gdyby nie teoria (wzorek na transformacje z dziedziny czasu w czestotliwosc)
to wyobrazalbym sobie, ze taka nosna przy jej "wylaczaniu" znika z eteru
bezbolesnie (znika prazek na ch-ce widmowej) tym bardziej gdy w/w znikniecie
zrobi sie w odpowiednim "momencie" sinusa ;-)


Niestety nie znika - zgodnie z tą transformacją pojawia się zakłócenie
"w okolicy" nośnej.

Jarek Andrzejewski





Temat: Cewka na rdzeniu toroidalnym


Tak, ten 1A to raczej max. Cewka do zasilacza impulsowego.


Jak ten 1A wyliczyles? Wartosc szczytowa pradu w cewce moze byc nawet
wielokrotnie wieksza od pradu pobieranego (zwlaszcza, jesli wejdziesz
w nasycenie, chle, chle... ).


Kiedy to wszystko pisalem, nie mialem czym tego zmierzyc, ale okazalo
sie, ze kolega ma miernik.
Jak pisalem, sa tam 2 rdzenie (srednica zewn x wewn x wysokosc [mm]):
mniejszy: 17x11x5


Dalej piszesz, ze ma AL = 220000/(59^2) = 63 [nH/zw^2]

Najbardziej zblizony jaki znalazlem, to:
TN17/9.8/4.4 (Philips)
core factor C1 = 2.55/mm
effective area Ae = 15.8 mm^2

Policzmy [u = litera 'mi']:
AL = u0*ur/C1
ur = C1*AL/u0
ur = 2.55/mm * 63 nH/zw^2 / (4*PI * 10E-7 H/m)
ur ~= 128

Czyli prawdopodobnie jest to odpowiednik ferrytu F-82 (ui=80),
ewentualnie u Philipsa (http://www.acm.components.philips.com/)
bedzie to ferryt 4F1
Jego indukcja nasycenia to ok. 350mT. Zresztą inne ferryty mają
podobną.


wiekszy: 29x13x12


Troche zblizony TN29/19/15 ma:
core factor C1 = 0.98/mm
effective area Ae = 73.9mm^2

Moze jednak lepiej to policzyc:
C1 = sredni_obwod/przekroj = le/Ae

Indukcje mozesz wyliczyc np. z wzoru:
B = L * I / (N * Ae)

Dalej policz sam. Sprawdz tez czy ja sie gdzies nie pomylilem.


Ponawijalem sobie i co sie okazalo:
220uH na wiekszym rdzeniu osiagam przy 59 zwojach, na mniejszym przy
11. Na wyczucie nalezaloby uzyc tego wiekszego, ale czy na pewno jest
to konieczne? W sumie to chyba mozna juz wszystko sobie policzyc (tzn.
kiedy sie nasyci)? W wolnej chwili to zrobie tylko musze wygrzebac
gdzies wzory.  O czyms jeszcze powinienem pamietac (oprocz grubosci
drutu oczywiscie)?


Uwzglenic naskorkowosc. Ale przy 20kHz to chyba jeszcze bedzie bez
wiekszego wplywu (0.47mm dla miedzi). Tyle, ze to przeciez sinus nie
bedzie. Moze jednak troche miedzi dodac.

Powodzenia!
gr





Temat: cyfrowy oscyloskop ogólnego przeznaczenia


Kiedys mnie to zastanowilo: AFAIR w TDS644 byla mozliwosc wyboru
miedzy interpolacja liniowa a interpolacja sin/x. Jak wiadomo ta druga
jest niezbedna by prawidlowo odtworzyc sygnal z probek cyfrowych.
Dlaczego wlasciwie w tm TDS byla mozliwosc wyboru? I wlasciwie jak to
jest z interpolacja we wspolczesnych DSO Tektronixa (lub innych)?


TDS500/TDS600/TDS700 mają możliwość interpolacji liniowej lub sin(x)/x
wybieranej przez użytkownika. Podobnie zresztą jak ich nowsze wersje
5k/6k/7k. Interpolacja sin(x)/x jakkolwiek daje wizualnie lepszy efekt jak
liniowa to jednak ma jedną wadę. Filtr sin(x)/x  dla stromo narastających
zboczy powoduje przerosty (pre- i oveshoot) [znane zresztą zjawisko Gibbsa].
Kwestia jeszcze dokładności pomiaru czasu narostu, gdzie akurat owe
przerosty mogą być pominięte.
Wbrew pozorom konkretna implementacja filtru może mieć kluczowe znaczenie.
Gdzieś w notach Tektronixa widziałem porównanie interpolatora Sin(x)/x Teka
i LeCroya, rzecz jasna ten drugi w szczególnym wypadku był do kitu. Sin(x)/x
wiąże się z dodatkowymi obliczeniami (zasobami sprzętowymi/programowymi)
oscyloskopu więc w najprostszych modelach jest tylko liniowa. Tak w ogóle
liniowa jest też realizowana w strukturze podobnej do filtru cyfrowego
(sumowanie wartości sąsiednich próbek przemnozonych przez trójkątne okno).
LeCroy jako domyślną stosuje liniową tłumacząc że sin(x)/x trochę oszukuje.
Z drugiej strony Tektronix ma domyślną sin(x)/x chwaląc się jakimś jej
szczególnym rozwiązaniem lepszym niż u konkurencji ale nie znam szczegółów.
Rodzaj zastosowanego interpolatora zależy jeszcze od próbkowania. Dla dolnej
półki Tektronix stosuje najmniej 10 krotne nadpróbkowanie. Dla przykładu
TDS1002 ma 1 GSa/s przy paśmie 60 MHz. 1 próbka jest pobierana co 1 ns.
Najkrótsza podstawa czasu to 5 ns/dz a 1 działka na ekranie to 25 pixeli.
Zatem dla najkrótszej podstawy przy jednorazowej rejestracji jest jedna
próbka co 5 pixeli (5 próbek na działkę). Dla tak często pobieranych próbek
w zasadzie nie widać istotnej różnicy pomiedzy różnymi rodzajami
interpolacji więc wystarczy liniowa jako prostsza. Inna sprawa jak tych
próbek jest powiedzmy 1 na działkę (lub rzadziej) to wtedy interpolacja ma
znaczenie. Dla topowych ograniczeniem próbkowania są mozliwości technologii
przetworników i akwizycji (obecnie max. 20 GSa). Przy paśmie rzędu 7-8 GHz
zapas na nadpróbkowanie nie jest juz taki jak w TDS1k.
Sinus o czestotliwości f próbkowany 2,5f Sa/s przy interpolacji liniowej
jest tak połamany że trudno nawet określić jednoznacznie okres, jednak z
interpolacją sin(x)/x jest zupełnie przyzwoity. a z drugiej strony prostokąt
o częstotliwości f próbkowany z 5f Sa/s przy interpolacji liniowej wygląda
jako tako a przy sin(x)/x bardziej jak jakiś modulowany sinus. Jednak w tym
drugim przypadku wynik automatycznego pomiaru częstotliwości jest
dokładniejszy.
Ot i wszysko jak zwykle zależy co się mierzy.

Andrzej Kamieniecki





Temat: Szybki sinus - naiwne pytania ;)
  Na starym Pentium 166 MHz obliczenie sinusa trwa

  0.6 mikro (10^-6) sekundy w single i 0.8 mikrosekundy w double.

  Mysle, ze uzycie wprost funkcji sinus nie bedzie najwolniejsza czescia
Twojego programu.

B52


Na początek może krótki opis "tła" problemu.
Ostatnio zainteresowałem się zagadnieniami związanymi z DSP
i syntezą dźwięku. W wielu przypadkach wymagane jest tam
szybkie (i w miarę dokładne) obliczanie wartości funkcji
trygonometrycznych, szczególnie sinusa (jako najbardziej
podstawowej funkcji). I ten problem mnie również ostatnio
nurtuje :) Piszę na razie drobny kawałek kodu w C,
staram się w miarę możliwości unikać schodzenia do poziomu
asemblera (bo kod ma być przenośny).

Z przyczyn wydajnościowych odpada funkcja biblioteczna
sin(double). Nie nadają się tutaj również tradycyjne
podejścia matematyczne, w rodzaju wzoru Maclaurina, bo
ich implementacja w C również jest zbyt wolna (trzeba
obliczyć co najmniej 6-7 wyrazów szeregu, by otrzymać
wynik z zadowalającą precyzją). Zostaje więc chyba
jedyna sensowna metoda - "lookup table", czyli wcześniejsze
obliczenie wyników dla określonej liczby argumentów
(tutaj można skorzystać z funkcji bibliotecznej ;)),
a następnie interpolowanie wartości między tymi punktami.

Może fragment kodu:

int TABSIZE = 4096; // wielkość LUT (lookup table)
float sampleRate = 44100.f; // tak, to częstotliwość próbkowania CD ;)
float c = sampleRate / TABSIZE;
float TWOPI = 2 * 3.1415926;

// liczymy na floatach, bo taka precyzja nam wystarcza
float mysin(float x) {
    float res;
    // "zmiennoprzecinkowy indeks" do tabeli
    float f = x * sampleRate / (TWOPI * c);
    // część całkowita, czyli indeks właściwy
    int index = (int)f;

    index %= TABSIZE;

    if (index == f) {
        res = tab[index];
    } else {
        float dx = f - index;
        res = tab[index] + dx * (tab[index+1] - tab[index]);
    }

    return res;
}

Jak widać, na razie stosuję interpolację liniową, która nie jest
we wspomnianych zastosowaniach zbyt dobrym pomysłem, ale można
to trochę zrekompensować wielkością tabeli (im gęściej rozłożone
punkty, tym większa szansa, że interpolowana wartość będzie bliska
oczekiwanej). W ten sposób udało mi się uzyskać przyspieszenie
sięgające w porywach 2 razy w porównaniu z funkcją sin.

No to teraz pytania:
1) Czy ktoś zna inny, lepszy sposób rozwiązania problemu?
2) Czy powyższy kod da się zoptymalizować w znaczący sposób?
3) Czy zna ktoś dokładniejszą metodę interpolacji, ale o zbliżonej
   wydajności?

Będę wdzieczny za wszelkie wskazówki

Paweł






Temat: Pomiar RMS

On 30 Sep 1997 13:04:51 GMT, "Gabriel Drabik"




[.....]

Nigdy nie spotkalem sie z jakim algorytmem gdyz z definicji RMS wynika ze
jest to po prostu wartosc srednia.


Jesteś w błędzie. RMS (Root Mean Square) jest to wartość skuteczna
przebiegu. Np. dla sinusoidy o składowej stałej równej 0 wartość
średnia też jest równa 0, a wartość skuteczna Um/sqrt(2), gdzie Um
jest amplitudą sygnału (albo jak kto woli wartością szczytową)


Wystarczy zatem policzyc zwykla srednia arytmetyczna z modulu probek.


Chyba nie. Dla przebiegów okresowych:
X(t) - badany sygnał     T - okres tegoż sygnału
Wartość skuteczna Xsk=sqrt((1/T)*całka_od_0_do_T(X^2(t)))
Dla przebiegów nieokresowych jest bodajże tak:
Xsk=limes_przy_T_dążącym_do_nieskończonośći[sqrt((1/T)*całka_od_0_do_T(X^2(t)))]
Nie wiem jak to jest dla przebiegów danych w postaci skwantowanej.
Trzebaby zerknąć do notatek z CPS. :-)


Okreslenie TRUE dotyczy tylko miernikow.
Te bez true mierza wartosci blizej nie zdefiniowane (w przyblizeniu
maksymalne)


Znowu jesteś w błędzie. Te bez TRUE są wykalowane w wartościach
skutecznych napięcia(prądu) sinusoidalnego, a wiec mierzą poprawnie
U(I) sinusoidalne. Gdy wpuścisz tam np. prostokąt, to taki miernik
pokaże głupoty. Ale mógłbyś na podstawie takiego błędnego wskazania
sam obliczyć prawdziwą wartość skuteczną takiego prostokąta znając
jego współczynnik wypełnienia.


ale miernik jest wyskalowany jako RMS.

mierniki
takie przewiduja przebieg wejsciowy jako sinus.


?????


True do tyczy tego ze miernik moze mizrzyc dowolne (no prawie) przebiegi.


No, a tutaj się z Tobą zgadzam. A tak odnośnie mierników z TrueRMS to
należy na nie uważać; tzn. uważać na to, co się kupuje. Swego czasu
zajmowałem się serwisem UPS-ów i miałem okazję zobaczyć jak zachowują
się niektóre mierniki z TrueRMS. Proste modele UPS-ów (firmy APC)
wypluwają z siepie "stepsine wave", taką sinusoidę aproksymowaną
przebiegiem schodkowym. Napięcie wyjściowe takiego UPS-a przy pracy na
bateriach ustawiało się wg. serwisówki na 225 Vsk, no i mój Fluke87
właśnie tyle pokazywał. No ale kiedyś postanowiłem zmierzyć to
napięcie Metexem (nie pamiętam nr modelu) mojego kumpla z biurka obok.
Z True RMS oczywiście. No i co? I ten skurczybyk pokazał 176 Vsk !
Takie tam, kurna, zrobili True. :-))) Hi,hi, zresztą na numer z
Metexem natknął się gość z łódzkiego oddziału mojej byłej kompanii.
:-) Kompania chciała zaoszczedzić, hi,hi. A tu z oszczędności nici
hi,hi.
Fluke kosztuje obecnie coś około 1100PLN, a trueremesowego Metex-a
można kupić za 400PLN.

Pozdrowienia,
/J.D.

       __                 _         __     __
      / / ____ _  _____  (_) ___   / /__  / / Jan Dubiec
 __  / / / __ `/ / ___/ / / / _ / //_/ / / Alcatel Polska S.A.
/ /_/ / / /_/ / (__  ) / / /  __// ,<   /_/ CAE Tools Department





Temat: Szybki sinus - naiwne pytania ;)
Na początek może krótki opis "tła" problemu.
Ostatnio zainteresowałem się zagadnieniami związanymi z DSP
i syntezą dźwięku. W wielu przypadkach wymagane jest tam
szybkie (i w miarę dokładne) obliczanie wartości funkcji
trygonometrycznych, szczególnie sinusa (jako najbardziej
podstawowej funkcji). I ten problem mnie również ostatnio
nurtuje :) Piszę na razie drobny kawałek kodu w C,
staram się w miarę możliwości unikać schodzenia do poziomu
asemblera (bo kod ma być przenośny).

Z przyczyn wydajnościowych odpada funkcja biblioteczna
sin(double). Nie nadają się tutaj również tradycyjne
podejścia matematyczne, w rodzaju wzoru Maclaurina, bo
ich implementacja w C również jest zbyt wolna (trzeba
obliczyć co najmniej 6-7 wyrazów szeregu, by otrzymać
wynik z zadowalającą precyzją). Zostaje więc chyba
jedyna sensowna metoda - "lookup table", czyli wcześniejsze
obliczenie wyników dla określonej liczby argumentów
(tutaj można skorzystać z funkcji bibliotecznej ;)),
a następnie interpolowanie wartości między tymi punktami.

Może fragment kodu:

int TABSIZE = 4096; // wielkość LUT (lookup table)
float sampleRate = 44100.f; // tak, to częstotliwość próbkowania CD ;)
float c = sampleRate / TABSIZE;
float TWOPI = 2 * 3.1415926;

// liczymy na floatach, bo taka precyzja nam wystarcza
float mysin(float x) {
        float res;
        // "zmiennoprzecinkowy indeks" do tabeli
        float f = x * sampleRate / (TWOPI * c);
        // część całkowita, czyli indeks właściwy
        int index = (int)f;

        index %= TABSIZE;

        if (index == f) {
                res = tab[index];
        } else {
                float dx = f - index;
                res = tab[index] + dx * (tab[index+1] - tab[index]);
        }

        return res;


}


Jak widać, na razie stosuję interpolację liniową, która nie jest
we wspomnianych zastosowaniach zbyt dobrym pomysłem, ale można
to trochę zrekompensować wielkością tabeli (im gęściej rozłożone
punkty, tym większa szansa, że interpolowana wartość będzie bliska
oczekiwanej). W ten sposób udało mi się uzyskać przyspieszenie
sięgające w porywach 2 razy w porównaniu z funkcją sin.

No to teraz pytania:
1) Czy ktoś zna inny, lepszy sposób rozwiązania problemu?
2) Czy powyższy kod da się zoptymalizować w znaczący sposób?
3) Czy zna ktoś dokładniejszą metodę interpolacji, ale o zbliżonej
    wydajności?

Będę wdzieczny za wszelkie wskazówki

Paweł





Temat: swiatlo kierunkowe w 3D
Wyglada na to, ze wynik iloczynu skalarnego dwoch znormalizowanych
wektorow rzeczywiscie daje mi wartosc ktora nadaje sie na swiatlo.

Teraz mam kolejny problem. Obiekt jest obracany funkcjami OpenGLa.
Znam katy jego obrotu w osi X, Y i Z. Tak wiec zanim policze
iloczyn skalarny miedzy normalna scianki a wektorem swiatla
musze normalna obiketu tez obrocic, prawda? To jest taka troche
podwojna robota, bo raz mi to wszystko OpenGL przemnaza przez
macierze obrotow a drugi raz musze sam to robic zeby normalne
miec nachylone pod takim samym katem co scianki. Powiedzmy,

funkcje ktora obraca i wektor:

void RotateVector(float *vec_x, float *vec_y, float *vec_z,
                  float ang_x, float ang_y, float ang_z ) {
 float temp;
 float ang_x_rad, ang_y_rad, ang_z_rad;

 ang_x_rad = (PI/180) * ang_x;
 ang_y_rad = (PI/180) * ang_y;
 ang_z_rad = (PI/180) * ang_z;

 // obrot wokol X
 temp   = (*vec_y * cos(ang_x_rad)) + (*vec_z * sin(ang_x_rad));
 *vec_z = (*vec_z * cos(ang_x_rad)) - (*vec_y * sin(ang_x_rad));
 *vec_y = temp;

 // obrot wokol Y
 temp   = (*vec_x * cos(ang_y_rad)) - (*vec_z * sin(ang_y_rad));
 *vec_z = (*vec_z * cos(ang_y_rad)) + (*vec_x * sin(ang_y_rad));
 *vec_x = temp;

 // obrot wokol Z
 temp   = (*vec_x * cos(ang_z_rad)) + (*vec_y * sin(ang_z_rad));
 *vec_y = (*vec_y * cos(ang_z_rad)) - (*vec_x * sin(ang_z_rad));
 *vec_x = temp;


}


Nie patrzcie na okropne niezoptymalizowanie tej funkcji. Jak
zadziala to wtedy sie za to wezme:). Narazie niech zadziala.

Problem polega na tym, ze jak obracam obiekt w innej osi to
otrzymuje dziwne zachowanie sie swiatla. W jednej osi obszar
oswietlony kreci sie razem z obiektem, w innej jakos inaczej
sie przesuwa po obiekcie, w innej wyglada jakby dzialal prawie
tak jak chce. Zerknijcie na te wzorki - moze ktos zauwazy co
ja tu robie nie tak? We wzorkach nie moglem siepomylic, bo
sprawdzalem ja z dwoma niezaleznymi od siebie zrodlami. Musi
byc jakis problem w moim toku myslenia (jak zwykle;)).

Obiekt obracam tak:

glRotatef(rot_x, 1, 0, 0);
glRotatef(rot_y, 0, 1, 0);
glRotatef(rot_z, 0, 0, 1);

No ale ten obrot mam tylko przy rysowaniu. Jak sobie sprawdze
normalne scianek mojego obiektu to przeciez wcale one sie nie
zmienia. Musze je sam nachylic pod takimi katami o jakie obrocilem
obiekt. Robie to wywolujac wczesniej pokazana funkcje:

RotateVector(&normal_x, &normal_y, &normal_z, rot_x, rot_y, rot_z);

I dopiero wtedy mam normalna obrocona pod takimi samymi katami
co obiekt i moge ja porownywac z wektorem swiatla.

Mam nadzieje, ze nie za bardzo zamotalem:). Jezeli komus chcialoby
sie przesledzic moj tok myslenia i znalazlby w nim jakis blad to
bede wdzieczny gdyby sprobowal mi go naswietlic:). Ja juz nie wiem.
Cala niedziele na to stracilem:):):) i nic wyczailem co jest nie tak.

Pozdrawiam
Dudus





Temat: Wlasna funkcja arctg
Cześć.


BARDZO dziekuje za tak dokladny opis. Zaraz sie w niego zaglebie...

| A co jest? Może wchodzi w grę jakieś wyliczenie w oparciu o inne
funkcje...

Nie chcialem zeby mnie tu zjedzono za to, ze domagam sie konkretnego


algorytmu

Dzięki, dziś już jadłem.

[...]


Prosze wyobrazic sobie samochodzik (widok z gory) jezdzacy dowolnie po
plaskiej planszy. Autko moze jezdzic pod (praktycznie) dowolnym katem.
Pelny
obrot jest podzielony na 256 krokow. Tak wiec 90 stopni to 64, 180 stopni
to
128, 270 stopni to 270.


270 to chyba jednak 192 (3x64).


Chodzi o to, ze mamy wspolrzedna samochodu,
wspolrzedne punktu do ktorego ma dojechac i musze wiedziec pod jakim katem
obrocic samochod zeby byl przodem do kierunku jazdy. Roznica miedzy
wspolrzednymi w osiach X i Y tworzy mi ladny trojkat prostokatny


Może w ogóle nie wyliczaj kąta tylko używaj wektora kierunku - (dx, dy).
Przy obraniu nowego punktu docelowego otrzymujesz nowy wektor (różnica
między współrzędnymi), a w kolejnych krokach obliczasz aktualną pozycję
autka mnożąc ten wektor przez kolejną liczbę z przedziału (0, 1). Liczba ta
zwiększa się za każdym razem o krok, który jest proporcjonalny do prędkości
i odwrotnie proporcjonalny do początkowej odległości między autkiem i
punktem docelowym. Do wyliczenia odległości (długości wektora (dx, dy))
przyda Ci się pierwiastek kwadratowy. Jeśli też go nie masz - proponuję
metodę Newtona (jest dość szybko zbieżna):

y(n+1) = (y(n) + x / y(n)) / 2

Takie rozwiązanie komplikuje co prawda opis obiektu (trzeba pamiętać punkt
początkowy, aktualną odległość od tego punktu, wektor kierunku i jego
długość no i dochodzi dodatkowa operacja mnożenia), ale ma tę zaletę, że
błędy obliczeń nie sumują się w kolejnych krokach, więc nie ma ryzyka, że
autko "nie trafi" do punktu węzłowego. Jeśli jednak Twoja metoda radzenia
sobie z błędami zaokrągleń (liczenie na powiększonych liczbach i dzielenie
wyniku) jest wystarczająco dokładna, to można to jeszcze uprościć. Trzeba
tylko zadbać, żeby maksymalny błąd pomnożony przez maksymalną liczbę kroków
do punktu docelowego był mniejszy niż liczba, przez którą na końcu dzielisz.
W takim przypadku wektor (dx, dy) od razu po wyznaczeniu mnożysz przez
prędkość i dzielisz przez jego długość, żeby potem w każdym kroku mieć już
tylko dodawanie do aktualnych współrzędnych autka.

Gdybyś oprócz wyznaczenia kierunku ruchu potrzebował obrócić coś jeszcze w
tę samą stronę (np. strzałkę pokazującą kierunek ruchu czy coś w tym
rodzaju), pomnóż każdą współrzędną strzałki przez macierz:

| sin    -cos |
| cos     sin |

I nadal nie trzeba znać wartości kąta, bo sin = dy / l, a cos = dx / l,
gdzie l = długość (obliczona wcześniej). W dodatku dzielenie możesz robić
tylko raz na końcu dla każdej składowej:

X = X0 sin - Y0 cos = (X0 dy - Y0 dx) / l
Y = X0 cos + Y0 sin = (X0 dx + Y0 dy) / l

gdzie (X0, Y0) współrzędne początkowe obracanego obiektu względem środka
obrotu.





Temat: 24 ledy jak to połączyć? :)
Hej
    braciszek robi sobie maly robocik..takie sprytne ustrojstwo ze skretnymi
wszystkimi 4 kolami
przekladnie sobie ladnie wyfrezowal (mamy frezarke), ulozyskowal i sobie
kolka skreca silnikami krokowymi.
Jako naped chce uzyc silnikow synchronicznych 3-fazowych BDLC (cos jak w
dyskach twardych)
jako silniczki albo sie uzyje takowych od drukarek laseowych.albo sie zrobi
samemu .Tak, to zadna filozofia jak sie ma narzedzia, wystarczy piasta,
kubek z naodymami oraz rdzen, chociazby kawalek wirnika od silnika
szczotkowego, no ale to nieistotne - modelarze sobie w podoby sposob radza i
wyciskaja po 100..150W z takich malenstw.
 Podstawowa zaleta ich sa male wymiary, duzy moment i mozliwosc wbudowanai
do kola napedowego - tutaj to ostatnie jest istotne.
Zasilanie bedzie 12V, moc silniczka - max 50W. Oczywiscie moge uzyc silnika
DC z przekladnia, ale to bardzo kompplikuje mi mechanike
    No ale dla BDLC dochodzi koniecznosc budowania falownika. Mysle zrobic
to na jakims malym AVR z 3 PWM, na wyjsciu dac prosty driver PMOS-NMOS i
jakas prosta logike zapewniajaca czas martwy, jesli bedzie to koneiczne.
W procku - tablice sinusa, pobieram sobie wartosc z 3 punktow tablicy, mnoze
przez odwrotnosc predkosci (aby realizowac sterowanie V/F = const) i wrzucam
na PWM. Sporo znalazlem w sieci info na temat takeigo sterowania, nei ejst
ono zbyt skomplikowane.
    Wada takeigo prostego podejscia jest brak kontroli poslizgu wirnika. W
przypadku wiatraka czy napedu moze wystarczy, lecz w przypadku robota nei
bardzo.
   W np napedach w sprzecie biurowym stosuje sie do tego 3 hallotrony, by
stwierdzic w ktorym polozeniu znajduje sie wirnik. Sygnaly z hallotronow
przez wzmacniacz podawane sa na uzwojenia. Dzieki temu mamy mozliwosc
pewnego rozruchu, duzy moment praktycznei od zera. Obroty stabilizowane sa
przez PLL z oddzielnego enkodera na silniku (cewka na PCB) poprzez regulacje
zasilania calosci. Jednakze jest to rozwiazanie oferuje regulacje obrotow w
dosyc waskim zakresie.Jest cale mnostwo scalakow do tego. Jednak  takie
rozwiazanei generuje duzo mocy w scalaku sterujacym no i ciezko sterowac
malymi predkosciami - lub przesunac wal np precyzyjnie o np pol obrotu z
pelnym momentem
    W fabrycznych falownikach rzado keidy stosuje sie hallotrony - meirzy
sie napeicie na zaciskach po odlaczeniu na chwile sterowania, a ten sposob
znajdujac pozycje wirnika. uzywajac DSP i dosc zloznego algorytmu
(sterowanie wektorowe)
    Ja mysle zastosowac sposob laczacy powyzsze metody.
rozwiazanei 1: Dam 3 czujniki pola (lub jakis inny enkoder pozycji). Sygnal
z czujnikow halla bedzie probkowany przez ADC i podawany na odpowiednei PWM.
Przez to uzyskam male straty mocy oraz mozliwosc sterowania obrotami poprzez
wzmocneinei lub oslabienie stalej podawanej na modulator PWM. Jednakze
ciezko tutaj zachowac precyzyjne sterowanie, prosto za to kontrolowac
predkosc.
rozwiazanei 2: sygnal z enkodera polozenia walu steruje wskaznikami na
tablice sinusa, a dalej wartosci steruja PWM'ami.
ja porownuje wartosc z enkodera z wartoscia zadana polozenia kola i reguluje
prad uzwojen, odpoweidnio korygujac przesuneicie wskaznika na tablicy oraz
mnozac wynik z tablicy przez zmienna. Do tego celu mozna uzyc prostego
regulatora PID. To rozwiazanei podoba mi sie najbardziej.
    Kazde kolo ma swoj sterownik, polaczone z glownym prockiem po SPI ,
gdzei zadawane sa nowe polozenia wirnikow

Co na ten temat sadzicie?Da sie to zrobic prosciej/lepiej?
Tylko prosze, nie mowcie zebym soie to odpuscil albo ze nei amm pojecia o
sterowanieu silnikow, bo wlasnie zapowiada sie fajna zabawa i mozliwosc
nauczenia sie cokolwiek.

A mzoe olac sobie kompensacje poslizgu i zakladac ze owy bedzie pomijalny
dajac odpowienio duzy prad na uzwojenia..

Przyszlo mi do glowy jeszcze jedno rozwiazanie, a raczej
uproszczenie.Wystarczy dla BDLC sterowac 2 fazami - uziemiajac trzecia, a
raczej laczac do punktu wspolnego, np za pomoca duzego C. wada jest
koneicznosc dostarczenia troche wyzszego napeicia zasilajacego oraz to, ze
przy sterowaniu statycznym to C musi byc neiskonczone lub dac PWM=50% :),
zaleta - uzywamy 2 wyjsc PWM.
Pozdr i dzieki za wszelkie sugestie
Greg

****************************
*  www.fuw.edu.pl/~gkasprow       *

*                                                    *
****************************





Temat: Co to jest ACTIVE PFC w zasilaczu ATX ?


PFC - Power Factor Correction - poprawa wspóczynnika mocy (cos fi)
skąd dodatek active, hmm nie sądzę zeby to był filtr aktywny , no i
może to być zastosowane oczywiście w dowolnym zasilaczu np ATX-owym.
| związku z tym proszę o opis dla lejka :)
| Przeczesałem najpier grupę na googlach i nie znalazłem zrozumiałej
| dla mnie odpowiedzi CO TO JEST ACTIVE PFC w zasilaczu ATX ?


0) Proszę odpowiadaj POD PRZYCIĘTYM CYTATEM!

1) Nie myl ogólnego współczynnika mocy (PowerFactor) ze wsp. cos(fi)

2) Pojęcie cos(fi) odnosi się do przesunięcia fazowego pomiedzy
_sinusoidalnymi_ przebiegami napięcia i prądu.
Tzn. przykładamy napięcie przemienne:
u=U1*sin(omega*t)
do _liniowego_ obciązenia i uzyskujemy przepływ prądu:
i= I1*sin(omega*t + fi)

Przesunięcie fazowe (fi) pomiedzy tymi przebiegami, wyrażone jako
cos(fi)=<0..1określa, jaka część mocy pozornej kotłującej się w linii
zasilającej jest faktycznie wydzielana jako moc czynna w obciążeniu.
Posługiwanie sie pojęciem cos(fi) ma sens jedynie w przypadku obciążenia
_liniowego_  tzn. w przypadku, gdy przebiegi prądu i napięcia mają kształt
sinusiodalny, tzn. nie zawierają harmonicznych. Może to być obciążenie
rezystancyjne (grzałka, żarówka) lub reaktancyjne (np. silnik indukcyjny) a
ew. składową urojoną prądu można skompensować, wtrącając równolegle do linii
zasilającej rekatancję o przeciwnym znaku. Ponieważ w praktyce większość
obciążeń wnosi składową indukcyjną (silniki, transformatory) dlatego do
kompensacji mocy biernej stosuje się włączane równolegle baterie
kondensatorów.

Sytuacja się komplikuje gdy obciążenie ma charakter nieliniowy - tzn. mimo
pobudzenia napięciem sinusoidalnie zmiennyn, przebieg pobieranego prądu
ulega odkształceniu (od idealnej sinusioidy) i zawiera wyższe składowe
częstotliwościowe (2f, 3f...).  Taki charakter mają m.in. lampy wyładowcze i
większość urządzeń elektronicznych.

Przykładowo - jeżeli w zasilaczu (przetwornicy) impulsowej, na wejściu
znajduje się  mostek prostowniczy i kondensator filtrujący o dużej
pojemności to doładowywanie kondensatora odbywa się tylko _krótkimi_
impulsami prądu o dużej wartości,  przypadającymi w szczytach napięcia
sieci. Przez całą resztę półokresu sieci, elektronika korzysta z energii
zgromadzonej w kondensatorze.  Oznacza to, że kształt przebiegu prądu
dalece odbiega od sinusa, ma bogate widmo, a posługiwanie się
"jednoczęstotliwościowym" wsp. cos(fi) do oceny wykorzystania mocy traci
sens.  Chociaż nadal można mówić o przesunięciu fazowym pomiędzy
_okresowymi_ przebiegami napięcia i prądu.  W przypadku przebiegów
odkształconych pozostaje jedynie posługiwanie się współczynnikiem mocy (PF -
Power Factoer) określającym stosunek mocy pobranej i dostarczonej, ale z
uwzględnieniem całego zakresu częstotliwości. Im wsp. PF bliższy jedności,
tym lepsze wykorzystanie mocy dostarczonej z sieci.

Zestaw mostek Graetz'a + kondensator filtrujący włączony bezpośrednio do
sieci byłby dosyć wydajnym, ale przy tym niezbyt trwałym generatorem
zakłóceń.  Dlatego, o ile zasilacza nie zaprojektowali księgowi, na jego
wejściu znajdują się co najmniej:
- termistor NTC, ograniczajcy udar prądowy przy pierwszym (po włączeniu)
ładowaniu pojemności filtrującej
- filtr przeciwzakłóceniowy LC eliminujący przedostawanie się do sieci
zakłoceń radioelektrycznych.

Zwróćmy uwagę, że filtr eliminujący z widma pobieranego prądu wyższe
składowe w istocie poprawia współczynnik mocy i z tego punktu widzenia mozna
mu przypisać rolę _biernego_ PFC.  Jednak wykonanie biernego filtru
skutecznie tłumiącego składowe począwszy od 2f (100Hz) byłoby nierealne w
praktyce.  Dlatego zaczęto stosować specjalizowane układy przetwornic
impulsowych pracujące z częstotliwością kilkudziesięciu kHz, zasilane
bezpośrednio z sieci i zaprojektowane w ten sposób, aby średnia wartość
pobieranego prądu (ściślej - średnia z punktu widzenia częstotliwosci
kluczowania, czyli kilkudziesięciu kHz) miała kształt sinusoidalny o
częstotliwości 50Hz i zgodny w fazie z przebiegiem napięcia zasilającego.
Taki sposób korekcji współczynnika mocy nosi nazwę "Active_PFC" i pozwala na
uzyskanie wartości PF~=0.99.  Dokladniejsze omówienie pojęcia PF i przykłady
realizacji układów aktywnego PFC opisano m.in. w Elektronice Praktycznej:
EP5,6/97
EP06/2000: http://ep.pnet.ws/archiwum/2000/06/59_64.pdf





Temat: Przetwornica 12/24V na 230V...
"bad_skipper" doradzal:


| Witam Szanownych Grupowiczow :)

| Jestem cienki z elektroniki,
[...]
| 1) w jaki sposob (jaki uklad) przemienic prad staly w zmienny o
| czestotliwosci takiej, jaka jest w zwyklym gniazdku (50-60Hz)?
| 2) w jaki sposob zmienic przebieg kwadratowy na sinusoide, tak, zeby byc
| spokojnym o urzadzenia zasilane standardowo z gniazdka (kuchenka z
| nagrzewanymi blatami, toster, wiatrak do ogrzania wnetrza, ale tez i
| komputer)? czy ups cos tu wskora?

http://allegro.pl/show_item.php?item=37761314
taniej sam nie zrobisz... (zeby nie bylo... to nie moja aukcja)


to chyba raczej za slaba przetwornica do np. farelki (2000W)... ;]


| 3) jaka jest zaleznosc pomiedzy rodzajem pradu na wejsciu (12V), a
pradem
na
| wyjsciu (220V)? jesli natezenie pradu na wejsciu (12V) wynosi 10A, to
ile
| wyniesie na wyjsciu (220V) - jak to liczyc?

P=U*I
12[V]  *  10 [A]  = 120 [W]
120 [W] : 220 [V] = 0.55 [A]


dzieki wielkie! to bedzie dla mnie bardzo przydatne...
rozumiem, ze podane wzory sa poprawne dla tego samego typu pradu (staly lub
zmienny)... a czy te wzory maja sens, gdy na wejsciu prad jest staly, a na
wyjsciu zmienny (lub na odwrot)?


| czy jesli bede zasilal, dajmy na
| to, kuchenke o mocy 2000W, to akumulator samochodowy (45Ah) poradzi
sobie -
| czy pobor pradu nie bedzie dla niego zabojczy...?

Energia w akumulatorze Q=45 [Ah] przy U=12[V]
E = Q*U ;  45[Ah]*12[V] = 540 [Wh] = 0.54 [kWh] ; dla kuchenki 2[kW] czas
pracy 0.25 [h].


czy owy czas pracy akumulatora jest czasem totalnego rozladowania baterii
(trwale uszkodzenie), czy moze czasem spadku napiecia do wartosci, w ktorej
nastepuje wylaczenie sie przetwornicy (~10V)?


| 4) czy zasilanie z prostownika ma racje bytu (podejrzewam, ze tylko do
| lampek nocnych)? ;]

Zalezy jakiej mocy prostownik...


max. 20-30A
gdzies przemknelo mi (przy google'aniu), ze musi byc przynajmniej okolo
80A... jezeli tak, to czy mozna stosowac rownolegle laczenie prostownikow
aby uzyskac odpowiednie natezenie pradu?


| 5) jak zabezpieczyc wyjsciowe napiecie (220V), aby jakims dziwnym trafem
nie
| przekroczylo wartosci nominalnych?

posrednio: bezpiecznik topikowy najpewniejszy


jesli sie nie myle, to w popularnych "listwach" wlasnie takie sa
wykorzystywane?


|  ups by sie nadawal?

UPS to tez przetwornica...


wspominam o ups'ie, bo przydaloby sie zabezpieczenie zasilania podczas pracy
komputera, no a przy okazji gdyby spelnial role bezpiecznika chroniacego
przed jakimis nadzwyczajnymi przepieciami i przede wszystkim dokonywal
"liftingu" modyfikowanego sinusa (a moze nawet przerabialby kwadrat na
sinusa) na wyjsciu, to rozwiazywaloby to jakies dodatkowe gadzety, ale to
byloby zbyt piekne prawda...?


| 6) czy sa jakies zestawy do samodzielnego montazu, albo schematy
| potezniejszych przetwornic od tej opisywanej na forum), lub w jaki
sposob
| zwiekszyc moc tejze...?

na allegro najlepiej...


niestety nie ma tam _mocnych_ rzeczy - nie wnikalem zbytnio, bo nie moge
sobie na to pozwolic...


| 7) jezeli wypowiedzi na moje pytania musialyby byc zbyt obszerne, to
moze
| jest gdzies w necie stosowne info na te tematy?

na googlach  kazde kluczowe slowo znajdziesz ...


owszem, tyle ze mnie nie stac na pomykanie w okularkach na golasa... ;]
[chodzi o to, ze kazdy znaleziony link trza sprawdzic i zazwyczaj jest to
niekoniecznie to, czego sie poszukiwalo...]

dziekuje za odpowiedzi
pozdrawiam
krzysiek





Temat: Antena Fm do radia do pokoju. - dlugawe


U mnie (Zodiak) rozwiązane jest to na dwóch LEDach (gdy 0 to żadna się
nie  wieci), a widziałem też rozwiązanie na jednej LED.


To oryginalne zero z Zodiaka trochę jest kulawe, bo słaba czułość i dody
mają mały prąd i w porównaniu od diody stereo słabo świecą.
Dobre zero było kiedyś w Radioelektroniku gdzie były zapięte na każdą gałąź
po dwa tranzystory.
Można było je tak wyżyłować podkówkami, że reagowało już na 5 kHz
odstrojenia i jak stacja ostro dawała po basach to migały w rytm muzyki :D


Ale nie wszystkie poprawnie wskazują. :(


Bo większość tunerów jest robionych na pałę.
Zbyt duże wmocnienie toru przy filtrach ceramicznych i przy mocnej stacji
radiowej w dużym mieście do kości p.cz. (w diorze UL1200) dochodziło w
niektóych modelach tunerów nawet 800mV p.p. 10,7 MHz
Z ch-ki wynika, że taka mocna stacja nie powinna tam dawać większej
amplitudy niż 300mV p.p. co odpowiada około 100mV skut. dla którego to
napięcia UL1200 daje pełne napięcie (ok. 5-5,8V) na 13 nóżce, które to
napięcie jest podawane na wskaźnik poziomu sygnału.
I tak oryginalne tunery świeciły max dla stacji która miała dużo mniejsza
moc.
Zresztą diora popsuła w ten sposób także znany tuner z syntezą.
Dowalili tam takie poziomy napięć (przestereowany stereodekoder TDA1578) -
niezgodne ze specyfikacją Philips-a z dokumentacji współpracy demodulatora
FM TDA1576 i dekodera TDA1578 że przy dewiacji +/- 75 kHz zamiast sinusa na
wyjściu był trapez, bo wzmiacniacz wyjściowy dekodera nie wyrabiał już
napięciowo i ciął wierzchołki przebiegów.
Konstruktor zamierzył sobie, że radio na chinch-ach ma dać dla dewiacji
75kHz sygnał jak CD czyli w pikach dochodzący do 5V p.p.
A w instrukcji podwali, że ma to zniekształcenia grubo poniżej 0,5%
Śmiech na sali....
Dopiero interwencja w elektronikę i dobranie wartości jak zaleca Philips
doprowadziło ten tuner do stanu jaki był zamierzony.

A wracając do rozwiązań wskaźników dostrojenia na jednej ledzie.
Te stosowanie w diorze np AS641, AS252, AS254 to była tragedia.
Sygnał do tej diody był brany najczęściej z wyjścia sterwania wyciszania
przy odstrojeniu, któy to wycisz reagował przy odstrojeniach około 150-200
kHz i wtedy w momencie zaskoczenia wyciszania gasłą dioda.
Już bardziej precyzyjnie można się było wstroić na słuch lub patrząc na
poziom sygnału.
W AS252 wywaliłem ten wskaźnik i wstawiłem tam diodę dwukolorową z porządnym
układem zera (ten z Radioelektornika dla Fausta z drobnymi modyfikacjami
wartośći elementów i aplikacji) i tak przy odstrojeniu o jakieś 30 KHz
zapala się zielona a przy odstrojeniu w górę czerwona, przy wstrojeniu dioda
wygasa.





Temat: Obracanie bitmap po raz drugi :)


| hm... robisz tak, ze masz punkt P obracasz ten punkt (so masz P'),
pobiera
sz
| wartosc punktu o wsp. P' i wstawiasz na ekran o wsp. P.

No gdybym go mial to byloby proste ale wlasnie chodzi mi o to skad mam go
mi
ec?!

Jezeli blittuje na ekran to czy mam sprawdzac kazdy pixel na ekranie?

Kurde, wyslalem jeszcze jeden post z kilkoma pytaniami i chyba go
przeoczyle
s...
A tam wlasnie wszystko wyjasnilem w miare.


po pierwsze.....
    wywala sie dlatego,ze jak masz mniejsza texture a wieksza rozdzielczosc

wychodzi poza adres textury no i sila rzeczy musi sie wywalic.
po drugie.....
    zrob to sobie wszystko do surface i blittuj normalnie czy tam Blt czy
BltFast
po trzecie... ehh (dla surface 8bit)

    char *buffor;                 // buforek ekranu
    char *textura;                // buforek textury
    int txmax,tymax;            // rozdzielczosc textury
    int sxmax,symax;           // rozdzielczosc bufora
    float alpha=0.0;

    buffor=(char *)malloc(sxmax*symax);
    textura=(char *)textura(txmax*tymax);

    .............................................................
    ......tutaj zapisz cos do textury................
    .............................................................

    while (!kbhit()) {
            memset(&bufor,0,sxmax*symax);
            alpha+=0.05;

            for (int y=0;y<tymax;y++)
                for (int x=0;x<txmax;x++) {
                    float tx=x-txmax/2.0;
                    float ty=y-tymax/2.0;

                    float xs=tx*cos(alpha)-ty*sin(alpha);
                    float ys=ty*cos(alpha)+tx*sin(alpha);

                    tx+=txmax/2.0;
                    ty+=tymax/2.0;

                    char c=((char)textura[txmax*ty+tx]);
                    int sx=tx+(sxmax-txmax)/2;
                    int sy=ty+(symax-tymax)/2;
                    if (sx=0 && sx<sxmax && sy=0 && sy<symax)
                        ((char)bufor[sxmax*sy+sx])=c;
                }

        ..... i na 0xa0000
    }

eh
nie testowalem tego, ale powinno chodzic, jak nie pojdzie to wtedy sie
zmusze zeby to przetestowac

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nflblog.pev.pl



  • Strona 2 z 2 • Znaleziono 144 rezultatów • 1, 2