Digitale Signalverarbeitung, Signal detektieren - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From German to

Threaded View
Re: Digitale Signalverarbeitung, Signal detektieren
Also hast Du noch andere Signalanteile als dein Nutzsignal, das nur  
bandbegrenzt wurde?

Re: Digitale Signalverarbeitung, Signal detektieren


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?




Re: Digitale Signalverarbeitung, Signal detektieren


Goertzel ?
http://www.embeddedFORTH.de/temp/goertzel.pdf
Gaertzel ist ein sehr schmales Filter das dementsprechend Einschwingzeit  




Quoted text here. Click to load it

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

Re: Digitale Signalverarbeitung, Signal detektieren
Am 12.10.2018 um 17:46 schrieb Rafael Deliano:

Quoted text here. Click to load it

schau ich mir mal an

Quoted text here. Click to load it


Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it


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.





Re: Digitale Signalverarbeitung, Signal detektieren
Quoted text here. Click to load it

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



Re: Digitale Signalverarbeitung, Signal detektieren
Am 13.10.2018 um 11:59 schrieb Rafael Deliano:
Quoted text here. Click to load it


Frequenzdifferenz von z.B. 200 Hertz vorsehen. Da ist es aber egal, ob  
ich schneller oder langsamer abtaste.

Der ADU-INT macht 22kHz. Wenn ich die Frequenz des Senders auf 10,9 kHz  






AVR noch passen. Es liegt aber an der Grenze.


Quoted text here. Click to load it


Es geht momentan um eine Zusatzfunktion die bisher von einer anderen  

in meinem Microcontroller, der eigentlich etwas anderes macht, aber  
dasselbe Eingangssignal verarbeitet nebenher mitzumachen.



Re: Digitale Signalverarbeitung, Signal detektieren
Am 13.10.2018 um 11:17 schrieb Stefan:
Quoted text here. Click to load it


Wenn Du diesen Vorgang mit der halben Umtastrate vornimmst, entspricht  

Grundwelle.

den 2ten Teil, also im Prinzip ein Vorzeichenwechsel der eingelesenen  
Werte mit "++--" und "+--+".

Resultaten die Wurzel der Quadratsumme (Betragsbildung) bilden.




Gruss Udo






Re: Digitale Signalverarbeitung, Signal detektieren
Am 14.10.2018 um 14:21 schrieb Newdo:
Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it


mein Prozessor nicht.


Quoted text here. Click to load it


Ist klar, aber das ist auch zu aufwendig.


getrennte Quarzoszillatoren habe, so dass ich von einem wenn auch  
geringen Frequenzfehler ausgehen muss.

Ich hab das inzwischen auf dem PC in Delphi simuliert und bin glaube ich  
auf den richtigen Weg.

Ich taste das System nicht exakt mit der doppelten Frequenz ab sondern  
mit einer Abweichung von ca. 100 Hz.

Dadurch erhalte ich eine entsprechende Schwebung / Mischprodukt, das ich  


Der Gleichanteil verschwindet bereits bei der Abtastung durch die  
Multiplikation mit +-1.

Das ganze sollte in weniger als 10uS zu rechnen sein, kann also direkt  
in der INT-Routine des ADUs passieren.


Auslesen sofort wieder gestartet.












Re: Digitale Signalverarbeitung, Signal detektieren
Am 14.10.2018 um 16:16 schrieb Stefan:
Quoted text here. Click to load it


Quoted text here. Click to load it

noch mal nachgedacht:





Grad bzw. PI/2 abtasten.

Das geht aber nicht, weil zu langsam.



Dann jeweils jeden zweiten Abtastwert, also die geradzahligen als Sin()  
und jeden ungeradzahligen als cos() verarbeiten.





Das Problem mit dem geometrischen Mittel bleibt aber. Quadrieren und  
Wurzelziehen geht nicht. Aber es muss nicht genau sein, deshalb reicht  
einfaches Addieren der beiden Signalzweige.




