-->

niedziela, 18 listopada 2012

Parking Truck - 2 miesiąc

Tak jak obiecałem, dziś kolejne statystyki dla Parking Truck ;] Przez ostatni miesiąc gra nie dostała żadnej aktualizacji, niestety studia przeszkadzają w pracy nad aktualizacjami oraz nowymi produkcjami. Na pewno w następnym update dojdzie kolejnych 10 poziomów oraz wsparcie dla tabletów oraz telefonów z wysoką rozdzielczością np. Galaxy SIII, HTC One X itp. (przede wszystkim większe przyciski gazu/hamulca oraz większa kierownica).    

Po pierwszym promowanym miesiącu musiał przyjść spadek instalacji. Obecnie gra traci około 5 tyś. użytkowników dziennie pomimo tego że ma dziennie około 10 tyś. nowych instalacji. Przy takiej liczbie użytkowników którzy napłynęli w krótkim czasie było to nieuniknione. Na początek liczba dziennych instalacji:



oraz dziennych odinstalowań


oraz liczba wszystkich instalacji oraz aktywnych: 


Od 41 dnia widać wyhamowanie w przyroście liczby użytkowników, myślę że taki trend utrzyma się jeszcze przez długi czas. Być może po aktualizacji znów nastąpi drgnięcie w górę z liczbą aktywnych użytkowników. Na całkowitą liczbę  1 785 723 instalacji, aktywne to 544 971 czyli 30%, przy czym na pewno nadal ten stosunek będzie się pogarszał. 

W poprzednim miesiącu wspomniałem o statystykach dotyczących popularności telefonów na jakich jest instalowana gra, oto wykres:



Jak widać seria Galaxy od Samsunga rządzi i to na tych telefonach musimy mieć pewność że nasza aplikacja działa dobrze. W przeciwnym razie jedynki od posiadaczy SII, SIII, Ace zdecydowanie nam nie pomogą. Jeszcze jeden wykres pokazujący procentowy udział poszczególnych wersji Androida:


Jeśli zadajesz sobie pytanie jakie powinno być minimalne SDK w Manifeście to masz prostą odpowiedź... numer 8 czyli Android 2.2. Przede wszystkim dlatego że od A2.2 mamy możliwość instalowania aplikacji nie tylko w pamięci wewnętrznej telefonu ale także na karcie pamięci, A2.1 nie istnieje w zestawieniu. Widać mocny udział ICS, tu mogą pojawić się problemy z kompatybilnością i uruchamianiem aplikacji na nowych wersjach systemu. 

To wszystko w tym zestawieniu, jeżeli wydarzy się coś ciekawego to na pewno za miesiąc kolejny raz opublikuję statystyki ;] 








Czytaj dalej/Read more!

niedziela, 4 listopada 2012

CooCox dla ARM


Pakiet CooCox a ściślej CoIDE został mi polecony jako dobre i łatwe narzędzie dla mikrokontrolerów z rdzeniem ARM. IDE bazuje na Eclipse a więc ma to co najlepsze z tego środowiska. Prawdziwy killer feature dla którego chciałem wypróbować to narzędzie to dowiązywanie składni podczas pisania kodu. IAR, podobno także Keil (choć mogę się mylić) nie oferuje tego rozwiązania. Wiadomo że zamiast patrzeć po plikach nagłówkowych, PDF-ach i nie wiem gdzie jeszcze lepiej jest mieć pod ręką definicje metod zawartych w bibliotekach. Zanim dojdziemy do tego trzeba założyć projekt. Wskazówki tutaj!

Jako że miałem nie rozpakowanego STM32F0 Discovery postanowiłem zobaczyć jak pójdzie przygotowanie do migania ledem. Wybieramy ST jako producenta, później typ jak na obrazku:



Teraz czas na peryferia, warto dodać że całe dołączanie robi się samo, mamy także podgląd na przykłady producenta! (lewy panel)


