spamer – poziom ekspert

Na moim blogu – jak na każdym innym – można dodawać komentarze do postów. Oczywiście jest ta funkcja wykorzystywana przez spamerów do “popularyzowania” swoich stron internetowych: w zdecydowanej większości anglojęzycznych stron śmieciowych “oferujących” różnego rodzaju śmiecie (typu Rolexy po $5). Oczywiście blog wyposażony jest w system wyłapywania spamu, który nie dopuszcza do jego publikacji pod wpisami. Wpisy zakwalifikowane jako spam mogę przeglądać, żeby sprawdzić czy nie trafiły tam wartościowe komentarze (np. takie, w których ktoś przytacza wiele linków).

Treść spamerskich komentarzy bywa w różnych językach – polskim, angielskim, rosyjskim i innych. Najczęściej widać losową kolejność słów kluczowych i linków, efekty automatycznego tłumaczenia lub oklepane formułki typu “Bardzo podobał się ten wpis” (linkujące np. do wspomnianych Rolexów). To właśnie linki są dla spamerów najbardziej istotne. Na podstawie ilości linków prowadzącej do danej strony google oblicza (dokładny algorytm jest tajemnicą) rangę strony – im jest ona wyższa tym wyższa pozycja strony w wyszukiwarce.

Wystarczy wstępu, bo nie o takich spamerach chciałem dziś pisać. Wczoraj mianowicie trafiłem na komentarz zakwalifikowany jako spam, który zwrócił moją uwagę: był krótki i po polsku (poniekąd…). Brzmiał on tak:

Super post. Codziennie uczę się czegoś nowego na dziesiątkach różnych blogach. Zawsze miło czytać taki wartościowy materiał. Będę chciał wykorzystać część tego info na swoim blogu jeśli nie masz nic przeciwko. Oczywiście dodam link zwrotny do Twojego bloga. Dzięki bardzo za wszystko!

Jak się okazało komentarz został opublikowany do posta TME – rewelacja! – dziwne. Sama treść też była dla mnie dziwna – dlaczego ktoś miałby wykorzystywać to co ja przygotowuję na innym blogu? Spojrzałem więc na autora i zdziwiłem się jeszcze bardziej: przedszkole minsk mazowiecki. Potwierdziło to od razu dobrą decyzję filtra – komentarz ten był definitywnie spamem. Ponieważ komentarz przyciągnął moją uwagę przyglądałem się dalej. Został wysłany z adresu IP (94.102.57.64) należącego do firmy http://www.ecatel.net/ – holenderskiego dostawcy serwerów dedykowanych. Podany był nawet adres e-mail: przedszkolmiskmaz@gmail.pl.

Pozostała jeszcze jedna zapisana informacja o wpisie. Link do strony www – tak jak pisałem wyżej to na promocji adresów www zależy spamerom. Nie w tym przypadku, gdyż link ten prowadził do filmu na YouTube. Popychany wrodzoną ciekawością postanowiłem go sobie zobaczyć. Spodziewałem się jakiegoś śmiecia, i bardzo się zdziwiłem gdy zobaczyłem film reklamowy przedszkola:


kliknij na zdjęcie, aby przejść do filmu

Pod filmem podane są dane kontaktowe do przedszkola:

Dlaczego postanowiłem opisać ten przypadek? Nie jestem w stanie dojść, dlaczego ktoś, kto nie wie jak bardzo bezsensowne jest promowanie filmu na YouTube zadał sobie tyle trudu i spamuje za pomocą serwerów dedykowanych w innych krajach? Sądząc po ilości wyświetleń filmu na niewiele się to spamowanie zdało. Może wy macie jakieś pomysły: o co chodziło autorowi?

| Komentarze (4)

Rejestrator sejsmiczny

Tematyka rejestracji fal sejsmicznych była już poruszana przy okazji budowy i prezentacji czujnika drgań – geofonu. Jako rejestratora wykorzystałem wtedy wejście mikrofonowe karty dźwiękowej komputera. Niestety taki rejestrator ma wiele wad: ma małą czułość w stosunku do oczekiwanej amplitudy sygnału, jest zaszumiony przez otaczające go podzespoły komputera i ma małą rozdzielczość.

