2 sinusförmige Frequenzen (FSK) mit AVr auswerten

Gast #343336
Lesenswert?

Hallo,

nachdem das Senden von FSK (1200Baud: 1200Hz/1800Hz) gelöst ist, stellt
sich nun die Frage nach der Auswertung:

Die FSK-Folge (bestehend aus ca. 100Bit) kommt im Regelfall mit
leichtem Hintergrundrausche aus dem NF-Ausgang (300 Hz bis 4 kHz)eines
Funkempfängers. Nun muß die Auswerteeinheit a) Hintergrundrauschen
filtern (Bandpaß) b) aus dem Sinus zuverlässig ein Rechteck machen OHNE
vom Hintergrundrauschen irritiert zu werden c) die Zeitabstände der
Nulldurchgänge vom AVR gemessen werden.

c) kann ich lösen.
a) bedingt lösbar

Bei b) Brauche ich noch Anregungen, am besten ein Hinweis auf eine
www.seite, wo solch eine verwirklicht wurde.

Vermutlich wird man hier wieder einen OP einsetzen. In diesem Fall ist
jedoch die Beschaltung interessant, um die Empfindlichkeit zu
optimieren.
Gast #343337
Lesenswert?

Hallo Marco,
  wahrscheinlich wäre eine Softwarefilterung per IIR- oder FIR-Filter
die zuverlässigste Möglichkeit. Zwei Filter hoher Güte müssten für
deine Frequenzen reichen... die Hintergrundgeräusche und Rauschen
sollten dann schon relativ zuverlässig rausgefiltert werden. Die
Methode mit den Nulldurchgängen kann bei schlechtem Eingangssignal
schon Probleme machen... wenn es auch meistens gehen sollte. Infos zum
IIR oder FIR- Filter solltest du im Netz finden.
Eine andere Methode, die deinen Controller entlasten würde wäre es zwei
NE567 zu nehmen... das sind Ton-decoder. Kosten nicht viel und sollen
relativ gut sein.
Ich hab leider beides noch nicht probiert aber schon vor einiger Zeit
mal überlegt was ähnliches zu machen. Aber der Bedarf war nicht so
groß,daß ich es in die Tat umgesetzt habe.(und die Zeit ist ja auch
kostbar)

Gruß,
  SIGINT
Gast #343339
Lesenswert?

Kannst mein letztes Posting vergessen.

Das was Du machen willst ist nicht FSK sondern FFSK (zumindest wenn
Deine Baudrate von 1200 stimmt). Das geht mit einem einfachen
Tondekoder natürlich nicht.
Gast #343343
Lesenswert?

Hallo,

1) es wurde schon richntig erkannt, daß die Methode NE567 nicht geht.
Es soll in der tat FFSK ausgewertet werden. (FFSK = Umschalten der
Frequenz im Nulldurchgang).

2) programmieren eines Software-Filter. Puuh, schwitz, ... Da habe ich
absolut keinen Schimmer von. Hört sich ja spannend an. Scheint ja in
Richtung DSP-Wissen zu gehen. Hört sich sehr schwierig an,oder?

3)Spezialbausteine, hier z.B. der FX409. Klar,  Die gibt es, Z.B. für
meinen fall absolut passend der FX469, jetzt CMX469 der Firma CML.
Beschaffung im Einzelstück derzeit nur über RS-Components (Stüclkpreis
19,00 Euro + MwST. Ich habe auch so einen hier. Mein Betsreben ist es
aber, die Funktion selbst mit Standardmitteln zu realisieren. das ist
es doch, was den ein oder anderen bastler reizt. Sonst lernt man ja
nichts.
_> Also, ich möchte keinen Spezialbaustein verwenden! Aber dennoch
danke für den Hinweis.

4) Hallo AxelR, werte diese Möglichkeit zur zeit noch aus. Danke für
den Hinweis.
Gast #343344
Lesenswert?

