Forum: Mikrocontroller und Digitale Elektronik FSK modulieren / demodulieren mit uC


von Cédi (Gast)


Lesenswert?

Hallo zusammen,

Ich habe eine Frage und zwar wollte ich wissen, ob man mit jedem uC FSK 
modulieren bzw. demodulieren kann und wie man das in etwa realisiert.

An einem konkreten Beispiel: Funktioniert es mit einem STM32F100x ( 
http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN775/PF216840?s_searchtype=partnumber 
)

Ich bin leider mehr in der Hardware zuhause als in der Software ;)

Danke für euere Antworten & ein schönes Wochenende

Cédi

von Alf (Gast)


Lesenswert?

Es geht auch mit einem Attiny. Die Frage ist, mit welcher 
Geschwindigkeit.

von Cédi (Gast)


Lesenswert?

Wie ist denn das genau? Muss der uC spezielle Eingänge haben oder wird 
das alles per Programmierung gelöst?

von Marius S. (lupin) Benutzerseite


Lesenswert?

Ich würde mal vermuten man könnte die PWM nutzen, also das Signal über 
einen Timer erzeugen. Dann erhält man ein Rechteck-Signal welches man in 
der Frequenz umtasten kann.

Das Rechtecksignal jagt man dann noch durch einen Bandpass (evtl. 
switched capacitor filter) um die Harmonischen raus zu filtern und 
erhält dann die Sinus-Grundschwingung.

Man könnte auch einen Tiefpass verwenden, aber mit dem Bandpass entfernt 
man gleichzeitig den Gleichspannungsanteil.

: Bearbeitet durch User
von Humpfdidumpf (Gast)


Lesenswert?

Hi,

für eine nicht so schnelle FSK kannst man Timer nehmen, die hat jeder 
µC:

Demodulieren:
Die Frequenz einfach messen - d.h. den Abstand zwischen zwei steigenden 
Flanken abzählen - kann fast jeder Timer. Dann einen Interrupt erzeugen 
lassen und in der ISR die Frequenz auswerten:
10kHz, 1kHz Frequenzshift:
9,5kHz < f < 10,5kHz = LOW
10,5kHz < f < 11,5kHz = HIGH

Geht aber nur für niedrige Freuenzen, so im kHz Bereich. Was schnell, 
hängt vom Prozessor  und von der Interrupt Latency ab. 100kHz mit einem 
40MHz µC sind erreichbar (aber schon sehr sportilich!).

Modulieren:
Modulieren geht auch mit Timern, als PWM mit 50:50 konfigurieren, die 
Periodendauer im Code manipulieren. Für eine exakte Datenrate das in der 
ISR eines zweiten Timers machen.

Signale aufbereiten:
Das ganze braucht einen sauberen Rechteck. Dafür z.B. einen 
Schmitt-Trigger oder eine passende Komparatorschaltung nehmen.

Eventuell könnte man Timer kaskadieren? Oder was mit DMA Kanälen 
basteln?
Kommt auf den µC an. Es gibt vermutlich auch welche mit FSK drin.

von Georg G. (df2au)


Lesenswert?

Bei niedrigeren Frequenzen (wenige kHz) geht sehr gut das Senden über 
Timer, Tabelle und einen kleinen D/A (3 Bit sind meist ausreichend). Der 
Filteraufwand wird drastisch geringer.
Zum Empfangen kann man per A/D samplen und dann mit Goertzel 
analysieren. Das gibt auch bei etwas gestörten Signalen noch eine gute 
Erkennung.
Bei besserem Eingangssignal reichen der Komparator eines ATMega oder 
ATTiny und eine Frequenzmessung aus.

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.