Profesjonalne rejestratory sejsmiczne to niezależne urządzenia pozwalające na podłączenie 1 lub więcej geofonów, które przetwarzają sygnał analogowy na cyfrowy wysokiej rozdzielczości przy zachowaniu małego poziomu szumów i perfekcyjnej synchronizacji czasu. Niestety urządzenia takie są bardzo drogie i przy cenach zaczynających się od kilku tysięcy dolarów – nieosiągalne dla typowego śmiertelnika amatora.

Od razu pojawił się pomysł (a było to co najmniej pół roku temu) samodzielnej budowy rejestratora. Projekt jest cały czas realizowany, ale najtrudniejsze już za mną. Postanowiłem wykorzystać najlepsze dostępne podzespoły – tak aby osiągnąć możliwie najwyższą jakość. Nie chcę dzielić się w tym miejscu szczegółami technicznymi – podejrzewam, że szersza publika nie jest tym bezpośrednio zainteresowana. Zawsze chętnie wysłucham Waszych pytań i w miarę swoich możliwości na nie odpowiem.

Z aspektów technicznych warto przedstawić sam układ przetwornika analogowo-cyfrowego. Wybrałem dedykowany dla sejsmiki przetwornik firmy Texas Instrument o symbolu ADS1282 – malutki układ o rozdzielczości 32 bitów (!!!). Układ ten dostępny jest tylko w obudowie SMD, która nie jest przyjazna przy prowadzeniu testów na płytce rozwojowej. Aby uporać się z tym problemem przygotowałem projekt płytki drukowanej dla tego układu i jego układów peryferyjnych, tak aby całość podłączyć do mikrokontrolera i zasilana na płytce rozwojowej. Wizualizacja płytki wyglądała następująco:


Wykonanie płytki na podstawie projektu zleciłem profesjonalnej firmie z Gdańska . Staranie i uważnie przylutowałem wszystkie elementy i gotowa do podłączenia płytka wyglądała następująco:

Gotowa płytka była dla mnie sukcesem, ale jej poprawne podłączenie do mikrokontrolera (atmega32) i odczytanie danych z przetwornika zajęło dobrych kilka dni pracy.

Starałem się modyfikować cały układ na płytce rozwojowej w taki sposób, aby na jego podstawie przygotować dużą płytkę drukowaną, gdzie z jednej strony byłoby podłączenie do geofonu a z drugiej wyjście USB do komputera. Ta płytka nie jest jeszcze gotowa, obecnie cały układ działa, ale na płytce rozwojowej. Przygotowane są nawet dwa niezależne kanały do dwóch geofonów:

Dzielę się tym z Wami ponieważ dużo pracy zostało wykonane i podstawowy cel został osiągnięty. Układ działa! Nie chcę wnikać ile pieniędzy pochłonęły te prace, bo sam bym się przestraszył. Nie udałoby się gdyby nie sprzęt pomiarowy użyczony przez Zakład Fizyki Litosfery IGF UW. Cały czas mam na uwadze dokończenie projektu (doskwiera brak czasu) i przygotowania urządzenia “na komercyjnym poziomie”, za pomocą którego możliwe będą konkretne pomiary i eksperymenty w terenie. Chciałbym aby całość była gotowa (przynajmniej kilka sztuk) do lata 2012.

Przypominam przy tym, że nie jestem elektronikiem, więc każdy z etapów prac był dla mnie pewnego rodzaju wyzwaniem i często błądzeniem we mgle…

| Komentarze (3)

Globalne ocieplenie vs. Polska

Zima trwa już dość długo więc może dla odmiany warto pomyśleć o czymś cieplejszym. Na przykład o globalnym ociepleniu. Wielokrotnie słyszeliśmy o podnoszeniu się poziomu oceanów. Niektórzy przewidują kilka metrów więcej wody niż teraz, gdy inni mówią o kilkudziesięciu czy nawet więcej.

Postanowiłem więc narysować dla Was mapę, na której widać ile terytorium Polski zostanie zalane.:


Poniżej animacja pokazująca zalewnie od 1 do 500 metrów wody:

| Komentarze

Matlab – uwaga na wydajność funkcji

