Digitale Signalverarbeitung, Signal detektieren

Hallo,

etwas auf dem Schlauch.

Ich habe ein gepulstes 10kHz Signal das ich detektieren will.

Mein Microcontroller ist nicht besonders schnell (Atmega8 mit 20 MHz Clock) und ich kann die Abtastrate des ADU auch nicht beliebig einstellen.

Wie kann ich das am einfachsten realisieren?

Ich stelle mir eine Art FIR Filter vor, also ich taste das Signal mit einer passenden Frequenz ab und speichere die Abtastwerte in einen Ringbuffer. Da habe ich dann die Abtastwerte von t, t-1, t-2 usw.

detektieren kann?

also per Software.

Stefan

Reply to
Stefan
Loading thread data ...

10kHz und Null?

Abtastung implementieren.

"digitalisiertes" Signal verarbeiten?

Reply to
Edzard Egberts

Es werden jeweils 50 Rechteckimpulse mit einer Periodendauer von 100us

Leitung geben und die Periodendauer bestimmen.

schwankt. Eventuell hab ich in manchen Situationen Signalpegel < 1 V.

einen analogen Bandpass willst Du nicht, ist aber

Ich muss irgendwo rechnerisch gleichrichten um den Pegel zu bestimmen.

Ich habe ja ein Analogsignal, irgendwas wie U = U0 * sin(omega t) + Us

anderer Schmutz.

Die Abtastung ist im Prinzip eine Multiplikation im Zeitbereich mit einer Rechteckimpulsfolge.

Ich habe dann eine Liste mit Abtastwerten U(t) bzw. U(z)

Meine Erinnerungen an das Studium sind bei dem Thema etwas unscharf ;-) deshalb die Frage hier.

Bereich um die 10 kHz, aber ich vermute, dass da mein Microcontroller an

Mir geht es jetzt nicht um besondere Genauigkeit oder Sicherheit. Es geht nur darum festzustellen, ob ein 10kHz Signal mit ausreichendem Pegel vorhanden ist oder nicht.

Reply to
Stefan

vorliegt.

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de
Reply to
Peter Heitzer

Am 12.10.2018 um 12:26 schrieb Stefan:

Ich habe keine Ahnung von fast nichts. Aber mir schweben gerade die Stichworte 555 und PLL im Kopf.

HTH

Gregor

--
X-ggl-fuck-off: yes
Reply to
Gregor Szaktilla

Wenn das Signal stets einen positiv Pegel hat, ginge vielleicht folgendes:

Du kannst auch bei jedem Flankenwechsel (Pegel>Schwellwert, Pegel

Reply to
Peter Heitzer

Am 12.10.2018 um 09:50 schrieb Stefan:

diesen log. Wert in ein Schieberegister pumpen. Der aktuelle Wert des Schieberegisters zeigt Dir zB. nach Ablesen aus einer LookupTable an, ob das 10kHz-Signal innerhalb des betrachteten Zeitraums eingesetzt hat, ob es abgeschaltet wurde oder ob es sich innerhalb der aktiven Sendephase befindet.

bedeutet, die Anzahl der Einsen im Schieberegister ist ausreichend klein. Die Auswertung erfolgt nach jeder Abtastung.

Viel Spass.

Udo

Reply to
Newdo

Sind die Impulse positiv (also eine Art verschliffenes Rechteck), oder ein echter Sinus mit negativen Anteilen.

Also eine Liste von digitalen Werten, z.B. im Bereich von 0..1024?

geteilt durch die Periodendauer, also der Effektivwert.

Wenn Du die Pakete sauber unterscheiden und die Abtastung eines Pakets

Kleinsten Wert suchen und als Offset nehmen, den von allen anderen

aufaddieren und durch Tpaket teilen.

Reply to
Edzard Egberts

;-)

Ja, kann man.

Das Sendersignal wiederholt sich alle 100 Millisekunden.

50ms Pause.

d.h., wenn das Signal stark genug ist, kann ich die Pause erkennen, das passiert auch, aber nur wenn das Signal stark genug ist.

dass ich den Anfang des Paketes nicht mehr sauber erkennen kann trotzdem noch sagt, ob ein Signal vorhanden ist.

Wie schon geschrieben: Mit einem Mittelwellenradio geht das.

genau das kann ich eben nicht

das erfordert einen wesentlich schnelleren Prozessor.

Es geht nun darum, genau das per Software nachzubilden.

Mit einem digitalen Filter muss das gehen und wenn ich mich da reinlese, bekomme ich das vermutlich auch hin.

Ich hab einfach gehofft, dass es hier jemanden gibt, der mir sagt: "Klar, ganz einfach, taste einfach alle xx ms ab, nimm die letzten 5 Abtastwerte multipliziere die werte mit x1,x2,x3,x4,x5, addiere das ganze und fertig".

;-)

Reply to
Stefan

Die Periodendauer ist so genau bekannt, wie es die Quarze auf dem Sender

