PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FS20 Empfänger an Ethernut 1.3



Bill367Gates
21.12.2007, 17:59
Hi Leute,
ich bastele seit einiger Zeit mit dem Ethernut 1.3 Board (www.ethernut.de) herum. Das Board basiert auf einem ATmega128.
Ich möchte nun einen FS20 Empfänger mit dem Board verbinden um auf FS20 Funkbefehle reagieren zu können.
Ich habe mich schon ein bißchen in das FS20 Funk-Protokoll eingelesen.

Ich weiß jetzt nur nicht, wie ich überhaupt den Empfänger mit dem Board verbinden soll.

Hier mal ein Bild von dem Empfänger:
http://mitglied.lycos.de/bill367gates/FS20E.jpg

Der Empfänger wird mit 3V betrieben, das Board läuft mit 5V. Ich meine die Versorgungsspannung von 3V kann ich noch irgendwo herkriegen aber wie krieg ich das Datensignal in den Atmel?

Gruß,
Thomas

SIGINT
22.12.2007, 10:39
Hi Thomas,
ich hatte auch mal vor den FS20-Empfänger mit einem AVR zu verbinden, hab das aber aus Zeit- und Interessenmangel dann aber nie angefangen. Statt ethernut wollte ich etherrape einsetzen:
http://www.lochraster.org/etherrape/
Die Anbindung an den AVR sollte ganz einfach sein, da der Mega128 einen Komparator(Spannungsvergleicher) besitzt. Der Komparator kann sogar einen Interrupt auslösen und ist somit wahrscheinlich prima geeignet für die Aufgabe. Du musst beim Komparator nur die interne Bandgap-Referenz (ca. 1,25V) einschalten und kannst dann Spannungen unterscheiden die größer oder kleiner 1,25V sind. (3V >1,5V ... 0V<1,5V)
Ich hab vor knapp 2 Jahren das gleiche mal mit einem PIC16F84 getestet und konnte schon erste Erfolge feiern... aber im Endeffekt lief es doch nicht zuverlässig. Ein Problem mit dem Empfänger ist, dass bei fehlendem Funksignal irgendwelche Störungen aufgefangen werden und die Datenleitung ein undefinierbares Signal ausgibt. Mit einem analogen Oszi konnte ich nur ein wirres durcheinander erkennen. Sende ich allerdings ein FS20-Protokoll, so kann man das gut auf dem Oszi erkennen.

Gruß,
SIGINT

P.S.: Hier mal ein Video: http://youtube.com/watch?v=_5cKufQUh3o

kc-captain
22.12.2007, 12:00
Hi Thomas,

Und hi @All im Forum. Bin hier schon eine ganze Weile "aktiver Leser".

Ich habe das hier einen FS20 Empfänger mit einem Atmega8 gebaut.
Der Atmega läuft auch mit 5V. Data geht bei mir direkt auf Pin 14(PB0/ICP). Ein 10K Widerstand geht von Data noch auf Masse. Das war's.

Die Spannung für den Empfänger bekomme ich durch drei in Reihe geschaltete Dioden (je ca. 0,6-0,7V Spannungsabfall) pro Diode. Das ganze läuft hier schon seit ca. 7 Monaten ohne Probleme.

Gruß
kc-capain

Besserwessi
22.12.2007, 16:21
3 V Ausgangssignal sehr knapp, reichen aber gerade aus um als H erkannt zu werden. Laut Datenblatt liegt die Grenze bei 0.6*Vcc = 3 V. Wenn man sicher gehen will, kann man ein 74HCT14 Gatter dazwischenschalten, oder den Komperator Eingang (mit 1.2 V interner Ref.) benutzen. Auch eine einfache Transistorstufe kann den Pegel auf 5 V bringen.

Eine Möglichkeit etwas mehr Reserve zu bekommen wäre die Masse des Empfänger mit einer Diode auf ca. 0.7 V zu legen, dann sind die 3 V Signalhub etwas mehr in der Mitte der 5 V vom Prozessor. Man könnte auch etwas weniger als 5 V für den Prozessor nehmen, wenn sonst nichts dagegen spricht.

SIGINT
22.12.2007, 16:44
Der Komparator vom AVR bietet sich aber an, da dieser auch einen Interrupt auslösen kann. Ich werd mich mal wieder an das Projekt ransetzen, wenn ich wieder etwas Zeit habe.... im Moment bin ich mit Weihnachten beschäftigt ;)

Gruß,
SIGINT

Bill367Gates
21.02.2008, 21:21
Ok Danke schonmal, ich habe momentan wieder ein wenig Zeit mich damit zu beschäftigen...
Wenn ich mir die Protokollbeschreibung angucken, dann steht da:

0: 400µs High, 400µs Low 600-1000µs Periodendauer
1: 600µs High, 600µs Low 1000-1450µs Periodendauer

Wie programmiere ich das ein, damit der µC die logische 0 bzw 1 richtig erkennt? Ich programmiere in C

Besserwessi
22.02.2008, 15:46
Den Datenempfang sollte man im Interrupt machen. Der Comperator löst am einfachsten ein ICP event aus. In der ISR wird dann die Zeit seit dem letzen ICP mit 500 us verglichen und etweder eine 0 oder 1 als daten erkannt und in einem Puffer gesammelt. Wenn ein Byte voll ist kann man dann dem hauptprogramm signalisieren das Daten da sind. Ganz logisch ist die Beschreibung des Protokolls oben nicht, denn bei 400us high+800us low komme ich immer auf 800us. Man müßte noch klären welche Zeit wirklich für die daten wichtig ist (Periode, high oer low). Je nach dem welche Zeit wichtig ist, muß dann noch die ICP Flanke umgestell werden.

RobNet
30.11.2009, 15:45
Hallo,

das ganze ist schon ein wein weilchen her, habt Ihr erfolge damit erzielen können? Ich hätte interesse an einem BASCOM ATMEGA32" FS20 Empfang. Senden klappt bei mir schon.

Gruß
Thomas

thoweiss
18.01.2010, 12:58
Mach es dir nicht so schwer...

nimm Einfach einen CUL mit der FHEM-Firmware :http://busware.de/tiki-index.php?page=CUL

Werde ich mir jetzt auch zulegen um meinem misterhouse FS20 beizubringen.


Gruß,
Thorsten