ALTE DOCUMENTE
|
||||||||||
TECHNICKÁ UNIVERZITA V LIBERCI |
||
Číslicové měřící systémy |
||
Frekvenční charakteristika |
||
Vypracoval:
|
Skup.: Středa, 14:20 |
dne: 17.5.2005 |
Pouzité přístroje:
Přípravek pro měření PC C38 ZP5/4339 |
Zadání:
Cílem je změřit frekvenční charakteristiku připojeného obvodu.
Vstupní napětí je připojeno na výstup čítače 0 (GPCRT0_OUT).
Výstupní napětí obvodu je připojeno na vstup 15 (AI15).
Doporučené ovládací prvky uzivatelského rozhraní:
Numeric pro zadání minimální a maximální hodnoty měřené frekvence.
Krok frekvence volte tak, aby charakteristika byla "hladká" (min 50 bodů průběhu).
Graf pro zobrazení charakteristiky (funkce Plot XY).
Tlačítka start měření
Schéma:
Postup zpracování úlohy:
Podle zadání jsme navrhli uzivatelské rozhranní, navíc jsme přidali numeric "Krok" pro nastavení kroku frekvence.
Nejprve se v reakci na zmáčknutí tlačítka "Start" ulozí vstupní hodnoty rozsahu měření frekvenční charakteristiky a krok měření. Pokud je minimální frek. Větsí nez maximální, vypíse se chybová hláska.
Poté se spustí časovač.
Tělo časovače obsahuje hlavní část programu. Nejprve se nadefinuje generátor pulsů na pozadovanou frekvenci a poté se spustí. Naměří se 10 000 vzorků vzorkovací frekvencí 100 kHz (naměříme 10 000 hodnot napětí na pozadované frekvenci). Ty se zprůměrňují do jedné hodnoty, která se zapíse do pole Avg_Data[i]. A postoupí se na dalsí frekvenci o jeden "Krok" . Kdyz se dosáhne pozadované maximální frekvence, časovač se zastaví a vykreslí se pomocí PlotXY data obsazená v poli Avg_Data[i] na rozsahu měřených frekvencí Frequency[i].
Na tlačítko Konec se celý program ukončí.
Přípravek obsahoval krystal o rezonanční frekvenci 1 kHz, čemuz se přizpůsobil zadaný rozsah měření frekvenční odezvy.
Zdrojový kód:
#include <ansi_c.h>
#include <easyio.h>
#include <cvirte.h>
#include <userint.h>
#include "frekvencni.h"
static int pnl,i;
double Avg_Data[2001], Data[10001], Frequency[2001],Min_frekvence,Max_frekvence, Krok;
unsigned long Task_ID;
double Actual_frekvency, Actual_Duty_cycle,Actual_Scan_Rate;
int main (int argc, char *argv[])
int CVICALLBACK Start (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
SetCtrlAttribute (pnl, PANEL_TIMER, ATTR_ENABLED, 1);
break;
}
return 0;
int CVICALLBACK Konec (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
return 0;
int CVICALLBACK Casovac (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
Avg_Data[i] = sum/10000;
i++;
Frequency[i] = Frequency[i-1]+Krok;
if (Frequency[i] >= Max_frekvence) SetCtrlAttribute (pnl, PANEL_TIMER, ATTR_ENABLED, 0);
PlotXY (pnl, PANEL_GRAPH, Frequency, Avg_Data, i, VAL_DOUBLE, VAL_DOUBLE, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);
break;
}
return 0;
Naměřený průběh:
Závěr:
V úloze jsme měli vytvořit program pro měření frekvenční charakteristiky připraveného obvodu.
Postupovali jsme podle zadání a naměřená frekvenční charakteristika odpovídá skutečnosti. Teoreticky by měla být odezva vsude nulová (v praxi na úrovni sumu) a na rezonanční frekvenci nekonečně velká ( v praxi několika násobek okolního sumu ). Frekvenční odezva na rezonanční frekvenci (pro nás na 1 kHz) je přiblizně 10-násobkem okolních frekvencí (U = 196E-6 V). V okolích frekvencích bylo napětí přiblizně 20E-6 V.
|