Weźmy pod uwagę prosty przykład. Nasz program wymaga wielokrotnych konwersji z układu współrzędnych kartezjańskich na biegunowe.  Załóżmy, że konwersja jest dokonywana w pętli (na przykład dlatego, że każdy następny krok zależy od poprzedniego).

Matlab ma wbudowaną funkcję:

[THETA,RHO] = cart2pol(X,Y);

Do testowania wydajności przygotujemy sobie zbiór danych wejściowych:

v = randn(1000000,2)*1000;

Teraz dla każdej pary wartości (x, y) ze zmiennej v przeliczmy współrzędne:

for a = 1:length(v)
    [t r] = cart2pol(v(a,1),v(a,2));
end

Wykonanie powyższej pętli zajmuje na moim komputerze 11.692266 sekund.

Przeanalizujmy co robi funkcja cart2pol:

function [th,r,z] = cart2pol(x,y,z)
th = atan2(y,x); 
r = hypot(x,y); 
end

O ile atan2 jest operacją matematyczną, to hypot jest kolejną funkcją, która zwraca pierwiastek sumy kwadratów dwóch argumentów.

Co się zatem stanie jeśli wykonamy pętle z przykładu wyżej, ale zamiast funkcji cart2pol wywołamy obliczenia bezpośrednio?

for a = 1:length(v)
    t = atan2(v(a,2),v(a,1));
    r = sqrt(v(a,1)^2+v(a,2)^2);
end

Efekt jest identyczny. Różnica polega na tym, że czas obliczenia został zredukowany do 0.329579 sekundy, co daje przyspieszenie ponad 36 razy…

Wniosek – kod w matlabie warto analizować i optymalizować!

| Komentarze

Klikasz? No ba!

Kolejny prosty i przydatny programik, który można szybko napisać w C#. Celem jest symulowanie kliknięć myszką. Zakładając, że z jakiegoś powodu musimy wykonać kilkaset czy kilka tysięcy kliknięć może się okazać niezastąpiony.

Zacznijmy od koniecznej podstawy do dalszych działań. Poniżej znajduje się kompletny kod, który zapewni możliwość manipulacji myszką:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace MultiClick
{
    public partial class Form1 : Form
    {
        // Ładujemy bibliotekę user32.dll
        [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]

        // Będziemy korzystać z funkcji mouse_event z załadownej biblioteki
        public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
        
        // Będziemy potrzebować kody różnych zdarzeń związnych z myszką
        public enum MouseEventFlags
        {
            LEFTDOWN = 0x00000002,
            LEFTUP = 0x00000004,
            MIDDLEDOWN = 0x00000020,
            MIDDLEUP = 0x00000040,
            MOVE = 0x00000001,
            ABSOLUTE = 0x00008000,
            RIGHTDOWN = 0x00000008,
            RIGHTUP = 0x00000010
        }

        public Form1()
        {
            InitializeComponent();
        }
    }
}

Pierwszą rzeczą, której warto się nauczyć to odczytywanie pozycji kursora. Przyda się to do późniejszego celowania.

Potrzebujemy przycisk i dwa pola tekstowe. Poniższy kod wpisuje współrzędne kursora po kliknięciu przycisku. Oczywiście należy uaktywnić przycisk (np. przechodząc do niego tabulatorem) i wcisnąć spację w momencie, w którym chcemy spisać współrzędne kursora. Można to rozwiązać inaczej, ale ten przykład miał być prosty. Wracając do kodu:

        private void button1_Click(object sender, EventArgs e)
        {
            int X = Cursor.Position.X;
            int Y = Cursor.Position.Y;
            textBox1.Text = X.ToString();
            textBox2.Text = Y.ToString();
        }

Jak już wiemy gdzie chcemy działać myszką – do dzieła. Czas zacząć klikać. Napisałem sobie dwie funkcje.

Za kliknięcie lewym klawiszem odpowiada funkcja LeftClick, która przyjmuje jako argumenty współrzędne punktu.

        public static void LeftClick(int x, int y)
        {
            // Ustawiamy kursor w punkcie x, y
            Cursor.Position = new System.Drawing.Point(x, y);
            // Symulujemy wcisnięcie lewego przycisku myszy
            mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
            // Symulujemy puszczenie lewego przycisku myszy
            mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
        }