Re: Digitale Signalverarbeitung, Signal detektieren
Quoted text here. Click to load it

http://www.embeddedFORTH.de/temp/QuadPair.pdf

MfG JRD

Re: Digitale Signalverarbeitung, Signal detektieren
Am 14.10.2018 um 18:44 schrieb Rafael Deliano:
Quoted text here. Click to load it

Wird zeitlich auch etwas knapp wenn ich das jeweils zwischen zwei  
Abtastungen rechnen will.


ob ich ein gewisses Minimalsignal habe.

Ich mache da eigentlich zwei Auswertungen, d.h. wenn das Signal stark  
genug ist, interessiert mich die erste Flanke des Pulspaketes.

Wenn das Signal zu schwach ist, um diese Flanke sicher zu erkennen will  
ich nur wissen, ob es noch da ist, oder ob der Sender ausgefallen ist.



Re: Digitale Signalverarbeitung, Signal detektieren

Quoted text here. Click to load it

Vielleicht gibt Dir ja diese APP-Note des MSP430 ein paar Anregungen:  

https://www.avrfreaks.net/sites/default/files/slaae16.pdf

TI benutzt Wave Digital Filter um DTMF zu dekodieren. Einfach nur mit 16bit  
Schiebe- und Add-Befehlen und ohne Hardwaremultiplizierer und das mit ner  

