Którz nie miał problemu z wyszukaniem jakiś informacji czy plików pdf, a googlowe typefile:pdf oprócz tego co oczekiwaliśmy wyrzucało dóżą liczbę śmieci, i tu z pomocą przychodzi:
Pikownia(niestety ma dzienny limit wyszukiwań).
Oraz bezplatna
Konrad Wiśniewski
środa, 21 stycznia 2015
wtorek, 15 kwietnia 2014
Wprowadzenie do projektowania filtrów i Analysis Tool (FDATool)
Konstrukcja filtra i Analysis Tool (FDATool) jest potężnym graficzny interfejs użytkownika (GUI) w Signal Processing Toolbox ™ do projektowania i analizy filtrów.
FDATool umożliwia szybkie projektowanie filtrów cyfrowych FIR lub IIR przez ustawienie właściwości filtra, import filtrów z MATLAB ® lub przez dodawanie, przenoszenie lub usuwanie biegunów i zer. FDATool dostarcza także narzędzi do analizy filtrów, takich jak wykresy odpowiedzi impulsowej i fazowej i biegun zera.
Można użyć FDATool jako wygodną alternatywę projektowania filtrów wobec wiersza poleceń.
1. Pierwsze kroki
2. Projektowanie filtru
3. Inne rodzaje analiz
4. Porównanie projektu w stosunku do specyfikacji
5. Zmiana jednostek na osi wykresu
6. Znakowanie punktów danych
7. Optymalizacja projektu
8. Korzystanie z odmiennej struktury filtra
9. Zmiana parametrów analizy
10. Ekspotrowanie filtra
11. Generowanie pliku Matlab(*.m)
12. Kwantyzacja współczynników(konwersja) Filtra
13. Zastosowanie
14. Dodatkowe funkcje
Porada dnia(Tip of the Day) wyświetla okno dialogowe z sugestiami dotyczących korzystania z FDATool. Następnie wyświetlone zostanie GUI z domyślnym filtrem.
W kolejności od lewej do prawej, przyciski są
- Charakterystyka amplitudowa
- Charakterystyka fazowa
- Charakterystyka amplitudowo-fazowa
- Odpowiedź opóźnienie grupowe
- Opóźnienia fazowe
- Odpowiedzi impulsowej
- Odpowiedź skokowa
- Rozkład biegunów i zer
- Współczynniki filtrów
- Informacja o filtrze
FDATool umożliwia szybkie projektowanie filtrów cyfrowych FIR lub IIR przez ustawienie właściwości filtra, import filtrów z MATLAB ® lub przez dodawanie, przenoszenie lub usuwanie biegunów i zer. FDATool dostarcza także narzędzi do analizy filtrów, takich jak wykresy odpowiedzi impulsowej i fazowej i biegun zera.
Można użyć FDATool jako wygodną alternatywę projektowania filtrów wobec wiersza poleceń.
1. Pierwsze kroki
2. Projektowanie filtru
3. Inne rodzaje analiz
4. Porównanie projektu w stosunku do specyfikacji
5. Zmiana jednostek na osi wykresu
6. Znakowanie punktów danych
7. Optymalizacja projektu
8. Korzystanie z odmiennej struktury filtra
9. Zmiana parametrów analizy
10. Ekspotrowanie filtra
11. Generowanie pliku Matlab(*.m)
12. Kwantyzacja współczynników(konwersja) Filtra
13. Zastosowanie
14. Dodatkowe funkcje
Ad. 1. Pierwsze kroki
Wpisz fdatool w wierszu poleceń MATLAB.Porada dnia(Tip of the Day) wyświetla okno dialogowe z sugestiami dotyczących korzystania z FDATool. Następnie wyświetlone zostanie GUI z domyślnym filtrem.
GUI ma trzy główne obszary:
-The Current Filter Information region()
-The Filter Display region()
-The Design panel()
Górna część GUI wyświetla informacje na temat specyfikacji i jego zachowanie w funkcji częstotliwości.
The Current Filter Information region w lewym górnym rogu wyświetla właściwości filtra(jego strukturę), wskazuje stabilność oraz liczbę sekcji. Zapewniony jest również dostęp do menadżera Filtrów w przypadku pracy z wielma filtrami.
The Filter Display region, w prawym górnym rogu, wyświetla zachowanie amplitudy w funkji częstotliwości filtra.
Dolna połowa GUI jest interaktywna część FDATool. The Design Panel, w dolnej połowie jest miejscem gdzie definiujemy preferencje filtra i kontrolujemy co jest wyświetlane w gurnej częsci GUI. Pola w tej części mogą się różnić w zależności od wybranych preferencji.
Narzędzie zawiera pomoc kontekstowa. Możesz kliknąć prawym przyciskiem myszy lub kliknąć przycisk "Co to jest?" (oznaczony jako kursor myszki ze znakiem zapytania, pierwszy z prawej strony),
aby uzyskać informacje na temat różnych części GUI.
Ad. 2. Projektowanie filtru
Dla przykładu zaprojektujemy filtr dolnoprzepustowy, przez które przejdą wszystkie częstotliwości mniejsze ok 20% częstotliwości Nyquista(połowa częstotliwości próbkowania) i tłumi większe bądź równe 50% częstotliwości Niquista. Użyjemy filtra FIR Equiripple z tymispecyfikacjami:
- Tłumieie 1dB w paśmie przenoszenia
- Tłumieie 80dB w paśmie tłumienia
- Częstotliwość pasma przepustowego 0,2 [znormalizowana 0 do 1]
- Częstotliwość pasma zaporowego 0,5 [znormalizowana 0 do 1]
1. Wybierz filtr dolnoprzepustowy(Lowpass) z menu rozwijanego w Response Type oraz Equiripple w FIR Design Method
2. Wybierz Specify order w Filter Order i wpisz wartość 30.
3. Opcia FIR Equiripple ma możliwość zmiany Density Factor, daje nam to kontrolę nad gęstością siatki częstotliwości. Zwiększenie tej wartości powoduje lepsze odzwierciedlenie zachowania filtru, jednak wydłuża czas obliczeń, wartość 20 jest wystarczająca.
4. Wybierz Normalized (0 to 1) w rozwijanym menu Unit(Frequency Specifications).
5. Wpisz 0,2 dla wpass i 0,5 dla wstop w Frequency Specifications.
6. Wpass i Wstop, w Magnitude Specifications zostaw te wartości na 1.
7. Po ustawieniu specyfikacji projektowych, kliknij przycisk Filter Analysis w dolnej części interfejsu graficznego. Wartości powinny być zgodne z wykresem powyżej.
Ad. 3. Inne rodzaje analiz
- Charakterystyka amplitudowa
- Charakterystyka fazowa
- Charakterystyka amplitudowo-fazowa
- Odpowiedź opóźnienie grupowe
- Opóźnienia fazowe
- Odpowiedzi impulsowej
- Odpowiedź skokowa
- Rozkład biegunów i zer
- Współczynniki filtrów
- Informacja o filtrze
Ad. 4. Porównanie projektu w stosunku do specyfikacji
FDATool pozwala zmierzyć, jak bardzo Twój projekt spełnia złożenia specyfikacji. W tym celu należy zmienić na osi y na Magnitude(patrz Ad. 5), następnie z menu -> View -> Specification Mask, powinniśmy uzyskać widok jak poniżej.
- Równań stanu(State-Space)
- Formy bezpośredniej filtra FIR
- Transponowanej formy bezposredniej filtra FIR
- Formy bezpośredniej symetrycznego filtra FIR
Ad. 5. Zmiana jednostek na osi wykresu
Można zmienić jednostki X lub osi Y, klikając prawym przyciskiem myszy na etykiecie osi i wybierając żądane jednostki.
Ad. 6. Znakowanie punktów danych
Na wykresie możemy kliknąć w dowolnym miejscu, aby dodać znacznik danych, który wyświetla wartośc w danym miejscu. Kliknięcie prawym przyciskiem myszy na znaczniku danych, wyświetla menu, w którym można przenieść, usunąć lub dostosować wygląd wskaźników danych.
Ad. 7. Optymalizacja projektu
Aby zmniejszyć komplikację filtra i jego koszt implementacji w strukturze fizycznej, można zmniejszyć liczbę współczynników za pomocą opcji Minimum Order w panelu projektu(Filter Order w dolnej połowie GUI).
Ad. 8. Korzystanie z odmiennej struktury filtra
Powyższy filtr to Direct-form FIR. Taka jego postać słóży do realizacji sprzętowej. Można użyć Convert Structurez EDIT w menu do zmiany jego struktury. Filtry mogą być przekształcone w następujących reprezentacji:- Równań stanu(State-Space)
- Formy bezpośredniej filtra FIR
- Transponowanej formy bezposredniej filtra FIR
- Formy bezpośredniej symetrycznego filtra FIR
Ad. 9. Zmiana parametrów analizy
Klikając prawym przyciskiem myszy na wykresie i wybierając Analysis Parameters, możemy wyświetlić okno dialogowe do zmiany parametrów analizy(można również wybrać Analysis Parameters, w menu Analysis).Ad. 10. Ekspotrowanie filtru
Matlab uożliwia wyeksportowanie filtru do następujących miejsc:
- MATLAB workspace
- MAT-file
- Text-file
Aby tego dokonać wybieramy z menu Plik, Export:
MATLAB umożliwia wybranie formy w jakiej zostaną zapisane rezultaty naszej pracy np. współczynniki(wykorzystywane w FPGA do filtracji).
Można użyć komend GET i SET z wiersza poleceń MATLAB, aby mieć dostęp, boądź zmieniać współczynniki filtra.
Ad. 11. Generowanie pliku Matlab(*.m)
FDATool pozwala generować kod MATLAB(pliki .m), aby ponownie utworzyć filtr. Dzięki temu można umieścić swój projekt w istniejącym kodzie lub zautomatyzować tworzenie swoich filtrów w skrypcie.
Wybierz z menu Plik Generate MATLAB code.
Poniższy kod został wygenerowany z filtra który zaprojektowaliśmy powyżej:
Wybierz z menu Plik Generate MATLAB code.
Poniższy kod został wygenerowany z filtra który zaprojektowaliśmy powyżej:
Ad. 12. Kwantyzacja współczynników(konwersja) Filtra
Jeśli jest zainstalowany DSP System Toolbox ™, ustawienia parametrów kwantyzacji współczynników filtra dostępne są na pasku bocznym.
Można użyć tego panelu do konwersji i analizy filtrów podwójnej precyzji. Z DSP System Toolbox można konwertować filtry zarówno z pojedyńczej do podwójnej precycji jak i w drugą stronę. Posiadacze Fixed Point Toolbox mogą też konwertować do fixed-point precision. Należy pamiętać, że nie można mieszać zmiennoprzecinkowych i stałoprzecinkowych operacji arytmetycznych w filtrze.
Ad. 13. Zastosowanie
FDATool umożliwia generowanie różnego rodzaju kodów reprezentujących filtr. Na przykład, można wygenerować pliki nagłówkowe w jzyku C, współczynniki Xilinx pliki (COE) (z DSP System Toolbox) i VHDL, Verilog oraz stanowisk badawczych (z filtrem projekt HDL Coder ™).
Ad. 14. Dodatkowe funkcje
FDATool jest integralną częścią produktów MathWorks ™
- DSP System Toolbox- dodaje zaawansowane techniki filtracji FIR i IIR(m. in. Filter Transformation, Multirate filters)
- Embedded Coder™- Generuje, buduje i wdraża kod dla procesorów Texas Instruments C6000.
- Filter Design HDL Coder- Generowanie współczynników do filtrów w VHDL i Verilog
- Simulink®- Generuje filtry do bloków simulinka.
sobota, 15 marca 2014
Jak zapalić diode stm32F4 trochę teorii
Budowa i obsługa portów wejść/wyjść
Porty we/wyj mogą pracować w jednym z sześciu trybów
- jako wejście
"pływające", bez wewnętrznego podciągnięcia,
z podciągnięciem do napięcia zasilania(pull-up),
z podciągnięciem do masy zasilania(pull-down),
-jako wyjście
jako otwarty dren(open-dren)
symetryczne(push-pull)
Porty we/wyj mogą pracować w jednym z sześciu trybów
- jako wejście
"pływające", bez wewnętrznego podciągnięcia,
z podciągnięciem do napięcia zasilania(pull-up),
z podciągnięciem do masy zasilania(pull-down),
-jako wyjście
jako otwarty dren(open-dren)
symetryczne(push-pull)
Opis rejestrów dotyczących wejść wyjść:
Lp. | Nazwa | Opis |
1 | GPIOx_CRL | Konfiguracja młodszej części portu |
2 | GPIOx_CRH | Konfiguracja starszej części portu |
3 | GPIOx_IDR | Rejestr danych wejściowych, tylko do odczytu, przechowuje stan danego portu |
4 | GPIOx_ODR | Rejestr danych wyjściowych |
5 | GPIOx_BSRR | Ustawienie dla zerowania określonych pinów w porcie |
6 | GPIOx_BRR | Zerowanie określonego pinu |
7 | GPIOx_LCKR | Rejestr blokujący porty wejść/wyjść |
8 | AFIO_EVCR | Rejestr konfiguracji przerwań |
9 | AFIO_MAPR | Konfiguracja wyprowadzeń debugera i przemapowania portów |
10 | AFIO_EXTICR1 | Rejestr konfiguracji przerwań |
11 | AFIO_EXTICR2 | Rejestr konfiguracji przerwań |
12 | AFIO_EXTICR3 | Rejestr konfiguracji przerwań |
13 | AFIO_EXTICR4 | Rejestr konfiguracji przerwań |
Parametry portów wejść wyjść:
Prąd wyjściowy z pinu | 8 | mA |
Prąd wejsciowy do pinu(typowy) | 8 | mA |
Prąd wejściowy do pinu (maksymalny) | 20 | mA |
Sumaryczny prąd wyjścowy z nóżek całego mikrokontrolera | 150 | mA |
Sumaryczny prąd wejściowy do nóżek całego mikrokontrolera | 150 | mA |
czwartek, 13 marca 2014
Jak zapalić diode stm32F4 Coocox COIDE
Programy testuje na płytce STM3241G-EVAL, diody mam na pinach: PG6, PG8, PC7, PI9, korzystać będę z pierwszych dwóch.
1. Tworze nowy projek dla STM32F417IG (opisałem w poprzednim artykule)
2. Dodaje bibliotekę GPIO z repozytoriów(reszta niezbędnych bibliotek doda się sama).
3. Do pliku main.c wklejamy:
#include "stm32f4xx_gpio.h" //standardowa biblioteka wejsc/wyjsc
#include "stm32f4xx_rcc.h" //Reset and Clock Control
GPIO_InitTypeDef GPIO_InitStructure; //inicjalizacja
void Delay(__IO uint32_t nCount); //definicja funkcji opóźnienia programowego(nie sprzętowego)
int main(void)
{
SystemInit(); //inicjalizacja
/* Włączenie zegara dla konkretnego portu, domyślnie jest wyłączony dla zaoszczędzenia energii */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
/*tu wpisujemu jaki port chcemy zainicjalizowac, w moim przypadku G*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8;
/* tutaj wpisujemy jakie piny na danym porcie chcemy włączyć jak wyżej pisałem u mnie to pin 6 i 8 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
/*wybierasz między IN(wejście) OUT(wyjście), AF(funkcja alternatywna/alternate function) oraz AN(tryb analogowy/analog mode)*/
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
/*wybór między Push Pull(PP) a Open Dren(OD)*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
/* 2, 25, 50, 100 MHz takie częstotliwości mamy do wyboru przy standardowej bibliotece, zmiany można nanieść w funkcjach zegara i do uzyskania jest chyba każda częstotliwość z zakresu 2-100 MHz */
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
/*
w tej części wybieramy czy będzie podciągnięcie do mazy, zasilania, czy też bez podciągnięcia, szarzej opisałem to w poprzednim artykule
*/
GPIO_Init(GPIOG, &GPIO_InitStructure);
while(1) // pętla nieskończona
{
GPIO_SetBits(GPIOG, GPIO_Pin_6); // ustawienie pinu 6 w stan wysoki(logiczna jedynka)
Delay(0x3FFFFF); // opóźnienie
GPIO_SetBits(GPIOG, GPIO_Pin_8); // ustawienie pinu 8 w stan wysoki
Delay(0x3FFFFF); //opóźnienie
GPIO_ResetBits(GPIOG, GPIO_Pin_6|GPIO_Pin_8); //skasowanie bitu, czyli ustawienie w stan niski
Delay(0xFFFFFF); // opóźnienie
}
}
void Delay(__IO uint32_t nCount) //funkcja opóźnienia
{
while(nCount--)
{
}
}
3. Do pliku main.c wklejamy:
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
GPIO_InitTypeDef GPIO_InitStructure; //inicjalizacja
void Delay(__IO uint32_t nCount); //definicja funkcji opóźnienia programowego(nie sprzętowego)
int main(void)
{
SystemInit(); //inicjalizacja
/* Włączenie zegara dla konkretnego portu, domyślnie jest wyłączony dla zaoszczędzenia energii */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);
/*tu wpisujemu jaki port chcemy zainicjalizowac, w moim przypadku G*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8;
/* tutaj wpisujemy jakie piny na danym porcie chcemy włączyć jak wyżej pisałem u mnie to pin 6 i 8 */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
/*wybierasz między IN(wejście) OUT(wyjście), AF(funkcja alternatywna/alternate function) oraz AN(tryb analogowy/analog mode)*/
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
/*wybór między Push Pull(PP) a Open Dren(OD)*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
/* 2, 25, 50, 100 MHz takie częstotliwości mamy do wyboru przy standardowej bibliotece, zmiany można nanieść w funkcjach zegara i do uzyskania jest chyba każda częstotliwość z zakresu 2-100 MHz */
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
/*
w tej części wybieramy czy będzie podciągnięcie do mazy, zasilania, czy też bez podciągnięcia, szarzej opisałem to w poprzednim artykule
*/
GPIO_Init(GPIOG, &GPIO_InitStructure);
while(1) // pętla nieskończona
{
GPIO_SetBits(GPIOG, GPIO_Pin_6); // ustawienie pinu 6 w stan wysoki(logiczna jedynka)
Delay(0x3FFFFF); // opóźnienie
GPIO_SetBits(GPIOG, GPIO_Pin_8); // ustawienie pinu 8 w stan wysoki
Delay(0x3FFFFF); //opóźnienie
GPIO_ResetBits(GPIOG, GPIO_Pin_6|GPIO_Pin_8); //skasowanie bitu, czyli ustawienie w stan niski
Delay(0xFFFFFF); // opóźnienie
}
}
void Delay(__IO uint32_t nCount) //funkcja opóźnienia
{
while(nCount--)
{
}
}
środa, 12 marca 2014
Tolerancja rezystora
Tolerancja rezystora
Rezystancja nominalna/znamionowa - rezystancja podawana przez producenta na obudowie rezystora.
Rezystancja nominalna/znamionowa - rezystancja podawana przez producenta na obudowie rezystora.
Tolerancja rezystora to odchylenie rezystancji, które może różnić wartość nominalną od zmierzonej w temperaturze 25 °C bez przyłożonego obciążenia.
Innymi słowy, tolerancja rezystora to wartość o którą, rezystancja opornika może zmieniać się od podanej wartości. Jak rezystor ma większą tolerancję to jego faktyczna wartość bardziej może się zmieiać, albo w górę lub w dół od jej wartości nominalnej. Mniejsza tolerancji Rezystor, mniejsze wahania od wartości nominalnej, a więc jest bardziej precyzyjny.
Najczęstszym sposobem określania tolerancji rezystora są procenty. Na przykład, rezystor, który ma tolerancję ± 10%, może zmieniać się o 10% w stosunku do wartości zadanej zarówno w górę jak i w dół(dla rezystoram 10KΩ i tolerancji 10%, wartością dopuszczalna może być zarówno 9K jak i 11K Ω).
Typowe tolerancje rezystorów są 1 procent, 2 procent, 5 procent, 10 procent, 20 procent. Wartość może być nawet niższa niż 1 procent z rezystorów precyzyjnych.
Innym sposobem określania tolerancji rezystora jest parts per milion(ppm). Na przykład, oporność, ppm określa o ile omów rezystancja może różnić się na milion omów rezystancji. Jeśli weźmiemy rezystor 1M, który ma wartość 20000 ppm, co oznacza, że oporność może zmieniać się 20000 Ω powyżej lub poniżej tej wartości rezystora 1M. Oznacza to, że opór może być między 980.000 Ω i 1020000 Ω. Powyższy parametr stosuje się w połączeniu ze stowniami kelvina(ppm/K) czyli o ile zmieni się oporność na jeden stopień kelvina.
PPM jest używany zazwyczaj dla wartości toleracji mniejszych niż procent.
Dla większości zastosowań ogólnych, rezystor, z tolerancją 5 procent jest wystarczające.
Subskrybuj:
Posty (Atom)