Schau mal da, wo Axel Dich hinschicken wollte.... N4TXI hat da was
tolles in Netz gestellt. Das ganze ist ein APRS-Tracker mit
Softdekoder; der ist hervorragend dokumentiert (allerdings in Englisch)
und auch die Filterung ist gut und auch auf andere Betriebsfälle
anzupassen....
Gast #343345
Lesenswert?

Habe mir jetzt die Schaltung vom Modem "WhereAVR" von N4TXI angesehen.
Die aus dem Funkgerät kommende NF schickt er über einen Kondensator
(=Gleichspannungsanteil weg). Dann wird die Schwingung auf einen
definierten Pegel (hier 2,5V) angehoben. Über den internen A/D-Wandler
des Atmega misst er die zeit wischen den Nulldurchgängen. So wie er
schreibt, funktioniert die Methode zuverlässig.

Genauso möchte ich es auch machen. Aber anscheinend möchte ich es zu
umständlich. Z.B. Vorgeschalteter Bandpaß, dann Komparator um sauberes
Rechtecksignal zu bekommen und dann erst in den Atmega. Kein digitales
Filter, kein weiterer Aufwand.
Fragt sich bei dem "WhereAVR"-Modem, wie gut die Funkverbindung sein
muß, damit es klappt -> Rauschen.
Gast #343349
Lesenswert?

Wenn ich den Thread richtig gelessen habe ist die Qualität (Klirrfaktor)
des Ausgangssignal mäßig.

Eingangsseitig scheint es so zu sein, daß eine möglichst rauschfreie
Verbindung existieren muß.

Hat jemand einen guten Link mit VERSTÄNDLICHER Einführung in die
digitale Filterung. Und das ganze Atmega geeignet?
Gast #343350
Lesenswert?

"Wenn ich den Thread richtig gelessen habe ist die Qualität
(Klirrfaktor)
des Ausgangssignal mäßig."
Hatte ich mit einer Handvoll 10K-Widerstände (hatte gerade eine Tüte
Messwiderstände zur Hand) als R2RNetzwerk ersetzt, sieht auf dem Oszi
gut aus.
Gast #343351
Lesenswert?

Aaaalso, zu den letzten beiden Fragen:

das AUSGANGSsignal ist tatsächlich nicht rein sinusförmig, sondern
stufenförmig, es sind also immer noch "Reste" der Interruptfrequenz
vorhanden, das sieht man auf dem Oszi sehr gut. In eine HiFi-Anlage
würde ich dieses Signal nicht unbedingt einspeisen :-). Diese
Frequenzen liegen allerdings recht hoch => 14.7456 MHz/8 = 1.8431 MHZ
Timerfrequenz mit 167 Klicks (~11kHz) und 213 Klicks (~ 8,6 kHz).
Diese Frequenzen liegen außerhalb des Übertragungsbereiches der
Sprechfunkfilter und werden dort zu Sinussignale umgeformt; schliesst
man das Oszi an den Empfängerausgang an, bekommt man einen echten
Sinus....

Zur "Filterung" im Empfangszweig: hier löst jeder 0-Durchgang einen
Interrupt am Analog-Komparator aus. Liegt der Zählerstand von Counter
1, der mit 542ns Zählerfrequenz läuft, innerhalb eines bestimmten
Fensters, wird ein Empfangsflag gesetzt und der  Zählerstand übernommen
(der dient hinterher zur Bitstromauswertung ent sprechend der
Frequenzen). Liegt der Zählerstand beim nächsten Durchgang innerhalb
des Fensters... siehe oben. Wenn der Zähler aber ausserhalb dieses
Fensters liegt, wird alles bis dahin empfangene verworfen. Eine 2.
Interruptroutine filtert dann aus diesem Bitstrom auch noch über die
Zeit die entsprechenden Bits heraus, sodaß zu schnelle oder zu langsame
Wechsel keine Auswirkung hat bzw einen Reset der kompletten
Empfangsroutine bewirkt
Es wird also darauf geschaut, daß sich alles innerhalb eine bestimmten
Frequenzbereiches abspielt, starkes Rauschen oder Brummen fällt auf
diese Art raus. Total "vergruschtelte" Signale kann er natürlich auch
nicht dekodieren, aber das schafft auch kein "echtes" TNC. Bei mir
dekodiert der AVR aber immer schön alle Signale, die mein TNC2S auch
dekodiert.