Teraz musimy jeszcze ustawić toolchain, jeżeli jeszcze nie zainstalowaliśmy tego komponentu to jest do pobrania: gcc-arm-none-eabi. Po zainstalowaniu klikamy na Project  => Select Toolchain Path i wskazujemy na katalog /bin tam gdzie zainstalowaliśmy toolchain. Cała procedura została opisana bardzo jasno na stronie www.coocox.org. Po tych czynnościach wszystko powinno działać, u mnie wystąpił zgrzyt przy kompilowaniu programu. Powodem był plik system_stm32f0xx.c, powinien być on plikiem asemblerowym a nie plikiem źródłowym języka C. A więc zmiana na system_stm32f0xx.s i wszystko działa.


Debugowanie odbywa się tak jak w komercyjnych produktach, stawiamy pułapki, mamy wgląd w rejestry. Założę się że w IAR siedział bym kilkadziesiąt minut żeby stworzyć od podstaw czysty projekt, także polecam! ;]


Czytaj dalej/Read more!

sobota, 20 października 2012

Pierwszy miesiąc - Parking Truck

Pierwszy miesiąc od publikacji już minął. Siłą rzeczy aplikacja przestaje być promowana w kategorii "Nowe najlepsze" jeżeli się tam znalazła. Po tym okresie zazwyczaj aplikacja ma mniejszą dynamikę dziennych pobrań. Za miesiąc przekonamy się czy rzeczywiście tak jest, a teraz małe podsumowanie i kilka wykresów dotyczących mojej aplikacji.

Głównym celem było zdobycie 500 tyś. użytkowników w 6 miesięcy. Jest to trudne do osiągnięcia bez jakiejkolwiek promocji. Szczególnie jeżeli jest to zwykła aplikacja (nie gra), w dodatku jeśli jest jedną z wielu. Inwestowanie w takim przypadku nawet w kampanie reklamowe (admob itp.) mija się z celem. Patrząc na Google Play to gry gdzie musimy coś zaparkować są bardzo popularne. Zwykle na początku taka aplikacja jest wyszukiwana przez znawców tematu ;] po pewnym okresie następuje lawinowy wzrost liczby instalacji. Tak było w przypadku Parking Truck:


Oś pionowa to ilość nowych użytkowników każdego dnia. Oś pozioma to dzień liczony od publikacji. Widać że od 8 dnia ilość ściągnięć rosła w bardzo szybkim tempie osiągając maksymalnie 68 tyś. w jeden dzień. Taka ilość instalacji jest możliwa dzięki dostaniu się na dobre miejsca w swojej kategorii (w tym przypadku Gry => Wyścigi).  Na potwierdzenie kolejne wykresy, tym razem z serwisu appannie.com, kolejno Polska, Wielka Brytania, Stany Zjednoczone:





Jednym z elementów promocji pomocnych w zdobyciu nowych użytkowników jest napisanie o swojej aplikacji na najpopularniejszych forach np. androidcentral, xda, phandroid itp. Kolejny wykres to liczba całkowitych instalacji i aktywnych użytkowników.


Na chwilę obecną to 1 062 629 instalacji z czego 489 797 to instalacje aktywne czyli 46%. Jest to dość dobry wynik. Szczególnie że gra musiała dostać kilka aktualizacji od samego początku, które poprawiały sterowanie. Za miesiąc bardziej szczegółowy raport obejmie wersje Androida oraz urządzenia które są najpopularniejsze w rankingu i należy przyłożyć się aby aplikacja działała na nich poprawnie ;]


Czytaj dalej/Read more!

piątek, 19 października 2012

Google Play...



Google świętuje 25 miliardów pobrań aplikacji oraz całkowitą liczbę aplikacji w dawnym markecie na poziomie 670 000. Dodatkowo 1.3 mln nowych urządzeń przybywa każdego dnia . Jak się popatrzy na te liczby można sądzić że jest ok, nadal po 2 latach Android rozwija się w niesamowitym tempie, tylko że wraz z tym Google Play staje się coraz większym burdelem bez jakiejkolwiek kontroli. Dowody:

