Signalverarbeitung mit dem Mikrocontroller?
Schönen Sonntag euch!
Ich hätte eine Frage. Hänge leider schon seit einer Woche dran und suche dringend nach einer Antwort. Ich bin dabei drahtlos per Funk(433mhz) Signale von einem Mikrocontroller (Sender) zu einem anderen Mikrocontroller (Empfänger) zu versenden. Das Senden klappt wunderbar und ich habe alles per Oszi überprüft, das Empfangen jedoch ist eine Katastrophe.
Das Problem, ich kann keine Libaries von Arduino und co verwenden, muss also alles selber in C schreiben. Wenn etwas gesendet wird ist das Signal High, wenn nicht dann Low(Ist also ein Rechtecksignal).
Hier mein Pseudocode:
(Der Sender sendet dauerhaft 4100uS lange High Signale(senden) mit kurzen low unterbrechungen(nicht senden)
In einer Endlosschleife starte ich zuerst einen Timer der in mikroSekunden zählt
jetzt kommt eine leere While Schleife die solange nichts macht wie das Signal High ist(es wird etwas empfangen)
wenn die Whileschleife vorbei ist kommt eine if, die wenn der timer größer 4000 und kleiner 4200 ist( das eigentliche Signal ist ja 4100 uS) . Wenn diese if zutrifft soll ein Licht angehen.
Leider funktioniert es nicht und das Licht geht ab und zu mal an machmal aber auch nicht. wäre cool könnte jemand helfen und mir sagen was ich falsch mache oder einen anderen Vorschlag hat.
Danke im Vorraus!
3 Antworten
Stabile Funkverbindungen sind so eine Sache... Schau dir doch mal das empfangene Signal auf dem Oszi an, ist es wirklich so stabil wie du denkst? Liegt es in dem erwarteten Bereich? Ansonsten müsstest du Methoden zur Resilienz einbauen... z.B. dass während des Prüfens ob das Signal high ist, kurze Unterbrechungen nicht gezählt werden... oder eben den erwarteten Bereich vergrößern.
Was heißt "am Empfänger"? Du hast schon quasi am Eingangs-Mikrocontroller-Pin gemessen? Du meinst die Empfänger-Routine? Wie sieht dein Code aus, welchen Mikrocontroller/Umgebung benutzt du?
Du könntest die beiden Mikrocontroller auch erst mal ohne Funk-Strecke verbinden und schauen, dass deine Empfangsroutine überhaupt wie erwartet funktioniert.
Hallo,
DIe auswertung und Störsignale sind das Problem..
WIe kann man sowas filtern? indem du eine CRC Prüfung machst vo ndem was du gesendet hattest, und die SUmme einmal abgleichen lässt vom sender BEVOR dieser in einer IF abfrage landet..
also kurz gesagt: ein ping-Pong:
Sender zum Empfänger: ich schicke dir blaue Kugel
Empfänger zurück zum sender: Ist es eine Blaue Kugel?
Sender zum Empfänger: JA, ist es
Emfänger kann dann weiter arbeiten.
falls dazwischen etwas "nicht stimmt" oder timeout der antwort..dann das ganze nochmal..
Auch wenn ich absolut kein Spezialist in Sachen Microcontroller bin, darf ich Dir an dieser Stelle unbedingt die Verwendung der Datenübertragung im 868 MHz ISM-Band empfehlen. Entsprechende Funkmodule sind überall zu erhalten.
Warum?
Das 433 MHz ISM-Band ist Teil des 70cm-Amateurfunkbandes und wird daher nicht nur massenhaft durch Funkamateure, sondern auch durch anndere LowPowerDevices belegt. Jede popelige Wetterstation in Deiner Umgebung sendet auf 433 MHz - jeder Schlüssel einer KFZ-Zentralverriegelung ebenso, jede popelige Funksteckdose auch. Das bedeutet, Du hast es mit einer riesigen Vielfalt an Störsignalen zu tun, welche Dir alles andere als eine sichere Funkübertragung gewährleisten.
Erstmal vielen Dank für das Kommentar! „Leider“ist das Signal auf dem Oszi wirklich verdammt Stabil und auch ungefähr genauso lang wie gewollt…es muss also irgendwie irgendwo am Empfänger liegen