Hoffe, daß ich's anschaulich erklären konnte....
Gast #343352
Lesenswert?

Ich hab lange Zeit an FSK Demodulation mit aktiven + LC FIltern gebastet
(damals noch für RTTY). Das ganz würde ich auf die digitale Version
umbauen, d.h. 2 x IIR als Bandpass, danach jeden Kanal getrennt
bewerten (Betrag bestimmen), Plausibilität prüfen + Decodierung. Beim
Zählen von Nulldurchgängen wird dir jedes Rauschen und Fading etc. das
Decodieren unmöglich machen. Ich denke daß ein 1-2 BiQuads als Filter
schon sehr ordenlich arbeiten. Evtl. einen etwas "größeren"
Prozessort verwenden (z.B. ARM7 oder gleich nen DSP). Dann ist noch ein
bischen Luft für anderes.

Gruß Thomas
Gast #343354
Lesenswert?

Reicht die Zeitdauer des Einzeltons für den Goertzel-Algo aus?
Bei DTMF liegen die beiden Doppeltöne ja immer recht lange an, Bei
unserer Anwendung sind die einzelnen Töne eher nur mit wenigen
Schwingungen vetreten. (Wie viele eigentlich bei 1K2 Baudrate? - ich
und Mathe)
Gast #343356
Lesenswert?

Hallo,

wenn ich es richtig verstanden habe, geht es doch darum, die beiden
Tone unabhängig von der Wellenform (Klirrfaktor) zuverlässig zu
dekodieren, oder?

Zunächst eine Frage, ist nicht das Zweitonverfahren 1200/1800 Hz
Audio-Frequenz-Shift-Keying, also AFSK - vllt. vertue ich mich, aber
mir ist so!

Als Dekoder funktioniert sehr wohl ein NE567, sollte aber für beide
Frequenzen, also doppelt vorhanden sein. Nachteil: NE567 hat eine
"ordentliche" Temperaturdrift. Besser wären zwei XR2211, das
funktioniert sauber und zuverlässig. Einfach für jeden Ton eine PLL mit
dem XR basteln und ab auf den uPC.

Ich hoffe, dass ich etwas zur Verwirrung beitragen 8o)

Jörg

P.S:

Der TMC3105 und FX614 (fast gleiche Beschaltung) können diesen sog.
BEL202-Mode, also AFSK.
#1423330
Lesenswert?

Rahul schrieb:
> @Axel: IMHO ca. 10 (1200baud, 1200Hz 10Bit) bei 1800Hz ca. 15

Wenn das Signal 1200 Baud hat, werden dann nicht (da es ein binäres 
Signal ist) 1200 Bit/s gesendet? Dann dauert ein Bit 1/1200 = 833 µs. 
Bei einer Frequenz des Signals von 1200 Hz müsste dann ein Bit genau 
eine Periode lang sein. Wie kommst du auf 10?
Gast #1442253
Lesenswert?

moin moin,
hat den nun schon einer ein funktionstüchtigen afsk-rx per software hin 
bekommen?
wei schaut es den mit der auslastung der cpu aus, kann die noch eine 
korrelation über 32 werte hinbekommen? die einfache demodulation über 
die pulsweite ist immer kritisch.
Gast #1583516
Lesenswert?