1. Skala piractwa na Androidzie jest bardzo duża. Nawet aplikacje po 3zł są piracone na masową skale (patrz Dead Trigger). Na razie nie ma rozwiązania tej kwestii. Miały być komentarze deweloperów jako odpowiedzi na komentarze użytkowników - są dla Top Developers.... Gdzie są aktualizacje delta? Z tego co wiem są one dostępne na nowych telefonach (zapewne tam gdzie jest ICS i wyżej). Na pewno na Desire Z żadnych aktualizacji cząstkowych nie zauważyłem.

2. Kupowanie głosów - jest to powszechna praktyka kiedy chcesz podnieść swoją aplikację w rankingach, takie oferty przychodzą deweloperom na maila. Żeby się wybić takich rzutów komentarzy musi być sporo przez kilka, niektórzy z tego korzystają....

3. Keywords - co mówi regulamin?

Opisy produktów nie mogą być mylące ani wypełnione słowami kluczowymi w ramach próby manipulowania rankingiem lub trafnością wyników wyszukiwania w sklepie.

A jak można zauważyć niektóre opisy nawet bardzo popularnych aplikacji zawierają na samym dole opisu tagi, które pomagają pomimo gorszych ocen i mniejszej ich ilości na wybijanie się nieregulaminowe podczas wyszukiwania. To samo tyczy się aplikacji które posiadają tylko linki do stron internetowych i w głównym activity można dostać się tylko przez nie do przeglądarki :D, jest to zabronione ale ma ktoś nad tym kontrolę?

4. Czy wszystkie aplikacje są na jednakowym poziomie? nie... przytłaczająca większość to śmieci, Google Play nie ma weryfikacji aplikacji tak jak jest to na Windows Phone. Tam aplikacja która jest zatwierdzana spełnia minimalne wymogi dotyczące jakości, co prawda deweloper czeka około dwóch dni na publikację ale użytkownik ma pewność że nic złego aplikacja nie wyprawia. Takie sprawdzanie powinno być, potwierdzają to chociażby ostatnie wydarzenia gdzie kilku deweloperów z Polski wystawiając network boostery i nie pisząc w opisie że jest to oszustwo zostało zbanowanych.



Czytaj dalej/Read more!

piątek, 21 września 2012

Parking Truck


Parkin Truck to gra w której musisz zaparkować ciężarówką. Wiem że jest trudna, ale o to właśnie chodzi :] Gra powstawała niecały miesiąc. Do dyspozycji jest 10 poziomów w których najlepiej jest uzyskać jest jak najlepszy czas. Klasyczny gatunek top-down w którym mamy widok z góry. Na chwilę obecną nie są wspierane urządzenia qvga (do chwili oprogramowania zoomu). Gra była testowana na Desire Z i Galaxy Mini 2. Przystosowana jest także do tabletów. Obszar  gry to 1280x800 a więc rozdzielczość tabletów (tam mamy pełny widok na mapę). Najbliższy update przyniesie kolejne poziomy, być może zoom oraz klasyczną kierownicę znaną np. z gry Dr. Parking. Możesz pobrać TUTAJ. Kilka screenów z rozgrywki:





Miłego grania!

Czytaj dalej/Read more!

sobota, 8 września 2012

SharedPreferences - Android

Czasami chcemy zachować ustawienia aplikacji skonfigurowane przez użytkownika. Może to być informacja tekstowa, liczbowa ale także logiczna. Dotyczy to np. ustawień dźwięku, motywu aplikacji po włączeniu, trybu poziomego/pionowego itd. Do zachowania takich informacji służy klasa SharedPreferences. Posługiwanie się nią jest bardzo proste. Wystarczy nadać nazwę naszej preferencji, zadeklarować tryb dostępu i już możemy się nią swobodnie posługiwać w naszym kodzie. Dużą zaletą jest to iż do tej samej preferencji możemy dostać się z każdej klasy. A więc nie musimy używać np. takich konstrukcji:




