Jak na signalizaci Re: HDO dekoder
Miroslav Mraz
mraz@seznam.cz
Středa Březen 4 18:26:16 CET 2009
www www píše v St 04. 03. 2009 v 16:15 +0100:
> Zkousel jsem pouzit Goertzeluv algoritmus na to co mi leze ze zasuvky, ne ze bych neco stavel, ale pripich jsem DPO k zasuvce (trafu) a odchytil cca minutu, kdyz slo nejake to HDO vysilani a na PC jsme data nasledne prohnal Goertzelovym algoritmem a popravde nic moc. Nelze s toho delat zadne zavery, ale minimalne v tomto jednom vzorku bylo rozliseni na mezi pouzitelnosti.
>
Kolik bitů má sample toho scopu? Uvědomte si, že užitečný signál je
někde -33 až -40 dB pod úrovní těch 50 Hz. 10 bit/sample bych viděl jako
minimum.
> Docela me to vzalo a podnikl bych ve veci dalsi zkoumani, ale minimalne pro teoretickou cast by to chtelo moci si vysilani nasimulovat v PC. Netusite jak v Multisimu nejakou tu HDO frekvenci superponovat na 50Hz frekvenci sitoveho napeti?
>
Multisim neznám, ale lze to jednoduše simulovat přímo kódem v C:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "goertzel.h"
void sweep (float par) {
int i, power;
float arg1, arg2, s1, s2;
short x [GOERTZEL_N];
aritfmt coeff;
// generování vstupního signálu 10-bit převod => max +/- 512
for (i=0; i<GOERTZEL_N; i++) {
arg1 = 2.0 * 3.1415926 * par / 1000.0;
arg1 *= (float) i;
s1 = 5.0 * sin (arg1);
arg2 = 2.0 * 3.1415926 * 50.0 / 1000.0;
arg2 *= (float) i;
s2 = 500.0 * sin (arg2);
x [i] = (short) (s1 + s2);
}
coeff = calc_coeff (0.2166);
power = goertzel (coeff, x, GOERTZEL_N);
printf ("%d\t%d\n", (int) par, power);
}
int main (void) {
int i;
for (i=205; i<225; i+=1) {
sweep ((float)i);
}
return 0;
}
Jednoduché, že ?
Mrazík
Další informace o konferenci Hw-list