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