Ale możemy zadeklarować potrzebne nam obiekty:



A oprogramowanie zapisu i odczytu wygląda następująco:




Czytaj dalej/Read more!

niedziela, 12 sierpnia 2012

OutOfMemoryError - Android

Zaczynając pisać aplikacje na Androida nie przywiązywałem zbyt dużej wagi do jakości kodu i optymalizacji. To pociągnęło za sobą skutki w postaci błędów zgłaszanych przez użytkowników Milionera. Najczęstszym błędem przewijającym się w raportach był właśnie tytułowy błąd przepełnienia pamięci, dokładnie: java.lang.OutOfMemoryError: bitmap size exceeds VM budget...

Mimo że na moim Desire Z wszystko chodziło tak jak powinno to nawet lepsze telefonu z Androidem miały ten problem. Pierwszym krokiem było zorientowanie się jaka jest dostępna pamięć w każdej kolnej wersji Androida i jak to wszystko działa. W Androidzie wyróżniamy heap size czyli pamięć do której lokowane są nowo tworzone obiekty. Na starszych Androidach 1.6 ten obszar wynosił 16 MB. Dla wersji 2.1 to już 24 MB. Desire Z z Androidem 2.3.3 ma 32 MB. Oczywiście nie są to sztywne wartości i gorsze telefony mają mniej pamięci na aplikacje.

Warto pamiętać że istnieje także garbage collector, czyli coś w rodzaju sprzątacza. Niepotrzebne, niepowiązane obiekty są usuwane a tym samym zwalniana jest część pamięci. W wersji 2.3 garbage collector pracuje częściej i szybciej niż w 2.1. Choć i tak dla dynamicznej rozgrywki 2D/3D nie jest polecane wywoływanie go, ponieważ da się odczuć negatywny wpływ na płynność animacji.

Winą przepełniania była animacja z 11 klatek (pliki .jpg mocno skompresowane). Można było sobie poradzić w taki sposób:



Wykrywamy heap size, jeśli jest więcej niż 30 MB to możemy odtwarzać animację. To załatwiło sprawę dla słabszych telefonów (Galaxy Mini itp.), ale nie rozwiązało problemu całkowicie. Pomiędzy rozgrywkami użytkownicy trafiali nadal na ten błąd i znów wszystko się sypało. Powodem było nie czyszczenie pamięci po skończonej rozgrywce. Po każdej grze coraz więcej pamięci było zajętej przez animację a garbage collector przez istniejące referencje obiektów nie mógł tego ruszyć. Rozwiązanie takiego problemu:




Kluczową metodą jest zastąpienie animacji czymś "lżejszym" czyli np. kolorem i wywołanie System.gc(). Jest to przeciążona metoda onDestroy() dlatego nie musimy w takich przypadkach obawiać się o opóźnienia. Powyższy zabieg skutecznie przerwał serię wspomnianych błędów, być może nie jest bardzo elegancki ale działa ;]

Czytaj dalej/Read more!

środa, 8 sierpnia 2012

HD47780 - sterowanie 3 liniami [MSP430/STM8]



Wyświetlacze oparte o sterownik HD47780 są nadal bardzo popularne. Bardzo łatwo je obsłużyć, a w sieci jest cała masa przykładów, w dodatku są tanie. Najprościej  obsłużyć je w 4-bitowym trybie pracy. W takiej konfiguracji musimy poświęcić 6 wyjść mikrokontrolera (RS, E, D4, D5, D6, D7). W moim przypadku stosując takie rozwiązanie do Lanchpad'a od TI zająłem praktycznie wszystkie linie MPS430G2231, dlatego też postanowiłem poszukać jakiegoś rozwiązania, które pozwoliło by ominąć problem zajętych wyjść. Po kilku chwilach trafiłem na praktycznie gotowe rozwiązanie - 3Wires.