Schon toll, was da so für Antworten kommen. Dieser 1200Baud FFSK-Quatsch 
ist immer nur eine Periode 1200Hz oder 1,5 Perioden bei 1800Hz. Schön, 
dass das mal einer nach drei Jahren festgestellt hat. Zweitens taugt ein 
Görtzel-Algo dafür überhaupt nicht, drittens scheint ein Diskriminator 
mit der Mittenfrequenz von 1500Hz das Mittel der Wahl zu sein, andere 
Lösungen siehe Wikipedia unter FSK.

Henry
Gast #1703679
Lesenswert?

Henry schrieb:
> Schon toll, was da so für Antworten kommen. Dieser 1200Baud FFSK-Quatsch
>
> ist immer nur eine Periode 1200Hz oder 1,5 Perioden bei 1800Hz. Schön,
>
> dass das mal einer nach drei Jahren festgestellt hat. Zweitens taugt ein
>
> Görtzel-Algo dafür überhaupt nicht, drittens scheint ein Diskriminator
>
> mit der Mittenfrequenz von 1500Hz das Mittel der Wahl zu sein, andere
>
> Lösungen siehe Wikipedia unter FSK.

Hier häng ich mich doch glatt rein.
Hallo Leute,

TCM3105, ja den kenn ich noch.
FX469 wird auch nicht mehr gebacken.
Was soll man tun wenn man an diesen alten Dingern hängt.
Ich such für HF-Modulation/Demodulation von Transivern solche Bausteine.

Übertragen sollen 1200 Baud oder kleiner, werden.
Wichtig ist dass es ins Rauschen reingeht.
Die Überwachung obs fehlerfrei gegangen ist mach ich durch 
Prüfsummenauswertung.

Soll man sich noch an diese -alte- Technik halten, oder gibts da 
inzwischen was besseres das ebenso leicht benutzbar ist?


Gruss Kurt
Gast #3772825
Lesenswert?

Geinal!

Damit Google es höher bewertet und besser findet, wiederhole ich nochmal 
den Link:
http://8515.avrfreaks.net/modules/FreaksFiles/files/406/DN_027.pdf

Außerdem noch ein paar Stichworte:
FSK-Softmodem, FFSK-Softmodem, UART, Modem, ATMega, HART-Modem, 
HART-Softmodem, V.23

Und abschließend die Frage:
Gibt es auch eine evtl. stark Rechenzeit sparende Lösung für den 
ATxmega?

Der kann immerhin sogar bei bestimmten AD-Werten einen Interrupt 
auslösen, z.B. immer im Nulldurchgang (d.h. man muss gar nicht nonstop 
gesampelte AD-Werte bearbeiten)

Mit seiner internen Gain Stage wird auch der Schaltungsaufwand geringer. 
Er kann im Differential Mode sogar Signale bis -0,5V unter GND erfassen 
(begrenzt durch die ca. 0,7V der internen Schutzdioden) und der interne 
DA-Wandler ermöglich höherwertige Audio-Ausgabe.
z.B. ATXmega32A4U (das U ist essentiell, die Revisionen ohne USB sind 
leider extrem verbuggt, insbesondere auch der AD-Wandlerteil, die 
U-Version ist aber OK und bieten auch noch USB 2.0 --- das ganze für ca. 
3 Euro als Einzelstück, 2 Euro ab ca. 400 Stück und sicher nicht mehr 
als 1,50 in großen Mengen, je nach Distri)

Das sind ca. 50 Cent mehr als z.B. der ATMega328PA bei 
http://de.rs-online.com/ kostet, aber die spart man locker allein schon 
dadurch dass kein Quarz mehr nötig ist: der XMEGA hat endlich einen 
genauen internen Oszillator. (besser gesagt: der schnelle ungenaue kann 
von einem langsamen PLL-syncronisiert werden)

Plus die vielen weiteren internen Bausteine wäre er nach üblicher 
Berechnungsmethode (hedonische Methode=Lustzugewinnmethode) für unsere 
Inflationsrate trotz etwas höheren Preises sogar als billiger anzusehen! 
(Kein Witz!)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren