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.
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
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
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.
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
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.
@xenu: Auweia... das hatte ich ja auch ganz übersehen...
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.
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....
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.
Den Bandpass könnte man doch noch davorschalten, oder? Durch den Hochpass bräuchte man ja auch nur noch einen Tiefpass...
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.
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.
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?
"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.
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....
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
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.
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)
@Axel: IMHO ca. 10 (1200baud, 1200Hz 10Bit) bei 1800Hz ca. 15
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.
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?
Meinst du das wird nach über 3 Jahren noch gelesen?
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.
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
Die alten Heimcomputer haben das mit lächerlicher Taktfrequenz von 3,5 MHz schon vor fast 30 Jahren an der Tonbandschnittstelle in Software geschafft.
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
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
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!)
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.