Na powyższym schemacie widać że potrzebny jest nam 8-bitowy rejestr przesuwny 74HC164. Takie rozwiązanie pozwala zmniejszyć sterowanie do 3 linii danych. Czas wcielić pomysł w życie, szybki layout i mamy płytkę rozmiarowo dopasowaną do standardowego wyświetlacza 2x16 ;]





Teraz jeszcze tylko trochę kodu dla MSP430:



oraz STM8:



I jak widać poniżej wszystko działa :]




Czytaj dalej/Read more!

sobota, 4 sierpnia 2012

Holo Compass - Android



Z nudów powstała druga wersja, tym razem dopasowana graficznie do Android 4.0 oraz wyżej. W założeniu miało być minimalistycznie ;]

Holo Compass




Czytaj dalej/Read more!

środa, 1 sierpnia 2012

Battery Hack - SanDisk Sansa C240

Jakiś czas temu współpracy odmówił odtwarzacz MP3 SanDisk Sansa C240. Problem pojawił się z dnia na dzień, mp3 razem z baterią nie chciała działać. Po podłączeniu do zewnętrznego źródła chodziła bez problemu i pokazywała że ładuje baterię. Jednak po odłączeniu, odtwarzacz znów się wyłączał.

Bateria na zaciskach pokazywała 0V a prąd ładowania 0mA. Ale trzeba wiedzieć że pomiędzy zaciskiem i baterią jest mała płytka PCB z miniaturowym układem do kontroli ładowania ogniwa (zwykle stabilizator liniowy + układ detekcji napięcia baterii) ;] Po zdjęciu foli maskującej, baterię można śmiało sprawdzić przed tym układem. Okazało się że jest tam około 2.7V a więc z baterią wszystko jest w porządku pomimo tego że ma zdecydowanie za małe napięcie jak na baterię litową. A więc winny jest układ kontrolujący stan ładowania na zdjęciu poniżej:




Taki układ można śmiało wymienić we własnym zakresie. Miałem podobną część z innej już niesprawnej baterii. Co prawda dawca ładował mniejszą baterię ale w niczym to nie przeszkadza, ponieważ co najwyżej mp3 będzie ładował się troszkę wolniej. Ważne jest tutaj to aby nie pomylić + z - ;], układ po wlutowaniu:



Po wymianie od razu widać efekty. Wystarczy poprawić montaż, zaizolować i mp3 dalej będzie grać ;)



Czytaj dalej/Read more!

sobota, 21 lipca 2012

Kompilacja jądra - metoda Debiana

Kompilacja kernela może wydawać się trudna ale tylko z pozoru ;) opiszę tutaj procedurę związaną z tzw. metodą debiana. A więc praktycznie systemy bazujące na Debianie (np. Ubuntu, Mint itp.) mają identyczną ścieżkę postępowania. System na którym kompilowałem kernel to Debian Squeeze (stable), stare jądro to 2.6.32, nowe do kompilacji to 3.1.6 ściągnięte prosto z kernel.org. Sprzęt to Asus A3HF.

Przed samą kompilacją warto wiedzieć jaki sprzęt posiadamy, służą do tego następujące polecenia:


Powyższe informacje mogą pomóc w konfiguracji kernela pod nasz sprzęt. Krok 1 to instalacja kilku paczek potrzebnych do przeprowadzenia całego procesu.
Otwieramy konsolę i zapodajemy:

żeby mieć pewność że mamy świeży system, jeśli ktoś używa apt-get to może bez problemu go użyć, ważne jest to aby nie mieszać aptitude z apt-get'em. Przy wszystkich poleceniach będę używał sudo, ponieważ mam taki zwyczaj jak najmniej pracować na użytkowniku root :D, jeśli chcecie to pominąć wystarczy zalogować się na roota poleceniem su. Następnie:

powyższe pakiety są potrzebne do kompilacji, libncurses5-dev jest potrzebne jeżeli chcemy pracować w konsoli. Możemy go nie instalować jeśli będziemy konfigurować wszystko przez GUI (musimy mieć wtedy GTK dla Gnome lub QT dla KDE – biblioteki dla interfejsów graficznych).
Po zainstalowaniu musimy ściągnąć nasz kernel do kompilacji, wchodzimy na kernel.org i klikamy najlepiej na ostatnią stabilną wersję ;> lub używamy wget'a, w moim przypadku:

