Forum: Mikrocontroller und Digitale Elektronik 2 sinusförmige Frequenzen (FSK) mit AVr auswerten


von Marco Schramm (Gast)


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.

von SIGINT (Gast)


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

von Xenu (Gast)


Lesenswert?

Spricht irgendwas dagegen einfach zwei NE567 (Tondekoder-IC) zu nehmen?
Einen für 1200, und einen für 1800 Hz.

Bei Reichelt kostet einer 34 Cent.

http://www.semiconductors.philips.com/acrobat_download/datasheets/NE567_SE567_2.pdf

von Xenu (Gast)


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.

von Dieter Werner (Gast)


Lesenswert?

Alte Modembausteine aus den Anfängen der PCs sollten so etwas
beherrschen.
Im Moment fallen mir da FX409 und TCM3105 ein, bin aber nicht sicher ob
die nun genau für diesen Anwendungsfall passend sind.


Dieter

von Axel R. (Gast)


Lesenswert?

Hatte ich nicht schon auf dei APRS Lösung von N4TXI "WhereAVR"
hingewiesen? funktioniert bei guten Signalverhältnissen ganz
ordentlich.
Gut kommentierter Quelltext auf einem ATMEGA8.

von SIGINT (Gast)


Lesenswert?

@xenu: Auweia... das hatte ich ja auch ganz übersehen...

von Marco Schramm (Gast)


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.

von K2R (Gast)


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....

von Marco Schramm (Gast)


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.

von Rahul (Gast)


Lesenswert?

Den Bandpass könnte man doch noch davorschalten, oder?
Durch den Hochpass bräuchte man ja auch nur noch einen Tiefpass...

von Marco Schramm (Gast)


Lesenswert?

Hallo K2R,

wo ist denn beim "WhereAVR"-Modem eine Filterung? Also auf dem
Schaltplan gibt es definitiv keine. Vgl.
http://www.knology.net/~gdion/whereavr.html  Es kann höchstens sein,
daß ein Software-Filter existiert. Aber in der Beschreibung deutet
nichts darauf hin.

von Nando (Gast)


Lesenswert?

Ich hab vor kurzer Zeit mit zwei WhereAVR-Modems und zwei Funkgeräten
eine AFSK Verbindung hergestellt, siehe Forumbeitrag:

http://www.mikrocontroller.net/forum/read-2-217483.html

Dort gibts auch einen kleinen Erfahrungsbericht von mir. Hatte aber bis
heute noch keine Zeit, dahingehend weiter zu forschen.

von Marco Schramm (Gast)


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?

von AxelR. (Gast)


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.

von K2R (Gast)


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....

von Thomas S. (Gast)


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

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Stichwort Goertzel-Algorithmus - ein Tondecoder mit IIR-Filter, der
sogar in einen 8Bit-Controller noch zeitlich passen könnte. Es wird
gern als Doppelton ("Touch tone")-Decoder vorgeführt. Es gibt eine
Applikation von Analog.com mit Fixkomma-DSP.

von AxelR. (Gast)


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)

von Rahul (Gast)


Lesenswert?

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

von Jörg (Gast)


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.

von Frank H. (gowi)


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?

von Kasperle (Gast)


Lesenswert?

Meinst du das wird nach über 3 Jahren noch gelesen?

von 3aau (Gast)


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.

von Henry (Gast)


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

von Route_66 (Gast)


Lesenswert?

Die alten Heimcomputer haben das mit lächerlicher Taktfrequenz von 3,5 
MHz schon vor fast 30 Jahren an der Tonbandschnittstelle in Software 
geschafft.

von Kurt (Gast)


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

von Detlev T. (detlevt)


Lesenswert?

Zum Thema FFSK-Dekodierung habe ich hier im Forum leider nichts 
gefunden. Dieser Thread kam dem noch am nächsten. Inzwischen habe ich 
jedoch eine Lösung entdeckt. Falls nach mir wieder jemand so etwas 
sucht, will ich das nicht für mich behalten: (Design-Note 27 auf 
avrfreaks)

http://www.avrfreaks.net/index.php?module=Freaks%20Tools&func=viewItem&item_id=317

von Daniel (Gast)


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!)

von m.n. (Gast)


Lesenswert?

Marco Schramm (Gast)
Datum: 14.06.2006 16:49

Autor: Daniel (Gast)
Datum: 21.08.2014 15:52

Da kann man mal sehen, wie die Zeit vergeht!

von c-hater (Gast)


Lesenswert?

Christoph Kessler (db1uq) schrieb:

> Stichwort Goertzel-Algorithmus

Für die konkrete Anwendung leider vollkommen unbrauchbar.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.