filtern, Auslastung der CPU ist da dann nur 55% (der Autor hat sich aber  


sollte es ihmo machbar sein bei 20kHz da nur 1 Filter laufen zu lassen.

Stream, so wie es reinkommt kommt s hinten wieder raus.

M.
--  

Re: Digitale Signalverarbeitung, Signal detektieren
Am 16.10.2018 um 11:15 schrieb Matthias Weingart:
Quoted text here. Click to load it

Quoted text here. Click to load it





Quoted text here. Click to load it

Also genau so, wie ich es brauche.


auch ganz gut aus. Ich schau mir das aber trotzdem mal an.



Stefan


Re: Digitale Signalverarbeitung, Signal detektieren
On 2018-10-16 10:08, Stefan wrote:
Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

WDF haben eine ziemlich steile Lernkurve, musste ich teilweise mal  
durch. Sie sind dafuer sehr sparsam bei den uC Resourcen. Wenn Du  
bereits anderweitig eine Loesung mit ausreichender Filterguete simuliert  
hast, bei der der uC nicht bis Oberkante Unterlippe voll wird, dann  
wuerde ich das so lassen.

--  
Gruesse, Joerg

http://www.analogconsultants.com/

Re: Digitale Signalverarbeitung, Signal detektieren
Am 16.10.2018 um 20:07 schrieb Joerg:
Quoted text here. Click to load it


Quoted text here. Click to load it

hier ist ein Ausschnitt aus meiner Delphi-Simulation. In C wird das noch  
etwas kompakter.

- Abtasten mit der passenden Taktfrequenz
- wenn Flag gesetzt, dann Pegel invertieren
- Flag invertieren
- Tiefpassfiltern

was fehlt ist hier nur noch die Gleichrichtung

Die multiplikation mit 31 mache ich indem ich das Datenwort um 5 Bit  
nach links schiebe, dann den Ursprungswert subtrahiere
Division durch 32 dann durch 5 Bit nach Rechts schieben.

------------------- snip -----------------------------------------

  while t < 10E-3 do    // t ist der Zeitpunkt, hier 1ms betrachten
   begin


    // Signal alle 48 Mikrosekunden abtasten

    if vz then y := - y;     // jeden zweiten Abtastwert invertieren

    if vz=true then vz := false    // Vorzeichenflag invertieren
               else vz := true;

    series4.AddXY(t*1E6,y,'',clred); // Mischprodukt plotten

    y0 := (31*y0 + y)/32; // Tiefpassfilter
    series5.AddXY(t*1E6,y0*16,'',clyellow); // plotten

   end;

Re: Digitale Signalverarbeitung, Signal detektieren
On 2018-10-17 03:00, Stefan wrote:
Quoted text here. Click to load it

Quoted text here. Click to load it

Und dran denken, dass wenn die Abtastfrequenz genau dem Sendesignal  
entspricht und das auch noch die gleiche Phase hat, null herauskommen  
kann. Falls das ein Problem ist, koennte man mal kurz "dithern" oder wie  
immer das in Germanien heisst.


Quoted text here. Click to load it


Quoted text here. Click to load it


Da muss ich leider passen. Ich gebe zwar oft Software-Strukturen vor,  
aber die Implementation machen dann immer die Programmier-Profis.

--  
Gruesse, Joerg

http://www.analogconsultants.com/

Re: Digitale Signalverarbeitung, Signal detektieren
Am 17.10.2018 um 16:47 schrieb Joerg:
Quoted text here. Click to load it

Quoted text here. Click to load it

Schon klar. Ich gehe von eine Frequenzdifferenz von 100-200 Hz aus, also  
ca. 1-2% bezogen auf die ca. 10kHz. Die Genauigkeit der Quarze am Sender  


Quoted text here. Click to load it







Re: Digitale Signalverarbeitung, Signal detektieren
On 2018-10-17 12:00, Stefan wrote:
Quoted text here. Click to load it

Quoted text here. Click to load it

Quoted text here. Click to load it

Koennte man verfeinern, indem Du statt Tiefpass einen Bandpass einsetzt.  
Das gibt besseres SNR.


Quoted text here. Click to load it


Quoted text here. Click to load it

Es sieht alles sehr schlank im Code aus, aber es haengt davon ab,  
wieviel der uC dafuer schuften muss. So aehnlich wie der Posten "Neue  
Aussentreppe bauen" nur eine kurze Zeile auf der "Honey do" Liste meiner  
Frau ist, aber einen Haufen Arbeit darstellt.

--  
Gruesse, Joerg

http://www.analogconsultants.com/

Re: Digitale Signalverarbeitung, Signal detektieren
Am 17.10.2018 um 22:08 schrieb Joerg:
Quoted text here. Click to load it


Quoted text here. Click to load it





Quoted text here. Click to load it

ist klar,



y0 := (31*y0 + y)/32; // Tiefpassfilter / gleitender Mittelwert

das sieht dann in C so aus:

y0 = ((y0 >>= 5) - y0) + y;    
// 5 Bit rechts schieben ist multiplikation mit 32
// dann einmal subtrahieren und ich habe y0 * 31

y0 <<= 5; // 5 Bits recht schieben ist Division durch 32



um 5 Bits nach links schiebe habe ich 15 Bit. Die abwechselnde  
Invertierung bringt mir den doppelten Ausschlag und damit bin ich dann  
bei 16 Bit. Aus meinem 10 Bit unsigned wird dann 16 Bit signed.

Ich teste solche Sachen gerne in Pascal/Delphi weil man da bessere  

Chart darstellen kann.

werden muss.


Re: Digitale Signalverarbeitung, Signal detektieren

On 18 Oct 18 at group /de/sci/electronics in article pq95hm$7np$ snipped-for-privacy@news.albasani.net

Quoted text here. Click to load it





Jau, das stimmt auch nicht "<<=" ist IMHO shift_LEFT

Gleitender Mittelwert hab ich immer so gemacht:

        y = (yADC + y) /2


Das ist leicht zu erreichen, zumal bei uC die ADC 8..10 bit haben/hatten,  
selten mehr.





Wolfgang

--  
Ich bin in Paraguay lebender Trollallergiker :) reply Adresse gesetzt!

ihr Niveau herunter und schlagen mich dort mit ihrer Erfahrung! :p
We've slightly trimmed the long signature. Click to see the full one.

Site Timeline