po ściągnięciu przenosimy nasz kernel do /usr/src i tam też przechodzimy:

rozpakowujemy archiwum z jądrem:

a następnie tworzymy symlink do naszego katalogu z kernelem i przechodzimy do niego:

teraz najwygodniej będzie skopiować plik konfiguracyjny ze starego jądra po to by mieć gwarancję że nowe jądro będzie dobrze działać niż męczyć się z ustawianiem wszystkiego w przypadku braku tego pliku.

poleceniem ls -a upewniamy się że skopiowaliśmy plik konfiguracyjny.
Teraz zaczynamy konfigurację:

Ja użyłem menuconfig i dalszy opis jest dla konfiguracji w terminalu. Powinno pojawić się menu konfiguracji podobne do tego poniżej:


wybieramy Load an Alternate Configuration File i ładujemy plik .config

Po menu poruszamy się strzałkami ;] jeśli jest możliwość zaznaczenia czy moduł ma się znajdować, być wkompilowanym w jądro lub ma go nie być to operujemy spacją lub klawiszami Y (wkompilowany), N(nie chcemy w ogóle), M(będzie figurował jako moduł). Po trzech dolnych opcjach (Select/Exit/Help) poruszamy się klawiszem TAB. Jeżeli wchodzimy głębiej w opcje to wyjść musimy poprzez Exit (o jeden poziom w górę).

Po wejściu w General setup ważne jest opcja Initial RAM filesystem.... podświetlona na screenie. Jeśli nie chcemy bawić się po instalacji z ram dyskiem należy tą opcję pozostawić jako wbudowaną w jądro. Inaczej musieli byśmy ręcznie wygenerować plik inicjalizujący system plików.


Kolejną opcją wartą do przejrzenia jest sekcja Processor type and features, zaznaczamy tam przede wszystkim rodzinę procesora (dla mnie Pentium M), ponieważ Celeron M jest blisko związany z tą rodziną a opcji Celerona M nie ma. Odznaczyłem też Support for big SMP... ta opcja dotyczy maszyn wieloprocesorowych. Jako że kompilacja przygotowuje kernel dla laptopa to odznaczam także wcześniej zaznaczone Toshiba/Dell laptop support bo do mojego Asusa nie są one potrzebne. Wszystko widać na poniższym screenie ;]:


Jasne jest to iż nie zmieniamy opcji których nie jesteśmy pewni albo nie wiemy co robią ale jeśli np. wiemy że mamy kartę od Nvidi to śmiało możemy odznaczyć sekcję ze sterownikami do Radeona, zintegrowanych kart Intela itp. Tak jak poniżej ja odznaczam AMD/Via C7/Cyrix i nForce2.


Ostatnim podstawowym działem jest File system, zaznaczone są tam moduły dotyczące obsługi różnych systemów plików. Zostawiłem wszystko tak jak było standardowo, nigdy nie wiadomo co zamontujemy w naszym systemie ;>


Po tej krótkiej konfiguracji cofamy się do głównego menu i dajemy Save an Alternate Configuration File lub zaznaczamy Exit, potwierdzamy i kiedy wyskoczy opcja zapisu pliku konfiguracyjnego zatwierdzamy Yes :]
teraz jedna ważna rzecz, podczas pierwszej kompilacji pojawił mi się błąd

I wiem że jest to w tym momencie powszechny problem, aby go rozwiązać należy otworzyć nasz plik konfiguracyjnym dowolnym narzędziem do edycji tekstu (jesteśmy cały czas w /usr/src/linux) np.

odszukujemy

i zmieniamy na:

i to załatwia sprawę (niestety czasem takie bugi się zdarzają.... powyższy wynika z umieszczenia lguest w ./Documentation/virtual, w starszych wersjach plik był w ./Documentation i dlatego teraz sypie się wszystko) no i ostatnie polecenie:

gdzie
--append-to-version =– nasza nazwa kernela
--revision = numer naszej autorskiej wersji

i teraz dość długa przerwa, jądro się kompiluje. Zabiera to chwilę czasu (w moim przypadku około 2 godz.). Do powyższego polecenia można dodać opcję -jX gdzie X to liczba rdzeni procesora.

Po skompilowaniu w katalogu nadrzędnym (/usr/src) stworzyły się dwie paczki, jedna z kernelem a druga z plikami nagłówkowymi. Obie instalujemy

po instalacji uruchamiamy ponownie sprzęt i wybieramy w menu Gruba nowe jądro :D

Czytaj dalej/Read more!

wtorek, 17 lipca 2012

Real Compass - Android

Real Compass to nie tylko zwykły kompas. Został zbudowany w oparciu o silnik grafiki 2D. Dlatego też jest bardzo płynny w stosunku do innych kompasów znajdujących się w Google Play, ale jest też bardzo interaktywny. Można go rozbić, naprawić. Polecam!

Real Compass Lite

Real Compass


Czytaj dalej/Read more!

poniedziałek, 2 lipca 2012

Microstrip Calc & Ansoft Designer

If you don't know how to use Microstrip Calc for your circuits, you should read it! :) I will be using Microstrip Calc to calculate impedances, wavelength and microstrips for one stage Wilkinson divider (working at 3Ghz, Z0 = 50 Ohm) and Ansoft Designer (PC) to plot transmission and insulation between ports. On start we have to know what PCB we will use. It determines permeability (Er), trace/dielectric thickness. Listed parameters impact on impedances and wavelengths.

Normal FR4 PCB has:
- Er around 4.7
- trace thickness : 34 um (1.34 mil)
- dielectric thickness : 1.55 mm (62 mil)

I chose special PCB (RT Duroid 5870), it has Er - 2.33, dielectric thickness - 0.787 and trace thickness equal to 17 um (0.017 mm) as you can see below (from datasheet).





 Now we are ready to use Microstrip Calc. First selsect Wilkinson divider and write in parameters:


Now we have to remember our impedances (Z1, Z0) and λ. In the next step we can calculate our microstrips from given impedances.



Fill in Er, B, T and Z0, click Synthesize and we will get W (width of microstrip). Do it again with Z0 = 71 Ohm. This is the moment to run Ansoft Designer (Getting Started). Ansoft will open new project. Do fallowing steps:

1. Add Cicruit Design: Click Project > Insert Circuit Design, in new window (Choose Layout) click none.

2. Add microstrip: Click Circuit > TRL > Microstrip > Single, at first time we have to add our PCB. It should look like in the picture:


In next window write in sizes of microstrip and click Analyze then Add. Now we have one microstrip. Copy it four times (3 ports - Z0: 50 Ohm, and 2 impedances Z1: 71 Ohm for Wilkinson). 

3. Add Resistor: Click Search tab in left panel. Search for RES, then insert it. 

4. Add Ports: Click Draw > Interface Port. Now we have to change port to microwave port. Right click on port, select Properties > Edit (Edit Port) and select Microwave.

Our circuit should look like in the picture below:



5. Add and run Analyze: Click Circuit > Add Solution Setup, in window click next. In right window click F (frequency), go to Edit and choose start/stop frequency and step (smaller step cause that plot will be more accurate). After go to Circuit > Analyze. Right click on Results and create two reports, first with S11, S22, S33 and second with S21, S31, S32. I got fallowing characteristics:



As you can see our 3Ghz frequency has offset around 300Mhz. We can correct it by extending length of our microstrips (smaller frequency = more physical length). After it I got:




Now we have great characteristics related with insulation (S11, S22, S33) and transmission (S21, S31). You can do it with other couplers/dividers from Microstrip Calc :)

Czytaj dalej/Read more!