Den gleitenden Mittelwert bilden wir schon um die Nulllinie zu bestimmen.

Allerdings kann ich die Abtastung nicht mit dem Sendsignal

nachbilden kann...

Das ist gar nicht notwendig, das geht auch mit den Abtastwerten aus dem ADU.

Reply to
Stefan

Am 12.10.2018 um 13:19 schrieb Newdo:

Nee, das ist es alles noch nicht.

Ich denk einfach mal laut.

Manchmal platzt der Knoten, wenn man versucht das Problem jemand anderem

ein digitales Notch-Filter.

Dazu muss man nur zwei Abtastwerte im Abstand von 180 Grad addieren.

hat das eine Periodendauer von 100us.

Ich habe also Abtastwerte U(z); U(z-1); U(z-2) ; U(z-3) .... U(z-n)

Wenn ich jetzt eine zweites Array mit V(z) = 0.5 * ( U(z) + U(z-1) )

habe, also der gesuchte 10 kHz Anteil...

der Nullinie aufzusummieren und dann die Differnz der Summen zu berechnen.

Reply to
Stefan

Signal einfach durch Multiplikation wieder findest, kannst Du das IMHO

Vorteil - "Physik", genauer gesagt "Resonanz", denn auch mit passiven Bauteilen ist das im gewissen Sinne eine aktive Filterung.

Nein, muss nicht gehen, weil bei der A/D-Wandlung Information verloren geht.

BTW, hast Du Deine Samples eigentlich schon mal geplottet? Wenn man als

nach auch keine Chance mehr. Auf der anderen Seite sieht man bei so etwas manchmal Details, die bei der "theoretischen Betrachtung" nicht auffallen...

Reply to
Edzard Egberts

Also hast Du noch andere Signalanteile als dein Nutzsignal, das nur bandbegrenzt wurde?

Reply to
Newdo

Also Multiplikation des Signals mit sin und cos der Grundwelle, Abtastrate 50usec, Amplitudenberechnung wie gewohnt. Die Oberwellen

Ein auf die Abtastrate abgestimmtes Tiefpassfilter vor dem ADC ist ja wohl vorhanden?

Reply to
Newdo

Goertzel ?

formatting link
Gaertzel ist ein sehr schmales Filter das dementsprechend Einschwingzeit

Andere Alternative: Korrelator ( "matched filter" ) gegen ein 10kHz

Noch vereinfachter: Eingangsisgnal auf 1 Bit quantisieren.

Die Frage ist wieviel Rauschen zu erwarten ist. No pain, no gain.

MfG JRD

Reply to
Rafael Deliano

Wenn der Sender "quarzgenau" ist, der Controller seinen Takt aus 32kHz per PLL erzeugt, kann man eventuell diese PLL und damit den Prozessortakt

Sekunden.

MfG JRD

Reply to
Rafael Deliano

Am 12.10.2018 um 17:56 schrieb Rafael Deliano:

Signal ausgeschaltet wird.

habe ich das gesuchte Ereignis erkannt.

Reply to
Stefan

Doch, das Signal ist auf dem Oszi sehr gut zu erkenne. Es geht nun darum, das mit einem Microcontroller auszuwerten und das muss so

deutlich erkennen, ob das gesuchte Signal da ist.

Manchmal muss man aber auch mit theoretischen Betrachtungen an eine Aufgabenstellung herangehen um auf die richtigen Ideen zu kommen.

Reply to
Stefan

Am 12.10.2018 um 17:46 schrieb Rafael Deliano:

schau ich mir mal an

Meine Idee ist momentan folgende:

Ich taste das Signal mit 20kHz ab und multipliziere die Abtastwerte dabei abwechselnd mit +1 und -1.

Ich multipliziere mein Eingangssignal also mit einem Rechtecksignal

Damit habe ich dann einen Mischer der mein 10 kHz Nutzsignal nach 0

Dabei ist wohl gewisse Abweichtung von z.B. 100 Hz, vieleicht auch mehr, sinnvoll. Die Abtastung muss dann auch nicht mit dem Nutzsignal synchronisiert sein.

Das Ergebnis wird dann digital tiefpassgefiltert so dass die beiden

Gleichanteil wird eliminiert, indem der Mittelwert gebildet wird, der dann vom Signal subtrahiert wird.

Reply to
Stefan

Man kommt mit 20kHz nur hin, wenn man sich auf die 10kHz aufsynchroniesiert hat.

8 Bit Controller waren ehedem nur attraktiv wenn man frontend analog machte und nur ein Teil der Signalverarbeitung im Controller lief.

Signal in Hardware auf 1 Bit Logikpegel wandeln. Dann per SPI mit mindestens 40kHz als Bytes einlesen und mit 8 Bit XOR Befehlen parallel auswerten.

kann bei geringen Anforderungen der NE567 / LM567 akzeptabel

MfG JRD

Reply to
Rafael Deliano

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.