Za przeciągnięcie elementu odpowiada funkcja LeftDrag, która przyjmuje jako argumenty współrzędne dwóch punktów.

        public static void LeftDrag(int x, int y, int x2, int y2)
        {
            Cursor.Position = new System.Drawing.Point(x, y);
            mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
            Cursor.Position = new System.Drawing.Point(x2, y2);
            mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
        }

Teraz wystarczy skleić powyższe kawałki kodu i napisać program (kod), który będzie klikał. Ja dla przykładu utworzyłem przycisk, którego kliknięcie spowoduje narysowanie “rysunku” w paincie:

Kod potrzebny do wygenerowania rysunku wygląda następująco:

        private void button2_Click(object sender, EventArgs e)
        {
            LeftDrag(300, 300, 300, 480);
            LeftDrag(300, 480, 480, 480);
            LeftDrag(480, 480, 480, 300);
            LeftDrag(480, 300, 300, 300);
            for (int x = 0; x < 18; x++)
            {
                for (int y = 0; y < 18; y++)
                {
                    LeftClick(300 + y * 10, 300 + x * 10);
                }
            }
        }

I to tyle. Dalsze wariacje w temacie zostawiam czytelnikom.

| Komentarze (8)

Zrzut (ekranu) strony www o dowolnym rozmiarze (C#)

Mały i prosty kawałek przydatnego kodu w C# .net – może komuś się przyda. Za pomocą opisanego poniżej programu można zapisać zrzut dowolnej strony internetowej do pliku graficznego. Nie byłoby w tym nic nadzwyczajnego gdyby nie fakt, że program potrafi wygenerować zrzut o rozmiarze większym niż ekran – bez sztucznego przewijania strony.

Przykładowy zrzut tego bloga o rozmiarze 800 na 19560 pikseli można zobaczyć w pomniejszeniu (oryginał ma ponad 5 mega) tutaj.

Jak to działa? Kontrolka przeglądarki (czyli nasze “okno”) tworzona jest w tle, dzięki czemu może mieć dowolny rozmiar, wykraczający poza granice ekranu.

Jak wygląda aplikacja? Moja wygląda bardzo prosto, ponieważ zawiera wyłącznie minimum funkcji i możliwości. Pozwala na wybranie adresu strony, nazwy pliku do którego zapisujemy zrzut i rozmiaru zrzutu.

Przy tworzeniu programu potrzebujemy kontrolki webBrowser, którą należy umieścić na formie, ale poza widocznym obszarem. Dodatkowo wykorzystałem 3 pola tekstowe i guzik.

Kod programu z drobnym komentarzem jest następujący.

// Przepisujemy wartości z GUI do zmiennych:   
	int width = Int32.Parse(textBox2.Text);
	int height = Int32.Parse(textBox3.Text);
	string url = textBox1.Text;
	string file = textBox4.Text;

// Konfigurujemy kontrolkę webBrowser
	webBrowser1.ScrollBarsEnabled = false;
	webBrowser1.Width = width;
	webBrowser1.Height = height;

// Rozpoczynamy pobieranie strony (URL):
	webBrowser1.Navigate(url);

// Czekamy, aż pobieranie się zakończy:
	while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
	{
		Application.DoEvents();
	}

// Tworzymy zmienną na zrzut o odpowiednim rozmiarze:
	Bitmap bitmap = new Bitmap(width, height);
	Rectangle bitmapRect = new Rectangle(0, 0, width, height);

// Zapisujemy zrzut strony do utworzonej zmiennej
	webBrowser1.DrawToBitmap(bitmap, bitmapRect);

// Konwertujemy zminną bitmapową do obrazka i zapisujemy w formacie PNG
	System.Drawing.Image origImage = bitmap;
	origImage.Save(file, ImageFormat.Png);;

Może się kiedyś komuś przyda. Zakładam, że mi się kiedyś przyda, więc napisałem ten wpis, żeby mi się rozwiązanie nie zgubiło.

| Komentarze (2)

TME – rewelacja!

Potrzebowałem ostatnio trochę elementów elektronicznych, więc stanąłem prze koniecznością zakupu ich przez internet (w Olsztynie jest duża hurtowania elektroniczna, która ma w ofercie wszystko tylko nie to co mi jest potrzebne). Wybrałem sklep TME (http://tme.pl/) ze względu jego olbrzymi asortyment i widoczne profesjonalne traktowanie sprawy.

Wybrałem elementy, załadowałem do koszyka i zamówiłem. Było wczesne popołudnie. Od razu dostałem e-mail z potwierdzeniem zamówienia. Wieczorem przyszedł drugi mail z informacją, że moja przesyłka została wysłana. Następnego dnia o 9 rano przyjechał kurier. Realizacja w 18 godzin (wypas!).

Zapłaciłem i odebrałem od kuriera paczkę. Spore tekturowe pudełko. Szybko do domu i otwieram. W środku zgnieciony szary papier wypełniający przestrzeń i mniejsze pudełko:

Tutaj warto przypomnieć jak pakowane są elementy kupowane w zwykłym sklepie elektronicznym. Zazwyczaj są spakowane wszystkie w jedną torebkę. Mieszają się itp. Taki patent działa i zawsze był dla mnie “standardem”. Otwieram więc mniejsze pudełko spodziewając się, że moje części będą tam wsypane. Okazuje się, że w TME postanowili być lepsi od “standardu”. Każdy z zamówionych elementów w oddzielnej torebce z pełnym opisem ile i czego jest w środku.

Wszystkie scalaki i elementy z nóżkami mogącymi się powyginać zabezpieczone gąbką:

Reasumując: rewelacja. Jedyną wadą TME, jest fakt, że tak zwaną “drobnicę” (małe kondensatory, rezystory itp.) sprzedają w dużych ilościach. Potrzebowałem dwa kondensatory 22 piko, a minimalna ilość w zamówieniu wynosiła 100 – zostało mi 98 nadmiarowych kondensatorków. Z rezystorami to samo :)

W każdym razie polecam sklep TME.

| Komentarze (3)

GPS i oszukana średnia

Używam turystycznego odbiornika GPS firmy Garmin, model GPSmap60CSx. Jest to bardzo porządny odbiornik, który dopiero w 2010 roku doczekał się swojego następcy. Urządzenie posiada przyzwoitą antenę, która pozwala na osiągnięcie deklarowanej dokładności pozycji na poziomie 3 metrów. Taka dokładność jest rewelacyjna w zastosowaniach turystycznych i nawigacyjnych. Padło pytanie, czy da się osiągnąć takim sprzętem dokładność geodezyjną (może nie na poziomie milimetrów, ale centymetry też byłby zadowalające).

Do doświadczenia użyta została zewnętrzna antena firmy Garmin, model GA-30. Antenę zamontowałem na metrowym maszcie na dachu budynku, tak aby miała możliwie dobrą widoczność nieba. GPS wykazywał ciągłą widoczność 12 satelitów (odbiornik ma 12 kanałów) i deklarował dokładność 2 metrów.

Sam odbiornik posiada funkcję zapisu punktu z uśrednianiem, które powoduje zwiększanie dokładność wraz ze wzrostem liczby pomiarów. Podłączyłem urządzenie do komputera przez USB i ustawiłem dwa równoległe pomiary. Komputer zbierał z odbiornika współrzędne z częstotliwością kilku pomiarów na sekundę. Równolegle na odbiorniku trwało uśrednianie współrzędnych.

Oczywiście przez cały czas trwania eksperymentu antena była zupełnie nieruchoma.

Pomiary zbierałem przez prawie 3 dni bez przerwy. Odbiornik przekazywał do komputera współrzędne z dokładnością (zapisu) 0,000001 stopnia. Obliczoną na odbiorniku średnią prezentował z dokładnością do 0,00001 stopnia.

Na zakończenie porównano najpierw uśrednioną pozycję z odbiornika z pozycją uzyskaną przez uśrednienie wszystkich pomiarów z komputera. Wyniki okazały się całkowicie zgodne (z dokładnością do precyzji zapisu odbiornika).

Problem pojawił się w momencie analizy błędu uzyskanej wartości. Przy obliczaniu średniej arytmetycznej błędem (niepewnością) jest odchylenie standardowe, które dla pomiarów z komputera wyniosło około 3 metrów. Dla tych samych danych odbiornik zadeklarował dokładność 0,1 metra! Pierwsza myśl zasugerowała, że odbiornik ma lepszy algorytm obliczania błędu niż zwykłe odchylenie, który wynika ze specyfiki pomiaru. Poszukałem chwilę w sieci i znalazłem kilka wzorów (nie będę przytaczał, bo nie wiem który z nich jest poprawny), które brały pod uwagę czas pomiaru – im dłuższy tym lepsza dokładność. Nie przemówiło to do mnie, więc zabrałem się za graficzną analizę.

Poniżej znajdują się 4 widoki na trójwymiarowy histogram pomiarów. Wymiar każdego słupka jest równy dokładności zapisu pomiaru czyli 0,000001 na 0,000001 stopnia. Na skalach poziomych znajdują się odległości od średniej w metrach. Na pierwszym obrazku widać znaczące nasycenie pomiarów wokół pewnego punktu – dobry znak. Oczywiście widać też, że zdarzyły się wycieczki na odległość nawet 30 metrów od centrum.

Problem widać na 2, 3 i 4 obrazku – średnia jest przesunięta w stosunku do środka piku.

Rysunki powyżej (dwa) pokazują widoki na histogram 3D z boku, więc widać tylko najwyższy słupek dla danej wartości. Prawdziwe histogramy dwuwymiarowe dla szerokości i długości geograficznej znajdują się poniżej:

Wniosek?

Wniosek jest taki, że nie da się za pomocą odbiornika GPS wyznaczyć pozycji dokładniej niż kilka metrów.

Drugi wniosek jest taki, że Garmin oszukuje przy uśrednianiu.

| Komentarze (4)

Basen Stefana-Boltzmanna

O termodynamicznych perypetiach z basenem ogrodowym pisałem już wcześniej (prawie rok temu). Wniosek był wtedy taki, że po ograniczeniu parowania poprzez przykrycie lustra wody folią z bąbelkami (żeby pływała i przylegała do wody) pozostają nam 3 źródła wymiany energii basen – otoczenie: przewodzenie i konwekcja, promieniowanie, energia słoneczna. Energie słoneczną wyeliminowałem z prezentowanego dziś doświadczenia dokonując pomiarów wyłącznie w nocy. Wcześniejsze obserwacje sugerowały, że wpływ przewodzenia jest dużo mniejszy niż promieniowania.

To woda promieniuje???

Każde ciało, mające niezerową temperaturę (w skali Kelvina!) wypromieniowuje energię. Moc tego promieniowania (czyli energia w czasie) jest opisywana przez prawo Stefana-Boltzmanna:

,

gdzie , a jest powierzchnią czynną. Powyższy wzór ma sens wyłącznie w przestrzeni, gdzie nie ma nic oprócz rozpatrywanego ciała. W ziemskich warunkach mamy otoczenie, który też promieniuje. W naszym doświadczeniu mamy basen w otoczeniu powietrza. Moc promieniowania może być oczywiście ujemna (kiedy basen jest ochładzany bo wypromieniowuje więcej niż otrzymuje z otoczenia) lub dodatnia (kiedy basen się ogrzewa). Dodatniość czy ujemność jest kwestią umowy, który kierunek jest dodatni. Ja wybrałem taki jak powyżej.

Idąc dalej mamy promieniowanie w dwie strony, którego sumaryczną moc możemy policzyć ze wzoru:

,

gdzie – temperatura powietrza, a – temperatura basenu.

Doświadczenie – wzroki

Znając temperaturę powietrza i wody, możemy policzyć średnią moc, która wynikała ze zjawiska promieniowania. Temperatura mierzona jest w sposób ciągły, po czym uśredniana w 5-minutowych blokach. Dla każdego bloku między 23 i 4 rano policzono moc i wszystkie wartości uśredniono. Obliczenia przeprowadzano bez bez brania pod uwagę powierzchni czynnej, która posłuży zaraz jako test całej teorii.

Z drugiej strony znając temperaturę początkową i końcową basenu oraz jego objętość i ciepło właściwe wody, dla każdej nocy można było policzyć (znów średnią) moc wymiany cieplnej. Liczono ze wzoru

,

gdzie – temperatura początkowa o 23, – temperatura końcowa o 4, , .

Doświadczenie – wyniki

Mamy więc moc obliczoną na dwa sposoby. Jedna wartość jest rzeczywistą mocą, a druga jest mocą wynikającą wyłącznie ze zjawiska promieniowania. Zakładając, że promieniowanie jest jedynym źródłem wymiany cieplnej powinna zachodzić relacja

.

Zebrałem dobre dane z 31 nocy. Jako dobre rozumiem takie, gdzie nie było przerw w pomiarze i gdzie basen był przykryty folią. Wykres poniżej przedstawia zależność obliczonych wartości mocy (ponieważ wszystkie wartości mocy były ujemne na wykresie został zmieniony ich znak dla czytelności):

Pozostaje wyznaczy z tych danych powierzchnię czynną. Zrobimy dopasowując do danych prostą przechodzącą przez punkt (0, 0). Otrzymujemy .

Jak to się ma do rzeczywistości? Basen ma wymiary 7,5 x 3,5 x 1,15 metra, co daje całkowitą powierzchnię 77,8 metra kwadratowego. Jak widać wartości te można uznać za zgodne (należy oczywiście przeprowadzić przyzwoity rachunek błędu!).

Podsumowanie

Potwierdza się, że fizyka działa nie tylko w laboratorium. Również moje przypuszczenie, że to właśnie promieniowanie jest kluczowym czynnikiem powodującym utratę temperatury (bez słońca i parowania) zdaje się być sensowne.

Oczywiście w rozumowaniu powyżej są pewne przybliżenia. Po pierwsze basen nie jest ciałem doskonale czarnym, a ciałem szarym. Po drugie, wartości promieniowania są różne przez różne powierzchnie (góra, boki, dno). Ponieważ wynik jest i tak dużo lepszy niż oczekiwałem nie będę poświęcał czasu i miejsca na głębszą analizę tych błędów w założeniach.

| Komentarze (5)

Sejsmograf domowej roboty – pierwsze zapisy

Bardzo chciałem podłączyć do komputera dwa identyczne sensory, ale okazało się to niewykonalne, ponieważ laptop ma wejście mikrofonowe mono. Nabyłem w tym celu w sklepie zewnętrzną kartę dźwiękową Creative na USB z wejściem stereo line-in. Niestety zewnętrzna karta w ogóle nie wyłapuje słabych sygnałów – podejrzewam, że producent wyposażył ją w moduł eliminacji szumów, który dyskwalifikuje użycie karty jako oscyloskopu.

Zapewne po dołączaniu do układu modułu wzmacniacza (zaraz za cewką dla zmniejszenia szumu) pozwoli na obserwacje dwukanałową.

W międzyczasie zrobiłem kilka pomiarów z jednym sensorem, ponieważ czytelnicy zgłosili zainteresowanie.

Na pokazanych poniżej wykresach zachowałem skalę pionową dla wszystkich pomiarów. Jednostki na skali pionowej należy traktować jako bezwymiarowe. Na skali poziomej zapisany jest numer ramki z danego pomiaru. Można go przeliczyć na czas dzieląc przez 11025, czyli częstotliwość rejestracji. Czas może posłużyć wyłącznie do obserwacji czasu trwania sygnału. Początek rejestracji miał miejsce w momencie nie mającym znaczenia.

Człowiek

Mocne tupnięcie w ziemie (przez podskok) wykonane przez dużego człowieka z dwóch odległości: jednego i pięciu metrów od sensora.

1 metr

5 metrów

Mały kamień (ok. 10 kg)

Mały kamień zrzucany z około 2 metrów na ziemię z czterech odległości: pięciu, dziesięciu, piętnastu i dwudziestu metrów od sensora.

5 metrów

10 metrów

15 metrów

20 metrów

Duży kamień (ok. 30 kg)

Duży kamień zrzucany z około 2 metrów na ziemię z dwóch odległości: dwudziestu i trzydziestu pięciu metrów od sensora.

20 metrów

35 metrów

| Komentarze

Starsze wpisy »